summaryrefslogtreecommitdiff
path: root/grc/gui
diff options
context:
space:
mode:
Diffstat (limited to 'grc/gui')
-rw-r--r--grc/gui/Param.py52
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)