summaryrefslogtreecommitdiff
path: root/grc
diff options
context:
space:
mode:
authorSebastian Koslowski <koslowski@kit.edu>2016-09-18 16:57:41 -0600
committerSebastian Koslowski <koslowski@kit.edu>2016-09-19 04:17:40 -0600
commit577cd09c42a02c7824bbd6f6c3a76c53dc114658 (patch)
treeb3ba3ec976452e79b03ad7dd376484d2e5b2f8a1 /grc
parent824017be176e46655215c7bbfe3a4d0adff8aed4 (diff)
grc: refactor: make gr.prefs() optional (for testing)
Diffstat (limited to 'grc')
-rw-r--r--grc/core/Config.py28
-rw-r--r--grc/core/Platform.py2
-rw-r--r--grc/gui/ActionHandler.py7
-rw-r--r--grc/gui/Config.py23
-rwxr-xr-xgrc/main.py2
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)