forked from geosim/QAD
-
Notifications
You must be signed in to change notification settings - Fork 0
/
qad_setvar_cmd.py
140 lines (116 loc) · 5.8 KB
/
qad_setvar_cmd.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# -*- coding: utf-8 -*-
"""
/***************************************************************************
QAD Quantum Aided Design plugin
comando SETVAR per settare le variabili di ambiente di QAD
-------------------
begin : 2013-05-22
copyright : iiiii
email : hhhhh
developers : bbbbb aaaaa ggggg
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
# Import the PyQt and QGIS libraries
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
from qad_generic_cmd import QadCommandClass
from qad_msg import QadMsg
from qad_variables import *
# Classe che gestisce il comando SETVAR
class QadSETVARCommandClass(QadCommandClass):
def instantiateNewCmd(self):
""" istanzia un nuovo comando dello stesso tipo """
return QadSETVARCommandClass(self.plugIn)
def getName(self):
return QadMsg.translate("Command_list", "SETVAR")
def getEnglishName(self):
return "SETVAR"
def connectQAction(self, action):
QObject.connect(action, SIGNAL("triggered()"), self.plugIn.runSETVARCommand)
def getIcon(self):
return QIcon(":/plugins/qad/icons/variable.png")
def getNote(self):
# impostare le note esplicative del comando
return QadMsg.translate("Command_SETVAR", "Sets the QAD environment variables.")
def __init__(self, plugIn):
QadCommandClass.__init__(self, plugIn)
self.varName = ""
def run(self, msgMapTool = False, msg = None):
if self.step == 0: # inizio del comando
# si appresta ad attendere una stringa
self.waitForString(QadMsg.translate("Command_SETVAR", "Enter the variable name or [?]: "), \
QadMsg.translate("Command_SETVAR", "?"))
self.step = 1
return False
elif self.step == 1: # dopo aver atteso il nome della variabile si riavvia il comando
if msgMapTool == True: # niente può arrivare da grafica
return False
# il nome della variabile arriva come parametro della funzione
self.varName = msg
if self.varName == QadMsg.translate("Command_SETVAR", "?"): # lista delle variabili
# si appresta ad attendere una stringa
self.waitForString(QadMsg.translate("Command_SETVAR", "Enter variable(s) to list <*>: "), \
QadMsg.translate("Command_SETVAR", "*"))
self.step = 3
return False
else:
variable = QadVariables.getVariable(self.varName)
if variable is None:
msg = QadMsg.translate("Command_SETVAR", "\nUnknown variable. Enter {0} ? to list variable names.")
self.showErr(msg.format(QadMsg.translate("Command_list", "SETVAR")))
return False
else:
varValue = variable.value
varDescr = variable.descr
varType = str(type(varValue))
if len(varDescr) > 0:
self.showMsg("\n" + varDescr)
msg = QadMsg.translate("Command_SETVAR", "Enter new value for variable {0} <{1}>: ")
if varType == "<type 'str'>":
# si appresta ad attendere una stringa
self.waitForString(msg.format(self.varName, varValue), varValue)
elif varType == "<type 'int'>":
# si appresta ad attendere un numero intero
self.waitForInt(msg.format(self.varName, varValue), varValue)
elif varType == "<type 'float'>":
# si appresta ad attendere un numero reale
self.waitForFloat(msg.format(self.varName, varValue), varValue)
elif varType == "<type 'bool'>":
# si appresta ad attendere un numero reale
self.waitForBool(msg.format(self.varName, varValue), varValue)
self.step = 2
return False
elif self.step == 2: # dopo aver atteso il valore della variabile si riavvia il comando
if msgMapTool == True: # niente può arrivare da grafica
return False
# il valore della variabile arriva come parametro della funzione
QadVariables.set(self.varName, msg)
QadVariables.save()
self.plugIn.UpdatedVariablesEvent()
return True
elif self.step == 3: # dopo aver atteso il nome della variabile si riavvia il comando
if msgMapTool == True: # niente può arrivare da grafica
return False
if msg == "*":
varNames = QadVariables.getVarNames()
else:
# il nome della variabile arriva come parametro della funzione
varNames = msg.strip().split(",")
varNames.sort()
for self.varName in varNames:
self.varName = self.varName.strip()
varValue = QadVariables.get(self.varName)
if varValue is not None:
msg = "\n" + self.varName + "=" + str(varValue)
self.showMsg(msg)
self.plugIn.UpdatedVariablesEvent()
return True