def setter(w, val): order_map = {x: i for i, x in enumerate(val)} items = list(w.defaults) limit = len(items) items.sort(key=lambda x: order_map.get(x, limit)) w.clear() for x in items: i = QListWidgetItem(w) i.setText(x) i.setFlags(i.flags() | Qt.ItemIsDragEnabled)
def setter(w, val): order_map = {x:i for i, x in enumerate(val)} items = list(w.defaults) limit = len(items) items.sort(key=lambda x:order_map.get(x, limit)) w.clear() for x in items: i = QListWidgetItem(w) i.setText(x) i.setFlags(i.flags() | Qt.ItemIsDragEnabled)
def display(self, statsView): """ Display the statistics in the listview widget 'statsView' """ # Subtract singlets from total number of atoms self.num_atoms = self.natoms - self.nsinglets item = QListWidgetItem() item.setText("Measure Dihedral:" + str(self.num_mdihedral)) statsView.addItem(item) item = QListWidgetItem() item.setText("Measure Angle:" + str(self.num_mangle)) statsView.addItem(item) item = QListWidgetItem() item.setText("Measure Distance:" + str(self.num_mdistance)) statsView.addItem(item) item = QListWidgetItem() item.setText("Grid Plane:" + str(self.num_gridplane)) statsView.addItem(item) item = QListWidgetItem() item.setText("ESP Image:" + str(self.num_espimage)) statsView.addItem(item) item = QListWidgetItem() if sys.platform == "win32": item.setText("PC GAMESS:" + str(self.ngamess)) else: item.setText("GAMESS:" + str(self.ngamess)) statsView.addItem(item) item = QListWidgetItem() item.setText("Thermometers:" + str(self.nthermos)) statsView.addItem(item) item = QListWidgetItem() item.setText("Thermostats:" + str(self.nstats)) statsView.addItem(item) item = QListWidgetItem() item.setText("Anchors:" + str(self.nanchors)) statsView.addItem(item) item = QListWidgetItem() item.setText("Linear Motors:" + str(self.nlmotors)) statsView.addItem(item) item = QListWidgetItem() item.setText("Rotary Motors:" + str(self.nrmotors)) statsView.addItem(item) item = QListWidgetItem() item.setText("Groups:" + str(self.ngroups)) statsView.addItem(item) item = QListWidgetItem() item.setText("Bondpoints:" + str(self.nsinglets)) statsView.addItem(item) item = QListWidgetItem() item.setText("Atoms:" + str(self.num_atoms)) statsView.addItem(item) item = QListWidgetItem() item.setText("Chunks:" + str(self.nchunks)) statsView.addItem(item)
def accept(self): col = unicode(self.column_name_box.text()).strip() if not col: return self.simple_error('', _('No lookup name was provided')) if col.startswith('#'): col = col[1:] if re.match('^\w*$', col) is None or not col[0].isalpha() or col.lower() != col: return self.simple_error( '', _('The lookup name must contain only ' 'lower case letters, digits and underscores, and start with a letter' )) if col.endswith('_index'): return self.simple_error( '', _('Lookup names cannot end with _index, ' 'because these names are reserved for the index of a series column.' )) col_heading = unicode(self.column_heading_box.text()).strip() col_type = self.column_types[ self.column_type_box.currentIndex()]['datatype'] if col_type[0] == '*': col_type = col_type[1:] is_multiple = True else: is_multiple = False if not col_heading: return self.simple_error('', _('No column heading was provided')) db = self.parent.gui.library_view.model().db key = db.field_metadata.custom_field_prefix + col bad_col = False if key in self.parent.custcols: if not self.editing_col or \ self.parent.custcols[key]['colnum'] != self.orig_column_number: bad_col = True if bad_col: return self.simple_error( '', _('The lookup name %s is already used') % col) bad_head = False for t in self.parent.custcols: if self.parent.custcols[t]['name'] == col_heading: if not self.editing_col or \ self.parent.custcols[t]['colnum'] != self.orig_column_number: bad_head = True for t in self.standard_colheads: if self.standard_colheads[t] == col_heading: bad_head = True if bad_head: return self.simple_error( '', _('The heading %s is already used') % col_heading) display_dict = {} if col_type == 'datetime': if unicode(self.date_format_box.text()).strip(): display_dict = { 'date_format': unicode(self.date_format_box.text()).strip() } else: display_dict = {'date_format': None} elif col_type == 'composite': if not unicode(self.composite_box.text()).strip(): return self.simple_error( '', _('You must enter a template for' ' composite columns')) display_dict = { 'composite_template': unicode(self.composite_box.text()).strip(), 'composite_sort': ['text', 'number', 'date', 'bool'][self.composite_sort_by.currentIndex()], 'make_category': self.composite_make_category.isChecked(), 'contains_html': self.composite_contains_html.isChecked(), } elif col_type == 'enumeration': if not unicode(self.enum_box.text()).strip(): return self.simple_error( '', _('You must enter at least one' ' value for enumeration columns')) l = [ v.strip() for v in unicode(self.enum_box.text()).split(',') if v.strip() ] l_lower = [v.lower() for v in l] for i, v in enumerate(l_lower): if v in l_lower[i + 1:]: return self.simple_error( '', _('The value "{0}" is in the ' 'list more than once, perhaps with different case'). format(l[i])) c = unicode(self.enum_colors.text()) if c: c = [ v.strip() for v in unicode(self.enum_colors.text()).split(',') ] else: c = [] if len(c) != 0 and len(c) != len(l): return self.simple_error( '', _('The colors box must be empty or ' 'contain the same number of items as the value box')) for tc in c: if tc not in QColor.colorNames(): return self.simple_error( '', _('The color {0} is unknown').format(tc)) display_dict = {'enum_values': l, 'enum_colors': c} elif col_type == 'text' and is_multiple: display_dict = {'is_names': self.is_names.isChecked()} elif col_type in ['int', 'float']: if unicode(self.number_format_box.text()).strip(): display_dict = { 'number_format': unicode(self.number_format_box.text()).strip() } else: display_dict = {'number_format': None} if col_type in ['text', 'composite', 'enumeration' ] and not is_multiple: display_dict['use_decorations'] = self.use_decorations.checkState() if not self.editing_col: self.parent.custcols[key] = { 'label': col, 'name': col_heading, 'datatype': col_type, 'display': display_dict, 'normalized': None, 'colnum': None, 'is_multiple': is_multiple, } item = QListWidgetItem(col_heading, self.parent.opt_columns) item.setData(Qt.UserRole, QVariant(key)) item.setData(Qt.DecorationRole, QVariant(QIcon(I('column.png')))) item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsUserCheckable | Qt.ItemIsSelectable) item.setCheckState(Qt.Checked) else: idx = self.parent.opt_columns.currentRow() item = self.parent.opt_columns.item(idx) item.setText(col_heading) self.parent.custcols[self.orig_column_name]['label'] = col self.parent.custcols[self.orig_column_name]['name'] = col_heading self.parent.custcols[self.orig_column_name]['display'].update( display_dict) self.parent.custcols[self.orig_column_name]['*edited'] = True self.parent.custcols[self.orig_column_name]['*must_restart'] = True QDialog.accept(self)
def accept(self): col = unicode(self.column_name_box.text()).strip() if not col: return self.simple_error('', _('No lookup name was provided')) if col.startswith('#'): col = col[1:] if re.match('^\w*$', col) is None or not col[0].isalpha() or col.lower() != col: return self.simple_error('', _('The lookup name must contain only ' 'lower case letters, digits and underscores, and start with a letter')) if col.endswith('_index'): return self.simple_error('', _('Lookup names cannot end with _index, ' 'because these names are reserved for the index of a series column.')) col_heading = unicode(self.column_heading_box.text()).strip() col_type = self.column_types[self.column_type_box.currentIndex()]['datatype'] if col_type[0] == '*': col_type = col_type[1:] is_multiple = True else: is_multiple = False if not col_heading: return self.simple_error('', _('No column heading was provided')) db = self.parent.gui.library_view.model().db key = db.field_metadata.custom_field_prefix+col bad_col = False if key in self.parent.custcols: if not self.editing_col or \ self.parent.custcols[key]['colnum'] != self.orig_column_number: bad_col = True if bad_col: return self.simple_error('', _('The lookup name %s is already used')%col) bad_head = False for t in self.parent.custcols: if self.parent.custcols[t]['name'] == col_heading: if not self.editing_col or \ self.parent.custcols[t]['colnum'] != self.orig_column_number: bad_head = True for t in self.standard_colheads: if self.standard_colheads[t] == col_heading: bad_head = True if bad_head: return self.simple_error('', _('The heading %s is already used')%col_heading) display_dict = {} if col_type == 'datetime': if unicode(self.date_format_box.text()).strip(): display_dict = {'date_format':unicode(self.date_format_box.text()).strip()} else: display_dict = {'date_format': None} elif col_type == 'composite': if not unicode(self.composite_box.text()).strip(): return self.simple_error('', _('You must enter a template for' ' composite columns')) display_dict = {'composite_template':unicode(self.composite_box.text()).strip(), 'composite_sort': ['text', 'number', 'date', 'bool'] [self.composite_sort_by.currentIndex()], 'make_category': self.composite_make_category.isChecked(), 'contains_html': self.composite_contains_html.isChecked(), } elif col_type == 'enumeration': if not unicode(self.enum_box.text()).strip(): return self.simple_error('', _('You must enter at least one' ' value for enumeration columns')) l = [v.strip() for v in unicode(self.enum_box.text()).split(',') if v.strip()] l_lower = [v.lower() for v in l] for i,v in enumerate(l_lower): if v in l_lower[i+1:]: return self.simple_error('', _('The value "{0}" is in the ' 'list more than once, perhaps with different case').format(l[i])) c = unicode(self.enum_colors.text()) if c: c = [v.strip() for v in unicode(self.enum_colors.text()).split(',')] else: c = [] if len(c) != 0 and len(c) != len(l): return self.simple_error('', _('The colors box must be empty or ' 'contain the same number of items as the value box')) for tc in c: if tc not in QColor.colorNames(): return self.simple_error('', _('The color {0} is unknown').format(tc)) display_dict = {'enum_values': l, 'enum_colors': c} elif col_type == 'text' and is_multiple: display_dict = {'is_names': self.is_names.isChecked()} elif col_type in ['int', 'float']: if unicode(self.number_format_box.text()).strip(): display_dict = {'number_format':unicode(self.number_format_box.text()).strip()} else: display_dict = {'number_format': None} if col_type in ['text', 'composite', 'enumeration'] and not is_multiple: display_dict['use_decorations'] = self.use_decorations.checkState() if not self.editing_col: self.parent.custcols[key] = { 'label':col, 'name':col_heading, 'datatype':col_type, 'display':display_dict, 'normalized':None, 'colnum':None, 'is_multiple':is_multiple, } item = QListWidgetItem(col_heading, self.parent.opt_columns) item.setData(Qt.UserRole, QVariant(key)) item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsUserCheckable|Qt.ItemIsSelectable) item.setCheckState(Qt.Checked) else: idx = self.parent.opt_columns.currentRow() item = self.parent.opt_columns.item(idx) item.setText(col_heading) self.parent.custcols[self.orig_column_name]['label'] = col self.parent.custcols[self.orig_column_name]['name'] = col_heading self.parent.custcols[self.orig_column_name]['display'].update(display_dict) self.parent.custcols[self.orig_column_name]['*edited'] = True self.parent.custcols[self.orig_column_name]['*must_restart'] = True QDialog.accept(self)
def accept(self): col = unicode(self.column_name_box.text()).strip() if not col: return self.simple_error("", _("No lookup name was provided")) if col.startswith("#"): col = col[1:] if re.match("^\w*$", col) is None or not col[0].isalpha() or col.lower() != col: return self.simple_error( "", _( "The lookup name must contain only " "lower case letters, digits and underscores, and start with a letter" ), ) if col.endswith("_index"): return self.simple_error( "", _( "Lookup names cannot end with _index, " "because these names are reserved for the index of a series column." ), ) col_heading = unicode(self.column_heading_box.text()).strip() col_type = self.column_types[self.column_type_box.currentIndex()]["datatype"] if col_type[0] == "*": col_type = col_type[1:] is_multiple = True else: is_multiple = False if not col_heading: return self.simple_error("", _("No column heading was provided")) db = self.parent.gui.library_view.model().db key = db.field_metadata.custom_field_prefix + col bad_col = False if key in self.parent.custcols: if not self.editing_col or self.parent.custcols[key]["colnum"] != self.orig_column_number: bad_col = True if bad_col: return self.simple_error("", _("The lookup name %s is already used") % col) bad_head = False for t in self.parent.custcols: if self.parent.custcols[t]["name"] == col_heading: if not self.editing_col or self.parent.custcols[t]["colnum"] != self.orig_column_number: bad_head = True for t in self.standard_colheads: if self.standard_colheads[t] == col_heading: bad_head = True if bad_head: return self.simple_error("", _("The heading %s is already used") % col_heading) display_dict = {} if col_type == "datetime": if unicode(self.date_format_box.text()).strip(): display_dict = {"date_format": unicode(self.date_format_box.text()).strip()} else: display_dict = {"date_format": None} elif col_type == "composite": if not unicode(self.composite_box.text()).strip(): return self.simple_error("", _("You must enter a template for" " composite columns")) display_dict = { "composite_template": unicode(self.composite_box.text()).strip(), "composite_sort": ["text", "number", "date", "bool"][self.composite_sort_by.currentIndex()], "make_category": self.composite_make_category.isChecked(), "contains_html": self.composite_contains_html.isChecked(), } elif col_type == "enumeration": if not unicode(self.enum_box.text()).strip(): return self.simple_error("", _("You must enter at least one" " value for enumeration columns")) l = [v.strip() for v in unicode(self.enum_box.text()).split(",") if v.strip()] l_lower = [v.lower() for v in l] for i, v in enumerate(l_lower): if v in l_lower[i + 1 :]: return self.simple_error( "", _('The value "{0}" is in the ' "list more than once, perhaps with different case").format(l[i]), ) c = unicode(self.enum_colors.text()) if c: c = [v.strip() for v in unicode(self.enum_colors.text()).split(",")] else: c = [] if len(c) != 0 and len(c) != len(l): return self.simple_error( "", _("The colors box must be empty or " "contain the same number of items as the value box") ) for tc in c: if tc not in QColor.colorNames(): return self.simple_error("", _("The color {0} is unknown").format(tc)) display_dict = {"enum_values": l, "enum_colors": c} elif col_type == "text" and is_multiple: display_dict = {"is_names": self.is_names.isChecked()} elif col_type in ["int", "float"]: if unicode(self.number_format_box.text()).strip(): display_dict = {"number_format": unicode(self.number_format_box.text()).strip()} else: display_dict = {"number_format": None} if col_type in ["text", "composite", "enumeration"] and not is_multiple: display_dict["use_decorations"] = self.use_decorations.checkState() if not self.editing_col: self.parent.custcols[key] = { "label": col, "name": col_heading, "datatype": col_type, "display": display_dict, "normalized": None, "colnum": None, "is_multiple": is_multiple, } item = QListWidgetItem(col_heading, self.parent.opt_columns) item.setData(Qt.UserRole, QVariant(key)) item.setData(Qt.DecorationRole, QVariant(QIcon(I("column.png")))) item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsUserCheckable | Qt.ItemIsSelectable) item.setCheckState(Qt.Checked) else: idx = self.parent.opt_columns.currentRow() item = self.parent.opt_columns.item(idx) item.setText(col_heading) self.parent.custcols[self.orig_column_name]["label"] = col self.parent.custcols[self.orig_column_name]["name"] = col_heading self.parent.custcols[self.orig_column_name]["display"].update(display_dict) self.parent.custcols[self.orig_column_name]["*edited"] = True self.parent.custcols[self.orig_column_name]["*must_restart"] = True QDialog.accept(self)