[gnome-games/sudoku-tube] Can choose difficulty when starting network game
- From: Zhang Sen <zhangsen src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-games/sudoku-tube] Can choose difficulty when starting network game
- Date: Thu, 20 Aug 2009 03:56:16 +0000 (UTC)
commit 6e082d456d0c07352faa67858b85f8d0a4e7d3fd
Author: Zhang Sen <zh jesse gmail com>
Date: Thu Aug 20 11:51:49 2009 +0800
Can choose difficulty when starting network game
gnome-sudoku/data/contact_selector_dialog.ui | 70 +++++++++++++++++++++++++-
gnome-sudoku/src/lib/contact_selector.py | 22 +++++++-
gnome-sudoku/src/lib/main.py | 9 +--
3 files changed, 91 insertions(+), 10 deletions(-)
---
diff --git a/gnome-sudoku/data/contact_selector_dialog.ui b/gnome-sudoku/data/contact_selector_dialog.ui
index 98989e9..9e8d16a 100644
--- a/gnome-sudoku/data/contact_selector_dialog.ui
+++ b/gnome-sudoku/data/contact_selector_dialog.ui
@@ -14,11 +14,12 @@
<property name="spacing">2</property>
<child>
<object class="GtkCheckButton" id="gamemode_button">
- <property name="label" translatable="yes">Collaborate</property>
+ <property name="label" translatable="yes">_Collaborate</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">You will be able to see your friend's solutions, vice vesa</property>
+ <property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
@@ -27,6 +28,73 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton_easy">
+ <property name="label" translatable="yes">_Easy</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton_medium">
+ <property name="label" translatable="yes">_Medium</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobutton_easy</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton_hard">
+ <property name="label" translatable="yes">_Hard</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobutton_easy</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton_veryhard">
+ <property name="label" translatable="yes">_Very hard</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobutton_easy</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
<child internal-child="action_area">
<object class="GtkHButtonBox" id="action_area">
<property name="visible">True</property>
diff --git a/gnome-sudoku/src/lib/contact_selector.py b/gnome-sudoku/src/lib/contact_selector.py
index 6e2c01d..9e45a85 100644
--- a/gnome-sudoku/src/lib/contact_selector.py
+++ b/gnome-sudoku/src/lib/contact_selector.py
@@ -308,6 +308,20 @@ class ContactSelector(gtk.ComboBox):
def contact_selector_run(parent=None):
+ def read_game_level():
+ easy = builder.get_object("radiobutton_easy")
+ medium = builder.get_object("radiobutton_medium")
+ hard = builder.get_object("radiobutton_hard")
+ veryhard = builder.get_object("radiobutton_veryhard")
+ for button, level in [
+ (easy, "easy"),
+ (medium, "medium"),
+ (hard, "hard"),
+ (veryhard, "very_hard")]:
+ if button.get_active():
+ return level
+ return "easy" # shouldn't reach here
+
out = None
builder = gtk.Builder()
@@ -330,12 +344,14 @@ def contact_selector_run(parent=None):
if selected:
conn, handle, contact = selected
mode = game_mode.get_active()
+ game_level = read_game_level()
logger.debug("selected: %s\n"
" connection: %s\n"
" handle: %d\n"
- " collaborate :%d" % (
- contact.alias, conn.service_name, handle, mode))
- out = (conn, handle, mode)
+ " collaborate :%d\n"
+ " level: %s" % (
+ contact.alias, conn.service_name, handle, mode, game_level))
+ out = (conn, handle, mode, game_level)
else:
logger.debug("canceled")
out = None
diff --git a/gnome-sudoku/src/lib/main.py b/gnome-sudoku/src/lib/main.py
index b60cbc5..8441029 100644
--- a/gnome-sudoku/src/lib/main.py
+++ b/gnome-sudoku/src/lib/main.py
@@ -44,7 +44,6 @@ class SudokuGame(gconf_wrapper.GConfWrapper):
initial_prefs = {'group_size':9,
'always_show_hints':False,
'difficulty':0.0,
- 'game-level': 'easy',
'minimum_number_of_new_puzzles':MIN_NEW_PUZZLES,
'highlight':False,
'bg_color':'black',
@@ -118,9 +117,7 @@ class SudokuGame(gconf_wrapper.GConfWrapper):
logger.debug("no saved game found")
return None
- def _generate_new_puzzle(self):
- # TODO should use preconfigured or user-selected level
- level = self.gconf['game-level']
+ def _generate_new_puzzle(self, level="easy"):
# new_puzzle is a list, with the form of (<puzzle>, <difficulty>)
puzzles = self.sudoku_maker.get_puzzles(1, [level])
if puzzles:
@@ -468,9 +465,9 @@ class SudokuGame(gconf_wrapper.GConfWrapper):
return
self._is_initiator = True
- conn, handle, mode = choice
+ conn, handle, mode, level = choice
- puzzle = self._generate_new_puzzle()
+ puzzle = self._generate_new_puzzle(level)
if not puzzle:
logger.error("failed to genereate new puzzle")
# should popup?
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]