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
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()
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)
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()
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)
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))
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
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
def ReadPanel(self, code, index): return self._readPanel if code is None else self._comparePanel[ utils.MakeKey(code, index)]
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)
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)
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)
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)
def ToggleNotePanel(self, code, index): readPanel = self._readPanel if code is None else self._comparePanel[ utils.MakeKey(code, index)] readPanel.ToggleNotePanel()
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)
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()
def SetFont(self, font, code, index): self._readPanel.SetContentFont( font) if code is None else self._comparePanel[utils.MakeKey( code, index)].SetContentFont(font)