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())
Exemple #3
0
    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)
Exemple #4
0
 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)
Exemple #5
0
 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)
Exemple #7
0
    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
Exemple #8
0
 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
Exemple #9
0
    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)
Exemple #11
0
 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
Exemple #13
0
    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)
Exemple #14
0
    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)
Exemple #15
0
    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)
Exemple #16
0
 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
Exemple #17
0
    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"
Exemple #18
0
 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)
Exemple #20
0
    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)
Exemple #21
0
    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)
Exemple #23
0
    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)
Exemple #24
0
    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
        ]
Exemple #25
0
    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()
Exemple #27
0
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
Exemple #28
0
        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()
Exemple #30
0
 def setUp(self):
     self.form = MainController()
     if self.SHOW:
         self.form.show()