commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r8983 - in grc/trunk: notes src/grc src/grc/gui src/gr


From: jblum
Subject: [Commit-gnuradio] r8983 - in grc/trunk: notes src/grc src/grc/gui src/grc/gui/elements
Date: Tue, 22 Jul 2008 19:27:49 -0600 (MDT)

Author: jblum
Date: 2008-07-22 19:27:48 -0600 (Tue, 22 Jul 2008)
New Revision: 8983

Modified:
   grc/trunk/notes/todo.txt
   grc/trunk/src/grc/ActionHandler.py
   grc/trunk/src/grc/gui/BlockTreeWindow.py
   grc/trunk/src/grc/gui/MainWindow.py
   grc/trunk/src/grc/gui/NotebookPage.py
   grc/trunk/src/grc/gui/elements/FlowGraph.py
Log:
gui enhancements

Modified: grc/trunk/notes/todo.txt
===================================================================
--- grc/trunk/notes/todo.txt    2008-07-23 01:10:47 UTC (rev 8982)
+++ grc/trunk/notes/todo.txt    2008-07-23 01:27:48 UTC (rev 8983)
@@ -2,6 +2,8 @@
 -hier block
 -optparse block
 -ofdm wrappers
+-gr_costas callbacks
+-gr_moving_average_XX
 
 ############ Features to Add: ####################
 -save working directory after close
@@ -13,10 +15,13 @@
 -hotkeys in action descriptions
 -log slider gui control
 -variable resolution graph structure
+-recursive/nested categories
 
 ############ Problems: ####################
 -catch error on open non-existant files
 -variables dependent on variables that change
+-flow graph, update autoscroll with emit('changed')
+-flow graph, try mouse DRAG_MOTION?
 
 ############ Suggestions: ####################
 -simple usrp

Modified: grc/trunk/src/grc/ActionHandler.py
===================================================================
--- grc/trunk/src/grc/ActionHandler.py  2008-07-23 01:10:47 UTC (rev 8982)
+++ grc/trunk/src/grc/ActionHandler.py  2008-07-23 01:27:48 UTC (rev 8983)
@@ -199,6 +199,7 @@
                        self.get_flow_graph().update()
                elif state == NOTHING_SELECT:
                        self.get_flow_graph().unselect()
+                       self.get_flow_graph().update()
                
##############################################################################################
                #       Enable/Disable
                
##############################################################################################
@@ -276,6 +277,7 @@
                
##############################################################################################
                elif state == BLOCK_PARAM_MODIFY:
                        if self.get_flow_graph().param_modify_selected():
+                               self.get_flow_graph().update()
                                
self.get_page().get_state_cache().save_new_state(self.get_flow_graph().export_data())
                                self.get_page().set_saved(False)
                
##############################################################################################
@@ -284,14 +286,14 @@
                elif state == FLOW_GRAPH_UNDO:
                        n = self.get_page().get_state_cache().get_prev_state()
                        if n:
-                               self.handle_states(NOTHING_SELECT)
+                               self.get_flow_graph().unselect()
                                self.get_flow_graph().import_data(n)
                                self.get_flow_graph().update()
                                self.get_page().set_saved(False)
                elif state == FLOW_GRAPH_REDO:
                        n = self.get_page().get_state_cache().get_next_state()
                        if n:
-                               self.handle_states(NOTHING_SELECT)
+                               self.get_flow_graph().unselect()
                                self.get_flow_graph().import_data(n)
                                self.get_flow_graph().update()
                                self.get_page().set_saved(False)
@@ -379,6 +381,8 @@
                #saved status
                get_action_from_name(FLOW_GRAPH_SAVE).set_sensitive(not 
self.get_page().get_saved())
                self.main_window.update()
+               #draw the flow graph
+               self.get_flow_graph().draw()
 
        def update_exec_stop(self):
                """

Modified: grc/trunk/src/grc/gui/BlockTreeWindow.py
===================================================================
--- grc/trunk/src/grc/gui/BlockTreeWindow.py    2008-07-23 01:10:47 UTC (rev 
8982)
+++ grc/trunk/src/grc/gui/BlockTreeWindow.py    2008-07-23 01:27:48 UTC (rev 
8983)
@@ -27,6 +27,9 @@
 import gtk
 import gobject
 
+NAME_INDEX = 0
+KEY_INDEX = 1
+
 class BlockTreeWindow(gtk.VBox, _BlockTree):
        """The block selection panel."""
 
@@ -53,7 +56,7 @@
                selection.set_mode('single')
                selection.connect('changed', self._handle_selection_change)
                renderer = gtk.CellRendererText()
-               column = gtk.TreeViewColumn('Blocks', renderer, text=0)
+               column = gtk.TreeViewColumn('Blocks', renderer, text=NAME_INDEX)
                self.treeview.append_column(column)
                #make the scrolled window to hold the tree view
                scrolled_window = gtk.ScrolledWindow()
@@ -70,8 +73,11 @@
                #add blocks and categories
                self.platform.load_block_tree(self)
                #initialize
-               self._handle_selection_change()
+               self._update_add_button()
 
+       ############################################################
+       ## Block Tree Methods
+       ############################################################
        def add_block(self, block, category):
                """!
                Add a block with category to this selection window.
