예제 #1
0
class ZHeaderDialog(ZBaseDialog):
    def __init__(
        self,
        parent,
        id,
        title,
        pos=wx.DefaultPosition,
        size=wx.DefaultSize,
        style=wx.DEFAULT_DIALOG_STYLE,
        name=u"ZHeaderDialog",
    ):  # $NON-NLS-1$):
        ZBaseDialog.__init__(self, parent, id, title, pos, size, style, name)

    # end __init__()

    def _createContentWidgets(self):
        u"Creates a control for the dialog header and a static line below it."  # $NON-NLS-1$
        self.headerPanel = self._createHeaderPanel()
        self.headerStaticLine = wx.StaticLine(self)

        self._createNonHeaderWidgets()

    # end _createContentWidgets()

    def _populateContentWidgets(self):
        u"Populates the header with data."  # $NON-NLS-1$
        self._populateNonHeaderWidgets()

    # end _populateContentWidgets()

    def _layoutContentWidgets(self):
        sizer = self._layoutNonHeaderWidgets()

        box = wx.BoxSizer(wx.VERTICAL)
        box.Add(self.headerPanel, 0, wx.EXPAND)
        box.Add(self.headerStaticLine, 0, wx.EXPAND)
        box.AddSizer(sizer, 1, wx.EXPAND | wx.ALL, self._getNonHeaderContentBorder())

        return box

    # end _layoutContentWidgets()

    def _createHeaderPanel(self):
        panel = wx.Panel(self, wx.ID_ANY)
        panel.SetBackgroundColour(wx.WHITE)

        self.headerLink = wx.HyperlinkCtrl(panel, wx.ID_ANY, self._getHeaderTitle(), self._getHeaderHelpURL())
        self.headerLink.SetFont(getDefaultFontBold())
        self.headerMessage = wx.StaticText(panel, wx.ID_ANY, self._getHeaderMessage())
        headerImagePath = self._getHeaderImagePath()
        if not headerImagePath:
            headerImagePath = u"images/dialogs/image/header_image.png"  # $NON-NLS-1$
        self.headerIcon = ZStaticBitmap(panel, getResourceRegistry().getBitmap(headerImagePath))

        linkAndMsgSizer = wx.BoxSizer(wx.VERTICAL)
        linkAndMsgSizer.Add(self.headerLink, 0, wx.ALL, 2)
        linkAndMsgSizer.Add(self.headerMessage, 1, wx.EXPAND | wx.ALL, 2)

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.AddSizer(linkAndMsgSizer, 1, wx.EXPAND | wx.ALL, 5)
        sizer.Add(self.headerIcon, 0, wx.EXPAND | wx.ALL, 10)

        panel.SetAutoLayout(True)
        panel.SetSizer(sizer)

        return panel

    # end _createHeaderPanel()

    def _updateHeader(self):
        self.headerLink.SetLabel(self._getHeaderTitle())
        self.headerLink.SetURL(self._getHeaderHelpURL())
        self.headerMessage.SetLabel(self._getHeaderMessage())
        self.headerIcon.setBitmap(getResourceRegistry().getBitmap(self._getHeaderImagePath()))
        self.headerPanel.Layout()
        self.headerPanel.Refresh()

    # end _updateHeader()

    def _getNonHeaderContentBorder(self):
        return 5

    # end _getNonHeaderContentBorder()

    def _createNonHeaderWidgets(self):
        u"Called to create the non header related widgets.  (abstract)"  # $NON-NLS-1$
        raise ZAbstractMethodCalledException(self.__class__, u"_createNonHeaderWidgets")  # $NON-NLS-1$

    # end _createNonHeaderWidgets()

    def _populateNonHeaderWidgets(self):
        u"Called to populate the non header related widgets."  # $NON-NLS-1$

    # end _populateNonHeaderWidgets()

    def _layoutNonHeaderWidgets(self):
        u"Called to layout the non header related widgets.  Should return a sizer.  (abstract)"  # $NON-NLS-1$
        raise ZAbstractMethodCalledException(self.__class__, u"_layoutNonHeaderWidgets")  # $NON-NLS-1$

    # end _layoutNonHeaderWidgets()

    def _getHeaderTitle(self):
        u"Returns the header title. (abstract)"  # $NON-NLS-1$
        raise ZAbstractMethodCalledException(self.__class__, u"_getHeaderTitle")  # $NON-NLS-1$

    # end _getHeaderTitle()

    def _getHeaderMessage(self):
        u"Returns the header message. (abstract)"  # $NON-NLS-1$
        raise ZAbstractMethodCalledException(self.__class__, u"_getHeaderMessage")  # $NON-NLS-1$

    # end _getHeaderMessage()

    def _getHeaderImagePath(self):
        u"Returns the path to an image that will be shown in the header. (abstract)"  # $NON-NLS-1$
        raise ZAbstractMethodCalledException(self.__class__, u"_getHeaderImagePath")  # $NON-NLS-1$

    # end _getHeaderImagePath()

    def _getHeaderHelpURL(self):
        u"Returns a http URL to the specific Online User Guide section for this dialog."  # $NON-NLS-1$
        # FIXME (EPW) Create a context-sensitive Online Help URL here.
        return u"http://www.zoundry.com"  # $NON-NLS-1$
