summaryrefslogtreecommitdiff
path: root/grc/gui
diff options
context:
space:
mode:
authorSebastian Koslowski <koslowski@kit.edu>2016-04-15 21:02:51 +0200
committerSebastian Koslowski <koslowski@kit.edu>2016-04-15 21:09:19 +0200
commit8cfc8b3408916ccb156fc25102bc1d9346bc004b (patch)
tree5c38adfedca3f4f4073d0621840ea578dd67ed4d /grc/gui
parent036264ef5c8e2376acd426a99ca42d29390e3e2a (diff)
parentbdf85171b8a35004cdbf634f48ff696787b5fbde (diff)
Merge remote-tracking branch 'upstream/master' into refactoring
Diffstat (limited to 'grc/gui')
-rw-r--r--grc/gui/ActionHandler.py3
-rw-r--r--grc/gui/Actions.py6
-rw-r--r--grc/gui/Bars.py1
-rw-r--r--grc/gui/FlowGraph.py10
-rw-r--r--grc/gui/NotebookPage.py13
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.