@@ -81,8 +87,8 @@
                """
                _BlockTree.add_block(self, block, category)
                new_iter = 
self.treestore.insert_before(self.categories[category], None)
-               self.treestore.set_value(new_iter, 0, block.get_name())
-               self.treestore.set_value(new_iter, 1, block.get_key())
+               self.treestore.set_value(new_iter, NAME_INDEX, block.get_name())
+               self.treestore.set_value(new_iter, KEY_INDEX, block.get_key())
 
        def add_category(self, category):
                """!
@@ -92,35 +98,59 @@
                """
                _BlockTree.add_category(self, category)
                iter = self.treestore.insert_before(None, None)
-               self.treestore.set_value(iter, 0, category)
+               self.treestore.set_value(iter, NAME_INDEX, category)
+               self.treestore.set_value(iter, KEY_INDEX, '')
                self.categories[category] = iter
 
+       ############################################################
+       ## Helper Methods
+       ############################################################
+       def _get_selected_block_key(self):
+               """!
+               Get the currently selected block key.
+               @return the key of the selected block or a empty string
+               """
+               selection = self.treeview.get_selection()
+               treestore, iter = selection.get_selected()
+               return iter and treestore.get_value(iter, KEY_INDEX) or ''
+
+       def _update_add_button(self):
+               """!
+               Update the add button's sensitivity.
+               The button should be active only if a block is selected.
+               """
+               key = self._get_selected_block_key()
+               self.add_button.set_sensitive(bool(key))
+
+       def _add_selected_block(self):
+               """!
+               Add the selected block with the given key to the flow graph.
+               """
+               key = self._get_selected_block_key()
+               if key: self.get_flow_graph().add_new_block(key)
+
+       ############################################################
+       ## Event Handlers
+       ############################################################
        def _handle_mouse_button_press(self, widget, event):
                """!
                Handle the mouse button press.
-               If a left double click is detected,
-               let the handler for the add button decide to add a block.
+               If a left double click is detected, call add selected block.
                """
-               if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS: 
self._handle_add_button(widget)
+               if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+                       self._add_selected_block()
 
-       def _handle_selection_change(self, selection=None):
+       def _handle_selection_change(self, selection):
                """!
                Handle a selection change in the tree view.
                If a selection changes, set the add button sensitive.
                """
-               selection = self.treeview.get_selection()
-               model, iter = selection.get_selected()
-               sensitive = bool(iter and not model.iter_has_child(iter))
-               self.add_button.set_sensitive(sensitive)
+               self._update_add_button()
 
        def _handle_add_button(self, widget):
                """!
                Handle the add button clicked signal.
-               Add the signal block to the flow graph.
+               Call add selected block.
                """
-               selection = self.treeview.get_selection()
-               treestore, iter = selection.get_selected()
-               if iter and not treestore.iter_has_child(iter):
-                       key = treestore.get_value(iter, 1)
-                       self.get_flow_graph().add_new_block(key)
+               self._add_selected_block()
 

Modified: grc/trunk/src/grc/gui/MainWindow.py
===================================================================
--- grc/trunk/src/grc/gui/MainWindow.py 2008-07-23 01:10:47 UTC (rev 8982)
+++ grc/trunk/src/grc/gui/MainWindow.py 2008-07-23 01:27:48 UTC (rev 8983)
@@ -35,7 +35,7 @@
 import os
 
 ############################################################
-##     Main window
+# Main window
 ############################################################
 
 class MainWindow(gtk.Window):
@@ -67,8 +67,8 @@
                self.page_to_be_closed = None
                self.current_page = None
                self.notebook.set_show_border(False)
-               self.notebook.set_scrollable(True)      #scroll arrows for page 
tabs
-               self.notebook.connect("switch-page", self._handle_page_change)
+               self.notebook.set_scrollable(True) #scroll arrows for page tabs
+               self.notebook.connect('switch-page', self._handle_page_change)
                fg_and_report_box = gtk.VBox(False, 0)
                fg_and_report_box.pack_start(self.notebook, False, False, 0)
                fg_and_report_box.pack_start(self.scrolled_window)
@@ -96,7 +96,7 @@
                self.show()#show after resize in preferences
 
        ############################################################
-       ##      Event Handlers
+       # Event Handlers
        ############################################################
 
        def _quit(self, window, event):
@@ -120,13 +120,10 @@
                """
                self.current_page = self.notebook.get_nth_page(page_num)
                Messages.send_page_switch(self.current_page.get_file_path())
-               state = self.get_page().get_state_cache().get_current_state()
-               self.get_flow_graph().import_data(state)
-               self.get_flow_graph().update()
-               self.handle_states(NOTHING_SELECT)
+               self.handle_states()
 
        ############################################################
-       ##      Report Window
+       # Report Window
        ############################################################
 
        def add_report_line(self, line):
