[Xword-commits] r107 - in trunk: . data debian

terrencegf at garage.maemo.org terrencegf at garage.maemo.org
Fri May 23 02:31:05 EEST 2008


Author: terrencegf
Date: 2008-05-23 02:30:25 +0300 (Fri, 23 May 2008)
New Revision: 107

Added:
   trunk/data/check_letter.png
   trunk/data/check_puzzle.png
   trunk/data/check_word.png
   trunk/data/clock.png
   trunk/data/solve_letter.png
   trunk/data/solve_puzzle.png
   trunk/data/solve_word.png
Removed:
   trunk/data/crossword-check-all.png
   trunk/data/crossword-check.png
   trunk/data/crossword-clock.png
   trunk/data/crossword-solve.png
Modified:
   trunk/debian/changelog
   trunk/xword
Log:
Started on v.1.0.8 mods.  Added 'Puzzle' menus to Check/Solve/Clear each of 
Letter/Word/Puzzle.  Modified tool button layout and updated associated PNGs.


Added: trunk/data/check_letter.png
===================================================================
(Binary files differ)


Property changes on: trunk/data/check_letter.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/check_puzzle.png
===================================================================
(Binary files differ)


Property changes on: trunk/data/check_puzzle.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/check_word.png
===================================================================
(Binary files differ)


Property changes on: trunk/data/check_word.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Copied: trunk/data/clock.png (from rev 106, trunk/data/crossword-clock.png)
===================================================================
(Binary files differ)

Deleted: trunk/data/crossword-check-all.png
===================================================================
(Binary files differ)

Deleted: trunk/data/crossword-check.png
===================================================================
(Binary files differ)

Deleted: trunk/data/crossword-clock.png
===================================================================
(Binary files differ)

Deleted: trunk/data/crossword-solve.png
===================================================================
(Binary files differ)

Added: trunk/data/solve_letter.png
===================================================================
(Binary files differ)


Property changes on: trunk/data/solve_letter.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/solve_puzzle.png
===================================================================
(Binary files differ)


Property changes on: trunk/data/solve_puzzle.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/solve_word.png
===================================================================
(Binary files differ)


Property changes on: trunk/data/solve_word.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog	2008-05-22 16:23:18 UTC (rev 106)
+++ trunk/debian/changelog	2008-05-22 23:30:25 UTC (rev 107)
@@ -1,3 +1,12 @@
+xword (1.0.8) stable; urgency=low
+
+  * Reformat 'Puzzle' menu. Now contains 'Check', 'Solve', and 'Clear' for
+    each of 'Letter', 'Word', and 'Puzzle'.
+  * Alter toolbar buttons and include new buttons for 'Check Letter' and
+    'Solve Letter'.
+
+ -- Terrence Fleury <terrencegf at gmail.com>  Thu, 22 May 2008 18:13:00 -0500
+
 xword (1.0.7-1) stable; urgency=low
 
   * Add simple recent list

