Пример #1
0
    def AddReadPanel(self, code):
        index = 1 if len(self._comparePanel.keys()) == 0 else sum(
            map(lambda k: int(k.startswith(code)),
                self._comparePanel.keys())) + 1

        self._comparePanel[utils.MakeKey(code,
                                         index)] = ReadPanelCreator.Create(
                                             self, code, index, self._font,
                                             self._delegate)
        info = aui.AuiPaneInfo().Floatable(False).Center().Row(
            len(self._comparePanel))
        self.AddPane(self._comparePanel[utils.MakeKey(code, index)],
                     info.Name(utils.MakeKey(code, index)))

        return index
Пример #2
0
    def FormatText(self, formatter, code=None, index=1):
        readPanel = self._readPanel if code is None else self._comparePanel[
            utils.MakeKey(code, index)]
        font = readPanel.Body.GetFont()
        fontSize = font.GetPointSize()

        offset = 1 if 'wxMac' in wx.PlatformInfo else 0

        if wx.__version__[:3] <= '2.8':
            readPanel.Body.Freeze()

        if 'wxMac' in wx.PlatformInfo:
            readPanel.SetContentFont(font)

        for token in formatter.split():
            tag, x, y = token.split('|')
            if tag == 's3' or tag == 'p3':
                colorCode, diffSize = constants.FOOTER_STYLE
                font.SetPointSize(fontSize - diffSize)
                readPanel.Body.SetStyle(
                    int(x) - offset,
                    int(y) - offset, wx.TextAttr(colorCode, wx.NullColour,
                                                 font))
            elif tag == 'h1' or tag == 'h2' or tag == 'h3':
                font.SetPointSize(fontSize)
                readPanel.Body.SetStyle(
                    int(x) - offset,
                    int(y) - offset, wx.TextAttr('blue', wx.NullColour, font))
            elif tag == 'eh1':
                font.SetPointSize(fontSize * 1.2)
                readPanel.Body.SetStyle(
                    int(x), int(y),
                    wx.TextAttr(utils.LoadThemeForegroundHex(constants.READ),
                                wx.NullColour, font))
            elif tag == 'eh2':
                font.SetPointSize(fontSize * 0.85)
                readPanel.Body.SetStyle(
                    int(x), int(y),
                    wx.TextAttr(wx.Colour(0x88, 0x88, 0x88, 0xFF),
                                wx.NullColour, font))
            elif tag == 'eh3':
                font.SetPointSize(fontSize * 0.75)
                readPanel.Body.SetStyle(
                    int(x), int(y),
                    wx.TextAttr(wx.Colour(0x88, 0x88, 0x88, 0xFF),
                                wx.NullColour, font))
            elif tag == 'er':
                font.SetPointSize(fontSize * 0.70)
                readPanel.Body.SetStyle(
                    int(x), int(y), wx.TextAttr('#919394', wx.NullColour,
                                                font))
            elif tag == 'fn':
                font.SetPointSize(fontSize * 0.8)
                readPanel.Body.SetStyle(
                    int(x), int(y), wx.TextAttr('#3CBF3F', wx.NullColour,
                                                font))

        if wx.__version__[:3] <= '2.8':
            readPanel.Body.Thaw()
Пример #3
0
 def UpdateSlider(self, value, minimum, maximum, code=None, index=1):
     readPanel = self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
     if readPanel.Slider is None:
         return
     readPanel.Slider.SetMin(minimum)
     readPanel.Slider.SetMax(maximum)
     readPanel.Slider.SetValue(value)
Пример #4
0
    def ShowContextMenu(self, window, position, code, index):
        readPanel = self._readPanel if code is None else self._comparePanel[
            utils.MakeKey(code, index)]

        def OnCopy(event):
            if isinstance(window, wx.html.HtmlWindow):
                clipdata = wx.TextDataObject()
                clipdata.SetText(window.SelectionToText())
                wx.TheClipboard.Open()
                wx.TheClipboard.SetData(clipdata)
                wx.TheClipboard.Close()
            elif isinstance(window, wx.TextCtrl):
                window.Copy()

        def OnCopyReference(event):
            self._delegate.CopyReference(window, code)

        def OnSelectAll(event):
            window.SelectAll()

        def OnSearch(event):
            text = u''
            if isinstance(window, wx.html.HtmlWindow):
                text = window.SelectionToText()
            elif isinstance(window, wx.TextCtrl):
                text = window.GetStringSelection()
            self._delegate.SearchSelection(text)

        cmd = u'⌘' if 'wxMac' in wx.PlatformInfo else u'Ctrl+'
        aux = u'⌥' if 'wxMac' in wx.PlatformInfo else u'Shift+'
        menu = wx.Menu()
        search = menu.Append(constants.ID_SEARCH, u'ค้นหา')
        menu.AppendSeparator()
        copy = menu.Append(constants.ID_COPY,
                           u'คัดลอก' + 17 * ' ' + cmd + u'C')
        copyref = menu.Append(constants.ID_COPY_REFERENCE,
                              u'คัดลอก (อ้างอิง)' + 6 * ' ' + cmd + aux + u'C')
        menu.AppendSeparator()
        if isinstance(window, wx.TextCtrl):
            copy.Enable(window.CanCopy())
            copyref.Enable(window.CanCopy())
        elif isinstance(window, wx.html.HtmlWindow):
            copy.Enable(len(window.SelectionToText()) > 0)
            copyref.Enable(len(window.SelectionToText()) > 0)

        selectAll = menu.Append(constants.ID_SELECT_ALL,
                                u'เลือกทั้งหมด' + 11 * ' ' + cmd + u'A')
        wx.EVT_MENU(menu, constants.ID_COPY, OnCopy)
        wx.EVT_MENU(menu, constants.ID_COPY_REFERENCE, OnCopyReference)
        wx.EVT_MENU(menu, constants.ID_SELECT_ALL, OnSelectAll)
        wx.EVT_MENU(menu, constants.ID_SEARCH, OnSearch)
        window.PopupMenu(menu, position)
        menu.Destroy()