예제 #2
0
파일: header.py 프로젝트: mpm2050/Raven
class ZHeaderDialog(ZBaseDialog):
    def __init__(self,
                 parent,
                 id,
                 title,
                 pos=wx.DefaultPosition,
                 size=wx.DefaultSize,
                 style=wx.DEFAULT_DIALOG_STYLE,
                 name=u"ZHeaderDialog"):  #$NON-NLS-1$):
        ZBaseDialog.__init__(self, parent, id, title, pos, size, style, name)

    # end __init__()

    def _createContentWidgets(self):
        u"Creates a control for the dialog header and a static line below it."  #$NON-NLS-1$
        self.headerPanel = self._createHeaderPanel()
        self.headerStaticLine = wx.StaticLine(self)

        self._createNonHeaderWidgets()

    # end _createContentWidgets()

    def _populateContentWidgets(self):
        u"Populates the header with data."  #$NON-NLS-1$
        self._populateNonHeaderWidgets()

    # end _populateContentWidgets()

    def _layoutContentWidgets(self):
        sizer = self._layoutNonHeaderWidgets()

        box = wx.BoxSizer(wx.VERTICAL)
        box.Add(self.headerPanel, 0, wx.EXPAND)
        box.Add(self.headerStaticLine, 0, wx.EXPAND)
        box.AddSizer(sizer, 1, wx.EXPAND | wx.ALL,
                     self._getNonHeaderContentBorder())

        return box

    # end _layoutContentWidgets()

    def _createHeaderPanel(self):
        panel = wx.Panel(self, wx.ID_ANY)
        panel.SetBackgroundColour(wx.WHITE)

        self.headerLink = wx.HyperlinkCtrl(panel, wx.ID_ANY,
                                           self._getHeaderTitle(),
                                           self._getHeaderHelpURL())
        self.headerLink.SetFont(getDefaultFontBold())
        self.headerMessage = wx.StaticText(panel, wx.ID_ANY,
                                           self._getHeaderMessage())
        headerImagePath = self._getHeaderImagePath()
        if not headerImagePath:
            headerImagePath = u"images/dialogs/image/header_image.png"  #$NON-NLS-1$
        self.headerIcon = ZStaticBitmap(
            panel,
            getResourceRegistry().getBitmap(headerImagePath))

        linkAndMsgSizer = wx.BoxSizer(wx.VERTICAL)
        linkAndMsgSizer.Add(self.headerLink, 0, wx.ALL, 2)
        linkAndMsgSizer.Add(self.headerMessage, 1, wx.EXPAND | wx.ALL, 2)

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.AddSizer(linkAndMsgSizer, 1, wx.EXPAND | wx.ALL, 5)
        sizer.Add(self.headerIcon, 0, wx.EXPAND | wx.ALL, 10)

        panel.SetAutoLayout(True)
        panel.SetSizer(sizer)

        return panel

    # end _createHeaderPanel()

    def _updateHeader(self):
        self.headerLink.SetLabel(self._getHeaderTitle())
        self.headerLink.SetURL(self._getHeaderHelpURL())
        self.headerMessage.SetLabel(self._getHeaderMessage())
        self.headerIcon.setBitmap(getResourceRegistry().getBitmap(
            self._getHeaderImagePath()))
        self.headerPanel.Layout()
        self.headerPanel.Refresh()

    # end _updateHeader()

    def _getNonHeaderContentBorder(self):
        return 5

    # end _getNonHeaderContentBorder()

    def _createNonHeaderWidgets(self):
        u"Called to create the non header related widgets.  (abstract)"  #$NON-NLS-1$
        raise ZAbstractMethodCalledException(
            self.__class__, u"_createNonHeaderWidgets")  #$NON-NLS-1$

    # end _createNonHeaderWidgets()

    def _populateNonHeaderWidgets(self):
        u"Called to populate the non header related widgets."  #$NON-NLS-1$

    # end _populateNonHeaderWidgets()

    def _layoutNonHeaderWidgets(self):
        u"Called to layout the non header related widgets.  Should return a sizer.  (abstract)"  #$NON-NLS-1$
        raise ZAbstractMethodCalledException(
            self.__class__, u"_layoutNonHeaderWidgets")  #$NON-NLS-1$

    # end _layoutNonHeaderWidgets()

    def _getHeaderTitle(self):
        u"Returns the header title. (abstract)"  #$NON-NLS-1$
        raise ZAbstractMethodCalledException(self.__class__,
                                             u"_getHeaderTitle")  #$NON-NLS-1$

    # end _getHeaderTitle()

    def _getHeaderMessage(self):
        u"Returns the header message. (abstract)"  #$NON-NLS-1$
        raise ZAbstractMethodCalledException(
            self.__class__, u"_getHeaderMessage")  #$NON-NLS-1$

    # end _getHeaderMessage()

    def _getHeaderImagePath(self):
        u"Returns the path to an image that will be shown in the header. (abstract)"  #$NON-NLS-1$
        raise ZAbstractMethodCalledException(
            self.__class__, u"_getHeaderImagePath")  #$NON-NLS-1$

    # end _getHeaderImagePath()

    def _getHeaderHelpURL(self):
        u"Returns a http URL to the specific Online User Guide section for this dialog."  #$NON-NLS-1$
        # FIXME (EPW) Create a context-sensitive Online Help URL here.
        return u"http://www.zoundry.com"  #$NON-NLS-1$