Modified: trunk/xword
===================================================================
--- trunk/xword	2008-05-22 16:23:18 UTC (rev 106)
+++ trunk/xword	2008-05-22 23:30:25 UTC (rev 107)
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 
-__version__ = "1.0.7"
+__version__ = "1.0.8"
 
 __license__ = """
 Copyright (c) 2005-2006,
@@ -69,11 +69,6 @@
 
 HOME_PATH = os.sep+'usr'+os.sep+'share'+os.sep+'xword'
 if os.path.exists('data'+os.sep+'Left.xpm'): HOME_PATH = 'data'
-CHECK_ICON = HOME_PATH + os.sep + 'crossword-check.png'
-CHECK_ALL_ICON = HOME_PATH + os.sep + 'crossword-check-all.png'
-SOLVE_ICON = HOME_PATH + os.sep + 'crossword-solve.png'
-TIMER_ICON = HOME_PATH + os.sep + 'crossword-clock.png'
-ABOUT_ICON = HOME_PATH + os.sep + 'xword-logo2.png'
 
 MIN_BOX_SIZE = 12 
 MAX_BOX_SIZE = 40
@@ -86,13 +81,6 @@
 FIXED_MISTAKE = 2
 CHEAT = 3
 
-MENU_OPEN = 1
-MENU_SAVE = 2
-MENU_PRINT = 3
-MENU_QUIT = 5
-
-MENU_SKIP = 10
-
 layouts = [
     ('Only Puzzle', 'puzzle'),
     ('Right Side', ('H', 'puzzle', 550, ('V', 'across', 250, 'down'))),
@@ -778,7 +766,7 @@
             job.close()
             job.print_()
 
-    def print_puzzle(self, win):
+    def print_file(self, win):
         job = gnomeprint.Job(gnomeprint.config_default())
         dialog = gnomeprint.ui.Dialog(job, "Print...", 0)
         dialog.connect('response', self.do_print, job)
@@ -1135,6 +1123,15 @@
 
         self.move_to(x, y)
 
+    def check_letter(self):
+        correct = True
+        if not self.puzzle.is_cell_correct(self.x,self.y):
+            if self.puzzle.responses[self.x,self.y] <> '':
+                self.puzzle.errors[self.x,self.y] = MISTAKE
+                correct = False
+                self.do_update('box-update', self.x, self.y)
+        self.do_update('check-letter-result', correct)
+
     def check_word(self):
         correct = True
         for (x, y) in self.selection:
@@ -1143,7 +1140,6 @@
                     self.puzzle.errors[x, y] = MISTAKE
                     correct = False
                     self.do_update('box-update', x, y)
-
         self.do_update('check-word-result', correct)
 
     def check_puzzle(self):
@@ -1154,19 +1150,45 @@
                     self.puzzle.errors[x, y] = MISTAKE
                     correct = False
                     self.do_update('box-update', x, y)
-
         self.do_update('check-puzzle-result', correct)
 
+    def solve_letter(self):
+        if not self.puzzle.is_cell_correct(self.x, self.y):
+            self.puzzle.errors[self.x, self.y] = CHEAT
+            self.puzzle.responses[self.x, self.y] = self.puzzle.answers[self.x, self.y]
+            self.do_update('box-update', self.x, self.y)
+        if self.puzzle.is_puzzle_correct():
+            self.do_update('puzzle-finished')
+
     def solve_word(self):
         for (x, y) in self.selection:
             if not self.puzzle.is_cell_correct(x, y):
                 self.puzzle.errors[x, y] = CHEAT
                 self.puzzle.responses[x, y] = self.puzzle.answers[x, y]
                 self.do_update('box-update', x, y)
-                    
         if self.puzzle.is_puzzle_correct():
             self.do_update('puzzle-finished')
 
+    def solve_puzzle(self):
+        for (x, y) in self.puzzle.responses.keys():
+            if not self.puzzle.is_cell_correct(x, y):
+                self.puzzle.errors[x, y] = CHEAT
+                self.puzzle.responses[x, y] = self.puzzle.answers[x, y]
+                self.do_update('box-update', x, y)
+        if self.puzzle.is_puzzle_correct():
+            self.do_update('puzzle-finished')
+
+    def clear_letter(self):
+        self.puzzle.errors[self.x, self.y] = NO_ERROR
+        self.puzzle.responses[self.x, self.y] = ''
+        self.do_update('box-update', self.x, self.y)
+
+    def clear_word(self):
+        for (x, y) in self.selection:
+            self.puzzle.errors[x, y] = NO_ERROR
+            self.puzzle.responses[x, y] = ''
+            self.do_update('box-update', x, y)
+
     def is_selected(self, x, y):
         return ((x, y) in self.selection)
 
@@ -1221,15 +1243,30 @@
     def input_char(self, skip_filled, c):
         pass
 
+    def check_letter(self):
+        pass
+
     def check_word(self):
         pass
 
     def check_puzzle(self):
         pass
 
+    def solve_letter(self):
+        pass
+
     def solve_word(self):
         pass
 
+    def solve_puzzle(self):
+        pass
+
+    def clear_letter(self):
+        pass
+
+    def clear_word(self):
+        pass
+
     def is_selected(self, x, y):
         return False
 
@@ -1365,18 +1402,20 @@
         def enable(w): w.set_property('sensitive', enabled)
 
         enable(self.menu_items['save'])
+        enable(self.menu_items['check'])
+        enable(self.menu_items['solve'])
+        enable(self.menu_items['clear'])
         enable(self.menu_items['properties'])
-        enable(self.menu_items['check_word'])
-        enable(self.menu_items['check_puzzle'])
-        enable(self.menu_items['solve_word'])
-        enable(self.menu_items['clear_puzzle'])
         enable(self.menu_items['notepad'])
-        
         if has_print:
             enable(self.menu_items['print'])
-        enable(self.toolbar_items['Check Word'])
-        enable(self.toolbar_items['Check Puzzle'])
-        enable(self.toolbar_items['Solve Word'])
+
+        enable(self.toolbar_items['Check\nLetter'])
+        enable(self.toolbar_items['Check\nWord'])
+        enable(self.toolbar_items['Check\nPuzzle'])
+        enable(self.toolbar_items['Solve\nLetter'])
+        enable(self.toolbar_items['Solve\nWord'])
+        #enable(self.toolbar_items['Solve\nPuzzle'])
         enable(self.clock_button)
 
     def setup_controller(self):
@@ -1385,6 +1424,7 @@
         self.control.connect('title-update', self.clue_widget.update)
         self.control.connect('across-update', self.across_update)
         self.control.connect('down-update', self.down_update)
+        self.control.connect('check-letter-result', self.check_result)
         self.control.connect('check-word-result', self.check_result)
         self.control.connect('check-puzzle-result', self.check_result)
 
@@ -1588,9 +1628,9 @@
 #        gtk.about_dialog_set_url_hook(self.show_website, "http://xword.garage.maemo.org")
         self.about_dialog.set_website("http://xword.garage.maemo.org/")
         self.about_dialog.set_website_label("xword.garage.maemo.org")
-        icon_path = ABOUT_ICON
         try:
-            icon_pixbuf = gtk.gdk.pixbuf_new_from_file(icon_path)
+            icon_pixbuf = gtk.gdk.pixbuf_new_from_file(HOME_PATH+os.sep+
+                'xword-logo2.png')
             self.about_dialog.set_logo(icon_pixbuf)
         except:
             pass
@@ -1739,7 +1779,7 @@
             self.menu_items['recent'].set_property('sensitive', True)
             for item in self.recent.recent_list:
                 m = gtk.MenuItem(item.split(os.sep)[-1])
-                m.connect('activate', self.menu_selected, 'recent', item)
+                m.connect('activate', self.menu_selected, 'open_recent', item)
                 self.recent_menu.append(m)
         self.recent_menu.show_all()
 
@@ -1777,16 +1817,15 @@
         menu = gtk.Menu()
         file_menu.set_submenu(menu)
 
-        append(menu, 'open', create_menu_item('Open...', MENU_OPEN, 'O'))
-        item = create_menu_item('Open Recent', 0)
+        append(menu,'open',create_menu_item('Open...','open_file','O'))
+        item = create_menu_item('Open Recent',0)
         item.set_submenu(self.recent_menu)
-        append(menu, 'recent', item)
-        append(menu, 'save', create_menu_item('Save As...', MENU_SAVE, 'S'))
+        append(menu,'recent',item)
+        append(menu,'save',create_menu_item('Save As...','save_file','S'))
         if has_print:
-            append(menu, 'print', create_menu_item('Print...', MENU_PRINT, 'P'))
-        append(menu, 'properties', create_menu_item('Properties...', 'properties'))
-        append(menu, '', gtk.SeparatorMenuItem())
-        append(menu, 'quit', create_menu_item('Quit', MENU_QUIT, 'Q'))
+            append(menu,'print',create_menu_item('Print...','print_file','P'))
+        append(menu,'',gtk.SeparatorMenuItem())
+        append(menu,'quit',create_menu_item('Quit','menu_quit','Q'))
 
         puzzle_menu = gtk.MenuItem('Puzzle')
         menubar.append(puzzle_menu)
@@ -1794,27 +1833,48 @@
         menu=gtk.Menu()
         puzzle_menu.set_submenu(menu)
 
-        append(menu, 'check_word', create_menu_item('Check Word', 'Check Word'))
-        append(menu, 'check_puzzle', create_menu_item('Check Puzzle', 'Check Puzzle'))
-        append(menu, 'solve_word', create_menu_item('Solve Word', 'Solve Word'))
-        append(menu, 'clear_puzzle', create_menu_item('Clear Puzzle', 'Clear Puzzle'))
-        append(menu, 'notepad', create_menu_item('Notepad...', 'notepad'))
+        item = create_menu_item('Check',0)
+        append(menu,'check',item)
+        menu1 = gtk.Menu()
+        item.set_submenu(menu1)
+        append(menu1,'check_letter',create_menu_item('Letter','check_letter'))
+        append(menu1,'check_word',create_menu_item('Word','check_word'))
+        append(menu1,'check_puzzle',create_menu_item('Puzzle','check_puzzle'))
 
+        item = create_menu_item('Solve',0)
+        append(menu,'solve',item)
+        menu1 = gtk.Menu()
+        item.set_submenu(menu1)
+        append(menu1,'solve_letter',create_menu_item('Letter','solve_letter'))
+        append(menu1,'solve_word',create_menu_item('Word','solve_word'))
+        append(menu1,'solve_puzzle',create_menu_item('Puzzle','solve_puzzle'))
+
+        item = create_menu_item('Clear',0)
+        append(menu,'clear',item)
+        menu1 = gtk.Menu()
+        item.set_submenu(menu1)
+        append(menu1,'clear_letter',create_menu_item('Letter','clear_letter'))
+        append(menu1,'clear_word',create_menu_item('Word','clear_word'))
+        append(menu1,'clear_puzzle',create_menu_item('Puzzle','clear_puzzle'))
+
+        append(menu,'properties',create_menu_item('Properties...','properties'))
+        append(menu,'notepad',create_menu_item('Notepad...','notepad'))
+
         prefs_menu = gtk.MenuItem('Preferences')
         menubar.append(prefs_menu)
             
         menu = gtk.Menu()
         prefs_menu.set_submenu(menu)
             
-        append(menu, 'skip-filled',
-               create_menu_item('Skip Filled', MENU_SKIP, None,
-                                gtk.CheckMenuItem, self.skip_filled))
+        append(menu,'skip-filled',
+               create_menu_item('Skip Filled','skip_filled',None,
+                                gtk.CheckMenuItem,self.skip_filled))
 
-        append(menu, 'min_box_size', 
-            create_menu_item('Minimum Box Size...', 'min_box_size'))
+        append(menu,'min_box_size',
+            create_menu_item('Minimum Box Size...','min_box_size'))
 
-        item = create_menu_item('Toolbar Layout', 0)
-        append(menu, 'toolbar', item)
+        item = create_menu_item('Toolbar Layout',0)
+        append(menu,'toolbar',item)
 
         menu1 = gtk.Menu()
         item.set_submenu(menu1)
@@ -1828,8 +1888,8 @@
             g = item
             i -= 1
 
-        item = create_menu_item('Word List Layout', 0)
-        append(menu, 'layout', item)
+        item = create_menu_item('Word List Layout',0)
+        append(menu,'layout',item)
         
         menu = gtk.Menu()
         item.set_submenu(menu)
@@ -1849,31 +1909,42 @@
         menu = gtk.Menu()
         help_menu.set_submenu(menu)
 
-        append(menu, 'about', create_menu_item('About', 'about'))
+        append(menu,'about',create_menu_item('About','about'))
 
         self.win.add_accel_group(accel)
         return menubar
 
     def menu_selected(self, item, action, extra=None):
-        if action == MENU_QUIT:
+        if action == 'menu_quit':
             self.exit()
-        elif action == MENU_SKIP:
+        elif action == 'skip_filled':
             self.skip_filled = not self.skip_filled
-        elif action == MENU_OPEN:
+        elif action == 'open_file':
             self.open_file()
-        elif action == 'recent':
+        elif action == 'open_recent':
             self.open_recent(extra)
-        elif action == MENU_SAVE:
+        elif action == 'save_file':
             self.save_file()
-        elif action == MENU_PRINT:
-            self.print_puzzle()
-        elif action == 'Check Word':
+        elif action == 'print_file':
+            self.print_file()
+        elif action == 'check_letter':
+            self.control.check_letter()
+        elif action == 'check_word':
             self.control.check_word()
-        elif action == 'Check Puzzle':
+        elif action == 'check_puzzle':
             self.control.check_puzzle()
-        elif action == 'Solve Word':
+        elif action == 'solve_letter':
+            self.control.solve_letter()
+        elif action == 'solve_word':
             self.control.solve_word()
-        elif action == 'Clear Puzzle':
+        elif action == 'solve_puzzle':
+            if self.ask("Show puzzle solution?",["OK","Cancel"]) == 0:
+                self.control.solve_puzzle()
+        elif action == 'clear_letter':
+            self.control.clear_letter()
+        elif action == 'clear_word':
+            self.control.clear_word()
+        elif action == 'clear_puzzle':
             self.clear_puzzle()
         elif action == 'notepad':
             self.show_notepad()
@@ -1940,17 +2011,23 @@
         toolbar.set_orientation(gtk.ORIENTATION_VERTICAL)
         self.toolbar = toolbar
 
-        self.create_toolbar_item('Quit', gtk.STOCK_QUIT, 'Quit')
-        self.create_toolbar_item('Open', gtk.STOCK_OPEN, 'Open')
-        self.create_toolbar_item('Check Word', CHECK_ICON,
-                                 'Check a word')
-        self.create_toolbar_item('Check Puzzle', CHECK_ALL_ICON,
-                                 'Check all words in the puzzle')
-        self.create_toolbar_item('Solve Word', SOLVE_ICON,
-                                 'Cheat to get a word')
+        #self.create_toolbar_item('Quit', gtk.STOCK_QUIT, 'Quit')
+        #self.create_toolbar_item('Open', gtk.STOCK_OPEN, 'Open')
+        self.create_toolbar_item('Check\nLetter', 
+            HOME_PATH+os.sep+'check_letter.png', 'Check a letter')
+        self.create_toolbar_item('Check\nWord', 
+            HOME_PATH+os.sep+'check_word.png', 'Check a word')
+        self.create_toolbar_item('Check\nPuzzle', 
+            HOME_PATH+os.sep+'check_puzzle.png','Check all words in the puzzle')
+        self.create_toolbar_item('Solve\nLetter', 
+            HOME_PATH+os.sep+'solve_letter.png', 'Cheat to get one letter')
+        self.create_toolbar_item('Solve\nWord', 
+            HOME_PATH+os.sep+'solve_word.png', 'Cheat to get a word')
+        #self.create_toolbar_item('Solve\nPuzzle', 
+        #    HOME_PATH+os.sep+'solve_puzzle.png', 'Show puzzle solution')
         self.create_separator_toolitem()
-        b = self.create_toolbar_item('', TIMER_ICON,
-                                     'Enable or disable the clock', True)
+        b = self.create_toolbar_item('', HOME_PATH+os.sep+'clock.png', 
+            'Enable or disable the clock', True)
         self.clock_button = b
         self.idle_event()
 
@@ -2064,12 +2141,18 @@
             self.exit()
         elif event == 'Open':
             self.open_file()
-        elif event == 'Check Word':
+        elif event == 'Check\nLetter':
+            self.control.check_letter()
+        elif event == 'Check\nWord':
             self.control.check_word()
-        elif event == 'Check Puzzle':
+        elif event == 'Check\nPuzzle':
             self.control.check_puzzle()
-        elif event == 'Solve Word':
+        elif event == 'Solve\nLetter':
+            self.control.solve_letter()
+        elif event == 'Solve\nWord':
             self.control.solve_word()
+        #elif event == 'Solve\nPuzzle':
+        #    self.control.solve_puzzle()
         else: # it must be the clock
             self.clock_running = not self.clock_running
             if self.clock_running:
@@ -2213,10 +2296,10 @@
                 self.recent.delete(filename)
                 self.update_recent_menu()
 
-    def print_puzzle(self):
+    def print_file(self):
         if has_print:
             pr = PuzzlePrinter(self.puzzle)
-            pr.print_puzzle(self.win)
+            pr.print_file(self.win)
         else:
             self.notify('Printing libraries are not installed. Please'
                         + ' install the Python wrapper for gnomeprint.')



More information about the Xword-commits mailing list