diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2017-10-05 16:39:31 -0700 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2017-10-05 16:39:31 -0700 |
commit | 7199e7811261af93203a6f207fd21927ea8304a3 (patch) | |
tree | 8f3a2b937f7f419bad024065908129376d70ff4c | |
parent | 6fa9d33246251f44a0e78682e50e9a1cb0b03171 (diff) | |
parent | ff8caa034ac65c0c28b2a542b7e72f23390ccd46 (diff) |
Merge remote-tracking branch 'skoslowski/merges/python3' into python3
-rw-r--r-- | grc/blocks/options.xml | 8 | ||||
-rw-r--r-- | grc/converter/block.py | 6 | ||||
-rw-r--r-- | grc/core/blocks/_build.py | 4 | ||||
-rw-r--r-- | grc/core/blocks/block.py | 19 | ||||
-rw-r--r-- | grc/core/generator/flow_graph.py.mako | 24 | ||||
-rw-r--r-- | grc/core/generator/top_block.py | 12 | ||||
-rw-r--r-- | grc/core/schema_checker/block.py | 2 | ||||
-rw-r--r-- | grc/core/utils/hide_bokeh_gui_options_if_not_installed.py | 7 | ||||
-rw-r--r-- | grc/gui/MainWindow.py | 2 | ||||
-rw-r--r-- | grc/gui/Notebook.py | 2 |
10 files changed, 43 insertions, 43 deletions
diff --git a/grc/blocks/options.xml b/grc/blocks/options.xml index 21d1c9ddee..5fa4fc1b17 100644 --- a/grc/blocks/options.xml +++ b/grc/blocks/options.xml @@ -64,14 +64,14 @@ else: self.stop(); self.wait()</callback> <value>qt_gui</value> <type>enum</type> <option> - <name>Bokeh GUI</name> - <key>bokeh_gui</key> - </option> - <option> <name>QT GUI</name> <key>qt_gui</key> </option> <option> + <name>Bokeh GUI</name> + <key>bokeh_gui</key> + </option> + <option> <name>No GUI</name> <key>no_gui</key> </option> diff --git a/grc/converter/block.py b/grc/converter/block.py index 04e5c905a0..0e362d97c0 100644 --- a/grc/converter/block.py +++ b/grc/converter/block.py @@ -95,14 +95,14 @@ def convert_block_xml(node): data['outputs'] = [convert_port_xml(port_node, converter.to_python_dec) for port_node in node.iterfind('source')] or no_value - - data['checks'] = [converter.to_python_dec(check_node.text) - for check_node in node.iterfind('checks')] or no_value data['value'] = ( converter.to_python_dec(node.findtext('var_value')) or ('${ value }' if block_id.startswith('variable') else no_value) ) + data['asserts'] = [converter.to_python_dec(check_node.text) + for check_node in node.iterfind('check')] or no_value + data['templates'] = convert_templates(node, converter.to_mako, block_id) or no_value docs = node.findtext('doc') diff --git a/grc/core/blocks/_build.py b/grc/core/blocks/_build.py index 9a50086cea..9221433387 100644 --- a/grc/core/blocks/_build.py +++ b/grc/core/blocks/_build.py @@ -25,7 +25,7 @@ from ._templates import MakoTemplates def build(id, label='', category='', flags='', documentation='', - checks=None, value=None, + value=None, asserts=None, parameters=None, inputs=None, outputs=None, templates=None, **kwargs): block_id = id @@ -41,7 +41,7 @@ def build(id, label='', category='', flags='', documentation='', cls.documentation = {'': documentation.strip('\n\t ').replace('\\\n', '')} - cls.checks = [_single_mako_expr(check, block_id) for check in (checks or [])] + cls.asserts = [_single_mako_expr(a, block_id) for a in (asserts or [])] cls.parameters_data = parameters or [] cls.inputs_data = inputs or [] diff --git a/grc/core/blocks/block.py b/grc/core/blocks/block.py index e0858957ab..adc046936d 100644 --- a/grc/core/blocks/block.py +++ b/grc/core/blocks/block.py @@ -55,7 +55,7 @@ class Block(Element): documentation = {'': ''} value = None - checks = [] + asserts = [] templates = MakoTemplates() parameters_data = [] @@ -127,11 +127,10 @@ class Block(Element): port_factory = self.parent_platform.make_port port_ids = set() - def make_stream_port_id(_pool=itertools.count()): - return {'sink': 'in', 'source': 'out'}[direction] + str(next(_pool)) + stream_port_ids = itertools.count() for i, port_data in enumerate(ports_n): - port_id = port_data.setdefault('id', make_stream_port_id()) + port_id = port_data.setdefault('id', str(next(stream_port_ids))) if port_id in port_ids: raise Exception('Port id "{}" already exists in {}s'.format(port_id, direction)) port_ids.add(port_id) @@ -191,18 +190,18 @@ class Block(Element): Evaluate the checks: each check must evaluate to True. """ Element.validate(self) - self._run_checks() + self._run_asserts() self._validate_generate_mode_compat() self._validate_var_value() - def _run_checks(self): + def _run_asserts(self): """Evaluate the checks""" - for check in self.checks: + for expr in self.asserts: try: - if not self.evaluate(check): - self.add_error_message('Check "{}" failed.'.format(check)) + if not self.evaluate(expr): + self.add_error_message('Assertion "{}" failed.'.format(expr)) except: - self.add_error_message('Check "{}" did not evaluate.'.format(check)) + self.add_error_message('Assertion "{}" did not evaluate.'.format(expr)) def _validate_generate_mode_compat(self): """check if this is a GUI block and matches the selected generate option""" diff --git a/grc/core/generator/flow_graph.py.mako b/grc/core/generator/flow_graph.py.mako index b054f7aebf..877c9eee9d 100644 --- a/grc/core/generator/flow_graph.py.mako +++ b/grc/core/generator/flow_graph.py.mako @@ -90,9 +90,9 @@ class ${class_name}(gr.top_block, Qt.QWidget): self.restoreGeometry(self.settings.value("geometry")) except: pass -#elif $generate_options == 'bokeh_gui' +% elif generate_options == 'bokeh_gui': -class $(class_name)(gr.top_block): +class ${class_name}(gr.top_block): def __init__(self, doc): gr.top_block.__init__(self, "${title}") self.doc = doc @@ -117,8 +117,8 @@ class ${class_name}(gr.hier_block2): <%def name="make_io_sig(io_sigs)"> <% size_strs = ['%s*%s'%(io_sig['size'], io_sig['vlen']) for io_sig in io_sigs] %> % if len(io_sigs) == 0: -gr.io_signature(0, 0, 0)\ - #elif len(${io_sigs}) == 1 +gr.io_signature(0, 0, 0) + % elif len(io_sigs) == 1: gr.io_signature(1, 1, ${size_strs[0]}) % else: gr.io_signaturev(${len(io_sigs)}, ${len(io_sigs)}, [${', '.join(ize_strs)}]) @@ -200,7 +200,7 @@ gr.io_signaturev(${len(io_sigs)}, ${len(io_sigs)}, [${', '.join(ize_strs)}]) ########################################################## ## Create a layout entry if not manually done for BokehGUI ########################################################## -%if generate_options == 'bokeh_gui' +% if generate_options == 'bokeh_gui': if self.widget_lst: input_t = bokehgui.BokehLayout.widgetbox(self.widget_lst) widgetbox = bokehgui.BokehLayout.WidgetLayout(input_t) @@ -357,7 +357,7 @@ def main(top_block_cls=${class_name}, options=None): sys.stderr.write("Monitor '{0}' does not have an enable ('en') parameter.".format("tb.${m.name}")) % endfor qapp.exec_() - #elif $generate_options == 'bokeh_gui' + % elif generate_options == 'bokeh_gui': serverProc, port = bokehgui.utils.create_server() def killProc(signum, frame, tb): tb.stop() @@ -366,16 +366,16 @@ def main(top_block_cls=${class_name}, options=None): serverProc.kill() time.sleep(1) try: - ${'#'} Define the document instance + # Define the document instance doc = curdoc() - #if ${flow_graph.get_option('author')} - doc.title = "$title - ${flow_graph.get_option('author')}" - #else + % if flow_graph.get_option('author'): + doc.title = "${title} - ${flow_graph.get_option('author')}" + % else: doc.title = "${title}" - #end if + % endif session = push_session(doc, session_id="${flow_graph.get_option('id')}", url = "http://localhost:" + port + "/bokehgui") - ${'#'} Create Top Block instance + # Create Top Block instance tb = top_block_cls(doc) try: tb.start() diff --git a/grc/core/generator/top_block.py b/grc/core/generator/top_block.py index d6a7e35575..799ebb1076 100644 --- a/grc/core/generator/top_block.py +++ b/grc/core/generator/top_block.py @@ -4,7 +4,6 @@ import os import tempfile import textwrap import time -import re from mako.template import Template @@ -33,14 +32,13 @@ class TopBlockGenerator(object): self._generate_options = self._flow_graph.get_option('generate_options') self._mode = TOP_BLOCK_FILE_MODE - dirname = os.path.dirname(file_path) # Handle the case where the directory is read-only # In this case, use the system's temp directory - if not os.access(dirname, os.W_OK): - dirname = tempfile.gettempdir() + if not os.access(file_path, os.W_OK): + file_path = tempfile.gettempdir() filename = self._flow_graph.get_option('id') + '.py' - self.file_path = os.path.join(dirname, filename) - self._dirname = dirname + self.file_path = os.path.join(file_path, filename) + self._dirname = file_path def _warnings(self): throttling_blocks = [b for b in self._flow_graph.get_enabled_blocks() @@ -228,7 +226,7 @@ class TopBlockGenerator(object): key = port.key if not key.isdigit(): - key = re.findall(r'\d+', key)[0] + key.repr(key) return '({block}, {key})'.format(block=block, key=key) diff --git a/grc/core/schema_checker/block.py b/grc/core/schema_checker/block.py index db8830fddf..ea079b4276 100644 --- a/grc/core/schema_checker/block.py +++ b/grc/core/schema_checker/block.py @@ -44,7 +44,7 @@ BLOCK_SCHEME = expand( inputs=Spec(types=list, required=False, item_scheme=PORT_SCHEME), outputs=Spec(types=list, required=False, item_scheme=PORT_SCHEME), - checks=(list, str_), + asserts=(list, str_), value=str_, templates=Spec(types=dict, required=False, item_scheme=TEMPLATES_SCHEME), diff --git a/grc/core/utils/hide_bokeh_gui_options_if_not_installed.py b/grc/core/utils/hide_bokeh_gui_options_if_not_installed.py index f209e515a8..ab4a42b2e7 100644 --- a/grc/core/utils/hide_bokeh_gui_options_if_not_installed.py +++ b/grc/core/utils/hide_bokeh_gui_options_if_not_installed.py @@ -20,5 +20,8 @@ def hide_bokeh_gui_options_if_not_installed(options_blk): try: import bokehgui except ImportError: - generate_options = options_blk.params['generate_options'] - del generate_options.options['bokeh_gui'] + for param in options_blk.parameters_data: + if param['id'] == 'generate_options': + ind = param['options'].index('bokeh_gui') + del param['options'][ind] + del param['option_labels'][ind] diff --git a/grc/gui/MainWindow.py b/grc/gui/MainWindow.py index ec927a4777..e737610a79 100644 --- a/grc/gui/MainWindow.py +++ b/grc/gui/MainWindow.py @@ -71,7 +71,7 @@ class MainWindow(Gtk.ApplicationWindow): vbox = Gtk.VBox() self.add(vbox) - icon_theme = gtk.icon_theme_get_default() + icon_theme = Gtk.IconTheme.get_default() icon = icon_theme.lookup_icon("gnuradio-grc", 48, 0) if not icon: # Set window icon diff --git a/grc/gui/Notebook.py b/grc/gui/Notebook.py index 21db913c0e..9f63190b31 100644 --- a/grc/gui/Notebook.py +++ b/grc/gui/Notebook.py @@ -151,7 +151,7 @@ class Page(Gtk.HBox): generator """ platform = self.flow_graph.parent_platform - return platform.Generator(self.flow_graph, self.file_path) + return platform.Generator(self.flow_graph, os.path.dirname(self.file_path)) def _handle_button(self, button): """ |