diff options
author | Johnathan Corgan | 2009-09-04 15:47:49 -0700 |
---|---|---|
committer | Johnathan Corgan | 2009-09-04 15:47:49 -0700 |
commit | d80add605536891da950126b25b16ab89d8e7cae (patch) | |
tree | 10777578472d39e25a821284e1409be7a6caae89 /grc/gui/Param.py | |
parent | 20006003431d7260b04964eb684b1746ffb0a85f (diff) | |
parent | 6b47cc3dc64d86cb19eb28ab4843a0f278db6d0a (diff) | |
download | gnuradio-d80add605536891da950126b25b16ab89d8e7cae.tar.gz gnuradio-d80add605536891da950126b25b16ab89d8e7cae.tar.bz2 gnuradio-d80add605536891da950126b25b16ab89d8e7cae.zip |
Merge branch 'grc' from http://gnuradio.org/git/jblum.git into master
we dont use test() -> remove it
Made the window for the pass band filters integers (take firdes.WIN_XXX).
Evaluation fix in param.to_code().
Removed the flagging api and usage from the base classes.
added ref scale param to fft and waterfall
Switched the python classes to inherit from the base and gui classes.
port and param types from an overloaded method
todo
Replaced TYPES in Port and Param with types parameter.
made is_virtual_xxx a block level function, used by port and param classes
added stream id type and checking in evaluate
avoid loops
Recursive resolution of virtual sources.
added virtual source and added stream ids, logic to clone in port
added rewrite methods to element to separate from validation logic
Added virtual sink and logic to clone port.
removed repurposing of pads
Work on command line options for generated code.
renamed the colors dialog to types
use pkgpythondir
...
Diffstat (limited to 'grc/gui/Param.py')
-rw-r--r-- | grc/gui/Param.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/grc/gui/Param.py b/grc/gui/Param.py index a11fd9065..4955d3336 100644 --- a/grc/gui/Param.py +++ b/grc/gui/Param.py @@ -23,6 +23,71 @@ import pygtk pygtk.require('2.0') import gtk +class InputParam(gtk.HBox): + """The base class for an input parameter inside the input parameters dialog.""" + + def __init__(self, param, _handle_changed): + gtk.HBox.__init__(self) + self.param = param + self._handle_changed = _handle_changed + self.label = gtk.Label('') #no label, markup is added by set_markup + self.label.set_size_request(150, -1) + self.pack_start(self.label, False) + self.set_markup = lambda m: self.label.set_markup(m) + self.tp = None + def set_color(self, color): pass + +class EntryParam(InputParam): + """Provide an entry box for strings and numbers.""" + + def __init__(self, *args, **kwargs): + InputParam.__init__(self, *args, **kwargs) + self.entry = input = gtk.Entry() + input.set_text(self.param.get_value()) + input.connect('changed', self._handle_changed) + self.pack_start(input, True) + self.get_text = input.get_text + #tool tip + self.tp = gtk.Tooltips() + self.tp.set_tip(self.entry, '') + self.tp.enable() + def set_color(self, color): self.entry.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(color)) + +class EnumParam(InputParam): + """Provide an entry box for Enum types with a drop down menu.""" + + def __init__(self, *args, **kwargs): + InputParam.__init__(self, *args, **kwargs) + self._input = gtk.combo_box_new_text() + for option in self.param.get_options(): self._input.append_text(option.get_name()) + self._input.set_active(self.param.get_option_keys().index(self.param.get_value())) + self._input.connect('changed', self._handle_changed) + self.pack_start(self._input, False) + def get_text(self): return self.param.get_option_keys()[self._input.get_active()] + +class EnumEntryParam(InputParam): + """Provide an entry box and drop down menu for Raw Enum types.""" + + def __init__(self, *args, **kwargs): + InputParam.__init__(self, *args, **kwargs) + self._input = gtk.combo_box_entry_new_text() + for option in self.param.get_options(): self._input.append_text(option.get_name()) + try: self._input.set_active(self.param.get_option_keys().index(self.param.get_value())) + except: + self._input.set_active(-1) + self._input.get_child().set_text(self.param.get_value()) + self._input.connect('changed', self._handle_changed) + self._input.get_child().connect('changed', self._handle_changed) + self.pack_start(self._input, False) + def get_text(self): + if self._input.get_active() == -1: return self._input.get_child().get_text() + return self.param.get_option_keys()[self._input.get_active()] + def set_color(self, color): + if self._input.get_active() == -1: #custom entry, use color + self._input.get_child().modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(color)) + else: #from enum, make white background + self._input.get_child().modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ffffff')) + PARAM_MARKUP_TMPL="""\ #set $foreground = $param.is_valid() and 'black' or 'red' <span foreground="$foreground" font_desc="Sans 7.5"><b>$encode($param.get_name()): </b>$encode(repr($param))</span>""" @@ -49,6 +114,18 @@ Error: class Param(Element): """The graphical parameter.""" + def get_input_class(self): + """ + Get the graphical gtk class to represent this parameter. + An enum requires and combo parameter. + A non-enum with options gets a combined entry/combo parameter. + All others get a standard entry parameter. + @return gtk input class + """ + if self.is_enum(): return EnumParam + if self.get_options(): return EnumEntryParam + return EntryParam + def update(self): """ Called when an external change occurs. |