Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
This commit is contained in:
+12
-12
@@ -64,11 +64,11 @@ class ActivityToolbar(gtk.Toolbar):
|
||||
self.insert(separator, -1)
|
||||
separator.show()
|
||||
|
||||
self.save = ToolButton('document-save')
|
||||
self.save.set_tooltip(_('Save'))
|
||||
self.save.connect('clicked', self._save_clicked_cb)
|
||||
self.insert(self.save, -1)
|
||||
self.save.show()
|
||||
self.keep = ToolButton('document-save')
|
||||
self.keep.set_tooltip(_('Keep'))
|
||||
self.keep.connect('clicked', self._keep_clicked_cb)
|
||||
self.insert(self.keep, -1)
|
||||
self.keep.show()
|
||||
|
||||
self.share = ToolButton('stock-share-mesh')
|
||||
self.share.set_tooltip(_('Share'))
|
||||
@@ -83,21 +83,21 @@ class ActivityToolbar(gtk.Toolbar):
|
||||
self.insert(separator, -1)
|
||||
separator.show()
|
||||
|
||||
self.close = ToolButton('window-close')
|
||||
self.close.set_tooltip(_('Close'))
|
||||
self.close.connect('clicked', self._close_clicked_cb)
|
||||
self.insert(self.close, -1)
|
||||
self.close.show()
|
||||
self.stop = ToolButton('activity-stop')
|
||||
self.stop.set_tooltip(_('Stop'))
|
||||
self.stop.connect('clicked', self._stop_clicked_cb)
|
||||
self.insert(self.stop, -1)
|
||||
self.stop.show()
|
||||
|
||||
self._update_title_sid = None
|
||||
|
||||
def _share_clicked_cb(self, button):
|
||||
self._activity.share()
|
||||
|
||||
def _save_clicked_cb(self, button):
|
||||
def _keep_clicked_cb(self, button):
|
||||
self._activity.save()
|
||||
|
||||
def _close_clicked_cb(self, button):
|
||||
def _stop_clicked_cb(self, button):
|
||||
self._activity.close()
|
||||
self._activity.destroy()
|
||||
|
||||
|
||||
@@ -50,26 +50,22 @@ class _DefaultFileList(list):
|
||||
self.append(os.path.join('activity', name))
|
||||
|
||||
self.append('activity/activity.info')
|
||||
self.append('setup.py')
|
||||
|
||||
if os.path.isfile(_get_source_path('NEWS')):
|
||||
self.append('NEWS')
|
||||
|
||||
class _ManifestFileList(list):
|
||||
def __init__(self, manifest=None):
|
||||
class _ManifestFileList(_DefaultFileList):
|
||||
def __init__(self, manifest):
|
||||
_DefaultFileList.__init__(self)
|
||||
self.append(manifest)
|
||||
|
||||
f = open(manifest,'r')
|
||||
for line in f.readlines():
|
||||
stripped_line = line.strip()
|
||||
if stripped_line:
|
||||
if stripped_line and not stripped_line in self:
|
||||
self.append(stripped_line)
|
||||
f.close()
|
||||
|
||||
defaults = _DefaultFileList()
|
||||
for path in defaults:
|
||||
self.append(path)
|
||||
|
||||
def _extract_bundle(source_file, dest_dir):
|
||||
if not os.path.exists(dest_dir):
|
||||
os.mkdir(dest_dir)
|
||||
@@ -270,8 +266,8 @@ def cmd_release(bundle_name, manifest):
|
||||
sugar_news += '%s - %d\n\n' % (bundle_name, version)
|
||||
|
||||
f = open(news_path,'r')
|
||||
for line in f.readline():
|
||||
if len(line) > 0:
|
||||
for line in f.readlines():
|
||||
if len(line.strip()) > 0:
|
||||
sugar_news += line
|
||||
else:
|
||||
break
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
import logging
|
||||
|
||||
import dbus
|
||||
|
||||
_SHELL_SERVICE = "org.laptop.Shell"
|
||||
@@ -39,6 +41,11 @@ class ActivityRegistry(object):
|
||||
bus = dbus.SessionBus()
|
||||
bus_object = bus.get_object(_SHELL_SERVICE, _SHELL_PATH)
|
||||
self._registry = dbus.Interface(bus_object, _REGISTRY_IFACE)
|
||||
self._registry.connect_to_signal('ActivityAdded', self._activity_added_cb)
|
||||
|
||||
# Two caches fo saving some travel across dbus.
|
||||
self._service_name_to_activity_info = {}
|
||||
self._mime_type_to_activities = {}
|
||||
|
||||
def _convert_info_list(self, info_list):
|
||||
result = []
|
||||
@@ -49,16 +56,33 @@ class ActivityRegistry(object):
|
||||
return result
|
||||
|
||||
def get_activity(self, service_name):
|
||||
if self._service_name_to_activity_info.has_key(service_name):
|
||||
return self._service_name_to_activity_info[service_name]
|
||||
|
||||
info_dict = self._registry.GetActivity(service_name)
|
||||
return _activity_info_from_dict(info_dict)
|
||||
activity_info = _activity_info_from_dict(info_dict)
|
||||
|
||||
self._service_name_to_activity_info[service_name] = activity_info
|
||||
return activity_info
|
||||
|
||||
def find_activity(self, name):
|
||||
info_list = self._registry.FindActivity(name)
|
||||
return self._convert_info_list(info_list)
|
||||
|
||||
def get_activities_for_type(self, mime_type):
|
||||
if self._mime_type_to_activities.has_key(mime_type):
|
||||
return self._mime_type_to_activities[mime_type]
|
||||
|
||||
info_list = self._registry.GetActivitiesForType(mime_type)
|
||||
return self._convert_info_list(info_list)
|
||||
activities = self._convert_info_list(info_list)
|
||||
|
||||
self._mime_type_to_activities[mime_type] = activities
|
||||
return activities
|
||||
|
||||
def _activity_added_cb(self, bundle):
|
||||
logging.debug('ActivityRegistry._activity_added_cb: flushing caches')
|
||||
self._service_name_to_activity_info.clear()
|
||||
self._mime_type_to_activities.clear()
|
||||
|
||||
_registry = None
|
||||
|
||||
|
||||
+10
-2
@@ -18,6 +18,10 @@
|
||||
import gtk
|
||||
import pango
|
||||
|
||||
def _get_screen_dpi():
|
||||
xft_dpi = gtk.settings_get_default().get_property('gtk-xft-dpi')
|
||||
return float(xft_dpi / 1024)
|
||||
|
||||
def _compute_zoom_factor():
|
||||
return gtk.gdk.screen_width() / 1200.0
|
||||
|
||||
@@ -43,17 +47,21 @@ class Font(object):
|
||||
def get_pango_desc(self):
|
||||
return pango.FontDescription(self._desc)
|
||||
|
||||
_XO_DPI = 200.0
|
||||
|
||||
_FOCUS_LINE_WIDTH = 2
|
||||
_TAB_CURVATURE = 1
|
||||
|
||||
ZOOM_FACTOR = _compute_zoom_factor()
|
||||
|
||||
FONT_SIZE = _zoom(7 * 200 / 72.0)
|
||||
FONT_SIZE = _zoom(7 * _XO_DPI / _get_screen_dpi())
|
||||
FONT_NORMAL = Font('Bitstream Vera Sans %d' % FONT_SIZE)
|
||||
FONT_BOLD = Font('Bitstream Vera Sans bold %d' % FONT_SIZE)
|
||||
FONT_NORMAL_H = _compute_font_height(FONT_NORMAL)
|
||||
FONT_BOLD_H = _compute_font_height(FONT_BOLD)
|
||||
|
||||
TOOLBOX_SEPARATOR_HEIGHT = _zoom(9)
|
||||
TOOLBOX_HORIZONTAL_PADDING = _zoom(75)
|
||||
TOOLBOX_TAB_VBORDER = int((_zoom(36) - FONT_SIZE - _FOCUS_LINE_WIDTH) / 2)
|
||||
TOOLBOX_TAB_VBORDER = int((_zoom(36) - FONT_NORMAL_H - _FOCUS_LINE_WIDTH) / 2)
|
||||
TOOLBOX_TAB_HBORDER = _zoom(15) - _FOCUS_LINE_WIDTH - _TAB_CURVATURE
|
||||
TOOLBOX_TAB_LABEL_WIDTH = _zoom(150 - 15 * 2)
|
||||
|
||||
@@ -36,20 +36,39 @@ class ObjectType(object):
|
||||
self.name = name
|
||||
self.icon = icon
|
||||
self.mime_types = mime_types
|
||||
|
||||
self._type_id_to_type = {}
|
||||
self._mime_type_to_type = {}
|
||||
|
||||
class ObjectTypeRegistry(object):
|
||||
def __init__(self):
|
||||
bus = dbus.SessionBus()
|
||||
bus_object = bus.get_object(_SERVICE, _PATH)
|
||||
self._registry = dbus.Interface(bus_object, _IFACE)
|
||||
|
||||
# Two caches fo saving some travel across dbus.
|
||||
self._type_id_to_type = {}
|
||||
self._mime_type_to_type = {}
|
||||
|
||||
def get_type(self, type_id):
|
||||
if self._type_id_to_type.has_key(type_id):
|
||||
return self._type_id_to_type[type_id]
|
||||
|
||||
type_dict = self._registry.GetType(type_id)
|
||||
return _object_type_from_dict(type_dict)
|
||||
object_type = _object_type_from_dict(type_dict)
|
||||
|
||||
self._type_id_to_type[type_id] = object_type
|
||||
return object_type
|
||||
|
||||
def get_type_for_mime(self, mime_type):
|
||||
if self._mime_type_to_type.has_key(mime_type):
|
||||
return self._mime_type_to_type[mime_type]
|
||||
|
||||
type_dict = self._registry.GetTypeForMIME(mime_type)
|
||||
return _object_type_from_dict(type_dict)
|
||||
object_type = _object_type_from_dict(type_dict)
|
||||
|
||||
self._mime_type_to_type[mime_type] = object_type
|
||||
return object_type
|
||||
|
||||
_registry = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user