Ignore:
Timestamp:
Feb 14, 2011 3:10:50 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:
20b228a0
Parents:
cadd049e
Message:

add bookmark button to toolbar

Location:
invariantview/perspectives/invariant
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • invariantview/perspectives/invariant/invariant.py

    r75fbd17 rcb69775  
    215215             
    216216             
     217    def clear_panel(self): 
     218        self.invariant_panel.clear_panel() 
     219         
    217220    def compute_helper(self, data): 
    218221        """ 
     
    256259            if datainfo.__class__.__name__ == 'list': 
    257260                data = datainfo[0] 
     261            else: 
     262                data = datainfo 
    258263            if data is None: 
    259264                msg = "invariant.set_state: datainfo parameter cannot" 
     
    265270            data.name = name 
    266271            data.filename = name 
    267             #datainfo = self.parent.create_gui_data(datainfo,None) 
     272            data = self.parent.create_gui_data(data,None) 
    268273            #self.__data = datainfo 
    269274            #self.__data.group_id = data.filename 
     
    273278                                        reset=True, title=self.__data.title)) 
    274279            #temp_state = copy.deepcopy(state) 
    275             temp_state = self.state_reader.get_state() 
     280            #temp_state = self.state_reader.get_state() 
    276281            # set state 
    277282            self.invariant_panel.is_state_data = True 
     
    281286            self.on_perspective(event=None) 
    282287            # Load the invariant states 
    283             self.temp_state = temp_state 
    284             self.invariant_panel.set_state(state=temp_state,data=self.__data)          
     288            self.temp_state = state 
     289            self.invariant_panel.set_state(state=state,data=self.__data)          
    285290            
    286291        except:  
  • invariantview/perspectives/invariant/invariant_panel.py

    r27f3831 rcb69775  
    1313from sans.guiframe.utils import check_float 
    1414from sans.guiframe.events import StatusEvent 
     15from sans.guiframe.events import AppendBookmarkEvent 
    1516from .invariant_details import InvariantDetailsPanel 
    1617from .invariant_details import InvariantContainer 
     
    8081        self.bookmark_num = 0 
    8182         
    82         self._set_bookmark_menu() 
     83        #self._set_bookmark_menu() 
    8384        #Init state 
    8485        self.set_state() 
     
    101102        ## Default file location for save 
    102103        self._default_save_location = os.getcwd() 
    103          
    104     def err_check_on_data(self): 
    105         """ 
    106         Check if data is valid for further computation 
    107         """ 
    108         flag = False 
    109         self.hint_msg_txt.SetLabel('') 
    110         #edit the panel 
    111         if self._data is not None: 
    112             if len(self._data.x[self._data.x==0]) > 0: 
    113                 flag = True 
    114                 msg = "Invariant: one of your q-values is zero. " 
    115                 msg += "Delete that entry before proceeding" 
    116                 self.hint_msg_txt.SetLabel(msg) 
    117                 wx.PostEvent(self.parent, StatusEvent(status=msg, 
    118                                                       info="warning", 
    119                                                       type="stop"))  
    120         return flag 
    121      
     104        self._set_bookmark_flag(False) 
     105         
    122106    def get_data(self): 
    123107        """ 
     
    137121        #edit the panel 
    138122        if self._data is not None: 
    139             self.err_check_on_data() 
    140123            self.get_state_by_num(0) 
    141124            data_name = self._data.name 
     
    196179            num = self.state.saved_state['state_num'] 
    197180            if num > 0 : 
    198                 self._undo_enable() 
    199181                self._set_undo_flag(True) 
    200182            if num < len(state.state_list) - 1: 
    201                 self._redo_enable() 
    202183                self._set_redo_flag(True) 
    203184                 
     
    225206            self.is_state_data = False 
    226207 
    227     def clear_panel(self, format='.svs'): 
     208    def clear_panel(self): 
    228209        """ 
    229210        Clear panel to defaults, used by set_state of manager 
    230211        """ 
    231         if format == '.svs': 
    232             self._data = None 
    233             # default data testctrl 
    234             self.hint_msg_txt.SetLabel('') 
    235             data_name = '' 
    236             data_qmin = '' 
    237             data_qmax = '' 
    238             self.data_name_tcl.SetValue(str(data_name)) 
    239             self.data_min_tcl.SetValue(str(data_qmin)) 
    240             self.data_max_tcl.SetValue(str(data_qmax)) 
    241             #reset output textctrl 
    242             self._reset_output() 
    243             #reset panel 
    244             self.reset_panel() 
    245             #reset state w/o data 
    246             self.set_state() 
    247             # default flags for state 
    248             self.new_state = False 
    249             self.is_state_data = False 
    250             self.is_power_out = False 
     212         
     213        self._data = None 
     214        # default data testctrl 
     215        self.hint_msg_txt.SetLabel('') 
     216        data_name = '' 
     217        data_qmin = '' 
     218        data_qmax = '' 
     219        self.data_name_tcl.SetValue(str(data_name)) 
     220        self.data_min_tcl.SetValue(str(data_qmin)) 
     221        self.data_max_tcl.SetValue(str(data_qmax)) 
     222        #reset output textctrl 
     223        self._reset_output() 
     224        #reset panel 
     225        self.reset_panel() 
     226        #reset state w/o data 
     227        self.set_state() 
     228        # default flags for state 
     229        self.new_state = False 
     230        self.is_state_data = False 
     231        self.is_power_out = False 
    251232 
    252233    def get_background(self): 
     
    525506        elif event != None:  
    526507            self._set_compute_state(state='compute') 
    527             self.button_bookmark.Enable(True) 
    528508            self._set_bookmark_flag(True) 
    529509            msg= "\n\nStarting a new invariant computation..."             
     
    531511             
    532512 
    533         if self._data is None or self.err_check_on_data(): 
     513        if self._data is None: 
    534514            return 
    535          
     515        self.button_details.Enable() 
    536516        #clear outputs textctrl  
    537517        self._reset_output() 
     
    625605 
    626606        #enable the button_ok for more details 
    627         self.button_details.Enable() 
     607        self._set_preview_flag(True) 
    628608         
    629609        if event != None:  
    630             if not self.button_report.IsEnabled(): 
    631                 self.button_report.Enable(True) 
    632                 self._set_preview_flag(True) 
    633             if not self.button_save.IsEnabled(): 
    634                 self.button_save.Enable(True) 
    635                 self._set_save_flag(True) 
     610            self._set_preview_flag(True) 
     611            self._set_save_flag(True) 
    636612            wx.PostEvent(self.parent, 
    637613                StatusEvent(status='\nFinished invariant computation...')) 
     
    653629         
    654630        if float(pre_state_num) <= 0: 
    655             self._undo_disable() 
    656631            self._set_undo_flag(False) 
    657632        else: 
    658             self._undo_enable() 
    659633            self._set_undo_flag(True) 
    660  
    661         self._redo_enable() 
    662634        self._set_redo_flag(True) 
    663635        self.is_power_out = False   
     
    680652         
    681653        if float(next_state_num)+2 > len(self.state.state_list): 
    682             self._redo_disable() 
    683654            self._set_redo_flag(False) 
    684655        else: 
    685             self._redo_enable() 
    686             self._set_redo_flag(FTrue) 
    687          
    688         self._undo_enable() 
     656            self._set_redo_flag(True) 
     657     
    689658        self._set_undo_flag(True) 
    690659        self.is_power_out = False 
     
    830799        self._enable_high_q_section() 
    831800        self._reset_output() 
    832         self.button_undo.Disable() 
    833801        self._set_undo_flag(False) 
    834         self.button_redo.Disable() 
    835802        self._set_redo_flag(False) 
    836         self.button_bookmark.Disable() 
    837803        self._set_bookmark_flag(False) 
    838         self.button_report.Disable() 
    839804        self._set_preview_flag(False) 
    840         self.button_save.Disable()  
    841805        self._set_save_flag(False) 
    842806        self.button_calculate.SetFocus() 
     
    886850 
    887851        event.Skip() 
    888         self._undo_enable() 
    889852        self._set_undo_flag(True) 
    890         self._redo_disable() 
    891853        self._set_redo_flag(False) 
    892854             
     
    930892                pass 
    931893        # Enable the undo button if it was not 
    932         self._undo_enable() 
    933894        self._set_undo_flag(True) 
    934         self._redo_disable() 
    935895        self._set_redo_flag(False) 
    936896         
     
    961921        #copy.deepcopy(self.state.saved_state) 
    962922        self.state.state_list[str(self.state.state_num)] = self.state.clone_state() 
    963         self._undo_disable() 
     923        self._set_undo_flag(False) 
    964924         
    965925    def _on_text(self, event): 
     
    1011971 
    1012972        event.Skip() 
    1013         self._undo_enable() 
    1014973        self._set_undo_flag(True) 
    1015         self._redo_disable() 
    1016974        self._set_redo_flag(False) 
    1017         self.button_bookmark.Enable(True) 
    1018975        self._set_bookmark_flag(True) 
    1019         self.button_report.Disable() 
    1020976        self._set_preview_flag(False) 
    1021977        
    1022          
    1023978    def _on_out_text(self, event):      
    1024979        """ 
     
    10871042        msg +=" Right click on the panel to retrieve this state" 
    10881043        #wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
    1089         name = "%d] bookmarked at %s on %s"%(self.bookmark_num,my_time, date) 
     1044        name = "%d] bookmarked at %s on %s"%(self.bookmark_num, my_time, date) 
    10901045         
    10911046        # append it to menu 
    1092         id = wx.NewId() 
    1093         self.popUpMenu.Append(id,name,str(msg)) 
    1094         wx.EVT_MENU(self, id, self._back_to_bookmark ) 
     1047        #id = wx.NewId() 
     1048        #self.popUpMenu.Append(id,name,str(msg)) 
     1049        #wx.EVT_MENU(self, id, self._back_to_bookmark) 
    10951050        state = self.state.clone_state() 
    10961051        comp_state = copy.deepcopy(self.state.state_list[str(compute_num)]) 
     
    11001055         
    11011056        wx.PostEvent(self.parent,StatusEvent(status=msg,info="info")) 
     1057        wx.PostEvent(self.parent,  
     1058                     AppendBookmarkEvent(title=name,  
     1059                                         hint=str(msg), 
     1060                                          handler=self._back_to_bookmark)) 
    11021061 
    11031062    def _back_to_bookmark(self,event): 
     
    11071066        and set it as a new state 
    11081067        """ 
     1068        self._manager.on_perspective(event) 
     1069        menu = event.GetEventObject() 
    11091070        ## post help message for the selected model  
    1110         msg = self.popUpMenu.GetHelpString(event.GetId()) 
     1071        msg = menu.GetHelpString(event.GetId()) 
    11111072        msg +=" reloaded" 
    11121073        wx.PostEvent(self.parent, StatusEvent(status = msg )) 
    11131074         
    1114         name= self.popUpMenu.GetLabel(event.GetId()) 
     1075        name= menu.GetLabel(event.GetId()) 
     1076         
    11151077        num,time = name.split(']') 
    11161078        current_state_num = self.state.state_num   
     
    11221084        self.state.state_list[str(state_num)] = self.state.clone_state() 
    11231085        self.state.state_num = state_num 
    1124         self._undo_enable() 
     1086        
    11251087        self._set_undo_flag(True) 
    11261088        self._info_bookmark_num(event) 
     
    11341096        if event == None: return 
    11351097        # get the object 
    1136         item = self.popUpMenu.FindItemById(event.GetId()) 
     1098        menu = event.GetEventObject() 
     1099        item = menu.FindItemById(event.GetId()) 
    11371100        text = item.GetText() 
    11381101        num = text.split(']')[0] 
     
    11591122        date= str( month)+"/"+str(day)+"/"+str(year) 
    11601123        return my_time, date 
    1161        
    1162     def _undo_enable(self): 
    1163         """ 
    1164         Enable undo button 
    1165         """ 
    1166         if not self.button_undo.IsEnabled(): 
    1167             self.button_undo.Enable(True) 
    1168  
    1169     def _undo_disable(self): 
    1170         """ 
    1171         Disable undo button 
    1172         """ 
    1173         if self.button_undo.IsEnabled(): 
    1174             self.button_undo.Disable() 
    1175  
    1176     def _redo_enable(self): 
    1177         """ 
    1178         Enable redo button 
    1179         """ 
    1180         if not self.button_redo.IsEnabled(): 
    1181             self.button_redo.Enable(True) 
    1182  
    1183     def _redo_disable(self): 
    1184         """ 
    1185         Disable redo button 
    1186         """ 
    1187         if self.button_redo.IsEnabled(): 
    1188             self.button_redo.Disable() 
     1124    
    11891125             
    11901126    def on_save(self, evt=None):  
     
    13031239        """ 
    13041240        #Sizer hint  
    1305         hint_msg = "First open data file from 'File' menu." 
    1306         hint_msg += "Then Highlight and right click on the data plot. \n" 
    1307         hint_msg += "Finally, select 'Compute Invariant'." 
     1241        hint_msg = "" 
     1242         
    13081243        self.hint_msg_txt = wx.StaticText(self, -1, hint_msg)   
    13091244        self.hint_msg_txt.SetForegroundColour("red") 
     
    13931328        """ 
    13941329        if event != None:  
    1395             self.button_bookmark.Enable(True) 
    13961330            self._set_bookmark_flag(True) 
    1397             self.button_report.Disable() 
    13981331            self._set_preview_flag(False) 
    1399             print "enable fit==>event!=None" 
    1400  
     1332     
    14011333        if self.fix_enable_low.IsEnabled(): 
    14021334             
     
    14141346        """ 
    14151347        if event != None:  
    1416             self.button_bookmark.Enable(True) 
    14171348            self._set_bookmark_flag(True) 
    1418             self.button_report.Disable() 
    14191349            self._set_preview_flag(False) 
    14201350             
     
    14431373        """ 
    14441374        if event != None:  
    1445             self.button_bookmark.Enable(True) 
    14461375            self._set_bookmark_flag(True) 
    1447             self.button_report.Disable() 
    14481376            self._set_preview_flag(False) 
    14491377        if self.guinier.GetValue(): 
     
    15461474        """ 
    15471475        if event != None:  
    1548             self.button_bookmark.Enable(True) 
    15491476            self._set_bookmark_flag(True) 
    1550             self.button_report.Disable() 
     1477     
    15511478            self._set_preview_flag(False) 
    15521479        if self.fix_enable_high.IsEnabled(): 
     
    15641491        """ 
    15651492        if event != None:  
    1566             self.button_bookmark.Enable(True) 
    15671493            self._set_bookmark_flag(True) 
    1568             self.button_report.Disable() 
    15691494            self._set_preview_flag(False) 
    15701495        if self.enable_high_cbox.GetValue(): 
     
    18391764                                   (self.button_details, 0 , wx.ALL, 10), 
    18401765                        (self.button_calculate, 0 , 
    1841                          wx.RIGHT|wx.TOP|wx.BOTTOM, 10)])#, 
    1842                                    #(self.button_undo, 0 , wx.ALL, 10), 
    1843                                    #(self.button_redo, 0 , wx.ALL, 10)]) 
    1844     def _layout_save_button(self):   
    1845         """ 
    1846         Do the layout for the save button widgets 
    1847         """  
    1848         import sans.perspectives.invariant as inv 
    1849  
    1850         path = inv.get_data_path(media='media') 
    1851         self.undo_png = os.path.join(path,"undo.png") 
    1852         self.redo_png = os.path.join(path,"redo.png") 
    1853         self.bookmark_png = os.path.join(path,"bookmark.png") 
    1854         self.report_png = os.path.join(path,"report.png") 
    1855         self.save_png = os.path.join(path,"save.png") 
    1856         #undo button 
    1857         id = wx.NewId() 
    1858         #wx.Button(self, id, "Undo",size=(50,20)) 
    1859         self.button_undo = wx.BitmapButton(self, id,wx.Bitmap(self.undo_png)) 
    1860         self.button_undo.SetToolTipString("Undo") 
    1861          
    1862         #self.button_undo.SetBackgroundColour('#c2e6f8') 
    1863         self.Bind(wx.EVT_BUTTON, self.on_undo, id=id) 
    1864         self._undo_disable() 
    1865         #redo button 
    1866         id = wx.NewId() 
    1867         #wx.Button(self, id, "Redo",size=(50,20)) 
    1868         self.button_redo = wx.BitmapButton(self, id,wx.Bitmap(self.redo_png)) 
    1869         self.button_redo.SetToolTipString("Redo") 
    1870         self.Bind(wx.EVT_BUTTON, self.on_redo, id=id) 
    1871         self._redo_disable()    
    1872         self._set_redo_flag(False) 
    1873         #bookmark button 
    1874         id = wx.NewId() 
    1875         #wx.Button(self, id, "Undo",size=(50,20)) 
    1876         self.button_bookmark = wx.BitmapButton(self, id, 
    1877                                                wx.Bitmap(self.bookmark_png)) 
    1878         hint_msg = "Bookmark: right-click on the panel to retrieve it" 
    1879         self.button_bookmark.SetToolTipString(hint_msg) 
    1880         self.Bind(wx.EVT_BUTTON, self.on_bookmark, id=id) 
    1881         #report button 
    1882         id = wx.NewId() 
    1883         #wx.Button(self, id, "Redo",size=(50,20)) 
    1884         self.button_report = wx.BitmapButton(self, id, 
    1885                                              wx.Bitmap(self.report_png)) 
    1886         hint_msg = "Report the result of the computation" 
    1887         self.button_report.SetToolTipString(hint_msg) 
    1888         self.Bind(wx.EVT_BUTTON, self.on_preview, id=id) 
    1889         #self.button_report.Disable()    
    1890         #self._set_preview_flag(False)    
    1891         #save button 
    1892         id = wx.NewId() 
    1893         #wx.Button(self, id, "Save", name ='Save_invariant' ) 
    1894         self.button_save = wx.BitmapButton(self, id, wx.Bitmap(self.save_png), 
    1895                                            name='Save_invariant') 
    1896         self.button_save.SetToolTipString("Save as a file") 
    1897         self.Bind(wx.EVT_BUTTON, self.on_save, id=id)    
    1898         self.button_save.Disable()   
    1899         self._set_save_flag(False) 
    1900         self.save_button_sizer.AddMany([((PANEL_WIDTH/2,20), 1 , 
    1901                                          wx.EXPAND|wx.ADJUST_MINSIZE,0), 
    1902                                    (self.button_undo, 0 , 
    1903                                     wx.LEFT|wx.ADJUST_MINSIZE, 10), 
    1904                                    (self.button_redo, 0 , 
    1905                                     wx.LEFT|wx.ADJUST_MINSIZE, 10), 
    1906                                    (self.button_bookmark, 0 , 
    1907                                     wx.LEFT|wx.ADJUST_MINSIZE, 10), 
    1908                                    (self.button_report, 0 , 
    1909                                     wx.LEFT|wx.ADJUST_MINSIZE, 10), 
    1910                                    (self.button_save, 0 , 
    1911                                     wx.LEFT|wx.ADJUST_MINSIZE, 10)])         
     1766                         wx.RIGHT|wx.TOP|wx.BOTTOM, 10)]) 
    19121767    def _do_layout(self): 
    19131768        """ 
     
    19201775        self._layout_outputs_sizer() 
    19211776        self._layout_button() 
    1922         self._layout_save_button() 
    19231777        self.main_sizer.AddMany([(self.data_name_boxsizer,0, wx.ALL, 10), 
    19241778                                  (self.outputs_sizer, 0, 
     
    19291783                                  wx.LEFT|wx.RIGHT|wx.BOTTOM, 10), 
    19301784                                  (self.extrapolation_sizer, 0, 
    1931                                   wx.LEFT|wx.RIGHT|wx.BOTTOM, 10),\ 
    1932                                   (self.save_button_sizer,0, 
    19331785                                  wx.LEFT|wx.RIGHT|wx.BOTTOM, 10)]) 
    19341786        self.SetSizer(self.main_sizer) 
  • invariantview/perspectives/invariant/invariant_state.py

    r75fbd17 rcb69775  
    208208                # other outputs than Q* 
    209209                name = item[0] + "_tcl" 
    210                 exec "value = self.saved_state['%s']" % name 
     210                if name in self.saved_state.keys(): 
     211                    exec "value = self.saved_state['%s']" % name 
    211212                 
    212213            # Exclude the outputs w/''     
     
    228229                                        format_number(value, high=True)) 
    229230        # Include warning msg 
    230         state += "\n\nNote:\n" + self.container.warning_msg 
     231        if self.container is not None: 
     232            state += "\n\nNote:\n" + self.container.warning_msg 
    231233        return state 
    232234 
     
    745747            # Call back to post the new state 
    746748            self.state = output[0].meta_data['invstate'] 
    747             #self.call_back(state=output[0].meta_data['invstate'], 
    748             #               datainfo = output[0]) 
     749            self.call_back(state=output[0].meta_data['invstate'], 
     750                          datainfo = output[0]) 
    749751            return output[0] 
    750752        else: 
Note: See TracChangeset for help on using the changeset viewer.