commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r7754 - in grc/branches/grc_reloaded: data notes src/g


From: jblum
Subject: [Commit-gnuradio] r7754 - in grc/branches/grc_reloaded: data notes src/grc src/grc/elements src/grc/gui src/grc/gui/elements src/grc/platforms/gnuradio_python/blocks
Date: Wed, 20 Feb 2008 12:22:20 -0700 (MST)

Author: jblum
Date: 2008-02-20 12:22:19 -0700 (Wed, 20 Feb 2008)
New Revision: 7754

Added:
   
grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/blocks/preferences.xml
Removed:
   grc/branches/grc_reloaded/data/flow_graph.grc.dtd
   grc/branches/grc_reloaded/data/preferences.grc.dtd
Modified:
   grc/branches/grc_reloaded/notes/todo.txt
   grc/branches/grc_reloaded/src/grc/ActionHandler.py
   grc/branches/grc_reloaded/src/grc/Preferences.py
   grc/branches/grc_reloaded/src/grc/elements/Block.py
   grc/branches/grc_reloaded/src/grc/elements/FlowGraph.py
   grc/branches/grc_reloaded/src/grc/gui/Dialogs.py
   grc/branches/grc_reloaded/src/grc/gui/MainWindow.py
   grc/branches/grc_reloaded/src/grc/gui/elements/FlowGraph.py
Log:
restored preferences functionality

Deleted: grc/branches/grc_reloaded/data/flow_graph.grc.dtd

Deleted: grc/branches/grc_reloaded/data/preferences.grc.dtd

Modified: grc/branches/grc_reloaded/notes/todo.txt
===================================================================
--- grc/branches/grc_reloaded/notes/todo.txt    2008-02-20 18:07:12 UTC (rev 
7753)
+++ grc/branches/grc_reloaded/notes/todo.txt    2008-02-20 19:22:19 UTC (rev 
7754)
@@ -1,9 +1,8 @@
 ############ GRC Reloaded: #############
-restore preferences
 reload(usrp) in usrp diagnostics
 generate code
 setup.py for grc
-update dtds
+dtd for saved flow graphs
 
 ############   Blocks to Add:  ####################
 -ofdm (blks2)

Modified: grc/branches/grc_reloaded/src/grc/ActionHandler.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/ActionHandler.py  2008-02-20 18:07:12 UTC 
(rev 7753)
+++ grc/branches/grc_reloaded/src/grc/ActionHandler.py  2008-02-20 19:22:19 UTC 
(rev 7754)
@@ -59,8 +59,7 @@
                Messages.register_messenger(self.main_window.add_report_line)
                Messages.register_messenger(sys.stdout.write)
                Messages.send_init()
-               #flow graph settings    
-               #Preferences.load(self.main_window)     
+               #initialize
                self.init_file_paths = file_paths
                self.handle_states(APPLICATION_INITIALIZE)
                #enter the mainloop             
@@ -165,13 +164,12 @@
                                ABOUT_WINDOW_DISPLAY, 
DATA_TYPES_WINDOW_DISPLAY, HOTKEYS_WINDOW_DISPLAY, MATH_EXPR_WINDOW_DISPLAY,
                                PREFS_WINDOW_DISPLAY, FLOW_GRAPH_SCREEN_CAPTURE,
                        ): get_action_from_name(action).set_sensitive(True)     
        
-                       #TODO if not self.init_file_paths and 
Preferences.restore_files(): self.init_file_paths = Preferences.files_open()
+                       if not self.init_file_paths and 
Preferences.restore_files(): self.init_file_paths = Preferences.files_open()
                        if not self.init_file_paths: self.init_file_paths = ['']
                        for file_path in self.init_file_paths: 
self.main_window.new_page(file_path) #load pages from file paths
                        if not self.get_page(): self.main_window.new_page() 
#ensure that at least a blank page exists
                elif state == APPLICATION_QUIT:
                        if self.main_window.close_pages():
-                               #TODO Preferences.save(self.main_window)
                                gtk.main_quit()
                                exit(0)
                
##############################################################################################

