diff options
Diffstat (limited to 'grc/gui')
-rw-r--r-- | grc/gui/Param.py | 52 |
1 files changed, 37 insertions, 15 deletions
diff --git a/grc/gui/Param.py b/grc/gui/Param.py index ec4f7d5f94..6bd45fae86 100644 --- a/grc/gui/Param.py +++ b/grc/gui/Param.py @@ -17,14 +17,14 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA """ -import Utils -from Element import Element -from . Constants import PARAM_FONT, GR_PREFIX +import os + import pygtk pygtk.require('2.0') import gtk -import Colors -import os + +from . import Colors, Utils, Constants +from . Element import Element class InputParam(gtk.HBox): @@ -44,8 +44,15 @@ class InputParam(gtk.HBox): self._have_pending_changes = False #connect events self.connect('show', self._update_gui) - def set_color(self, color): pass - def set_tooltip_text(self, text): pass + + def set_color(self, color): + pass + + def set_tooltip_text(self, text): + pass + + def get_text(self): + raise NotImplementedError() def _update_gui(self, *args): """ @@ -115,10 +122,14 @@ class EntryParam(InputParam): self._input.connect('focus-out-event', self._apply_change) self._input.connect('key-press-event', self._handle_key_press) self.pack_start(self._input, True) - def get_text(self): return self._input.get_text() + + def get_text(self): + return self._input.get_text() + def set_color(self, color): self._input.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(color)) self._input.modify_text(gtk.STATE_NORMAL, Colors.PARAM_ENTRY_TEXT_COLOR) + def set_tooltip_text(self, text): try: self._input.set_tooltip_text(text) @@ -147,8 +158,9 @@ class MultiLineEntryParam(InputParam): self.pack_start(self._sw, True) def get_text(self): - return self._buffer.get_text(self._buffer.get_start_iter(), - self._buffer.get_end_iter()).strip() + buf = self._buffer + return buf.get_text(buf.get_start_iter(), + buf.get_end_iter()).strip() def set_color(self, color): self._view.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(color)) @@ -172,7 +184,10 @@ class EnumParam(InputParam): self._input.connect('changed', self._editing_callback) self._input.connect('changed', self._apply_change) self.pack_start(self._input, False) - def get_text(self): return self.param.get_option_keys()[self._input.get_active()] + + def get_text(self): + return self.param.get_option_keys()[self._input.get_active()] + def set_tooltip_text(self, text): try: self._input.set_tooltip_text(text) @@ -196,9 +211,11 @@ class EnumEntryParam(InputParam): self._input.get_child().connect('focus-out-event', self._apply_change) self._input.get_child().connect('key-press-event', self._handle_key_press) 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_tooltip_text(self, text): try: if self._input.get_active() == -1: #custom entry @@ -207,6 +224,7 @@ class EnumEntryParam(InputParam): self._input.set_tooltip_text(text) except AttributeError: pass # no tooltips for old GTK + 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)) @@ -237,7 +255,7 @@ class FileParam(EntryParam): if self.param.get_key() == 'qt_qss_theme': dirname = os.path.dirname(dirname) # trim filename if not os.path.exists(dirname): - dirname = os.path.join(GR_PREFIX, '/share/gnuradio/themes') + dirname = os.path.join(Constants.GR_PREFIX, '/share/gnuradio/themes') if not os.path.exists(dirname): dirname = os.getcwd() # fix bad paths @@ -250,6 +268,8 @@ class FileParam(EntryParam): gtk.FILE_CHOOSER_ACTION_SAVE, ('gtk-cancel',gtk.RESPONSE_CANCEL, 'gtk-save',gtk.RESPONSE_OK)) file_dialog.set_do_overwrite_confirmation(True) file_dialog.set_current_name(basename) #show the current filename + else: + raise ValueError("Can't open file chooser dialog for type " + repr(self.param.get_type())) file_dialog.set_current_folder(dirname) #current directory file_dialog.set_select_multiple(False) file_dialog.set_local_only(True) @@ -299,7 +319,8 @@ Error: class Param(Element): """The graphical parameter.""" - def __init__(self): Element.__init__(self) + def __init__(self): + Element.__init__(self) def get_input(self, *args, **kwargs): """ @@ -320,7 +341,7 @@ class Param(Element): elif self.get_options(): input_widget = EnumEntryParam(self, *args, **kwargs) - elif self.get_type() == '_multiline': + elif self.get_type() in ('_multiline', '_multiline_python_external'): input_widget = MultiLineEntryParam(self, *args, **kwargs) else: @@ -335,4 +356,5 @@ class Param(Element): Returns: a pango markup string """ - return Utils.parse_template(PARAM_MARKUP_TMPL, param=self, font=PARAM_FONT) + return Utils.parse_template(PARAM_MARKUP_TMPL, + param=self, font=Constants.PARAM_FONT) |