Example #1
0
    def __init__(self):
        """
        Toolbar for the Room list side panel tab
        """
        QToolBar.__init__(self)

        # Widgets
        self.delete_btn = QPushButton()
        self.delete_btn.setIcon(get_icon("del"))
        self.delete_btn.setIconSize(QSize(35, 35))
        self.delete_btn.setToolTip(tr("btn_suppr"))
        self.delete_btn.setEnabled(False)

        self.add_widget = ViewAddWidget(self.delete_btn)

        self.sig_delete: Signal = None
        self.delete_btn.clicked.connect(lambda: self.sig_delete.emit())

        # Layout
        self.addWidget(self.add_widget)
        # Empty space to align the about button to the right
        spacer = QWidget()
        spacer.setStyleSheet("background-color: transparent;")
        spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.addWidget(spacer)

        self.addWidget(self.delete_btn)

        self.__set_style()
Example #2
0
    def __init__(self):
        """
        Toolbar for the attributes list side panel tab
        """
        QToolBar.__init__(self)

        self.add_widget = ViewAddAttributeWidget()

        self.addWidget(self.add_widget)

        self.__set_style()
Example #3
0
 def __init__(self):
     QToolBar.__init__(self)
     self.back = QPushButton("back")
     self.next = QPushButton("next")
     self.reload = QPushButton("reload")
     self.url_box = QLineEdit(self)
     self.url_box.setClearButtonEnabled(True)
     
     self.addWidget(self.back)
     self.addWidget(self.next)
     self.addWidget(self.reload)
     self.addWidget(self.url_box)
Example #4
0
    def __init__(self):
        """
        Toolbar for the students list side panel tab
        """
        QToolBar.__init__(self)
        self.current_group: str = None
        self.__config_mode = False

        # Widgets
        self.combo_groups = QComboBox()
        self.create_field = ViewAddLine()
        self.config_action_menu = ViewMenuButton(
            "Actions", self.create_field.show_field,
            [(tr("grp_action_import_csv"), "import_csv"),
             (tr("grp_action_create_group"), "create_group"),
             (tr("grp_action_del_group"), "delete_group"), 'sep',
             (tr("grp_action_create_student"), "create_student"),
             (tr("grp_action_del_student"), "killstudent"), 'sep',
             (tr("grp_action_auto_placement"), "auto_place")])

        self.sort_actions_menu = ViewMenuButton(
            "Tri", self.create_field.show_field, [
                (tr("grp_action_sort_asc"), "sort_asc"),
                (tr("grp_action_sort_desc"), "sort_desc"),
                (tr("grp_action_sort_by_place") + " Z", "sort_desks_Z"),
                (tr("grp_action_sort_by_place") + " 2", "sort_desks_2"),
                (tr("grp_action_sort_by_place") + " U", "sort_desks_U"),
            ])

        # Signals
        self.sig_combo_changed: Signal = None
        self.combo_groups.activated.connect(self.on_group_changed)

        # Layout
        self.a_combo = self.addWidget(self.combo_groups)
        self.a_conf_menu = self.addWidget(self.config_action_menu)
        self.a_sort_menu = self.addWidget(self.sort_actions_menu)
        self.addWidget(self.create_field)

        self.__set_style()
Example #5
0
    def __init__(self):
        QToolBar.__init__(self)

        exitAction = QAction(QtGui.QIcon("resources/icons/exit.png"), "exit",
                             self)
        exitAction.setShortcut('Ctrl+E')
        exitAction.triggered.connect(self.exit_action)

        self.addAction(exitAction)

        newAction = QAction(
            QtGui.QIcon("resources/icons/icons8-add-file-100.png"), "new",
            self)
        newAction.setShortcut('Ctrl+N')
        newAction.triggered.connect(self.new_file)

        self.addAction(newAction)

        saveAction = QAction(
            QtGui.QIcon("resources/icons/icons8-save-100.png"), "save", self)
        saveAction.setShortcut('Ctrl+S')
        saveAction.triggered.connect(self.save_file)

        self.addAction(saveAction)
