Preferences.py

Go to the documentation of this file.
00001 """
00002 Copyright 2008 Free Software Foundation, Inc.
00003 This file is part of GNU Radio
00004 
00005 GNU Radio Companion is free software; you can redistribute it and/or
00006 modify it under the terms of the GNU General Public License
00007 as published by the Free Software Foundation; either version 2
00008 of the License, or (at your option) any later version.
00009 
00010 GNU Radio Companion is distributed in the hope that it will be useful,
00011 but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 GNU General Public License for more details.
00014 
00015 You should have received a copy of the GNU General Public License
00016 along with this program; if not, write to the Free Software
00017 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
00018 """
00019 ##@package grc.Preferences
00020 #Holds global paramerences
00021 #@author Josh Blum
00022 
00023 from Constants import HOME_DIR, FLOW_GRAPH_DTD
00024 import ParseXML
00025 import Messages
00026 import os
00027 
00028 ##Access the loaded preferences in this module
00029 _prefs = list()
00030 def _set_prefs(prefs): _prefs.append(prefs)
00031 def _get_prefs(): return _prefs[0]
00032 def load(platform): _Preferences(platform)
00033 def save(): _get_prefs().save()
00034 def get_preferences(): return _get_prefs().get_preferences()
00035 
00036 class _Preferences(object):
00037 
00038         def __init__(self, platform):
00039                 #make self available to module
00040                 _set_prefs(self)
00041                 #get prefs block
00042                 self._prefs_block = platform.get_prefs_block()
00043                 #prefs file path
00044                 self._prefs_file_path = os.path.join(HOME_DIR, self._prefs_block.get_param('prefs_file').get_value())
00045                 #load
00046                 try:
00047                         ParseXML.validate_dtd(self._prefs_file_path, FLOW_GRAPH_DTD)
00048                         n = ParseXML.from_file(self._prefs_file_path)
00049                         self._prefs_block.import_data(n['block'])
00050                 except: Messages.send_fail_load_preferences(self._prefs_file_path)
00051                 ##all params
00052                 self.snap_to_grid_param = self._prefs_block.get_param('snap_to_grid')
00053                 self.grid_size_param = self._prefs_block.get_param('grid_size')
00054                 self.show_grid_param = self._prefs_block.get_param('show_grid')
00055                 self.show_reports_param = self._prefs_block.get_param('show_reports')
00056                 self.restore_files_param = self._prefs_block.get_param('restore_files')
00057                 self.window_size_param = self._prefs_block.get_param('window_size')
00058                 self.file_open_param = self._prefs_block.get_param('file_open')
00059                 self.files_open_param = self._prefs_block.get_param('files_open')
00060                 self.show_params_param = self._prefs_block.get_param('show_params')
00061                 self.show_id_param = self._prefs_block.get_param('show_id')
00062 
00063         def save(self):
00064                 try: ParseXML.to_file({'block': self._prefs_block.export_data()}, self._prefs_file_path)
00065                 except IOError: Messages.send_fail_save_preferences(self._prefs_file_path)
00066 
00067         def get_preferences(self):
00068                 ##Preferences: title, notes, params
00069                 return [
00070                         (
00071                                 'Grid',
00072                                 '''
00073 Show grid will draw a square grid onto the flow graph with grid points separated by grid size pixels. \
00074 Snap to Grid forces the upper right corner of the signal block to align with a grid point.
00075 ''',
00076                                 [self.snap_to_grid_param, self.grid_size_param, self.show_grid_param],
00077                         ),
00078                         (
00079                                 'Appearance',
00080                                 '''
00081 Show or hide the reports window at the bottom of the main window.
00082 Show or hide all paramater labels in the signal blocks.
00083 Show or hide the ID label in the signal blocks.
00084 ''',
00085                                 [self.show_reports_param, self.show_params_param, self.show_id_param],
00086                         ),
00087                         (
00088                                 'Misc',
00089                                 '''
00090 Restore previously opened files on start-up.
00091 ''',
00092                                 [self.restore_files_param],
00093                         ),
00094                 ]
00095 
00096 ###########################################################################
00097 #       Special methods for specific program functionalities
00098 ###########################################################################
00099 
00100 def window_size(size=None):
00101         if size: _get_prefs().window_size_param.set_value(size)
00102         else:
00103                 try: return eval(_get_prefs().window_size_param.get_value())
00104                 except: return (-1, -1)
00105 
00106 def restore_files():
00107         return _get_prefs().restore_files_param.get_value() == 'yes'
00108 
00109 def file_open(file=None):
00110         if file is not None: _get_prefs().file_open_param.set_value(file)
00111         else: return _get_prefs().file_open_param.get_value()
00112 
00113 def files_open(files=None):
00114         if files is not None: _get_prefs().files_open_param.set_value('\n'.join(files))
00115         else: return _get_prefs().files_open_param.get_value().split('\n')
00116 
00117 def show_reports_window():
00118         return _get_prefs().show_reports_param.get_value() == 'show'
00119 
00120 def get_grid_size():
00121         return int(_get_prefs().grid_size_param.get_value())
00122 
00123 def snap_to_grid():
00124         return _get_prefs().snap_to_grid_param.get_value() == 'on'
00125 
00126 def show_grid():
00127         return _get_prefs().show_grid_param.get_value() == 'show'
00128 
00129 def show_params():
00130         return _get_prefs().show_params_param.get_value() == 'show'
00131 
00132 def show_id():
00133         return _get_prefs().show_id_param.get_value() == 'show'
00134 

Generated on Sat Aug 23 02:00:11 2008 for GNU Radio Companion by  doxygen 1.5.4