예제 #3
0
class ZImagePreviewPanel(ZTransparentPanel):

    def __init__(self, parent):
        wx.Panel.__init__(self, parent, wx.ID_ANY)

        self._createWidgets()
        self._layoutWidgets()
    # end __init__()

    def _createWidgets(self):
        self.staticBox = wx.StaticBox(self, wx.ID_ANY, _extstr(u"infodetailswidgets.Preview")) #$NON-NLS-1$

        self.generatingMsg = ZProgressLabelCtrl(self, _extstr(u"infodetailswidgets.GeneratingPreview")) #$NON-NLS-1$
        self.previewUnavailableMsg = wx.StaticText(self, wx.ID_ANY, _extstr(u"infodetailswidgets.PreviewUnavailable")) #$NON-NLS-1$
        self.previewBmp = ZStaticBitmap(self, None)
    # end _createWidgets()

    def _layoutWidgets(self):
        staticBoxSizer = wx.StaticBoxSizer(self.staticBox, wx.HORIZONTAL)
        staticBoxSizer.Add(self.generatingMsg, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3)
        staticBoxSizer.Add(self.previewUnavailableMsg, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3)
        staticBoxSizer.Add(self.previewBmp, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 3)

        self.SetAutoLayout(True)
        self.SetSizer(staticBoxSizer)
    # end _layoutWidgets()

    def reset(self):
        self.generatingMsg.Show(True)
        self.generatingMsg.start()
        self.previewUnavailableMsg.Show(False)
        self.previewBmp.Show(False)
    # end reset()

    def updateFromError(self, error):
        # Log the error
        getLoggerService().exception(error)
        self.generatingMsg.Show(False)
        self.generatingMsg.stop()
        self.previewUnavailableMsg.Show(True)
        self.previewBmp.Show(False)
    # end updateFromError()

    def updateFromConnectionRespInfo(self, connectionRespInfo): #@UnusedVariable
        # Do nothing...
        pass
    # end updateFromConnectionRespInfo()

    def updateFromConnectionResp(self, connectionResp):
        imagingService = getApplicationModel().getService(IZAppServiceIDs.IMAGING_SERVICE_ID)
        bgColor = self.GetBackgroundColour()
        tnParams = ZThumbnailParams(backgroundColor = (bgColor.Red(), bgColor.Green(), bgColor.Blue()), dropShadow = True)
        tnFile = os.path.join(getApplicationModel().getUserProfile().getTempDirectory(), u"_ZImagePreviewPanel_tn.png") #$NON-NLS-1$
        try:
            imagingService.generateThumbnail(connectionResp.getContentFilename(), tnParams, tnFile)

            image = wx.Image(tnFile, getImageType(tnFile))
            if image is None:
                raise ZException()

            bitmap = image.ConvertToBitmap()
            self.previewBmp.setBitmap(bitmap)
            deleteFile(tnFile)
            self.generatingMsg.Show(False)
            self.generatingMsg.stop()
            self.previewUnavailableMsg.Show(False)
            self.previewBmp.Show(True)
        except Exception, e:
            getLoggerService().exception(e)
            self.updateFromError(e)