Author: bugman Date: Wed May 28 18:12:48 2014 New Revision: 23553 URL: http://svn.gna.org/viewcvs/relax?rev=23553&view=rev Log: Merged revisions 23551 via svnmerge from svn+ssh://bugman@xxxxxxxxxxx/svn/relax/trunk ........ r23551 | bugman | 2014-05-28 18:11:40 +0200 (Wed, 28 May 2014) | 11 lines Fix for bug #22102, the point argument of the dx.map user function failing in the GUI. This is reported at https://gna.org/bugs/?22102. The Sequence_2D GUI element used for all list of lists arguments in the user function GUI windows now correctly handles variable length lists. The first column which shows a count of the elements is now properly taken into account in the SetValue(), GetValue() and add_item() methods, via a new self.offset variable. The self.variable_length variable has also been fixed so it is not overwritten by the parent Sequence GUI element. ........ Modified: branches/frame_order_cleanup/ (props changed) branches/frame_order_cleanup/gui/input_elements/sequence.py branches/frame_order_cleanup/gui/input_elements/sequence_2D.py Propchange: branches/frame_order_cleanup/ ------------------------------------------------------------------------------ --- svnmerge-integrated (original) +++ svnmerge-integrated Wed May 28 18:12:48 2014 @@ -1 +1 @@ -/trunk:1-23548 +/trunk:1-23552 Modified: branches/frame_order_cleanup/gui/input_elements/sequence.py URL: http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/gui/input_elements/sequence.py?rev=23553&r1=23552&r2=23553&view=diff ============================================================================== --- branches/frame_order_cleanup/gui/input_elements/sequence.py (original) +++ branches/frame_order_cleanup/gui/input_elements/sequence.py Wed May 28 18:12:48 2014 @@ -480,9 +480,12 @@ raise RelaxError("Unknown base data type '%s'." % value_type) # Variable length. - self.variable_length = False - if dim == None: - self.variable_length = True + if not hasattr(self, 'variable_length'): + self.variable_length = False + self.offset = 0 + if dim == None: + self.variable_length = True + self.offset = 1 # The title of the dialog. title = "Edit the %s values." % name Modified: branches/frame_order_cleanup/gui/input_elements/sequence_2D.py URL: http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/gui/input_elements/sequence_2D.py?rev=23553&r1=23552&r2=23553&view=diff ============================================================================== --- branches/frame_order_cleanup/gui/input_elements/sequence_2D.py (original) +++ branches/frame_order_cleanup/gui/input_elements/sequence_2D.py Wed May 28 18:12:48 2014 @@ -29,6 +29,7 @@ # relax module imports. from gui.input_elements.sequence import Sequence, Sequence_list_ctrl, Sequence_window +from gui.string_conv import int_to_gui from lib.check_types import is_list_of_lists from status import Status; status = Status() @@ -163,8 +164,10 @@ # Variable length. self.variable_length = False + self.offset = 0 if dim[0] == None: self.variable_length = True + self.offset = 1 # Initialise the base class. Sequence_window.__init__(self, name=name, seq_type=seq_type, value_type=value_type, dim=dim) @@ -188,7 +191,7 @@ # Loop over the items. for j in range(self.dim[1]): # The item. - item = self.sequence.GetItem(i, j) + item = self.sequence.GetItem(i, j+self.offset) # Append the value. try: @@ -238,18 +241,14 @@ # Loop over the entries. for i in range(len(values)): - # Fixed dimension sequences - set the first value of the pre-created list. - if self.dim[0] != None: - self.sequence.SetStringItem(index=i, col=0, label=self.convert_to_gui(values[i][0])) - - # Variable dimension sequences - append the first value to the end of the blank list. - else: - self.sequence.InsertStringItem(sys.maxint, self.convert_to_gui(values[i][0])) + # Append a row for variable dimension sequences (the first element already exists). + if self.variable_length and i != 0: + self.sequence.InsertStringItem(i, int_to_gui(i+1)) # Loop over the values. - for j in range(1, self.dim[1]): + for j in range(self.dim[1]): # Set the value. - self.sequence.SetStringItem(i, j, self.convert_to_gui(values[i][j])) + self.sequence.SetStringItem(i, j+self.offset, self.convert_to_gui(values[i][j])) # Refresh. self.Refresh() @@ -268,10 +267,17 @@ # Set the column title. title = "%s%s" % (self.name[0].upper(), self.name[1:]) + # Add a column for the indices. + index_width = 0 + if self.variable_length: + index_width = 50 + self.sequence.InsertColumn(0, "Number") + self.sequence.SetColumnWidth(0, index_width) + # Add the columns. for i in range(self.dim[1]): - self.sequence.InsertColumn(i, self.titles[i]) - self.sequence.SetColumnWidth(i, self.width/self.dim[1]) + self.sequence.InsertColumn(i+self.offset, self.titles[i]) + self.sequence.SetColumnWidth(i+self.offset, (self.width - index_width)/self.dim[1]) # Add the table to the sizer. sizer.Add(self.sequence, 1, wx.ALL|wx.EXPAND, 0)