def show_unread(self, rssid): t = Template() t.load(os.path.join(Globals.workpath, 'plugins/rssreader/unread_message.py'), 'python') RssDb.init(Globals.rss_dbfile) feed = RssDb.Feed.get(rssid) data = RssDb.Data.select(RssDb.and_(RssDb.Data.c.feed_id==rssid, RssDb.Data.c.read==False), order_by=[RssDb.desc(RssDb.Data.c.pubDate)]) x = dict4ini.DictIni() x.html.chanel_title = feed.title x.html.chanel_url = feed.link x.html.chanel_image_url = feed.imagelink x.html.newsletter = [] for i in data: v = dict4ini.DictIni() v.title = i.title v.link = i.link v.description = i.description v.date = i.pubDate.strftime("%Y-%m-%d %H:%M:%S") v.comments = i.comments v.comments_gif = ('file:///' + os.path.join(Globals.workpath, 'plugins/rssreader/comments.png').replace(':', '|')).replace('\\', '/') x.html.newsletter.append(v) text = t.value('html', x.dict(), encoding='utf-8') filename = os.path.join(tempfile.gettempdir(), 'rssreader.html') file(filename, 'w').write(text) self.publisher.sendMessage('change_html', filename)
def get_newest_ini(): global _ini if _fmtime and _ini: if _fmtime < os.path.getmtime(_ini_filename): _ini = dict4ini.DictIni(_ini_filename) else: _ini = dict4ini.DictIni(_ini_filename) return _ini
def call_lexer(win, oldfilename, filename, language): i = get_inputassistant_obj(win) # i.install_acp(win, win.languagename) files = [] objs = i.get_acp(win.languagename) if objs: files = [obj.filename for obj in objs] b = glob.glob(os.path.join(Globals.workpath, '*.acp')) + glob.glob( os.path.join(Globals.confpath, '*.acp')) afiles = set(b) afiles.difference_update(files) afiles = list(afiles) afiles.sort() prjfile = common.getProjectFile(filename) ini = dict4ini.DictIni(prjfile) ext = os.path.splitext(filename)[1] acps = ini.acp[ext] if acps: if isinstance(acps, str): acps = [acps] for f in acps: for acpf in afiles: if os.path.basename(acpf) == f: win.custom_assistant.append(i.get_assistant(acpf)) i.install_acp(win, win.languagename)
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 get_global_ignore(): v = GLOBAL_IGNORES if wx.Platform == '__WXMSW__': from modules import winreg try: _key = winreg.Key(winreg.HKCU, r'Software\Tigris.org\Subversion\Config') if 'miscellany' not in _key: key = _key.add('miscellany') else: key = _key['miscellany'] except: common.warn( tr("Maybe your subversion doesn't be installed or installed uncorrectly." )) raise if 'global-ignores' in key.values: v = key.values['global-ignores'].getvalue() else: path = os.path.join(common.getHomeDir(), '.subversion') if os.path.exists(path): config = os.path.join(path, 'config') servers = os.path.join(path, 'servers') if os.path.exists(config) and os.path.exists(servers): ini = dict4ini.DictIni(config, normal=True) v = ini.miscellany.get('global-ignores', GLOBAL_IGNORES) return v
def load(self): if self.stxfile and os.path.exists(self.stxfile): from modules import dict4ini ini = dict4ini.DictIni(self.stxfile) #load keywords self.keywords = ini.keywords.get('keywords', self.keywords) #load file extensions self.wildchar = ini.common.get('extension', self.wildchar) #load preview code self.preview_code = ini.common.get('previewcode', '') if self.preview_code: self.preview_code = self.preview_code.replace(r'\n', '\n') for name, item in self._syntaxitems.items(): stylestring = ini.styleitems.get(name, '') if stylestring: item.style.setStyleString(stylestring) if not self.keywords: self.keywords = self.loadDefaultKeywords() if not self.preview_code: self.preview_code = self.loadPreviewCode()
def get_assistant(self, filename): obj = assistant_objs.get(filename, None) if obj: if os.path.getmtime(obj.filename) > obj.ftime: del assistant_objs[filename] return self.get_assistant(filename) else: return assistant_objs[filename] else: obj = DUMY_CLASS() obj.ini = dict4ini.DictIni(filename, encoding='utf-8', onelevel=True) obj.filename = filename obj.ftime = os.path.getmtime(filename) #autostring is used to replace obj.autostring = self.install_keylist( obj.ini.ordereditems(obj.ini.autostring, ['autostring']), False) #autostring_append is used to append obj.autostring_append = self.install_keylist( obj.ini.ordereditems(obj.ini.autostring_append, ['autostring_append']), False) #autore is used to replace obj.autore = self.install_keylist( obj.ini.ordereditems(obj.ini.autore, ['autore']), True) #autore_replace is used to append obj.autore_append = self.install_keylist( obj.ini.ordereditems(obj.ini.autore_append, ['autore_append']), True) obj.projectname = obj.ini.default.get('projectname', '') assistant_objs[filename] = obj return obj
def call_lexer(win, oldfilename, filename, language): # if oldfilename == filename and filename: # return lexer_obj = None flag = False for lexer in win.mainframe.lexers.lexobjs: prjfile = common.getProjectFile(filename) ini = dict4ini.DictIni(prjfile) ext = os.path.splitext(filename)[1] lexname = ini.highlight[ext] if lexname and lexname == lexer.name: #find acp option if not hasattr(win, 'lexer') or lexname != win.lexer.name: lexer_obj = lexer flag = True break if not lexname and (language and language == lexer.name or lexer.matchfile(filename)): if not hasattr(win, 'lexer') or lexer.name != win.lexer.name: lexer_obj = lexer flag = True break else: # if filename: # win.mainframe.lexers.getNamedLexer('text').colourize(win) # else: if not hasattr(win, 'lexer'): lexer_obj = Globals.mainframe.lexers.getDefaultLexer() flag = True if flag: lexer_obj.colourize(win) wx.CallAfter(Globals.mainframe.editctrl.switch, win)
def get_config_file_obj(*args, **kwargs): # global _config_ini # if not _config_ini: from modules import dict4ini _config_ini = dict4ini.DictIni(get_config_file(), *args, **kwargs) return _config_ini
def getCurrentPathProjectName(filename): path = getCurrentPathProjectHome(filename) #found _project from modules import dict4ini ini = dict4ini.DictIni(os.path.join(os.path.join(path, '_project'))) name = ini.default.get('projectname', []) if not isinstance(name, list): name = [name] return name
def _addNode(self, root, wizfile): from modules import dict4ini x = dict4ini.DictIni(wizfile, encoding='utf-8') obj = self.tree.AppendItem(root, x.options.name) self.items[self.ids] = x self.tree.SetPyData(obj, self.ids) self.ids += 1 return obj
def OnSetProject(self, event=None): item = self.tree.GetSelection() from modules import dict4ini filename = self.get_node_filename(item) proj_file = os.path.join(filename, '_project') name = [] if os.path.exists(proj_file): ini = dict4ini.DictIni(proj_file) name = ini.default.get('projectname', []) dialog = [ ('multi', 'project_name', name, tr('Project Names'), self.project_names), ] from modules.EasyGuider import EasyDialog dlg = EasyDialog.EasyDialog(self.mainframe, title=tr("Project Setting"), elements=dialog) values = None if dlg.ShowModal() == wx.ID_OK: values = dlg.GetValue() dlg.Destroy() if values is not None: filename = self.get_node_filename(item) proj_file = os.path.join(filename, '_project') ini = dict4ini.DictIni(proj_file) ini.default.projectname = values['project_name'] self.callplugin('remove_project', ini, list(set(name) - set(values['project_name']))) self.callplugin('set_project', ini, values['project_name']) ini.save() old_project_name = name new_project_name = ini.default.projectname #add check project plugin call point path = filename project_names = common.getCurrentPathProjectName(path) self.callplugin( 'project_end', self, list(set(old_project_name) - set(new_project_name)), path) self.callplugin( 'project_begin', self, list(set(new_project_name) - set(old_project_name)), path)
def show_modules_info(win): files = glob.glob(os.path.join(win.workpath, 'plugins/*/*.pin')) plugins = [] for f in files: key = os.path.basename(os.path.dirname(f)) x = dict4ini.DictIni(f) tr_color = '#CCFFFF' platform = x.info.get('platform', '') platform = platform.upper() p = { 'name': key, 'desc': x.info.get('description', ''), 'homepage': x.info.get('homepage', ''), 'author': x.info.get('author', ''), 'date': x.info.get('date', ''), 'platform': platform, 'version': x.info.get('version', ''), 'tr_color': tr_color } plugins.append(p) m = [] for j, k in enumerate(x.modules.values()): i = x.get(k) if j % 2: t_color = '#FFFFFF' else: t_color = '#66FF00' m.append({ 'name': x[k].get('name', ''), 'homepage': x[k].get('homepage', ''), 'download': x[k].get('download', ''), 'description': x[k].get('description', ''), 'version': x[k].get('version', ''), 't_color': t_color }) p['modules'] = m from modules.meteor import Template template = Template() import T_modulesinfo template.load(T_modulesinfo, 'python') f = os.path.join(win.app.userpath, 'modulesinfo.html') try: fout = file(f, "w") fout.write(template.value('html', {'body': plugins})) fout.close() common.webopen(f) except: error.traceback() common.showerror(win, tr("Output modules information error!"))
def save(self): if self.stxfile: from modules import dict4ini ini = dict4ini.DictIni(self.stxfile) ini.common.extension = self.wildchar ini.keywords.keywords = self.keywords if self.preview_code: ini.common.previewcode = self.preview_code.replace('\n', r'\n') else: ini.common.previewcode = '' for name, item in self._syntaxitems.items(): ini.styleitems[name] = item.style.getStyleString() ini.save()
def getdata(self, filename): s = [] ini = dict4ini.DictIni(filename) for k, v in ini.default.items(): _commands[k] = dict( zip(['target', 'caption', 'shortcut', 'impact', 'func'], v)) for k, v in ini.commands.items(): _commands[k] = dict( zip(['caption', 'commands', 'impact'], [v[0], v[1].split('|'), v[2]])) for k, v in _commands.items(): s.append((v['caption'], v['shortcut'], v['impact'], k)) if v['impact']: self.impacts[v['impact']] = k return s
def getdata(self): s = self.plugins.keys() s.sort() for i, name in enumerate(s): ini = dict4ini.DictIni(self.plugins[name]) description = ini.info.description or '' author = ini.info.author or '' version = ini.info.version or '' date = ini.info.date or '' yield ([ unicode(name, 'utf-8'), unicode(description, 'utf-8'), unicode(author, 'utf-8'), unicode(version, 'utf-8'), unicode(date, 'utf-8') ], self.state[name])
def OnDocbookEnclose(editor): #find the docbook.acp file docbookini = common.getConfigPathFile('docbook_xml.ini') from modules import dict4ini x = dict4ini.DictIni(docbookini) taglist = x.default.taglist taglist.sort() #popup a selection win if taglist: from modules.EasyGuider import EasyDialog dialog = [ ('single', 'tagname', taglist[0], tr('Select a tag:'), taglist), ] dlg = EasyDialog.EasyDialog(editor, tr('Select a DocBook Element Name'), dialog) values = None if dlg.ShowModal() == wx.ID_OK: values = dlg.GetValue() dlg.Destroy() if values: tagname = values['tagname'] text = editor.GetSelectedText() editor.BeginUndoAction() if text: editor.ReplaceSelection('') if x.tag_values.has_key(tagname): settext(editor, [x.tag_values[tagname]]) else: editor.AddText('<%s>%s</%s>' % (tagname, text, tagname)) pos = editor.GetCurrentPos() - len(values['tagname']) - 3 editor.GotoPos(pos) editor.EndUndoAction() else: common.showerror( editor, tr("There are not tags defined in conf/docbook_xml.ini."))
def _save_info(self): v = self.sizer.GetValue() self.pref.svn_proxy_server = v['server'] self.pref.svn_proxy_port = v['port'] self.pref.svn_proxy_password = v['password'] self.pref.svn_proxy_username = v['username'] self.pref.svn_proxy_timeout = v['timeout'] self.pref.save() if wx.Platform == '__WXMSW__': from modules import winreg try: _key = winreg.Key(winreg.HKCU, r'Software\Tigris.org\Subversion\Config') if 'miscellany' not in _key: key = _key.add('miscellany') else: key = _key['miscellany'] except: common.warn( tr("Maybe your subversion doesn't be installed or installed uncorrectly." )) raise key.values.set('global-ignores', v['svn_global_ignores']) try: key = winreg.Key( winreg.HKCU, r'Software\Tigris.org\Subversion\Servers\global') except: common.warn( tr("Maybe your subversion doesn't be installed or installed uncorrectly." )) raise if v['proxy']: key.values.set('http-proxy-host', v['server']) key.values.set('http-proxy-port', str(v['port'])) key.values.set('http-proxy-username', v['username']) key.values.set('http-proxy-password', v['password']) key.values.set('http-proxy-timeout', str(v['timeout'])) else: for i in range(len(key.values) - 1, -1, -1): key.values[i].delete() else: path = os.path.join(common.getHomeDir(), '.subversion') if os.path.exists(path): config = os.path.join(path, 'config') servers = os.path.join(path, 'servers') if os.path.exists(config) and os.path.exists(servers): ini = dict4ini.DictIni(config, normal=True) ini.miscellany['global-ignores'] = v['svn_global_ignores'] ini.save() ini = dict4ini.DictIni(servers, normal=True) if v['proxy']: ini['global']['http-proxy-host'] = v['server'] ini['global']['http-proxy-port'] = v['port'] ini['global']['http-proxy-username'] = v['username'] ini['global']['http-proxy-password'] = v['password'] ini.save() else: ini['global'] = {} ini.save() else: common.warn( tr("Maybe your subversion doesn't be installed or installed uncorrectly." ))
def _get_info(self): v = {} v['proxy'] = False v['server'] = self.pref.svn_proxy_server v['port'] = self.pref.svn_proxy_port v['password'] = self.pref.svn_proxy_password v['timeout'] = self.pref.svn_proxy_timeout v['username'] = self.pref.svn_proxy_username if wx.Platform == '__WXMSW__': from modules import winreg try: _key = winreg.Key(winreg.HKCU, r'Software\Tigris.org\Subversion\Config') if 'miscellany' not in _key: key = _key.add('miscellany') else: key = _key['miscellany'] except: common.warn( tr("Maybe your subversion doesn't be installed or installed uncorrectly." )) raise if 'global-ignores' in key.values: v['svn_global_ignores'] = key.values[ 'global-ignores'].getvalue() else: key.values.set('global-ignores', GLOBAL_IGNORES) v['svn_global_ignores'] = key.values[ 'global-ignores'].getvalue() try: key = winreg.Key( winreg.HKCU, r'Software\Tigris.org\Subversion\Servers\global') except: common.warn( tr("Maybe your subversion doesn't be installed or installed uncorrectly." )) raise if 'http-proxy-host' in key.values: v['proxy'] = True self.pref.svn_proxy_server = v['server'] = key.values[ 'http-proxy-host'].getvalue() self.pref.svn_proxy_port = v['port'] = int( key.values['http-proxy-port'].getvalue()) self.pref.svn_proxy_password = v['password'] = key.values[ 'http-proxy-password'].getvalue() self.pref.svn_proxy_timeout = v['timeout'] = int( key.values['http-proxy-timeout'].getvalue()) self.pref.svn_proxy_username = v['username'] = key.values[ 'http-proxy-username'].getvalue() self.pref.save() else: path = os.path.join(common.getHomeDir(), '.subversion') if os.path.exists(path): config = os.path.join(path, 'config') servers = os.path.join(path, 'servers') if os.path.exists(config) and os.path.exists(servers): ini = dict4ini.DictIni(config, normal=True) v['svn_global_ignores'] = ini.miscellany.get( 'global-ignores', GLOBAL_IGNORES) ini = dict4ini.DictIni(servers, normal=True) if ini['global']: v['proxy'] = True self.pref.svn_proxy_server = v['server'] = ini[ 'global'].get('http-proxy-host', '') self.pref.svn_proxy_port = v['port'] = int( ini['global'].get('http-proxy-port', 0)) self.pref.svn_proxy_password = v['password'] = ini[ 'global'].get('http-proxy-password', '') self.pref.svn_proxy_username = v['username'] = ini[ 'global'].get('http-proxy-username', '') self.pref.save() return v