Changeset 75a7ece in sasview for prview/perspectives


Ignore:
Timestamp:
Jan 21, 2011 1:06:10 PM (14 years ago)
Author:
Gervaise Alina <gervyh@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
cacbd7d
Parents:
b5181f6
Message:

allow selection of multiple file for prview at laoding time

Location:
prview/perspectives/pr
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • prview/perspectives/pr/pr.py

    r75df58b r75a7ece  
    13111311        """ 
    13121312        if len(data_list) > 1: 
    1313             msg = "Pr panel does not allow more than one value" 
    1314             msg += " at this time" 
    1315             raise ValueError, msg 
     1313            msg = "Pr panel does not allow multiple Data.\n" 
     1314            msg += "Please select one!\n" 
     1315            from pr_widgets import DataDialog 
     1316            dlg = DataDialog(data_list=data_list, text=msg) 
     1317            if dlg.ShowModal() == wx.ID_OK: 
     1318                data = dlg.get_data() 
     1319                if issubclass(data.__class__, LoaderData1D): 
     1320                    self.control_panel._change_file(evt=None, data=data) 
     1321                else:     
     1322                    msg = "Pr cannot be computed for data of " 
     1323                    msg += "type %s" % (data_list[0].__class__.__name__) 
     1324                    wx.PostEvent(self.parent,  
     1325                             StatusEvent(status=msg, info='error')) 
    13161326        elif len(data_list) == 1: 
    13171327            if issubclass(data_list[0].__class__, LoaderData1D): 
     
    13201330                msg = "Pr cannot be computed for" 
    13211331                msg += " data of type %s" % (data_list[0].__class__.__name__) 
    1322                 raise ValueError, msg 
     1332                wx.PostEvent(self.parent,  
     1333                             StatusEvent(status=msg, info='error')) 
     1334        else: 
     1335            msg = "Pr contain no data" 
     1336            wx.PostEvent(self.parent, StatusEvent(status=msg, info='warning')) 
    13231337             
    13241338    def post_init(self): 
  • prview/perspectives/pr/pr_widgets.py

    r7116b6e0 r75a7ece  
    1616import wx 
    1717import os 
    18  
     18from wx.lib.scrolledpanel import ScrolledPanel 
    1919class PrTextCtrl(wx.TextCtrl): 
    2020    """ 
     
    119119        """ 
    120120        return self._complete_path 
     121     
     122class DataDialog(wx.Dialog): 
     123    """ 
     124    Allow file selection at loading time 
     125    """ 
     126    def __init__(self, data_list, parent=None, text='', *args, **kwds): 
     127        wx.Dialog.__init__(self, parent, *args, **kwds) 
     128        self.list_of_ctrl = [] 
     129        self._do_layout(data_list, text=text) 
     130         
     131    def _do_layout(self, data_list, text=''): 
     132        """ 
     133        layout the dialog 
     134        """ 
     135        if not data_list or len(data_list) <= 1: 
     136            return  
     137        # Dialog box properties 
     138        self.SetTitle("Data Selection") 
     139        w = 400 
     140        h = 200 
     141        self.SetSize((w, h)) 
     142        sizer_main = wx.BoxSizer(wx.VERTICAL) 
     143        sizer_txt = wx.BoxSizer(wx.VERTICAL) 
     144        sizer_button = wx.BoxSizer(wx.HORIZONTAL) 
     145        choice_sizer = wx.GridBagSizer(5, 5) 
     146        #choice_sizer.SetMinSize((w-20, h-50)) 
     147        panel = ScrolledPanel(self, style=wx.RAISED_BORDER, size=(w-20, h-50)) 
     148        panel.SetupScrolling() 
     149        #add text 
     150        if text.strip() == "": 
     151            text = "This Perspective does not allow multiple data !\n" 
     152            text += "Please select only one Data.\n" 
     153        text_ctrl = wx.StaticText(self, -1, str(text)) 
     154        sizer_txt.Add(text_ctrl) 
     155        iy = 0 
     156        ix = 0 
     157        rbox = wx.RadioButton(panel, -1, str(data_list[0].name),  
     158                                  (10, 10), style= wx.RB_GROUP) 
     159        rbox.SetValue(True) 
     160        self.list_of_ctrl.append((rbox, data_list[0])) 
     161        choice_sizer.Add(rbox, (iy, ix), (1, 1), 
     162                         wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     163        for i in range(1, len(data_list)): 
     164            iy += 1 
     165            rbox = wx.RadioButton(panel, -1, str(data_list[i].name), (10, 10)) 
     166            rbox.SetValue(False) 
     167            self.list_of_ctrl.append((rbox, data_list[i])) 
     168            choice_sizer.Add(rbox, (iy, ix), 
     169                           (1, 1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     170        panel.SetSizer(choice_sizer) 
     171        #add sizer 
     172        sizer_button.Add((20, 20), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     173        button_cancel = wx.Button(self, wx.ID_CANCEL, "Cancel") 
     174        sizer_button.Add(button_cancel, 0, 
     175                          wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10) 
     176        button_OK = wx.Button(self, wx.ID_OK, "Ok") 
     177        button_OK.SetFocus() 
     178        sizer_button.Add(button_OK, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10) 
     179        static_line = wx.StaticLine(self, -1) 
     180         
     181        sizer_txt.Add(panel, 1, wx.EXPAND|wx.LEFT|wx.RIGHT, 5) 
     182        sizer_main.Add(sizer_txt, 1, wx.EXPAND|wx.ALL, 10) 
     183        sizer_main.Add(static_line, 0, wx.EXPAND, 0) 
     184        sizer_main.Add(sizer_button, 0, wx.EXPAND|wx.ALL, 10) 
     185        self.SetSizer(sizer_main) 
     186        self.Layout() 
     187         
     188    def get_data(self): 
     189        """ 
     190        return the selected data 
     191        """ 
     192        for item in self.list_of_ctrl: 
     193            rbox, data = item 
     194            if rbox.GetValue(): 
     195                return data  
Note: See TracChangeset for help on using the changeset viewer.