diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2016-09-18 16:57:41 -0600 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2016-09-19 04:17:40 -0600 |
commit | 577cd09c42a02c7824bbd6f6c3a76c53dc114658 (patch) | |
tree | b3ba3ec976452e79b03ad7dd376484d2e5b2f8a1 | |
parent | 824017be176e46655215c7bbfe3a4d0adff8aed4 (diff) |
grc: refactor: make gr.prefs() optional (for testing)
-rw-r--r-- | grc/core/Config.py | 28 | ||||
-rw-r--r-- | grc/core/Platform.py | 2 | ||||
-rw-r--r-- | grc/gui/ActionHandler.py | 7 | ||||
-rw-r--r-- | grc/gui/Config.py | 23 | ||||
-rwxr-xr-x | grc/main.py | 2 |
5 files changed, 40 insertions, 22 deletions
diff --git a/grc/core/Config.py b/grc/core/Config.py index b65a421b7a..3455a382c1 100644 --- a/grc/core/Config.py +++ b/grc/core/Config.py @@ -18,6 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA """ from __future__ import absolute_import + import os from os.path import expanduser, normpath, expandvars, exists @@ -25,16 +26,14 @@ from . import Constants class Config(object): - - key = 'grc' name = 'GNU Radio Companion (no gui)' license = __doc__.strip() website = 'http://gnuradio.org' hier_block_lib_dir = os.environ.get('GRC_HIER_PATH', Constants.DEFAULT_HIER_BLOCK_LIB_DIR) - def __init__(self, prefs_file, version, version_parts=None): - self.prefs = prefs_file + def __init__(self, version, version_parts=None, prefs=None): + self._gr_prefs = prefs if prefs else DummyPrefs() self.version = version self.version_parts = version_parts or version[1:].split('-', 1)[0].split('.')[:3] @@ -45,8 +44,8 @@ class Config(object): paths_sources = ( self.hier_block_lib_dir, os.environ.get('GRC_BLOCKS_PATH', ''), - self.prefs.get_string('grc', 'local_blocks_path', ''), - self.prefs.get_string('grc', 'global_blocks_path', ''), + self._gr_prefs.get_string('grc', 'local_blocks_path', ''), + self._gr_prefs.get_string('grc', 'global_blocks_path', ''), ) collected_paths = sum((paths.split(path_list_sep) @@ -61,7 +60,22 @@ class Config(object): def default_flow_graph(self): user_default = ( os.environ.get('GRC_DEFAULT_FLOW_GRAPH') or - self.prefs.get_string('grc', 'default_flow_graph', '') or + self._gr_prefs.get_string('grc', 'default_flow_graph', '') or os.path.join(self.hier_block_lib_dir, 'default_flow_graph.grc') ) return user_default if exists(user_default) else Constants.DEFAULT_FLOW_GRAPH + + +class DummyPrefs(object): + + def get_string(self, category, item, default): + return str(default) + + def set_string(self, category, item, value): + pass + + def get_long(self, category, item, default): + return int(default) + + def save(self): + pass diff --git a/grc/core/Platform.py b/grc/core/Platform.py index 7ef944b3aa..1e43271dc2 100644 --- a/grc/core/Platform.py +++ b/grc/core/Platform.py @@ -72,7 +72,7 @@ class Platform(Element): self.build_block_library() def __str__(self): - return 'Platform - {}({})'.format(self.config.key, self.config.name) + return 'Platform - {}'.format(self.config.name) @staticmethod def find_file_in_paths(filename, paths, cwd): diff --git a/grc/gui/ActionHandler.py b/grc/gui/ActionHandler.py index 42822adfd4..b10737d4db 100644 --- a/grc/gui/ActionHandler.py +++ b/grc/gui/ActionHandler.py @@ -514,12 +514,7 @@ class ActionHandler: file_paths = FileDialogs.OpenQSS(main, self.platform.config.install_prefix + '/share/gnuradio/themes/').run() if file_paths: - try: - prefs = self.platform.config.prefs - prefs.set_string("qtgui", "qss", file_paths[0]) - prefs.save() - except Exception as e: - Messages.send("Failed to save QSS preference: " + str(e)) + self.platform.config.default_qss_theme = file_paths[0] elif action == Actions.FLOW_GRAPH_CLOSE: main.close_page() elif action == Actions.FLOW_GRAPH_SAVE: diff --git a/grc/gui/Config.py b/grc/gui/Config.py index b6556ad724..0f40e06fce 100644 --- a/grc/gui/Config.py +++ b/grc/gui/Config.py @@ -40,21 +40,21 @@ class Config(_Config): @property def editor(self): - return self.prefs.get_string('grc', 'editor', '') + return self._gr_prefs.get_string('grc', 'editor', '') @editor.setter def editor(self, value): - self.prefs.get_string('grc', 'editor', value) - self.prefs.save() + self._gr_prefs.get_string('grc', 'editor', value) + self._gr_prefs.save() @property def xterm_executable(self): - return self.prefs.get_string('grc', 'xterm_executable', 'xterm') + return self._gr_prefs.get_string('grc', 'xterm_executable', 'xterm') @property def default_canvas_size(self): try: # ugly, but matches current code style - raw = self.prefs.get_string('grc', 'canvas_default_size', '1280, 1024') + raw = self._gr_prefs.get_string('grc', 'canvas_default_size', '1280, 1024') value = tuple(int(x.strip('() ')) for x in raw.split(',')) if len(value) != 2 or not all(300 < x < 4096 for x in value): raise Exception() @@ -66,8 +66,8 @@ class Config(_Config): @property def font_size(self): try: # ugly, but matches current code style - font_size = self.prefs.get_long('grc', 'canvas_font_size', - Constants.DEFAULT_FONT_SIZE) + font_size = self._gr_prefs.get_long('grc', 'canvas_font_size', + Constants.DEFAULT_FONT_SIZE) if font_size <= 0: raise Exception() except: @@ -75,3 +75,12 @@ class Config(_Config): print("Error: invalid 'canvas_font_size' setting.", file=sys.stderr) return font_size + + @property + def default_qss_theme(self): + return self._gr_prefs.get_string('qtgui', 'qss', '') + + @default_qss_theme.setter + def default_qss_theme(self, value): + self._gr_prefs.set_string("qtgui", "qss", value) + self._gr_prefs.save()
\ No newline at end of file diff --git a/grc/main.py b/grc/main.py index dc84e166d5..40a61a299f 100755 --- a/grc/main.py +++ b/grc/main.py @@ -50,9 +50,9 @@ def main(): pass platform = Platform( - prefs_file=gr.prefs(), version=gr.version(), version_parts=(gr.major_version(), gr.api_version(), gr.minor_version()), + prefs=gr.prefs(), install_prefix=gr.prefix() ) ActionHandler(args.flow_graphs, platform) |