def __repr__(self):

        cls = self.__class__

        try:
            sClsName = upperFirst(cls.classLabel) if hasattr(cls, "classLabel") else cls.__name__
            sRepr = ("{0}('{1}')".format(sClsName, toStr(getattr(self, cls.classReprAttr))))
        except AttributeError:
            sRepr = cls.__name__

        return sRepr
    def __repr__(self):

        cls = self.__class__

        try:
            sClsName = upperFirst(cls.classLabel) if hasattr(
                cls, "classLabel") else cls.__name__
            sRepr = ("{0}('{1}')".format(
                sClsName, toStr(getattr(self, cls.classReprAttr))))
        except AttributeError:
            sRepr = cls.__name__

        return sRepr
    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)
示例#5
0
 def __repr__(self):
     sClsName = self.__class__.__name__
     sRepr = ("{}('{}')".format(sClsName, toStr(self.text())))
     return sRepr
示例#6
0
class BaseContextMenu(QtGui.QMenu):

    def __init__(self, parentView):
        super(BaseContextMenu, self).__init__(parentView)

        self.view = parentView
        self.actionSelection = []
        self.actionSelectionLoaded = False

        self.createActions()
        self.buildSubmenus()

    def model(self):
        model = self.view.model()
        if isinstance(model, QtGui.QSortFilterProxyModel):
            return model.sourceModel()

        return model

    def getActionSelection(self):

        view = self.view
        model = view.model()
        selectModel = view.selectionModel()

        selBhv = view.selectionBehavior()
        if selBhv == SelectionBehavior.SelectRows:
            selIndexes = selectModel.selectedRows(0)
        elif selBhv == SelectionBehavior.SelectColumns:
            selIndexes = selectModel.selectedColumns(0)
        else:
            selIndexes = selectModel.selectedIndexes()

        if len(selIndexes) > 1:

            curIndex = selectModel.currentIndex()

            if selBhv == SelectionBehavior.SelectRows:
                curIndex = curIndex.sibling(curIndex.row(), 0)
            elif selBhv == SelectionBehavior.SelectColumns:
                curIndex = curIndex.sibling(0, curIndex.column())

            if curIndex.isValid() and curIndex != selIndexes[-1]:

                try: selIndexes.remove(curIndex)
                except ValueError: pass

                selIndexes.append(curIndex)

        itemFromIndex = model.itemFromIndex
        return [itemFromIndex(idx) for idx in selIndexes]

    def loadActionSelection(self):

        self.actionSelection = self.getActionSelection()
        self.actionSelectionLoaded = True

    def assertActionSelection(self):

        if not self.actionSelectionLoaded:
            raise RuntimeError("Action Selection not loaded.")
        else:
            self.actionSelectionLoaded = False

    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)

        args = actionDct.get("args", []) + self.actionSelection
        kwargs = actionDct.get("kwargs", {})
        func = actionDct["fnc"]

        try:
            return func(*args, **kwargs)
        except Exception, err:
            sMsg = "Could not launch {} : \n\n> ".format(sActionMsg)
            confirmDialog(title='SORRY !'
                        , message=sMsg + toStr(err)
                        , button=["OK"]
                        , defaultButton="OK"
                        , cancelButton="OK"
                        , dismissString="OK"
                        , icon="critical")
            raise
 def __repr__(self):
     sClsName = self.__class__.__name__
     sRepr = ("{}('{}')".format(sClsName, toStr(self.text())))
     return sRepr