def newPage(self, filename, encoding=None, documenttype='texteditor', delay=False, defaulttext='', language='', **kwargs): try: panelclass = self.panellist[documenttype] except: error.traceback() return None panel = None try: panel = panelclass(self, filename, **kwargs) document = panel.document EditorFactory._id += 1 document.serial_id = EditorFactory._id document.openfile(filename, encoding, delay, defaulttext, language) except MyUnicodeException, e: error.traceback() e.ShowMessage() if panel: panel.Destroy() return None
def parse(self, filepath=None): "parse ID3v1.0 tags from MP3 file" if filepath: self.filepath = filepath self.filepath = common.decode_string(self.filepath, common.defaultfilesystemencoding) self.info.clear() try: fsock = open(self.filepath, "rb", 0) try: fsock.seek(-128, 2) tagdata = fsock.read(128) finally: fsock.close() if tagdata[:3] == "TAG": for tag, (start, end, parseFunc) in self.tagDataMap.items(): self.info[tag] = parseFunc(tagdata[start:end]) self.ishasinfo = True else: self.info['title'] = self.filepath self.info['author'] = '' except IOError: error.traceback() return False return True
def new(self, filename='', encoding='', delay=False, defaulttext='', language='', documenttype='texteditor'): doc = None if filename: for document in self.getDocuments(): #if the file has been opened if document.isMe(filename, documenttype): self.switch(document, delay) doc = document break else: #the file hasn't been opened #if current page is empty and has not been modified if (self.document != None) and self.document.canopenfile( filename, documenttype): #use current page , donot open a new page try: self.document.openfile(filename, encoding, delay, defaulttext) except MyUnicodeException, e: error.traceback() e.ShowMessage() doc = self.document except: error.traceback() common.showerror( self, tr("Can't open the file %s.") % filename) doc = self.document
def OnBlogWindow(win, event): try: win.mainframe.createBlogWindow() win.panel.showPage('Blog') except: error.traceback() common.showerror(win, tr('There is something wrong as running Blog Edit'))
def copy_mo(self): langpath = os.path.join(self.mainframe.workpath, 'lang') dirs = [d for d in os.listdir(langpath) if os.path.isdir(os.path.join(langpath, d))] files = glob.glob(os.path.join(self.mainframe.workpath, 'plugins/*/*.mo')) import shutil for f in files: fname = os.path.splitext(os.path.basename(f))[0] flag = False for lang in dirs: if fname.endswith(lang): flag = True break if not flag: lang = fname[-5:] try: os.makedirs(os.path.join(self.mainframe.workpath, 'lang', fname[-5:])) except Exception, e: error.traceback() common.showerror(self, str(e)) continue dst = os.path.join(self.mainframe.workpath, 'lang', lang, os.path.basename(f)) try: shutil.copyfile(f, dst) except Exception, e: error.traceback() common.showerror(self, str(e)) continue
def writefile(mainframe, filename, siteno, text, user=None, password=None): if siteno >= len(mainframe.pref.ftp_sites): common.showerror(mainframe, tr("Can't find the FTP site.")) return site = mainframe.pref.sites_info[mainframe.pref.ftp_sites[siteno]] if not user: user = site['user'] if not password: password = site['password'] flag, user, password = getuserpassword(mainframe, siteno) if not flag: common.setmessage(mainframe, tr('Connection canceled')) return ftp = FTP() #connect try: ftp.connect(site['ip'], site['port']) ftp.login(user, password) ftp.set_pasv(site['pasv']) import StringIO f = StringIO.StringIO(text) ftp.storbinary("STOR %s" % common.decode_string(filename), f) ftp.quit() ftp.close() return True except Exception, msg: error.traceback() common.showerror(mainframe, msg)
def rename(self): index = self.list.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_SELECTED) if index >= 0: pathname = self.list.GetItemText(index) dlg = MyTextEntry(self, tr("Name Input"), tr('Input a new name:'), '') answer = dlg.ShowModal() if answer == wx.ID_OK: newpath = dlg.GetValue() if not newpath: return flag = self.list.GetItemData(index) if flag != 2: #dir try: self.ftp.rename(common.decode_string(pathname), common.decode_string(newpath)) except Exception, msg: error.traceback() common.showerror(self, msg) return if self.refresh(self.curpath): index = self.list.FindItem(-1, newpath) self.list.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_MASK_STATE)
def readfile(mainframe, filename, siteno, user=None, password=None): if siteno >= len(mainframe.pref.ftp_sites): common.showerror(mainframe, tr("Can't find the FTP site.")) return site = mainframe.pref.sites_info[mainframe.pref.ftp_sites[siteno]] if not user: user = site['user'] if not password: password = site['password'] flag, user, password = getuserpassword(mainframe, siteno) if not flag: common.setmessage(mainframe, tr('Connection canceled')) return ftp = FTP() try: ftp.connect(site['ip'], site['port']) ftp.login(user, password) ftp.set_pasv(site['pasv']) data = [] def getdata(d, data=data): data.append(d) ftp.retrbinary("RETR %s" % common.decode_string(filename), getdata) ftp.quit() ftp.close() text = ''.join(data) return text except Exception, msg: error.traceback() common.showerror(mainframe, msg)
def delete(self): index = self.list.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_SELECTED) if index >= 0: flag = self.list.GetItemData(index) if flag == 2: return pathname = self.list.GetItemText(index) dlg = wx.MessageDialog(self, tr("Do you want to delete %s?") % pathname, tr("Delete"), wx.YES_NO | wx.ICON_QUESTION) answer = dlg.ShowModal() if answer == wx.ID_YES: if flag == 0: #dir try: self.ftp.rmd(common.decode_string(pathname)) except Exception, msg: error.traceback() common.showerror(self, msg) return elif flag == 1: #file try: self.ftp.delete(common.decode_string(pathname)) except Exception, msg: error.traceback() common.showerror(self, msg) return self.refresh(self.curpath)
def newdir(self): dirname = '' dlg = MyTextEntry(self, tr("Directory Input"), tr('Input a new directory:'), '') answer = dlg.ShowModal() if answer == wx.ID_OK: dirname = dlg.GetValue() if not dirname: return #check if the new name has existed index = self.list.FindItem(-1, dirname) if index > -1: common.showerror( self, tr('The directory already exists.\nPlease input another one.' )) return try: self.ftp.mkd(common.decode_string(dirname)) except Exception, msg: error.traceback() common.showerror(self, msg) return if self.refresh(self.curpath): index = self.list.FindItem(-1, dirname) self.list.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_MASK_STATE)
def newfile(self): filename = '' dlg = MyTextEntry(self, tr("Filename Input"), tr('Input a new filename:'), '') answer = dlg.ShowModal() if answer == wx.ID_OK: filename = dlg.GetValue() if not filename: return #check if the new name has existed index = self.list.FindItem(-1, filename) if index > -1: common.showerror( self, tr('The filename already exists.\nPlease input another one.' )) return from StringIO import StringIO f = StringIO('') try: self.ftp.storbinary('STOR %s' % common.decode_string(filename), f) except Exception, msg: error.traceback() common.showerror(self, msg) return if self.refresh(self.curpath): index = self.list.FindItem(-1, filename) self.list.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_MASK_STATE)
def _run(cmd): try: sin, sout, serr = os.popen3(cmd) if callback: wx.CallAfter(callback, sout.read() + serr.read()) except: error.traceback()
def project_end(dirwin, project_names, path): if 'python' in project_names: try: if path in sys.path: sys.path.remove(path) except: error.traceback()
def get_function(self, modstring): func = None if not isinstance(modstring, list) and modstring.startswith('@'): module, function = modstring[1:].rsplit('.', 1) if self.acpmodules.has_key(module): mod = self.acpmodules[module] if self.need_reinstall_module(mod): mod = reload(mod) self.set_modules_time(mod) else: try: mod = __import__(module, [], [], ['']) self.set_modules_time(mod) except: error.error("Can't load the module " + module) error.traceback() return False self.acpmodules[module] = mod func = getattr(mod, function, None) if not callable(func): func = None else: func.module_name = module func.function_name = function return func
def set_modules_time(self, mod): try: sfile = mod.__file__ if os.path.exists(sfile): self.acpmodules_time[mod] = os.path.getmtime(sfile) except: error.traceback()
def connect(self): self.running = True site = self.pref.sites_info[self.pref.ftp_sites[self.cmbSite.GetSelection()]] self.ftp = FTP() #connect try: common.setmessage(self.mainframe, tr('Connecting to %s (%s:%s)...') % (site['name'],site['ip'], site['port'])) self.ftp.connect(site['ip'], site['port']) flag, user, password = self.getuserpassword(self.cmbSite.GetSelection(), self.txtUser.GetValue(), self.txtPassword.GetValue()) if not flag: common.setmessage(self.mainframe, tr('Connection canceled')) self.ftp = None self.alive = False self.running = False return common.setmessage(self.mainframe, tr('Logging in...')) self.ftp.login(user, password) except socket.error, msg: error.traceback() common.showerror(self, msg[1]) self.ftp = None self.running = False return
def OnSearchJumpDef(win, event): global _mlist word = getword(win) from modules import ctags flag = False prjfile = common.getProjectFile(win.document.getFilename()) if prjfile: path = os.path.dirname(prjfile) ini = dict4ini.DictIni(prjfile) s = [] for c in ini.ctags.values(): c = os.path.join(path, c) p = os.path.dirname(c) try: s.extend(ctags.get_def(c, word, p)) except: error.traceback() if len(s) == 1: d, f, m = s[0] win.editctrl.new(f) flag = jump_to_file(win, d, f, m) elif len(s) > 1: text = [] _mlist = {} for i, v in enumerate(s): d, f, m = v key = str(i+1)+'|'+d+'|'+os.path.basename(f) text.append(key) _mlist[key] = (d, f, m) win.document.UserListShow(2, " ".join(text)) flag = True if not flag: win.document.callplugin('on_jump_definition', win.document, word)
def OnDocumentVoiceConfig(win, event): if not win.pytts: try: import pyTTS win.pytts = pyTTS.Create() win.pytts_flag = pyTTS.tts_is_xml, pyTTS.tts_async win.pytts.OnEndStream = win.OnTTSEndStream except: error.traceback() common.showerror(win, tr("Can't import pyTTS module, please install it first.")) return voices = win.pytts.GetVoiceNames() if not voices: common.showerror(win, tr("There is no available voices installed")) return if not win.pref.voice_name: win.pref.voice_name = voices[0] dialog = [ ('single', 'voice_name', win.pref.voice_name, tr('Voice names:'), zip(voices, voices)), ('int', 'tts_rate', win.pref.tts_rate, tr('TTS speak rate:'), None) ] from modules.EasyGuider import EasyDialog dlg = EasyDialog.EasyDialog(win, title=tr("Text to Speech setting"), elements=dialog) values = None if dlg.ShowModal() == wx.ID_OK: values = dlg.GetValue() dlg.Destroy() win.pref.tts_rate = values['tts_rate'] win.pref.voice_name = values['voice_name'] win.pref.save()
def OnDjangoFunc(win, event): _id = event.GetId() try: if hasattr(win, "IDPM_DJANGO_STARTAPP") and _id == win.IDPM_DJANGO_STARTAPP: OnDjangoStartApp(win) elif hasattr(win, "IDPM_DJANGO_INSTALLAPP") and _id == win.IDPM_DJANGO_INSTALLAPP: d = Casing.Casing(OnDjangoInstallApp, win) v = Casing.new_obj() v.count = 0 # d.onprocess(onprocess, v=v, timestep=0.1) # d.onsuccess(onsuccess) # d.onexception(onsuccess) d.start_thread() elif hasattr(win, "IDPM_DJANGO_INSTALLSYSAPP_ADMIN") and _id == win.IDPM_DJANGO_INSTALLSYSAPP_ADMIN: d = Casing.Casing(OnDjangoInstallConApp, win, "admin") v = Casing.new_obj() # d.onprocess(onprocess, v=v, timestep=0.1) # d.onsuccess(onsuccess) # d.onexception(onsuccess) d.start_thread() elif hasattr(win, "IDPM_DJANGO_RUNSERVER") and _id == win.IDPM_DJANGO_RUNSERVER: OnDjangoRunServer(win) elif hasattr(win, "IDPM_DJANGO_RUNSHELL") and _id == win.IDPM_DJANGO_RUNSHELL: OnDjangoRunShell(win) elif hasattr(win, "IDPM_DJANGO_DOT") and _id == win.IDPM_DJANGO_DOT: OnCreateDot(win) except: error.traceback() common.showerror(win, tr("There is some wrong as executing the menu."))
def install_keylist(self, items, re_flag=False): d = {} for key, value in items: for k, v in KEYS.items(): key = key.replace(k, v) b = self.r_key.search(key) if b: key = b.groups()[0] last_key = convert_key(b.groups()[1]) else: last_key = (0, ord(key[-1])) # key = key[:-1] if re_flag: try: r = re.compile(key) except: error.info("key=%s, value=%s" % (key, value)) error.traceback() continue else: r = key if d.has_key(last_key): d[last_key].append((r, self.gettext(value))) else: d[last_key] = [(r, self.gettext(value))] return d
def delete(self, postid=''): if not postid: index = self.list.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_SELECTED) if index == -1: common.showmessage(self.mainframe, tr('You should select on entry first!')) return filename = self.data[index] tree = Tree() tree.read_from_xml(file(filename).read()) data = tree['entry'] postid = data['postid'] common.setmessage(self.mainframe, tr('Deleting entry...')) site = self.pref.blog_sites_info[self.pref.blog_sites[self.cmbSite.GetSelection()]] try: server = xmlrpclib.ServerProxy(site['url']) result = server.blogger.deletePost('', postid, site['user'], site['password'], False) if result: common.showmessage(self.mainframe, tr('Delete is successful!')) self.list.DeleteItem(index) else: common.showerror(self.mainframe, tr('Delete error!')) except Exception, msg: error.traceback() common.showerror(self.mainframe, msg)
def run(win): import wx if win.document.isModified() or win.document.filename == '': d = wx.MessageDialog( win, tr("The file has not been saved, and it would not be run.\nWould you like to save the file?" ), tr("Run"), wx.YES_NO | wx.ICON_QUESTION) answer = d.ShowModal() d.Destroy() if (answer == wx.ID_YES): win.OnFileSave(None) else: return class MOD: pass mod = MOD() mod.dialog = [ ('savefile', 'imagefile', '', 'Saving image filename:', None), ('single', 'filetype', 'png', 'Image file type:', [('Gif', 'gif'), ('Png', 'png'), ('Jpeg', 'jpg')]), ('string', 'args', '', 'Other command line options:', None), ] mod.title = 'Input dot command line' from modules.EasyGuider import EasyCommander from modules.Debug import error from modules import common easy = EasyCommander.EasyCommander(win, mod, cmdoption='') if easy.run(): values = easy.GetValue() import os try: cmd = 'dot -T%s -o%s %s %s' % ( values['filetype'], common.encode_string(values['imagefile'], common.defaultfilesystemencoding), values['args'], win.document.filename) win.createMessageWindow() win.panel.showPage(tr('Message')) win.messagewindow.SetText(cmd) os.system(cmd) except: error.traceback() common.showerror(win, tr("Can't execute [%s]") % cmd) return if os.path.exists(values['imagefile']): from modules import ImageWin try: win = ImageWin.ImageWin(win, values['imagefile']) win.Show() except: common.showerror( win, tr("Can't open image file %s") % values['imagefile'])
def check(codeString, filename): message = [] try: codeString = codeString.replace('\r\n', '\n') tree = compiler.parse(codeString) except (SyntaxError, IndentationError): value = sys.exc_info()[1] if isinstance(value, Exception): lineno = value.lineno offset = value.offset line = value.text # if line and line.endswith("\n"): # line = line[:-1] message.append((filename, lineno, value.msg)) except: error.traceback() message.append( (filename, -1, tr('There are some unknown errors, please check error.txt'))) else: w = checker.Checker(tree, filename) w.messages.sort(lambda a, b: cmp(a.lineno, b.lineno)) for warning in w.messages: message.append((filename, warning.lineno, warning.message % warning.message_args)) return message
def install_default_auto_identifier(self, obj): if not obj.ini.has_key('auto_default'): return r = obj.ini.auto_default.values() if not r: return slist = [] for i in r: func = self.get_function(i) if func: try: result = func(self.editor) if result: slist.extend(result) except: error.error('Execute %s.%s failed!' % (func.module_name, func.function_name)) error.traceback() return False else: if not isinstance(i, list): slist.append(i) else: slist.extend(i) d = self.editor.default_auto_identifier for i in slist: if len(i) <= 1: continue k = i[0].upper() s = d.setdefault(k, []) if i not in s: s.append(i) for k, v in d.items(): d[k].sort(lambda x, y:cmp(x.upper(), y.upper()))
def connect(self): self.running = True site = self.pref.sites_info[self.pref.ftp_sites[ self.cmbSite.GetSelection()]] self.ftp = FTP() #connect try: common.setmessage( self.mainframe, tr('Connecting to %s (%s:%s)...') % (site['name'], site['ip'], site['port'])) self.ftp.connect(site['ip'], site['port']) flag, user, password = self.getuserpassword( self.cmbSite.GetSelection(), self.txtUser.GetValue(), self.txtPassword.GetValue()) if not flag: common.setmessage(self.mainframe, tr('Connection canceled')) self.ftp = None self.alive = False self.running = False return common.setmessage(self.mainframe, tr('Logging in...')) self.ftp.login(user, password) except socket.error, msg: error.traceback() common.showerror(self, msg[1]) self.ftp = None self.running = False return
def install_keylist(self, items, re_flag=False): d = {} for key, value in items: for k, v in KEYS.items(): key = key.replace(k, v) b = self.r_key.search(key) if b: key = b.groups()[0] last_key = convert_key(b.groups()[1]) else: last_key = (0, ord(key[-1])) # key = key[:-1] if re_flag: try: r = re.compile(key) except: error.info("key=%s, value=%s" % (key,value)) error.traceback() continue else: r = key if d.has_key(last_key): d[last_key].append((r, self.gettext(value))) else: d[last_key] =[(r, self.gettext(value))] return d
def copy_mo(self): langpath = os.path.join(self.mainframe.workpath, 'lang') dirs = [ d for d in os.listdir(langpath) if os.path.isdir(os.path.join(langpath, d)) ] files = glob.glob( os.path.join(self.mainframe.workpath, 'plugins/*/*.mo')) import shutil for f in files: fname = os.path.splitext(os.path.basename(f))[0] flag = False for lang in dirs: if fname.endswith(lang): flag = True break if not flag: lang = fname[-5:] try: os.makedirs( os.path.join(self.mainframe.workpath, 'lang', fname[-5:])) except Exception, e: error.traceback() common.showerror(self, str(e)) continue dst = os.path.join(self.mainframe.workpath, 'lang', lang, os.path.basename(f)) try: shutil.copyfile(f, dst) except Exception, e: error.traceback() common.showerror(self, str(e)) continue
def OnStart(self, event=None): if not self.status: if not self.me or self.me == '*': common.showerror(self, tr("Username should not be empty or '*'")) self.txtName.SetFocus() return ip = self.txtIP.GetValue() if not ip: common.showerror(self, tr("Host address cannot be empty!")) self.txtIP.SetFocus() return port = int(self.txtPort.GetValue()) self.pref.pairprog_host = ip self.pref.pairprog_port = port self.pref.pairprog_username = self.me self.pref.save() try: self.server = Server.start_server(ip, port, self.servercommands) if self.server: self.AddUser(self.me, manager=True) self.change_status('startserver') self.callplugin('start', self, 'server') except: common.warn(tr("Start server error!")) error.traceback() else: self.server.shut_down() self.server = None self.change_status('stopserver') self.callplugin('stop', self, 'server')
def OnSearchJumpDef(win, event): global _mlist word = getword(win) from modules import ctags flag = False prjfile = common.getProjectFile(win.document.getFilename()) if prjfile: path = os.path.dirname(prjfile) ini = dict4ini.DictIni(prjfile) s = [] for c in ini.ctags.values(): c = os.path.join(path, c) p = os.path.dirname(c) try: s.extend(ctags.get_def(c, word, p)) except: error.traceback() if len(s) == 1: d, f, m = s[0] win.editctrl.new(f) flag = jump_to_file(win, d, f, m) elif len(s) > 1: text = [] _mlist = {} for i, v in enumerate(s): d, f, m = v key = str(i + 1) + '|' + d + '|' + os.path.basename(f) text.append(key) _mlist[key] = (d, f, m) win.document.UserListShow(2, " ".join(text)) flag = True if not flag: win.document.callplugin('on_jump_definition', win.document, word)
def install_acp(self, editor, language, changeflag=False): # changeflag = False filename = common.getConfigPathFile('%s.acp' % language) if not os.path.exists(filename): if assistant.has_key(language): del assistant[language] changeflag = True else: if not changeflag: changeflag = self.install_assistant(language, filename) self.editor = editor try: self.lasteditor except: error.traceback() self.lasteditor = None self.lastlanguage = None if changeflag or not self.lasteditor is editor or self.lastlanguage != editor.languagename: self.lasteditor = editor self.lastlanguage = editor.languagename #re cal all the default auto indentifier list editor.default_auto_identifier = {} editor.input_calltip = [] editor.input_autodot = [] editor.input_locals = [] editor.input_analysis = [] for obj in self.get_acp(language) + editor.custom_assistant: self.install_default_auto_identifier(obj) self.install_calltip(obj) self.install_autodot(obj) self.install_locals(obj) self.install_analysis(obj) return True
def read_snippet_file(self, filename, type, expand): try: e = ElementTree(file=filename) def f(): title = e.find('snippet/properties/title') nodes = e.find('snippet/content') data = {'type':'root', 'filename':filename, 'element':nodes, 'etree':e, 'caption':title.text} node = self.add_new_folder(self.root, title.text, data, modified=False) def add_nodes(root, nodes): for n in nodes: if n.tag == 'node': obj = self.add_new_node(root, n.attrib['caption'], data={'element':n}, modified=False) elif n.tag == 'folder': obj = self.add_new_folder(root, n.attrib['caption'], data={'element':n}, modified=False) add_nodes(obj, n.getchildren()) if expand: self.tree.Expand(root) add_nodes(node, nodes) wx.CallAfter(self.tree.SelectItem, node) if type == 'new': wx.CallAfter(self.tree.EditLabel, node) self._save_files() wx.CallAfter(f) except: error.traceback() common.showerror(tr("There are some errors as openning the Snippet file"))
def OnAddSubDir(self, event): item = self.tree.GetSelection() if not self.is_ok(item): return filename = self.get_node_filename(item) foldername = 'NewFolder' if self.isFile(item): item = self.tree.GetItemParent(item) filename = self.get_node_filename(item) if os.path.exists(os.path.join(filename, foldername)): common.showerror( self, tr('Directory %s has existed!') % os.path.join(filename, foldername)) return try: os.mkdir(os.path.join(filename, foldername)) except: error.traceback() common.showerror( self, tr('Create directory %s error!') % os.path.join(filename, foldername)) return node = self.addnode(item, filename, foldername, self.close_image, self.open_image, self.getid(), self.DIR_NODE) self.tree.SetItemHasChildren(node, True) wx.CallAfter(self.tree.Expand, item) wx.CallAfter(self.tree.EditLabel, node)
def OnDelete(self, event): item = self.tree.GetSelection() if not self.is_ok(item): return parent = self.tree.GetItemParent(item) filename = self.get_node_filename(item) dlg = wx.MessageDialog(self, tr('Do you want to delete %s ?') % filename, tr("Message"), wx.YES_NO | wx.ICON_INFORMATION) if dlg.ShowModal() == wx.ID_YES: if os.path.exists(filename): if os.path.isdir(filename): try: shutil.rmtree(filename) except: error.traceback() common.showerror( self, tr('Cannot delete directory %s!') % filename) return else: try: os.remove(filename) except: error.traceback() common.showerror( self, tr('Cannot delete file %s!') % filename) return self.tree.Delete(item) if self.tree.GetChildrenCount(parent) == 0: self.tree.Collapse(parent) self.tree.SetItemImage(parent, self.close_image, wx.TreeItemIcon_Normal) dlg.Destroy()
def install_default_auto_identifier(self, obj): if not obj.ini.has_key('auto_default'): return r = obj.ini.auto_default.values() if not r: return slist = [] for i in r: func = self.get_function(i) if func: try: result = func(self.editor) if result: slist.extend(result) except: error.error('Execute %s.%s failed!' % (func.module_name, func.function_name)) error.traceback() return False else: if not isinstance(i, list): slist.append(i) else: slist.extend(i) d = self.editor.default_auto_identifier for i in slist: if len(i) <= 1: continue k = i[0].upper() s = d.setdefault(k, []) if i not in s: s.append(i) for k, v in d.items(): d[k].sort(lambda x, y: cmp(x.upper(), y.upper()))
def _run(cmd): try: sin, sout, serr = os.popen3(cmd) if callback: wx.CallAfter(callback, sout.read()+serr.read()) except: error.traceback()
def newfile(self): filename = '' dlg = MyTextEntry(self, tr("Filename Input"), tr('Input a new filename:'), '') answer = dlg.ShowModal() if answer == wx.ID_OK: filename = dlg.GetValue() if not filename: return #check if the new name has existed index = self.list.FindItem(-1, filename) if index > -1: common.showerror(self, tr('The filename already exists.\nPlease input another one.')) return from StringIO import StringIO f = StringIO('') try: self.ftp.storbinary('STOR %s' % common.decode_string(filename), f) except Exception, msg: error.traceback() common.showerror(self, msg) return if self.refresh(self.curpath): index = self.list.FindItem(-1, filename) self.list.SetItemState(index, wx.LIST_STATE_SELECTED, wx.LIST_MASK_STATE)
def OnDelete(self, event): item = self.tree.GetSelection() if not self.is_ok(item): return parent = self.tree.GetItemParent(item) filename = self.get_node_filename(item) dlg = wx.MessageDialog(self, tr('Do you want to delete %s ?') % filename, tr("Message"), wx.YES_NO | wx.ICON_INFORMATION) if dlg.ShowModal() == wx.ID_YES: if os.path.exists(filename): if os.path.isdir(filename): try: shutil.rmtree(filename) except: error.traceback() common.showerror(self, tr('Cannot delete directory %s!') % filename) return else: try: os.remove(filename) except: error.traceback() common.showerror(self, tr('Cannot delete file %s!') % filename) return self.tree.Delete(item) if self.tree.GetChildrenCount(parent) == 0: self.tree.Collapse(parent) self.tree.SetItemImage(parent, self.close_image, wx.TreeItemIcon_Normal) dlg.Destroy()
def html_fragment(content, path=''): from docutils.core import publish_string try: return publish_string(content, writer_name = 'html', source_path=path) except: error.traceback() return None
def OnJQueryProjectFunc(win, event): _id = event.GetId() try: if _id == win.IDPM_JQUERY_PROJECT_CREATE_COMMENT: OnJQueryProjectCreateComment(win) except: error.traceback() common.showerror(win, tr("There is some wrong as executing the menu."))
def savefile(self, document, filename, encoding): try: document.savefile(filename, encoding) document.SetFocus() except MyUnicodeException, e: error.traceback() e.ShowMessage() return False
def OnDocbookProjectFunc(win, event): _id = event.GetId() try: if _id == win.IDPM_DOCBOOK_PROJECT_ENCLOSE: OnDocbookEnclose(win) except: error.traceback() common.showerror(win, tr("There is some wrong as executing the menu."))
def OnDjangoProjectFunc(win, event): _id = event.GetId() try: if _id == win.IDPM_DJANGO_PROJECT_NEW_MODEL: OnDjangoProjectNewModel(win) except: error.traceback() common.showerror(win, tr("There is some wrong as executing the menu."))
def OnVC_Settings(win, event): from SvnSettings import SVNSettings try: dlg = SVNSettings(win) dlg.ShowModal() except: error.traceback()
def getcurrentpath(self): #current path try: self.curpath = common.encode_string(self.ftp.pwd()) except Exception, msg: common.showerror(self, msg) error.traceback() self.curpath = ''
def disconnect(self): try: if self.ftp and self.alive: if self.running: self.ftp.abort() self.ftp.quit() except Exception, msg: error.traceback() common.showerror(self, msg)
def f(text): try: win.createMessageWindow() win.panel.showPage(tr('Messages')) if not text: text = 'Doctest for %s is successful!' % doc.filename appendtext(win.messagewindow, text) except: error.traceback()