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')
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
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)
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')
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)
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)