source: sasview/guiframe/statusbar.py @ b787e68c

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since b787e68c was 12aa9b5, checked in by Gervaise Alina <gervyh@…>, 16 years ago

class and method commented

  • Property mode set to 100644
File size: 4.6 KB
RevLine 
[dd66fbd]1import wx
2class MyStatusBar(wx.StatusBar):
3    def __init__(self,*args,**kargs):
4         wx.StatusBar.__init__(self, *args,**kargs)
[12aa9b5]5         """
6             Implement statusbar functionalities
7         """
[dd66fbd]8         #Layout of status bar
[2cd9153]9         self.SetFieldsCount(2) 
[dd66fbd]10         width,height = self.GetSize()
[2cd9153]11         self.gauge = wx.Gauge(self, size=(-1,height-4),style= wx.GA_HORIZONTAL)
12         self.SetStatusWidths([-4, -1])
[dd66fbd]13         rect = self.GetFieldRect(1)
[282a3e7]14         self.gauge.SetPosition((rect.x+5, rect.y-2))
[2cd9153]15         
[dd66fbd]16         self.gauge.Hide()
[12aa9b5]17         ## Current progress value of the bar
18         self.progress = 0     
[dd66fbd]19         self.timer = wx.Timer(self,-1) 
[858f2ae5]20         self.timer_stop = wx.Timer(self,-1) 
[dd66fbd]21         self.thread= None
[ef628a1]22         self.Bind(wx.EVT_TIMER,self.OnTimer, self.timer) 
[858f2ae5]23         self.Bind(wx.EVT_TIMER,self.OnTimer_stop, self.timer_stop) 
24         self.count=0
[12aa9b5]25       
[dd66fbd]26         
[858f2ae5]27    def OnTimer_stop(self, evt): 
[12aa9b5]28        """Clear the progress bar
[858f2ae5]29        @param evt: wx.EVT_TIMER
30 
31        """ 
32        self.count +=1
[acd91458]33        if self.count ==45:
[858f2ae5]34            self.timer_stop.Stop() 
35            self.gauge.Hide()
[700f9b4]36            self.SetStatusText( "", 0)
[858f2ae5]37            self.count=0
[12aa9b5]38           
39           
[dd66fbd]40    def OnTimer(self, evt): 
41        """Update the progress bar while the timer is running
42        @param evt: wx.EVT_TIMER
43 
44        """ 
45        # Check stop flag that can be set from non main thread
[858f2ae5]46        if self.timer.IsRunning(): 
47            self.gauge.Pulse()
48       
[dd66fbd]49       
50    def set_progress(self):
[12aa9b5]51        """   
52            Set the gauge value given the status of a thread
53        """
[dd66fbd]54        self.gauge.Show(True)
55        if self.timer.IsRunning(): 
56            while(self.thread.isrunning()):
57                self.progress += 1
58                # Update the progress value if it is less than the range
59                if self.progress < self.gauge.GetRange()-20: 
60                    self.gauge.SetValue(int(self.progress)) 
61                else:
62                    self.gauge.SetValue(70) 
63                    self.progress =0
64                    self.timer.Stop()
[12aa9b5]65                   
[dd66fbd]66            self.timer.Stop()
67            self.gauge.SetValue(90) 
68            self.progress =0
69           
[12aa9b5]70           
[dd66fbd]71    def clear_gauge(self, msg=""):
[12aa9b5]72        """
73            Hide the gauge
74        """
[dd66fbd]75        self.timer.Stop()
76        self.SetStatusText( str(msg), 0)
77        self.progress =0
78        self.gauge.SetValue(0)
79        self.gauge.Hide() 
80         
81    def set_status(self, type=None,msg="", thread=None):
[12aa9b5]82        """
83            Update the status bar .
84            @param type: type of message send.
85            type  must be in ["start","progress","update","stop"]
86            @param msg: the message itself  as string
87            @param thread: if updatting using a thread status
88        """
[dd66fbd]89        if type==None:
90            self.SetStatusText(str(msg),0)
91       
92        else:
93            self.thread= thread
[282a3e7]94            self.gauge.Show(True)
95            if type.lower()=="start":
96                self.timer.Stop()
97                self.SetStatusText( str(msg), 0)
98                self.progress +=10
99                self.gauge.SetValue(int(self.progress)) 
[12aa9b5]100             
[282a3e7]101                self.progress +=10
102                if self.progress < self.gauge.GetRange()-20:
103                    self.gauge.SetValue(int(self.progress)) 
[12aa9b5]104                   
[282a3e7]105            if type.lower()=="progress":
106                self.timer.Start(100)
107                self.SetStatusText( str(msg), 0)
108                self.gauge.Pulse()
109               
110            if  type.lower()=="update":
111               
112                self.timer.Stop()
113                self.SetStatusText( str(msg), 0)
114                self.progress +=10
115                if self.progress < self.gauge.GetRange()-20:
[ef628a1]116                    self.gauge.SetValue(int(self.progress)) 
[700f9b4]117                   
[dd66fbd]118            if type.lower()=="stop":
119                self.gauge.Show(True)
120                self.timer.Stop()
121                self.SetStatusText( str(msg), 0)
122                self.progress =0
123                self.gauge.SetValue(90) 
[858f2ae5]124                self.timer_stop.Start(3)   
[dd66fbd]125           
126   
127   
128if __name__ == "__main__":
129     app = wx.PySimpleApp()
130     frame= wx.Frame(None,wx.ID_ANY,'test frame')
131     statusBar= MyStatusBar(frame,wx.ID_ANY)
132     frame.SetStatusBar(statusBar)
133     frame.Show(True)
134     statusBar.SetStatusText("status text..")
135     statusBar.set_status( "progress","progessing")
136     
137     
138     app.MainLoop()
139
Note: See TracBrowser for help on using the repository browser.