Modified: grc/branches/grc_reloaded/src/grc/Preferences.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/Preferences.py    2008-02-20 18:07:12 UTC 
(rev 7753)
+++ grc/branches/grc_reloaded/src/grc/Preferences.py    2008-02-20 19:22:19 UTC 
(rev 7754)
@@ -17,7 +17,7 @@
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 """
 address@hidden Preferences
-#Holds global preferences
+#Holds global paramerences
 address@hidden Josh Blum
 
 from Constants import *
@@ -25,27 +25,93 @@
 import Messages
 import os
 
+from grc.platforms.gnuradio_python.Platform import Platform
+platform = Platform()
 
+from grc.gui.elements.Platform import Platform
+platform = Platform(platform)
 
+flow_graph = platform.get_new_flow_graph()
+block = flow_graph.get_new_block('preferences')
 
-#from grc.platforms.gnuradio_python.Platform import Platform
+##all params
+snap_to_grid_param = block.get_param('snap_to_grid')
+grid_size_param = block.get_param('grid_size')
+show_grid_param = block.get_param('show_grid')
 
-#platform = Platform()
+show_reports_param = block.get_param('show_reports')
+restore_files_param = block.get_param('restore_files')
 
-#from grc.gui.elements.Platform import Platform
+window_size_param = block.get_param('window_size')
+files_open_param = block.get_param('files_open')
 
-#platform = Platform(platform)
-
-#flow_graph = platform.get_new_flow_graph()
-
-
-
-
-
 ##Preferences: title, notes, params
 PREFERENCES = [
-       ('Test', 'TEST DESC', [
-                       
-               ]
+       (
+               '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.             
+''', 
+               [snap_to_grid_param, grid_size_param, show_grid_param],
        ),
+       (
+               'Misc', 
+               '''
+Show or hide the reports window at the bottom of the main window. \
+Restore open files will open all files that were last open in GRC.
+''', 
+               [show_reports_param, restore_files_param],
+       ),
 ]
+
+def load(window=None):
+       """!
+       Load the preferences from the preferences file.
+       @param window optional flow graph window
+       """
+       try: 
+               n = 
ParseXML.from_xml(ParseXML.from_file(PREFERENCES_FILE_PATH))                
+               block.import_data(n['block'])
+               #set window size
+               try:
+                       size = window_size_param.evaluate()
+                       if window: window.resize(*size)
+               except: pass
+       except: Messages.send_fail_load_preferences()           
+
+def save(window=None):
+       """!
+       Save the preferences to the preferences file.
+       @param window optional flow graph window
+       """
+       if window:
+               size = str(window.get_size())
+               window_size_param.set_value(size)
+       try: ParseXML.to_file(ParseXML.to_xml({'block': block.export_data()}), 
PREFERENCES_FILE_PATH)           
+       except IOError: Messages.send_fail_save_preferences()
+               
+###########################################################################
+#      Special methods for specific program functionalities
+###########################################################################
+       
+def restore_files():
+       return restore_files_param.get_value() == 'yes' 
+       
+def files_open():
+       return files_open_param.get_value().split('\n')
+       
+def save_files_open(files):
+       files_open_param.set_value('\n'.join(files))
+       
+def show_reports_window():
+       return show_reports_param.get_value() == 'show'
+       
+def get_grid_size():
+       return int(grid_size_param.get_value()) 
+       
+def snap_to_grid():
+       return snap_to_grid_param.get_value() == 'on'
+       
+def show_grid():
+       return show_grid_param.get_value() == 'show'

Modified: grc/branches/grc_reloaded/src/grc/elements/Block.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/elements/Block.py 2008-02-20 18:07:12 UTC 
(rev 7753)
+++ grc/branches/grc_reloaded/src/grc/elements/Block.py 2008-02-20 19:22:19 UTC 
(rev 7754)
@@ -191,9 +191,11 @@
                Any param keys that do not exist will be ignored.
                @param n the nested data odict
                """
+               #TODO error msg if key, value not exist
                params_n = Utils.listify(n, 'param')
                for param_n in params_n:
                        key = param_n['key']
                        value = param_n['value']
-                       self.get_param(key).set_value(value)
+                       if key in self.get_param_keys():
+                               self.get_param(key).set_value(value)
                self.validate()

Modified: grc/branches/grc_reloaded/src/grc/elements/FlowGraph.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/elements/FlowGraph.py     2008-02-20 
18:07:12 UTC (rev 7753)
+++ grc/branches/grc_reloaded/src/grc/elements/FlowGraph.py     2008-02-20 
19:22:19 UTC (rev 7754)
@@ -37,7 +37,9 @@
                #hold connections and blocks
                self._elements = list()
                #initialize
