Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian <icarito@sugarlabs.org>2011-03-31 04:07:32 (GMT)
committer Sebastian <icarito@sugarlabs.org>2011-03-31 04:07:32 (GMT)
commit7694765522e9aa3d3f493fa6179674c726b305f7 (patch)
tree87610ba06f309842c7639005f012790779d0a398
parent9c7c2349ea443045a03855219bbb18e35c3a04e3 (diff)
Added ability to share all favorites.HEADmaster
-rw-r--r--FileShare.activity/FileShareActivity.py4
-rw-r--r--FileShare.activity/GuiView.py46
-rw-r--r--FileShare.activity/ShareFavorites.py33
3 files changed, 80 insertions, 3 deletions
diff --git a/FileShare.activity/FileShareActivity.py b/FileShare.activity/FileShareActivity.py
index dd4b244..7f544cf 100644
--- a/FileShare.activity/FileShareActivity.py
+++ b/FileShare.activity/FileShareActivity.py
@@ -117,10 +117,10 @@ class FileShareActivity(Activity):
if jabber_serv:
self.server_ip = jabber_serv
+
self.server_port= 14623
self.s_version = 0
-
# INITIALIZE GUI
################
self.set_title('File Share')
@@ -611,6 +611,6 @@ class FileShareActivity(Activity):
open(bundle_path, "wb").write(zip_file.read(fileName))
fi = FileInfo.share_load(filelist[key], True)
- self._addFileToUIList(fi.id, fi)
+ self.disp.guiHandler._addFileToUIList ( fi.id , fi)
zip_file.close()
diff --git a/FileShare.activity/GuiView.py b/FileShare.activity/GuiView.py
index cbf782b..c9dcb57 100644
--- a/FileShare.activity/GuiView.py
+++ b/FileShare.activity/GuiView.py
@@ -36,6 +36,44 @@ class GuiHandler():
self.treeview = tree
self.tb_alert = None
self.guiView = handle
+
+ def requestAddFavorites(self, widget, data=None):
+ _logger.info('Requesting to add all favorites')
+
+ from ShareFavorites import load_journal_table
+
+ favorites = load_journal_table()
+
+ for jobject in favorites:
+ self.show_throbber(True, _("Packaging Object") )
+ try:
+ file_obj = self.activity.build_file( jobject )
+ except InShareException:
+ self._alert(_("Object Not Added"), _("Object already shared"))
+ self.show_throbber( False )
+ next
+
+ # No problems continue
+ self.show_throbber( False )
+
+ # Add To UI
+ self._addFileToUIList( file_obj.id, file_obj )
+
+ # Register File with activity share list
+ self.activity._registerShareFile( file_obj.id, file_obj )
+
+ # Upload to server?
+ if data and data.has_key('upload'):
+ self.show_throbber(True, _("Uploading Object to server"))
+ def send():
+ try:
+ self.activity.send_file_to_server( file_obj.id, file_obj )
+ except FileUploadFailure:
+ self._alert( _("Failed to upload object") )
+ self._remFileFromUIList( file_obj.id )
+ self.activity.delete_file( file_obj.id )
+ self.show_throbber( False )
+ threading.Thread(target=send).start()
def requestAddFile(self, widget, data=None):
_logger.info('Requesting to add file')
@@ -302,13 +340,15 @@ class GuiView(gtk.ScrolledWindow):
self.action_buttons['add'] = ToolButton('fs_gtk-add')
self.action_buttons['add'].set_tooltip(_("Add Object"))
+ self.action_buttons['add_fav'] = ToolButton('emblem-favorite')
+ self.action_buttons['add_fav'].set_tooltip(_("Add Favorites"))
+
self.action_buttons['rem'] = ToolButton('fs_gtk-remove')
self.action_buttons['rem'].set_tooltip(_("Remove Object(s)"))
self.action_buttons['save'] = ToolButton('filesave')
self.action_buttons['save'].set_tooltip( _("Copy Object(s) to Journal") )
-
self.action_buttons['down'] = ToolButton('epiphany-download')
self.action_buttons['down'].set_tooltip( _('Download Object(s)') )
@@ -321,11 +361,13 @@ class GuiView(gtk.ScrolledWindow):
if self.activity.isServer:
self.action_buttons['add'].connect("clicked", self.guiHandler.requestAddFile, None)
+ self.action_buttons['add_fav'].connect("clicked", self.guiHandler.requestAddFavorites, None)
self.action_buttons['save'].connect("clicked", self.guiHandler.requestInsFile, None)
self.action_buttons['rem'].connect("clicked", self.guiHandler.requestRemFile, None)
self.action_buttons['server'].connect("clicked", self.guiHandler.switch_to_server, None)
self.action_bar.insert(self.action_buttons['add'], -1)
+ #self.action_bar.insert(self.action_buttons['add_fav'], -1)
self.action_bar.insert(self.action_buttons['save'], -1)
self.action_bar.insert(self.action_buttons['rem'], -1)
self.action_bar.insert(self.action_buttons['server'], -1)
@@ -345,9 +387,11 @@ class GuiView(gtk.ScrolledWindow):
if self.activity._mode == 'SERVER' and self.activity._user_permissions != 0:
self.action_buttons['add'].connect("clicked", self.guiHandler.requestAddFile, {'upload':True})
+ self.action_buttons['add_fav'].connect("clicked", self.guiHandler.requestAddFavorites, {'upload':True})
self.action_buttons['rem'].connect("clicked", self.guiHandler.requestRemFile, {'remove':True})
self.action_bar.insert(self.action_buttons['add'], -1)
+ self.action_bar.insert(self.action_buttons['add_fav'], -1)
self.action_bar.insert(self.action_buttons['rem'], -1)
if self.activity._user_permissions == 2:
diff --git a/FileShare.activity/ShareFavorites.py b/FileShare.activity/ShareFavorites.py
new file mode 100644
index 0000000..f5db68a
--- /dev/null
+++ b/FileShare.activity/ShareFavorites.py
@@ -0,0 +1,33 @@
+from sugar.datastore import datastore
+
+def load_journal_table():
+ """
+ Carga la metadata del Diario de Sugar
+ Retorna una lista de objetos de datastore
+ """
+ ds_mounts = datastore.mounts()
+ mountpoint_id = None
+ if len(ds_mounts) == 1 and ds_mounts[0]['id'] == 1:
+ query = { 'sorting':'timestamp', 'keep':'1' }
+ else:
+ # we're in sugar 0.82
+ query = { 'order_by':'-timestamp' }
+ for mountpoint in ds_mounts:
+ id = mountpoint['id']
+ uri = mountpoint['uri']
+ if uri.startswith('/home'):
+ mountpoint_id = id
+
+ if mountpoint_id is not None:
+ query['mountpoints'] = [ mountpoint_id ]
+
+ ds_objects, num_objects = datastore.find(
+ query, properties=['title_set_by_user','activity',
+ 'title', 'mime_type', 'mtime', 'share-scope','uid',
+ 'keep', 'tags', 'description'])
+
+ return ds_objects
+
+if __name__ == '__main__':
+ for obj in load_journal_table():
+ print obj.metadata.get_dictionary()['title']