Skip to content

Commit

Permalink
centralize setting operations + rename constants.py->settings.py (jop…
Browse files Browse the repository at this point in the history
  • Loading branch information
jopohl authored Jan 7, 2020
1 parent 2304f3d commit be1aa9c
Show file tree
Hide file tree
Showing 99 changed files with 624 additions and 656 deletions.
12 changes: 7 additions & 5 deletions data/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ jobs:
python.version: '3.6'
Python37:
python.version: '3.7'
Python38:
python.version: '3.8'

steps:
- task: UsePythonVersion@0
Expand All @@ -25,8 +27,8 @@ jobs:
- script: |
python -m pip install --upgrade pip
pip install -r data/requirements.txt
sudo apt-get install libhackrf-dev librtlsdr-dev xvfb
pip install twine setuptools wheel pytest pytest-xvfb pytest-cov pytest-xdist
sudo apt-get install libhackrf-dev librtlsdr-dev xvfb libxkbcommon-x11-0 x11-utils
pip install twine setuptools wheel pytest pytest-xvfb pytest-cov pytest-faulthandler
python -c "import tempfile, os; open(os.path.join(tempfile.gettempdir(), 'urh_releasing'), 'w').close()"
displayName: 'Install dependencies'
Expand Down Expand Up @@ -65,7 +67,7 @@ jobs:
displayName: 'Generate coverage report'
condition: eq(variables['python.version'], '3.7')
- script: pytest --junitxml=junit/test-results.xml tests
- script: pytest -s -v --junitxml=junit/test-results.xml tests
displayName: 'Run pytest without coverage'
condition: ne(variables['python.version'], '3.7')

Expand Down Expand Up @@ -188,7 +190,7 @@ jobs:
addChangeLog: true

- script: pytest -s -v --junitxml=junit/test-results.xml tests
displayName: 'Run pytest'
displayName: 'Run pytest on windows'

- task: PublishTestResults@2
condition: succeededOrFailed()
Expand Down Expand Up @@ -292,7 +294,7 @@ jobs:
TWINE_REPOSITORY_URL: "https://upload.pypi.org/legacy/"

- script: pytest -s -v --junitxml=junit/test-results.xml tests
displayName: 'Run pytest'
displayName: 'Run pytest on macOS'

- task: PublishTestResults@2
condition: succeededOrFailed()
Expand Down
4 changes: 1 addition & 3 deletions data/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
numpy>=1.9; sys_platform != 'win32'
numpy>=1.9,!=1.16.0; sys_platform == 'win32'
pyqt5!=5.12.3,!=5.13.1,!=5.14.0,!=5.14.1; sys_platform != 'win32' and sys_platform != 'linux'
pyqt5!=5.11.1,!=5.11.2,!=5.11.3,!=5.12.3,!=5.13.0,!=5.14.0,!=5.14.1; sys_platform == 'win32'
pyqt5!=5.12,!=5.12.1,!=5.12.2,!=5.12.3,!=5.13.0,!=5.13.1,!=5.13.2,!=5.14.0,!=5.14.1; sys_platform == 'linux'
pyqt5
psutil
pyzmq
cython
2 changes: 1 addition & 1 deletion src/urh/cli/urh_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
from urh.dev.VirtualDevice import VirtualDevice
from urh.signalprocessing.ProtocolSniffer import ProtocolSniffer
from urh.util import Logger
from urh.constants import PAUSE_SEP
from urh.settings import PAUSE_SEP
from urh.util.Logger import logger
from urh.signalprocessing.Encoding import Encoding
from urh.signalprocessing.ProtocolAnalyzer import ProtocolAnalyzer
Expand Down
6 changes: 3 additions & 3 deletions src/urh/colormaps.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import numpy as np

from urh import constants
from urh import settings

magma = [[0.001462, 0.000466, 0.013866],
[0.002258, 0.001295, 0.018331],
Expand Down Expand Up @@ -1039,14 +1039,14 @@


def read_selected_colormap_name_from_settings() -> str:
selected = constants.SETTINGS.value("spectrogram_colormap", defaultValue=default_colormap, type=str)
selected = settings.read("spectrogram_colormap", default_value=default_colormap, type=str)
if selected not in maps.keys():
selected = default_colormap
return selected


def write_selected_colormap_to_settings(colormap_name: str):
constants.SETTINGS.setValue("spectrogram_colormap", colormap_name)
settings.write("spectrogram_colormap", colormap_name)


def choose_colormap(name: str):
Expand Down
9 changes: 4 additions & 5 deletions src/urh/controller/CompareFrameController.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import locale
import math
import os
import traceback
from collections import defaultdict
from datetime import datetime

Expand All @@ -10,9 +9,8 @@
QModelIndex
from PyQt5.QtGui import QContextMenuEvent, QIcon
from PyQt5.QtWidgets import QMessageBox, QAbstractItemView, QUndoStack, QMenu, QWidget, QHeaderView
from urh.util.Errors import Errors

from urh import constants
from urh import settings
from urh.awre import AutoAssigner
from urh.controller.dialogs.MessageTypeDialog import MessageTypeDialog
from urh.controller.dialogs.ProtocolLabelDialog import ProtocolLabelDialog
Expand All @@ -32,6 +30,7 @@
from urh.ui.delegates.MessageTypeButtonDelegate import MessageTypeButtonDelegate
from urh.ui.ui_analysis import Ui_TabAnalysis
from urh.util import FileOperator, util
from urh.util.Errors import Errors
from urh.util.Formatter import Formatter
from urh.util.Logger import logger
from urh.util.ProjectManager import ProjectManager
Expand Down Expand Up @@ -533,7 +532,7 @@ def set_shown_protocols(self):
# self.protocol_undo_stack.clear()
self.proto_analyzer.messages[:] = []
self.rows_for_protocols.clear()
align_labels = constants.SETTINGS.value("align_labels", True, bool)
align_labels = settings.read("align_labels", True, bool)
line = 0
first_msg_indices = []
prev_line = 0
Expand Down Expand Up @@ -602,7 +601,7 @@ def set_shown_protocols(self):
pass

for line in first_msg_indices:
self.ui.tblViewProtocol.setRowHeight(line, constants.SEPARATION_ROW_HEIGHT)
self.ui.tblViewProtocol.setRowHeight(line, settings.SEPARATION_ROW_HEIGHT)

self.protocol_model.first_messages = first_msg_indices[:]

Expand Down
5 changes: 2 additions & 3 deletions src/urh/controller/GeneratorTabController.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import locale
import traceback

import numpy
import numpy as np
from PyQt5.QtCore import Qt, pyqtSlot
from PyQt5.QtGui import QFontMetrics
from PyQt5.QtWidgets import QInputDialog, QWidget, QUndoStack, QApplication

from urh import constants
from urh import settings
from urh.controller.CompareFrameController import CompareFrameController
from urh.controller.dialogs.ContinuousSendDialog import ContinuousSendDialog
from urh.controller.dialogs.FuzzingDialog import FuzzingDialog
Expand Down Expand Up @@ -267,7 +266,7 @@ def prepare_modulation_dialog(self) -> (ModulatorDialog, Message):
return modulator_dialog, selected_message

def set_modulation_profile_status(self):
visible = constants.SETTINGS.value("multiple_modulations", False, bool)
visible = settings.read("multiple_modulations", False, bool)
self.ui.cBoxModulations.setVisible(visible)

def init_rfcat_plugin(self):
Expand Down
41 changes: 18 additions & 23 deletions src/urh/controller/MainController.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,28 @@
import copy
import os
import traceback

from PyQt5.QtCore import QDir, Qt, pyqtSlot, QTimer
from PyQt5.QtGui import QIcon, QCloseEvent, QKeySequence
from PyQt5.QtWidgets import QMainWindow, QUndoGroup, QActionGroup, QHeaderView, QAction, QFileDialog, \
QMessageBox, QApplication, qApp
from PyQt5.QtWidgets import QMainWindow, QUndoGroup, QActionGroup, QHeaderView, QAction, QMessageBox, QApplication, qApp

from urh import constants, version
from urh.controller.dialogs.CSVImportDialog import CSVImportDialog
from urh import settings, version
from urh.controller.CompareFrameController import CompareFrameController
from urh.controller.dialogs.DecoderDialog import DecoderDialog
from urh.controller.GeneratorTabController import GeneratorTabController
from urh.controller.SignalTabController import SignalTabController
from urh.controller.SimulatorTabController import SimulatorTabController
from urh.controller.dialogs.CSVImportDialog import CSVImportDialog
from urh.controller.dialogs.DecoderDialog import DecoderDialog
from urh.controller.dialogs.OptionsDialog import OptionsDialog
from urh.controller.dialogs.ProjectDialog import ProjectDialog
from urh.controller.dialogs.ProtocolSniffDialog import ProtocolSniffDialog
from urh.controller.dialogs.ReceiveDialog import ReceiveDialog
from urh.controller.widgets.SignalFrame import SignalFrame
from urh.controller.SignalTabController import SignalTabController
from urh.controller.SimulatorTabController import SimulatorTabController
from urh.controller.dialogs.SpectrumDialogController import SpectrumDialogController
from urh.controller.widgets.SignalFrame import SignalFrame
from urh.models.FileFilterProxyModel import FileFilterProxyModel
from urh.models.FileIconProvider import FileIconProvider
from urh.models.FileSystemModel import FileSystemModel
from urh.models.ParticipantLegendListModel import ParticipantLegendListModel
from urh.plugins.PluginManager import PluginManager
from urh.signalprocessing.Message import Message
from urh.signalprocessing.ProtocolAnalyzer import ProtocolAnalyzer
from urh.signalprocessing.Signal import Signal
from urh.ui.ui_main import Ui_MainWindow
Expand Down Expand Up @@ -82,8 +79,7 @@ def __init__(self, *args):
self.cancel_action.setIcon(QIcon.fromTheme("dialog-cancel"))
self.addAction(self.cancel_action)

self.ui.actionAuto_detect_new_signals.setChecked(constants.SETTINGS.value("auto_detect_new_signals",
True, bool))
self.ui.actionAuto_detect_new_signals.setChecked(settings.read("auto_detect_new_signals", True, bool))

self.participant_legend_model = ParticipantLegendListModel(self.project_manager.participants)
self.ui.listViewParticipants.setModel(self.participant_legend_model)
Expand All @@ -105,7 +101,7 @@ def __init__(self, *args):

self.recentFileActionList = []
self.create_connects()
self.init_recent_file_action_list(constants.SETTINGS.value("recentFiles", []))
self.init_recent_file_action_list(settings.read("recentFiles", [], list))

self.filemodel = FileSystemModel(self)
path = QDir.homePath()
Expand Down Expand Up @@ -144,15 +140,15 @@ def __init__(self, *args):
self.ui.splitter.setSizes([0, 1])
self.refresh_main_menu()

self.apply_default_view(constants.SETTINGS.value('default_view', type=int))
self.apply_default_view(settings.read('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)
self.ui.actionClose_project.setVisible(False)

def __set_non_project_warning_visibility(self):
show = constants.SETTINGS.value("show_non_project_warning", True, bool) and not self.project_manager.project_loaded
show = settings.read("show_non_project_warning", True, bool) and not self.project_manager.project_loaded
self.ui.labelNonProjectMode.setVisible(show)

def create_connects(self):
Expand Down Expand Up @@ -230,7 +226,7 @@ def create_connects(self):
self.ui.labelNonProjectMode.linkActivated.connect(self.on_label_non_project_mode_link_activated)

self.ui.menuFile.addSeparator()
for i in range(constants.MAX_RECENT_FILE_NR):
for i in range(settings.MAX_RECENT_FILE_NR):
recent_file_action = QAction(self)
recent_file_action.setVisible(False)
recent_file_action.triggered.connect(self.on_open_recent_action_triggered)
Expand Down Expand Up @@ -398,7 +394,7 @@ def add_files(self, filepaths, group_id=0, enforce_sample_rate=None):
elif filename.endswith(".csv"):
self.__import_csv(filename, group_id)
continue
elif os.path.basename(filename) == constants.PROJECT_FILE:
elif os.path.basename(filename) == settings.PROJECT_FILE:
self.project_manager.set_project_folder(os.path.split(filename)[0])
else:
self.add_signalfile(filename, group_id, enforce_sample_rate=enforce_sample_rate)
Expand Down Expand Up @@ -508,16 +504,15 @@ def adjust_for_current_file(self, file_path):
if file_path in FileOperator.archives.keys():
file_path = copy.copy(FileOperator.archives[file_path])

settings = constants.SETTINGS
recent_file_paths = settings.value("recentFiles", [])
recent_file_paths = settings.read("recentFiles", [], list)
recent_file_paths = [] if recent_file_paths is None else recent_file_paths # check None for OSX
recent_file_paths = [p for p in recent_file_paths if p != file_path and p is not None and os.path.exists(p)]
recent_file_paths.insert(0, file_path)
recent_file_paths = recent_file_paths[:constants.MAX_RECENT_FILE_NR]
recent_file_paths = recent_file_paths[:settings.MAX_RECENT_FILE_NR]

self.init_recent_file_action_list(recent_file_paths)

settings.setValue("recentFiles", recent_file_paths)
settings.write("recentFiles", recent_file_paths)

def init_recent_file_action_list(self, recent_file_paths: list):
for i in range(len(self.recentFileActionList)):
Expand Down Expand Up @@ -877,7 +872,7 @@ def on_import_samples_from_csv_action_triggered(self):

@pyqtSlot(bool)
def on_auto_detect_new_signals_action_triggered(self, checked: bool):
constants.SETTINGS.setValue("auto_detect_new_signals", bool(checked))
settings.write("auto_detect_new_signals", bool(checked))

def __import_csv(self, file_name, group_id=0):
def on_data_imported(complex_file, sample_rate):
Expand All @@ -892,7 +887,7 @@ def on_data_imported(complex_file, sample_rate):
def on_label_non_project_mode_link_activated(self, link: str):
if link == "dont_show_non_project_again":
self.ui.labelNonProjectMode.hide()
constants.SETTINGS.setValue("show_non_project_warning", False)
settings.write("show_non_project_warning", False)
elif link == "open_new_project_dialog":
self.on_new_project_action_triggered()

Expand Down
12 changes: 5 additions & 7 deletions src/urh/controller/SignalTabController.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
from PyQt5.QtCore import QPoint, pyqtSignal, pyqtSlot
from PyQt5.QtWidgets import QWidget, QSizePolicy, QUndoStack, QCheckBox, QMessageBox

from urh import constants

from urh import settings
from urh.controller.widgets.SignalFrame import SignalFrame
from urh.signalprocessing.Signal import Signal
from urh.ui.ui_tab_interpretation import Ui_Interpretation
Expand Down Expand Up @@ -81,7 +80,7 @@ def add_signal_frame(self, proto_analyzer, index=-1):
self.ui.splitter.insertWidget(index, sig_frame)
sig_frame.blockSignals(False)

default_view = constants.SETTINGS.value('default_view', 0, int)
default_view = settings.read('default_view', 0, int)
sig_frame.ui.cbProtoView.setCurrentIndex(default_view)

return sig_frame
Expand Down Expand Up @@ -111,7 +110,7 @@ def __set_getting_started_status(self, getting_started: bool):
self.ui.splitter.addWidget(w)

def __create_connects_for_signal_frame(self, signal_frame: SignalFrame):
signal_frame.hold_shift = constants.SETTINGS.value('hold_shift_to_drag', True, type=bool)
signal_frame.hold_shift = settings.read('hold_shift_to_drag', True, type=bool)
signal_frame.drag_started.connect(self.frame_dragged)
signal_frame.frame_dropped.connect(self.frame_dropped)
signal_frame.files_dropped.connect(self.on_files_dropped)
Expand All @@ -126,9 +125,8 @@ def save_all(self):
if self.num_frames == 0:
return

settings = constants.SETTINGS
try:
not_show = settings.value('not_show_save_dialog', type=bool, defaultValue=False)
not_show = settings.read('not_show_save_dialog', False, type=bool)
except TypeError:
not_show = False

Expand All @@ -142,7 +140,7 @@ def save_all(self):

reply = msg_box.exec()
not_show_again = cb.isChecked()
settings.setValue("not_show_save_dialog", not_show_again)
settings.write("not_show_save_dialog", not_show_again)
self.not_show_again_changed.emit()

if reply != QMessageBox.Yes:
Expand Down
Loading

0 comments on commit be1aa9c

Please sign in to comment.