diff options
Diffstat (limited to 'rpms/sugar/0020-Journal-XS-backup-and-restore.patch')
-rw-r--r-- | rpms/sugar/0020-Journal-XS-backup-and-restore.patch | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/rpms/sugar/0020-Journal-XS-backup-and-restore.patch b/rpms/sugar/0020-Journal-XS-backup-and-restore.patch new file mode 100644 index 0000000..9d253ee --- /dev/null +++ b/rpms/sugar/0020-Journal-XS-backup-and-restore.patch @@ -0,0 +1,213 @@ +From b7560ab35c80232c3c5b223207e5f4a4259f24b5 Mon Sep 17 00:00:00 2001 +From: Martin Abente <mabente@paraguayeduca.org> +Date: Wed, 23 Jun 2010 17:12:59 -0400 +Subject: [PATCH sugar 20/74] Journal XS backup and restore + +Include a new journal volumes toolbar icon. The icon represents +the schoolserver. The icon palette provides a backup and restore +options. +--- + src/jarabe/desktop/favoritesview.py | 2 + + src/jarabe/journal/processdialog.py | 30 ++++++++++++++++++++++++ + src/jarabe/journal/volumestoolbar.py | 39 +++++++++++++++++++++++++++++-- + src/jarabe/view/palettes.py | 41 +++++++++++++++++++++++++++++++++- + 4 files changed, 108 insertions(+), 4 deletions(-) + +diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py +index 132d14f..75795cd 100644 +--- a/src/jarabe/desktop/favoritesview.py ++++ b/src/jarabe/desktop/favoritesview.py +@@ -41,6 +41,7 @@ + from jarabe.model.buddy import get_owner_instance + from jarabe.model import shell + from jarabe.model import bundleregistry ++from jarabe.journal.journalactivity import get_journal + from jarabe.journal import misc + + from jarabe.desktop import schoolserver +@@ -342,6 +343,7 @@ def __register_activate_cb(self, icon): + alert.props.msg = _('You are now registered ' \ + 'with your school server.') + self._my_icon.set_registered() ++ get_journal()._volumes_toolbar.setup_xs_button() + + ok_icon = Icon(icon_name='dialog-ok') + alert.add_button(gtk.RESPONSE_OK, _('Ok'), ok_icon) +diff --git a/src/jarabe/journal/processdialog.py b/src/jarabe/journal/processdialog.py +index b96abd9..08c6d11 100644 +--- a/src/jarabe/journal/processdialog.py ++++ b/src/jarabe/journal/processdialog.py +@@ -246,3 +246,33 @@ def _resetup_information(self, volume_path): + self._message.set_markup('%s %s.\n\n' % (_('Journal content will be restored from'), volume_path) + \ + '<big><b>%s</b> %s</big>' % (_('Warning:'), _('Current Journal content will be deleted!'))) + ++class XSBackupDialog(ProcessDialog): ++ ++ def __init__(self, xs_hostname): ++ ProcessDialog.__init__(self, 'journal-backup') ++ self._resetup_information(xs_hostname) ++ ++ def _resetup_information(self, xs_hostname): ++ self._start_message = '%s %s.' % (_('Please wait, saving Journal content to'), xs_hostname) ++ ++ self._finished_message = _('The journal content has been saved.') ++ ++ self._title.set_markup('<big><b>%s</b></big>' % _('Backup')) ++ ++ self._message.set_text('%s %s.' % (_('Journal content will be saved to'), xs_hostname)) ++ ++class XSRestoreDialog(ProcessDialog): ++ ++ def __init__(self, xs_hostname): ++ ProcessDialog.__init__(self, 'journal-restore') ++ self._resetup_information(xs_hostname) ++ ++ def _resetup_information(self, xs_hostname): ++ self._start_message = '%s %s.' % (_('Please wait, restoring journal content from'), xs_hostname) ++ ++ self._finished_message = _('The journal content has been restored.') ++ ++ self._title.set_markup('<big><b>%s</b></big>' % _('Restore')) ++ ++ self._message.set_text('%s %s.' % (_('Journal content will be restored from'), xs_hostname)) ++ +diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py +index 48e25ec..1356099 100644 +--- a/src/jarabe/journal/volumestoolbar.py ++++ b/src/jarabe/journal/volumestoolbar.py +@@ -30,13 +30,15 @@ + import tempfile + import shutil + ++from sugar.graphics.toolbutton import ToolButton + from sugar.graphics.radiotoolbutton import RadioToolButton ++from sugar.graphics.icon import Icon + from sugar.graphics.palette import Palette + from sugar.graphics.xocolor import XoColor + from sugar import env + + from jarabe.journal import model +-from jarabe.view.palettes import JournalVolumePalette ++from jarabe.view.palettes import JournalVolumePalette, JournalXSPalette + + + _JOURNAL_0_METADATA_DIR = '.olpc.store' +@@ -182,6 +184,7 @@ def __init__(self): + + self.connect('destroy', self.__destroy_cb) + ++ self.setup_xs_button() + gobject.idle_add(self._set_up_volumes) + + def __destroy_cb(self, widget): +@@ -189,6 +192,21 @@ def __destroy_cb(self, widget): + volume_monitor.disconnect(self._mount_added_hid) + volume_monitor.disconnect(self._mount_removed_hid) + ++ def setup_xs_button(self): ++ client = gconf.client_get_default() ++ backup_url = client.get_string('/desktop/sugar/backup_url') ++ ++ if backup_url: ++ xs_button = XSButton() ++ xs_button.set_palette(JournalXSPalette(backup_url)) ++ #xs_button.props.group = self._volume_buttons[0] ++ xs_button.show() ++ ++ self._volume_buttons.append(xs_button) ++ position = len(self._volume_buttons) - 1 ++ self.insert(xs_button, position) ++ self.show() ++ + def _set_up_volumes(self): + self._set_up_documents_button() + +@@ -260,8 +278,9 @@ def __unmount_cb(self, source, result): + def _get_button_for_mount(self, mount): + mount_point = mount.get_root().get_path() + for button in self.get_children(): +- if button.mount_point == mount_point: +- return button ++ if type(button) == VolumeButton and \ ++ button.mount_point == mount_point: ++ return button + logging.error('Couldnt find button with mount_point %r', mount_point) + return None + +@@ -402,3 +421,17 @@ def __init__(self, documents_path): + client = gconf.client_get_default() + color = XoColor(client.get_string('/desktop/sugar/user/color')) + self.props.xo_color = color ++ ++ ++class XSButton(ToolButton): ++ def __init__(self): ++ ToolButton.__init__(self) ++ self.set_icon('school-server') ++ ++ def set_icon(self, icon_name): ++ client = gconf.client_get_default() ++ color = XoColor(client.get_string('/desktop/sugar/user/color')) ++ icon = Icon(icon_name=icon_name, xo_color=color, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) ++ icon.show() ++ ++ self.set_icon_widget(icon) +diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py +index a9e3629..02648b7 100644 +--- a/src/jarabe/view/palettes.py ++++ b/src/jarabe/view/palettes.py +@@ -33,7 +33,7 @@ + from sugar.graphics.xocolor import XoColor + from sugar.activity.i18n import pgettext + +-from jarabe.journal.processdialog import VolumeBackupDialog, VolumeRestoreDialog ++from jarabe.journal.processdialog import VolumeBackupDialog, VolumeRestoreDialog, XSBackupDialog, XSRestoreDialog + from jarabe.model import shell + from jarabe.view.viewsource import setup_view_source + from jarabe.journal import misc +@@ -297,3 +297,42 @@ def __journal_backup_activate_cb(self, menu_item, mount_path): + def __journal_restore_activate_cb(self, menu_item, mount_path): + dialog = VolumeRestoreDialog(mount_path) + dialog.show() ++ ++ ++class JournalXSPalette(Palette): ++ def __init__(self, xs_hostname): ++ Palette.__init__(self, _('School Server')) ++ ++ self.props.secondary_text = xs_hostname ++ ++ vbox = gtk.VBox() ++ self.set_content(vbox) ++ vbox.show() ++ ++ icon = Icon(icon_name='transfer-to', icon_size=gtk.ICON_SIZE_MENU) ++ icon.show() ++ ++ menu_item_journal_backup = MenuItem(_('Backup Journal')) ++ menu_item_journal_backup.set_image(icon) ++ menu_item_journal_backup.connect('activate', self.__journal_backup_activate_cb, xs_hostname) ++ menu_item_journal_backup.show() ++ ++ self.menu.append(menu_item_journal_backup) ++ ++ icon = Icon(icon_name='transfer-from', icon_size=gtk.ICON_SIZE_MENU) ++ icon.show() ++ ++ menu_item_journal_restore = MenuItem(_('Restore Journal')) ++ menu_item_journal_restore.set_image(icon) ++ menu_item_journal_restore.connect('activate', self.__journal_restore_activate_cb, xs_hostname) ++ menu_item_journal_restore.show() ++ ++ self.menu.append(menu_item_journal_restore) ++ ++ def __journal_backup_activate_cb(self, menu_item, xs_hostname): ++ dialog = XSBackupDialog(xs_hostname) ++ dialog.show() ++ ++ def __journal_restore_activate_cb(self, menu_item, xs_hostname): ++ dialog = XSRestoreDialog(xs_hostname) ++ dialog.show() +-- +1.7.6 + |