-               Element.__init__(self, platform)        
+               Element.__init__(self, platform)
+               #inital blank import
+               self.import_data({'flow_graph': {}})
                
        def __str__(self): return 'FlowGraph - "%s"'%self.get_option('name')
        

Modified: grc/branches/grc_reloaded/src/grc/gui/Dialogs.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/gui/Dialogs.py    2008-02-20 18:07:12 UTC 
(rev 7753)
+++ grc/branches/grc_reloaded/src/grc/gui/Dialogs.py    2008-02-20 19:22:19 UTC 
(rev 7754)
@@ -24,7 +24,6 @@
 pygtk.require('2.0')
 import gtk
 from grc.Constants import *
-from grc import Preferences
 
 class TextDisplay(gtk.TextView):
        """A non editable gtk text view."""
@@ -49,17 +48,18 @@
        
        def __init__(self):
                """PreferencesDialog constructor."""
+               from grc import Preferences
                gtk.Dialog.__init__(self, buttons=('gtk-close', 
gtk.RESPONSE_CLOSE))
                self.set_title("Preferences")   
                self.set_size_request(MIN_DIALOG_WIDTH, MIN_DIALOG_HEIGHT)
                notebook = gtk.Notebook()
-               for title,notes,params in Preferences.PREFERENCES:              
        
-                       if title:                               
-                               vbox = gtk.VBox()
-                               vbox.pack_start(gtk.Label(''), False) #blank 
label for spacing
-                               for param, key in params: 
vbox.pack_start(param.get_input_object(), False)              
-                               if notes: vbox.pack_start(TextDisplay(notes), 
False, padding=5)
-                               notebook.append_page(vbox, gtk.Label(title))    
        
+               for title,desc,params in Preferences.PREFERENCES:               
                                
+                       vbox = gtk.VBox()
+                       vbox.pack_start(gtk.Label(''), False) #blank label for 
spacing
+                       for param in params: 
vbox.pack_start(param.get_input_object(), False)           
+                       desc = desc.strip('\n')
+                       if desc: vbox.pack_start(TextDisplay(desc), False, 
padding=5)
+                       notebook.append_page(vbox, gtk.Label(title))            
                self.vbox.pack_start(notebook, True)
                self.show_all()
                self.run()

Modified: grc/branches/grc_reloaded/src/grc/gui/MainWindow.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/gui/MainWindow.py 2008-02-20 18:07:12 UTC 
(rev 7753)
+++ grc/branches/grc_reloaded/src/grc/gui/MainWindow.py 2008-02-20 19:22:19 UTC 
(rev 7754)
@@ -30,7 +30,7 @@
 from Dialogs import TextDisplay,MessageDialogHelper
 from DrawingArea import DrawingArea
 from grc.StateCache import StateCache
-#import Preferences
+from grc import Preferences
 from grc import Messages
 from grc import ParseXML
 import os
@@ -218,7 +218,7 @@
                vbox.show_all()                 
                self._show_reports_window(False) 
                # load preferences and show the main window 
-               #TODO Preferences.load(self)
+               Preferences.load(self)
                self.show()#show after resize in preferences
 
        ############################################################
@@ -323,7 +323,8 @@
                        self.page_to_be_closed = page
                        self.close_page(False)
                if self.notebook.get_n_pages(): return False
-               #TODO Preferences.save_files_open(files)
+               Preferences.save_files_open(files)
+               Preferences.save(self)
                return True
                        
        def close_page(self, ensure=True):
@@ -380,8 +381,7 @@
                                )
                        )
                #reports window
