Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/rpms/sugar/0051-Two-kinds-of-feedback-submits.patch
diff options
context:
space:
mode:
Diffstat (limited to 'rpms/sugar/0051-Two-kinds-of-feedback-submits.patch')
-rw-r--r--rpms/sugar/0051-Two-kinds-of-feedback-submits.patch262
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
+