Beispiel #1
0
    def __init__(self, db, parent=None):
        QScrollArea.__init__(self)
        self.db = db
        self.setStyleSheet('''
            QScrollArea {
                background-color: #2e2e2e;
                color: #cccccc;
                min-width: 250px;
                max-width: 250px
            };
        ''')
        self.verticalScrollBar().setStyleSheet('''
            QScrollBar:vertical {
                background: #2e2e2e;
            };
        ''')

        self.editDialog = EditDialog()
        self.editDialog.buttonEditsSaved.connect(self.handleEditChanges)

        self.showButtons()
        self.buttons = []

        self.buttonPressed.connect(self.showButtons)
        return
Beispiel #2
0
 def __init__(self, *args, **kwargs):
     QScrollArea.__init__(self, *args, **kwargs)
     self.setStyleSheet("""
         QScrollArea {
             position: absolute;
             border: 0;
         }
         QScrollBar:vertical {
             width: 8px;
         }
         QScrollBar:horizontal {
             height: 8px;
         }
         QScrollBar:vertical,
         QScrollBar:horizontal {
             border: none;
             background: none;
             border-radius: 0;
         }
         QScrollBar::handle:horizontal,
         QScrollBar::handle:vertical {
             background: #ff6600;
             border-radius: 4px;
         }
         """)
Beispiel #3
0
 def __init__ (self, parentQWidget = None):
     QScrollArea.__init__(self)
     self.mainView = MainView(self)
     self.setWidget(self.mainView)
     self.horizontalScrollBar().valueChanged.connect(self.mainView.setPositionHor)
     self.verticalScrollBar().valueChanged.connect(self.mainView.setPositionVer)
     self.resizeEvent = self.onResize
Beispiel #4
0
    def __init__(self, app):
        QScrollArea.__init__(self)
        self.app = app

        self.image = QLabel()
        self.image.setScaledContents(True)
        self.image.setMouseTracking(True)
        self.image.mouseMoveEvent = self.mouseMoveEvent_over_image
        self.image.mousePressEvent = self.mousePressEvent_over_image
        self.image.mouseReleaseEvent = self.mouseReleaseEvent_over_image

        self.zoom_factor = 1
        """The current zoom factor of the image."""

        self.mouse_action = 0
        """The current action on mouse move.
        Can be *ROI*, *WINDOW* or *PAN*."""

        self.last_position = None
        """The last position, from which mouse events were processed."""

        self.setMouseTracking(True)
        self.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self.setWidget(self.image)

        # Hide scrollbars
        self.horizontalScrollBar().setStyleSheet("QScrollBar { height: 0 }")
        self.verticalScrollBar().setStyleSheet("QScrollBar { width: 0 }")
Beispiel #5
0
 def __init__(self, parentQWidget=None):
     QScrollArea.__init__(self)
     self.mainView = MainView(self)
     self.setWidget(self.mainView)
     self.horizontalScrollBar().valueChanged.connect(
         self.mainView.setPositionHor)
     self.verticalScrollBar().valueChanged.connect(
         self.mainView.setPositionVer)
     self.resizeEvent = self.onResize
    def __init__(self, *args, **kwargs):
        QScrollArea.__init__(self, *args, **kwargs)

        self.setWidgetResizable(True)
        content = QWidget(self)
        self.setWidget(content)
        lay = QVBoxLayout(content)
        self.label = QLabel(content)
        self.label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self.label.setWordWrap(True)
        lay.addWidget(self.label)
Beispiel #7
0
    def __init__(self, bar_frame_stacker: BarFrameStacker):
        """
        Makes a BarFrameStackerScrollArea
        :param bar_frame_stacker: is a BarFrameStacker
        """
        QScrollArea.__init__(self)
        self.__bar_frame_stacker = bar_frame_stacker
        self.setWidget(self.__bar_frame_stacker)
        self.setWidgetResizable(False)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        # 18 is an estimate for the height of the scroll bar
        self.setMinimumHeight(bar_frame_stacker.minimumHeight() + 18)
        self.setMaximumHeight(bar_frame_stacker.minimumHeight() + 18)
Beispiel #8
0
 def __init__(self, alignment_info_list: List[AlignmentInfo]):
     """
     Constructor
     :param alignment_info_list: A list of AlignmentInfos to display
     """
     QScrollArea.__init__(self)
     self.__stacker = CompleteComparisonFrameStacker(alignment_info_list)
     self.__stacker.setSizePolicy(QSizePolicy.Expanding,
                                  QSizePolicy.Expanding)
     box_layout = QVBoxLayout()
     box_layout.addWidget(self.__stacker)
     self.horizontalScrollBar().setEnabled(False)
     self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
     self.setLayout(box_layout)
     self.setWidget(self.__stacker)
     self.setWidgetResizable(True)
     self.resizeEvent = self.onResize
