def createDocument(self): from mixins.Editor import TextEditor panel = wx.Panel(self.top, -1) document = TextEditor(panel, self.parent, self.filename, self.documenttype) box = wx.BoxSizer(wx.VERTICAL) self.callplugin('new_control', document, panel, box) box.Add(document, 1, wx.EXPAND) panel.SetSizer(box) panel.SetAutoLayout(True) return document
def __init__(self, parent): wx.Panel.__init__(self, parent) self.parent = parent self.sizer = sizer = ui.VBox( padding=0, namebinding='widget').create(self).auto_layout() box = sizer.add(ui.HBox(padding=2)) self.btnRefresh = FlatButtons.FlatBitmapButton( self, -1, common.getpngimage('images/classbrowserrefresh.gif')) box.add(self.btnRefresh) self.code = TextEditor(self, None, 'canvas test', 'texteditor', True) self.code.cansavefileflag = False self.code.needcheckfile = False self.code.savesession = False sizer.add(self.code, proportion=1, flag=wx.EXPAND | wx.ALL, border=3) sizer.auto_fit(0)
def createCodeSnippetEditWindow(win): snippet = None for pagename, panelname, notebook, page in win.panel.getPages(): if hasattr(page, 'code_snippet') and page.code_snippet: snippet = page break if not snippet: from mixins.Editor import TextEditor snippet = TextEditor(win.panel.createNotebook('bottom'), None, 'Snippet', 'texteditor', True) #.document is important snippet.document = snippet snippet.cansavefileflag = False snippet.needcheckfile = False snippet.savesession = False snippet.code_snippet = True win.panel.addPage('bottom', snippet, tr('Snippet')) if snippet: win.panel.showPage(snippet) return snippet
def __init__(self, parent, mainframe, filename, documenttype, **kwargs): self.initmixin() wx.Panel.__init__(self, parent, -1) DocumentBase.DocumentBase.__init__(self, parent, filename, documenttype, **kwargs) self.mainframe = mainframe self.pref = mainframe.pref self.siteindex = self.pref.last_blog_site if len(self.pref.blog_sites) > 0: site = self.pref.blog_sites_info[self.pref.blog_sites[self.siteindex]] else: site = {} self.categoryindex = site.get('last_category', 0) self.dateCreated = '' self.postid = '' box = wx.BoxSizer(wx.VERTICAL) box1 = wx.BoxSizer(wx.HORIZONTAL) #title obj = wx.StaticText(self, -1, tr('Title:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) self.txtTitle = wx.TextCtrl(self, -1, "", size=(-1, 20)) box1.Add(self.txtTitle, 1, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) #categories obj = wx.StaticText(self, -1, tr('Category:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) self.ID_CATELIST = wx.NewId() self.cmbCategory = wx.ComboBox(self, self.ID_CATELIST, "", choices=[], size=(120, 20), style=wx.CB_READONLY) box1.Add(self.cmbCategory, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) #send button self.ID_SEND = wx.NewId() self.btnSend = wx.Button(self, self.ID_SEND, tr('Send'), size=(40, -1)) box1.Add(self.btnSend, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) #site button self.ID_SITE = wx.NewId() self.btnSite = wx.Button(self, self.ID_SITE, tr('Site'), size=(40, -1)) box1.Add(self.btnSite, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) #info button self.ID_INFO = wx.NewId() self.btnInfo = wx.Button(self, self.ID_INFO, tr('Info'), size=(40, -1)) box1.Add(self.btnInfo, 0, wx.ALIGN_CENTER_VERTICAL, 2) box.Add(box1, 0, wx.TOP|wx.BOTTOM|wx.EXPAND, 2) #editor self.editor = TextEditor(self, self.mainframe.editctrl, self.filename, self.documenttype) box.Add(self.editor, 1, wx.ALL|wx.EXPAND, 0) self.load() self.SetSizer(box) self.SetAutoLayout(True) wx.EVT_BUTTON(self.btnSend, self.ID_SEND, self.OnSend) wx.EVT_BUTTON(self.btnSite, self.ID_SITE, self.OnSite) wx.EVT_BUTTON(self.btnInfo, self.ID_INFO, self.OnInfo) wx.EVT_UPDATE_UI(self.cmbCategory, self.ID_CATELIST, self.OnUpdateUI) wx.EVT_UPDATE_UI(self.btnSend, self.ID_SEND, self.OnUpdateUI) self.opened = True
class BlogPage(wx.Panel, DocumentBase.DocumentBase, Mixin.Mixin): __mixinname__ = 'blogpage' def __init__(self, parent, mainframe, filename, documenttype, **kwargs): self.initmixin() wx.Panel.__init__(self, parent, -1) DocumentBase.DocumentBase.__init__(self, parent, filename, documenttype, **kwargs) self.mainframe = mainframe self.pref = mainframe.pref self.siteindex = self.pref.last_blog_site if len(self.pref.blog_sites) > 0: site = self.pref.blog_sites_info[self.pref.blog_sites[self.siteindex]] else: site = {} self.categoryindex = site.get('last_category', 0) self.dateCreated = '' self.postid = '' box = wx.BoxSizer(wx.VERTICAL) box1 = wx.BoxSizer(wx.HORIZONTAL) #title obj = wx.StaticText(self, -1, tr('Title:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) self.txtTitle = wx.TextCtrl(self, -1, "", size=(-1, 20)) box1.Add(self.txtTitle, 1, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) #categories obj = wx.StaticText(self, -1, tr('Category:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) self.ID_CATELIST = wx.NewId() self.cmbCategory = wx.ComboBox(self, self.ID_CATELIST, "", choices=[], size=(120, 20), style=wx.CB_READONLY) box1.Add(self.cmbCategory, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) #send button self.ID_SEND = wx.NewId() self.btnSend = wx.Button(self, self.ID_SEND, tr('Send'), size=(40, -1)) box1.Add(self.btnSend, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) #site button self.ID_SITE = wx.NewId() self.btnSite = wx.Button(self, self.ID_SITE, tr('Site'), size=(40, -1)) box1.Add(self.btnSite, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) #info button self.ID_INFO = wx.NewId() self.btnInfo = wx.Button(self, self.ID_INFO, tr('Info'), size=(40, -1)) box1.Add(self.btnInfo, 0, wx.ALIGN_CENTER_VERTICAL, 2) box.Add(box1, 0, wx.TOP|wx.BOTTOM|wx.EXPAND, 2) #editor self.editor = TextEditor(self, self.mainframe.editctrl, self.filename, self.documenttype) box.Add(self.editor, 1, wx.ALL|wx.EXPAND, 0) self.load() self.SetSizer(box) self.SetAutoLayout(True) wx.EVT_BUTTON(self.btnSend, self.ID_SEND, self.OnSend) wx.EVT_BUTTON(self.btnSite, self.ID_SITE, self.OnSite) wx.EVT_BUTTON(self.btnInfo, self.ID_INFO, self.OnInfo) wx.EVT_UPDATE_UI(self.cmbCategory, self.ID_CATELIST, self.OnUpdateUI) wx.EVT_UPDATE_UI(self.btnSend, self.ID_SEND, self.OnUpdateUI) self.opened = True def openfile(self, filename='', encoding='', delay=None, *args, **kwargs): #check if the blog accounts is empty if len(self.pref.blog_sites) == 0: wx.MessageDialog(self, tr("Your blog account is empty! \nPlease config it first."), tr("Blog Window"), wx.OK | wx.ICON_INFORMATION).ShowModal() if filename: self.loadFromFile(filename) else: self.title = tr('New Post') def savefile(self, filename, encoding): self.editor.savefile(filename, encoding) def load(self): self.cmbCategory.Clear() if len(self.pref.blog_sites) > 0 and self.siteindex >= len(self.pref.blog_sites): self.siteindex = 0 if len(self.pref.blog_sites) > 0: name = self.pref.blog_sites[self.siteindex] site = self.pref.blog_sites_info[name] if self.categoryindex >= len(site['categories']): self.categoryindex = 0 categories = [] for c in site['categories']: self.cmbCategory.Append(c['description']) self.cmbCategory.SetSelection(self.categoryindex) def OnSite(self, event): self.ids = {} menu = wx.Menu() self.IDPM_SITEMANAGE = wx.NewId() menu.Append(self.IDPM_SITEMANAGE, tr("Site Manage")) menu.AppendSeparator() wx.EVT_MENU(self, self.IDPM_SITEMANAGE, self.OnSiteManage) for i, name in enumerate(self.pref.blog_sites): site = self.pref.blog_sites_info[name] id = wx.NewId() self.ids[id] = i item = menu.AppendCheckItem(id, name) if i == self.siteindex: item.Check(True) else: item.Check(False) wx.EVT_MENU(self, id, self.OnSiteItem) self.PopupMenu(menu, self.btnSite.GetPosition() + (0, self.btnSite.GetSize()[1])) menu.Destroy() def OnSiteItem(self, event): eid = event.GetId() self.siteindex = self.ids.get(eid, 0) self.load() def OnSiteManage(self, event): filename = i18n.makefilename(self.mainframe.blog_resfile, self.mainframe.app.i18n.lang) dlg = Resource.loadfromresfile(filename, self.mainframe, BlogSiteManageDialog, 'BlogSiteManageDialog', self.mainframe) dlg.ShowModal() self.load() def OnInfo(self, event): struct = self.getPost() struct['categories'] = struct['categories'][0] msg = tr("""Title : %(title)s Categories : [%(categories)s] DateCreated: %(dateCreated)s PostId : %(postid)s Account : %(account)s Xmlrpcurl : %(xmlrpcurl)s """) % struct dlg = Dialogs.ScrolledMessageDialog(self, msg, tr("Blog Information")) dlg.ShowModal() def getPost(self): if len(self.pref.blog_sites) > 0: site = self.pref.blog_sites_info[self.pref.blog_sites[self.siteindex]] else: site = {} struct = {} struct['user'] = site.get('user', '') struct['password'] = site.get('password', '') struct['account'] = site.get('name', '') struct['xmlrpcurl'] = site.get('url', '') struct['description'] = self.editor.GetText() if site.get('utf-8', False): struct['description'] = struct['description'].encode('utf-8') else: struct['descrpition'] = struct['description'].encode(self.editor.locale) index = self.cmbCategory.GetSelection() if len(site.get('categories', [])) > 0: struct['categories'] = [site['categories'][index]['title']] else: struct['categories'] = [''] if self.dateCreated: struct['dateCreated'] = self.dateCreated else: struct['dateCreated'] = xmlrpclib.DateTime() struct['title'] = self.txtTitle.GetValue() struct['postid'] = self.postid return struct def OnSend(self, event): self.post() def post(self): if len(self.pref.blog_sites) == 0: wx.MessageDialog(self, tr("Your blog account is empty! \nPlease config it first."), tr("Blog Window"), wx.OK | wx.ICON_INFORMATION).ShowModal() return setmessage(self.mainframe, tr('Posting entry...')) struct = self.getPost() try: server = xmlrpclib.ServerProxy(struct['xmlrpcurl']) if struct['postid']: result = server.metaWeblog.editPost(struct['postid'], struct['user'], struct['password'], struct, True) if result: showmessage(self.mainframe, tr('Modify is successful!')) self.title = struct['title'] self.mainframe.editctrl.switch(self) else: showerror(self.mainframe, tr('Modify error!')) else: result = server.metaWeblog.newPost('', struct['user'], struct['password'], struct, True) if result: showmessage(self.mainframe, tr('Post is successful! Id=%s') % result) self.postid = result self.title = struct['title'] self.mainframe.editctrl.switch(self) #save last category index site = self.pref.blog_sites_info[self.pref.blog_sites[self.siteindex]] site['last_category'] = self.cmbCategory.GetSelection() self.pref.save() else: showerror(self.mainframe, tr('Post error!')) except Exception, msg: error.traceback() showerror(self.mainframe, msg) setmessage(self.mainframe, tr('Done'))
def __init__(self, parent, mainframe, filename, documenttype, **kwargs): self.initmixin() wx.Panel.__init__(self, parent, -1) DocumentBase.DocumentBase.__init__(self, parent, filename, documenttype, **kwargs) self.mainframe = mainframe self.pref = mainframe.pref self.siteindex = self.pref.last_blog_site if len(self.pref.blog_sites) > 0: site = self.pref.blog_sites_info[self.pref.blog_sites[ self.siteindex]] else: site = {} self.categoryindex = site.get('last_category', 0) self.dateCreated = '' self.postid = '' box = wx.BoxSizer(wx.VERTICAL) box1 = wx.BoxSizer(wx.HORIZONTAL) #title obj = wx.StaticText(self, -1, tr('Title:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) self.txtTitle = wx.TextCtrl(self, -1, "", size=(-1, 20)) box1.Add(self.txtTitle, 1, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) #categories obj = wx.StaticText(self, -1, tr('Category:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) self.ID_CATELIST = wx.NewId() self.cmbCategory = wx.ComboBox(self, self.ID_CATELIST, "", choices=[], size=(120, 20), style=wx.CB_READONLY) box1.Add(self.cmbCategory, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) #send button self.ID_SEND = wx.NewId() self.btnSend = wx.Button(self, self.ID_SEND, tr('Send'), size=(40, -1)) box1.Add(self.btnSend, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) #site button self.ID_SITE = wx.NewId() self.btnSite = wx.Button(self, self.ID_SITE, tr('Site'), size=(40, -1)) box1.Add(self.btnSite, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) #info button self.ID_INFO = wx.NewId() self.btnInfo = wx.Button(self, self.ID_INFO, tr('Info'), size=(40, -1)) box1.Add(self.btnInfo, 0, wx.ALIGN_CENTER_VERTICAL, 2) box.Add(box1, 0, wx.TOP | wx.BOTTOM | wx.EXPAND, 2) #editor self.editor = TextEditor(self, self.mainframe.editctrl, self.filename, self.documenttype) box.Add(self.editor, 1, wx.ALL | wx.EXPAND, 0) self.load() self.SetSizer(box) self.SetAutoLayout(True) wx.EVT_BUTTON(self.btnSend, self.ID_SEND, self.OnSend) wx.EVT_BUTTON(self.btnSite, self.ID_SITE, self.OnSite) wx.EVT_BUTTON(self.btnInfo, self.ID_INFO, self.OnInfo) wx.EVT_UPDATE_UI(self.cmbCategory, self.ID_CATELIST, self.OnUpdateUI) wx.EVT_UPDATE_UI(self.btnSend, self.ID_SEND, self.OnUpdateUI) self.opened = True
class BlogPage(wx.Panel, DocumentBase.DocumentBase, Mixin.Mixin): __mixinname__ = 'blogpage' def __init__(self, parent, mainframe, filename, documenttype, **kwargs): self.initmixin() wx.Panel.__init__(self, parent, -1) DocumentBase.DocumentBase.__init__(self, parent, filename, documenttype, **kwargs) self.mainframe = mainframe self.pref = mainframe.pref self.siteindex = self.pref.last_blog_site if len(self.pref.blog_sites) > 0: site = self.pref.blog_sites_info[self.pref.blog_sites[ self.siteindex]] else: site = {} self.categoryindex = site.get('last_category', 0) self.dateCreated = '' self.postid = '' box = wx.BoxSizer(wx.VERTICAL) box1 = wx.BoxSizer(wx.HORIZONTAL) #title obj = wx.StaticText(self, -1, tr('Title:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) self.txtTitle = wx.TextCtrl(self, -1, "", size=(-1, 20)) box1.Add(self.txtTitle, 1, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) #categories obj = wx.StaticText(self, -1, tr('Category:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) self.ID_CATELIST = wx.NewId() self.cmbCategory = wx.ComboBox(self, self.ID_CATELIST, "", choices=[], size=(120, 20), style=wx.CB_READONLY) box1.Add(self.cmbCategory, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) #send button self.ID_SEND = wx.NewId() self.btnSend = wx.Button(self, self.ID_SEND, tr('Send'), size=(40, -1)) box1.Add(self.btnSend, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) #site button self.ID_SITE = wx.NewId() self.btnSite = wx.Button(self, self.ID_SITE, tr('Site'), size=(40, -1)) box1.Add(self.btnSite, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 2) #info button self.ID_INFO = wx.NewId() self.btnInfo = wx.Button(self, self.ID_INFO, tr('Info'), size=(40, -1)) box1.Add(self.btnInfo, 0, wx.ALIGN_CENTER_VERTICAL, 2) box.Add(box1, 0, wx.TOP | wx.BOTTOM | wx.EXPAND, 2) #editor self.editor = TextEditor(self, self.mainframe.editctrl, self.filename, self.documenttype) box.Add(self.editor, 1, wx.ALL | wx.EXPAND, 0) self.load() self.SetSizer(box) self.SetAutoLayout(True) wx.EVT_BUTTON(self.btnSend, self.ID_SEND, self.OnSend) wx.EVT_BUTTON(self.btnSite, self.ID_SITE, self.OnSite) wx.EVT_BUTTON(self.btnInfo, self.ID_INFO, self.OnInfo) wx.EVT_UPDATE_UI(self.cmbCategory, self.ID_CATELIST, self.OnUpdateUI) wx.EVT_UPDATE_UI(self.btnSend, self.ID_SEND, self.OnUpdateUI) self.opened = True def openfile(self, filename='', encoding='', delay=None, *args, **kwargs): #check if the blog accounts is empty if len(self.pref.blog_sites) == 0: wx.MessageDialog( self, tr("Your blog account is empty! \nPlease config it first."), tr("Blog Window"), wx.OK | wx.ICON_INFORMATION).ShowModal() if filename: self.loadFromFile(filename) else: self.title = tr('New Post') def savefile(self, filename, encoding): self.editor.savefile(filename, encoding) def load(self): self.cmbCategory.Clear() if len(self.pref.blog_sites) > 0 and self.siteindex >= len( self.pref.blog_sites): self.siteindex = 0 if len(self.pref.blog_sites) > 0: name = self.pref.blog_sites[self.siteindex] site = self.pref.blog_sites_info[name] if self.categoryindex >= len(site['categories']): self.categoryindex = 0 categories = [] for c in site['categories']: self.cmbCategory.Append(c['description']) self.cmbCategory.SetSelection(self.categoryindex) def OnSite(self, event): self.ids = {} menu = wx.Menu() self.IDPM_SITEMANAGE = wx.NewId() menu.Append(self.IDPM_SITEMANAGE, tr("Site Manage")) menu.AppendSeparator() wx.EVT_MENU(self, self.IDPM_SITEMANAGE, self.OnSiteManage) for i, name in enumerate(self.pref.blog_sites): site = self.pref.blog_sites_info[name] id = wx.NewId() self.ids[id] = i item = menu.AppendCheckItem(id, name) if i == self.siteindex: item.Check(True) else: item.Check(False) wx.EVT_MENU(self, id, self.OnSiteItem) self.PopupMenu( menu, self.btnSite.GetPosition() + (0, self.btnSite.GetSize()[1])) menu.Destroy() def OnSiteItem(self, event): eid = event.GetId() self.siteindex = self.ids.get(eid, 0) self.load() def OnSiteManage(self, event): filename = i18n.makefilename(self.mainframe.blog_resfile, self.mainframe.app.i18n.lang) dlg = Resource.loadfromresfile(filename, self.mainframe, BlogSiteManageDialog, 'BlogSiteManageDialog', self.mainframe) dlg.ShowModal() self.load() def OnInfo(self, event): struct = self.getPost() struct['categories'] = struct['categories'][0] msg = tr("""Title : %(title)s Categories : [%(categories)s] DateCreated: %(dateCreated)s PostId : %(postid)s Account : %(account)s Xmlrpcurl : %(xmlrpcurl)s """) % struct dlg = Dialogs.ScrolledMessageDialog(self, msg, tr("Blog Information")) dlg.ShowModal() def getPost(self): if len(self.pref.blog_sites) > 0: site = self.pref.blog_sites_info[self.pref.blog_sites[ self.siteindex]] else: site = {} struct = {} struct['user'] = site.get('user', '') struct['password'] = site.get('password', '') struct['account'] = site.get('name', '') struct['xmlrpcurl'] = site.get('url', '') struct['description'] = self.editor.GetText() if site.get('utf-8', False): struct['description'] = struct['description'].encode('utf-8') else: struct['descrpition'] = struct['description'].encode( self.editor.locale) index = self.cmbCategory.GetSelection() if len(site.get('categories', [])) > 0: struct['categories'] = [site['categories'][index]['title']] else: struct['categories'] = [''] if self.dateCreated: struct['dateCreated'] = self.dateCreated else: struct['dateCreated'] = xmlrpclib.DateTime() struct['title'] = self.txtTitle.GetValue() struct['postid'] = self.postid return struct def OnSend(self, event): self.post() def post(self): if len(self.pref.blog_sites) == 0: wx.MessageDialog( self, tr("Your blog account is empty! \nPlease config it first."), tr("Blog Window"), wx.OK | wx.ICON_INFORMATION).ShowModal() return setmessage(self.mainframe, tr('Posting entry...')) struct = self.getPost() try: server = xmlrpclib.ServerProxy(struct['xmlrpcurl']) if struct['postid']: result = server.metaWeblog.editPost(struct['postid'], struct['user'], struct['password'], struct, True) if result: showmessage(self.mainframe, tr('Modify is successful!')) self.title = struct['title'] self.mainframe.editctrl.switch(self) else: showerror(self.mainframe, tr('Modify error!')) else: result = server.metaWeblog.newPost('', struct['user'], struct['password'], struct, True) if result: showmessage(self.mainframe, tr('Post is successful! Id=%s') % result) self.postid = result self.title = struct['title'] self.mainframe.editctrl.switch(self) #save last category index site = self.pref.blog_sites_info[self.pref.blog_sites[ self.siteindex]] site['last_category'] = self.cmbCategory.GetSelection() self.pref.save() else: showerror(self.mainframe, tr('Post error!')) except Exception, msg: error.traceback() showerror(self.mainframe, msg) setmessage(self.mainframe, tr('Done'))