Example #1
0
 def __init__(self, **kwargs):
     kwargs['ParentEmissionThread'] = get_gui_thread()
     super(ListModel, self).__init__(**kwargs)
     self.register_signal('cell_toggled', 'cell_edited',
                          'selection_changed')
     self.list_types = kwargs.get('list_types', [str, str])
     self.column_names = kwargs.get('column_names', ['id', 'data'])
     self.column_order = kwargs.get(
         'column_order', [x for x in range(len(self.column_names))])
     self.columns_editable = kwargs.get('columns_editable', [])
     self.default_sort_column = kwargs.get('default_sort_column')
     if not self.default_sort_column:
         for i, key in enumerate(self.column_names):
             if 'name' in key.lower():
                 self.default_sort_column = i
                 break
     self.store = gtk.ListStore(*self.list_types)
     self.widget = kwargs.get('widget')
     self._init_widget()
     self.items = kwargs.get('items', {})
     self.iters = {}
     self.update(self.items)
     self.set_sort_column(self.default_sort_column)
     self.bind(current_selection=self._on_current_selection_set)
     self.Property = kwargs.get('Property')
Example #2
0
 def __init__(self, **kwargs):
     kwargs['ParentEmissionThread'] = get_gui_thread()
     super(PropertyListItem, self).__init__(**kwargs)
     self.parent = kwargs.get('parent')
     self.obj = self.parent.obj
     self.prop_name = kwargs.get('prop_name')
     self.column = kwargs.get('column')
     self.store = self.parent.store
     self.sorted_store = self.parent.sorted_store
     self.widget_signals = {}
     self.src_attr = None
     if self.prop_name in self.obj.Properties:
         self.Property = (self.obj, self.prop_name)
     else:
         self.src_attr = self.prop_name
Example #3
0
 def __init__(self, **kwargs):
     kwargs['ParentEmissionThread'] = get_gui_thread()
     super(PropertyListItem, self).__init__(**kwargs)
     self.parent = kwargs.get('parent')
     self.obj = self.parent.obj
     self.prop_name = kwargs.get('prop_name')
     self.column = kwargs.get('column')
     self.store = self.parent.store
     self.sorted_store = self.parent.sorted_store
     self.widget_signals = {}
     self.src_attr = None
     if self.prop_name in self.obj.Properties:
         self.Property = (self.obj, self.prop_name)
     else:
         self.src_attr = self.prop_name
Example #4
0
 def __init__(self, **kwargs):
     kwargs['ParentEmissionThread'] = get_gui_thread()
     super(PropertyListObj, self).__init__(**kwargs)
     self.parent = kwargs.get('parent')
     self.store = self.parent.store
     self.sorted_store = self.parent.sorted_store
     self.obj = kwargs.get('obj')
     self.items = {}
     for i, prop_name in enumerate(self.parent.prop_names):
         item = PropertyListItem(parent=self, prop_name=prop_name, column=i)
         self.items[prop_name] = item
     self.iter = self.store.append(self.build_row())
     #print self.store.get_path(self.iter)
     self.s_iter = self.sorted_store.convert_child_iter_to_iter(self.iter)
     for cells in self.parent.cells.itervalues():
         for column, cell in cells.iteritems():
             self._on_new_cell(**cell)
Example #5
0
 def __init__(self, **kwargs):
     kwargs['ParentEmissionThread'] = get_gui_thread()
     super(PropertyListObj, self).__init__(**kwargs)
     self.parent = kwargs.get('parent')
     self.store = self.parent.store
     self.sorted_store = self.parent.sorted_store
     self.obj = kwargs.get('obj')
     self.items = {}
     for i, prop_name in enumerate(self.parent.prop_names):
         item = PropertyListItem(parent=self, prop_name=prop_name, column=i)
         self.items[prop_name] = item
     self.iter = self.store.append(self.build_row())
     #print self.store.get_path(self.iter)
     self.s_iter = self.sorted_store.convert_child_iter_to_iter(self.iter)
     for cells in self.parent.cells.itervalues():
         for column, cell in cells.iteritems():
             self._on_new_cell(**cell)
Example #6
0
 def __init__(self, **kwargs):
     kwargs['ParentEmissionThread'] = get_gui_thread()
     super(ListModel, self).__init__(**kwargs)
     self.register_signal('cell_toggled', 'cell_edited', 'selection_changed')
     self.list_types = kwargs.get('list_types', [str, str])
     self.column_names = kwargs.get('column_names', ['id', 'data'])
     self.column_order = kwargs.get('column_order', [x for x in range(len(self.column_names))])
     self.columns_editable = kwargs.get('columns_editable', [])
     self.default_sort_column = kwargs.get('default_sort_column')
     if not self.default_sort_column:
         for i, key in enumerate(self.column_names):
             if 'name' in key.lower():
                 self.default_sort_column = i
                 break
     self.store = gtk.ListStore(*self.list_types)
     self.widget = kwargs.get('widget')
     self._init_widget()
     self.items = kwargs.get('items', {})
     self.iters = {}
     self.update(self.items)
     self.set_sort_column(self.default_sort_column)
     self.bind(current_selection=self._on_current_selection_set)
     self.Property = kwargs.get('Property')
