diff options
Diffstat (limited to 'src/sugar/activity/namingalert.py')
-rw-r--r-- | src/sugar/activity/namingalert.py | 320 |
1 files changed, 0 insertions, 320 deletions
diff --git a/src/sugar/activity/namingalert.py b/src/sugar/activity/namingalert.py deleted file mode 100644 index 724d76a..0000000 --- a/src/sugar/activity/namingalert.py +++ /dev/null @@ -1,320 +0,0 @@ -# Copyright (C) 2009 One Laptop Per Child -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -import gettext - -import gtk -import gobject -import hippo -import gconf - -from sugar.graphics import style -from sugar.graphics.icon import Icon -from sugar.graphics.xocolor import XoColor -from sugar.graphics.icon import CanvasIcon -from sugar.graphics.entry import CanvasEntry -from sugar.graphics.toolbutton import ToolButton -from sugar.graphics.canvastextview import CanvasTextView - -from sugar.bundle.activitybundle import ActivityBundle - -_ = lambda msg: gettext.dgettext('sugar-toolkit', msg) - -class NamingToolbar(gtk.Toolbar): - """ Toolbar of the naming alert - """ - __gtype_name__ = 'SugarNamingToolbar' - - __gsignals__ = { - 'keep-clicked': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ([])) - } - def __init__(self): - gtk.Toolbar.__init__(self) - - client = gconf.client_get_default() - color = XoColor(client.get_string('/desktop/sugar/user/color')) - icon = Icon() - icon.set_from_icon_name('activity-journal', - gtk.ICON_SIZE_LARGE_TOOLBAR) - icon.props.xo_color = color - self._add_widget(icon) - - self._add_separator() - - self._title = gtk.Label(_('Name this entry')) - self._add_widget(self._title) - - self._add_separator(True) - - self._keep_button = ToolButton('dialog-ok', tooltip=_('Keep')) - self._keep_button.props.accelerator = 'Return' - self._keep_button.connect('clicked', self.__keep_button_clicked_cb) - self.insert(self._keep_button, -1) - self._keep_button.show() - - def _add_separator(self, expand=False): - separator = gtk.SeparatorToolItem() - separator.props.draw = False - if expand: - separator.set_expand(True) - else: - separator.set_size_request(style.DEFAULT_SPACING, -1) - self.insert(separator, -1) - separator.show() - - def _add_widget(self, widget, expand=False): - tool_item = gtk.ToolItem() - tool_item.set_expand(expand) - - tool_item.add(widget) - widget.show() - - self.insert(tool_item, -1) - tool_item.show() - - def __keep_button_clicked_cb(self, widget, data=None): - self.emit('keep-clicked') - -class FavoriteIcon(CanvasIcon): - def __init__(self, favorite): - CanvasIcon.__init__(self, icon_name='emblem-favorite', - box_width=style.GRID_CELL_SIZE * 3 / 5, - size=style.SMALL_ICON_SIZE) - self._favorite = None - self.set_favorite(favorite) - self.connect('button-release-event', self.__release_event_cb) - self.connect('motion-notify-event', self.__motion_notify_event_cb) - - def set_favorite(self, favorite): - if favorite == self._favorite: - return - - self._favorite = favorite - if favorite: - client = gconf.client_get_default() - color = XoColor(client.get_string('/desktop/sugar/user/color')) - self.props.xo_color = color - else: - self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg() - self.props.fill_color = style.COLOR_WHITE.get_svg() - - def get_favorite(self): - return self._favorite - - favorite = gobject.property( - type=bool, default=False, getter=get_favorite, setter=set_favorite) - - def __release_event_cb(self, icon, event): - self.props.favorite = not self.props.favorite - - def __motion_notify_event_cb(self, icon, event): - if not self._favorite: - if event.detail == hippo.MOTION_DETAIL_ENTER: - icon.props.fill_color = style.COLOR_BUTTON_GREY.get_svg() - elif event.detail == hippo.MOTION_DETAIL_LEAVE: - icon.props.fill_color = style.COLOR_TRANSPARENT.get_svg() - -class NamingAlert(gtk.Window): - __gtype_name__ = 'SugarNamingAlert' - - def __init__(self, activity, bundle_path): - gtk.Window.__init__(self) - - self._bundle_path = bundle_path - self._favorite_icon = None - self._title = None - self._description = None - self._tags = None - - accel_group = gtk.AccelGroup() - self.set_data('sugar-accel-group', accel_group) - self.add_accel_group(accel_group) - - 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() - self.add(vbox) - vbox.show() - - toolbar = NamingToolbar() - toolbar.connect('keep-clicked', self.__keep_cb) - vbox.pack_start(toolbar, False) - toolbar.show() - - canvas = hippo.Canvas() - self._root = hippo.CanvasBox() - self._root.props.background_color = style.COLOR_WHITE.get_int() - canvas.set_root(self._root) - vbox.pack_start(canvas) - canvas.show() - - body = self._create_body() - self._root.append(body, hippo.PACK_EXPAND) - - widget = self._title.get_property('widget') - widget.grab_focus() - - def _create_body(self): - body = hippo.CanvasBox() - body.props.orientation = hippo.ORIENTATION_VERTICAL - body.props.background_color = style.COLOR_WHITE.get_int() - body.props.padding_top = style.DEFAULT_SPACING * 3 - - header = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL, - padding=style.DEFAULT_PADDING, - padding_right=style.GRID_CELL_SIZE, - spacing=style.DEFAULT_SPACING) - body.append(header) - - descriptions = hippo.CanvasBox(orientation=hippo.ORIENTATION_HORIZONTAL, - spacing=style.DEFAULT_SPACING * 3, - padding_left=style.GRID_CELL_SIZE, - padding_right=style.GRID_CELL_SIZE, - padding_top=style.DEFAULT_SPACING * 3) - - body.append(descriptions, hippo.PACK_EXPAND) - - first_column = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL, - spacing=style.DEFAULT_SPACING) - descriptions.append(first_column) - - second_column = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL, - spacing=style.DEFAULT_SPACING) - descriptions.append(second_column, hippo.PACK_EXPAND) - - self._favorite_icon = self._create_favorite_icon() - header.append(self._favorite_icon) - - activity_icon = self._create_activity_icon() - header.append(activity_icon) - - self._title = self._create_title() - header.append(self._title, hippo.PACK_EXPAND) - - if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL: - header.reverse() - - description_box, self._description = self._create_description() - second_column.append(description_box) - - tags_box, self._tags = self._create_tags() - second_column.append(tags_box) - - return body - - def _create_favorite_icon(self): - favorite_icon = FavoriteIcon(False) - return favorite_icon - - def _create_activity_icon(self): - activity_bundle = ActivityBundle(self._bundle_path) - activity_icon = CanvasIcon(file_name=activity_bundle.get_icon()) - if self._activity.metadata.has_key('icon-color') and \ - self._activity.metadata['icon-color']: - activity_icon.props.xo_color = XoColor( \ - self._activity.metadata['icon-color']) - return activity_icon - - def _create_title(self): - title = CanvasEntry() - title.set_background(style.COLOR_WHITE.get_html()) - title.props.text = self._activity.metadata.get('title', _('Untitled')) - return title - - def _create_description(self): - vbox = hippo.CanvasBox() - vbox.props.spacing = style.DEFAULT_SPACING - - text = hippo.CanvasText(text=_('Description:'), - font_desc=style.FONT_NORMAL.get_pango_desc()) - text.props.color = style.COLOR_BUTTON_GREY.get_int() - - if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL: - text.props.xalign = hippo.ALIGNMENT_END - else: - text.props.xalign = hippo.ALIGNMENT_START - - vbox.append(text) - - description = self._activity.metadata.get('description', '') - text_view = CanvasTextView(description, - box_height=style.GRID_CELL_SIZE * 2) - vbox.append(text_view, hippo.PACK_EXPAND) - - text_view.text_view_widget.props.accepts_tab = False - - return vbox, text_view - - def _create_tags(self): - vbox = hippo.CanvasBox() - vbox.props.spacing = style.DEFAULT_SPACING - - text = hippo.CanvasText(text=_('Tags:'), - font_desc=style.FONT_NORMAL.get_pango_desc()) - text.props.color = style.COLOR_BUTTON_GREY.get_int() - - if gtk.widget_get_default_direction() == gtk.TEXT_DIR_RTL: - text.props.xalign = hippo.ALIGNMENT_END - else: - text.props.xalign = hippo.ALIGNMENT_START - - vbox.append(text) - - tags = self._activity.metadata.get('tags', '') - text_view = CanvasTextView(tags, box_height=style.GRID_CELL_SIZE * 2) - vbox.append(text_view, hippo.PACK_EXPAND) - - text_view.text_view_widget.props.accepts_tab = False - - return vbox, text_view - - def __realize_cb(self, widget): - self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) - self.window.set_accept_focus(True) - - def __keep_cb(self, widget): - is_favorite = self._favorite_icon.get_favorite() - if is_favorite: - self._activity.metadata['keep'] = 1 - else: - self._activity.metadata['keep'] = 0 - - self._activity.metadata['title'] = self._title.props.text - - new_tags = self._tags.text_view_widget.props.buffer.props.text - self._activity.metadata['tags'] = new_tags - - new_description = \ - self._description.text_view_widget.props.buffer.props.text - self._activity.metadata['description'] = new_description - - self._activity.metadata['title_set_by_user'] = '1' - self._activity.close() - self.destroy() |