OSDN Git Service

class ThreadListModel is out from board_window.py to threadlistmodel.py.
authorAiwota Programmer <aiwotaprog@tetteke.tk>
Fri, 18 Aug 2006 07:13:43 +0000 (16:13 +0900)
committerAiwota Programmer <aiwotaprog@tetteke.tk>
Fri, 18 Aug 2006 07:13:43 +0000 (16:13 +0900)
src/Hage1/board_window.py
src/Hage1/threadlistmodel.py [new file with mode: 0644]

index afb58b4..f6aa1f9 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")
@@ -218,153 +219,3 @@ class WinWrap:
         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
diff --git a/src/Hage1/threadlistmodel.py b/src/Hage1/threadlistmodel.py
new file mode 100644 (file)
index 0000000..4029f3b
--- /dev/null
@@ -0,0 +1,170 @@
+# Copyright (C) 2006 by Aiwota Programmer
+# aiwotaprog@tetteke.tk
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+import pygtk
+pygtk.require('2.0')
+import gtk
+
+
+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