import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class SearchResultDialog(): def __init__(self, builder, db): self.db = db self.window = builder.get_object("search_result_window") self.window.set_title("Lenses matching search") self.window.connect("destroy", self.on_destroy) self.window.set_default_size(600, 300) self.okBtn = builder.get_object("search_result_ok_btn") self.okBtn.connect("clicked", self.on_ok_btn_clicked) box = builder.get_object("search_result_content") self.liststore = Gtk.ListStore(str, int, str, str, int) treeview = Gtk.TreeView() treeview.set_model(self.liststore) for i, title in enumerate(["Maker", "Serial No", "Lens", "Notes"]): renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn(title, renderer, text=i) treeview.append_column(column) self.scrollable_treelist = Gtk.ScrolledWindow() self.scrollable_treelist.set_vexpand(True) self.scrollable_treelist.add(treeview) box.add(self.scrollable_treelist) self.window.show_all() self.okBtn.grab_focus() def addLensData(self, searchData): if self.emptyString(searchData[0]) == True and self.emptyString(searchData[1]) == False: rows = self.db.getLensByPattern(searchData[1]) elif self.emptyString(searchData[0]) == False and self.emptyString(searchData[1]) == False: rows = self.db.getLensByMakerPattern(searchData[0], searchData[1]) elif self.emptyString(searchData[0]) == False and self.emptyString(searchData[1]) == True: rows = self.db.getLensByMaker(searchData[0]) else: rows = None if rows is not None: for row in rows: self.liststore.append(row) def emptyString(self, str): return not (str and str.strip()) def on_ok_btn_clicked(self, button): self.on_destroy(self) def on_ok_clicked(self, button): self.on_destroy(self) def on_destroy(self, window): self.scrollable_treelist.destroy() self.window.hide()