def instant_search(self): # init self.cached_titles = [] self.last_query = "" # previous user input self.query_o = None self.caret = SimpleNamespace(pos=0, text="", stick=False) # cursor position self.original_page = self.window.page.name # we return here after escape self.original_history = list(self.window.history.uistate["list"]) self.selection = None if not self.plugin.preferences['is_cached']: # reset last search results State.reset() self.menu_page = None self.is_closed = False self.last_page = None # building quick title cache def build(start=""): o = self.window.notebook.pages for s in o.list_pages(Path(start or ":")): start2 = (start + ":" if start else "") + s.basename self.cached_titles.append((start2, start2.lower())) build(start2) build() # Gtk self.gui = Dialog(self.window, _('Search'), buttons=None, defaultwindowsize=(300, -1)) self.gui.resize(300, 100) # reset size self.input_entry = InputEntry() self.input_entry.connect('key_press_event', self.move) self.input_entry.connect( 'changed', self.change) # self.change is needed by GObject or something self.gui.vbox.pack_start(self.input_entry, expand=False, fill=True, padding=0) # noinspection PyArgumentList self.label_object = Gtk.Label(label='') self.label_object.set_size_request(300, -1) self.gui.vbox.pack_start(self.label_object, expand=False, fill=True, padding=0) # preview pane self.label_preview = Gtk.Label(label='...loading...') # not sure if this has effect, longer lines without spaces still make window inflate self.label_preview.set_line_wrap(True) self.label_preview.set_xalign(0) # align to the left self.preview_pane = Gtk.VBox() self.preview_pane.pack_start(self.label_preview, False, False, 5) self.window.pageview.pack_start(self.preview_pane, False, False, 5) # gui geometry self.geometry(init=True) self.gui.show_all()
def instantsearch(self): # init self.cached_titles = [] # self.menu = defaultdict(_MenuItem) self.lastQuery = "" # previous user input self.queryO = None self.caret = {'pos': 0, 'altPos': 0, 'text': ""} # cursor position self.originalPage = self.window.page.name # we return here after escape self.selection = None if not self.plugin.preferences['isCached']: # reset last search results State.reset() self.menuPage = None self.isClosed = False self.lastPage = None # preferences self.title_match_char = self.plugin.preferences['title_match_char'] self.start_search_length = self.plugin.preferences[ 'start_search_length'] self.keystroke_delay = self.plugin.preferences['keystroke_delay'] self.open_when_unique = self.plugin.preferences['open_when_unique'] # building quick title cache def build(start=""): if hasattr(self.window.notebook, 'pages'): o = self.window.notebook.pages else: # for Zim 0.66- o = self.window.notebook.index for s in o.list_pages(Path(start or ":")): start2 = (start + ":" if start else "") + s.basename self.cached_titles.append((start2, start2.lower())) build(start2) build() # Gtk self.gui = Dialog(self.window, _('Search'), buttons=None, defaultwindowsize=(300, -1)) self.gui.resize(300, 100) # reset size self.inputEntry = InputEntry() self.inputEntry.connect('key_press_event', self.move) self.inputEntry.connect( 'changed', self.change) # self.change is needed by GObject or something self.gui.vbox.pack_start(self.inputEntry, expand=False, fill=True, padding=0) self.labelObject = Gtk.Label(label=('')) self.labelObject.set_size_request(300, -1) self.gui.vbox.pack_start(self.labelObject, expand=False, fill=True, padding=0) # gui geometry px, py = self.window.get_position() pw, ph = self.window.get_size() x, y = self.gui.get_position() if self.plugin.preferences[ 'position'] == InstantsearchPlugin.POSITION_RIGHT: self.gui.move((pw - 300), 0) elif self.plugin.preferences[ 'position'] == InstantsearchPlugin.POSITION_CENTER: self.gui.resize(300, 100) self.gui.move(px + (pw / 2) - 150, py + (ph / 2) - 250) else: raise AttributeError("Instant search: Wrong position preference.") self.gui.show_all() self.labelVar = "" self.timeout = "" self.timeoutOpenPage = None