-               #TODO 
self._show_reports_window(Preferences.show_reports_window())
-               self._show_reports_window(True)
+               self._show_reports_window(Preferences.show_reports_window())
                
        def get_page(self):
                """!

Modified: grc/branches/grc_reloaded/src/grc/gui/elements/FlowGraph.py
===================================================================
--- grc/branches/grc_reloaded/src/grc/gui/elements/FlowGraph.py 2008-02-20 
18:07:12 UTC (rev 7753)
+++ grc/branches/grc_reloaded/src/grc/gui/elements/FlowGraph.py 2008-02-20 
19:22:19 UTC (rev 7754)
@@ -231,8 +231,8 @@
                        W,H = self.get_size()
                        self.get_gc().foreground = BACKGROUND_COLOR
                        self.get_pixmap().draw_rectangle(self.get_gc(), True, 
0, 0, W, H)       
-                       #TODO if Preferences.show_grid():                       
        
-                       if False:
+                       from grc import Preferences
+                       if Preferences.show_grid():
                                grid_size = Preferences.get_grid_size()         
                
                                points = list()
                                for i in range(W/grid_size):
@@ -308,8 +308,8 @@
                if left_click:
                        self.mouse_pressed = False
                        if self.has_moved:
-                               #TODO if Preferences.snap_to_grid():
-                               if False:       
+                               from grc import Preferences
+                               if Preferences.snap_to_grid():
                                        grid_size = Preferences.get_grid_size()
                                        X,Y = 
self.selected_element.get_coordinate()
                                        deltaX = X%grid_size
@@ -318,7 +318,7 @@
                                        deltaY = Y%grid_size
                                        if deltaY < grid_size/2: deltaY = -1 * 
deltaY
                                        else: deltaY = grid_size - deltaY
-                                       self.move_selected((deltaX,deltaY))
+                                       self.move_selected((deltaX, deltaY))
                                self.handle_states(BLOCK_MOVE)
                                self.has_moved = False
                

Added: 
grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/blocks/preferences.xml
===================================================================
--- 
grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/blocks/preferences.xml
                          (rev 0)
+++ 
grc/branches/grc_reloaded/src/grc/platforms/gnuradio_python/blocks/preferences.xml
  2008-02-20 19:22:19 UTC (rev 7754)
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<!DOCTYPE block SYSTEM "./block.dtd">
+<!-- 
+###################################################
+##Global Preferences:
+##     This block should not appear in the tree.
+###################################################
+ -->
+<block>
+       <name>Preferences</name>
+       <key>preferences</key>
+       <fcn></fcn>
+       <!-- Hidden Prefs -->
+       <param>
+               <name>Files Open</name>
+               <key>files_open</key>
+               <value></value>
+               <type>string</type>     
+       </param>
+       <param>
+               <name>Window Size</name>
+               <key>window_size</key>
+               <value>800, 600</value>
+               <type>int_vector</type> 
+       </param>
+       <!-- Snap to Grid -->
+       <param>
+               <name>Snap to Grid</name>
+               <key>snap_to_grid</key>
+               <value>off</value>
+               <type>enum</type>
+               <option>
+                       <name>Off</name>
+                       <key>off</key>          
+               </option>
+               <option>
+                       <name>On</name>
+                       <key>on</key>           
+               </option>
+       </param>
+       <param>
+               <name>Grid Size</name>
+               <key>grid_size</key>
+               <value>20</value>
+               <type>enum</type>
+               <option>
+                       <name>10 pixels</name>
+                       <key>10</key>           
+               </option>
+               <option>
+                       <name>20 pixels</name>
+                       <key>20</key>           
+               </option>
+               <option>
+                       <name>50 pixels</name>
+                       <key>50</key>           
+               </option>
+               <option>
+                       <name>100 pixels</name>
+                       <key>100</key>          
+               </option>
+       </param>
+       <param>
+               <name>Show Grid</name>
+               <key>show_grid</key>
+               <value>hide</value>
+               <type>enum</type>
+               <option>
+                       <name>Show</name>
+                       <key>show</key>         
+               </option>
+               <option>
+                       <name>Hide</name>
+                       <key>hide</key>         
+               </option>
+       </param>
+       <!-- Misc Prefs -->
+       <param>
+               <name>Restore Open Files</name>
+               <key>restore_files</key>
+               <value>yes</value>
+               <type>enum</type>
+               <option>
+                       <name>Yes</name>
+                       <key>yes</key>          
+               </option>
+               <option>
+                       <name>No</name>
+                       <key>no</key>           
+               </option>
+       </param>
+       <param>
+               <name>Show Reports Window</name>
+               <key>show_reports</key>
+               <value>show</value>
+               <type>enum</type>
+               <option>
+                       <name>Show</name>
+                       <key>show</key>         
+               </option>
+               <option>
+                       <name>Hide</name>
+                       <key>hide</key>         
+               </option>
+       </param>
+</block>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]