def load(self, Path=""): """ Carica il dizionario delle variabili da file Ritorna True in caso di successo, false in caso di errore """ # svuoto il dizionario e lo reimposto con i valori di default self.__VariableValuesDict.clear() self.__init__() if Path == "": # Se la path non é indicata uso il file "qad.ini" in Path = QDir.cleanPath(QgsApplication.qgisSettingsDirPath()) + "python/plugins/qad/" Path = Path + "qad.ini" if not os.path.exists(Path): return False file = open(Path, "r") # apre il file in lettura for line in file: # leggo il valore + il tipo (es var = 5 <type 'int'>) sep = line.rfind(" = ") VarName = line[0:sep] VarName = VarName.strip(" ") # rimuovo gli spazi prima e dopo VarValue = line[sep+3:] sep = VarValue.rfind(" <type '") sep2 = VarValue.rfind("'>") VarType = VarValue[sep+8:sep2] VarValue = VarValue[:sep] if VarType == "int": VarValue = qad_utils.str2int(VarValue) if VarValue is None: self.set(VarName, int(0)) else: self.set(VarName, VarValue) elif VarType == "long": VarValue = qad_utils.str2long(VarValue) if VarValue is None: self.set(VarName, long(0)) else: self.set(VarName, VarValue) elif VarType == "float": VarValue = qad_utils.str2float(VarValue) if VarValue is None: self.set(VarName, float(0)) else: self.set(VarName, VarValue) elif VarType == "bool": VarValue = qad_utils.str2bool(VarValue) if VarValue is None: self.set(VarName, False) else: self.set(VarName, VarValue) else: self.set(VarName, str(VarValue)) file.close() return True
def evaluate(self, cmd): #------------------------------------------------------------------------------ # nome di un comando #------------------------------------------------------------------------------ if self.inputType & QadInputTypeEnum.COMMAND: if cmd == "": cmd = unicode(self.showLast()) # ripeto ultimo comando if self.parentWidget().isValidCommand(cmd): self.updateHistory(cmd) self.parentWidget().runCommand(cmd) else: msg = QadMsg.translate("QAD", "\nComando sconosciuto \"{0}\".") self.showMsg(msg.format(cmd.encode('ascii','ignore')), True) # ripete il prompt return if cmd == "": if self.default is not None: if type(self.default) == QgsPoint: cmd = self.default.toString() else: cmd = unicode(self.default) if cmd == "" and \ not (self.inputMode & QadInputModeEnum.NOT_NULL): # permesso input nullo self.parentWidget().continueCommand(None) return #------------------------------------------------------------------------------ # punto 2D #------------------------------------------------------------------------------ if self.inputType & QadInputTypeEnum.POINT2D: snapType = qad_utils.str2snapTypeEnum(cmd) if snapType != -1: # se é stato forzato uno snap snapParams = qad_utils.str2snapParams(cmd) self.parentWidget().forceCommandMapToolSnapTypeOnce(snapType, snapParams) self.showMsg(QadMsg.translate("QAD", "\n(impostato snap temporaneo)\n"), True) # ripeti il prompt return if (self.inputType & QadInputTypeEnum.INT) or \ (self.inputType & QadInputTypeEnum.LONG) or \ (self.inputType & QadInputTypeEnum.FLOAT) or \ (self.inputType & QadInputTypeEnum.ANGLE) or \ (self.inputType & QadInputTypeEnum.BOOL): oneNumberAllowed = False else: oneNumberAllowed = True pt = qad_utils.str2QgsPoint(cmd, \ self.parentWidget().getLastPoint(), \ self.parentWidget().getCurrenPointFromCommandMapTool(), \ oneNumberAllowed) if pt is not None: self.parentWidget().setLastPoint(pt) self.parentWidget().continueCommand(pt) return #------------------------------------------------------------------------------ # punto 3D #------------------------------------------------------------------------------ if self.inputType & QadInputTypeEnum.POINT3D: # punto pass #------------------------------------------------------------------------------ # una parola chiave #------------------------------------------------------------------------------ if self.inputType & QadInputTypeEnum.KEYWORDS: keyWord = self.evaluateKeyWords(cmd) if keyWord is not None: self.parentWidget().continueCommand(keyWord) return #------------------------------------------------------------------------------ # una stringa #------------------------------------------------------------------------------ if self.inputType & QadInputTypeEnum.STRING: if cmd is not None: self.parentWidget().continueCommand(cmd) return #------------------------------------------------------------------------------ # un numero intero #------------------------------------------------------------------------------ if self.inputType & QadInputTypeEnum.INT: num = qad_utils.str2int(cmd) if num == 0 and (self.inputMode & QadInputModeEnum.NOT_ZERO): # non permesso valore = 0 num = None elif num < 0 and (self.inputMode & QadInputModeEnum.NOT_NEGATIVE): # non permesso valore < 0 num = None elif num > 0 and (self.inputMode & QadInputModeEnum.NOT_POSITIVE): # non permesso valore > 0 num = None if num is not None: self.parentWidget().continueCommand(int(num)) return #------------------------------------------------------------------------------ # un numero lungo #------------------------------------------------------------------------------ if self.inputType & QadInputTypeEnum.LONG: num = qad_utils.str2long(cmd) if num == 0 and (self.inputMode & QadInputModeEnum.NOT_ZERO): # non permesso valore = 0 num = None elif num < 0 and (self.inputMode & QadInputModeEnum.NOT_NEGATIVE): # non permesso valore < 0 num = None elif num > 0 and (self.inputMode & QadInputModeEnum.NOT_POSITIVE): # non permesso valore > 0 num = None if num is not None: self.parentWidget().continueCommand(long(num)) return #------------------------------------------------------------------------------ # un numero reale #------------------------------------------------------------------------------ if self.inputType & QadInputTypeEnum.FLOAT or self.inputType & QadInputTypeEnum.ANGLE: num = qad_utils.str2float(cmd) if num == 0 and (self.inputMode & QadInputModeEnum.NOT_ZERO): # non permesso valore = 0 num = None elif num < 0 and (self.inputMode & QadInputModeEnum.NOT_NEGATIVE): # non permesso valore < 0 num = None elif num > 0 and (self.inputMode & QadInputModeEnum.NOT_POSITIVE): # non permesso valore > 0 num = None if num is not None: if self.inputType & QadInputTypeEnum.ANGLE: # se é un angolo in gradi # i gradi vanno convertiti in radianti num = qad_utils.toRadians(num) self.parentWidget().continueCommand(float(num)) return #------------------------------------------------------------------------------ # un valore booleano #------------------------------------------------------------------------------ elif self.inputType & QadInputTypeEnum.BOOL: value = qad_utils.str2bool(cmd) if value is not None: self.parentWidget().continueCommand(value) return self.showMsg(self.getInvalidInputMsg()) if self.inputType & QadInputTypeEnum.KEYWORDS: self.displayKeyWordsPrompt() else: self.displayPrompt() return