mailr16065 - in /branches/uf_redesign/gui: uf_objects.py wizard.py wizard_elements.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on May 07, 2012 - 17:53:
Author: bugman
Date: Mon May  7 17:53:44 2012
New Revision: 16065

URL: http://svn.gna.org/viewcvs/relax?rev=16065&view=rev
Log:
The 'num_or_num_list' and 'num_or_num_tuple' argument types are now supported 
in the GUI.

These are for the auto-generated GUI user functions.  The 'num_or_num_tuple' 
argument type is used
for the diffusion_tensor.init user function, for example.


Modified:
    branches/uf_redesign/gui/uf_objects.py
    branches/uf_redesign/gui/wizard.py
    branches/uf_redesign/gui/wizard_elements.py

Modified: branches/uf_redesign/gui/uf_objects.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/uf_redesign/gui/uf_objects.py?rev=16065&r1=16064&r2=16065&view=diff
==============================================================================
--- branches/uf_redesign/gui/uf_objects.py (original)
+++ branches/uf_redesign/gui/uf_objects.py Mon May  7 17:53:44 2012
@@ -220,22 +220,27 @@
                 self.element_bool(key=arg['name'], 
element_type=arg['wiz_element_type'], sizer=sizer, desc=desc, 
tooltip=arg['desc'], default=arg['default'])
 
             # Sequence types.
-            elif arg['py_type'] in ['float_list', 'int_list', 'num_list', 
'str_list', 'float_tuple', 'int_tuple', 'num_tuple', 'str_tuple']:
+            elif arg['py_type'] in ['float_list', 'int_list', 'num_list', 
'str_list', 'float_tuple', 'int_tuple', 'num_tuple', 'str_tuple', 
'num_or_num_list', 'num_or_num_tuple']:
                 # The sequence type.
-                if arg['py_type'] in ['float_list', 'int_list', 'num_list', 
'str_list']:
+                if arg['py_type'] in ['float_list', 'int_list', 'num_list', 
'str_list', 'num_or_num_list']:
                     seq_type = 'list'
                 else:
                     seq_type = 'tuple'
 
                 # The value type.
-                if arg['py_type'] in ['float_list', 'float_tuple', 
'num_list', 'num_tuple']:
+                if arg['py_type'] in ['float_list', 'float_tuple', 
'num_list', 'num_or_num_list', 'num_tuple', 'num_or_num_tuple']:
                     value_type = 'float'
                 elif arg['py_type'] in ['int_list', 'int_tuple']:
                     value_type = 'int'
                 else:
                     value_type = 'str'
 
-                self.element_sequence(key=arg['name'], 
element_type=arg['wiz_element_type'], seq_type=seq_type, 
value_type=value_type, sizer=sizer, desc=desc, 
combo_choices=arg['wiz_combo_choices'], combo_data=arg['wiz_combo_data'], 
combo_default=arg['wiz_combo_default'], 
combo_list_size=arg['wiz_combo_list_size'], tooltip=arg['desc'], 
read_only=arg['wiz_read_only'])
+                # Single values.
+                single_value = False
+                if arg['py_type'] in ['num_or_num_list', 'num_or_num_tuple']:
+                    single_value = True
+
+                self.element_sequence(key=arg['name'], 
element_type=arg['wiz_element_type'], seq_type=seq_type, 
value_type=value_type, sizer=sizer, desc=desc, 
combo_choices=arg['wiz_combo_choices'], combo_data=arg['wiz_combo_data'], 
combo_default=arg['wiz_combo_default'], 
combo_list_size=arg['wiz_combo_list_size'], tooltip=arg['desc'], 
single_value=single_value, read_only=arg['wiz_read_only'])
 
             # String list of lists.
             elif arg['py_type'] in ['float_list_of_lists', 
'int_list_of_lists', 'num_list_of_lists', 'str_list_of_lists', 
'float_tuple_of_tuples', 'int_tuple_of_tuples', 'num_tuple_of_tuples', 
'str_tuple_of_tuples']:

Modified: branches/uf_redesign/gui/wizard.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/uf_redesign/gui/wizard.py?rev=16065&r1=16064&r2=16065&view=diff
==============================================================================
--- branches/uf_redesign/gui/wizard.py (original)
+++ branches/uf_redesign/gui/wizard.py Mon May  7 17:53:44 2012
@@ -679,7 +679,7 @@
         self._elements[key] = element
 
 
