class ZBackgroundTaskProgressDialog(ZHeaderDialog, IZBackgroundTaskListener): def __init__(self, parent, bgTask, title, description, imagePath): self.title = title self.description = description self.bgTask = bgTask self.imagePath = imagePath # This is here for intellisense purposes. if self.bgTask is None and False: self.bgTask = IZBackgroundTask() self.mutex = ZMutex(u"BGTaskDialogMTX") #$NON-NLS-1$ # Dialog state - can be modified by multiple threads and should # be protected by the above mutex. self.model = ZBackgroundTaskProgressDialogModel() ZHeaderDialog.__init__(self, parent, wx.ID_ANY, title) size = self.GetBestSize() if size.GetWidth() < 500: size.SetWidth(500) self.SetSize(size) self.bgTask.attachListener(self) # end __init__() def _createNonHeaderWidgets(self): self.progressCtrl = ZProgressLabelCtrl(self, u"") #$NON-NLS-1$ self.progressGauge = wx.Gauge(self, wx.ID_ANY, self.bgTask.getNumWorkUnits()) self.progressGauge.SetSizeHints(-1, 16) self.workTextCtrl = wx.StaticText(self, wx.ID_ANY, u"") #$NON-NLS-1$ self.staticLine = wx.StaticLine(self, wx.HORIZONTAL) # end _createNonHeaderWidgets() def _populateNonHeaderWidgets(self): pass # end _populateNonHeaderWidgets() def _layoutNonHeaderWidgets(self): sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.progressGauge, 0, wx.EXPAND | wx.ALL, 2) sizer.Add(self.progressCtrl, 0, wx.EXPAND | wx.ALL, 2) sizer.Add(self.workTextCtrl, 0, wx.EXPAND | wx.ALL, 2) sizer.Add(self.staticLine, 0, wx.EXPAND | wx.TOP, 5) return sizer # end _layoutNonHeaderWidgets() def _bindWidgetEvents(self): self._bindOkButton(self.onOK) self._bindCancelButton(self.onUiCancel) self._bindRefreshEvent(self.onRefresh) # end _bindWidgetEvents() def _getOKButtonLabel(self): return _extstr(u"bgtaskprogressdialog.RunInBackground") #$NON-NLS-1$ # end _getOKButtonLabel() def _setInitialFocus(self): self.FindWindowById(wx.ID_OK).SetFocus() # end _setInitialFocus() def _getHeaderTitle(self): return self.title # end _getHeaderTitle() def _getHeaderMessage(self): return self.description # end _getHeaderMessage() def _getHeaderImagePath(self): return self.imagePath # end _getHeaderImagePath() def _doEndModal(self, code): try: self.EndModal(code) return self.bgTask.hasError() except Exception, e: getLoggerService().exception(e) return False