summaryrefslogtreecommitdiff
path: root/grc/gui/BlockTreeWindow.py
diff options
context:
space:
mode:
Diffstat (limited to 'grc/gui/BlockTreeWindow.py')
-rw-r--r--grc/gui/BlockTreeWindow.py61
1 files changed, 39 insertions, 22 deletions
diff --git a/grc/gui/BlockTreeWindow.py b/grc/gui/BlockTreeWindow.py
index 2f359f8c43..05341ec52b 100644
--- a/grc/gui/BlockTreeWindow.py
+++ b/grc/gui/BlockTreeWindow.py
@@ -34,7 +34,8 @@ def _format_doc(doc):
def _format_cat_tooltip(category):
- tooltip = '{}: {}'.format('Category' if len(category) > 1 else 'Module', category[-1])
+ tooltip = '{}: {}'.format('Category' if len(
+ category) > 1 else 'Module', category[-1])
if category == ('Core',):
tooltip += '\n\nThis subtree is meant for blocks included with GNU Radio (in-tree).'
@@ -68,26 +69,33 @@ class BlockTreeWindow(Gtk.VBox):
# search entry
self.search_entry = Gtk.Entry()
try:
- self.search_entry.set_icon_from_icon_name(Gtk.EntryIconPosition.PRIMARY, 'edit-find')
- self.search_entry.set_icon_activatable(Gtk.EntryIconPosition.PRIMARY, False)
- self.search_entry.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, 'window-close')
+ self.search_entry.set_icon_from_icon_name(
+ Gtk.EntryIconPosition.PRIMARY, 'edit-find')
+ self.search_entry.set_icon_activatable(
+ Gtk.EntryIconPosition.PRIMARY, False)
+ self.search_entry.set_icon_from_icon_name(
+ Gtk.EntryIconPosition.SECONDARY, 'window-close')
self.search_entry.connect('icon-release', self._handle_icon_event)
except AttributeError:
pass # no icon for old pygtk
self.search_entry.connect('changed', self._update_search_tree)
- self.search_entry.connect('key-press-event', self._handle_search_key_press)
+ self.search_entry.connect(
+ 'key-press-event', self._handle_search_key_press)
self.pack_start(self.search_entry, False, False, 0)
# make the tree model for holding blocks and a temporary one for search results
- self.treestore = Gtk.TreeStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
- self.treestore_search = Gtk.TreeStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
+ self.treestore = Gtk.TreeStore(
+ GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
+ self.treestore_search = Gtk.TreeStore(
+ GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
self.treeview = Gtk.TreeView(model=self.treestore)
self.treeview.set_enable_search(False) # disable pop up search box
self.treeview.set_search_column(-1) # really disable search
self.treeview.set_headers_visible(False)
self.treeview.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
- self.treeview.connect('button-press-event', self._handle_mouse_button_press)
+ self.treeview.connect('button-press-event',
+ self._handle_mouse_button_press)
self.treeview.connect('key-press-event', self._handle_search_key_press)
self.treeview.get_selection().set_mode(Gtk.SelectionMode.SINGLE)
@@ -99,13 +107,16 @@ class BlockTreeWindow(Gtk.VBox):
column.set_sort_column_id(0)
self.treestore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
# setup drag and drop
- self.treeview.enable_model_drag_source(Gdk.ModifierType.BUTTON1_MASK, Constants.DND_TARGETS, Gdk.DragAction.COPY)
+ self.treeview.enable_model_drag_source(
+ Gdk.ModifierType.BUTTON1_MASK, Constants.DND_TARGETS, Gdk.DragAction.COPY)
self.treeview.connect('drag-data-get', self._handle_drag_get_data)
# make the scrolled window to hold the tree view
scrolled_window = Gtk.ScrolledWindow()
- scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+ scrolled_window.set_policy(
+ Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
scrolled_window.add(self.treeview)
- scrolled_window.set_size_request(Constants.DEFAULT_BLOCKS_WINDOW_WIDTH, -1)
+ scrolled_window.set_size_request(
+ Constants.DEFAULT_BLOCKS_WINDOW_WIDTH, -1)
self.pack_start(scrolled_window, True, True, 0)
# map categories to iters, automatic mapping for root
self._categories = {tuple(): None}
@@ -128,10 +139,11 @@ class BlockTreeWindow(Gtk.VBox):
self.treeview.collapse_all()
core_module_iter = self._categories.get((module_name,))
if core_module_iter:
- self.treeview.expand_row(self.treestore.get_path(core_module_iter), False)
+ self.treeview.expand_row(
+ self.treestore.get_path(core_module_iter), False)
############################################################
- ## Block Tree Methods
+ # Block Tree Methods
############################################################
def add_block(self, block, treestore=None, categories=None):
"""
@@ -144,16 +156,19 @@ class BlockTreeWindow(Gtk.VBox):
treestore = treestore or self.treestore
categories = categories or self._categories
- category = tuple(filter(str, block.category)) # tuple is hashable, remove empty cats
+ # tuple is hashable, remove empty cats
+ category = tuple(filter(str, block.category))
# add category and all sub categories
for level, parent_cat_name in enumerate(category, 1):
parent_category = category[:level]
if parent_category not in categories:
- iter_ = treestore.insert_before(categories[parent_category[:-1]], None)
+ iter_ = treestore.insert_before(
+ categories[parent_category[:-1]], None)
treestore.set_value(iter_, NAME_INDEX, parent_cat_name)
treestore.set_value(iter_, KEY_INDEX, '')
- treestore.set_value(iter_, DOC_INDEX, _format_cat_tooltip(parent_category))
+ treestore.set_value(
+ iter_, DOC_INDEX, _format_cat_tooltip(parent_category))
categories[parent_category] = iter_
# add block
iter_ = treestore.insert_before(categories[category], None)
@@ -175,7 +190,7 @@ class BlockTreeWindow(Gtk.VBox):
self.treestore_search.foreach(update_doc)
############################################################
- ## Helper Methods
+ # Helper Methods
############################################################
def _get_selected_block_key(self):
"""
@@ -195,7 +210,7 @@ class BlockTreeWindow(Gtk.VBox):
self.treeview.expand_to_path(path)
############################################################
- ## Event Handlers
+ # Event Handlers
############################################################
def _handle_icon_event(self, widget, icon, event):
if icon == Gtk.EntryIconPosition.PRIMARY:
@@ -216,7 +231,8 @@ class BlockTreeWindow(Gtk.VBox):
self.treestore_search.clear()
self._categories_search = {tuple(): None}
for block in matching_blocks:
- self.add_block(block, self.treestore_search, self._categories_search)
+ self.add_block(block, self.treestore_search,
+ self._categories_search)
self.treeview.set_model(self.treestore_search)
self.treeview.expand_all()
@@ -232,7 +248,8 @@ class BlockTreeWindow(Gtk.VBox):
selected = self.treestore_search.iter_children(selected)
if selected is not None:
key = self.treestore_search.get_value(selected, KEY_INDEX)
- if key: self.emit('create_new_block', key)
+ if key:
+ self.emit('create_new_block', key)
elif widget == self.treeview:
key = self._get_selected_block_key()
if key:
@@ -248,7 +265,7 @@ class BlockTreeWindow(Gtk.VBox):
self.search_entry.hide()
elif (event.get_state() & Gdk.ModifierType.CONTROL_MASK and event.keyval == Gdk.KEY_f) \
- or event.keyval == Gdk.KEY_slash:
+ or event.keyval == Gdk.KEY_slash:
# propagation doesn't work although treeview search is disabled =(
# manually trigger action...
Actions.FIND_BLOCKS.activate()
@@ -258,7 +275,7 @@ class BlockTreeWindow(Gtk.VBox):
Actions.TOGGLE_BLOCKS_WINDOW.activate()
else:
- return False # propagate event
+ return False # propagate event
return True