def show_list(self, image_prefix): self.templates_names = [] self.sitecon = mw.get_connect() templates = self.sitecon.allpages(prefix=image_prefix, namespace=mw.TEMPLATE_NAMESPACE) # images list by prefix for template in templates: self.templates_names.append(template.page_title) sublime.set_timeout(lambda: sublime.active_window().show_quick_panel(self.templates_names, self.on_done), 1)
def run(self, edit): title = mw.get_title() sitecon = mw.get_connect() self.mw_get_page_backlinks(sitecon, title) if self.links: sublime.active_window().show_quick_panel(self.links, self.on_done) else: mw.status_message("Unable to find links to this page")
def show_list(self, image_prefix): if len(image_prefix) >= self.image_prefix_min_lenght: sitecon = mw.get_connect() images = sitecon.allpages(prefix=image_prefix, namespace=mw.IMAGE_NAMESPACE) # images list by prefix # self.images_names = map(self.get_page_title, images) self.images_names = [self.get_page_title(x) for x in images] sublime.set_timeout(lambda: sublime.active_window().show_quick_panel(self.images_names, self.on_done), 1) else: sublime.message_dialog('Image prefix length must be more than %s. Operation canceled.' % self.image_prefix_min_lenght)
def command_run(self): pre_sitecon = mw.get_connect() # TODO: refact.. now: setup connection here.. next steps will reuse it.. else exit.. # otherwise we have trying to connect 2 times if connection unavailable (command, then notif..) if pre_sitecon: self.window.active_view().run_command(self.action, self.action_params) try: self.get_notifications() except Exception as e: mw.status_message('Mediawiker exception: %s' % e)
def on_done(self, file_descr=''): sitecon = mw.get_connect() if file_descr: self.file_descr = file_descr else: self.file_descr = '%s as %s' % (os.path.basename(self.file_path), self.file_destname) try: with open(self.file_path, 'rb') as f: sitecon.upload(f, self.file_destname, self.file_descr) mw.status_message('File %s successfully uploaded to wiki as %s' % (self.file_path, self.file_destname)) except IOError as e: sublime.message_dialog('Upload io error: %s' % e) except Exception as e: sublime.message_dialog('Upload error: %s' % e)
def run(self, edit): sitecon = mw.get_connect() selected_text = self.view.substr(self.view.sel()[0]).strip() title = selected_text if selected_text else mw.get_title() self.mw_get_page_langlinks(sitecon, title) self.lang_prefixes = [] for lang_prefix in self.links.keys(): self.lang_prefixes.append(lang_prefix) self.links_names = ['%s: %s' % (lp, self.links[lp]) for lp in self.lang_prefixes] if self.links_names: sublime.active_window().show_quick_panel(self.links_names, self.on_done) else: mw.status_message('Unable to find laguage links for "%s"' % title)
def run(self, edit): notifications_type = mw.get_setting('mediawiki_notifications_show_all', True) self.read_sign = mw.get_setting('mediawiki_notifications_read_sign', ' [+]') sitecon = mw.get_connect() ns = sitecon.notifications() self.msgs = [] if ns: if isinstance(ns, dict): for n in ns.keys(): msg = ns.get(n, {}) msg_read = msg.get('read', '') if notifications_type or not msg_read: self.msgs.append(self._get_data(msg)) elif isinstance(ns, list): for msg in ns: msg_read = msg.get('read', '') if notifications_type or not msg_read: self.msgs.append(self._get_data(msg)) self.msgs = sorted(self.msgs, key=lambda k: k['read']) n_list = ['All in browser'] + ['%s, %s: %s (%s)%s' % (m['title'], m['agent'], m['timestamp'], m['type'], m['read']) for m in self.msgs] sublime.active_window().show_quick_panel(n_list, self.on_done)
def get_notifications(self): # check notifications on page open command if self.action == 'mediawiker_show_page' and self.check_notifications: sitecon = mw.get_connect() ns = sitecon.notifications() is_notify_exists = False if ns: if isinstance(ns, dict): for n in ns.keys(): msg = ns.get(n, {}) msg_read = msg.get('read', None) if not msg_read: is_notify_exists = True break elif isinstance(ns, list): for msg in ns: msg_read = msg.get('read', None) if not msg_read: is_notify_exists = True break if is_notify_exists: show_notify = sublime.ok_cancel_dialog('You have new notifications.') if show_notify: self.window.run_command("mediawiker_get_notifications")
def run(self, edit): sitecon = mw.get_connect() text = self.view.substr(sublime.Region(0, self.view.size())) site_active = mw.get_view_site() site_list = mw.get_setting('mediawiki_site') host = site_list[site_active]['host'] path = site_list[site_active]['path'] head_default = mw.get_setting('mediawiki_preview_head') head = '\n'.join(site_list[site_active].get('preview_custom_head', head_default)) lang = mw.get_setting('mediawiki_preview_lang', 'en') preview_file = mw.get_setting('mediawiki_preview_file', 'Wiki_page_preview_') site_http = 'https' if site_list[site_active].get('https', False) else 'http' html_header_lines = [ '<!DOCTYPE html>', '<html>', '<head>', '%(head)s', '</head>', '<body style="margin:20px;">' ] geshi_css = self.get_geshi_langs() head_tpl = Template(head) head_str = head_tpl.render(http=site_http, host=host, path=path, lang=lang, geshi_css=geshi_css) html_header = '\n'.join(html_header_lines) % {'head': head_str} html_footer = '</body></html>' html = sitecon.parse(text=text, title=mw.get_title(), disableeditsection=True).get('text', {}).get('*', '') html = html.replace('"//', '"%s://' % site_http) # internal links: images,.. html = html.replace('"/', '"%s://%s/' % (site_http, host)) # internal local links: images,.. if preview_file.endswith('.html'): preview_file = os.path.join(sublime.packages_path(), 'User', preview_file) # fixed file in User folder if pythonver >= 3: with open(preview_file, 'w', encoding='utf-8') as tf: tf.write(html_header) tf.write(html) tf.write(html_footer) else: with open(preview_file, 'w') as tf: tf.write(html_header) tf.write(html.encode('utf-8')) tf.write(html_footer) html_view = sublime.active_window().find_open_file(preview_file) if html_view: sublime.active_window().focus_view(html_view) else: sublime.active_window().open_file(preview_file) webbrowser.open(tf.name) else: # temporary file if pythonver >= 3: with tempfile.NamedTemporaryFile(mode='w+t', suffix='.html', prefix=preview_file, dir=None, delete=False, encoding='utf-8') as tf: tf.write(html_header) tf.write(html) tf.write(html_footer) else: with tempfile.NamedTemporaryFile(mode='w+t', suffix='.html', prefix=preview_file, dir=None, delete=False) as tf: tf.write(html_header) tf.write(html.encode('utf-8')) tf.write(html_footer) webbrowser.open(tf.name)
def get_list_data(self, category_root): ''' get objects list by category name ''' sitecon = mw.get_connect() return sitecon.Categories[category_root]
def do_search(self, string_value): sitecon = mw.get_connect() namespace = mw.get_setting('mediawiker_search_namespaces') return sitecon.search(search=string_value, what='text', limit=self.search_limit, namespace=namespace)
def run(self, edit): self.sitecon = mw.get_connect() self.category_root = mw.get_category(mw.get_setting('mediawiker_category_root'))[1] sublime.active_window().show_input_panel('Wiki root category:', self.category_root, self.get_category_menu, None, None)