Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@sugarlabs.org>2009-01-13 18:34:26 (GMT)
committer Tomeu Vizoso <tomeu@sugarlabs.org>2009-01-13 18:34:26 (GMT)
commitada64e85abaf893d9f6536b137eeb5059fc3bd21 (patch)
treec7bf090a4df9975266af6b0ee0311d9c83affadb /src
parentb669d70758a42ff2c6d9a5578ac8cecc769878ed (diff)
Show an alert on activity close for suggesting the user to set a title
Diffstat (limited to 'src')
-rw-r--r--src/sugar/activity/activity.py59
1 files changed, 54 insertions, 5 deletions
diff --git a/src/sugar/activity/activity.py b/src/sugar/activity/activity.py
index 114c685..c068bd1 100644
--- a/src/sugar/activity/activity.py
+++ b/src/sugar/activity/activity.py
@@ -353,6 +353,50 @@ class _ActivitySession(gobject.GObject):
def __sm_quit_cb(self, client):
self.emit('quit')
+class TitleAlert(gtk.Window):
+ __gtype_name__ = 'SugarTitleAlert'
+
+ def __init__(self, activity):
+ gtk.Window.__init__(self)
+
+ self.set_border_width(style.LINE_WIDTH)
+ offset = style.GRID_CELL_SIZE
+ width = gtk.gdk.screen_width() - offset * 2
+ height = gtk.gdk.screen_height() - offset * 2
+ self.set_size_request(width, height)
+ self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
+ self.set_decorated(False)
+ self.set_resizable(False)
+ self.set_modal(True)
+ self.connect('realize', self.__realize_cb)
+
+ self._activity = activity
+
+ vbox = gtk.VBox()
+ vbox.modify_bg(gtk.STATE_NORMAL, style.COLOR_BLACK.get_gdk_color())
+ self.add(vbox)
+ vbox.show()
+
+ self._entry = gtk.Entry()
+ self._entry.props.text=self._activity.metadata['title']
+ vbox.pack_start(self._entry, expand=True, fill=False)
+ self._entry.show()
+ self._entry.connect('activate', self.__activate_cb)
+
+ button = gtk.Button(_('Keep'))
+ vbox.pack_start(button, expand=True, fill=False)
+ button.show()
+ button.connect('activate', self.__activate_cb)
+
+ def __realize_cb(self, widget):
+ self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
+ self.window.set_accept_focus(True)
+
+ def __activate_cb(self, widget):
+ self._activity.metadata['title'] = self._entry.props.text
+ self._activity.metadata['title_set_by_user'] = '1'
+ self._activity.close()
+
class Activity(Window, gtk.Container):
"""This is the base Activity class that all other Activities derive from.
This is where your activity starts.
@@ -966,12 +1010,17 @@ class Activity(Window, gtk.Container):
if not self.can_close():
return
- if not self._closing:
- if not self._prepare_close(skip_save):
- return
+ if skip_save or self.metadata.get('title_set_by_user', '0') == '1':
+ if not self._closing:
+ if not self._prepare_close(skip_save):
+ return
- if not self._updating_jobject:
- self._complete_close()
+ if not self._updating_jobject:
+ self._complete_close()
+ else:
+ title_alert = TitleAlert(self)
+ title_alert.set_transient_for(self.get_toplevel())
+ title_alert.show()
def __realize_cb(self, window):
wm.set_bundle_id(window.window, self.get_bundle_id())