diff options
Diffstat (limited to 'rpms/sugar/0051-Two-kinds-of-feedback-submits.patch')
-rw-r--r-- | rpms/sugar/0051-Two-kinds-of-feedback-submits.patch | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/rpms/sugar/0051-Two-kinds-of-feedback-submits.patch b/rpms/sugar/0051-Two-kinds-of-feedback-submits.patch new file mode 100644 index 0000000..db534ad --- /dev/null +++ b/rpms/sugar/0051-Two-kinds-of-feedback-submits.patch @@ -0,0 +1,262 @@ +From 404e4581d8159b772cc236e095bd6767fd69d6b0 Mon Sep 17 00:00:00 2001 +From: Aleksey Lim <alsroot@member.fsf.org> +Date: Tue, 18 Jan 2011 07:53:44 +0000 +Subject: [PATCH sugar 51/74] Two kinds of feedback submits + +--- + extensions/deviceicon/feedback.py | 214 +++++++++++++++++++++++-------------- + 1 files changed, 132 insertions(+), 82 deletions(-) + +diff --git a/extensions/deviceicon/feedback.py b/extensions/deviceicon/feedback.py +index dc40a6e..4f5198f 100644 +--- a/extensions/deviceicon/feedback.py ++++ b/extensions/deviceicon/feedback.py +@@ -16,113 +16,163 @@ + + import logging + from gettext import gettext as _ ++ + import gconf + import gtk ++ ++from sugar import profile + from sugar.graphics import style ++from sugar.graphics.icon import Icon + from sugar.graphics.tray import TrayIcon + from sugar.graphics.palette import Palette +-from sugar.graphics.xocolor import XoColor ++from sugar.graphics.menuitem import MenuItem ++from sugar.graphics.toolbutton import ToolButton ++ + from jarabe.model import feedback_collector +-from jarabe.view import launcher +-from sugar.activity import activityfactory +-from jarabe.model import bundleregistry +-from sugar.activity.activityhandle import ActivityHandle ++ + + _ICON_NAME = 'feedback-icon' + ++ + class DeviceView(TrayIcon): ++ + FRAME_POSITION_RELATIVE = 500 ++ + def __init__(self): +- client = gconf.client_get_default() +- self._color = XoColor(client.get_string('/desktop/sugar/user/color')) +- TrayIcon.__init__(self, icon_name=_ICON_NAME, xo_color=self._color) ++ TrayIcon.__init__(self, icon_name=_ICON_NAME, ++ xo_color=profile.get_color()) + self.create_palette() +- ++ + def create_palette(self): + logging.debug('palette created') +- self.palette = BugsPalette(_('Bugs')) ++ self.palette = _Palette(_('Feedback')) + self.palette.set_group_id('frame') + return self.palette + + +-class BugsPalette(Palette): +- ++class _Palette(Palette): ++ + def __init__(self, primary_text): + Palette.__init__(self, primary_text) +- self._level = 0 +- self._status_label = gtk.Label() +- self._status_label.show() +- self.vbox = gtk.VBox() +- self.hbox = gtk.HBox() +- self.set_content(self.vbox) +- self._bugs_count_text = gtk.Label() +- self.vbox.pack_start(self._bugs_count_text, +- padding = style.DEFAULT_PADDING) +- self.vbox.pack_start(self.hbox, padding = style.DEFAULT_PADDING) +- self.vbox.show() +- self.hbox.pack_start(self._status_label, +- padding = style.DEFAULT_PADDING) +- self.hbox.show() +- self._open_log_button = gtk.Button("Open Log") +- self._open_log_button.connect("clicked", +- self.__open_log_activity) +- self.hbox.pack_start(self._open_log_button, +- padding = style.DEFAULT_PADDING) +- self._send_report_button = gtk.Button("Send Report") +- self._send_report_button.connect("clicked", self.__send_bug_report) +- self.hbox.pack_start(self._send_report_button, +- padding = style.DEFAULT_PADDING) +- self.__get_bug_count() +- self._bugs_count_text.show() +- self._open_log_button.show() +- self._send_report_button.show() +- ++ ++ icon = Icon() ++ icon.set_from_icon_name('emblem-favorite', gtk.ICON_SIZE_MENU) ++ icon.props.xo_color = profile.get_color() ++ ++ personalized = MenuItem(_('Personalized submit...')) ++ personalized.set_image(icon) ++ personalized.connect('activate', self.__personalized_activate_cb) ++ personalized.show() ++ self.menu.append(personalized) ++ ++ self._anonymous = MenuItem(_('Anonymous submit'), 'emblem-favorite') ++ self._anonymous.connect('activate', self.__anonymous_activate_cb) ++ self._anonymous.show() ++ self.menu.append(self._anonymous) ++ + def popup(self, immediate=False, state=None): ++ self._anonymous.set_sensitive(not feedback_collector.is_empty()) + Palette.popup(self, immediate=immediate, state=state) +- self.__update_bug_palette() +- +- +- def __send_bug_report(self, button): +- feedback_collector.submit() +- +- def __open_log_activity(self, path): +- +- registry = bundleregistry.get_registry() +- bundle = registry.get_bundle('org.laptop.Log') +- activity_id = activityfactory.create_activity_id() +- client = gconf.client_get_default() +- xo_color = XoColor(client.get_string('/desktop/sugar/user/color')) +- launcher.add_launcher(activity_id, bundle.get_icon(), xo_color) +- activityfactory.create(bundle, ActivityHandle(activity_id)) +- +- def __get_bug_count(self): +- """This method returns the total error count""" +- bugs_count = 0 +- +- +- return bugs_count +- +- def __update_bug_palette(self): +- bugs_count = self.__get_bug_count() +- self._open_log_button.set_sensitive(False) +- have_reports, have_errors = feedback_collector.stat() +- #have_reports, have_errors=[True,False] +- if have_errors: +- self._open_log_button.set_sensitive(True) ++ ++ def __anonymous_activate_cb(self, button): ++ feedback_collector.anonymous_submit() ++ ++ def __personalized_activate_cb(self, button): ++ window = _Window() ++ window.show() ++ ++ ++class _Window(gtk.Window): ++ ++ __gtype_name__ = 'FeedbackWindow' ++ ++ 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) ++ ++ canvas = gtk.VBox() ++ self.add(canvas) ++ ++ self._toolbar = gtk.Toolbar() ++ canvas.pack_start(self._toolbar, False) ++ ++ icon = Icon() ++ icon.set_from_icon_name('emblem-favorite', gtk.ICON_SIZE_LARGE_TOOLBAR) ++ icon.props.xo_color = profile.get_color() ++ self._add_widget(icon) ++ ++ self._add_separator(False) ++ ++ title = gtk.Label(_('Submit feedback')) ++ self._add_widget(title) ++ ++ self._add_separator(True) ++ ++ submit = ToolButton('dialog-ok', tooltip=_('Submit')) ++ submit.connect('clicked', lambda button: self._submit()) ++ self._toolbar.insert(submit, -1) ++ ++ cancel = ToolButton('dialog-cancel', tooltip=_('Cancel')) ++ cancel.connect('clicked', lambda button: self.destroy()) ++ self._toolbar.insert(cancel, -1) ++ ++ bg = gtk.EventBox() ++ bg.modify_bg(gtk.STATE_NORMAL, style.COLOR_WHITE.get_gdk_color()) ++ canvas.pack_start(bg) ++ ++ self._message = gtk.TextView() ++ scrolled = gtk.ScrolledWindow() ++ scrolled.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) ++ scrolled.set_border_width(style.DEFAULT_PADDING) ++ scrolled.add(self._message) ++ bg.add(scrolled) ++ ++ self.show_all() ++ self.set_focus(self._message) ++ ++ self.connect("realize", self.__realize_cb) ++ ++ def do_key_press_event(self, event): ++ if event.keyval == gtk.keysyms.Escape: ++ self.destroy() ++ elif event.keyval == gtk.keysyms.Return and \ ++ event.state & gtk.gdk.CONTROL_MASK: ++ self._submit() + else: +- self._open_log_button.set_sensitive(False) +- +- +- if have_reports: +- self._send_report_button.set_sensitive(True) ++ gtk.Window.do_key_press_event(self, event) ++ ++ def _add_widget(self, widget): ++ tool_item = gtk.ToolItem() ++ tool_item.add(widget) ++ self._toolbar.insert(tool_item, -1) ++ ++ def _add_separator(self, expand): ++ separator = gtk.SeparatorToolItem() ++ separator.props.draw = False ++ if expand: ++ separator.set_expand(True) + else: +- self._send_report_button.set_sensitive(False) +- +- if bugs_count == 0: +- self._bugs_count_text.set_label('No Errors') +- else : +- self._bugs_count_text.set_label(_('Total Errors: %d' % bugs_count)) +- ++ separator.set_size_request(style.DEFAULT_SPACING, -1) ++ self._toolbar.insert(separator, -1) ++ ++ def _submit(self): ++ feedback_collector.submit(self._message.props.buffer.props.text) ++ self.destroy() ++ ++ def __realize_cb(self, widget): ++ self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) ++ self.window.set_accept_focus(True) ++ ++ + def setup(tray): + client = gconf.client_get_default() + if client.get_bool('/desktop/sugar/feedback/enabled'): +-- +1.7.6 + |