Beispiel #9
0
    def __init__(self, parent, binaryView):
        QScrollArea.__init__(self, parent)

        View.__init__(self)
        View.setBinaryDataNavigable(self, True)
        self.setupView(self)

        # BinaryViewType
        self.binaryView = binaryView

        self.rootSelectionStart = 0
        self.rootSelectionEnd = 1

        self.ioRoot = None
        self.ioCurrent = None

        # top half = treeWidget + structPath
        self.treeWidget = MyQTreeWidget()
        self.treeWidget.setColumnCount(4)
        self.treeWidget.setHeaderLabels(['label', 'value', 'start', 'end'])
        self.treeWidget.itemSelectionChanged.connect(self.onTreeSelect)

        self.structPath = QLineEdit("root")
        self.structPath.setReadOnly(True)

        topHalf = QWidget(self)
        layout = QVBoxLayout()
        layout.addWidget(self.treeWidget)
        layout.addWidget(self.structPath)
        topHalf.setLayout(layout)

        # bottom half = hexWidget
        self.hexWidget = HexEditor(binaryView,
                                   ViewFrame.viewFrameForWidget(self), 0)

        # splitter = top half, bottom half
        self.splitter = QSplitter(self)
        self.splitter.setOrientation(Qt.Vertical)
        self.splitter.addWidget(topHalf)
        self.splitter.addWidget(self.hexWidget)

        self.setWidgetResizable(True)
        self.setWidget(self.splitter)

        self.kaitaiParse()
Beispiel #10
0
    def __init__(self, app):
        QScrollArea.__init__(self)
        self.app = app

        self.wrapper = QFrame()
        self.wrapper.setLayout(QVBoxLayout())
        self.wrapper.layout().setContentsMargins(5, 0, 0, 5)
        self.wrapper.layout().addStretch()

        self.thumbs = []

        self.setSizePolicy(QSizePolicy.Policy.Fixed,
                           QSizePolicy.Policy.MinimumExpanding)

        # Hide horizontal scollbar
        self.horizontalScrollBar().setStyleSheet("QScrollBar { height: 0 }")

        self.setWidgetResizable(True)
        self.setWidget(self.wrapper)
Beispiel #11
0
    def __init__(self, parent, binaryView):
        QScrollArea.__init__(self, parent)

        View.__init__(self)
        View.setBinaryDataNavigable(self, True)
        self.setupView(self)

        # input and output, Y = ROT13(X)
        X = binaryView.read(0, len(binaryView))
        Y = codecs.encode(X.decode('utf-8'), 'rot_13').encode('utf-8')

        # store original binary view (X) and our translated binary view (Y)
        self.binaryViewX = binaryView
        self.binaryViewY = binaryview.BinaryView.new(Y)

        self.setWidgetResizable(True)
        self.hexWidget = HexEditor(self.binaryViewY,
                                   ViewFrame.viewFrameForWidget(self), 0)
        self.setWidget(self.hexWidget)

        # capture writes to translated binary view
        notification = Rot13Notification(self.binaryViewX)
        self.binaryViewY.register_notification(notification)
Beispiel #12
0
    def __init__(self, subject, powermode=False):
        Observation.__init__(self, subject)
        QScrollArea.__init__(self)
        self.powermode = powermode

        self.setFrameShape(QFrame.NoFrame)
        self.setMinimumSize(200, 300)

        self.codeView = CodeView(subject)
        self.trackEditor = TrackEditor(self.subject,
                                       self.powermode,
                                       confirmUpdate=False)

        self.selectedTrackIndex = -1

        self.innerLayout = QHBoxLayout()

        self.innerLayout.setSpacing(0)
        self.innerLayout.setContentsMargins(0, 0, 0, 0)
        self.innerLayout.setAlignment(Qt.AlignLeft)

        self.setAttribute(Qt.WA_StyledBackground)
        self.setStyleSheet(Theme.editor.style)
        self.setHorizontalScrollBar(ScrollBar())
        self.setVerticalScrollBar(ScrollBar())

        widget = QWidget()
        widget.setLayout(self.innerLayout)
        self.setWidget(widget)
        self.setWidgetResizable(True)

        self._initTip()
        self.setTipHidden(False)

        self.add_responder(events.document.Open, self.documentOpenResponder)
        self.add_responder(events.view.main.TrackNew, self.trackNewResponder)
        self.add_responder(events.view.browser.TrackNewFromTemplate,
                           self.trackNewFromTemplateResponder)
        self.add_responder(events.view.track.Clicked,
                           self.trackClickedResponder)
        self.add_responder(events.view.main.TrackSelectLeft,
                           self.trackSelectLeftResponder)
        self.add_responder(events.view.main.TrackSelectRight,
                           self.trackSelectRightResponder)
        self.add_responder(events.view.main.TrackMoveLeft,
                           self.trackMoveLeftResponder)
        self.add_responder(events.view.main.TrackMoveRight,
                           self.trackMoveRightResponder)
        self.add_responder(events.view.main.TrackRemove,
                           self.trackRemoveResponder)
        self.add_responder(events.view.main.RowRemove, self.rowRemoveResponder)
        self.add_responder(events.view.track.CellSelected,
                           self.cellSelectedResponder)
        self.add_responder(events.view.main.CellEvaluate,
                           self.cellEvaluateResponder)
        # we evaluate row here instead of in Track to keep left-to-right
        # evaluation order when we move tracks
        self.add_responder(events.view.main.RowEvaluate,
                           self.rowEvaluateResponder)
        self.add_responder(events.view.main.CellClear, self.cellClearResponder)
        self.add_responder(events.view.main.CellEdit, self.cellEditResponder)
        self.add_responder(events.view.main.TrackSetup,
                           self.trackSetupResponder)
        self.add_responder(events.view.main.TrackSaveAsTemplate,
                           self.trackSaveAsTemplateResponder)
        self.add_responder(events.track.TrackTemplateSaved,
                           self.trackTemplateSavedResponder)
        self.add_responder(events.view.main.TrackRestartBackend,
                           self.trackRestartBackendResponder)
        self.add_responder(events.view.main.BackendRestartAll,
                           self.backendRestartAllResponder)
        self.add_responder(events.view.track.BackendRestart,
                           self.trackConfirmationBackendRestartResponder)
