def setUp(self): super().setUp() self.dialog = OptionsController( self.form.plugin_manager.installed_plugins, parent=self.form) if self.SHOW: self.dialog.show()
class TestOptionsGUI(QtTestCase): def setUp(self): super().setUp() self.dialog = OptionsController(self.form.plugin_manager.installed_plugins, parent=self.form) if self.SHOW: self.dialog.show() def test_generation_tab(self): self.dialog.ui.tabWidget.setCurrentIndex(0) self.assertEqual(self.dialog.ui.checkBoxDefaultFuzzingPause.isChecked(), self.dialog.ui.doubleSpinBoxFuzzingPause.isEnabled()) self.dialog.ui.checkBoxDefaultFuzzingPause.click() self.assertEqual(self.dialog.ui.checkBoxDefaultFuzzingPause.isChecked(), self.dialog.ui.doubleSpinBoxFuzzingPause.isEnabled()) self.dialog.ui.checkBoxDefaultFuzzingPause.click() self.assertEqual(self.dialog.ui.checkBoxDefaultFuzzingPause.isChecked(), self.dialog.ui.doubleSpinBoxFuzzingPause.isEnabled()) def test_plugins_tab(self): self.dialog.ui.tabWidget.setCurrentIndex(3) self.assertEqual(self.dialog.ui.tabWidget.tabText(3), "Plugins") list_view = self.dialog.plugin_controller.ui.listViewPlugins model = list_view.model() self.assertIsInstance(model, PluginListModel) self.assertEqual(model.rowCount(), len(PluginManager().installed_plugins)) for i in range(model.rowCount()): descr = self.dialog.plugin_controller.ui.txtEditPluginDescription.toPlainText() list_view.setCurrentIndex(model.index(i, 0)) self.assertNotEqual(descr, self.dialog.plugin_controller.ui.txtEditPluginDescription.toPlainText()) def test_device_tab(self): self.dialog.ui.tabWidget.setCurrentIndex(4) self.assertEqual(self.dialog.ui.tabWidget.tabText(4), "Device") self.dialog.ui.listWidgetDevices.setCurrentRow(0) dev_name = self.dialog.ui.listWidgetDevices.currentItem().text() for i in range(1, self.dialog.ui.listWidgetDevices.count()): self.dialog.ui.listWidgetDevices.setCurrentRow(i) self.assertNotEqual(dev_name, self.dialog.ui.listWidgetDevices.currentItem().text()) dev_name = self.dialog.ui.listWidgetDevices.currentItem().text() self.dialog.ui.radioButtonPython2Interpreter.click() self.assertTrue(self.dialog.ui.lineEditPython2Interpreter.isEnabled()) self.assertFalse(self.dialog.ui.lineEditGnuradioDirectory.isEnabled()) self.dialog.ui.radioButtonGnuradioDirectory.click() self.assertFalse(self.dialog.ui.lineEditPython2Interpreter.isEnabled()) self.assertTrue(self.dialog.ui.lineEditGnuradioDirectory.isEnabled()) self.dialog.ui.radioButtonPython2Interpreter.click() self.assertFalse(self.dialog.ui.radioButtonGnuradioDirectory.isChecked()) self.assertFalse(self.dialog.ui.lineEditGnuradioDirectory.isEnabled()) self.assertTrue(self.dialog.ui.lineEditPython2Interpreter.isEnabled())
def show_options_dialog_specific_tab(self, tab_index: int): op = OptionsController(self.plugin_manager.installed_plugins, parent=self) op.values_changed.connect(self.on_options_changed) op.ui.tabWidget.setCurrentIndex(tab_index) op.show()
def __init__(self, *args): super().__init__(*args) self.ui = Ui_MainWindow() self.ui.setupUi(self) OptionsController.write_default_options() self.project_save_timer = QTimer() self.project_manager = ProjectManager(self) self.plugin_manager = PluginManager() self.signal_tab_controller = SignalTabController( self.project_manager, parent=self.ui.tab_interpretation) self.ui.tab_interpretation.layout().addWidget( self.signal_tab_controller) self.compare_frame_controller = CompareFrameController( parent=self.ui.tab_protocol, plugin_manager=self.plugin_manager, project_manager=self.project_manager) self.ui.tab_protocol.layout().addWidget(self.compare_frame_controller) self.generator_tab_controller = GeneratorTabController( self.compare_frame_controller, self.project_manager, parent=self.ui.tab_generator) self.undo_group = QUndoGroup() self.undo_group.addStack(self.signal_tab_controller.signal_undo_stack) self.undo_group.addStack( self.compare_frame_controller.protocol_undo_stack) self.undo_group.addStack( self.generator_tab_controller.generator_undo_stack) self.undo_group.setActiveStack( self.signal_tab_controller.signal_undo_stack) self.ui.progressBar.hide() self.participant_legend_model = ParticipantLegendListModel( self.project_manager.participants) self.ui.listViewParticipants.setModel(self.participant_legend_model) gtc = self.generator_tab_controller gtc.ui.splitter.setSizes([gtc.width() / 0.7, gtc.width() / 0.3]) self.ui.tab_generator.layout().addWidget(self.generator_tab_controller) self.signal_protocol_dict = {} """:type: dict[SignalFrameController,ProtocolAnalyzer]""" self.signal_tab_controller.ui.lLoadingFile.setText("") self.ui.lnEdtTreeFilter.setClearButtonEnabled(True) group = QActionGroup(self) self.ui.actionFSK.setActionGroup(group) self.ui.actionOOK.setActionGroup(group) self.ui.actionNone.setActionGroup(group) self.ui.actionPSK.setActionGroup(group) self.signal_tab_controller.ui.lShiftStatus.clear() self.recentFileActionList = [] self.create_connects() self.update_recent_action_list() self.filemodel = FileSystemModel(self) path = QDir.homePath() self.filemodel.setIconProvider(FileIconProvider()) self.filemodel.setRootPath(path) self.file_proxy_model = FileFilterProxyModel(self) self.file_proxy_model.setSourceModel(self.filemodel) self.ui.fileTree.setModel(self.file_proxy_model) self.ui.fileTree.setRootIndex( self.file_proxy_model.mapFromSource(self.filemodel.index(path))) self.ui.fileTree.setToolTip(path) self.ui.fileTree.header().setSectionResizeMode(0, QHeaderView.Stretch) self.ui.fileTree.header().setSectionResizeMode(1, QHeaderView.Interactive) self.ui.fileTree.setFocus() self.generator_tab_controller.table_model.cfc = self.compare_frame_controller self.ui.actionConvert_Folder_to_Project.setEnabled(False) undo_action = self.undo_group.createUndoAction(self) undo_action.setIcon(QIcon.fromTheme("edit-undo")) undo_action.setShortcut(QKeySequence.Undo) self.ui.menuEdit.insertAction(self.ui.actionMinimize_all, undo_action) redo_action = self.undo_group.createRedoAction(self) redo_action.setIcon(QIcon.fromTheme("edit-redo")) redo_action.setShortcut(QKeySequence.Redo) self.ui.splitter.setSizes([0, 1]) self.ui.menuEdit.insertAction(self.ui.actionMinimize_all, redo_action) self.refresh_main_menu() self.apply_default_view() self.project_save_timer.start( ProjectManager.AUTOSAVE_INTERVAL_MINUTES * 60 * 1000) self.ui.actionProject_settings.setVisible(False) self.ui.actionSave_project.setVisible(False) # Disabled because never used self.ui.actionMinimize_all.setVisible(False) self.ui.actionMaximize_all.setVisible(False)
def __init__(self, *args): super().__init__(*args) self.ui = Ui_MainWindow() self.ui.setupUi(self) OptionsController.write_default_options() self.project_save_timer = QTimer() self.project_manager = ProjectManager(self) self.plugin_manager = PluginManager() self.signal_tab_controller = SignalTabController( self.project_manager, parent=self.ui.tab_interpretation) self.ui.tab_interpretation.layout().addWidget( self.signal_tab_controller) self.compare_frame_controller = CompareFrameController( parent=self.ui.tab_protocol, plugin_manager=self.plugin_manager, project_manager=self.project_manager) self.compare_frame_controller.ui.splitter.setSizes([1, 1000000]) self.ui.tab_protocol.layout().addWidget(self.compare_frame_controller) self.generator_tab_controller = GeneratorTabController( self.compare_frame_controller, self.project_manager, parent=self.ui.tab_generator) self.undo_group = QUndoGroup() self.undo_group.addStack(self.signal_tab_controller.signal_undo_stack) self.undo_group.addStack( self.compare_frame_controller.protocol_undo_stack) self.undo_group.addStack( self.generator_tab_controller.generator_undo_stack) self.undo_group.setActiveStack( self.signal_tab_controller.signal_undo_stack) self.cancel_action = QAction(self.tr("Cancel"), self) self.cancel_action.setShortcut( QKeySequence.Cancel if hasattr(QKeySequence, "Cancel") else "Esc") self.cancel_action.triggered.connect(self.on_cancel_triggered) self.cancel_action.setShortcutContext(Qt.WidgetWithChildrenShortcut) self.cancel_action.setIcon(QIcon.fromTheme("dialog-cancel")) self.addAction(self.cancel_action) self.participant_legend_model = ParticipantLegendListModel( self.project_manager.participants) self.ui.listViewParticipants.setModel(self.participant_legend_model) gtc = self.generator_tab_controller gtc.ui.splitter.setSizes([gtc.width() / 0.7, gtc.width() / 0.3]) self.ui.tab_generator.layout().addWidget(self.generator_tab_controller) self.signal_protocol_dict = { } # type: dict[SignalFrameController, ProtocolAnalyzer] self.ui.lnEdtTreeFilter.setClearButtonEnabled(True) group = QActionGroup(self) self.ui.actionFSK.setActionGroup(group) self.ui.actionOOK.setActionGroup(group) self.ui.actionNone.setActionGroup(group) self.ui.actionPSK.setActionGroup(group) self.recentFileActionList = [] self.create_connects() self.init_recent_file_action_list( constants.SETTINGS.value("recentFiles", [])) self.filemodel = FileSystemModel(self) path = QDir.homePath() self.filemodel.setIconProvider(FileIconProvider()) self.filemodel.setRootPath(path) self.file_proxy_model = FileFilterProxyModel(self) self.file_proxy_model.setSourceModel(self.filemodel) self.ui.fileTree.setModel(self.file_proxy_model) self.ui.fileTree.setRootIndex( self.file_proxy_model.mapFromSource(self.filemodel.index(path))) self.ui.fileTree.setToolTip(path) self.ui.fileTree.header().setSectionResizeMode( 0, QHeaderView.ResizeToContents) self.ui.fileTree.header().setSectionResizeMode(1, QHeaderView.Stretch) self.ui.fileTree.setFocus() self.generator_tab_controller.table_model.cfc = self.compare_frame_controller self.ui.actionConvert_Folder_to_Project.setEnabled(False) undo_action = self.undo_group.createUndoAction(self) undo_action.setIcon(QIcon.fromTheme("edit-undo")) undo_action.setShortcut(QKeySequence.Undo) self.ui.menuEdit.insertAction(self.ui.actionDecoding, undo_action) redo_action = self.undo_group.createRedoAction(self) redo_action.setIcon(QIcon.fromTheme("edit-redo")) redo_action.setShortcut(QKeySequence.Redo) self.ui.menuEdit.insertAction(self.ui.actionDecoding, redo_action) self.ui.menuEdit.insertSeparator(self.ui.actionDecoding) self.ui.actionAbout_Qt.setIcon( QIcon(":/qt-project.org/qmessagebox/images/qtlogo-64.png")) self.ui.splitter.setSizes([0, 1]) self.refresh_main_menu() self.apply_default_view( constants.SETTINGS.value('default_view', type=int)) self.project_save_timer.start( ProjectManager.AUTOSAVE_INTERVAL_MINUTES * 60 * 1000) self.ui.actionProject_settings.setVisible(False) self.ui.actionSave_project.setVisible(False)
class TestOptionsGUI(QtTestCase): def setUp(self): super().setUp() self.dialog = OptionsController( self.form.plugin_manager.installed_plugins, parent=self.form) if self.SHOW: self.dialog.show() def test_interpretation_tab(self): self.dialog.ui.tabWidget.setCurrentIndex(0) if self.dialog.ui.chkBoxEnableSymbols.isChecked(): self.assertNotEqual(self.dialog.ui.lSymbolLength.text(), "0%") else: self.assertEqual(self.dialog.ui.lSymbolLength.text(), "0%") self.dialog.ui.chkBoxEnableSymbols.click() if self.dialog.ui.chkBoxEnableSymbols.isChecked(): self.assertNotEqual(self.dialog.ui.lSymbolLength.text(), "0%") else: self.assertEqual(self.dialog.ui.lSymbolLength.text(), "0%") self.dialog.ui.chkBoxEnableSymbols.click() if self.dialog.ui.chkBoxEnableSymbols.isChecked(): self.assertNotEqual(self.dialog.ui.lSymbolLength.text(), "0%") else: self.assertEqual(self.dialog.ui.lSymbolLength.text(), "0%") def test_generation_tab(self): self.dialog.ui.tabWidget.setCurrentIndex(0) self.assertEqual( self.dialog.ui.checkBoxDefaultFuzzingPause.isChecked(), self.dialog.ui.doubleSpinBoxFuzzingPause.isEnabled()) self.dialog.ui.checkBoxDefaultFuzzingPause.click() self.assertEqual( self.dialog.ui.checkBoxDefaultFuzzingPause.isChecked(), self.dialog.ui.doubleSpinBoxFuzzingPause.isEnabled()) self.dialog.ui.checkBoxDefaultFuzzingPause.click() self.assertEqual( self.dialog.ui.checkBoxDefaultFuzzingPause.isChecked(), self.dialog.ui.doubleSpinBoxFuzzingPause.isEnabled()) def test_plugins_tab(self): self.dialog.ui.tabWidget.setCurrentIndex(4) self.assertEqual(self.dialog.ui.tabWidget.tabText(4), "Plugins") list_view = self.dialog.plugin_controller.ui.listViewPlugins model = list_view.model() self.assertIsInstance(model, PluginListModel) self.assertEqual(model.rowCount(), len(PluginManager().installed_plugins)) for i in range(model.rowCount()): descr = self.dialog.plugin_controller.ui.txtEditPluginDescription.toPlainText( ) list_view.setCurrentIndex(model.index(i, 0)) self.assertNotEqual( descr, self.dialog.plugin_controller.ui.txtEditPluginDescription. toPlainText()) def test_device_tab(self): self.dialog.ui.tabWidget.setCurrentIndex(5) self.assertEqual(self.dialog.ui.tabWidget.tabText(5), "Device") self.dialog.ui.listWidgetDevices.setCurrentRow(0) dev_name = self.dialog.ui.listWidgetDevices.currentItem().text() for i in range(1, self.dialog.ui.listWidgetDevices.count()): self.dialog.ui.listWidgetDevices.setCurrentRow(i) self.assertNotEqual( dev_name, self.dialog.ui.listWidgetDevices.currentItem().text()) dev_name = self.dialog.ui.listWidgetDevices.currentItem().text() self.dialog.ui.radioButtonPython2Interpreter.click() self.assertTrue(self.dialog.ui.lineEditPython2Interpreter.isEnabled()) self.assertFalse(self.dialog.ui.lineEditGnuradioDirectory.isEnabled()) self.dialog.ui.radioButtonGnuradioDirectory.click() self.assertFalse(self.dialog.ui.lineEditPython2Interpreter.isEnabled()) self.assertTrue(self.dialog.ui.lineEditGnuradioDirectory.isEnabled()) self.dialog.ui.radioButtonPython2Interpreter.click() self.assertFalse( self.dialog.ui.radioButtonGnuradioDirectory.isChecked()) self.assertFalse(self.dialog.ui.lineEditGnuradioDirectory.isEnabled()) self.assertTrue(self.dialog.ui.lineEditPython2Interpreter.isEnabled())
def setUp(self): self.form = MainController() self.dialog = OptionsController( self.form.plugin_manager.installed_plugins, parent=self.form)
def setUp(self): self.form = MainController() app.processEvents() QTest.qWait(10) self.dialog = OptionsController( self.form.plugin_manager.installed_plugins, parent=self.form)
def setUp(self): tests.utils_testing.short_wait() self.form = MainController() tests.utils_testing.short_wait() self.dialog = OptionsController( self.form.plugin_manager.installed_plugins, parent=self.form)
def __init__(self, *args): super().__init__(*args) self.ui = Ui_MainWindow() self.ui.setupUi(self) OptionsController.write_default_options() self.project_save_timer = QTimer() self.project_manager = ProjectManager(self) self.plugin_manager = PluginManager() self.signal_tab_controller = SignalTabController(self.project_manager, parent=self.ui.tab_interpretation) self.ui.tab_interpretation.layout().addWidget(self.signal_tab_controller) self.compare_frame_controller = CompareFrameController(parent=self.ui.tab_protocol, plugin_manager=self.plugin_manager, project_manager=self.project_manager) self.compare_frame_controller.ui.splitter.setSizes([1, 1000000]) self.ui.tab_protocol.layout().addWidget(self.compare_frame_controller) self.generator_tab_controller = GeneratorTabController(self.compare_frame_controller, self.project_manager, parent=self.ui.tab_generator) self.undo_group = QUndoGroup() self.undo_group.addStack(self.signal_tab_controller.signal_undo_stack) self.undo_group.addStack(self.compare_frame_controller.protocol_undo_stack) self.undo_group.addStack(self.generator_tab_controller.generator_undo_stack) self.undo_group.setActiveStack(self.signal_tab_controller.signal_undo_stack) self.participant_legend_model = ParticipantLegendListModel(self.project_manager.participants) self.ui.listViewParticipants.setModel(self.participant_legend_model) gtc = self.generator_tab_controller gtc.ui.splitter.setSizes([gtc.width() / 0.7, gtc.width() / 0.3]) self.ui.tab_generator.layout().addWidget(self.generator_tab_controller) self.signal_protocol_dict = {} # type: dict[SignalFrameController, ProtocolAnalyzer] self.ui.lnEdtTreeFilter.setClearButtonEnabled(True) group = QActionGroup(self) self.ui.actionFSK.setActionGroup(group) self.ui.actionOOK.setActionGroup(group) self.ui.actionNone.setActionGroup(group) self.ui.actionPSK.setActionGroup(group) self.recentFileActionList = [] self.create_connects() self.init_recent_file_action_list(constants.SETTINGS.value("recentFiles", [])) self.filemodel = FileSystemModel(self) path = QDir.homePath() self.filemodel.setIconProvider(FileIconProvider()) self.filemodel.setRootPath(path) self.file_proxy_model = FileFilterProxyModel(self) self.file_proxy_model.setSourceModel(self.filemodel) self.ui.fileTree.setModel(self.file_proxy_model) self.ui.fileTree.setRootIndex(self.file_proxy_model.mapFromSource(self.filemodel.index(path))) self.ui.fileTree.setToolTip(path) self.ui.fileTree.header().setSectionResizeMode(0, QHeaderView.ResizeToContents) self.ui.fileTree.header().setSectionResizeMode(1, QHeaderView.Stretch) self.ui.fileTree.setFocus() self.generator_tab_controller.table_model.cfc = self.compare_frame_controller self.ui.actionConvert_Folder_to_Project.setEnabled(False) undo_action = self.undo_group.createUndoAction(self) undo_action.setIcon(QIcon.fromTheme("edit-undo")) undo_action.setShortcut(QKeySequence.Undo) self.ui.menuEdit.insertAction(self.ui.actionDecoding, undo_action) redo_action = self.undo_group.createRedoAction(self) redo_action.setIcon(QIcon.fromTheme("edit-redo")) redo_action.setShortcut(QKeySequence.Redo) self.ui.menuEdit.insertAction(self.ui.actionDecoding, redo_action) self.ui.menuEdit.insertSeparator(self.ui.actionDecoding) self.ui.actionAbout_Qt.setIcon(QIcon(":/qt-project.org/qmessagebox/images/qtlogo-64.png")) self.ui.splitter.setSizes([0, 1]) self.refresh_main_menu() self.apply_default_view(constants.SETTINGS.value('default_view', type=int)) self.project_save_timer.start(ProjectManager.AUTOSAVE_INTERVAL_MINUTES * 60 * 1000) self.ui.actionProject_settings.setVisible(False) self.ui.actionSave_project.setVisible(False)
def show_options_dialog(self): op = OptionsController(self.plugin_manager.installed_plugins, parent=self) op.values_changed.connect(self.on_options_changed) op.exec_()
def setUp(self): super().setUp() self.dialog = OptionsController(self.form.plugin_manager.installed_plugins, parent=self.form) if self.SHOW: self.dialog.show()