1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
import wx
from traits.api import Instance
from traitsui.wx.editor import Editor
from pyface.ui.wx.progress_dialog import ProgressDialog
class SimpleEditor(Editor):
"""
Show a progress bar with all the optional goodies
"""
progress = Instance(ProgressDialog)
#-- Editor interface ------------------------------------------------------
def init ( self, parent ):
""" Finishes initializing the editor by creating the underlying toolkit
widget.
"""
self.control = self.create_control( parent )
self.set_tooltip()
def create_control (self, parent):
"""
Finishes initializing the editor by creating the underlying widget.
"""
self.progress = ProgressDialog( title=self.factory.title,
message=self.factory.message,
min=self.factory.min,
max=self.factory.max,
can_cancel=self.factory.can_cancel,
show_time=self.factory.show_time,
show_percent=self.factory.show_percent)
panel = wx.Panel(parent, -1)
sizer = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(sizer)
panel.SetAutoLayout(True)
panel.SetBackgroundColour(wx.NullColor)
self.progress.dialog_size = wx.Size()
# The 'guts' of the dialog.
self.progress._create_message(panel, sizer)
self.progress._create_gauge(panel, sizer)
self.progress._create_percent(panel, sizer)
self.progress._create_timer(panel, sizer)
self.progress._create_buttons(panel, sizer)
panel.SetClientSize(self.progress.dialog_size)
panel.CentreOnParent()
self.control = panel
return self.control
def update_editor ( self ):
"""
Updates the editor when the object trait changes externally to the
editor.
"""
if self.value:
self.progress.update(self.value)
return
|