def getPrpty(self, sProperty, default="NoEntry"): logMsg(self.__class__.__name__, log='all') if default == "NoEntry": return getattr(self, sProperty) else: return getattr(self, sProperty, default)
def loadData(self): logMsg(self.__class__.__name__, log='all') for sProperty, _ in self.__class__.propertiesDctItems: metaprpty = self.__metaProperties[sProperty] if metaprpty.isReadable(): setattr(self, metaprpty.name, metaprpty.read())
def launchAction(self, actionDct, checked): self.assertActionSelection() sActionMsg = "'{}'>'{}'".format(actionDct["menu"], actionDct["label"]) try: logMsg(u'# Action: {} #'.format(sActionMsg)) except Exception, e: logMsg(e, warning=True)
def __init__(self): self._writingValues_ = False self.__metaProperties = {} for sProperty, _ in self.__class__.propertiesDctItems: metaprpty = self.__class__.propertyFactoryClass(sProperty, self) setattr(self, metaprpty.name, metaprpty.defaultValue) self.__metaProperties[sProperty] = metaprpty logMsg(self.__class__.__name__, log='all')
def _writeAllValues(self, propertyNames=None): logMsg(self.__class__.__name__, log='all') sPropertyIter = self.__class__._iterPropertyArg(propertyNames) for sProperty in sPropertyIter: value = getattr(self, sProperty) bWriteOnly = False sSetFnc = "set" + upperFirst(sProperty) setFnc = getattr(self, sSetFnc, None) msg = u"Setting {0}.{1} to {2}( {3} ) using {4}".format( self, sProperty, type(value).__name__, toStr(value), setFnc if setFnc else "setPrpty") logMsg(msg, log="debug") bSuccess = False if setFnc: try: bSuccess = setFnc(value, writingAttrs=True) except TypeError: try: bSuccess = setFnc(value) except Exception, msg: logMsg(msg, warning=True) bWriteOnly = True else: bWriteOnly = True if bWriteOnly: metaprpty = self.__metaProperties[sProperty] if metaprpty.isWritable(): bSuccess = metaprpty.write(value) else: logMsg(u"<{}> Writing to non-writable property: {}.{} .". format(getCaller(), self, metaprpty.name), warning=True) bSuccess = True if not bSuccess: logMsg("Failed " + lowerFirst(msg), warning=True)
def _writeAllValues(self, propertyNames=None): logMsg(self.__class__.__name__, log='all') sPropertyIter = self.__class__._iterPropertyArg(propertyNames) for sProperty in sPropertyIter: value = getattr(self, sProperty) bWriteOnly = False sSetFnc = "set" + upperFirst(sProperty) setFnc = getattr(self, sSetFnc, None) msg = u"Setting {0}.{1} to {2}( {3} ) using {4}".format( self, sProperty, type(value).__name__, toStr(value), setFnc if setFnc else "setPrpty") logMsg(msg, log="debug") bSuccess = False if setFnc: try: bSuccess = setFnc(value, writingAttrs=True) except TypeError: try: bSuccess = setFnc(value) except Exception, msg: logMsg(msg , warning=True) bWriteOnly = True else: bWriteOnly = True if bWriteOnly: metaprpty = self.__metaProperties[sProperty] if metaprpty.isWritable(): bSuccess = metaprpty.write(value) else: logMsg(u"<{}> Writing to non-writable property: {}.{} ." .format(getCaller(), self, metaprpty.name), warning=True) bSuccess = True if not bSuccess: logMsg("Failed " + lowerFirst(msg), warning=True)
def createInputDataUI(self, parentWidget, **kwargs): cls = self.__class__ logMsg(cls.__name__, log='all') sIgnorePrpty = kwargs.pop("ignoreInputData", []) sIgnorePrptyList = argToTuple(sIgnorePrpty) inputWdgItems = [] for sProperty, _ in cls.propertiesDctItems: if sProperty in sIgnorePrptyList: continue metaprpty = self.__metaProperties[sProperty] if metaprpty.isInput(): inputWdg = metaprpty.createEditorWidget(parentWidget) inputWdgItems.append((metaprpty.name, {"widget": inputWdg})) return inputWdgItems
def createInputDataUI(self, parentWidget, **kwargs): cls = self.__class__ logMsg(cls.__name__, log='all') sIgnorePrpty = kwargs.pop("ignoreInputData", []) sIgnorePrptyList = argToTuple(sIgnorePrpty) inputWdgItems = [] for sProperty, _ in cls.propertiesDctItems: if sProperty in sIgnorePrptyList: continue metaprpty = self.__metaProperties[sProperty] if metaprpty.isInput(): inputWdg = metaprpty.createEditorWidget(parentWidget) inputWdgItems.append((metaprpty.name , { "widget" : inputWdg })) return inputWdgItems
def initPropertiesFromKwargs(self, **kwargs): logMsg(self.__class__.__name__, log='all') logMsg("Entered kwargs:", kwargs, log="debug") bIgnoreMissing = kwargs.pop("ignoreMissingKwarg", False) cls = self.__class__ # get all keyword arguments for sProperty, _ in cls.propertiesDctItems: metaprpty = self.__metaProperties[sProperty] if metaprpty.defaultValue == "undefined" and not bIgnoreMissing: try: value = kwargs.pop(metaprpty.name) except KeyError: msg = u'{0} needs "{1}" kwarg at least'.format( cls.__name__, metaprpty.name) raise TypeError(msg) else: setattr(self, metaprpty.name, value) else: value = kwargs.pop(metaprpty.name, metaprpty.defaultValue) setattr(self, metaprpty.name, value) logMsg("Remaining kwargs:", kwargs, log="debug") return kwargs
def initPropertiesFromKwargs(self, **kwargs): logMsg(self.__class__.__name__, log='all') logMsg("Entered kwargs:", kwargs, log="debug") bIgnoreMissing = kwargs.pop("ignoreMissingKwarg", False) cls = self.__class__ # get all keyword arguments for sProperty, _ in cls.propertiesDctItems: metaprpty = self.__metaProperties[sProperty] if metaprpty.defaultValue == "undefined" and not bIgnoreMissing: try: value = kwargs.pop(metaprpty.name) except KeyError: msg = u'{0} needs "{1}" kwarg at least'.format(cls.__name__, metaprpty.name) raise TypeError(msg) else: setattr(self, metaprpty.name, value) else: value = kwargs.pop(metaprpty.name, metaprpty.defaultValue) setattr(self, metaprpty.name, value) logMsg("Remaining kwargs:", kwargs, log="debug") return kwargs
def setPrpty(self, sProperty, value, write=True): logMsg(self.__class__.__name__, log='all') metaprpty = self.__metaProperties[sProperty] if metaprpty.isValidValue(value): if write: if metaprpty.isWritable(): bStatus = metaprpty.write(value) if not bStatus: return False else: logMsg(u"<{}> Writing to non-writable property: {}.{} .". format(getCaller(), self, metaprpty.name), warning=True) setattr(self, metaprpty.name, value) return True else: logMsg(" {0}.{1} : Invalid value : '{2}'".format( self, sProperty, value), warning=True) return False
def setPrpty(self, sProperty, value, write=True): logMsg(self.__class__.__name__, log='all') metaprpty = self.__metaProperties[sProperty] if metaprpty.isValidValue(value): if write: if metaprpty.isWritable(): bStatus = metaprpty.write(value) if not bStatus: return False else: logMsg(u"<{}> Writing to non-writable property: {}.{} ." .format(getCaller(), self, metaprpty.name), warning=True) setattr(self, metaprpty.name, value) return True else: logMsg(" {0}.{1} : Invalid value : '{2}'" .format(self, sProperty, value) , warning=True) return False
def updateData(self): logMsg(log='all') metaprpty = self._metaprpty self.loadFlags(metaprpty) self.loadData(metaprpty)
def updateRow(self): logMsg(log='all') for siblItem in self.iterSiblingRow(self.row()): if siblItem.isValid(): siblItem.updateData()