Example #7
0
    def __init__(self, **kwargs):
        kwargs['ParentEmissionThread'] = get_gui_thread()
        super(PropertyListModel, self).__init__(**kwargs)
        self.register_signal('new_cell', 'obj_added', 'obj_removed')
        self.child_group = kwargs.get('child_group')
        self.used_classes = kwargs.get('used_classes')
        model_obj = None
        if self.child_group is not None:
            if len(self.child_group):
                if self.used_classes is not None:
                    for obj in self.child_group.itervalues():
                        if obj.__class__ in self.used_classes:
                            model_obj = obj
                            break
                else:
                    model_obj = self.child_group.values()[0]
            elif self.child_group.child_class:
                try:
                    model_obj = self.child_group.child_class()
                except:
                    s = traceback.format_exc()
                    self.LOG.warning(
                        s + '\nPropertyListModel could not build model_obj:\n')
                    model_obj = None
        if not model_obj:
            model_obj = kwargs.get('model_obj')
        self.prop_names = kwargs.get('property_names')
        if not self.prop_names:
            self.prop_names = list(model_obj.SettingsPropKeys)
        self.column_names = kwargs.get('column_names', self.prop_names[:])
        self.column_types = kwargs.get('column_types')
        self.columns_editable = kwargs.get('columns_editable')
        self.default_sort_prop = kwargs.get('default_sort_prop')
        self.key_attr = kwargs.get('key_attr')
        for i, prop in enumerate(self.prop_names):
            name = self.column_names[i]
            if prop == name:
                name = ' '.join(name.split('_')).title()
                self.column_names[i] = name
        if not self.columns_editable:
            self.columns_editable = getattr(model_obj, 'SettingsPropKeys', [])
        if not self.column_types:
            props = [model_obj.Properties[key] for key in self.prop_names]
            self.column_types = [prop.type for prop in props]
        #print 'propnames: ', self.prop_names
        if self.key_attr is None and self.prop_names[0] not in key_attrs:
            for attr in key_attrs:
                if model_obj and hasattr(model_obj, attr):
                    self.prop_names.insert(0, attr)
                    self.column_names.insert(0, attr)
                    prop = model_obj.Properties.get(attr)
                    if prop is not None:
                        col_type = prop.type
                    else:
                        col_type = type(getattr(model_obj, attr))
                    self.column_types.insert(0, col_type)
                    self.key_attr = attr
                    #print 'break?'
                    break
        #print 'propnames=%s, types=%s' % (self.prop_names, self.column_types)
        self.store = gtk.ListStore(*self.column_types)
        self.sorted_store = TreeModelSort(model=self.store)
        self.child_obj = {}
        self.child_iters = {}
        self.views = {}
        self.cells = {}

        if self.default_sort_prop is None:
            if 'Index' in self.prop_names:
                self.default_sort_prop = 'Index'
        self.set_sort_prop(self.default_sort_prop)

        if self.child_group:
            self.add_obj(*self.child_group.values())
            self.child_group.bind(child_update=self.on_child_group_update)
Example #8
0
 def __init__(self, **kwargs):
     kwargs['ParentEmissionThread'] = get_gui_thread()
     super(PropertyListModel, self).__init__(**kwargs)
     self.register_signal('new_cell', 'obj_added', 'obj_removed')
     self.child_group = kwargs.get('child_group')
     self.used_classes = kwargs.get('used_classes')
     model_obj = None
     if self.child_group is not None:
         if len(self.child_group):
             if self.used_classes is not None:
                 for obj in self.child_group.itervalues():
                     if obj.__class__ in self.used_classes:
                         model_obj = obj
                         break
             else:
                 model_obj = self.child_group.values()[0]
         elif self.child_group.child_class:
             try:
                 model_obj = self.child_group.child_class()
             except:
                 s = traceback.format_exc()
                 self.LOG.warning(s + '\nPropertyListModel could not build model_obj:\n')
                 model_obj = None
     if not model_obj:
         model_obj = kwargs.get('model_obj')
     self.prop_names = kwargs.get('property_names')
     if not self.prop_names:
         self.prop_names = list(model_obj.SettingsPropKeys)
     self.column_names = kwargs.get('column_names', self.prop_names[:])
     self.column_types = kwargs.get('column_types')
     self.columns_editable = kwargs.get('columns_editable')
     self.default_sort_prop = kwargs.get('default_sort_prop')
     self.key_attr = kwargs.get('key_attr')
     for i, prop in enumerate(self.prop_names):
         name = self.column_names[i]
         if prop == name:
             name = ' '.join(name.split('_')).title()
             self.column_names[i] = name
     if not self.columns_editable:
         self.columns_editable = getattr(model_obj, 'SettingsPropKeys', [])
     if not self.column_types:
         props = [model_obj.Properties[key] for key in self.prop_names]
         self.column_types = [prop.type for prop in props]
     #print 'propnames: ', self.prop_names
     if self.key_attr is None and self.prop_names[0] not in key_attrs:
         for attr in key_attrs:
             if model_obj and hasattr(model_obj, attr):
                 self.prop_names.insert(0, attr)
                 self.column_names.insert(0, attr)
                 prop = model_obj.Properties.get(attr)
                 if prop is not None:
                     col_type = prop.type
                 else:
                     col_type = type(getattr(model_obj, attr))
                 self.column_types.insert(0, col_type)
                 self.key_attr = attr
                 #print 'break?'
                 break
     #print 'propnames=%s, types=%s' % (self.prop_names, self.column_types)
     self.store = gtk.ListStore(*self.column_types)
     self.sorted_store = TreeModelSort(model=self.store)
     self.child_obj = {}
     self.child_iters = {}
     self.views = {}
     self.cells = {}
     
     if self.default_sort_prop is None:
         if 'Index' in self.prop_names:
             self.default_sort_prop = 'Index'
     self.set_sort_prop(self.default_sort_prop)
     
     if self.child_group:
         self.add_obj(*self.child_group.values())
         self.child_group.bind(child_update=self.on_child_group_update)