[gnome-games/sudoku-tube] Use glade (notebook) to do the connecting dialog
- From: Zhang Sen <zhangsen src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-games/sudoku-tube] Use glade (notebook) to do the connecting dialog
- Date: Sun, 16 Aug 2009 14:13:19 +0000 (UTC)
commit 8985c6364a554922ad9b691bbaa241e9e95c9e95
Author: Zhang Sen <zh jesse gmail com>
Date: Sun Aug 16 22:04:07 2009 +0800
Use glade (notebook) to do the connecting dialog
gnome-sudoku/data/offering_tube.ui | 67 ++++++++++++++++++++++---
gnome-sudoku/src/lib/main.py | 98 +++++++++++++++++-------------------
2 files changed, 107 insertions(+), 58 deletions(-)
---
diff --git a/gnome-sudoku/data/offering_tube.ui b/gnome-sudoku/data/offering_tube.ui
index cb7c2ea..49ccc58 100644
--- a/gnome-sudoku/data/offering_tube.ui
+++ b/gnome-sudoku/data/offering_tube.ui
@@ -13,12 +13,54 @@
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
- <object class="GtkLabel" id="label">
+ <object class="GtkNotebook" id="notebook">
<property name="visible">True</property>
- <property name="label" translatable="yes">Waiting for reply</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
+ <child>
+ <object class="GtkLabel" id="wait_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Waiting for reply</property>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">page 1</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="fail_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Request failed</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
</object>
<packing>
- <property name="position">1</property>
+ <property name="position">0</property>
</packing>
</child>
<child internal-child="action_area">
@@ -26,10 +68,20 @@
<property name="visible">True</property>
<property name="layout_style">end</property>
<child>
- <placeholder/>
+ <object class="GtkButton" id="button_ok">
+ <property name="label">gtk-ok</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <object class="GtkButton" id="button1">
+ <object class="GtkButton" id="button_cancel">
<property name="label">gtk-cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -46,13 +98,14 @@
<packing>
<property name="expand">False</property>
<property name="pack_type">end</property>
- <property name="position">0</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
</child>
<action-widgets>
- <action-widget response="-6">button1</action-widget>
+ <action-widget response="-5">button_ok</action-widget>
+ <action-widget response="-6">button_cancel</action-widget>
</action-widgets>
</object>
</interface>
diff --git a/gnome-sudoku/src/lib/main.py b/gnome-sudoku/src/lib/main.py
index fc33b82..620a736 100644
--- a/gnome-sudoku/src/lib/main.py
+++ b/gnome-sudoku/src/lib/main.py
@@ -444,59 +444,55 @@ class SudokuGame(gconf_wrapper.GConfWrapper):
return
def _new_with_contact_cb(self, action):
+ def response_cb(dialog, response_id):
+ if self._is_waiting_for_response:
+ if response_id in (gtk.RESPONSE_CANCEL,
+ gtk.RESPONSE_DELETE_EVENT):
+ self._tube_offer.cancel()
+ self._is_initiator = None
+ # else don't need to do anything
+ self._wait_dialog.destroy()
+
+ def offer_fail_cb(offer, reason):
+ self._is_waiting_for_response = False
+ self._is_initiator = None
+ notebook = builder.get_object("notebook")
+ notebook.set_current_page(1)
+ button_cancel = builder.get_object("button_cancel")
+ button_ok = builder.get_object("button_ok")
+ button_cancel.hide()
+ button_ok.show()
+
choice = contact_selector.contact_selector_run(self.w)
- if choice:
- self._is_initiator = True
- conn, handle, mode = choice
-
- puzzle = self._generate_new_puzzle()
- if not puzzle:
- logger.error("failed to genereate new puzzle")
- # should popup?
- return
+ if not choice:
+ return
- self._tube_offer = tp_tube.TubeOffer(
- conn, handle, self._tube_service, puzzle, mode)
-
- builder = gtk.Builder()
- builder.add_from_file(os.path.join(UI_DIR, "offering_tube.ui"))
- self._wait_dialog = builder.get_object("dialog")
- self._wait_dialog.set_transient_for(self.w)
- self._wait_dialog.connect("response", self._wait_dialog_response_cb)
-
- self._tube_offer.connect("offer-succeeded",
- self._tube_offered_cb, puzzle, mode)
- self._tube_offer.connect("offer-failed", self._offer_fail_cb)
-
- self._tube_offer.execute()
- self._is_waiting_for_response = True
- self._wait_dialog.run()
-
- def _wait_dialog_response_cb(self, dialog, response_id):
- if self._is_waiting_for_response:
- if response_id in (gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT):
- self._tube_offer.cancel()
- self._is_initiator = None
- # else don't need to do anything
- self._wait_dialog.destroy()
+ self._is_initiator = True
+ conn, handle, mode = choice
- def _offer_fail_cb(self, offer, reason):
- self._is_waiting_for_response = False
- self._is_initiator = None
- # clear label and button
- vbox = self._wait_dialog.vbox
- vbox.remove(vbox.get_children()[0])
- action = self._wait_dialog.action_area
- action.remove(action.get_children()[0])
-
- text = '<span weight="bold" size="larger">Failed</span>\n%s' % reason
- fail_label = gtk.Label(text)
- fail_label.set_use_markup(True)
- fail_label.set_line_wrap(True)
- fail_label.set_selectable(True)
- fail_label.show()
- self._wait_dialog.vbox.pack_start(fail_label)
- self._wait_dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)
+ puzzle = self._generate_new_puzzle()
+ if not puzzle:
+ logger.error("failed to genereate new puzzle")
+ # should popup?
+ return
+
+ self._tube_offer = tp_tube.TubeOffer(
+ conn, handle, self._tube_service, puzzle, mode)
+
+ builder = gtk.Builder()
+ builder.add_from_file(os.path.join(UI_DIR, "offering_tube.ui"))
+ self._wait_dialog = builder.get_object("dialog")
+
+ self._wait_dialog.set_transient_for(self.w)
+ self._wait_dialog.connect("response", response_cb)
+
+ self._tube_offer.connect("offer-succeeded",
+ self._tube_offered_cb, puzzle, mode)
+ self._tube_offer.connect("offer-failed", offer_fail_cb)
+
+ self._tube_offer.execute()
+ self._is_waiting_for_response = True
+ self._wait_dialog.run()
def _process_accepted_tube(self, bus, tube, puzzle, mode):
"""User has accepted the tube
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]