Example #6
0
    def __init__(self, parent, name, data, debug_state):
        if not type(data) == binaryninja.binaryview.BinaryView:
            raise Exception('expected widget data to be a BinaryView')

        self.bv = data
        self.debug_state = debug_state

        QToolBar.__init__(self, parent)

        # TODO: Is there a cleaner way to do this?
        self.setStyleSheet("""
		QToolButton{padding: 4px 14px 4px 14px; font-size: 14pt;}
		QToolButton:disabled{color: palette(alternate-base)}
		""")

        self.actionRun = QAction("Run", self)
        self.actionRun.triggered.connect(lambda: self.perform_run())
        self.actionRestart = QAction("Restart", self)
        self.actionRestart.triggered.connect(lambda: self.perform_restart())
        self.actionQuit = QAction("Quit", self)
        self.actionQuit.triggered.connect(lambda: self.perform_quit())
        self.actionAttach = QAction("Attach... (todo)", self)
        self.actionAttach.triggered.connect(lambda: self.perform_attach())
        self.actionDetach = QAction("Detach", self)
        self.actionDetach.triggered.connect(lambda: self.perform_detach())
        self.actionSettings = QAction("Settings...", self)
        self.actionSettings.triggered.connect(lambda: self.perform_settings())
        self.actionPause = QAction("Pause", self)
        self.actionPause.triggered.connect(lambda: self.perform_pause())
        self.actionResume = QAction("Resume", self)
        self.actionResume.triggered.connect(lambda: self.perform_resume())
        self.actionStepInto = QAction("Step Into", self)
        self.actionStepInto.triggered.connect(lambda: self.perform_step_into())
        self.actionStepOver = QAction("Step Over", self)
        self.actionStepOver.triggered.connect(lambda: self.perform_step_over())
        self.actionStepReturn = QAction("Step Return", self)
        self.actionStepReturn.triggered.connect(
            lambda: self.perform_step_return())

        # session control menu
        self.controlMenu = QMenu("Process Control", self)
        self.controlMenu.addAction(self.actionRun)
        self.controlMenu.addAction(self.actionRestart)
        self.controlMenu.addAction(self.actionQuit)
        self.controlMenu.addSeparator()
        # TODO: Attach to running process
        # self.controlMenu.addAction(self.actionAttach)
        self.controlMenu.addAction(self.actionDetach)
        # TODO: Switch adapter/etc (could go in regular settings)
        self.controlMenu.addSeparator()
        self.controlMenu.addAction(self.actionSettings)

        self.btnControl = QToolButton(self)
        self.btnControl.setMenu(self.controlMenu)
        self.btnControl.setPopupMode(QToolButton.MenuButtonPopup)
        self.btnControl.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.btnControl.setDefaultAction(self.actionRun)
        self.addWidget(self.btnControl)

        # execution control buttons
        self.addAction(self.actionPause)
        self.addAction(self.actionResume)
        self.addAction(self.actionStepInto)
        self.addAction(self.actionStepOver)
        # TODO: Step until returning from current function
        self.addAction(self.actionStepReturn)

        self.threadMenu = QMenu("Threads", self)

        self.btnThreads = QToolButton(self)
        self.btnThreads.setMenu(self.threadMenu)
        self.btnThreads.setPopupMode(QToolButton.InstantPopup)
        self.btnThreads.setToolButtonStyle(Qt.ToolButtonTextOnly)
        self.addWidget(self.btnThreads)

        self.set_thread_list([])

        self.editStatus = QLineEdit('INACTIVE', self)
        self.editStatus.setReadOnly(True)
        self.editStatus.setAlignment(QtCore.Qt.AlignCenter)
        self.addWidget(self.editStatus)

        # disable buttons
        self.set_actions_enabled(Run=True,
                                 Restart=False,
                                 Quit=False,
                                 Attach=True,
                                 Detach=False,
                                 Pause=False,
                                 Resume=False,
                                 StepInto=False,
                                 StepOver=False,
                                 StepReturn=False)
        self.set_resume_pause_action("Pause")
