diff options
Diffstat (limited to 'grc')
-rw-r--r-- | grc/blocks/options.xml | 4 | ||||
-rw-r--r-- | grc/blocks/parameter.xml | 6 | ||||
-rw-r--r-- | grc/core/Element.pyi | 54 | ||||
-rw-r--r-- | grc/core/generator/flow_graph.tmpl | 17 | ||||
-rwxr-xr-x | grc/main.py | 12 |
5 files changed, 76 insertions, 17 deletions
diff --git a/grc/blocks/options.xml b/grc/blocks/options.xml index 1dee986c5c..55f411884d 100644 --- a/grc/blocks/options.xml +++ b/grc/blocks/options.xml @@ -20,8 +20,8 @@ from PyQt4 import Qt import sys #end if #if not $generate_options().startswith('hb') -from optparse import OptionParser -from gnuradio.eng_option import eng_option +from argparse import ArgumentParser +from gnuradio.eng_arg import eng_float, intx from gnuradio import eng_notation #end if</import> <make></make> diff --git a/grc/blocks/parameter.xml b/grc/blocks/parameter.xml index e35b8f4d1d..b0713218fd 100644 --- a/grc/blocks/parameter.xml +++ b/grc/blocks/parameter.xml @@ -55,9 +55,11 @@ </option> <option> <name>String</name> - <key>string</key> + <key>str</key> <opt>type:string</opt> - </option> + </option> + <!-- Do not forget to add option value type handler import into + grc/python/flow_graph.tmpl for each new type. --> <!-- not supported yet in tmpl <option> <name>Boolean</name> diff --git a/grc/core/Element.pyi b/grc/core/Element.pyi new file mode 100644 index 0000000000..c81180a33e --- /dev/null +++ b/grc/core/Element.pyi @@ -0,0 +1,54 @@ +# Copyright 2008, 2009, 2015, 2016 Free Software Foundation, Inc. +# This file is part of GNU Radio +# +# GNU Radio Companion is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# GNU Radio Companion is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +from . import Platform, FlowGraph, Block + +def lazy_property(func): + return func + + +class Element(object): + + def __init__(self, parent=None): + ... + + @property + def parent(self): + ... + + def get_parent_by_type(self, cls): + parent = self.parent + if parent is None: + return None + elif isinstance(parent, cls): + return parent + else: + return parent.get_parent_by_type(cls) + + @lazy_property + def parent_platform(self): -> Platform.Platform + ... + + @lazy_property + def parent_flowgraph(self): -> FlowGraph.FlowGraph + ... + + @lazy_property + def parent_block(self): -> Block.Block + ... + + diff --git a/grc/core/generator/flow_graph.tmpl b/grc/core/generator/flow_graph.tmpl index 07c4169525..436e3bbf0d 100644 --- a/grc/core/generator/flow_graph.tmpl +++ b/grc/core/generator/flow_graph.tmpl @@ -336,19 +336,22 @@ $short_id#slurp def argument_parser(): - #set $desc_args = 'usage="%prog: [options]", option_class=eng_option' + #set $arg_parser_args = '' #if $flow_graph.get_option('description') - #set $desc_args += ', description=description' + #set $arg_parser_args = 'description=description' description = $repr($flow_graph.get_option('description')) #end if - parser = OptionParser($desc_args) + parser = ArgumentParser($arg_parser_args) #for $param in $parameters #set $type = $param.get_param('type').get_value() #if $type #silent $params_eq_list.append('%s=options.%s'%($param.get_id(), $param.get_id())) - parser.add_option( - "$make_short_id($param)", "--$param.get_id().replace('_', '-')", dest="$param.get_id()", type="$type", default=$make_default($type, $param), - help="Set $($param.get_param('label').get_evaluated() or $param.get_id()) [default=%default]") + parser.add_argument( + #if $make_short_id($param) + "$make_short_id($param)", #slurp + #end if + "--$param.get_id().replace('_', '-')", dest="$param.get_id()", type=$type, default=$make_default($type, $param), + help="Set $($param.get_param('label').get_evaluated() or $param.get_id()) [default=%(default)r]") #end if #end for return parser @@ -358,7 +361,7 @@ def argument_parser(): def main(top_block_cls=$(class_name), options=None): #if $parameters if options is None: - options, _ = argument_parser().parse_args() + options = argument_parser().parse_args() #end if #if $flow_graph.get_option('realtime_scheduling') if gr.enable_realtime_scheduling() != gr.RT_OK: diff --git a/grc/main.py b/grc/main.py index ae7a0ce115..0edab40769 100755 --- a/grc/main.py +++ b/grc/main.py @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -import optparse +import argparse import gtk from gnuradio import gr @@ -34,10 +34,10 @@ This is free software, and you are welcome to redistribute it. def main(): - parser = optparse.OptionParser( - usage='usage: %prog [options] [saved flow graphs]', - version=VERSION_AND_DISCLAIMER_TEMPLATE % gr.version()) - options, args = parser.parse_args() + parser = argparse.ArgumentParser( + description=VERSION_AND_DISCLAIMER_TEMPLATE % gr.version()) + parser.add_argument('flow_graphs', nargs='*') + args = parser.parse_args() try: gtk.window_set_default_icon(gtk.IconTheme().load_icon('gnuradio-grc', 256, 0)) @@ -50,6 +50,6 @@ def main(): version_parts=(gr.major_version(), gr.api_version(), gr.minor_version()), install_prefix=gr.prefix() ) - ActionHandler(args, platform) + ActionHandler(args.flow_graphs, platform) gtk.main() |