def show_list(self, image_prefix): self.templates_names = [] self.sitecon = mw.get_connect(self.password) templates = self.sitecon.allpages(prefix=image_prefix, namespace=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 show_list(self, image_prefix): if len(image_prefix) >= self.image_prefix_min_lenght: sitecon = mw.get_connect(self.password) images = sitecon.allpages(prefix=image_prefix, namespace=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 on_done(self, file_descr=''): sitecon = mw.get_connect(self.password) if file_descr: self.file_descr = file_descr else: self.file_descr = '%s as %s' % (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) sublime.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, title, password): sitecon = mw.get_connect(password) # selection = self.view.sel() # search_pre = self.view.substr(selection[0]).strip() selected_text = self.view.substr(self.view.sel()[0]).strip() title = selected_text if selected_text else 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: sublime.status_message('Unable to find laguage links for "%s"' % title)
def run(self, edit, title, password): is_skip_summary = mw.get_setting('mediawiker_skip_summary', False) sitecon = mw.get_connect(password) self.title = mw.get_title() if self.title: self.page = sitecon.Pages[self.title] if self.page.can('edit'): self.current_text = self.view.substr(sublime.Region(0, self.view.size())) if not is_skip_summary: # summary_message = 'Changes summary (%s):' % mw.get_setting('mediawiki_site_active') summary_message = 'Changes summary (%s):' % mw.get_view_site() self.view.window().show_input_panel(summary_message, '', self.on_done, None, None) else: self.on_done('') else: sublime.status_message('You have not rights to edit this page') else: sublime.status_message('Can\'t publish page with empty title') return
def run(self, edit, title, password): is_writable = False sitecon = mw.get_connect(password) is_writable, text = mw.get_page_text(sitecon, title) self.view.set_syntax_file('Packages/Mediawiker/Mediawiki.tmLanguage') self.view.settings().set('mediawiker_is_here', True) self.view.settings().set('mediawiker_wiki_instead_editor', mw.get_setting('mediawiker_wiki_instead_editor')) self.view.set_name(title) if is_writable: if not text: sublime.status_message('Wiki page %s is not exists. You can create new..' % (title)) text = '<!-- New wiki page: Remove this with text of the new page -->' # insert text self.view.erase(edit, sublime.Region(0, self.view.size())) self.view.run_command('mediawiker_insert_text', {'position': 0, 'text': text}) sublime.status_message('Page %s was opened successfully from %s.' % (title, mw.get_view_site())) self.view.set_scratch(True) # own is_changed flag instead of is_dirty for possib. to reset.. self.view.settings().set('is_changed', False)
def on_query_completions(self, view, prefix, locations): if view.settings().get('mediawiker_is_here', False): view = sublime.active_window().active_view() # internal links completions cursor_position = view.sel()[0].begin() line_region = view.line(view.sel()[0]) line_before_position = view.substr(sublime.Region(line_region.a, cursor_position)) internal_link = '' if line_before_position.rfind('[[') > line_before_position.rfind(']]'): internal_link = line_before_position[line_before_position.rfind('[[') + 2:] completions = [] if internal_link: word_cursor_min_len = mw.get_setting('mediawiker_page_prefix_min_length', 3) if len(internal_link) >= word_cursor_min_len: namespaces = [ns.strip() for ns in mw.get_setting('mediawiker_search_namespaces').split(',')] sitecon = mw.get_connect() pages = [] for ns in namespaces: pages = sitecon.allpages(prefix=internal_link, namespace=ns) for p in pages: print(p.name) # name - full page name with namespace # page_title - title of the page wo namespace # For (Main) namespace, shows [page_title (Main)], makes [[page_title]] # For other namespace, shows [page_title namespace], makes [[name|page_title]] if int(ns): ns_name = p.name.split(':')[0] page_insert = '%s|%s' % (p.name, p.page_title) else: ns_name = '(Main)' page_insert = p.page_title page_show = '%s\t%s' % (p.page_title, ns_name) completions.append((page_show, page_insert)) return completions
def do_search(self, string_value): sitecon = mw.get_connect(self.password) namespace = mw.get_setting('mediawiker_search_namespaces') return sitecon.search(search=string_value, what='text', limit=self.search_limit, namespace=namespace)
def get_list_data(self, category_root): ''' get objects list by category name ''' sitecon = mw.get_connect(self.password) return sitecon.Categories[category_root]
def run(self, edit, title, password): self.sitecon = mw.get_connect(password) 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)