Example #7
0
    def __init__(self, parent, name, data, debug_state):
        if not type(data) == BinaryView:
            raise Exception('expected widget data to be a BinaryView')

        self.bv = data
        self.debug_state = debug_state

        QToolBar.__init__(self, parent)

        # TODO: Is there a cleaner way to do this?
        self.setStyleSheet("""
		QToolButton{padding: 4px 14px 4px 14px; font-size: 14pt;}
		QToolButton:disabled{color: palette(alternate-base)}
		""")

        self.actionRun = QAction("Run", self)
        self.actionRun.triggered.connect(lambda: self.perform_run())
        self.actionRun.setIcon(load_icon('run.svg'))

        self.actionRestart = QAction("Restart", self)
        self.actionRestart.triggered.connect(lambda: self.perform_restart())
        self.actionRestart.setIcon(load_icon('restart.svg'))

        self.actionQuit = QAction("Quit", self)
        self.actionQuit.triggered.connect(lambda: self.perform_quit())
        self.actionQuit.setIcon(load_icon('cancel.svg'))

        self.actionAttach = QAction("Attach", self)
        self.actionAttach.triggered.connect(lambda: self.perform_attach())
        self.actionAttach.setIcon(load_icon('connect.svg'))

        self.actionDetach = QAction("Detach", self)
        self.actionDetach.triggered.connect(lambda: self.perform_detach())
        self.actionDetach.setIcon(load_icon('disconnect.svg'))

        self.actionSettings = QAction("Settings...", self)
        self.actionSettings.triggered.connect(lambda: self.perform_settings())

        self.actionPause = QAction("Pause", self)
        self.actionPause.triggered.connect(lambda: self.perform_pause())
        self.actionPause.setIcon(load_icon('pause.svg'))

        self.actionResume = QAction("Resume", self)
        self.actionResume.triggered.connect(lambda: self.perform_resume())
        self.actionResume.setIcon(load_icon('resume.svg'))

        self.actionStepIntoAsm = QAction("Step Into (Assembly)", self)
        self.actionStepIntoAsm.triggered.connect(
            lambda: self.perform_step_into_asm())
        self.actionStepIntoAsm.setIcon(load_icon('stepinto.svg'))

        self.actionStepIntoIL = QAction("Step Into", self)
        self.actionStepIntoIL.triggered.connect(
            lambda: self.perform_step_into_il())
        self.actionStepIntoIL.setIcon(load_icon('stepinto.svg'))

        self.actionStepOverAsm = QAction("Step Over (Assembly)", self)
        self.actionStepOverAsm.triggered.connect(
            lambda: self.perform_step_over_asm())
        self.actionStepOverAsm.setIcon(load_icon('stepover.svg'))

        self.actionStepOverIL = QAction("Step Over", self)
        self.actionStepOverIL.triggered.connect(
            lambda: self.perform_step_over_il())
        self.actionStepOverIL.setIcon(load_icon('stepover.svg'))

        self.actionStepReturn = QAction("Step Return", self)
        self.actionStepReturn.triggered.connect(
            lambda: self.perform_step_return())
        self.actionStepReturn.setIcon(load_icon('stepout.svg'))

        # session control menu
        self.controlMenu = QMenu("Process Control", self)
        self.controlMenu.addAction(self.actionRun)
        self.controlMenu.addAction(self.actionRestart)
        self.controlMenu.addAction(self.actionQuit)
        self.controlMenu.addSeparator()
        self.controlMenu.addAction(self.actionAttach)
        self.controlMenu.addAction(self.actionDetach)
        self.controlMenu.addSeparator()
        self.controlMenu.addAction(self.actionSettings)

        self.stepIntoMenu = QMenu("Step Into", self)
        self.stepIntoMenu.addAction(self.actionStepIntoIL)
        self.stepIntoMenu.addAction(self.actionStepIntoAsm)

        self.stepOverMenu = QMenu("Step Over", self)
        self.stepOverMenu.addAction(self.actionStepOverIL)
        self.stepOverMenu.addAction(self.actionStepOverAsm)

        self.btnControl = QToolButton(self)
        self.btnControl.setMenu(self.controlMenu)
        self.btnControl.setPopupMode(QToolButton.MenuButtonPopup)
        self.btnControl.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.btnControl.setDefaultAction(self.actionRun)
        self.addWidget(self.btnControl)

        # execution control buttons
        self.btnPauseResume = QToolButton(self)
        self.btnPauseResume.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.btnPauseResume.setDefaultAction(self.actionPause)
        self.addWidget(self.btnPauseResume)

        #self.addAction(self.actionPause)
        #self.addAction(self.actionResume)

        self.btnStepInto = QToolButton(self)
        self.btnStepInto.setMenu(self.stepIntoMenu)
        self.btnStepInto.setPopupMode(QToolButton.MenuButtonPopup)
        self.btnStepInto.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.btnStepInto.setDefaultAction(self.actionStepIntoIL)
        self.addWidget(self.btnStepInto)

        self.btnStepOver = QToolButton(self)
        self.btnStepOver.setMenu(self.stepOverMenu)
        self.btnStepOver.setPopupMode(QToolButton.MenuButtonPopup)
        self.btnStepOver.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.btnStepOver.setDefaultAction(self.actionStepOverIL)
        self.addWidget(self.btnStepOver)

        # TODO: Step until returning from current function
        self.btnStepReturn = QToolButton(self)
        self.btnStepReturn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.btnStepReturn.setDefaultAction(self.actionStepReturn)
        self.addWidget(self.btnStepReturn)

        #self.addAction(self.actionStepReturn)

        self.threadMenu = QMenu("Threads", self)

        self.btnThreads = QToolButton(self)
        self.btnThreads.setMenu(self.threadMenu)
        self.btnThreads.setPopupMode(QToolButton.InstantPopup)
        self.btnThreads.setToolButtonStyle(Qt.ToolButtonTextOnly)
        self.addWidget(self.btnThreads)

        self.set_thread_list([])

        self.editStatus = QLineEdit('INACTIVE', self)
        self.editStatus.setReadOnly(True)
        self.editStatus.setAlignment(QtCore.Qt.AlignCenter)
        self.addWidget(self.editStatus)

        # disable buttons
        self.set_actions_enabled(Run=self.can_exec(),
                                 Restart=False,
                                 Quit=False,
                                 Attach=self.can_connect(),
                                 Detach=False,
                                 Pause=False,
                                 Resume=False,
                                 StepInto=False,
                                 StepOver=False,
                                 StepReturn=False)
        self.set_resume_pause_action("Pause")
        self.set_default_process_action(
            "Attach" if self.can_connect() else "Run")
