Skip to content

Commit

Permalink
[BUGFIX] Improved visibility in the dark mode (Issue #14)
Browse files Browse the repository at this point in the history
  • Loading branch information
hasherezade committed Dec 3, 2020
1 parent 45da5c8 commit 1e4e986
Showing 1 changed file with 25 additions and 14 deletions.
39 changes: 25 additions & 14 deletions ifl.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
FUNCATTR_START
from idautils import Functions, XrefsFrom, XrefsTo # type: ignore


from idaapi import PluginForm # type: ignore
from PyQt5 import QtGui, QtCore, QtWidgets # type: ignore
from PyQt5.QtCore import QObject, pyqtSignal # type: ignore
Expand All @@ -36,6 +35,18 @@

VERSION_INFO = f"IFL v{__VERSION__} - check for updates: https://github.com/hasherezade/ida_ifl"

transp = 150
light_theme = [ QtGui.QColor(173, 216, 230, transp), QtGui.QColor(255, 165, 0, transp), QtGui.QColor(240, 230, 140, transp) ]
dark_theme = [ QtGui.QColor(0, 0, 255, transp), QtGui.QColor(255, 69, 0, transp), QtGui.QColor(0, 0, 0, transp) ]

COLOR_HILIGHT_FUNC = 0xFFDDBB # BBGGRR
COLOR_HILIGHT_REFTO = 0xBBFFBB
COLOR_HILIGHT_REFFROM = 0xDDBBFF

IS_ALTERNATE_ROW = False

g_Theme = light_theme

# --------------------------------------------------------------------------
# custom functions:
# --------------------------------------------------------------------------
Expand Down Expand Up @@ -323,11 +334,11 @@ def _displayToolTip(self, row: int, col: int) -> str:
def _displayBackground(self, row: int, col: int) -> Any:
func_info = self.function_info_list[row]
if col == self.COL_START or col == self.COL_END:
return QtGui.QColor("lightblue")
return QtGui.QColor(g_Theme[0])
if col == self.COL_NAME:
if func_info.is_import:
return QtGui.QColor("orange")
return QtGui.QColor("khaki")
return QtGui.QColor(g_Theme[1])
return QtGui.QColor(g_Theme[2])
return None

def _listRefs(self, refs_list: List[Tuple[int, int]]) -> str:
Expand Down Expand Up @@ -488,7 +499,7 @@ def _displayBackground(self, row: int, col: int) -> Any:
"""

if self.isFollowable(col):
return QtGui.QColor("lightblue")
return QtGui.QColor(g_Theme[0])
return None

# public:
Expand Down Expand Up @@ -820,9 +831,6 @@ class FunctionsListForm_t(PluginForm):
"""

# private
_COLOR_HILIGHT_FUNC = 0xFFDDBB # BBGGRR
_COLOR_HILIGHT_REFTO = 0xBBFFBB
_COLOR_HILIGHT_REFFROM = 0xDDBBFF
_LIVE_FILTER = True

def _listFunctionsAddr(self) -> List[int]:
Expand Down Expand Up @@ -1028,6 +1036,11 @@ def liveSearchCheckBox(self) -> None:
if self.is_livefilter:
self.filterByColumn(self.filter_combo.currentIndex(), self.filter_edit.text())

def alternateRowColors(self, enable):
self.refsfrom_view.setAlternatingRowColors(enable)
self.addr_view.setAlternatingRowColors(enable)
self.refs_view.setAlternatingRowColors(enable)

def OnCreate(self, form) -> None:
"""Called when the plugin form is created
"""
Expand All @@ -1048,33 +1061,30 @@ def OnCreate(self, form) -> None:
self.addr_sorted_model = QtCore.QSortFilterProxyModel()
self.addr_sorted_model.setDynamicSortFilter(True)
self.addr_sorted_model.setSourceModel(self.table_model)
self.addr_view = FunctionsView_t(g_DataManager, self._COLOR_HILIGHT_FUNC, self.table_model)
self.addr_view = FunctionsView_t(g_DataManager, COLOR_HILIGHT_FUNC, self.table_model)
self.addr_view.setModel(self.addr_sorted_model)
self.addr_view.setSortingEnabled(True)
self.addr_view.setWordWrap(False)
self.addr_view.setAlternatingRowColors(True)
self.addr_view.horizontalHeader().setStretchLastSection(False)
self.addr_view.verticalHeader().show()

self.adjustColumnsToContents()
#
self.refsto_model = RefsTableModel_t(self.funcMapper.funcList, True)
self.refs_view = FunctionsView_t(self.subDataManager, self._COLOR_HILIGHT_REFTO, self.refsto_model)
self.refs_view = FunctionsView_t(self.subDataManager, COLOR_HILIGHT_REFTO, self.refsto_model)
self._setup_sorted_model(self.refs_view, self.refsto_model)
self.refs_view.setColumnHidden(RefsTableModel_t.COL_TOADDR, True)
self.refs_view.setWordWrap(False)
self.refs_view.setAlternatingRowColors(True)

font = self.refs_view.font()
font.setPointSize(8)
self.refs_view.setFont(font)

self.refsfrom_model = RefsTableModel_t(self.funcMapper.funcList, False)
self.refsfrom_view = FunctionsView_t(self.subDataManager, self._COLOR_HILIGHT_REFFROM, self.refsfrom_model)
self.refsfrom_view = FunctionsView_t(self.subDataManager, COLOR_HILIGHT_REFFROM, self.refsfrom_model)
self._setup_sorted_model(self.refsfrom_view, self.refsfrom_model)
self.refsfrom_view.setColumnHidden(RefsTableModel_t.COL_TOADDR, True)
self.refsfrom_view.setWordWrap(False)
self.refsfrom_view.setAlternatingRowColors(True)

# add a box to enable/disable live filtering
self.livefilter_box = QtWidgets.QCheckBox("Live filtering")
Expand Down Expand Up @@ -1158,6 +1168,7 @@ def OnCreate(self, form) -> None:
layout.setSpacing(0)
layout.setContentsMargins(0, 0, 0, 0)
self.parent.setLayout(layout)
self.alternateRowColors(IS_ALTERNATE_ROW)

idaapi.set_dock_pos(PLUGIN_NAME, "IDA HExview-1", idaapi.DP_RIGHT)

Expand Down

0 comments on commit 1e4e986

Please sign in to comment.