def setUp(self): constants.SETTINGS.setValue("align_labels", True) logger.debug("Init form") tests.utils_testing.short_wait() self.form = MainController() tests.utils_testing.short_wait() logger.debug("Add signal") self.form.add_protocol_file(get_path_for_data_file("protocol.proto")) logger.debug("added signal") tests.utils_testing.short_wait() self.cframe = self.form.compare_frame_controller self.cframe.add_protocol_label( 9, 19, 0, 0, edit_label_name=False) # equals 10-20 in view self.cframe.add_protocol_label( 39, 54, 1, 0, edit_label_name=False) # equals 40-55 in view self.assertEqual(len(self.cframe.proto_analyzer.protocol_labels), 2) self.dialog = ProtocolLabelController( preselected_index=1, message=self.cframe.proto_analyzer.messages[0], viewtype=0, parent=self.cframe)
def test_create_context_menu(self): logger.debug("Init form") self.form = MainController() tests.utils_testing.short_wait() logger.debug("Intialized form") self.form.add_signalfile(get_path_for_data_file("esaver.complex")) logger.debug("added signalfile") app.processEvents() self.form.signal_tab_controller.signal_frames[ 0].ui.cbProtoView.setCurrentIndex(2) app.processEvents() logger.debug("Get text edit") text_edit = self.form.signal_tab_controller.signal_frames[ 0].ui.txtEdProto menu = text_edit.create_context_menu() app.processEvents() line_wrap_action = next(action for action in menu.actions() if action.text().startswith("Linewrap")) checked = line_wrap_action.isChecked() line_wrap_action.trigger() menu = text_edit.create_context_menu() app.processEvents() line_wrap_action = next(action for action in menu.actions() if action.text().startswith("Linewrap")) self.assertNotEqual(checked, line_wrap_action.isChecked())
def setUp(self): self.old_sym_len = constants.SETTINGS.value('rel_symbol_length', type=int) constants.SETTINGS.setValue('rel_symbol_length', 0) # Disable Symbols for this Test logger.debug("Init form") self.form = MainController() logger.debug("Intiliazed form") app.processEvents() logger.debug("Add signal") self.form.add_signalfile(get_path_for_data_file("esaver.complex")) logger.debug("Added signal") self.sframe = self.form.signal_tab_controller.signal_frames[0] self.cframe = self.form.compare_frame_controller self.cframe.ui.cbProtoView.setCurrentIndex(0) self.gframe = self.form.generator_tab_controller self.gframe.ui.cbViewType.setCurrentIndex(0) # Create two labels on Compare Frame self.form.ui.tabWidget.setCurrentIndex(1) self.cframe.add_protocol_label(start=0, end=40, messagenr=1, proto_view=0, edit_label_name=False) # Sync self.cframe.add_protocol_label(start=43, end=43, messagenr=2, proto_view=0, edit_label_name=False) # FuzzBit self.assertEqual(len(self.cframe.active_message_type), 2)
def setUp(self): self.form = MainController() self.form.add_signalfile(get_path_for_data_file("esaver.complex")) self.signal = self.form.signal_tab_controller.signal_frames[0].signal self.dialog = DecoderWidgetController(decodings=self.form.compare_frame_controller.decodings, signals=[self.signal], project_manager=self.form.project_manager)
def setUp(self): self.form = MainController() self.form.add_signalfile(get_path_for_data_file("esaver.complex")) self.form.signal_tab_controller.signal_frames[ 0].ui.cbProtoView.setCurrentIndex(2) self.text_edit = self.form.signal_tab_controller.signal_frames[ 0].ui.txtEdProto
def setUp(self): self.form = MainController() self.form.project_manager.set_project_folder(get_path_for_data_file(""), ask_for_new_project=False) self.cframe = self.form.compare_frame_controller self.gframe = self.form.generator_tab_controller self.dialog = ProjectDialogController(project_manager=self.form.project_manager, parent=self.form)
def setUp(self): self.old_sym_len = constants.SETTINGS.value('rel_symbol_length', type=int) constants.SETTINGS.setValue('rel_symbol_length', 0) # Disable Symbols for this Test QTest.qWait(100) self.form = MainController() self.form.add_signalfile("./data/esaver.complex") QTest.qWait(100) self.sframe = self.form.signal_tab_controller.signal_frames[0] self.cframe = self.form.compare_frame_controller self.gframe = self.form.generator_tab_controller # Create two labels on Compare Frame self.form.ui.tabWidget.setCurrentIndex(1) self.cframe.add_protocol_label(0, 40, 1, 0, True, edit_label_name=False) # Sync self.cframe.add_protocol_label(43, 43, 2, 0, True, edit_label_name=False) # FuzzBit
def setUp(self): constants.SETTINGS.setValue("not_show_save_dialog", True) self.form = MainController() self.form.add_signalfile(get_path_for_data_file("esaver.complex")) self.frame = self.form.signal_tab_controller.signal_frames[0] self.frame.signal.noise_threshold = 0.0023 self.frame.signal.qad_center = 0.3817 self.frame.signal.bit_len = 84
def setUp(self): constants.SETTINGS.setValue("NetworkSDRInterface", True) tests.utils_testing.short_wait() logger.debug("init form") self.form = MainController() self.signal = Signal(get_path_for_data_file("esaver.complex"), "testsignal") self.form.ui.tabWidget.setCurrentIndex(2)
def setUp(self): self.form = MainController() self.form.add_signalfile(get_path_for_data_file("esaver.complex")) self.signal = self.form.signal_tab_controller.signal_frames[0].signal self.gframe = self.form.generator_tab_controller self.form.ui.tabWidget.setCurrentIndex(2) self.dialog, _ = self.gframe.prepare_modulation_dialog() self.gframe.initialize_modulation_dialog("1111", self.dialog)
def setUp(self): logger.debug("Init form") tests.utils_testing.short_wait() self.form = MainController() logger.debug("Initialized form") tests.utils_testing.short_wait() self.form.project_manager.set_project_folder( get_path_for_data_file(""), ask_for_new_project=False) self.cframe = self.form.compare_frame_controller self.gframe = self.form.generator_tab_controller
def setUp(self): self.form = MainController() self.cfc = self.form.compare_frame_controller self.form.add_signalfile( get_path_for_data_file("two_participants.complex")) self.signal = self.form.signal_tab_controller.signal_frames[0].signal self.signal.noise_threshold = 0.0175 self.signal.qad_center = 0 self.signal.bit_len = 100 self.signal.tolerance = 5
def setUp(self): constants.SETTINGS.setValue("NetworkSDRInterface", True) self.form = MainController() self.form.add_signalfile(get_path_for_data_file("esaver.complex")) self.signal = self.form.signal_tab_controller.signal_frames[0].signal self.gframe = self.form.generator_tab_controller self.form.ui.tabWidget.setCurrentIndex(2) project_manager = self.form.project_manager self.receive_dialog = ReceiveDialogController( project_manager.frequency, project_manager.sample_rate, project_manager.bandwidth, project_manager.gain, project_manager.device, testing_mode=True) self.send_dialog = SendDialogController( project_manager.frequency, project_manager.sample_rate, project_manager.bandwidth, project_manager.gain, project_manager.device, modulated_data=self.signal.data, testing_mode=True) self.send_dialog.graphics_view.show_full_scene(reinitialize=True) self.spectrum_dialog = SpectrumDialogController( project_manager.frequency, project_manager.sample_rate, project_manager.bandwidth, project_manager.gain, project_manager.device, testing_mode=True) self.sniff_dialog = ProtocolSniffDialogController( project_manager.frequency, project_manager.sample_rate, project_manager.bandwidth, project_manager.gain, project_manager.device, self.signal.noise_threshold, self.signal.qad_center, self.signal.bit_len, self.signal.tolerance, self.signal.modulation_type, testing_mode=True) self.dialogs = [ self.receive_dialog, self.send_dialog, self.spectrum_dialog, self.sniff_dialog ] QTest.qWait(250)
def setUp(self): logger.debug("Init form") self.form = MainController() logger.debug("Initialized form") app.processEvents() QTest.qWait(25) self.form.project_manager.set_project_folder(get_path_for_data_file(""), ask_for_new_project=False) self.cframe = self.form.compare_frame_controller self.gframe = self.form.generator_tab_controller self.dialog = ProjectDialogController(project_manager=self.form.project_manager, parent=self.form)
def setUp(self): self.old_sym_len = constants.SETTINGS.value('rel_symbol_length', type=int) constants.SETTINGS.setValue('rel_symbol_length', 0) # Disable Symbols for this Test self.form = MainController() self.form.add_signalfile(get_path_for_data_file("esaver.complex")) self.sframe = self.form.signal_tab_controller.signal_frames[0] self.cframe = self.form.compare_frame_controller self.gframe = self.form.generator_tab_controller self.form.ui.tabWidget.setCurrentIndex(1) self.assertEqual(self.cframe.protocol_model.row_count, 3)
def setUp(self): constants.SETTINGS.setValue( "not_show_close_dialog", True) # prevent interactive close questions self.form = MainController() self.cfc = self.form.compare_frame_controller self.form.add_signalfile( get_path_for_data_file("two_participants.complex")) self.signal = self.form.signal_tab_controller.signal_frames[0].signal self.signal.noise_threshold = 0.0175 self.signal.qad_center = 0 self.signal.bit_len = 100 self.signal.tolerance = 5
def setUp(self): self.form = MainController() self.bit_len = 250 self.center = 0.0644 self.noise = 0.0332 self.tolerance = 5 self.modulation_type = 0 # ASK self.sample_rate = 1e6 self.freq = 433.92e6 self.gain = 20 self.bandwidth = 1e6 self.device = "HackRF"
def setUp(self): constants.SETTINGS.setValue("not_show_save_dialog", True) logger.debug("Init Form") tests.utils_testing.short_wait() self.form = MainController() tests.utils_testing.short_wait() logger.debug("Add Signal") self.form.add_signalfile(get_path_for_data_file("esaver.complex")) logger.debug("Added Signal") app.processEvents() self.frame = self.form.signal_tab_controller.signal_frames[0] self.frame.signal.noise_threshold = 0.0023 self.frame.signal.qad_center = 0.3817 self.frame.signal.bit_len = 84
def setUp(self): self.form = MainController() self.cframe = self.form.compare_frame_controller self.form.ui.tabWidget.setCurrentIndex(1) self.cframe.ui.cbProtoView.setCurrentIndex(0) proto = self.__build_protocol() self.cframe.add_protocol(proto) proto.qt_signals.protocol_updated.emit() self.assertEqual(self.cframe.protocol_model.row_count, self.NUM_MESSAGES) self.assertEqual(self.cframe.protocol_model.col_count, self.BITS_PER_MESSAGE) self.__add_labels() self.assertEqual(len(self.cframe.proto_analyzer.protocol_labels), self.NUM_LABELS)
def setUp(self): self.form = MainController() self.cfc = self.form.compare_frame_controller self.stc = self.form.simulator_tab_controller self.gtc = self.form.generator_tab_controller self.form.add_signalfile(get_path_for_data_file("esaver.complex")) self.sframe = self.form.signal_tab_controller.signal_frames[0] self.sim_frame = self.form.simulator_tab_controller self.form.ui.tabWidget.setCurrentIndex(3) self.cfc.proto_analyzer.auto_assign_labels() SettingsProxy.OVERWRITE_RECEIVE_BUFFER_SIZE = 100 * 10**6 self.network_sdr_plugin_sender = NetworkSDRInterfacePlugin( raw_mode=True)
def setUp(self): logger.debug("Init Form") tests.utils_testing.short_wait(interval=10) self.form = MainController() logger.debug("Add Signal") tests.utils_testing.short_wait() self.form.add_signalfile(get_path_for_data_file("esaver.complex")) logger.debug("Added Signal") self.signal = self.form.signal_tab_controller.signal_frames[0].signal self.gframe = self.form.generator_tab_controller self.form.ui.tabWidget.setCurrentIndex(2) tests.utils_testing.short_wait(interval=10) logger.debug("Create modulation dialog") self.dialog, _ = self.gframe.prepare_modulation_dialog() self.gframe.initialize_modulation_dialog("1111", self.dialog)
def test_uncompress_archives(self): temp_dir = tempfile.gettempdir() os.chdir(temp_dir) with tarfile.open("test.tar.gz", "w:gz") as tar: for name in ["1.complex", "2.complex", "3.complex"]: data = np.ndarray(10, dtype=np.complex64) data.tofile(name) tar.add(name) with ZipFile('test.zip', 'w') as zip: for name in ["4.complex", "5.complex"]: data = np.ndarray(10, dtype=np.complex64) data.tofile(name) zip.write(name) form = MainController() form.add_files( FileOperator.uncompress_archives(["test.tar.gz", "test.zip"], QDir.tempPath())) self.assertEqual(len(form.signal_tab_controller.signal_frames), 5) tar_md5 = hashlib.md5( open(os.path.join(temp_dir, "test.tar.gz"), 'rb').read()).hexdigest() form.signal_tab_controller.signal_frames[0].signal._fulldata = np.ones( 5, dtype=np.complex64) form.signal_tab_controller.signal_frames[0].signal.changed = True form.signal_tab_controller.signal_frames[0].ui.btnSaveSignal.click() tar_md5_after_save = hashlib.md5( open(os.path.join(temp_dir, "test.tar.gz"), 'rb').read()).hexdigest() self.assertNotEqual(tar_md5, tar_md5_after_save) zip_md5 = hashlib.md5( open(os.path.join(temp_dir, "test.zip"), 'rb').read()).hexdigest() form.signal_tab_controller.signal_frames[4].signal._fulldata = np.ones( 5, dtype=np.complex64) form.signal_tab_controller.signal_frames[4].signal.changed = True form.signal_tab_controller.signal_frames[4].ui.btnSaveSignal.click() zip_md5_after_save = hashlib.md5( open(os.path.join(temp_dir, "test.zip"), 'rb').read()).hexdigest() self.assertNotEqual(zip_md5, zip_md5_after_save)
def setUp(self): self.form = MainController() QTest.qWait(10) self.cframe = self.form.compare_frame_controller self.form.ui.tabWidget.setCurrentIndex(1) proto = self.__build_protocol() self.cframe.add_protocol(proto) proto.qt_signals.protocol_updated.emit() QTest.qWait(10) self.assertEqual(self.cframe.protocol_model.row_count, self.NUM_BLOCKS) self.assertEqual(self.cframe.protocol_model.col_count, self.BITS_PER_BLOCK) self.__add_labels() QTest.qWait(10) self.assertEqual(len(self.cframe.groups[0].labels), self.NUM_LABELS)
def setUp(self): self.form = MainController() self.form.add_signalfile(get_path_for_data_file("esaver.complex")) self.signal = self.form.signal_tab_controller.signal_frames[0].signal self.gframe = self.form.generator_tab_controller self.form.ui.tabWidget.setCurrentIndex(2) project_manager = self.form.project_manager self.receive_dialog = SendRecvDialogController( project_manager.frequency, project_manager.sample_rate, project_manager.bandwidth, project_manager.gain, project_manager.device, Mode.receive, testing_mode=True) self.send_dialog = SendRecvDialogController( project_manager.frequency, project_manager.sample_rate, project_manager.bandwidth, project_manager.gain, project_manager.device, Mode.send, modulated_data=self.signal.data, testing_mode=True) self.send_dialog.graphics_view.show_full_scene(reinitialize=True) self.spectrum_dialog = SendRecvDialogController( project_manager.frequency, project_manager.sample_rate, project_manager.bandwidth, project_manager.gain, project_manager.device, Mode.spectrum, testing_mode=True) self.dialogs = [ self.receive_dialog, self.send_dialog, self.spectrum_dialog ]
def setUp(self): constants.SETTINGS.setValue("align_labels", True) self.form = MainController() app.processEvents() QTest.qWait(10) self.form.add_protocol_file(get_path_for_data_file("protocol.proto")) app.processEvents() QTest.qWait(10) self.cframe = self.form.compare_frame_controller self.cframe.add_protocol_label( 9, 19, 0, 0, edit_label_name=False) # equals 10-20 in view self.cframe.add_protocol_label( 39, 54, 1, 0, edit_label_name=False) # equals 40-55 in view self.assertEqual(len(self.cframe.proto_analyzer.protocol_labels), 2) self.dialog = ProtocolLabelController( preselected_index=1, message=self.cframe.proto_analyzer.messages[0], viewtype=0, parent=self.cframe)
def test_performance(self): self.form = MainController() self.cfc = self.form.compare_frame_controller self.stc = self.form.simulator_tab_controller self.gtc = self.form.generator_tab_controller self.form.add_signalfile(get_path_for_data_file("esaver.complex16s")) self.sframe = self.form.signal_tab_controller.signal_frames[0] self.sim_frame = self.form.simulator_tab_controller self.form.ui.tabWidget.setCurrentIndex(3) self.cfc.proto_analyzer.auto_assign_labels() self.network_sdr_plugin_sender = NetworkSDRInterfacePlugin(raw_mode=True) part_a = Participant("Device A", shortname="A", color_index=0) part_b = Participant("Device B", shortname="B", color_index=1) part_b.simulate = True self.form.project_manager.participants.append(part_a) self.form.project_manager.participants.append(part_b) self.form.project_manager.project_updated.emit() sniffer = ProtocolSniffer(100, 0.01, 0.01, 0.1, 5, "FSK", 1, NetworkSDRInterfacePlugin.NETWORK_SDR_NAME, BackendHandler(), network_raw_mode=True) sender = EndlessSender(BackendHandler(), NetworkSDRInterfacePlugin.NETWORK_SDR_NAME) simulator = Simulator(self.stc.simulator_config, self.gtc.modulators, self.stc.sim_expression_parser, self.form.project_manager, sniffer=sniffer, sender=sender) pause = 100 msg_a = SimulatorMessage(part_b, [1, 0] * 16 + [1, 1, 0, 0] * 8 + [0, 0, 1, 1] * 8 + [1, 0, 1, 1, 1, 0, 0, 1, 1, 1] * 4, pause=pause, message_type=MessageType("empty_message_type"), source=part_a) msg_b = SimulatorMessage(part_a, [1, 0] * 16 + [1, 1, 0, 0] * 8 + [1, 1, 0, 0] * 8 + [1, 0, 1, 1, 1, 0, 0, 1, 1, 1] * 4, pause=pause, message_type=MessageType("empty_message_type"), source=part_b) self.stc.simulator_config.add_items([msg_a, msg_b], 0, None) self.stc.simulator_config.update_active_participants() port = self.get_free_port() sniffer = simulator.sniffer sniffer.rcv_device.set_server_port(port) self.network_sdr_plugin_sender.client_port = port sender = simulator.sender port = self.get_free_port() sender.device.set_client_port(port) sender.device._VirtualDevice__dev.name = "simulator_sender" current_index = Value("L") elapsed = Value("f") target_num_samples = 13600 + pause receive_process = Process(target=receive, args=(port, current_index, target_num_samples, elapsed)) receive_process.daemon = True receive_process.start() # Ensure receiver is running time.sleep(2) # spy = QSignalSpy(self.network_sdr_plugin_receiver.rcv_index_changed) simulator.start() modulator = Modulator("test_modulator") modulator.samples_per_symbol = 100 modulator.carrier_freq_hz = 55e3 # yappi.start() self.network_sdr_plugin_sender.send_raw_data(modulator.modulate(msg_a.encoded_bits), 1) time.sleep(0.5) # send some zeros to simulate the end of a message self.network_sdr_plugin_sender.send_raw_data(np.zeros(self.num_zeros_for_pause, dtype=np.complex64), 1) time.sleep(0.5) receive_process.join(15) logger.info("PROCESS TIME: {0:.2f}ms".format(elapsed.value)) # self.assertEqual(current_index.value, target_num_samples) self.assertLess(elapsed.value, 200) # timeout = spy.wait(2000) # yappi.get_func_stats().print_all() # yappi.get_thread_stats().print_all()
def main(): fix_windows_stdout_stderr() if sys.version_info < (3, 4): print("You need at least Python 3.4 for this application!") sys.exit(1) t = time.time() if GENERATE_UI and not hasattr(sys, 'frozen'): try: urh_dir = os.path.abspath( os.path.join(os.path.dirname(sys.argv[0]), "..", "..")) sys.path.append(urh_dir) sys.path.append(os.path.join(urh_dir, "src")) import generate_ui generate_ui.gen() print("Time for generating UI: %.2f seconds" % (time.time() - t)) except (ImportError, FileNotFoundError): print( "Will not regenerate UI, because script can't be found. This is okay in release." ) urh_exe = sys.executable if hasattr(sys, 'frozen') else sys.argv[0] urh_exe = os.readlink(urh_exe) if os.path.islink(urh_exe) else urh_exe urh_dir = os.path.join(os.path.dirname(os.path.realpath(urh_exe)), "..", "..") prefix = os.path.abspath(os.path.normpath(urh_dir)) src_dir = os.path.join(prefix, "src") if os.path.exists(src_dir) and not prefix.startswith( "/usr") and not re.match(r"(?i)c:\\program", prefix): # Started locally, not installed print( "Adding {0} to pythonpath. This is only important when running URH from source." .format(src_dir)) sys.path.insert(0, src_dir) from urh.util import util util.set_windows_lib_path() try: import urh.cythonext.signalFunctions import urh.cythonext.path_creator import urh.cythonext.util except ImportError: if hasattr(sys, "frozen"): print("C++ Extensions not found. Exiting...") sys.exit(1) print("Could not find C++ extensions, trying to build them.") old_dir = os.curdir os.chdir(os.path.join(src_dir, "urh", "cythonext")) from urh.cythonext import build build.main() os.chdir(old_dir) from urh.controller.MainController import MainController from urh import constants if constants.SETTINGS.value("theme_index", 0, int) > 0: os.environ['QT_QPA_PLATFORMTHEME'] = 'fusion' app = QApplication(["URH"] + sys.argv[1:]) app.setWindowIcon(QIcon(":/icons/data/icons/appicon.png")) util.set_icon_theme() constants.SETTINGS.setValue("default_theme", app.style().objectName()) if constants.SETTINGS.value("theme_index", 0, int) > 0: app.setStyle(QStyleFactory.create("Fusion")) if constants.SETTINGS.value("theme_index", 0, int) == 2: palette = QPalette() background_color = QColor(56, 60, 74) text_color = QColor(211, 218, 227).lighter() palette.setColor(QPalette.Window, background_color) palette.setColor(QPalette.WindowText, text_color) palette.setColor(QPalette.Base, background_color) palette.setColor(QPalette.AlternateBase, background_color) palette.setColor(QPalette.ToolTipBase, background_color) palette.setColor(QPalette.ToolTipText, text_color) palette.setColor(QPalette.Text, text_color) palette.setColor(QPalette.Button, background_color) palette.setColor(QPalette.ButtonText, text_color) palette.setColor(QPalette.BrightText, Qt.red) palette.setColor(QPalette.Disabled, QPalette.Text, Qt.darkGray) palette.setColor(QPalette.Disabled, QPalette.ButtonText, Qt.darkGray) palette.setColor(QPalette.Highlight, QColor(200, 50, 0)) palette.setColor(QPalette.HighlightedText, text_color) app.setPalette(palette) main_window = MainController() if sys.platform == "darwin": menu_bar = main_window.menuBar() menu_bar.setNativeMenuBar(False) import multiprocessing as mp mp.set_start_method( "spawn") # prevent errors with forking in native RTL-SDR backend elif sys.platform == "win32": # Ensure we get the app icon in windows taskbar import ctypes ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID( "jopohl.urh") import multiprocessing as mp mp.freeze_support() main_window.showMaximized() # main_window.setFixedSize(1920, 1080 - 30) # Youtube # use system colors for painting widget = QWidget() bgcolor = widget.palette().color(QPalette.Background) fgcolor = widget.palette().color(QPalette.Foreground) selection_color = widget.palette().color(QPalette.Highlight) constants.BGCOLOR = bgcolor constants.LINECOLOR = fgcolor constants.SELECTION_COLOR = selection_color constants.SEND_INDICATOR_COLOR = selection_color if "autoclose" in sys.argv[1:]: # Autoclose after 1 second, this is useful for automated testing timer = QTimer() timer.timeout.connect(app.quit) timer.start(1000) return_code = app.exec_() app.closeAllWindows() os._exit( return_code ) # sys.exit() is not enough on Windows and will result in crash on exit
dev_conf = self.selected_device_conf try: self.ui.sliderBasebandGain.setValue( dev_conf[self.rx_tx_prefix + "baseband_gain"].index(value)) except (ValueError, KeyError): pass @pyqtSlot() def cb_device_current_index_changed(self): if self.device is not None: self.device.free_data() self.selected_device_changed.emit() dev_name = self.ui.cbDevice.currentText() self.set_device_ui_items_visibility(dev_name) self.set_gain_defaults() self.sync_gain_sliders() self.set_bandwidth_status() if __name__ == '__main__': from PyQt5.QtWidgets import QApplication from urh.controller.MainController import MainController app = QApplication([]) mc = MainController() widget = DeviceSettingsWidget(mc.project_manager, is_tx=False) widget.show() app.exec_()
def setUp(self): ProtocolSniffer.BUFFER_SIZE_MB = 0.5 self.form = MainController() self.form.ui.actionAuto_detect_new_signals.setChecked(False) if self.SHOW: self.form.show()
def setUp(self): self.form = MainController() if self.SHOW: self.form.show()