Example #8
0
    def __init__(self):
        """
        Main ToolBar, providing features buttons that operates over the canvas.
        The callbacks methods provided by this class should be redirected towards any widget handling the associated
        process.
        """
        QToolBar.__init__(self)
        self.sig_TBbutton = None

        self.config_mode = False

        # Buttons
        self.__btn_config = ToggleSwitchButton(self, "unlock", "lock",
                                               self.on_config_mode)
        self.__btn_magic = ToolBarButton(
            "unkwown", tr("btn_selection_filter"),
            lambda: self.sig_TBbutton.emit("filter_select"))
        self.__btn_perspective = ToolBarButton("teacher",
                                               tr("btn_change_perspective"),
                                               self.on_btn_perspective_clicked)
        self.__btn_shuffle = ToolBarButton("shuffle", tr("btn_shuffle"),
                                           self.on_btn_shuffle_clicked)
        self.__btn_select = ToolBarButton(
            "selection", tr("btn_select"),
            lambda: self.sig_TBbutton.emit("select"))
        self.__btn_choice = ToolBarButton(
            "choixvolontaire", tr("btn_choose_student"),
            lambda: self.sig_TBbutton.emit("choice"))
        self.__btn_attr_choice = ToolBarButton(
            "choixvolontaire_attr", tr("btn_choose_student_with_attr"),
            lambda: self.sig_TBbutton.emit("choice_attr"))
        self.__btn_delete = ToolBarButton(
            "corbeille", tr("btn_delete"),
            lambda: self.sig_TBbutton.emit("delete"))
        self.__btn_lot_change = ToolBarButton(
            "fill", tr("btn_lot_change"),
            lambda: self.sig_TBbutton.emit("lot_change"))
        self.__btn_png = ToolBarButton("camera", tr("export_PNG"),
                                       lambda: self.sig_TBbutton.emit("print"))
        self.__btn_qr = ToolBarButton(
            "qr-code", tr("btn_qr"), lambda: self.sig_TBbutton.emit("show_qr"))
        self.__btn_export_csv = ToolBarButton("csv", tr("export_CSV"),
                                              self.on_export_csv)
        self.__btn_config_edition = ToolBarButton("config", tr("btn_config"),
                                                  self.on_edit_config)
        self.__btn_about = ToolBarButton(
            "info", tr("btn_about"), self.open_about_box)  # Keep at the end

        self.actions_table = {
            self.__btn_config: None,
            self.__btn_magic: None,
            self.__btn_perspective: None,
            self.__btn_shuffle: None,
            self.__btn_select: None,
            self.__btn_choice: None,
            self.__btn_attr_choice: None,
            self.__btn_delete: None,
            self.__btn_lot_change: None,
            self.__btn_png: None,
            self.__btn_qr: None,
            self.__btn_export_csv: None,
            self.__btn_config_edition: None,
            self.__btn_about: None
        }

        # Signals
        self.sig_enable_animation_btns.connect(self.enable_animation_btns)

        self.__init_widgets()
        self.__set_style()
Example #9
0
 def __init__(self, title=None, parent=None, dock=None):
     QToolBar.__init__(self, title, parent)
     self.connect_db = ConnectDatabase(parent)
     self.init_toolbar_buttons()