[gnome-games] sudoku:Integrate activity timer into note editor



commit 6dfad285cce67541b51067a291cf14907a6047f6
Author: Jim Ross <jimbo dimensia com>
Date:   Sun Apr 11 22:21:35 2010 -0400

    sudoku:Integrate activity timer into note editor
    
    GNOME bug #586263

 gnome-sudoku/src/lib/gsudoku.py    |    4 ++++
 gnome-sudoku/src/lib/main.py       |    1 +
 gnome-sudoku/src/lib/number_box.py |   15 +++++++++++++++
 3 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/gnome-sudoku/src/lib/gsudoku.py b/gnome-sudoku/src/lib/gsudoku.py
index ff63434..a622d6f 100644
--- a/gnome-sudoku/src/lib/gsudoku.py
+++ b/gnome-sudoku/src/lib/gsudoku.py
@@ -57,6 +57,10 @@ class SudokuNumberGrid (gtk.AspectFrame):
         for entry in self.__entries__.values():
             entry.set_parent_win(parent)
 
+    def set_timer(self, timer):
+        for entry in self.__entries__.values():
+            entry.set_timer(timer)
+
     def allocate_cb (self, w, rect):
         if rect.width > rect.height:
             side = rect.height
diff --git a/gnome-sudoku/src/lib/main.py b/gnome-sudoku/src/lib/main.py
index 6f88339..740753b 100644
--- a/gnome-sudoku/src/lib/main.py
+++ b/gnome-sudoku/src/lib/main.py
@@ -164,6 +164,7 @@ class UI (gconf_wrapper.GConfWrapper):
                                             )
         self.setup_gui()
         self.timer = timer.ActiveTimer(self.w)
+        self.gsd.set_timer(self.timer)
         self.won = False
         # add the accelerator group to our toplevel window
         self.worker_connections = []
diff --git a/gnome-sudoku/src/lib/number_box.py b/gnome-sudoku/src/lib/number_box.py
index 1deb4be..1598aa3 100644
--- a/gnome-sudoku/src/lib/number_box.py
+++ b/gnome-sudoku/src/lib/number_box.py
@@ -3,6 +3,7 @@
 
 import gtk, gobject, pango, cairo
 import math
+import timer
 from gettext import gettext as _
 
 ERROR_HIGHLIGHT_COLOR = (1.0, 0, 0)
@@ -99,6 +100,7 @@ class NumberBox (gtk.Widget):
         gtk.Widget.__init__(self)
         self.upper = upper
         self.parent_win = None
+        self.timer = None
         self.font = self.style.font_desc
         self.font.set_size(BASE_FONT_SIZE)
         self.note_font = self.font.copy()
@@ -117,6 +119,9 @@ class NumberBox (gtk.Widget):
     def set_parent_win(self, new_parent):
         self.parent_win = new_parent
 
+    def set_timer(self, new_timer):
+        self.timer = new_timer
+
     def pointer_enter_cb (self, *args):
         if not self.is_focus():
             self.set_state(gtk.STATE_PRELIGHT)
@@ -216,6 +221,14 @@ class NumberBox (gtk.Widget):
         else:
             self.set_note_text_interactive(bottom_text = w.get_text())
 
+    def note_focus_in(self, win, evt):
+        if (self.timer):
+            self.timer.resume_timing()
+
+    def note_focus_out(self, wgt, evt):
+        if (self.timer):
+            self.timer.pause_timing()
+
     def show_note_editor (self, top = True):
         alloc = self.get_allocation()
         w = gtk.Window()
@@ -235,7 +248,9 @@ class NumberBox (gtk.Widget):
             e.set_text(self.bottom_note_text)
         w.add(f)
         e.connect('changed', self.note_changed_cb, top)
+        e.connect('focus-in-event', self.note_focus_in)
         e.connect('focus-out-event', lambda e, ev, w: w.destroy(), w)
+        e.connect('focus-out-event', self.note_focus_out)
         e.connect('activate', lambda e, w: w.destroy(), w)
         x, y = self.window.get_origin()
         if top:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]