@@ -137,6 +134,7 @@
                self.text_display.insert(line)
                vadj = self.reports_scrolled_window.get_vadjustment()
                vadj.set_value(vadj.upper)
+               vadj.emit('changed')
 
        def _show_reports_window(self, show):
                """!
@@ -148,7 +146,7 @@
                else: self.reports_scrolled_window.hide()
 
        ############################################################
-       ##      Pages: create and close
+       # Pages: create and close
        ############################################################
 
        def new_page(self, file_path='', show=False):
@@ -193,11 +191,12 @@
                """
                open_files = filter(lambda file: file, self._get_files()) 
#filter blank files
                open_file = self.get_page().get_file_path()
+               #close each page
                for page in self._get_pages():
-                       
self._set_page(self.notebook.get_nth_page(self.notebook.get_n_pages()-1)) #show 
last page
                        self.page_to_be_closed = page
                        self.close_page(False)
                if self.notebook.get_n_pages(): return False
+               #save state before closing
                Preferences.files_open(open_files)
                Preferences.file_open(open_file)
                Preferences.window_size(self.get_size())
@@ -219,7 +218,7 @@
                if not self.page_to_be_closed.get_saved() and 
self._save_changes():
                        self.handle_states(FLOW_GRAPH_SAVE) #try to save
                        if not self.page_to_be_closed.get_saved(): #still 
unsaved?
-                               self.page_to_be_closed = None   #set the page 
to be closed back to None
+                               self.page_to_be_closed = None #set the page to 
be closed back to None
                                return
                #stop the flow graph if executing
                if self.page_to_be_closed.get_pid(): 
self.handle_states(FLOW_GRAPH_KILL)
@@ -229,7 +228,7 @@
                self.page_to_be_closed = None #set the page to be closed back 
to None
 
        ############################################################
-       ##      Misc
+       # Misc
        ############################################################
 
        def update(self):
@@ -279,7 +278,7 @@
                return self.get_page().get_flow_graph()
 
        ############################################################
-       ##      Helpers
+       # Helpers
        ############################################################
 
        def _set_page(self, page):

Modified: grc/trunk/src/grc/gui/NotebookPage.py
===================================================================
--- grc/trunk/src/grc/gui/NotebookPage.py       2008-07-23 01:10:47 UTC (rev 
8982)
+++ grc/trunk/src/grc/gui/NotebookPage.py       2008-07-23 01:27:48 UTC (rev 
8983)
@@ -56,7 +56,10 @@
                initial_state = ParseXML.from_file(file_path)
                self.state_cache = StateCache(initial_state)
                self.set_saved(True)
-               #parse xml success, initialize page
+               #import the data to the flow graph
+               self.get_flow_graph().import_data(initial_state)
+               self.get_flow_graph().update()
+               #initialize page gui
                gtk.HBox.__init__(self, False, 0)
                self.show()
                #tab box to hold label and close button

Modified: grc/trunk/src/grc/gui/elements/FlowGraph.py
===================================================================
--- grc/trunk/src/grc/gui/elements/FlowGraph.py 2008-07-23 01:10:47 UTC (rev 
8982)
+++ grc/trunk/src/grc/gui/elements/FlowGraph.py 2008-07-23 01:27:48 UTC (rev 
8983)
@@ -167,7 +167,6 @@
                if self.get_selected_block():
                        signal_block_params_dialog = 
ParamsDialog(self.get_selected_block())
                        changed = signal_block_params_dialog.run()
-                       self.update()
                        return changed #changes were made?
                return False
 
@@ -215,9 +214,8 @@
                return False
 
        def unselect(self):
-               """Set selected element to None and update."""
+               """Set selected element to None."""
                self._selected_element = None
-               self.update()
 
        def what_is_selected(self, coor):
                """!
@@ -299,8 +297,6 @@
                try: new_x, new_y = self.get_option('window_size')
                except: new_x, new_y = old_x, old_y
                if new_x != old_x or new_y != old_y: self.set_size(new_x, new_y)
-               #draw the flow graph
-               self.draw()
 
        
##########################################################################
        ##      Handlers
@@ -333,8 +329,7 @@
                                self.mouse_pressed = False
                                self.handle_states(BLOCK_PARAM_MODIFY)
                        #handle the state change with the new selection
-                       if self.get_selected_element(): 
self.handle_states(ELEMENT_SELECT)
-                       else: self.handle_states(NOTHING_SELECT)
+                       self.handle_states(ELEMENT_SELECT)
 
        def handle_mouse_button_release(self, left_click, coordinate):
                """!
@@ -367,8 +362,7 @@
                """
                #to perform a movement, the mouse must be pressed, an element 
selected, timediff large enough.
                if time.time() - self.time >= 
MOTION_DETECT_REDRAWING_SENSITIVITY and \
-                       self.mouse_pressed and\
-                       self.get_selected_element():
+                       self.mouse_pressed and self.get_selected_element():
                        #The event coordinates must be within BPS pixels away 
from the bounds of the flow graph.
                        fgW,fgH = self.get_size()
                        x,y = coordinate





reply via email to

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