OSDN Git Service

Scroll configuration is set using Adjustment in ThreadView.
authorAiwota Programmer <aiwotaprog@tetteke.tk>
Sun, 3 May 2009 13:50:16 +0000 (22:50 +0900)
committerAiwota Programmer <aiwotaprog@tetteke.tk>
Sun, 3 May 2009 13:50:16 +0000 (22:50 +0900)
src/FukuiNoNamari/thread_view.py

index d7b0b43..0c181ba 100644 (file)
@@ -558,8 +558,8 @@ class ThreadView(gtk.HBox):
             "style-set", self.on_drawingarea_style_set)
         self.drawingarea.connect(
             "key-press-event", self.on_drawingarea_key_press_event)
-        self.vscrollbar.connect(
-            "value-changed", self.on_vscrollbar_value_changed)
+        self.adjustment.connect(
+            "value-changed", self.on_adjustment_value_changed)
 
         self.pango_layout = self.drawingarea.create_pango_layout("")
 
@@ -616,14 +616,14 @@ class ThreadView(gtk.HBox):
         delta = 0
 
         if top_layout is not None:
-            delta = top_layout.posY - self.vscrollbar.get_value()
+            delta = top_layout.posY - self.adjustment.value
 
         self.relayout()
         self.drawingarea_prev_width = self.drawingarea.allocation.width
 
-        # after relayout, set vscrollbar.value to top layout's posY
+        # after relayout, set adjustment.value to top layout's posY
         if top_layout is not None:
-            self.vscrollbar.set_value(top_layout.posY - delta)
+            self.adjustment.value = top_layout.posY - delta
 
     def relayout(self):
         width = self.drawingarea.allocation.width
@@ -634,7 +634,7 @@ class ThreadView(gtk.HBox):
             x, y = layout.get_pixel_size()
             sum_height += y
 
-        self.vscrollbar.set_range(0, sum_height)
+        self.adjustment.upper = sum_height
         self.change_vscrollbar_visible()
 
     def change_vscrollbar_visible(self):
@@ -643,15 +643,20 @@ class ThreadView(gtk.HBox):
         else:
             self.vscrollbar.show()
 
+    def _set_adjustment_value(self, value):
+        value = min(self.adjustment.upper - self.adjustment.page_size, value)
+        value = max(self.adjustment.lower, value)
+        self.adjustment.value = value
+
     def jump(self, value):
-        self.vscrollbar.set_value(value)
+        self._set_adjustment_value(value)
 
     def jump_to_layout(self, layout):
         self.jump(layout.posY)
         
     def jump_to_the_end(self):
         value = self.adjustment.upper - self.adjustment.page_size
-        self.vscrollbar.set_value(value)
+        self._set_adjustment_value(value)
 
     def jump_to_res(self, resnum):
         for layout in self.res_layout_list:
@@ -687,7 +692,7 @@ class ThreadView(gtk.HBox):
         return self.button_pressed_pt, self.button_moving_pt
 
     def draw_viewport(self, area):
-        view_y = self.vscrollbar.get_value()
+        view_y = self.adjustment.value
         self.drawingarea.window.draw_rectangle(
             self.drawingarea.style.base_gc[0],
             True, area.x, area.y, area.width, area.height)
@@ -708,7 +713,7 @@ class ThreadView(gtk.HBox):
                 selection_start, selection_end)
 
     def transform_coordinate_gdk_to_adj(self, y):
-        return y + self.vscrollbar.get_value()
+        return y + self.adjustment.value
 
     def transform_coordinate_adj_to_layout(self, x, y, layout):
         return x, y - layout.posY
@@ -853,13 +858,14 @@ class ThreadView(gtk.HBox):
             self.wrap_relayout()
 
         self.adjustment.page_size = self.drawingarea.allocation.height
-        self.vscrollbar.set_increments(20, self.drawingarea.allocation.height)
+        self.adjustment.step_increment = 20
+        self.adjustment.page_increment = self.drawingarea.allocation.height
 
         # re-set 'value' for prevent overflow
-        self.vscrollbar.set_value(self.vscrollbar.get_value())
+        self._set_adjustment_value(self.adjustment.value)
         self.change_vscrollbar_visible()
 
-    def on_vscrollbar_value_changed(self, widget, data=None):
+    def on_adjustment_value_changed(self, widget, data=None):
         self.drawingarea.queue_draw()
 
     def on_drawingarea_scroll_event(self, widget, event, data=None):
@@ -876,7 +882,7 @@ class ThreadView(gtk.HBox):
             if (old_lay != new_lay
                 or old_elem != new_elem
                 or old_idx != new_idx):
-                view_y = self.vscrollbar.get_value()
+                view_y = self.adjustment.value
                 o_y = old_lay.posY
                 n_y = new_lay.posY
                 o_width, o_height = old_lay.get_pixel_size()
@@ -977,18 +983,18 @@ class ThreadView(gtk.HBox):
         if event.keyval in (gtk.keysyms.Up, gtk.keysyms.Down,
                             gtk.keysyms.Page_Up, gtk.keysyms.Page_Down,
                             gtk.keysyms.Home):
-            value = self.vscrollbar.get_value()
+            value = self.adjustment.value
             if event.keyval == gtk.keysyms.Up:
-                step_increment = self.adjustment.get_property("step-increment")
+                step_increment = self.adjustment.step_increment
                 value = value - step_increment
             elif event.keyval == gtk.keysyms.Down:
-                step_increment = self.adjustment.get_property("step-increment")
+                step_increment = self.adjustment.step_increment
                 value = value + step_increment
             elif event.keyval == gtk.keysyms.Page_Up:
-                step_increment = self.adjustment.get_property("page-increment")
+                step_increment = self.adjustment.page_increment
                 value = value - step_increment
             elif event.keyval == gtk.keysyms.Page_Down:
-                step_increment = self.adjustment.get_property("page-increment")
+                step_increment = self.adjustment.page_increment
                 value = value + step_increment
             elif event.keyval == gtk.keysyms.Home:
                 value = 0