diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2016-04-15 21:02:51 +0200 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2016-04-15 21:09:19 +0200 |
commit | 8cfc8b3408916ccb156fc25102bc1d9346bc004b (patch) | |
tree | 5c38adfedca3f4f4073d0621840ea578dd67ed4d /grc/gui | |
parent | 036264ef5c8e2376acd426a99ca42d29390e3e2a (diff) | |
parent | bdf85171b8a35004cdbf634f48ff696787b5fbde (diff) |
Merge remote-tracking branch 'upstream/master' into refactoring
Diffstat (limited to 'grc/gui')
-rw-r--r-- | grc/gui/ActionHandler.py | 3 | ||||
-rw-r--r-- | grc/gui/Actions.py | 6 | ||||
-rw-r--r-- | grc/gui/Bars.py | 1 | ||||
-rw-r--r-- | grc/gui/FlowGraph.py | 10 | ||||
-rw-r--r-- | grc/gui/NotebookPage.py | 13 |
5 files changed, 29 insertions, 4 deletions
diff --git a/grc/gui/ActionHandler.py b/grc/gui/ActionHandler.py index 24add2780f..37514c9867 100644 --- a/grc/gui/ActionHandler.py +++ b/grc/gui/ActionHandler.py @@ -138,6 +138,7 @@ class ActionHandler: Actions.TOGGLE_SHOW_CODE_PREVIEW_TAB, Actions.TOGGLE_SHOW_FLOWGRAPH_COMPLEXITY, Actions.FLOW_GRAPH_OPEN_QSS_THEME, + Actions.SELECT_ALL, ): action.set_sensitive(True) if hasattr(action, 'load_from_preferences'): @@ -157,6 +158,8 @@ class ActionHandler: pass #do nothing, update routines below elif action == Actions.NOTHING_SELECT: self.get_flow_graph().unselect() + elif action == Actions.SELECT_ALL: + self.get_flow_graph().select_all() ################################################## # Enable/Disable ################################################## diff --git a/grc/gui/Actions.py b/grc/gui/Actions.py index d53375f291..354e536a82 100644 --- a/grc/gui/Actions.py +++ b/grc/gui/Actions.py @@ -226,6 +226,12 @@ FLOW_GRAPH_REDO = Action( keypresses=(gtk.keysyms.y, gtk.gdk.CONTROL_MASK), ) NOTHING_SELECT = Action() +SELECT_ALL = Action( + label='Select _All', + tooltip='Select all blocks and connections in the flow graph', + stock_id=gtk.STOCK_SELECT_ALL, + keypresses=(gtk.keysyms.a, gtk.gdk.CONTROL_MASK), +) ELEMENT_SELECT = Action() ELEMENT_CREATE = Action() ELEMENT_DELETE = Action( diff --git a/grc/gui/Bars.py b/grc/gui/Bars.py index 19f041f508..259aa6ed8b 100644 --- a/grc/gui/Bars.py +++ b/grc/gui/Bars.py @@ -82,6 +82,7 @@ MENU_BAR_LIST = ( Actions.BLOCK_COPY, Actions.BLOCK_PASTE, Actions.ELEMENT_DELETE, + Actions.SELECT_ALL, None, Actions.BLOCK_ROTATE_CCW, Actions.BLOCK_ROTATE_CW, diff --git a/grc/gui/FlowGraph.py b/grc/gui/FlowGraph.py index c7c64c6e7d..15488cc59b 100644 --- a/grc/gui/FlowGraph.py +++ b/grc/gui/FlowGraph.py @@ -53,7 +53,7 @@ class FlowGraph(Element, _Flowgraph): #important vars dealing with mouse event tracking self.element_moved = False self.mouse_pressed = False - self.unselect() + self._selected_elements = [] self.press_coor = (0, 0) #selected ports self._old_selected_port = None @@ -203,11 +203,15 @@ class FlowGraph(Element, _Flowgraph): v_adj = self.get_scroll_pane().get_vadjustment() x_off = h_adj.get_value() - x_min + h_adj.page_size/4 y_off = v_adj.get_value() - y_min + v_adj.page_size/4 + if len(self.get_elements()) <= 1: + x_off, y_off = 0, 0 #create blocks for block_n in blocks_n: block_key = block_n.find('key') if block_key == 'options': continue block = self.new_block(block_key) + if not block: + continue # unknown block was pasted (e.g. dummy block) selected.add(block) #set params params_n = block_n.findall('param') @@ -444,6 +448,10 @@ class FlowGraph(Element, _Flowgraph): """ self._selected_elements = [] + def select_all(self): + """Select all blocks in the flow graph""" + self._selected_elements = list(self.get_elements()) + def what_is_selected(self, coor, coor_m=None): """ What is selected? diff --git a/grc/gui/NotebookPage.py b/grc/gui/NotebookPage.py index 2c1fd7c3b3..6614649c89 100644 --- a/grc/gui/NotebookPage.py +++ b/grc/gui/NotebookPage.py @@ -26,9 +26,6 @@ from Constants import MIN_WINDOW_WIDTH, MIN_WINDOW_HEIGHT from DrawingArea import DrawingArea import os -############################################################ -## Notebook Page -############################################################ class NotebookPage(gtk.HBox): """A page in the notebook.""" @@ -79,6 +76,7 @@ class NotebookPage(gtk.HBox): self.scrolled_window = gtk.ScrolledWindow() self.scrolled_window.set_size_request(MIN_WINDOW_WIDTH, MIN_WINDOW_HEIGHT) self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + self.scrolled_window.connect('key-press-event', self._handle_scroll_window_key_press) self.drawing_area = DrawingArea(self.get_flow_graph()) self.scrolled_window.add_with_viewport(self.get_drawing_area()) self.pack_start(self.scrolled_window) @@ -88,6 +86,15 @@ class NotebookPage(gtk.HBox): def get_drawing_area(self): return self.drawing_area + def _handle_scroll_window_key_press(self, widget, event): + """forward Ctrl-PgUp/Down to NotebookPage (switch fg instead of horiz. scroll""" + is_ctrl_pg = ( + event.state & gtk.gdk.CONTROL_MASK and + event.keyval in (gtk.keysyms.Page_Up, gtk.keysyms.Page_Down) + ) + if is_ctrl_pg: + return self.get_parent().event(event) + def get_generator(self): """ Get the generator object for this flow graph. |