summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2019-03-18 11:32:12 -0700
committerRusty Wagner <rusty@vector35.com>2019-03-20 13:00:17 -0400
commit22be7356f339bcb11383ac0ec2a6e11a605f9533 (patch)
tree10e7b7cdbed38d16320868884d4667bfc8b472d5 /python
parent36650362e2723036605ae336a40b4064ffd1b0fb (diff)
Fix some bugs in triage plugin
Diffstat (limited to 'python')
-rw-r--r--python/examples/triage/byte.py34
-rw-r--r--python/examples/triage/entropy.py4
-rw-r--r--python/examples/triage/exports.py4
-rw-r--r--python/examples/triage/headers.py4
-rw-r--r--python/examples/triage/imports.py4
-rw-r--r--python/examples/triage/sections.py6
6 files changed, 32 insertions, 24 deletions
diff --git a/python/examples/triage/byte.py b/python/examples/triage/byte.py
index 23302033..d4095237 100644
--- a/python/examples/triage/byte.py
+++ b/python/examples/triage/byte.py
@@ -1,5 +1,6 @@
# coding: utf8
+import sys
from PySide2.QtWidgets import QAbstractScrollArea, QAbstractSlider
from PySide2.QtGui import QPainter, QPalette, QFont
from PySide2.QtCore import Qt, QTimer, QRect
@@ -102,14 +103,14 @@ class ByteView(QAbstractScrollArea, View):
self.actionHandler().bindAction("Page Down", UIAction(lambda ctxt: self.pageDown(False)))
self.actionHandler().bindAction("Extend Selection Page Up", UIAction(lambda ctxt: self.pageUp(True)))
self.actionHandler().bindAction("Extend Selection Page Down", UIAction(lambda ctxt: self.pageDown(True)))
- self.actionHandler().bindAction("Move Cursor to Start Of Line", UIAction(lambda ctxt: self.moveToStartOfLine(False)))
- self.actionHandler().bindAction("Move Cursor to End Of Line", UIAction(lambda ctxt: self.moveToEndOfLine(False)))
- self.actionHandler().bindAction("Move Cursor to Start Of View", UIAction(lambda ctxt: self.moveToStartOfView(False)))
- self.actionHandler().bindAction("Move Cursor to End Of View", UIAction(lambda ctxt: self.moveToEndOfView(False)))
- self.actionHandler().bindAction("Extend Selection to Start Of Line", UIAction(lambda ctxt: self.moveToStartOfLine(True)))
- self.actionHandler().bindAction("Extend Selection to End Of Line", UIAction(lambda ctxt: self.moveToEndOfLine(True)))
- self.actionHandler().bindAction("Extend Selection to Start Of View", UIAction(lambda ctxt: self.moveToStartOfView(True)))
- self.actionHandler().bindAction("Extend Selection to End Of View", UIAction(lambda ctxt: self.moveToEndOfView(True)))
+ self.actionHandler().bindAction("Move Cursor to Start of Line", UIAction(lambda ctxt: self.moveToStartOfLine(False)))
+ self.actionHandler().bindAction("Move Cursor to End of Line", UIAction(lambda ctxt: self.moveToEndOfLine(False)))
+ self.actionHandler().bindAction("Move Cursor to Start of View", UIAction(lambda ctxt: self.moveToStartOfView(False)))
+ self.actionHandler().bindAction("Move Cursor to End of View", UIAction(lambda ctxt: self.moveToEndOfView(False)))
+ self.actionHandler().bindAction("Extend Selection to Start of Line", UIAction(lambda ctxt: self.moveToStartOfLine(True)))
+ self.actionHandler().bindAction("Extend Selection to End of Line", UIAction(lambda ctxt: self.moveToEndOfLine(True)))
+ self.actionHandler().bindAction("Extend Selection to Start of View", UIAction(lambda ctxt: self.moveToStartOfView(True)))
+ self.actionHandler().bindAction("Extend Selection to End of View", UIAction(lambda ctxt: self.moveToEndOfView(True)))
def getData(self):
return self.data
@@ -202,9 +203,12 @@ class ByteView(QAbstractScrollArea, View):
def createRenderContext(self):
render = RenderContext(self)
userFont = binaryninjaui.getMonospaceFont(self)
- # Some fonts aren't fixed width across all characters, use a known good one
- font = QFont("Menlo", userFont.pointSize())
- font.setKerning(False)
+ if sys.platform == "darwin":
+ # Some fonts aren't fixed width across all characters, use a known good one
+ font = QFont("Menlo", userFont.pointSize())
+ font.setKerning(False)
+ else:
+ font = userFont
render.setFont(font)
return render
@@ -212,6 +216,8 @@ class ByteView(QAbstractScrollArea, View):
self.addrWidth = max(len("%x" % self.data.end), 8)
render = self.createRenderContext()
cols = ((width - 4) // render.getFontWidth()) - (self.addrWidth + 2)
+ if cols < 1:
+ cols = 1
if cols != self.cols:
self.cols = cols
if self.topLine < len(self.lines):
@@ -642,6 +648,7 @@ class ByteView(QAbstractScrollArea, View):
self.cursorAddr = self.lines[i - self.visibleRows].address
elif self.cursorAddr >= (self.lines[i - self.visibleRows].address + self.lines[i - self.visibleRows].length):
self.cursorAddr = self.lines[i - self.visibleRows].address + self.lines[i - self.visibleRows].length - 1
+ break
self.adjustAddressAfterBackwardMovement()
if self.topLine > self.visibleRows:
self.topLine -= self.visibleRows
@@ -668,8 +675,9 @@ class ByteView(QAbstractScrollArea, View):
self.cursorAddr = self.lines[i + self.visibleRows].address + lineOfs
if self.cursorAddr < self.lines[i + self.visibleRows].address:
self.cursorAddr = self.lines[i + self.visibleRows].address
- elif self.cursorAddr >= (self.lines[i + self.visibleRows].address + self.lines[i - self.visibleRows].length):
- self.cursorAddr = self.lines[i + self.visibleRows].address + self.lines[i - self.visibleRows].length - 1
+ elif self.cursorAddr >= (self.lines[i + self.visibleRows].address + self.lines[i + self.visibleRows].length):
+ self.cursorAddr = self.lines[i + self.visibleRows].address + self.lines[i + self.visibleRows].length - 1
+ break
self.adjustAddressAfterForwardMovement()
if (self.topLine + self.visibleRows) < len(self.lines):
self.topLine += self.visibleRows
diff --git a/python/examples/triage/entropy.py b/python/examples/triage/entropy.py
index 37ce295a..94afd650 100644
--- a/python/examples/triage/entropy.py
+++ b/python/examples/triage/entropy.py
@@ -4,7 +4,7 @@ from PySide2.QtWidgets import QWidget
from PySide2.QtGui import QImage, QColor, QPainter
from PySide2.QtCore import Qt, QSize, QTimer
import binaryninjaui
-from binaryninjaui import ViewFrame, ThemeColor
+from binaryninjaui import ViewFrame, ThemeColor, UIContext
class EntropyThread(threading.Thread):
@@ -51,7 +51,7 @@ class EntropyWidget(QWidget):
self.timer.setSingleShot(False)
self.timer.start()
- self.setMinimumHeight(32)
+ self.setMinimumHeight(UIContext.getScaledWindowSize(32, 32).height())
def paintEvent(self, event):
p = QPainter(self)
diff --git a/python/examples/triage/exports.py b/python/examples/triage/exports.py
index 27dbae76..14b23969 100644
--- a/python/examples/triage/exports.py
+++ b/python/examples/triage/exports.py
@@ -2,7 +2,7 @@ from PySide2.QtWidgets import QTreeView, QVBoxLayout, QWidget
from PySide2.QtCore import Qt, QAbstractItemModel, QModelIndex, QSize
from binaryninja.enums import SymbolType, SymbolBinding
import binaryninjaui
-from binaryninjaui import ViewFrame, FilterTarget, FilteredView
+from binaryninjaui import ViewFrame, FilterTarget, FilteredView, UIContext
class GenericExportsModel(QAbstractItemModel):
@@ -178,4 +178,4 @@ class ExportsWidget(QWidget):
self.filter = FilteredView(self, self.imports, self.imports)
layout.addWidget(self.filter, 1)
self.setLayout(layout)
- self.setMinimumSize(QSize(100, 196))
+ self.setMinimumSize(UIContext.getScaledWindowSize(100, 196))
diff --git a/python/examples/triage/headers.py b/python/examples/triage/headers.py
index 47869134..33b9b3c2 100644
--- a/python/examples/triage/headers.py
+++ b/python/examples/triage/headers.py
@@ -1,7 +1,7 @@
import time
from binaryninja.binaryview import StructuredDataView
import binaryninjaui
-from binaryninjaui import ThemeColor, ViewFrame
+from binaryninjaui import ThemeColor, ViewFrame, UIContext
from PySide2.QtWidgets import QWidget, QLabel, QGridLayout
from PySide2.QtGui import QPalette
@@ -217,6 +217,6 @@ class HeaderWidget(QWidget):
row = 0
col += 1
for col in range(1, header.columns):
- layout.setColumnMinimumWidth(col * 3 - 1, 20)
+ layout.setColumnMinimumWidth(col * 3 - 1, UIContext.getScaledWindowSize(20, 20).width())
layout.setColumnStretch(header.columns * 3 - 1, 1)
self.setLayout(layout)
diff --git a/python/examples/triage/imports.py b/python/examples/triage/imports.py
index a7eb64bd..24de5327 100644
--- a/python/examples/triage/imports.py
+++ b/python/examples/triage/imports.py
@@ -2,7 +2,7 @@ from PySide2.QtWidgets import QTreeView, QVBoxLayout, QWidget
from PySide2.QtCore import Qt, QAbstractItemModel, QModelIndex, QSize
from binaryninja.enums import SymbolType
import binaryninjaui
-from binaryninjaui import ViewFrame, FilterTarget, FilteredView
+from binaryninjaui import ViewFrame, FilterTarget, FilteredView, UIContext
class GenericImportsModel(QAbstractItemModel):
@@ -195,4 +195,4 @@ class ImportsWidget(QWidget):
self.filter = FilteredView(self, self.imports, self.imports)
layout.addWidget(self.filter, 1)
self.setLayout(layout)
- self.setMinimumSize(QSize(100, 196))
+ self.setMinimumSize(UIContext.getScaledWindowSize(100, 196))
diff --git a/python/examples/triage/sections.py b/python/examples/triage/sections.py
index 4a8d0f65..d0e3a3bf 100644
--- a/python/examples/triage/sections.py
+++ b/python/examples/triage/sections.py
@@ -3,7 +3,7 @@
from PySide2.QtWidgets import QWidget, QLabel, QGridLayout, QHBoxLayout
from binaryninja.enums import SectionSemantics
import binaryninjaui
-from binaryninjaui import ThemeColor, ViewFrame
+from binaryninjaui import ThemeColor, ViewFrame, UIContext
from . import headers
@@ -14,7 +14,7 @@ class SegmentsWidget(QWidget):
layout = QGridLayout()
layout.setContentsMargins(0, 0, 0, 0)
layout.setVerticalSpacing(1)
- layout.setHorizontalSpacing(16)
+ layout.setHorizontalSpacing(UIContext.getScaledWindowSize(16, 16).width())
self.segments = []
for segment in data.segments:
@@ -69,7 +69,7 @@ class SectionsWidget(QWidget):
layout = QGridLayout()
layout.setContentsMargins(0, 0, 0, 0)
layout.setVerticalSpacing(1)
- layout.setHorizontalSpacing(16)
+ layout.setHorizontalSpacing(UIContext.getScaledWindowSize(16, 16).width())
maxNameLen = 0
for section in data.sections.values():