""" Copyright 2008 Free Software Foundation, Inc. This file is part of GNU Radio GNU Radio Companion is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. GNU Radio Companion is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License 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 HOME_DIR, FLOW_GRAPH_DTD from .. utils import ParseXML import Messages 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() class _Preferences(object): 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(HOME_DIR, 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.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.show_reports_param = self._prefs_block.get_param('show_reports') 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 the reports window at the bottom of the main window. Show or hide all paramater labels in the signal blocks. ''', [self.show_reports_param, self.show_params_param], ), ( 'Misc', ''' Restore previously opened files on start-up. ''', [self.restore_files_param], ), ] ########################################################################### # Special methods for specific program functionalities ########################################################################### def window_size(size=None): if size: _get_prefs().window_size_param.set_value(size) 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' 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() 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') def show_reports_window(): return _get_prefs().show_reports_param.get_value() == 'show' 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'