OSDN Git Service

Change the name of gladeXML reference to widget_tree
[fukui-no-namari/fukui-no-namari.git] / src / Hage1 / board_window.py
index afb58b4..a9e96aa 100644 (file)
@@ -26,6 +26,7 @@ import gobject
 import board_data
 import thread_window
 import misc
+from threadlistmodel import ThreadListModel
 
 GLADE_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                          "..", "data")
@@ -39,13 +40,13 @@ class WinWrap:
         self.board = board
 
         glade_path = os.path.join(GLADE_DIR, GLADE_FILENAME)
-        self.mainwin = gtk.glade.XML(glade_path)
+        self.widget_tree = gtk.glade.XML(glade_path)
 
-        self.treeview = self.mainwin.get_widget("treeview")
+        self.treeview = self.widget_tree.get_widget("treeview")
         self.treeview.set_model(ThreadListModel())
         self.treeview.set_rules_hint(True)
 
-        self.popupmenu = self.mainwin.get_widget("popup_menu")
+        self.popupmenu = self.widget_tree.get_widget("popup_menu")
 
         renderer = gtk.CellRendererText()
 
@@ -75,7 +76,7 @@ class WinWrap:
                   "on_treeview_button_press_event":
                   self.on_treeview_button_press_event,
                   "on_popup_menu_open_activate": self.on_open_thread}
-        self.mainwin.signal_autoconnect(sigdic)
+        self.widget_tree.signal_autoconnect(sigdic)
 
     def updated_thread_highlight(self, column, cell, model, iter):
 
@@ -213,158 +214,12 @@ class WinWrap:
 
         model = self.treeview.get_model()
         model.set_list(list_list)
+
+        # redraw visible area after set list to model
+        self.treeview.queue_draw()
+
         self.reset_sort_indicator()
 
         print "end"
         time_end = time.time()
         print time_end - time_start
-
-
-class ThreadListModel(gtk.GenericTreeModel):
-    column_types = (str, int, str, int, int, int, int)
-    column_names = ["id", "num", "title", "res", "lineCount",
-                    "lastModified", "average"]
-
-    def __init__(self, list=None, sort_column_name="num", sort_reverse=False,
-                 filter_func=None):
-        gtk.GenericTreeModel.__init__(self)
-        if list:
-            self.original_list = list[:]
-        else:
-            self.original_list = []
-
-        self.sort_column_name = sort_column_name
-        self.sort_reverse = sort_reverse
-        self.filter_func = filter_func
-
-        self.do_filter()
-        self.do_sort(self.sort_column_name, self.sort_reverse)
-
-    def refilter(self):
-        before_size = len(self.list)
-        self.do_filter()
-        after_size = len(self.list)
-        self.do_sort(self.sort_column_name, self.sort_reverse)
-        self.list_modified(before_size, after_size)
-        
-    def set_list(self, newlist):
-        self.original_list = newlist[:]
-        self.refilter()
-
-    def set_filter_func(func):
-        self.filter_func = func
-
-    def build_order_dict(self):
-        # key: thread id, value: index in self.list
-        self.order_dict = dict(
-            [(item["id"], index) for index, item in enumerate(self.list)])
-
-    def list_modified(self, before_size, after_size):
-        if before_size > after_size:
-            print "remove", before_size-after_size, "threads"
-            for i in range(before_size - after_size):
-                self.row_deleted(after_size)
-        elif after_size > before_size:
-            print "insert", after_size-before_size, "threads"
-            for i in range(before_size, after_size):
-                self.row_inserted(i, self.get_iter(i))
-        elif after_size != 0:
-            self.row_changed(0, self.get_iter(0))
-
-    def do_filter(self):
-        if not self.filter_func:
-            self.list = self.original_list[:]
-            return
-
-        self.list = []
-        for item in self.original_list:
-            if self.filter_func(self, item):
-                self.list.append(item)
-
-    def compare(self, v1, v2, reverse):
-        if not reverse:
-            if v1 == 0 and v2 == 0:
-                return 0
-            elif v1 == 0:
-                return 1
-            elif v2 == 0:
-                return -1
-        return v1 - v2
-
-    def get_sort(self):
-        return self.sort_column_name, self.sort_reverse
-
-    def do_sort(self, column_name, reverse):
-        if self.column_types[self.column_names.index(column_name)] == str:
-            self.list.sort(None, lambda dic: dic[column_name], reverse)
-        else:
-            h = lambda x, y: self.compare(x, y, reverse)
-            self.list.sort(h, lambda dic: dic[column_name], reverse)
-        self.build_order_dict()
-
-    def sort(self, column_name):
-        old_order_dict = self.order_dict
-
-        if column_name == self.sort_column_name:
-            # sort reverse
-            self.sort_reverse = not self.sort_reverse
-        else:
-            self.sort_column_name = column_name
-            self.sort_reverse = False
-
-        self.do_sort(self.sort_column_name, self.sort_reverse)
-
-        neworder = [old_order_dict[item["id"]] for item in self.list]
-        self.rows_reordered(None, None, neworder)
-
-    def on_get_flags(self):
-        return gtk.TREE_MODEL_LIST_ONLY
-
-    def on_get_n_columns(self):
-        return len(self.column_types)
-
-    def on_get_column_type(self, n):
-        return self.column_types[n]
-
-    def on_get_iter(self, path):
-        try:
-            return self.list[path[0]]
-        except IndexError:
-            return None
-
-    def on_get_path(self, rowref):
-        return self.order_dict[rowref["id"]]
-
-    def on_get_value(self, rowref, column):
-        return rowref[self.column_names[column]]
-
-    def on_iter_next(self, rowref):
-        try:
-            i = self.order_dict[rowref["id"]] + 1
-            return self.list[i]
-        except IndexError:
-            return None
-
-    def on_iter_children(self, rowref):
-        if rowref:
-            return None
-        return self.list[0]
-
-    def on_iter_has_child(self, rowref):
-        return False
-
-    def on_iter_n_children(self, rowref):
-        if rowref:
-            return 0
-        return len(self.list)
-
-    def on_iter_nth_child(self, rowref, n):
-        if rowref:
-            return None
-        try:
-            return self.list[n]
-        except IndexError:
-            return None
-
-    def on_iter_parent(self, child):
-        return None