Changeset db10f97 in sasview


Ignore:
Timestamp:
Apr 12, 2010 11:03:12 AM (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:
f304194
Parents:
b7f29fc
Message:

working on statusbar

Location:
guiframe
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • guiframe/gui_manager.py

    rba535a6 rdb10f97  
    2323import os, sys 
    2424import xml 
     25 
    2526try: 
    2627    # Try to find a local config 
     
    4546 
    4647import logging 
    47  
    48  
    4948 
    5049def quit_guiframe(parent=None): 
     
    279278        """ 
    280279        # Status bar 
    281         from statusbar import MyStatusBar 
    282         self.sb = MyStatusBar(self,wx.ID_ANY) 
     280        from statusbar import StatusBar 
     281        self.sb = StatusBar(self, wx.ID_ANY) 
    283282        self.SetStatusBar(self.sb) 
    284283 
     
    291290         
    292291        self._mgr.Update() 
     292         
     293    def SetStatusText(self, *args, **kwds): 
     294        number = self.sb.get_msg_position() 
     295        wx.Frame.SetStatusText(number=number, *args, **kwds) 
     296         
     297    def PopStatusText(self, *args, **kwds): 
     298        field = self.sb.get_msg_position() 
     299        wx.Frame.PopStatusText(field=field) 
     300         
     301    def PushStatusText(self, *args, **kwds): 
     302        field = self.sb.get_msg_position() 
     303        wx.Frame.PushStatusText(self, field=field,string=string) 
    293304 
    294305    def add_perspective(self, plugin): 
     
    613624            Display status message 
    614625        """ 
    615         #self.sb.clear_gauge( msg="") 
    616         mythread=None 
    617         mytype= None 
    618         if hasattr(evt, "curr_thread"): 
    619             mythread= evt.curr_thread 
    620         if hasattr(evt, "type"): 
    621             mytype= evt.type 
    622         self.sb.set_status( type=mytype,msg=str(evt.status),thread=mythread) 
     626        self.sb.set_status(event=evt) 
    623627        
    624  
    625          
    626628    def _on_view(self, evt): 
    627629        """ 
  • guiframe/statusbar.py

    rb3c0c00 rdb10f97  
    11import wx 
    2 class MyStatusBar(wx.StatusBar): 
    3     def __init__(self,*args,**kargs): 
    4          wx.StatusBar.__init__(self, *args,**kargs) 
     2from wx import StatusBar as wxStatusB 
     3import wx.lib 
     4from wx.lib import newevent 
     5#numner of fields of the status bar  
     6NB_FIELDS = 3 
     7#position of the status bar's fields 
     8ICON_POSITION = 0 
     9MSG_POSITION  = 1 
     10GAUGE_POSITION  = 2 
     11BUTTON_SIZE = 40 
     12class StatusBar(wxStatusB): 
     13    def __init__(self, parent, *args, **kargs): 
     14         wxStatusB.__init__(self, parent, *args, **kargs) 
    515         """ 
    616             Implement statusbar functionalities  
    717         """ 
     18         self.parent= parent 
     19         self.parent.SetStatusBarPane(MSG_POSITION) 
     20        
    821         #Layout of status bar 
    9          self.SetFieldsCount(2)  
    10          width,height = self.GetSize() 
    11          self.gauge = wx.Gauge(self, size=(width/10,height-3),style= wx.GA_HORIZONTAL) 
    12          self.SetStatusWidths([-4, -1]) 
    13          rect = self.GetFieldRect(1) 
     22         self.SetFieldsCount(NB_FIELDS)  
     23         self.SetStatusWidths([BUTTON_SIZE, -2, -1]) 
     24          
     25         #display default message 
     26         self.msg_position = MSG_POSITION  
     27         self.SetStatusText(text="No Message available...") 
     28          
     29         #save the position of the gauge 
     30         width, height = self.GetSize() 
     31         self.gauge = wx.Gauge(self, size=(width/10,height-3), 
     32                               style= wx.GA_HORIZONTAL) 
     33         rect = self.GetFieldRect(GAUGE_POSITION) 
    1434         self.gauge.SetPosition((rect.x+5, rect.y-2)) 
     35         self.gauge.Hide() 
    1536          
    16          self.gauge.Hide() 
     37         #status bar icon 
     38         icon_bmp =  wx.ArtProvider.GetBitmap(wx.ART_INFORMATION, wx.ART_TOOLBAR) 
     39         self.bitmap_bt_warning = wx.BitmapButton(self, -1, size=(BUTTON_SIZE,-1), 
     40                                                  style=wx.NO_BORDER) 
     41         self.bitmap_bt_warning.SetBitmapLabel(icon_bmp) 
     42         rect = self.GetFieldRect(ICON_POSITION) 
     43         self.bitmap_bt_warning.SetPosition((rect.x+5, rect.y-2)) 
     44         
    1745         ## Current progress value of the bar  
    1846         self.progress = 0       
    19          self.timer = wx.Timer(self,-1)  
    20          self.timer_stop = wx.Timer(self,-1)  
    21          self.thread= None 
     47         self.timer = wx.Timer(self, -1)  
     48         self.timer_stop = wx.Timer(self, -1)  
     49         self.thread = None 
    2250         self.Bind(wx.EVT_TIMER,self.OnTimer, self.timer)  
    2351         self.Bind(wx.EVT_TIMER,self.OnTimer_stop, self.timer_stop)  
    24          self.count=0 
    2552         
    26           
     53    def get_msg_position(self): 
     54        """ 
     55        """ 
     56        return self.msg_position 
     57     
     58    def SetStatusText(self, text="", number=MSG_POSITION): 
     59        """ 
     60        """ 
     61        wxStatusB.SetStatusText(self, text, MSG_POSITION) 
     62         
     63    def PopStatusText(self, *args, **kwds): 
     64        wxStatusB.PopStatusText(self, field=MSG_POSITION) 
     65       
     66    def PushStatusText(self, *args, **kwds): 
     67        wxStatusB.PushStatusText(self, field=MSG_POSITION,string=string) 
     68         
    2769    def OnTimer_stop(self, evt):  
    2870        """Clear the progress bar 
     
    3072   
    3173        """  
    32         self.count +=1 
    33         if self.count <=10: 
    34             self.timer_stop.Stop()  
    35             self.gauge.Hide() 
    36             #self.SetStatusText( "", 0) 
    37             self.count=0 
    38              
    39              
     74        count = 0 
     75        if count <= 10: 
     76            count += 1 
     77        self.timer_stop.Stop()  
     78        self.gauge.Hide() 
     79        #self.SetStatusText( "", GAUGE_POSITION) 
     80        
    4081    def OnTimer(self, evt):  
    4182        """Update the progress bar while the timer is running  
     
    4687        if self.timer.IsRunning():  
    4788            self.gauge.Pulse() 
    48         
    49         
    50     def set_progress(self): 
    51         """     
    52             Set the gauge value given the status of a thread 
    53         """ 
     89    """    
     90    def set_progress(self):  
     91        #Set the gauge value given the status of a thread 
    5492        self.gauge.Show(True) 
    5593        if self.timer.IsRunning():  
     
    6199                else: 
    62100                    self.gauge.SetValue(70)  
    63                     self.progress =0 
     101                    self.progress = 0 
    64102                    self.timer.Stop() 
    65                      
    66103            self.timer.Stop() 
    67104            self.gauge.SetValue(90)  
    68105            self.progress =0 
    69              
    70              
     106    """         
    71107    def clear_gauge(self, msg=""): 
    72108        """ 
    73109            Hide the gauge 
    74110        """ 
    75         self.timer.Stop() 
    76         self.SetStatusText( str(msg), 0) 
    77         self.progress =0 
     111        self.SetStatusText(str(msg), MSG_POSITION) 
     112        self.progress = 0 
    78113        self.gauge.SetValue(0) 
    79114        self.gauge.Hide()  
    80115          
    81     def set_status(self, type=None,msg="", thread=None): 
     116    def set_icon(self, event): 
     117        """ 
     118            display icons related to the type of message sent to the statusbar 
     119            when available 
     120        """ 
     121        if not hasattr(event, "info"): 
     122            return  
     123        msg = event.info.lower() 
     124        if msg == "warning": 
     125            icon_bmp =  wx.ArtProvider.GetBitmap(wx.ART_WARNING, wx.ART_TOOLBAR) 
     126            self.bitmap_bt_warning.SetBitmapLabel(icon_bmp) 
     127        if msg == "error": 
     128            icon_bmp =  wx.ArtProvider.GetBitmap(wx.ART_ERROR, wx.ART_TOOLBAR) 
     129            self.bitmap_bt_warning.SetBitmapLabel(icon_bmp) 
     130        if msg == "info": 
     131            icon_bmp =  wx.ArtProvider.GetBitmap(wx.ART_INFORMATION, wx.ART_TOOLBAR) 
     132            self.bitmap_bt_warning.SetBitmapLabel(icon_bmp) 
     133     
     134    def set_message(self, event): 
     135        """ 
     136            display received message on the statusbar 
     137        """ 
     138        if hasattr(event, "status"): 
     139            self.SetStatusText(str(event.status)) 
     140             
     141    def set_gauge(self, event): 
     142        """ 
     143            change the state of the gauge according the state of the current job 
     144        """ 
     145        if not hasattr(event, "type"): 
     146            return 
     147        type = event.type 
     148        self.gauge.Show(True) 
     149        if type.lower()=="start": 
     150            self.timer.Stop() 
     151            self.progress += 10 
     152            self.gauge.SetValue(int(self.progress))  
     153            self.progress += 10 
     154            if self.progress < self.gauge.GetRange()-20: 
     155                self.gauge.SetValue(int(self.progress))  
     156        if type.lower()=="progress": 
     157            self.timer.Start(100) 
     158            self.gauge.Pulse() 
     159        if type.lower()=="update": 
     160            self.timer.Stop() 
     161            self.progress += 10 
     162            if self.progress < self.gauge.GetRange()-20: 
     163                self.gauge.SetValue(int(self.progress))    
     164        if type.lower()=="stop": 
     165            self.gauge.Show(True) 
     166            self.timer.Stop() 
     167            self.progress = 0 
     168            self.gauge.SetValue(90)  
     169            self.timer_stop.Start(3)  
     170                     
     171    def set_status(self, event): 
    82172        """ 
    83173            Update the status bar . 
     
    87177            @param thread: if updatting using a thread status  
    88178        """ 
    89         if type==None: 
    90             self.SetStatusText(str(msg),0) 
     179        self.set_icon(event=event) 
     180        self.set_message(event=event) 
     181        self.set_gauge(event=event) 
    91182         
    92         else: 
    93             self.SetStatusText(str(msg),0) 
    94             self.thread= thread 
    95             self.gauge.Show(True) 
    96             if type.lower()=="start": 
    97                 self.timer.Stop() 
    98                 self.SetStatusText( str(msg), 0) 
    99                 self.progress +=10 
    100                 self.gauge.SetValue(int(self.progress))  
    101                
    102                 self.progress +=10 
    103                 if self.progress < self.gauge.GetRange()-20: 
    104                     self.gauge.SetValue(int(self.progress))  
    105                      
    106             if type.lower()=="progress": 
    107                 self.timer.Start(100) 
    108                 self.SetStatusText( str(msg), 0) 
    109                 self.gauge.Pulse() 
    110                  
    111             if  type.lower()=="update": 
    112                  
    113                 self.timer.Stop() 
    114                 self.SetStatusText( str(msg), 0) 
    115                 self.progress +=10 
    116                 if self.progress < self.gauge.GetRange()-20: 
    117                     self.gauge.SetValue(int(self.progress))  
    118                      
    119             if type.lower()=="stop": 
    120                 self.gauge.Show(True) 
    121                 self.timer.Stop() 
    122                 self.SetStatusText( str(msg), 0) 
    123                 self.progress =0 
    124                 self.gauge.SetValue(90)  
    125                 self.timer_stop.Start(3)     
    126              
    127     
    128      
    129183if __name__ == "__main__": 
    130184     app = wx.PySimpleApp() 
    131185     frame= wx.Frame(None,wx.ID_ANY,'test frame') 
    132      statusBar= MyStatusBar(frame,wx.ID_ANY) 
     186     statusBar = StatusBar(frame, wx.ID_ANY) 
    133187     frame.SetStatusBar(statusBar) 
    134188     frame.Show(True) 
    135      statusBar.SetStatusText("status text..") 
    136      statusBar.set_status( "progress","progessing") 
    137       
    138       
     189     (NewPlotEvent, EVT_NEW_PLOT) = wx.lib.newevent.NewEvent() 
     190     event = NewPlotEvent() 
     191     event.type = "progress" 
     192     event.status  = "statusbar...." 
     193     event.info = "info" 
     194     statusBar.set_status(event=event) 
    139195     app.MainLoop() 
    140196 
Note: See TracChangeset for help on using the changeset viewer.