Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
This commit is contained in:
commit
ae1a07aee8
2
NEWS
2
NEWS
@ -1,3 +1,5 @@
|
|||||||
|
* #2909: Make python activities more tolerant to missing metadata properties. (tomeu)
|
||||||
|
* #2653: Add audio/wav and audio/x-wav as Audio objects. (tomeu)
|
||||||
* Support moving of data files written to the datastore using standard Activity
|
* Support moving of data files written to the datastore using standard Activity
|
||||||
write_file() API (dcbw)
|
write_file() API (dcbw)
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ class ObjectTypeRegistry(dbus.service.Object):
|
|||||||
['image/png', 'image/gif', 'image/jpeg'])
|
['image/png', 'image/gif', 'image/jpeg'])
|
||||||
|
|
||||||
self._add_primitive('Audio', _('Audio'), 'audio-x-generic',
|
self._add_primitive('Audio', _('Audio'), 'audio-x-generic',
|
||||||
['audio/ogg'])
|
['audio/ogg', 'audio/x-wav', 'audio/wav'])
|
||||||
|
|
||||||
self._add_primitive('Video', _('Video'), 'video-x-generic',
|
self._add_primitive('Video', _('Video'), 'video-x-generic',
|
||||||
['video/ogg', 'application/ogg'])
|
['video/ogg', 'application/ogg'])
|
||||||
|
@ -68,8 +68,7 @@ class ClipboardMenu(Palette):
|
|||||||
self._remove_item.show()
|
self._remove_item.show()
|
||||||
|
|
||||||
self._open_item = MenuItem(_('Open'))
|
self._open_item = MenuItem(_('Open'))
|
||||||
self._open_item_activate_sid = self._open_item.connect('activate',
|
self._open_item.connect('activate', self._open_item_activate_cb)
|
||||||
self._open_item_activate_cb)
|
|
||||||
self.menu.append(self._open_item)
|
self.menu.append(self._open_item)
|
||||||
self._open_item.show()
|
self._open_item.show()
|
||||||
|
|
||||||
@ -87,26 +86,20 @@ class ClipboardMenu(Palette):
|
|||||||
self._update_open_submenu()
|
self._update_open_submenu()
|
||||||
|
|
||||||
def _update_open_submenu(self):
|
def _update_open_submenu(self):
|
||||||
submenu = self._open_item.get_submenu()
|
logging.debug('_update_open_submenu: %r' % self._activities)
|
||||||
if submenu:
|
|
||||||
for item in submenu.get_children():
|
|
||||||
submenu.remove(item)
|
|
||||||
|
|
||||||
if self._activities is None or len(self._activities) <= 1:
|
if self._activities is None or len(self._activities) <= 1:
|
||||||
if self._open_item_activate_sid is None:
|
if self._open_item.get_submenu() is not None:
|
||||||
self._open_item_activate_sid = self._open_item.connect(
|
self._open_item.remove_submenu()
|
||||||
'activate',
|
|
||||||
self._open_item_activate_cb)
|
|
||||||
return
|
return
|
||||||
else:
|
|
||||||
if self._open_item_activate_sid is not None:
|
|
||||||
self._open_item.disconnect(self._open_item_activate_sid)
|
|
||||||
self._open_item_activate_sid = None
|
|
||||||
|
|
||||||
if not submenu:
|
submenu = self._open_item.get_submenu()
|
||||||
|
if submenu is None:
|
||||||
submenu = gtk.Menu()
|
submenu = gtk.Menu()
|
||||||
self._open_item.set_submenu(submenu)
|
self._open_item.set_submenu(submenu)
|
||||||
submenu.show()
|
submenu.show()
|
||||||
|
else:
|
||||||
|
for item in submenu.get_children():
|
||||||
|
submenu.remove(item)
|
||||||
|
|
||||||
for service_name in self._activities:
|
for service_name in self._activities:
|
||||||
registry = activity.get_registry()
|
registry = activity.get_registry()
|
||||||
@ -158,13 +151,15 @@ class ClipboardMenu(Palette):
|
|||||||
self._update_open_submenu()
|
self._update_open_submenu()
|
||||||
|
|
||||||
def _open_item_activate_cb(self, menu_item):
|
def _open_item_activate_cb(self, menu_item):
|
||||||
if self._percent < 100:
|
logging.debug('_open_item_activate_cb')
|
||||||
|
if self._percent < 100 or menu_item.get_submenu() is not None:
|
||||||
return
|
return
|
||||||
jobject = self._copy_to_journal()
|
jobject = self._copy_to_journal()
|
||||||
jobject.resume(self._activities[0])
|
jobject.resume(self._activities[0])
|
||||||
jobject.destroy()
|
jobject.destroy()
|
||||||
|
|
||||||
def _open_submenu_item_activate_cb(self, menu_item, service_name):
|
def _open_submenu_item_activate_cb(self, menu_item, service_name):
|
||||||
|
logging.debug('_open_submenu_item_activate_cb')
|
||||||
if self._percent < 100:
|
if self._percent < 100:
|
||||||
return
|
return
|
||||||
jobject = self._copy_to_journal()
|
jobject = self._copy_to_journal()
|
||||||
@ -176,6 +171,7 @@ class ClipboardMenu(Palette):
|
|||||||
cb_service.delete_object(self._object_id)
|
cb_service.delete_object(self._object_id)
|
||||||
|
|
||||||
def _journal_item_activate_cb(self, menu_item):
|
def _journal_item_activate_cb(self, menu_item):
|
||||||
|
logging.debug('_journal_item_activate_cb')
|
||||||
jobject = self._copy_to_journal()
|
jobject = self._copy_to_journal()
|
||||||
jobject.destroy()
|
jobject.destroy()
|
||||||
|
|
||||||
@ -186,9 +182,9 @@ class ClipboardMenu(Palette):
|
|||||||
format = mime.choose_most_significant(obj['FORMATS'])
|
format = mime.choose_most_significant(obj['FORMATS'])
|
||||||
data = cb_service.get_object_data(self._object_id, format)
|
data = cb_service.get_object_data(self._object_id, format)
|
||||||
|
|
||||||
|
transfer_ownership = False
|
||||||
if format == 'text/uri-list':
|
if format == 'text/uri-list':
|
||||||
file_path = urlparse.urlparse(data['DATA']).path
|
file_path = urlparse.urlparse(data['DATA']).path
|
||||||
mime_type = mime.get_for_file(file_path)
|
|
||||||
else:
|
else:
|
||||||
if data['ON_DISK']:
|
if data['ON_DISK']:
|
||||||
file_path = urlparse.urlparse(data['DATA']).path
|
file_path = urlparse.urlparse(data['DATA']).path
|
||||||
@ -198,7 +194,7 @@ class ClipboardMenu(Palette):
|
|||||||
os.write(f, data['DATA'])
|
os.write(f, data['DATA'])
|
||||||
finally:
|
finally:
|
||||||
os.close(f)
|
os.close(f)
|
||||||
mime_type = format
|
transfer_ownership = True
|
||||||
|
|
||||||
jobject = datastore.create()
|
jobject = datastore.create()
|
||||||
jobject.metadata['title'] = _('Clipboard object: %s.') % obj['NAME']
|
jobject.metadata['title'] = _('Clipboard object: %s.') % obj['NAME']
|
||||||
@ -206,9 +202,9 @@ class ClipboardMenu(Palette):
|
|||||||
jobject.metadata['buddies'] = ''
|
jobject.metadata['buddies'] = ''
|
||||||
jobject.metadata['preview'] = ''
|
jobject.metadata['preview'] = ''
|
||||||
jobject.metadata['icon-color'] = profile.get_color().to_string()
|
jobject.metadata['icon-color'] = profile.get_color().to_string()
|
||||||
jobject.metadata['mime_type'] = mime_type
|
jobject.metadata['mime_type'] = mime.get_for_file(file_path)
|
||||||
jobject.file_path = file_path
|
jobject.file_path = file_path
|
||||||
datastore.write(jobject)
|
datastore.write(jobject, transfer_ownership=transfer_ownership)
|
||||||
|
|
||||||
return jobject
|
return jobject
|
||||||
|
|
||||||
|
@ -284,6 +284,9 @@ class Activity(Window, gtk.Container):
|
|||||||
#del self._jobject.metadata['ctime']
|
#del self._jobject.metadata['ctime']
|
||||||
del self._jobject.metadata['mtime']
|
del self._jobject.metadata['mtime']
|
||||||
|
|
||||||
|
if not self._jobject.metadata.has_key('title'):
|
||||||
|
self._jobject.metadata['title'] = ''
|
||||||
|
|
||||||
try:
|
try:
|
||||||
share_scope = self._jobject.metadata['share-scope']
|
share_scope = self._jobject.metadata['share-scope']
|
||||||
title = self._jobject.metadata['title']
|
title = self._jobject.metadata['title']
|
||||||
|
@ -230,7 +230,7 @@ def cmd_genpot(bundle_name, manifest):
|
|||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
args = [ 'xgettext', '--join-existing', '--language=Python',
|
args = [ 'xgettext', '--join-existing', '--language=Python',
|
||||||
'--keyword=_', '--output=%s' % pot_file ]
|
'--keyword=_', '--add-comments=TRANS:', '--output=%s' % pot_file ]
|
||||||
|
|
||||||
args += python_files
|
args += python_files
|
||||||
retcode = subprocess.call(args)
|
retcode = subprocess.call(args)
|
||||||
|
@ -138,6 +138,8 @@ class DSObject(object):
|
|||||||
|
|
||||||
activityfactory.create(bundle.get_service_name())
|
activityfactory.create(bundle.get_service_name())
|
||||||
else:
|
else:
|
||||||
|
if not self.get_activities():
|
||||||
|
return
|
||||||
if service_name is None:
|
if service_name is None:
|
||||||
service_name = self.get_activities()[0].service_name
|
service_name = self.get_activities()[0].service_name
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user