Add filter_type optative parameter to objectchooser
Constants are defined to select the different filter_type values. A comment was added to document the use. Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
This commit is contained in:
		
							parent
							
								
									b3e4a7ea8d
								
							
						
					
					
						commit
						da3786d2fb
					
				@ -33,10 +33,49 @@ J_DBUS_SERVICE = 'org.laptop.Journal'
 | 
			
		||||
J_DBUS_INTERFACE = '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):
 | 
			
		||||
 | 
			
		||||
    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:
 | 
			
		||||
            parent_xid = 0
 | 
			
		||||
        elif hasattr(parent, 'get_window') and hasattr(parent.get_window(),
 | 
			
		||||
@ -52,6 +91,15 @@ class ObjectChooser(object):
 | 
			
		||||
        self._chooser_id = None
 | 
			
		||||
        self._response_code = Gtk.ResponseType.NONE
 | 
			
		||||
        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):
 | 
			
		||||
        self._object_id = None
 | 
			
		||||
@ -77,7 +125,8 @@ class ObjectChooser(object):
 | 
			
		||||
        else:
 | 
			
		||||
            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()
 | 
			
		||||
        try:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user