Merge branch 'master' of github.com:sugarlabs/sugar-toolkit-gtk3
This commit is contained in:
commit
650c943c87
@ -33,10 +33,49 @@ J_DBUS_SERVICE = 'org.laptop.Journal'
|
|||||||
J_DBUS_INTERFACE = 'org.laptop.Journal'
|
J_DBUS_INTERFACE = 'org.laptop.Journal'
|
||||||
J_DBUS_PATH = '/org/laptop/Journal'
|
J_DBUS_PATH = '/org/laptop/Journal'
|
||||||
|
|
||||||
|
FILTER_TYPE_MIME_BY_ACTIVITY = 'mime_by_activity'
|
||||||
|
FILTER_TYPE_GENERIC_MIME = 'generic_mime'
|
||||||
|
FILTER_TYPE_ACTIVITY = 'activity'
|
||||||
|
|
||||||
|
|
||||||
class ObjectChooser(object):
|
class ObjectChooser(object):
|
||||||
|
|
||||||
def __init__(self, parent=None, what_filter=None):
|
def __init__(self, parent=None, what_filter=None, filter_type=None):
|
||||||
|
"""Initialise the ObjectChoser
|
||||||
|
|
||||||
|
parent -- the widget calling ObjectChooser
|
||||||
|
|
||||||
|
what_filter -- string
|
||||||
|
|
||||||
|
string should be an activity bundle_id or a generic mime
|
||||||
|
type as defined in mime.py used to determine which objects
|
||||||
|
will be presented in the object chooser
|
||||||
|
|
||||||
|
filter_type -- string
|
||||||
|
|
||||||
|
string should be one of [None, FILTER_TYPE_GENERIC_MIME,
|
||||||
|
FILTER_TYPE_ACTIVITY, FILTER_TYPE_MIME_BY_ACTIVITY]
|
||||||
|
|
||||||
|
If filter_type is None, the default behavior of the
|
||||||
|
what_filter is applied (for backward compatibility),
|
||||||
|
this option is DEPRECATED.
|
||||||
|
|
||||||
|
If filter_type is FILTER_TYPE_GENERIC_MIME, the
|
||||||
|
what_filter should be a generic mime type defined in
|
||||||
|
mime.py; the object chooser will filter based in the
|
||||||
|
'mime_type' metadata field.
|
||||||
|
|
||||||
|
If filter_type is FILTER_TYPE_ACTIVITY, the what_filter
|
||||||
|
should by an activity bundle_id; the object chooser
|
||||||
|
will filter based in the 'activity' metadata field.
|
||||||
|
|
||||||
|
If filter_type is FILTER_TYPE_MIME_BY_ACTIVITY, the
|
||||||
|
what_filter should be an activity bundle_id; the object
|
||||||
|
chooser will filter based on the 'mime_type' metadata
|
||||||
|
field and the mime types defined by the activity in the
|
||||||
|
activity.info file.
|
||||||
|
"""
|
||||||
|
|
||||||
if parent is None:
|
if parent is None:
|
||||||
parent_xid = 0
|
parent_xid = 0
|
||||||
elif hasattr(parent, 'get_window') and hasattr(parent.get_window(),
|
elif hasattr(parent, 'get_window') and hasattr(parent.get_window(),
|
||||||
@ -52,6 +91,15 @@ class ObjectChooser(object):
|
|||||||
self._chooser_id = None
|
self._chooser_id = None
|
||||||
self._response_code = Gtk.ResponseType.NONE
|
self._response_code = Gtk.ResponseType.NONE
|
||||||
self._what_filter = what_filter
|
self._what_filter = what_filter
|
||||||
|
if filter_type is not None:
|
||||||
|
# verify is one of the availables types
|
||||||
|
# add here more types if needed
|
||||||
|
if filter_type not in [FILTER_TYPE_MIME_BY_ACTIVITY,
|
||||||
|
FILTER_TYPE_GENERIC_MIME,
|
||||||
|
FILTER_TYPE_ACTIVITY]:
|
||||||
|
raise Exception('filter_type not implemented')
|
||||||
|
|
||||||
|
self._filter_type = filter_type
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self._object_id = None
|
self._object_id = None
|
||||||
@ -77,7 +125,8 @@ class ObjectChooser(object):
|
|||||||
else:
|
else:
|
||||||
what_filter = self._what_filter
|
what_filter = self._what_filter
|
||||||
|
|
||||||
self._chooser_id = journal.ChooseObject(self._parent_xid, what_filter)
|
self._chooser_id = journal.ChooseObjectWithFilter(
|
||||||
|
self._parent_xid, what_filter, self._filter_type)
|
||||||
|
|
||||||
Gdk.threads_leave()
|
Gdk.threads_leave()
|
||||||
try:
|
try:
|
||||||
|
Loading…
Reference in New Issue
Block a user