Пример #5
0
 def ShowFindDialog(self, code, index, text, flags):
     readPanel = self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
     data = wx.FindReplaceData()
     data.SetFlags(flags)
     data.SetFindString(text)
     dlg = wx.FindReplaceDialog(readPanel,
                                data,
                                "Find",
                                style=wx.FR_NOMATCHCASE | wx.FR_NOWHOLEWORD)
     dlg.data = data
     dlg.Show(True)
Пример #6
0
 def ClearMarks(self, code, index):
     readPanel = self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
     font = readPanel.Body.GetFont()
     text = readPanel.Body.GetValue()
     readPanel.Body.SetFont(font)
     offset = 1 if 'wxMac' in wx.PlatformInfo else 0
     readPanel.Body.SetStyle(
         0,
         len(text) + offset,
         wx.TextAttr(utils.LoadThemeForegroundHex(constants.READ),
                     utils.LoadThemeBackgroundHex(constants.READ), font))
Пример #7
0
    def UnmarkText(self, code, index, selection=None):
        readPanel = self._readPanel if code is None else self._comparePanel[
            utils.MakeKey(code, index)]
        s, t = readPanel.Body.GetSelection(
        ) if selection is None else selection
        font = readPanel.Body.GetFont()
        readPanel.Body.SetStyle(
            s, t,
            wx.TextAttr(utils.LoadThemeForegroundHex(constants.READ),
                        utils.LoadThemeBackgroundHex(constants.READ), font))

        return s, t
Пример #8
0
    def MarkText(self, code, index, selection=None):
        readPanel = self._readPanel if code is None else self._comparePanel[
            utils.MakeKey(code, index)]
        s, t = readPanel.Body.GetSelection(
        ) if selection is None else selection
        font = readPanel.Body.GetFont()

        if 'wxMac' in wx.PlatformInfo:
            readPanel.Body.SetStyle(
                s, t,
                wx.TextAttr(
                    'blue', utils.LoadThemeBackgroundHex(constants.READ),
                    wx.Font(font.GetPointSize() + 2, font.GetFamily(),
                            font.GetStyle(), wx.FONTWEIGHT_BOLD, False,
                            font.GetFaceName())))
        else:
            readPanel.Body.SetStyle(
                s, t,
                wx.TextAttr(utils.LoadThemeForegroundHex(constants.READ),
                            'yellow', font))

        return s, t
Пример #9
0
 def ReadPanel(self, code, index):
     return self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
Пример #10
0
 def SetText(self, text, code=None, index=1, focus=True):
     readPanel = self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
     readPanel.SetBody(text, focus)
Пример #11
0
 def SetTitles(self, title1, title2, code=None, index=1):
     readPanel = self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
     readPanel.SetTitles(title1, title2)
Пример #12
0
 def SetItemNumber(self, *numbers, **kwargs):
     readPanel = self._readPanel if 'code' not in kwargs else self._comparePanel[
         utils.MakeKey(kwargs['code'], kwargs['index'])]
     readPanel.SetItemNumber(*numbers)
Пример #13
0
 def SetPageNumber(self, number, code=None, index=1):
     readPanel = self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
     readPanel.SetPageNumber(number)
Пример #14
0
 def ToggleNotePanel(self, code, index):
     readPanel = self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
     readPanel.ToggleNotePanel()
Пример #15
0
 def SetSelection(self, content, start, end, code, index):
     readPanel = self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
     readPanel.Body.SetSelection(start, end)
Пример #16
0
 def GetStringSelection(self, code=None, index=1):
     readPanel = self._readPanel if code is None else self._comparePanel[
         utils.MakeKey(code, index)]
     return readPanel.Body.GetStringSelection()
Пример #17
0
 def SetFont(self, font, code, index):
     self._readPanel.SetContentFont(
         font) if code is None else self._comparePanel[utils.MakeKey(
             code, index)].SetContentFont(font)