def floatLineEditWidgetValidation(self, widget, varName, msg): var = self.tempQadVariables.getVariable( QadMsg.translate("Environment variables", varName)) err = False string = widget.text() if qad_utils.str2float(string) is None: err = True else: if var.minNum is not None: if qad_utils.str2float(string) < var.minNum: err = True if var.maxNum is not None: if qad_utils.str2float(string) > var.maxNum: err = True if err: msg = msg + QadMsg.translate("QAD", ": enter a number") if var.minNum is not None: minValMsg = msg + QadMsg.translate("QAD", " > {0}").format( str(var.minNum)) else: minValMsg = "" if var.maxNum is not None: if len(minValMsg) > 0: msg = msg + QadMsg.translate("QAD", " and") msg = msg + QadMsg.translate("QAD", " < {0}").format( str(var.maxNum)) msg = msg + "." QMessageBox.critical(self, "QAD", msg) widget.setFocus() widget.selectAll() return False return True
def floatLineEditWidgetValidation(self, widget, varName, msg): var = self.tempQadVariables.getVariable(QadMsg.translate("Environment variables", varName)) err = False string = widget.text() if qad_utils.str2float(string) is None: err = True else: if var.minNum is not None: if qad_utils.str2float(string) < var.minNum: err = True if var.maxNum is not None: if qad_utils.str2float(string) > var.maxNum: err = True if err: msg = msg + QadMsg.translate("QAD", ": enter a number") if var.minNum is not None: minValMsg = msg + QadMsg.translate("QAD", " > {0}").format(str(var.minNum)) else: minValMsg = "" if var.maxNum is not None: if len(minValMsg) > 0: msg = msg + QadMsg.translate("QAD", " and") msg = msg + QadMsg.translate("QAD", " < {0}").format(str(var.maxNum)) msg = msg + "." QMessageBox.critical(self, "QAD", msg) widget.setFocus() widget.selectAll() return False return True
def ButtonBOX_Accepted(self): newOSMODE = 0 if self.checkBox_CENP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.CEN if self.checkBox_ENDP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.END if self.checkBox_END_PLINE.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.END_PLINE if self.checkBox_EXTP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.EXT if self.checkBox_INTP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.INT if self.checkBox_MIDP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.MID if self.checkBox_NODP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.NOD if self.checkBox_QUADP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.QUA #if self.checkBox_INSP.checkState() == Qt.Checked: # newOSMODE = newOSMODE | QadSnapTypeEnum.INS #if self.checkBox_INTAPP.checkState() == Qt.Checked: # newOSMODE = newOSMODE | QadSnapTypeEnum.APP if self.checkBox_NEARP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.NEA if self.checkBox_PARALP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.PAR if self.checkBox_PERP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.PER if self.checkBox_PROGRESP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.PR if self.checkBox_TANP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.TAN if self.checkBox_EXT_INT.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.EXT_INT if self.checkBox_IsOsnapON.checkState() == Qt.Unchecked: newOSMODE = newOSMODE | QadSnapTypeEnum.DISABLE QadVariables.set(QadMsg.translate("Environment variables", "OSMODE"), newOSMODE) AutoSnap = QadVariables.get(QadMsg.translate("Environment variables", "AUTOSNAP")) if self.checkBox_PolarPickPoint.checkState() == Qt.Checked: AutoSnap = AutoSnap | 8 elif AutoSnap & 8: AutoSnap = AutoSnap - 8 QadVariables.set(QadMsg.translate("Environment variables", "AUTOSNAP"), AutoSnap) # Memorizzo il valore di PolarANG SUserAngle = self.comboBox_increment_angle.currentText() UserAngle = qad_utils.str2float(SUserAngle) QadVariables.set(QadMsg.translate("Environment variables", "POLARANG"), UserAngle) SProgrDist = self.lineEdit_ProgrDistance.text() ProgrDist = qad_utils.str2float(SProgrDist) QadVariables.set(QadMsg.translate("Environment variables", "OSPROGRDISTANCE"), ProgrDist) QadVariables.save() self.close() return True
def comboBox_increment_angle_Validation(self): string = self.comboBox_increment_angle.lineEdit().text() if qad_utils.str2float(string) is None or qad_utils.str2float(string) <= 0 or qad_utils.str2float(string) >= 360: msg = QadMsg.translate("DSettings_Dialog", "Invalid increment angle: enter a number greater than zero and less than 360 degree.") QMessageBox.critical(self, "QAD", msg) self.comboBox_increment_angle.lineEdit().setFocus() self.comboBox_increment_angle.lineEdit().selectAll() return False return True
def lineEdit_ProgrDistance_Validation(self): string = self.lineEdit_ProgrDistance.text() if qad_utils.str2float(string) is None or qad_utils.str2float(string) == 0: msg = QadMsg.translate("DSettings_Dialog", "Invalid progressive distance object snap: enter a number not zero.") QMessageBox.critical(self, "QAD", msg) self.lineEdit_ProgrDistance.setFocus() self.lineEdit_ProgrDistance.selectAll() return False return True
def comboBox_increment_angle_Validation(self): string = self.comboBox_increment_angle.lineEdit().text() if qad_utils.str2float(string) is None or qad_utils.str2float(string) <= 0 or qad_utils.str2float(string) >= 360: msg = QadMsg.translate("DSettings_Dialog", "Angolo di incremento polare non corretto: impostare valore numerico maggiore di 0 e minore di 360 gradi.") QMessageBox.critical(self, "QAD", msg) self.comboBox_increment_angle.lineEdit().setFocus() self.comboBox_increment_angle.lineEdit().selectAll() return False return True
def lineEdit_ProgrDistance_Validation(self): string = self.lineEdit_ProgrDistance.text() if qad_utils.str2float(string) is None or qad_utils.str2float(string) == 0: msg = QadMsg.translate("DSettings_Dialog", "Snap ad oggetto per distanza progressiva non corretto: impostare valore numerico diverso da zero.") QMessageBox.critical(self, "QAD", msg) self.lineEdit_ProgrDistance.setFocus() self.lineEdit_ProgrDistance.selectAll() return False return True
def comboBox_increment_angle_Validation(self): string = self.comboBox_increment_angle.lineEdit().text() if qad_utils.str2float(string) is None or qad_utils.str2float( string) <= 0 or qad_utils.str2float(string) >= 360: msg = QadMsg.translate( "DSettings_Dialog", "Invalid increment angle: enter a number greater than zero and less than 360 degree." ) QMessageBox.critical(self, "QAD", msg) self.comboBox_increment_angle.lineEdit().setFocus() self.comboBox_increment_angle.lineEdit().selectAll() return False return True
def lineEdit_ProgrDistance_Validation(self): string = self.lineEdit_ProgrDistance.text() if qad_utils.str2float(string) is None or qad_utils.str2float( string) == 0: msg = QadMsg.translate( "DSettings_Dialog", "Invalid progressive distance object snap: enter a number not zero." ) QMessageBox.critical(self, "QAD", msg) self.lineEdit_ProgrDistance.setFocus() self.lineEdit_ProgrDistance.selectAll() return False return True
def accept_polar_tab(self): # Memorizzo il valore di AUTOSNAP AutoSnap = QadVariables.get( QadMsg.translate("Environment variables", "AUTOSNAP")) if self.checkBox_PolarPickPoint.checkState() == Qt.Checked: AutoSnap = AutoSnap | QadAUTOSNAPEnum.POLAR_TRACKING elif AutoSnap & QadAUTOSNAPEnum.POLAR_TRACKING: AutoSnap = AutoSnap - QadAUTOSNAPEnum.POLAR_TRACKING QadVariables.set(QadMsg.translate("Environment variables", "AUTOSNAP"), AutoSnap) # Memorizzo il valore di POLARANG SUserAngle = self.comboBox_increment_angle.currentText() UserAngle = qad_utils.str2float(SUserAngle) QadVariables.set(QadMsg.translate("Environment variables", "POLARANG"), UserAngle) # Memorizzo il valore di POLARMODE PolarMode = 0 if self.radioButton_OsnapPolarAngle.isChecked(): PolarMode = PolarMode | QadPOLARMODEnum.POLAR_TRACKING if self.radioButton_OsnapPolarRelative.isChecked(): PolarMode = PolarMode | QadPOLARMODEnum.MEASURE_RELATIVE_ANGLE QadVariables.set( QadMsg.translate("Environment variables", "POLARMODE"), PolarMode)
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 accept_osnap_tab(self): # Memorizzo il valore di OSMODE newOSMODE = 0 if self.checkBox_CENP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.CEN if self.checkBox_ENDP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.END if self.checkBox_END_PLINE.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.END_PLINE if self.checkBox_EXTP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.EXT if self.checkBox_INTP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.INT if self.checkBox_MIDP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.MID if self.checkBox_NODP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.NOD if self.checkBox_QUADP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.QUA #if self.checkBox_INSP.checkState() == Qt.Checked: # newOSMODE = newOSMODE | QadSnapTypeEnum.INS #if self.checkBox_INTAPP.checkState() == Qt.Checked: # newOSMODE = newOSMODE | QadSnapTypeEnum.APP if self.checkBox_NEARP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.NEA if self.checkBox_PARALP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.PAR if self.checkBox_PERP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.PER if self.checkBox_PROGRESP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.PR if self.checkBox_TANP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.TAN if self.checkBox_EXT_INT.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.EXT_INT if self.checkBox_IsOsnapON.checkState() == Qt.Unchecked: newOSMODE = newOSMODE | QadSnapTypeEnum.DISABLE QadVariables.set(QadMsg.translate("Environment variables", "OSMODE"), newOSMODE) # Memorizzo il valore di OSPROGRDISTANCE SProgrDist = self.lineEdit_ProgrDistance.text() ProgrDist = qad_utils.str2float(SProgrDist) QadVariables.set( QadMsg.translate("Environment variables", "OSPROGRDISTANCE"), ProgrDist) # Memorizzo il valore di AUTOSNAP AutoSnap = QadVariables.get( QadMsg.translate("Environment variables", "AUTOSNAP")) if self.checkBox_ObjectSnapTracking.checkState() == Qt.Checked: AutoSnap = AutoSnap | QadAUTOSNAPEnum.OBJ_SNAP_TRACKING elif AutoSnap & QadAUTOSNAPEnum.OBJ_SNAP_TRACKING: AutoSnap = AutoSnap - QadAUTOSNAPEnum.OBJ_SNAP_TRACKING QadVariables.set(QadMsg.translate("Environment variables", "AUTOSNAP"), AutoSnap)
def accept_osnap_tab(self): # Memorizzo il valore di OSMODE newOSMODE = 0 if self.checkBox_CENP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.CEN if self.checkBox_ENDP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.END if self.checkBox_END_PLINE.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.END_PLINE if self.checkBox_EXTP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.EXT if self.checkBox_INTP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.INT if self.checkBox_MIDP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.MID if self.checkBox_NODP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.NOD if self.checkBox_QUADP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.QUA #if self.checkBox_INSP.checkState() == Qt.Checked: # newOSMODE = newOSMODE | QadSnapTypeEnum.INS #if self.checkBox_INTAPP.checkState() == Qt.Checked: # newOSMODE = newOSMODE | QadSnapTypeEnum.APP if self.checkBox_NEARP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.NEA if self.checkBox_PARALP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.PAR if self.checkBox_PERP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.PER if self.checkBox_PROGRESP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.PR if self.checkBox_TANP.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.TAN if self.checkBox_EXT_INT.checkState() == Qt.Checked: newOSMODE = newOSMODE | QadSnapTypeEnum.EXT_INT if self.checkBox_IsOsnapON.checkState() == Qt.Unchecked: newOSMODE = newOSMODE | QadSnapTypeEnum.DISABLE QadVariables.set(QadMsg.translate("Environment variables", "OSMODE"), newOSMODE) # Memorizzo il valore di OSPROGRDISTANCE SProgrDist = self.lineEdit_ProgrDistance.text() ProgrDist = qad_utils.str2float(SProgrDist) QadVariables.set(QadMsg.translate("Environment variables", "OSPROGRDISTANCE"), ProgrDist) # Memorizzo il valore di AUTOSNAP AutoSnap = QadVariables.get(QadMsg.translate("Environment variables", "AUTOSNAP")) if self.checkBox_ObjectSnapTracking.checkState() == Qt.Checked: AutoSnap = AutoSnap | QadAUTOSNAPEnum.OBJ_SNAP_TRACKING elif AutoSnap & QadAUTOSNAPEnum.OBJ_SNAP_TRACKING: AutoSnap = AutoSnap - QadAUTOSNAPEnum.OBJ_SNAP_TRACKING QadVariables.set(QadMsg.translate("Environment variables", "AUTOSNAP"), AutoSnap)
def accept_polar_tab(self): # Memorizzo il valore di AUTOSNAP AutoSnap = QadVariables.get(QadMsg.translate("Environment variables", "AUTOSNAP")) if self.checkBox_PolarPickPoint.checkState() == Qt.Checked: AutoSnap = AutoSnap | QadAUTOSNAPEnum.POLAR_TRACKING elif AutoSnap & QadAUTOSNAPEnum.POLAR_TRACKING: AutoSnap = AutoSnap - QadAUTOSNAPEnum.POLAR_TRACKING QadVariables.set(QadMsg.translate("Environment variables", "AUTOSNAP"), AutoSnap) # Memorizzo il valore di POLARANG SUserAngle = self.comboBox_increment_angle.currentText() UserAngle = qad_utils.str2float(SUserAngle) QadVariables.set(QadMsg.translate("Environment variables", "POLARANG"), UserAngle) # Memorizzo il valore di POLARMODE PolarMode = 0 if self.radioButton_OsnapPolarAngle.isChecked(): PolarMode = PolarMode | QadPOLARMODEnum.POLAR_TRACKING if self.radioButton_OsnapPolarRelative.isChecked(): PolarMode = PolarMode | QadPOLARMODEnum.MEASURE_RELATIVE_ANGLE QadVariables.set(QadMsg.translate("Environment variables", "POLARMODE"), PolarMode)
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