def setup_palette(self): title = self._home_activity.get_title() self.set_primary_text(glib.markup_escape_text(title)) vbox = gtk.VBox() self.set_content(vbox) vbox.show() self._progress_bar = gtk.ProgressBar() vbox.add(self._progress_bar) self._progress_bar.show() self._free_space_label = gtk.Label() self._free_space_label.set_alignment(0.5, 0.5) vbox.add(self._free_space_label) self._free_space_label.show() self.connect('popup', self.__popup_cb) menu_item = MenuItem(_('Show contents')) icon = Icon(file=self._home_activity.get_icon_path(), icon_size=gtk.ICON_SIZE_MENU, xo_color=self._home_activity.get_icon_color()) menu_item.set_image(icon) icon.show() menu_item.connect('activate', self.__open_activate_cb) self.menu.append(menu_item) menu_item.show()
def __init__(self, mount): Palette.__init__(self, label=mount.get_name()) self._mount = mount path = mount.get_root().get_path() self.props.secondary_text = glib.markup_escape_text(path) vbox = gtk.VBox() self.set_content(vbox) vbox.show() self._progress_bar = gtk.ProgressBar() vbox.add(self._progress_bar) self._progress_bar.show() self._free_space_label = gtk.Label() self._free_space_label.set_alignment(0.5, 0.5) vbox.add(self._free_space_label) self._free_space_label.show() self.connect('popup', self.__popup_cb) menu_item = MenuItem(pgettext('Volume', 'Remove')) icon = Icon(icon_name='media-eject', icon_size=gtk.ICON_SIZE_MENU) menu_item.set_image(icon) icon.show() menu_item.connect('activate', self.__unmount_activate_cb) self.menu.append(menu_item) menu_item.show()
def _object_chooser(self, mime_type, type_name): chooser = ObjectChooser() matches_mime_type = False response = chooser.run() if response == gtk.RESPONSE_ACCEPT: jobject = chooser.get_selected_object() metadata = jobject.metadata file_path = jobject.file_path if metadata['mime_type'] == mime_type: matches_mime_type = True else: alert = Alert() alert.props.title = _('Invalid object') alert.props.msg = \ _('The selected object must be a %s file' % (type_name)) ok_icon = Icon(icon_name='dialog-ok') alert.add_button(gtk.RESPONSE_OK, _('Ok'), ok_icon) ok_icon.show() alert.connect('response', lambda a, r: self.remove_alert(a)) self.add_alert(alert) alert.show() return matches_mime_type, file_path, metadata['title']
def __init__(self, file_name, document_path, title): RadioToolButton.__init__(self) self._document_path = document_path self._title = title self._jobject = None self.props.tooltip = _('Instance Source') client = gconf.client_get_default() self._color = client.get_string('/desktop/sugar/user/color') icon = Icon(file=file_name, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR, xo_color=XoColor(self._color)) self.set_icon_widget(icon) icon.show() menu_item = MenuItem(_('Keep')) icon = Icon(icon_name='document-save', icon_size=gtk.ICON_SIZE_MENU, xo_color=XoColor(self._color)) menu_item.set_image(icon) menu_item.connect('activate', self.__keep_in_journal_cb) self.props.palette.menu.append(menu_item) menu_item.show()
def _value_changed(self, cell, path, new_text, model, activity): _logger.info("Change '%s' to '%s'" % (model[path][1], new_text)) is_number = True number = new_text.replace(",", ".") try: float(number) except ValueError: is_number = False if is_number: decimals = utils.get_decimals(str(float(number))) new_text = locale.format('%.' + decimals + 'f', float(number)) model[path][1] = str(new_text) self.emit("value-changed", str(path), number) elif not is_number: alert = Alert() alert.props.title = _('Invalid Value') alert.props.msg = \ _('The value must be a number (integer or decimal)') ok_icon = Icon(icon_name='dialog-ok') alert.add_button(gtk.RESPONSE_OK, _('Ok'), ok_icon) ok_icon.show() alert.connect('response', lambda a, r: activity.remove_alert(a)) activity.add_alert(alert) alert.show()
def __init__(self): 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._main_view = gtk.EventBox() self._vbox = gtk.VBox() self._vbox.set_spacing(style.DEFAULT_SPACING) self._vbox.set_border_width(style.GRID_CELL_SIZE * 2) self._main_view.modify_bg(gtk.STATE_NORMAL, style.COLOR_BLACK.get_gdk_color()) self._main_view.add(self._vbox) self._vbox.show() client = gconf.client_get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) icon = Icon(icon_name='activity-journal', pixel_size=style.XLARGE_ICON_SIZE, xo_color=color) self._vbox.pack_start(icon, False) icon.show() self._title = gtk.Label() self._title.modify_fg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) self._title.set_markup('<b>%s</b>' % _('Your Journal is full')) self._vbox.pack_start(self._title, False) self._title.show() self._message = gtk.Label(_('Please delete some old Journal' ' entries to make space for new ones.')) self._message.modify_fg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) self._vbox.pack_start(self._message, False) self._message.show() alignment = gtk.Alignment(xalign=0.5, yalign=0.5) self._vbox.pack_start(alignment, expand=False) alignment.show() self._show_journal = gtk.Button() self._show_journal.set_label(_('Show Journal')) alignment.add(self._show_journal) self._show_journal.show() self._show_journal.connect('clicked', self.__show_journal_cb) self.add(self._main_view) self._main_view.show() self.connect('realize', self.__realize_cb)
class InlineAlert(gtk.HBox): """UI interface for Inline alerts Inline alerts are different from the other alerts beause they are no dialogs, they only inform about a current event. Properties: 'msg': the message of the alert, 'icon': the icon that appears at the far left See __gproperties__ """ __gtype_name__ = 'SugarInlineAlert' __gproperties__ = { 'msg': (str, None, None, None, gobject.PARAM_READWRITE), 'icon': (object, None, None, gobject.PARAM_WRITABLE), } def __init__(self, **kwargs): self._msg = None self._msg_color = None self._icon = Icon(icon_name='emblem-warning', fill_color=style.COLOR_SELECTION_GREY.get_svg(), stroke_color=style.COLOR_WHITE.get_svg()) self._msg_label = gtk.Label() self._msg_label.set_max_width_chars(50) self._msg_label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) self._msg_label.set_alignment(0, 0.5) self._msg_label.modify_fg(gtk.STATE_NORMAL, style.COLOR_SELECTION_GREY.get_gdk_color()) gobject.GObject.__init__(self, **kwargs) self.set_spacing(style.DEFAULT_SPACING) self.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) self.pack_start(self._icon, False) self.pack_start(self._msg_label, False) self._msg_label.show() self._icon.show() def do_set_property(self, pspec, value): if pspec.name == 'msg': if self._msg != value: self._msg = value self._msg_label.set_markup(self._msg) elif pspec.name == 'icon': if self._icon != value: self._icon = value def do_get_property(self, pspec): if pspec.name == 'msg': return self._msg
def refresh(self,widget=None): default, uri = self.load_license() icon_name = self.uri_to_icon(uri) logging.debug("Refreshing ToolButton Icon") icon = Icon(icon_name,icon_size=self._icon_size,xo_color=XoColor("#ffffff,#ffffff")) icon.show() self.set_icon_widget(icon) self.set_tooltip(self._format_tooltip(uri)) self.make_menu(self.get_palette(),XoColor("#ffffff,#ffffff"),self._color_selected,icon)
def add_action(self, label, icon_name=None): button = gtk.Button(label) if icon_name: icon = Icon(icon_name) button.set_image(icon) icon.show() self.pack_start(button) button.show()
def __init__(self, **kwargs): self._pulser = Pulser(self) self._base_color = None self._pulse_color = None self._paused = False self._pulsing = False Icon.__init__(self, **kwargs) self._palette = None self.connect('destroy', self.__destroy_cb)
def __init__(self, activity): gtk.Toolbar.__init__(self) self._activity = activity self._updating_share = False self._focus_out_hid = None activity.connect('shared', self.__activity_shared_cb) activity.connect('joined', self.__activity_shared_cb) activity.connect('notify::max_participants', self.__max_participants_changed_cb) if activity.metadata: self.title = gtk.Entry() self.title.set_size_request(int(gtk.gdk.screen_width() / 3), -1) self.title.set_text(activity.metadata['title']) self._focus_out_hid = self.title.connect('focus-out-event', self.__title_changed_cb) self._add_widget(self.title) activity.metadata.connect('updated', self.__jobject_updated_cb) separator = gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) self.insert(separator, -1) separator.show() self.share = ToolComboBox(label_text=_('Share with:')) self.share.combo.connect('changed', self.__share_changed_cb) self.share.combo.append_item(SCOPE_PRIVATE, _('Private'), 'zoom-home') self.share.combo.append_item(SCOPE_NEIGHBORHOOD, _('My Neighborhood'), 'zoom-neighborhood') self.insert(self.share, -1) self.share.show() self._update_share() self.keep = ToolButton(tooltip=_('Keep')) client = gconf.client_get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) keep_icon = Icon(icon_name='document-save', xo_color=color) self.keep.set_icon_widget(keep_icon) keep_icon.show() self.keep.props.accelerator = '<Ctrl>S' self.keep.connect('clicked', self.__keep_clicked_cb) self.insert(self.keep, -1) self.keep.show() self.stop = ToolButton('activity-stop', tooltip=_('Stop')) self.stop.props.accelerator = '<Ctrl>Q' self.stop.connect('clicked', self.__stop_clicked_cb) self.insert(self.stop, -1) self.stop.show()
def _add_playback_button(self, nick, colors, audio_file): ''' Add a toolbar button for this audio recording ''' if nick not in self._playback_buttons: self._playback_buttons[nick] = button_factory( 'xo-chat', self.record_toolbar, self._playback_recording_cb, cb_arg=nick, tooltip=_('Audio recording by %s') % (nick)) xocolor = XoColor('%s,%s' % (colors[0], colors[1])) icon = Icon(icon_name='xo-chat', xo_color=xocolor) icon.show() self._playback_buttons[nick].set_icon_widget(icon) self._playback_buttons[nick].show() self._audio_recordings[nick] = audio_file
class EventIcon(gtk.EventBox): __gtype_name__ = 'SugarEventIcon' def __init__(self, **kwargs): gtk.EventBox.__init__(self) self.icon = Icon(pixel_size=style.XLARGE_ICON_SIZE, **kwargs) self.set_visible_window(False) self.set_app_paintable(True) self.set_events(gtk.gdk.BUTTON_PRESS_MASK) self.add(self.icon) self.icon.show()
def __init__(self, activity, **kwargs): ToolButton.__init__(self, **kwargs) logging.warning('KeepButton has been deprecated since Sugar 0.94' ' and should not be used in newly written code.') self.props.tooltip = _('Keep') self.props.accelerator = '<Ctrl>S' client = gconf.client_get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) keep_icon = Icon(icon_name='document-save', xo_color=color) keep_icon.show() self.set_icon_widget(keep_icon) self.connect('clicked', self.__keep_button_clicked_cb, activity)
def __init__(self, file_transfer): ToolButton.__init__(self) self.file_transfer = file_transfer file_transfer.connect('notify::state', self.__notify_state_cb) icon = Icon() self.props.icon_widget = icon icon.show() self.notif_icon = NotificationIcon() self.notif_icon.connect('button-release-event', self.__button_release_event_cb) self.connect('clicked', self.__button_clicked_cb)
def __init__(self, timeout=5, **kwargs): Alert.__init__(self, **kwargs) self._timeout = timeout icon = Icon(icon_name='dialog-cancel') self.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), icon) icon.show() self._timeout_text = _TimeoutIcon() self._timeout_text.set_text(self._timeout) self.add_button(gtk.RESPONSE_OK, _('Continue'), self._timeout_text) self._timeout_text.show() gobject.timeout_add_seconds(1, self.__timeout)
class UnfullscreenButton(gtk.Window): def __init__(self): gtk.Window.__init__(self) self.set_decorated(False) self.set_resizable(False) self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.set_border_width(0) self.props.accept_focus = False #Setup estimate of width, height w, h = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR) self._width = w self._height = h self.connect('size-request', self._size_request_cb) screen = self.get_screen() screen.connect('size-changed', self._screen_size_changed_cb) self._button = gtk.Button() self._button.set_relief(gtk.RELIEF_NONE) self._icon = Icon(icon_name='view-return', icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) self._icon.show() self._button.add(self._icon) self._button.show() self.add(self._button) def connect_button_press(self, cb): self._button.connect('button-press-event', cb) def _reposition(self): x = gtk.gdk.screen_width() - self._width self.move(x, 0) def _size_request_cb(self, widget, req): self._width = req.width self._height = req.height self._reposition() def _screen_size_changed_cb(self, screen): self._reposition()
def make_menu(self,palette,color,color_selected,current_icon): for uri, icon_name in self._licenses: tmp = gtk.HBox() tmp.show() if current_icon==icon_name: xo_color = color_selected else: xo_color = color icon = Icon(icon_name,icon_size=self._icon_size,xo_color=xo_color) icon.show() tmp.pack_start(icon,False,False) item = gtk.MenuItem() item.add(tmp) item.connect('activate', self._license_cb,uri) palette.menu.append(item) item.show()
def __init__(self, icon_name, scroll_direction): gobject.GObject.__init__(self) self._viewport = None self._scroll_direction = scroll_direction self.set_relief(gtk.RELIEF_NONE) self.set_size_request(style.GRID_CELL_SIZE, style.GRID_CELL_SIZE) icon = Icon(icon_name = icon_name, icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR) self.set_image(icon) icon.show() self.connect('clicked', self._clicked_cb)
def __init__(self): gtk.Window.__init__(self) self.set_decorated(False) self.set_resizable(False) self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) self.set_border_width(0) self.props.accept_focus = False #Setup estimate of width, height w, h = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR) self._width = w self._height = h self.connect('size-request', self._size_request_cb) screen = self.get_screen() screen.connect('size-changed', self._screen_size_changed_cb) self._button = gtk.Button() self._button.set_relief(gtk.RELIEF_NONE) self._icon = Icon(icon_name='view-return', icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) self._icon.show() self._button.add(self._icon) self._button.show() self.add(self._button)
def can_close(self): if downloadmanager.can_quit(): return True else: alert = Alert() alert.props.title = _('Download in progress') alert.props.msg = _('Stopping now will cancel your download') cancel_icon = Icon(icon_name='dialog-cancel') alert.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), cancel_icon) stop_icon = Icon(icon_name='dialog-ok') alert.add_button(gtk.RESPONSE_OK, _('Stop'), stop_icon) stop_icon.show() self.add_alert(alert) alert.connect('response', self.__inprogress_response_cb) alert.show() self.present()
def __init__(self, cb_object, group): RadioToolButton.__init__(self, group=group) self.props.palette_invoker = FrameWidgetInvoker(self) self._cb_object = cb_object self.owns_clipboard = False self.props.sensitive = False self.props.active = False self._notif_icon = None self._current_percent = None self._icon = Icon() client = gconf.client_get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) self._icon.props.xo_color = color self.set_icon_widget(self._icon) self._icon.show() cb_service = clipboard.get_instance() cb_service.connect('object-state-changed', self._object_state_changed_cb) cb_service.connect('object-selected', self._object_selected_cb) child = self.get_child() child.connect('drag_data_get', self._drag_data_get_cb) self.connect('notify::active', self._notify_active_cb)
def __init__(self,jobject=None): LicenseWidget.__init__(self,"#ffffff,#ffffff") self._jobject = jobject if jobject: self._color_selected = XoColor(self._jobject.metadata['icon-color']) else: self._color_selected = profile.get_color() default, license = self.load_license() icon_name = self.uri_to_icon(license) ToolButton.__init__(self) icon = Icon(icon_name,icon_size=self._icon_size,xo_color=XoColor("#ffffff,#ffffff")) icon.show() self.set_icon_widget(icon) self.props.sensitive = True self.set_tooltip(self._format_tooltip(license)) self.make_menu(self.get_palette(),XoColor("#ffffff,#ffffff"),self._color_selected,icon_name)
def __init__(self, **kwargs): self._msg = None self._msg_color = None self._icon = Icon(icon_name='emblem-warning', fill_color=style.COLOR_SELECTION_GREY.get_svg(), stroke_color=style.COLOR_WHITE.get_svg()) self._msg_label = gtk.Label() self._msg_label.set_max_width_chars(50) self._msg_label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) self._msg_label.set_alignment(0, 0.5) self._msg_label.modify_fg(gtk.STATE_NORMAL, style.COLOR_SELECTION_GREY.get_gdk_color()) gobject.GObject.__init__(self, **kwargs) self.set_spacing(style.DEFAULT_SPACING) self.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) self.pack_start(self._icon, False) self.pack_start(self._msg_label, False) self._msg_label.show() self._icon.show()
def __init__(self, title, bundle_path, document_path): gtk.Toolbar.__init__(self) self._add_separator() activity_bundle = ActivityBundle(bundle_path) file_name = activity_bundle.get_icon() if document_path is not None and os.path.exists(document_path): document_button = DocumentButton(file_name, document_path, title) document_button.connect('toggled', self.__button_toggled_cb, document_path) self.insert(document_button, -1) document_button.show() self._add_separator() if bundle_path is not None and os.path.exists(bundle_path): activity_button = RadioToolButton() icon = Icon(file=file_name, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR, fill_color=style.COLOR_TRANSPARENT.get_svg(), stroke_color=style.COLOR_WHITE.get_svg()) activity_button.set_icon_widget(icon) icon.show() if document_path is not None: activity_button.props.group = document_button activity_button.props.tooltip = _('Activity Bundle Source') activity_button.connect('toggled', self.__button_toggled_cb, bundle_path) self.insert(activity_button, -1) activity_button.show() self._add_separator() text = _('View source: %r') % title label = gtk.Label() label.set_markup('<b>%s</b>' % text) label.set_alignment(0, 0.5) self._add_widget(label) self._add_separator(True) stop = ToolButton(icon_name='dialog-cancel') stop.set_tooltip(_('Close')) stop.connect('clicked', self.__stop_clicked_cb) stop.show() self.insert(stop, -1) stop.show()
def __init__(self, icon_name=None, xo_color=None): gtk.EventBox.__init__(self) self.set_app_paintable(True) self._icon = Icon(icon_name=icon_name, xo_color=xo_color, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) self.add(self._icon) self._icon.show()
def __init__(self, icon_name, title): super(_DialogToolbar, self).__init__() if icon_name is not None: sep = gtk.SeparatorToolItem() sep.set_draw(False) self._add_widget(sep) icon = Icon() icon.set_from_icon_name(icon_name, gtk.ICON_SIZE_LARGE_TOOLBAR) self._add_widget(icon) label = gtk.Label(' ' + title) self._add_widget(label) self._add_separator(expand=True) stop = ToolButton(icon_name='dialog-cancel') stop.set_tooltip('Salir') stop.connect('clicked', self._stop_clicked_cb) self.add(stop)
def okAlert(self, title, msg, callback): self.alert = Alert() icon = Icon(icon_name='dialog-ok') self.alert.add_button(gtk.RESPONSE_OK, _('_Ok'), icon) self.alert.props.title = title self.alert.props.msg = msg self.alert.connect('response', callback) self.myAct.add_alert(self.alert)
def __init__(self, timeout=5, **kwargs): Alert.__init__(self, **kwargs) self._timeout = timeout icon = Icon(icon_name='dialog-cancel') self.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), icon) icon.show() self._timeout_text = _TimeoutIcon( text=self._timeout, color=style.COLOR_BUTTON_GREY.get_int(), background_color=style.COLOR_WHITE.get_int()) canvas = hippo.Canvas() canvas.set_root(self._timeout_text) canvas.show() self.add_button(gtk.RESPONSE_OK, _('Continue'), canvas) gobject.timeout_add_seconds(1, self.__timeout)
def __init__(self, parent, name, icon_name='', callback=None, tooltip=None, group=None): RadioToolButton.__init__(self) if icon_name == '': icon_name = 'computer-xo' icon = Icon(icon_name=icon_name, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) self.set_icon_widget(icon) icon.show() if tooltip is not None: self.set_tooltip(tooltip) self.props.sensitive = True self.connect('clicked', callback) self.set_group(group) self.show() parent.button_dict[name] = self parent.callback_dict[name] = callback
def __init__(self, buddy): self._buddy = buddy nick, colors = buddy buddy_icon = Icon(icon_name='computer-xo', icon_size=style.STANDARD_ICON_SIZE, xo_color=XoColor(colors)) Palette.__init__(self, primary_text=glib.markup_escape_text(nick), icon=buddy_icon)
def _show_keep_failed_dialog(self): ''' A keep error means the activity write_file method raised an exception before writing the file, or the datastore cannot be written to. ''' alert = Alert() alert.props.title = _('Keep error') alert.props.msg = _('Keep error: all changes will be lost') cancel_icon = Icon(icon_name='dialog-cancel') alert.add_button(gtk.RESPONSE_CANCEL, _('Don\'t stop'), cancel_icon) stop_icon = Icon(icon_name='dialog-ok') alert.add_button(gtk.RESPONSE_OK, _('Stop anyway'), stop_icon) self.add_alert(alert) alert.connect('response', self.__keep_failed_dialog_response_cb) self.reveal()
def _create_activity_icon(metadata): if metadata.get('icon-color', ''): color = XoColor(metadata['icon-color']) else: color = profile.get_color() from sugar.activity.activity import get_bundle_path bundle = ActivityBundle(get_bundle_path()) icon = Icon(file=bundle.get_icon(), xo_color=color) return icon
def __erase_activated_cb(self, tree_view, bundle_id): registry = bundleregistry.get_registry() activity_info = registry.get_bundle(bundle_id) alert = Alert() alert.props.title = _('Confirm erase') alert.props.msg = \ _('Confirm erase: Do you want to permanently erase %s?') \ % activity_info.get_name() cancel_icon = Icon(icon_name='dialog-cancel') alert.add_button(gtk.RESPONSE_CANCEL, _('Keep'), cancel_icon) erase_icon = Icon(icon_name='dialog-ok') alert.add_button(gtk.RESPONSE_OK, _('Erase'), erase_icon) alert.connect('response', self.__erase_confirmation_dialog_response_cb, bundle_id) self.add_alert(alert)
def _create_ssb_clicked_cb(self, button): title = self._activity.webtitle uri = self._activity.current #favicon = self._activity.get_favicon() pattern = re.compile(r''' (\w+) # first word [ _-]* # any amount and type of spacing (\w+)? # second word, may be absent ''', re.VERBOSE) first, second = re.search(pattern, title).groups() # CamelCase the two words first = first.capitalize() if second is not None: second = second.capitalize() name = first + ' ' + second else: name = first self._ssb = ssb.SSBCreator(name, uri) # alert to show after creation alert = Alert() alert.props.title = _('SSB Creation') cancel_icon = Icon(icon_name='dialog-cancel') alert.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), cancel_icon) cancel_icon.show() open_icon = Icon(icon_name='filesave') alert.add_button(gtk.RESPONSE_APPLY, _('Show in Journal'), open_icon) open_icon.show() ok_icon = Icon(icon_name='dialog-ok') alert.add_button(gtk.RESPONSE_OK, _('Install'), ok_icon) ok_icon.show() self._activity.add_alert(alert) alert.connect('response', self._create_ssb_alert_cb) try: self._ssb.create() except Exception, e: # DEBUG: alert shows exception message alert.props.msg = _('Failed: ') + str(e)
def _refresh_copy_palette(self): palette = self._copy.get_palette() for menu_item in palette.menu.get_children(): palette.menu.remove(menu_item) menu_item.destroy() clipboard_menu = ClipboardMenu(self._metadata) clipboard_menu.set_image( Icon(icon_name='toolbar-edit', icon_size=gtk.ICON_SIZE_MENU)) clipboard_menu.connect('volume-error', self.__volume_error_cb) palette.menu.append(clipboard_menu) clipboard_menu.show() if self._metadata['mountpoint'] != '/': client = gconf.client_get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) journal_menu = VolumeMenu(self._metadata, _('Journal'), '/') journal_menu.set_image( Icon(icon_name='activity-journal', xo_color=color, icon_size=gtk.ICON_SIZE_MENU)) journal_menu.connect('volume-error', self.__volume_error_cb) palette.menu.append(journal_menu) journal_menu.show() volume_monitor = gio.volume_monitor_get() icon_theme = gtk.icon_theme_get_default() for mount in volume_monitor.get_mounts(): if self._metadata['mountpoint'] == mount.get_root().get_path(): continue volume_menu = VolumeMenu(self._metadata, mount.get_name(), mount.get_root().get_path()) for name in mount.get_icon().props.names: if icon_theme.has_icon(name): volume_menu.set_image( Icon(icon_name=name, icon_size=gtk.ICON_SIZE_MENU)) break volume_menu.connect('volume-error', self.__volume_error_cb) palette.menu.append(volume_menu) volume_menu.show()
def _setup(self): self._progressbar = gtk.ProgressBar() self._progressbar.props.discrete_blocks = 10 self._progressbar.set_fraction(self._completion_level / 100.0) self.pack_start(self._progressbar, expand=True, fill=True) if self._battery_props is None: return level = self._get_battery_level() icon_name = get_icon_state(_ICON_NAME, level, step=-5) self._icon = Icon(icon_name=icon_name) self.pack_start(self._icon, expand=False, fill=False)
def _update_invite_menu(self, activity): buddy_activity = self._buddy.props.current_activity if buddy_activity is not None: buddy_activity_id = buddy_activity.activity_id else: buddy_activity_id = None if activity is None or activity.is_journal() or \ activity.get_activity_id() == buddy_activity_id: self._invite_menu.hide() else: title = activity.get_title() label = self._invite_menu.get_children()[0] label.set_text(_('Invite to %s') % title) icon = Icon(file=activity.get_icon_path()) icon.props.xo_color = activity.get_icon_color() self._invite_menu.set_image(icon) icon.show() self._invite_menu.show()
def _create_activity_icon(metadata): if metadata.get('icon-color', ''): color = XoColor(metadata['icon-color']) else: client = gconf.client_get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) from sugar.activity.activity import get_bundle_path bundle = ActivityBundle(get_bundle_path()) icon = Icon(file=bundle.get_icon(), xo_color=color) return icon
def __init__(self, handle): activity.Activity.__init__(self, handle) self.set_canvas(canvas.widget) toolbox = activity.ActivityToolbox(self) self.set_toolbox(toolbox) toolbox.show() alert = Alert() # Populate the title and text body of the alert. alert.props.title = 'Current Recording' alert.props.msg = 'recording information goes here' stop_icon = Icon(icon_name='dialog-cancel') stop_icon.set_pixel_size(50) alert.add_button(gtk.RESPONSE_CANCEL, 'End', stop_icon) stop_icon.show() alert.connect('response', singletab.stop) alert.connect('response', incramentaltab.stop) alert.connect('response', lapsetab.stop) # Call the add_alert() method (inherited via the sugar.graphics.Window superclass of Activity) # to add this alert to the activity window. self.add_alert(alert) alert.hide() for tab in tabs: toolbox.add_toolbar(tab.tab_name, tab.widget) tab.set_alert(alert)
def __init__(self, icon_name, size=gtk.ICON_SIZE_SMALL_TOOLBAR, **kwargs): gobject.GObject.__init__(self, **kwargs) icon = Icon(icon_name=icon_name, icon_size=size) # The alignment is a hack to work around gtk.ToolButton code # that sets the icon_size when the icon_widget is a gtk.Image alignment = gtk.Alignment(0.5, 0.5) alignment.add(icon) self.set_icon_widget(alignment) if size == gtk.ICON_SIZE_SMALL_TOOLBAR: button_size = style.SMALL_ICON_SIZE + 8 self.set_size_request(button_size, button_size)
def __init__(self, metadata): gobject.GObject.__init__(self) self._metadata = metadata clipboard_menu = ClipboardMenu(self._metadata) clipboard_menu.set_image(Icon(icon_name='toolbar-edit', icon_size=gtk.ICON_SIZE_MENU)) clipboard_menu.connect('volume-error', self.__volume_error_cb) self.append(clipboard_menu) clipboard_menu.show() if self._metadata['mountpoint'] != '/': client = gconf.client_get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) journal_menu = VolumeMenu(self._metadata, _('Journal'), '/') journal_menu.set_image(Icon(icon_name='activity-journal', xo_color=color, icon_size=gtk.ICON_SIZE_MENU)) journal_menu.connect('volume-error', self.__volume_error_cb) self.append(journal_menu) journal_menu.show() volume_monitor = gio.volume_monitor_get() icon_theme = gtk.icon_theme_get_default() for mount in volume_monitor.get_mounts(): if self._metadata['mountpoint'] == mount.get_root().get_path(): continue volume_menu = VolumeMenu(self._metadata, mount.get_name(), mount.get_root().get_path()) for name in mount.get_icon().props.names: if icon_theme.has_icon(name): volume_menu.set_image(Icon(icon_name=name, icon_size=gtk.ICON_SIZE_MENU)) break volume_menu.connect('volume-error', self.__volume_error_cb) self.append(volume_menu) volume_menu.show()
def __init__(self, invite): ToolButton.__init__(self) self._invite = invite self.connect('clicked', self.__clicked_cb) self.connect('destroy', self.__destroy_cb) bundle_registry = bundleregistry.get_registry() bundle = bundle_registry.get_bundle(invite.get_bundle_id()) self._icon = Icon() self._icon.props.xo_color = invite.get_color() if bundle is not None: self._icon.props.file = bundle.get_icon() else: self._icon.props.icon_name = 'image-missing' self.set_icon_widget(self._icon) self._icon.show() palette = InvitePalette(invite) palette.props.invoker = FrameWidgetInvoker(self) palette.set_group_id('frame') palette.connect('remove-invite', self.__remove_invite_cb) self.set_palette(palette) self._notif_icon = NotificationIcon() self._notif_icon.connect('button-release-event', self.__button_release_event_cb) self._notif_icon.props.xo_color = invite.get_color() if bundle is not None: self._notif_icon.props.icon_filename = bundle.get_icon() else: self._notif_icon.props.icon_name = 'image-missing' frame = jarabe.frame.get_view() frame.add_notification(self._notif_icon, gtk.CORNER_TOP_LEFT)
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(_('Describe your activity')) self._add_widget(self._title) self._add_separator(True) self._keep_button = ToolButton('dialog-ok', tooltip=_('Keep')) self._keep_button.props.accelerator = '<Ctrl>s' self._keep_button.connect('clicked', self.__keep_button_clicked_cb) self.insert(self._keep_button, -1) self._keep_button.show()
def create_stub(icon_name, head_text, tail_text): head_label = gtk.Label(head_text) head_label_a = gtk.Alignment(0.5, 1, 0, 0) head_label_a.add(head_label) icon = Icon(icon_name=icon_name, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) tail_label = gtk.Label(tail_text) tail_label_a = gtk.Alignment(0.5, 0, 0, 0) tail_label_a.add(tail_label) stub = gtk.VBox() stub.pack_start(head_label_a) stub.pack_start(icon, False) stub.pack_start(tail_label_a) return stub
def add_paragraph(self, text, icon=None): hbox = gtk.HBox() label = gtk.Label(text) label.set_justify(gtk.JUSTIFY_LEFT) label.set_line_wrap(True) hbox.add(label) if icon is not None: _icon = Icon(icon_name=icon) hbox.add(_icon) label.set_size_request(self._max_text_width - 20, -1) else: label.set_size_request(self._max_text_width, -1) hbox.show_all() self._vbox.pack_start(hbox, False, False, padding=5)
def _alert(self, message): bg = gtk.EventBox() bg.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) canvas = gtk.VBox() canvas.set_border_width(style.GRID_CELL_SIZE) canvas.props.spacing = style.DEFAULT_SPACING bg.add(canvas) box = gtk.HBox() box.props.spacing = style.DEFAULT_SPACING canvas.pack_start(box) icon = Icon(pixel_size=style.LARGE_ICON_SIZE) icon.set_from_icon_name('emblem-warning', gtk.ICON_SIZE_LARGE_TOOLBAR) box.pack_start(icon, False) label = gtk.Label() label.props.use_markup = True label.props.label = '<b>Error</b>\n%s' % message box.pack_start(label, False) bg.show_all() return bg
def add_paragraph(help_box, text, icon=None): ''' Add an entry to the help palette. From helpbutton.py by Gonzalo Odiard ''' max_text_width = int(gtk.gdk.screen_width() / 3) - 20 hbox = gtk.HBox() label = gtk.Label(text) label.set_justify(gtk.JUSTIFY_LEFT) label.set_line_wrap(True) hbox.add(label) if icon is not None: _icon = Icon(icon_name=icon) hbox.add(_icon) label.set_size_request(max_text_width - 20, -1) else: label.set_size_request(max_text_width, -1) hbox.show_all() help_box.pack_start(hbox, False, False, padding=5)
def __init__(self, icon_name, scroll_direction): ToolButton.__init__(self) self._viewport = None self._scroll_direction = scroll_direction self.set_size_request(style.GRID_CELL_SIZE, style.GRID_CELL_SIZE) self.icon = Icon(icon_name=icon_name, icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR) # The alignment is a hack to work around gtk.ToolButton code # that sets the icon_size when the icon_widget is a gtk.Image alignment = gtk.Alignment(0.5, 0.5) alignment.add(self.icon) self.set_icon_widget(alignment) alignment.show_all() self.connect('clicked', self._clicked_cb)
def _create_palette(self): icon_name = get_icon_state(_AP_ICON_NAME, self._strength) self._palette_icon = Icon(icon_name=icon_name, icon_size=style.STANDARD_ICON_SIZE, badge_name=self.props.badge_name) label = glib.markup_escape_text(self._display_name) p = palette.Palette(primary_text=label, icon=self._palette_icon) self._connect_item = MenuItem(_('Connect'), 'dialog-ok') self._connect_item.connect('activate', self.__connect_activate_cb) p.menu.append(self._connect_item) self._disconnect_item = MenuItem(_('Disconnect'), 'media-eject') self._disconnect_item.connect('activate', self._disconnect_activate_cb) p.menu.append(self._disconnect_item) return p
def _create_palette(self): self._palette_icon = Icon( \ icon_name=self._ICON_NAME + str(self._channel), icon_size=style.STANDARD_ICON_SIZE) text = _('Ad-hoc Network %d') % (self._channel, ) palette_ = palette.Palette(glib.markup_escape_text(text), icon=self._palette_icon) self._connect_item = MenuItem(_('Connect'), 'dialog-ok') self._connect_item.connect('activate', self.__connect_activate_cb) palette_.menu.append(self._connect_item) self._disconnect_item = MenuItem(_('Disconnect'), 'media-eject') self._disconnect_item.connect('activate', self.__disconnect_activate_cb) palette_.menu.append(self._disconnect_item) return palette_
def add_section(help_box, section_text, icon=None): ''' Add a section to the help palette. From helpbutton.py by Gonzalo Odiard ''' max_text_width = int(gtk.gdk.screen_width() / 3) - 20 hbox = gtk.HBox() label = gtk.Label() label.set_use_markup(True) label.set_markup('<b>%s</b>' % section_text) label.set_line_wrap(True) label.set_size_request(max_text_width, -1) hbox.add(label) if icon is not None: _icon = Icon(icon_name=icon) hbox.add(_icon) label.set_size_request(max_text_width - 20, -1) else: label.set_size_request(max_text_width, -1) hbox.show_all() help_box.pack_start(hbox, False, False, padding=5)
def __init__(self, text_label=None, icon_name=None, text_maxlen=60, xo_color=None, file_name=None, image=None): super(MenuItem, self).__init__() self._accelerator = None self.props.submenu = None label = gtk.AccelLabel(text_label) label.set_alignment(0.0, 0.5) label.set_accel_widget(self) if text_maxlen > 0: label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) label.set_max_width_chars(text_maxlen) self.add(label) label.show() if image is not None: self.set_image(image) image.show() elif icon_name is not None: icon = Icon(icon_name=icon_name, icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR) if xo_color is not None: icon.props.xo_color = xo_color self.set_image(icon) icon.show() elif file_name is not None: icon = Icon(file=file_name, icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR) if xo_color is not None: icon.props.xo_color = xo_color self.set_image(icon) icon.show()
def __init__(self, buddy): self._buddy = buddy buddy_icon = Icon(icon_name='computer-xo', xo_color=buddy.get_color(), icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) nick = buddy.get_nick() Palette.__init__(self, None, primary_text=glib.markup_escape_text(nick), icon=buddy_icon) self._invite_menu = None self._active_activity_changed_hid = None self.connect('destroy', self.__destroy_cb) self._buddy.connect('notify::nick', self.__buddy_notify_nick_cb) if buddy.is_owner(): self._add_my_items() else: self._add_buddy_items()
def _refresh_resume_palette(self): if self._metadata.get('activity_id', ''): # TRANS: Action label for resuming an activity. self._resume.set_tooltip(_('Resume')) else: # TRANS: Action label for starting an entry. self._resume.set_tooltip(_('Start')) palette = self._resume.get_palette() for menu_item in palette.menu.get_children(): palette.menu.remove(menu_item) menu_item.destroy() for activity_info in misc.get_activities(self._metadata): menu_item = MenuItem(activity_info.get_name()) menu_item.set_image( Icon(file=activity_info.get_icon(), icon_size=gtk.ICON_SIZE_MENU)) menu_item.connect('activate', self._resume_menu_item_activate_cb, activity_info.get_bundle_id()) palette.menu.append(menu_item) menu_item.show()
def __init__(self, activity_info): self._activity_info = activity_info client = gconf.client_get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) activity_icon = Icon(file=activity_info.get_icon(), xo_color=color, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) name = activity_info.get_name() Palette.__init__(self, primary_text=glib.markup_escape_text(name), icon=activity_icon) xo_color = XoColor( '%s,%s' % (style.COLOR_WHITE.get_svg(), style.COLOR_TRANSPARENT.get_svg())) menu_item = MenuItem(text_label=_('Start new'), file_name=activity_info.get_icon(), xo_color=xo_color) menu_item.connect('activate', self.__start_activate_cb) self.menu.append(menu_item) menu_item.show()
def __init__(self, metadata): gobject.GObject.__init__(self) self._metadata = metadata for activity_info in misc.get_activities(metadata): menu_item = MenuItem(activity_info.get_name()) menu_item.set_image(Icon(file=activity_info.get_icon(), icon_size=gtk.ICON_SIZE_MENU)) menu_item.connect('activate', self.__item_activate_cb, activity_info.get_bundle_id()) self.append(menu_item) menu_item.show() if not self.get_children(): if metadata.get('activity_id', ''): resume_label = _('No activity to resume entry') else: resume_label = _('No activity to start entry') menu_item = MenuItem(resume_label) menu_item.set_sensitive(False) self.append(menu_item) menu_item.show()
def __init__(self, cb_object): Palette.__init__(self, text_maxlen=100) self._cb_object = cb_object self.set_group_id('frame') cb_service = clipboard.get_instance() cb_service.connect('object-state-changed', self._object_state_changed_cb) self._progress_bar = None self._remove_item = MenuItem(pgettext('Clipboard', 'Remove'), 'list-remove') self._remove_item.connect('activate', self._remove_item_activate_cb) self.menu.append(self._remove_item) self._remove_item.show() self._open_item = MenuItem(_('Open'), 'zoom-activity') self._open_item.connect('activate', self._open_item_activate_cb) self.menu.append(self._open_item) self._open_item.show() self._journal_item = MenuItem(_('Keep')) client = gconf.client_get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) icon = Icon(icon_name='document-save', icon_size=gtk.ICON_SIZE_MENU, xo_color=color) self._journal_item.set_image(icon) self._journal_item.connect('activate', self._journal_item_activate_cb) self.menu.append(self._journal_item) self._journal_item.show() self._update()
def __init__(self, activity_info, journal_entries): ActivityPalette.__init__(self, activity_info) if not journal_entries: xo_color = XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(), style.COLOR_TRANSPARENT.get_svg())) else: xo_color = misc.get_icon_color(journal_entries[0]) self.props.icon = Icon(file=activity_info.get_icon(), xo_color=xo_color, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) if journal_entries: title = journal_entries[0]['title'] self.props.secondary_text = glib.markup_escape_text(title) menu_items = [] for entry in journal_entries: icon_file_name = misc.get_icon_name(entry) color = misc.get_icon_color(entry) menu_item = MenuItem(text_label=entry['title'], file_name=icon_file_name, xo_color=color) menu_item.connect('activate', self.__resume_entry_cb, entry) menu_items.append(menu_item) menu_item.show() if journal_entries: separator = gtk.SeparatorMenuItem() menu_items.append(separator) separator.show() for i in range(0, len(menu_items)): self.menu.insert(menu_items[i], i)