Source code for AttributeForm

import operator

[docs]class AttributeForm(object): """Saves attributes and assosiated gui widgets""" def __init__(self, attribute, comboBox=None, lineEdit=None, comboBoxText=None, label=None): """Constructor :param attribute: The name of the attribute in layer :type attribute: str :param comboBox: The associated comboBox :type comboBox: QComboBox :param lineEdit: The associated lineEdit :type lineEdit: QLineEdit :param comboBoxText: Alternative text for combobox :type comboBoxText: dict """ self.attribute = attribute self.comboBox = comboBox self.lineEdit = lineEdit self.label = label self.alt_comboboxText = comboBoxText self.opperatorDict = {u'=' : 'PropertyIsEqualTo', u'<' : 'PropertyIsLessThan', u'>' : 'PropertyIsGreaterThan', u'<=' : 'PropertyIsLessThanOrEqualTo', u'>=' : 'PropertyIsGreaterThanOrEqualTo'} #attribute.opperator(), attribute.valueReference(), attribute.value()
[docs] def opperator(self): """ :returns: the opperator for attriubutt qury :rtype: QString, None """ if self.comboBox is not None: if self.comboBox.currentText() in self.opperatorDict: return self.opperatorDict[self.comboBox.currentText()] else: return self.opperatorDict[u'='] else: return None
[docs] def valueReference(self): """Returns the objekt attribute :returns: name of object attribute in database :rtype: str """ return self.attribute
[docs] def value(self): """returns the value constraint, if alternative combobox is set, return that value, if lineedit, ruturn value freom line edit, else return from combobox :returns: the value constraint :rtype: str """ if self.alt_comboboxText is not None: return self.alt_comboboxText[self.comboBox.currentText()] elif self.lineEdit is not None: return self.lineEdit.text() elif self.comboBox is not None: return self.comboBox.currentText() else: return None
[docs] def setComboBox(self, comboBox): """Assigning comboBox :param comboBox: combobox assisiated to attribute :type comboBox: QComboBox """ self.comboBox = comboBox
[docs] def setLineEdit(self, lineEdit): """Assigning lineEdit :param lineEdit: Linedit assisiated to attribute :type lineEdit: QLineEdit """ self.lineEdit = lineEdit
[docs] def getComboBox(self): """ Returns the assosiated combobox widget :returns: returns the associated comboBox :rtype: QComboBox """ return self.comboBox
[docs] def getLineEdit(self): """Returns the assosiated lineEdit widget if any :returns: returns the associated lineEdit :rtype: QLineEdit """ return self.lineEdit
[docs] def getLabel(self): """Returns the assisiated label widget if any :returns: returns the associated label :rtype: QLabel """ return self.label
[docs] def getAttribute(self): """Returns the assosiated attriubte name :returns: returns the associated attribute name :rtype: str """ return self.attribute
[docs] def getComboBoxCurrentText(self): """Returns the assosoated combobox text :returns: returns the associated comboBox text, return None if no combobox is availeble :rtype: QString """ if self.comboBox is not None: if self.alt_comboboxText: #If AttributForm has alternative text, return alternative text return self.alt_comboboxText[self.comboBox.currentText()] return self.comboBox.currentText() return None
[docs] def getLineEditText(self): """Returns the lineEdit text :returns: returns the lineEdit text, return None if no lineEdit is availeble :rtype: QString """ if self.lineEdit is not None: return self.lineEdit.text() return None
[docs] def setLineEditText(self, string): """Sett text in AttributeForm lineEdit :param string: String to set in lineEdit :type string: str """ if self.lineEdit is not None: self.lineEdit.setText(string)
[docs] def valudeValid(self): """checks if the attribute is valid and search ready :returns: True if attrivute is valid, false if not :rtype: boolean """ if self.lineEdit is not None: if self.opperator() != 'PropertyIsEqualTo' and len(self.getLineEditText()) == 0: #opperator chosen, but no value print("IsValid 1") return False elif self.opperator() == 'PropertyIsEqualTo' and len(self.getLineEditText()) > 0: #value chosen, bu no opperator print("IsValid 2") return False elif len(self.getLineEditText()) > 0: print("len: {}".format(len(self.getLineEditText()))) print("IsValid 3") return self.is_number(self.getLineEditText()) #Valu not a number else: print("attribute is valid") return True
[docs] def reset(self): """Resets form to defult""" if self.comboBox: self.comboBox.setCurrentIndex(0) if self.lineEdit: self.lineEdit.setText("")
[docs] def is_number(self, s): """Sett text in AttributeForm lineEdit :param s: string to be change for being a number :type s: str :returns: tru if s is number, false if s in not a number :rtype: boolean """ print("s: {}".format(s)) print("type: {}".format(type(s))) try: float(s) return True except ValueError: return False