summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2016-04-05 16:13:19 -0700
committerJohnathan Corgan <johnathan@corganlabs.com>2016-04-05 16:13:19 -0700
commit8cee06729c6b4bde607600fbdb333d9c579690dd (patch)
tree36741b534d70f3945d6d4e3ca720e98ab88aa3c8
parent6ac74a242c12b7e759403176c757b3042a67d0d1 (diff)
parenteff39c93b2caef8906c38c3f424bcacb5cd0acd8 (diff)
Merge branch 'master' into next
-rw-r--r--docs/doxygen/other/ctrlport.dox4
-rw-r--r--grc/base/FlowGraph.py2
-rw-r--r--grc/base/Param.py6
-rw-r--r--grc/base/ParseXML.py1
-rw-r--r--grc/base/Port.py2
-rw-r--r--grc/gui/NotebookPage.py13
-rw-r--r--grc/python/Block.py7
7 files changed, 23 insertions, 12 deletions
diff --git a/docs/doxygen/other/ctrlport.dox b/docs/doxygen/other/ctrlport.dox
index 94a768e429..fc0ac70320 100644
--- a/docs/doxygen/other/ctrlport.dox
+++ b/docs/doxygen/other/ctrlport.dox
@@ -416,7 +416,7 @@ To launch the ControlPort monitor application, know the IP address and
port of the ControlPort endpoint established by the flowgraph and run:
<pre>
-gr-ctrlport-monitor \<ip-addr\> -p \<port\>
+gr-ctrlport-monitor \<ip-addr\> \<port\>
</pre>
@@ -436,7 +436,7 @@ displayed as a table or bar graph.
To launch the Performance Monitor, run:
<pre>
-gr-perf-monitorx \<ip-addr\> -p \<port\>
+gr-perf-monitorx \<ip-addr\> \<port\>
</pre>
*/
diff --git a/grc/base/FlowGraph.py b/grc/base/FlowGraph.py
index 072414aa90..0398dfd011 100644
--- a/grc/base/FlowGraph.py
+++ b/grc/base/FlowGraph.py
@@ -375,6 +375,8 @@ class FlowGraph(Element):
block.import_data(block_n)
+ self.rewrite() # evaluate stuff like nports before adding connections
+
# build the connections
def verify_and_get_port(key, block, dir):
ports = block.get_sinks() if dir == 'sink' else block.get_sources()
diff --git a/grc/base/Param.py b/grc/base/Param.py
index b246d9f759..34dd36e790 100644
--- a/grc/base/Param.py
+++ b/grc/base/Param.py
@@ -154,8 +154,10 @@ class Param(Element):
def set_value(self, value): self._value = str(value) #must be a string
- def value_is_default(self):
- return self._default == self._value
+ def set_default(self, value):
+ if self._default == self._value:
+ self.set_value(value)
+ self._default = str(value)
def get_type(self): return self.get_parent().resolve_dependencies(self._type)
def get_tab_label(self): return self._tab_label
diff --git a/grc/base/ParseXML.py b/grc/base/ParseXML.py
index 2d5fed0862..e05fc1428d 100644
--- a/grc/base/ParseXML.py
+++ b/grc/base/ParseXML.py
@@ -21,6 +21,7 @@ from lxml import etree
from . import odict
xml_failures = {}
+etree.set_default_parser(etree.XMLParser(remove_comments=True))
class XMLSyntaxError(Exception):
diff --git a/grc/base/Port.py b/grc/base/Port.py
index 39166d18f7..d1c35163f5 100644
--- a/grc/base/Port.py
+++ b/grc/base/Port.py
@@ -36,7 +36,7 @@ class Port(Element):
#grab the data
self._name = n['name']
self._key = n['key']
- self._type = n['type']
+ self._type = n['type'] or ''
self._domain = n['domain']
self._hide = n.find('hide') or ''
self._dir = dir
diff --git a/grc/gui/NotebookPage.py b/grc/gui/NotebookPage.py
index 481aca4eea..4c112154af 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.
diff --git a/grc/python/Block.py b/grc/python/Block.py
index f43b006e5f..368a7ea391 100644
--- a/grc/python/Block.py
+++ b/grc/python/Block.py
@@ -282,11 +282,10 @@ class Block(_Block, _GUIBlock):
self._params.remove(param)
for key, value in blk_io.params:
- if key in params:
+ try:
param = params[key]
- if not param.value_is_default():
- param.set_value(value)
- else:
+ param.set_default(value)
+ except KeyError: # need to make a new param
name = key.replace('_', ' ').title()
n = odict(dict(name=name, key=key, type='raw', value=value))
param = platform.Param(block=self, n=n)