def addFieldDef(self,fieldDef, recover = None): self.defOrder = ['fieldName', 'fieldMap', 'fieldLabel', 'fieldType', 'fieldHint', 'fieldRequired', 'fieldDefault', 'fieldQtype', 'fieldWidget', 'fieldChoices','fieldAppearance','fieldReadOnly','fieldCalculation'] row = [] self.setIcon(QIcon(os.path.join(os.path.dirname(__file__),"field.png"))) if not 'fieldReadOnly' in fieldDef: fieldDef['fieldReadOnly'] = '' if not 'fieldCalculation' in fieldDef: fieldDef['fieldCalculation'] = '' if recover: #backup dict provided if recovering fields state for fdef in self.defOrder: if fdef == 'fieldName': sub_item = QStandardItem(None) elif fdef == 'fieldRequired': sub_item = QStandardItem(None) sub_item.setCheckable(True) if fieldDef['fieldRequired']: sub_item.setCheckState(Qt.Checked) else: sub_item.setCheckState(Qt.Unchecked) else: sub_item = QStandardItem(fieldDef[fdef]) row.append(sub_item) self.appendRow(row) self.setCheckable(True) if fieldDef['fieldEnabled']: self.setCheckState(Qt.Checked) else: self.setCheckState(Qt.Unchecked) else: fieldDef['fieldType'] = self.getODKType(fieldDef) if fieldDef['fieldType'] in appearanceDef.keys(): fieldDef['fieldAppearance'] = appearanceDef[fieldDef['fieldType']][0] else: fieldDef['fieldAppearance'] = 'default' for fdef in self.defOrder: if fdef == 'fieldName': sub_item = QStandardItem(None) elif fdef == 'fieldRequired': sub_item = QStandardItem(None) sub_item.setCheckable(True) if fieldDef['fieldRequired']: sub_item.setCheckState(Qt.Checked) else: sub_item.setCheckState(Qt.Unchecked) elif fdef == 'fieldChoices': sub_item = QStandardItem(json.dumps(fieldDef[fdef])) else: sub_item = QStandardItem(fieldDef[fdef] or '') sub_item.setDropEnabled(False) sub_item.setDragEnabled(False) row.append(sub_item) self.appendRow(row) self.setCheckable(True) if fieldDef['fieldEnabled']: self.setCheckState(Qt.Checked) else: self.setCheckState(Qt.Unchecked)
def addGroup(self, name = None, metadata = None): model = self.model() group_item = QStandardItem(name or 'New Group') group_item.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEditable) group_item.setEnabled(True) if metadata: group_item.setText('Metadata') group_item.setDropEnabled(True) group_item.setDragEnabled(True) group_item.setCheckable(True) group_item.setCheckState(Qt.Checked) group_item.setIcon(QIcon(os.path.join(os.path.dirname(__file__),"group.png"))) model.appendRow([group_item]) if not name: self.setCurrentIndex(model.indexFromItem(group_item)) return group_item
def scanLibDir ( self ) : # process directories sortFlags = QDir.Name filterFlags = ( QDir.AllDirs | QDir.NoDotAndDotDot ) fileList = self.libdir.entryInfoList ( filterFlags, sortFlags ) for f in fileList : item = QStandardItem ( f.fileName () ) item.setEditable ( False ) item.setDragEnabled ( False ) # set bold font for folders font = item.font() font.setBold ( True ) item.setFont ( font ) item.setWhatsThis ( 'folder' ) currparent = self.parentItem self.parentItem.appendRow ( item ) self.parentItem = item currlevel = self.liblevel # store current level self.liblevel = self.liblevel + f.fileName () + '/' self.libdir.cd ( f.fileName () ) self.scanLibDir () # recurcive call itself self.liblevel = currlevel # restore current level self.libdir.cdUp () self.parentItem = currparent # process XML files filterFlags = QDir.Files fileList = self.libdir.entryInfoList ( [ '*.xml' ], filterFlags, sortFlags ) for f in fileList : self.scanXmlNodes ( f.fileName () )