-    def element_sequence(self, key=None, sizer=None, element_type='default', 
seq_type=None, value_type=None, desc=None, combo_choices=None, 
combo_data=None, combo_default=None, combo_list_size=None, tooltip=None, 
divider=None, padding=0, spacer=None, read_only=False):
+    def element_sequence(self, key=None, sizer=None, element_type='default', 
seq_type=None, value_type=None, desc=None, combo_choices=None, 
combo_data=None, combo_default=None, combo_list_size=None, tooltip=None, 
divider=None, padding=0, spacer=None, single_value=False, read_only=False):
         """Set up the element and store it.
 
         @keyword key:               The dictionary key to store the element 
with.
@@ -710,12 +710,14 @@
         @type padding:              int
         @keyword spacer:            The amount of spacing to add below the 
field in pixels.  If None, a stretchable spacer will be used.
         @type spacer:               None or int
+        @keyword single_value:      A flag which if True will cause single 
input values to be treated as single values rather than a list or tuple.
+        @type single_value:         bool
         @keyword read_only:         A flag which if True means that the text 
of the element cannot be edited.
         @type read_only:            bool
         """
 
         # Create the element.
-        element = Sequence(name=key, element_type=element_type, 
seq_type=seq_type, value_type=value_type, parent=self, sizer=sizer, 
desc=desc, combo_choices=combo_choices, combo_data=combo_data, 
combo_default=combo_default, combo_list_size=combo_list_size, 
tooltip=tooltip, divider=divider, padding=padding, spacer=spacer, 
read_only=read_only)
+        element = Sequence(name=key, element_type=element_type, 
seq_type=seq_type, value_type=value_type, parent=self, sizer=sizer, 
desc=desc, combo_choices=combo_choices, combo_data=combo_data, 
combo_default=combo_default, combo_list_size=combo_list_size, 
tooltip=tooltip, divider=divider, padding=padding, spacer=spacer, 
single_value=single_value, read_only=read_only)
 
         # Store it.
         self._elements[key] = element

Modified: branches/uf_redesign/gui/wizard_elements.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/uf_redesign/gui/wizard_elements.py?rev=16065&r1=16064&r2=16065&view=diff
==============================================================================
--- branches/uf_redesign/gui/wizard_elements.py (original)
+++ branches/uf_redesign/gui/wizard_elements.py Mon May  7 17:53:44 2012
@@ -54,7 +54,7 @@
         - tuple of strings
     """
 
-    def __init__(self, name=None, parent=None, element_type='default', 
seq_type=None, value_type=None, sizer=None, desc=None, combo_choices=None, 
combo_data=None, combo_default=None, combo_list_size=None, tooltip=None, 
divider=None, padding=0, spacer=None, read_only=False):
+    def __init__(self, name=None, parent=None, element_type='default', 
seq_type=None, value_type=None, sizer=None, desc=None, combo_choices=None, 
combo_data=None, combo_default=None, combo_list_size=None, tooltip=None, 
divider=None, padding=0, spacer=None, single_value=False, read_only=False):
         """Set up the element.
 
         @keyword name:              The name of the element to use in 
titles, etc.
@@ -87,6 +87,8 @@
         @type padding:              int
         @keyword spacer:            The amount of spacing to add below the 
field in pixels.  If None, a stretchable spacer will be used.
         @type spacer:               None or int
+        @keyword single_value:      A flag which if True will cause single 
input values to be treated as single values rather than a list or tuple.
+        @type single_value:         bool
         @keyword read_only:         A flag which if True means that the text 
of the element cannot be edited.
         @type read_only:            bool
         """
@@ -96,6 +98,7 @@
         self.element_type = element_type
         self.seq_type = seq_type
         self.value_type = value_type
+        self.single_value = single_value
 
         # The sequence types.
         if seq_type == 'list':
@@ -205,11 +208,18 @@
         # Convert, handling bad user behaviour.
         try:
             value = self.convert_from_gui(value)
-        except:
+        except RelaxError:
             if self.seq_type == 'list':
                 value = []
             else:
                 value = ()
+
+        # Handle single values.
+        if self.single_value and len(value) == 1:
+            if self.seq_type == 'list' and not isinstance(value, list):
+                value = [value]
+            elif self.seq_type == 'tuple' and not isinstance(value, tuple):
+                value = (value,)
 
         # Return the value.
         return value
@@ -240,8 +250,12 @@
         @type value:    list of str
         """
 
+        # Handle single values.
+        if self.single_value and len(value) == 1:
+            value = value[0]
+
         # Convert and set the value.
-        self._field.SetValue(list_to_gui(value))
+        self._field.SetValue(self.convert_to_gui(value))
 
 
     def open_dialog(self, event):




Related Messages


Powered by MHonArc, Updated Mon May 07 18:20:02 2012