summaryrefslogtreecommitdiff
path: root/grc/src/gui/Preferences.py
diff options
context:
space:
mode:
Diffstat (limited to 'grc/src/gui/Preferences.py')
-rw-r--r--grc/src/gui/Preferences.py142
1 files changed, 45 insertions, 97 deletions
diff --git a/grc/src/gui/Preferences.py b/grc/src/gui/Preferences.py
index d6533586f..1d89920dd 100644
--- a/grc/src/gui/Preferences.py
+++ b/grc/src/gui/Preferences.py
@@ -17,122 +17,70 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
"""
-from .. platforms.base.Constants import FLOW_GRAPH_DTD
-from .. utils import ParseXML
-import Messages
+import ConfigParser
import os
-##Access the loaded preferences in this module
-_prefs = list()
-def _set_prefs(prefs): _prefs.append(prefs)
-def _get_prefs(): return _prefs[0]
-def load(platform): _Preferences(platform)
-def save(): _get_prefs().save()
-def get_preferences(): return _get_prefs().get_preferences()
+_platform = None
+_config_parser = ConfigParser.ConfigParser()
-class _Preferences(object):
+def file_extension(): return '.'+_platform.get_key()
+def _prefs_file(): return os.path.join(os.path.expanduser('~'), file_extension())
- def __init__(self, platform):
- #make self available to module
- _set_prefs(self)
- #get prefs block
- self._prefs_block = platform.get_prefs_block()
- #prefs file path
- self._prefs_file_path = os.path.join(os.path.expanduser('~'), self._prefs_block.get_param('prefs_file').get_value())
- #load
- try:
- ParseXML.validate_dtd(self._prefs_file_path, FLOW_GRAPH_DTD)
- n = ParseXML.from_file(self._prefs_file_path)
- self._prefs_block.import_data(n['block'])
- except: Messages.send_fail_load_preferences(self._prefs_file_path)
- ##all params
- self.window_prefix_param = self._prefs_block.get_param('window_prefix')
- self.snap_to_grid_param = self._prefs_block.get_param('snap_to_grid')
- self.grid_size_param = self._prefs_block.get_param('grid_size')
- self.show_grid_param = self._prefs_block.get_param('show_grid')
- self.reports_window_position_param = self._prefs_block.get_param('reports_window_position')
- self.blocks_window_position_param = self._prefs_block.get_param('blocks_window_position')
- self.restore_files_param = self._prefs_block.get_param('restore_files')
- self.window_size_param = self._prefs_block.get_param('window_size')
- self.file_open_param = self._prefs_block.get_param('file_open')
- self.files_open_param = self._prefs_block.get_param('files_open')
- self.show_params_param = self._prefs_block.get_param('show_params')
-
- def save(self):
- try: ParseXML.to_file({'block': self._prefs_block.export_data()}, self._prefs_file_path)
- except IOError: Messages.send_fail_save_preferences(self._prefs_file_path)
-
- def get_preferences(self):
- ##Preferences: title, notes, params
- return [
- (
- 'Grid',
- '''
-Show grid will draw a square grid onto the flow graph with grid points separated by grid size pixels. \
-Snap to Grid forces the upper right corner of the signal block to align with a grid point.
-''',
- [self.snap_to_grid_param, self.grid_size_param, self.show_grid_param],
- ),
- (
- 'Appearance',
- '''
-Show or hide all paramater labels in the signal blocks.
-''',
- [self.show_params_param],
- ),
- (
- 'Misc',
- '''
-Restore previously opened files on start-up.
-''',
- [self.restore_files_param],
- ),
- ]
+def load(platform):
+ global _platform
+ _platform = platform
+ #create sections
+ _config_parser.add_section('main')
+ _config_parser.add_section('files_open')
+ try: _config_parser.read(_prefs_file())
+ except: pass
+def save():
+ try: _config_parser.write(open(_prefs_file(), 'w'))
+ except: pass
###########################################################################
# Special methods for specific program functionalities
###########################################################################
-def window_prefix():
- return _get_prefs().window_prefix_param.get_value()
-
-def window_size(size=None):
- if size: _get_prefs().window_size_param.set_value(size)
+def main_window_size(size=None):
+ if size is not None:
+ _config_parser.set('main', 'main_window_width', size[0])
+ _config_parser.set('main', 'main_window_height', size[1])
else:
- try: return eval(_get_prefs().window_size_param.get_value())
- except: return (-1, -1)
-
-def restore_files():
- return _get_prefs().restore_files_param.get_value() == 'yes'
+ try: return (
+ _config_parser.getint('main', 'main_window_width'),
+ _config_parser.getint('main', 'main_window_height'),
+ )
+ except: return (1, 1)
def file_open(file=None):
- if file is not None: _get_prefs().file_open_param.set_value(file)
- else: return _get_prefs().file_open_param.get_value()
+ if file is not None: _config_parser.set('main', 'file_open', file)
+ else:
+ try: return _config_parser.get('main', 'file_open')
+ except: return ''
def files_open(files=None):
- if files is not None: _get_prefs().files_open_param.set_value('\n'.join(files))
- else: return _get_prefs().files_open_param.get_value().split('\n')
+ if files is not None:
+ _config_parser.remove_section('files_open') #clear section
+ _config_parser.add_section('files_open')
+ for i, file in enumerate(files):
+ _config_parser.set('files_open', 'file_open_%d'%i, file)
+ else:
+ files = list()
+ i = 0
+ while True:
+ try: files.append(_config_parser.get('files_open', 'file_open_%d'%i))
+ except: return files
+ i = i + 1
def reports_window_position(pos=None):
- if pos is not None: _get_prefs().reports_window_position_param.set_value('%d'%pos)
+ if pos is not None: _config_parser.set('main', 'reports_window_position', pos)
else:
- try: return int(_get_prefs().reports_window_position_param.get_value()) or 1 #greater than 0
+ try: return _config_parser.getint('main', 'reports_window_position') or 1 #greater than 0
except: return -1
def blocks_window_position(pos=None):
- if pos is not None: _get_prefs().blocks_window_position_param.set_value('%d'%pos)
+ if pos is not None: _config_parser.set('main', 'blocks_window_position', pos)
else:
- try: return int(_get_prefs().blocks_window_position_param.get_value()) or 1 #greater than 0
+ try: return _config_parser.getint('main', 'blocks_window_position') or 1 #greater than 0
except: return -1
-
-def get_grid_size():
- return int(_get_prefs().grid_size_param.get_value())
-
-def snap_to_grid():
- return _get_prefs().snap_to_grid_param.get_value() == 'on'
-
-def show_grid():
- return _get_prefs().show_grid_param.get_value() == 'show'
-
-def show_params():
- return _get_prefs().show_params_param.get_value() == 'show'