Beispiel #13
0
    def __init__(self, parent, data):
        QScrollArea.__init__(self, parent)
        View.__init__(self)
        View.setBinaryDataNavigable(self, True)
        self.setupView(self)
        self.data = data
        self.currentOffset = 0
        self.byteView = None
        self.fullAnalysisButton = None
        self.importsWidget = None

        container = QWidget(self)
        layout = QVBoxLayout()

        entropyGroup = QGroupBox("Entropy", container)
        entropyLayout = QVBoxLayout()
        entropyLayout.addWidget(
            entropy.EntropyWidget(entropyGroup, self, self.data))
        entropyGroup.setLayout(entropyLayout)
        layout.addWidget(entropyGroup)

        hdr = None
        try:
            if self.data.view_type == "PE":
                hdr = headers.PEHeaders(self.data)
            elif self.data.view_type != "Raw":
                hdr = headers.GenericHeaders(self.data)
        except:
            log.log_error(traceback.format_exc())

        if hdr is not None:
            headerGroup = QGroupBox("Headers", container)
            headerLayout = QVBoxLayout()
            headerWidget = headers.HeaderWidget(headerGroup, hdr)
            headerLayout.addWidget(headerWidget)
            headerGroup.setLayout(headerLayout)
            layout.addWidget(headerGroup)

        if self.data.executable:
            importExportSplitter = QSplitter(Qt.Horizontal)

            importGroup = QGroupBox("Imports", container)
            importLayout = QVBoxLayout()
            self.importsWidget = imports.ImportsWidget(importGroup, self,
                                                       self.data)
            importLayout.addWidget(self.importsWidget)
            importGroup.setLayout(importLayout)
            importExportSplitter.addWidget(importGroup)

            exportGroup = QGroupBox("Exports", container)
            exportLayout = QVBoxLayout()
            exportLayout.addWidget(
                exports.ExportsWidget(exportGroup, self, self.data))
            exportGroup.setLayout(exportLayout)
            importExportSplitter.addWidget(exportGroup)

            layout.addWidget(importExportSplitter)

            if self.data.view_type != "PE":
                segmentsGroup = QGroupBox("Segments", container)
                segmentsLayout = QVBoxLayout()
                segmentsWidget = sections.SegmentsWidget(
                    segmentsGroup, self.data)
                segmentsLayout.addWidget(segmentsWidget)
                segmentsGroup.setLayout(segmentsLayout)
                layout.addWidget(segmentsGroup)
                if len(segmentsWidget.segments) == 0:
                    segmentsGroup.hide()

            sectionsGroup = QGroupBox("Sections", container)
            sectionsLayout = QVBoxLayout()
            sectionsWidget = sections.SectionsWidget(sectionsGroup, self.data)
            sectionsLayout.addWidget(sectionsWidget)
            sectionsGroup.setLayout(sectionsLayout)
            layout.addWidget(sectionsGroup)
            if len(sectionsWidget.sections) == 0:
                sectionsGroup.hide()

            buttonLayout = QHBoxLayout()
            buttonLayout.addStretch(1)
            self.loadDynamicButton = QPushButton("Load Dynamic Imports")
            self.loadDynamicButton.clicked.connect(
                self.importsWidget.scanDynamic)
            buttonLayout.addWidget(self.loadDynamicButton)
            self.fullAnalysisButton = QPushButton("Start Full Analysis")
            self.fullAnalysisButton.clicked.connect(self.startFullAnalysis)
            buttonLayout.addWidget(self.fullAnalysisButton)
            layout.addLayout(buttonLayout)
            layout.addStretch(1)
        else:
            self.byteView = byte.ByteView(self, self.data)
            layout.addWidget(self.byteView, 1)

        container.setLayout(layout)
        self.setWidgetResizable(True)
        self.setWidget(container)

        if self.fullAnalysisButton is not None and Settings().get_string(
                "analysis.mode", data) == "full":
            self.fullAnalysisButton.hide()
Beispiel #14
0
 def __init__(self, app):
     QScrollArea.__init__(self)
     self.app = app
     self._reset_ui()
Beispiel #15
0
    def __init__(self, zoomCB, clickCB, keyCB):
        QScrollArea.__init__(self)

        self.zoomCB = zoomCB
        self.clickCB = clickCB
        self.keyCB = keyCB