+
+ def on_menu_toolbar_activate(self, widget):
+ if self.toolbar.parent.get_property("visible"):
+ self.toolbar.parent.hide()
+ else:
+ self.toolbar.parent.show()
+
+ def on_menu_statusbar_activate(self, widget):
+ if self.statusbar.get_property("visible"):
+ self.statusbar.hide()
+ else:
+ self.statusbar.show()
+
+
+ # signal handlers
+
+ # menu and toolbutton
+
+ def on_menu_add_bookmark_activate(self, widget):
+ bookmark_list.bookmark_list.add_bookmark_with_edit(
+ uri=self.bbs_type.uri)
+
+ def on_menu_close_activate(self, widget):
+ self.destroy()
+
+ def on_menu_delete_activate(self, widget):
+ selection = self.treeview.get_selection()
+ model, iter = selection.get_selected()
+ if not iter:
+ return
+ thread = model.get_value(
+ iter, ThreadListModel.column_names.index("id"))
+
+ bbs_type_for_thread = self.bbs_type.clone_with_thread(thread)
+
+ dat_path = misc.get_thread_dat_path(bbs_type_for_thread)
+ try:
+ os.remove(dat_path)
+ except OSError:
+ traceback.print_exc()
+ idx_path = misc.get_thread_idx_path(bbs_type_for_thread)
+ try:
+ os.remove(idx_path)
+ except OSError:
+ traceback.print_exc()
+ states_path = misc.get_thread_states_path(bbs_type_for_thread)
+ try:
+ os.remove(states_path)
+ except OSError:
+ traceback.print_exc()
+
+ def on_menu_filter_activate(self, widget):
+ self.filterbar.show()
+ self.entry_filterbar.grab_focus()
+
+ def on_menu_manage_bookmarks_activate(self, widget):
+ bookmark_window.open()
+
+ def on_menu_open_activate(self, widget):
+ self.open_thread()
+
+ def on_menu_quit_activate(self, widget):
+ session.main_quit()
+
+ def on_menu_refresh_activate(self, widget):
+ self.load(True)
+
+
+ # window
+
+ def on_window_board_delete_event(self, widget, event):
+ self.save()
+ return False
+
+ def on_window_board_destroy(self, widget):
+ self.destroyed()
+
+
+ # treeview
+
+ def on_treeview_row_activated(self, widget, path, view_column):
+ self.open_thread()
+
+ def on_treeview_button_press_event(self, widget, event):
+ if event.button == 3:
+ x = int(event.x)
+ y = int(event.y)
+ time = event.time
+ pthinfo = widget.get_path_at_pos(x, y)
+ if pthinfo is not None:
+ path, col, cellx, celly = pthinfo
+ widget.grab_focus()
+ widget.set_cursor(path, col, 0)
+ self.popupmenu.popup(None, None, None, event.button, time)
+ return 1
+
+
+ # filterbar
+
+ def on_entry_filterbar_activate(self, widget):
+ text = widget.get_text()
+
+ def func(model, item):
+ try:
+ item["title"].index(text)
+ except ValueError:
+ return False
+ else:
+ return True
+
+ model = self.treeview.get_model()
+ if model:
+ if text:
+ filter_func = func
+ else:
+ filter_func = None
+ model.refilter(filter_func)
+
+ def on_toolbutton_filterbar_close_clicked(self, widget):
+ self.filterbar.hide()
+
+ def on_button_filterbar_clear_clicked(self, widget):
+ self.entry_filterbar.set_text("")
+ model = self.treeview.get_model()
+ if model:
+ model.refilter(None)