2 Gestione delle impostazioni di LeenO
8 from os.path
import expanduser
9 from datetime
import date
16 Singleton/BorgSingleton.py
17 Alex Martelli's 'Borg'
28 classe contenente la configurazione di LeenO
29 la classe è un singleton - anche creando vari
30 oggetti tutti contengono gli stessi dati
38 if sys.platform ==
'win32':
39 self.
_path = os.getenv(
"APPDATA") +
'/.config/leeno/leeno.conf'
41 self.
_path = os.getenv(
"HOME") +
'/.config/leeno/leeno.conf'
46 os.makedirs(os.path.dirname(self.
_path))
47 except FileExistsError:
52 self.
_parser = configparser.RawConfigParser()
53 self.
_parser.optionxform =
lambda option: option
61 def _initDefaults(self):
63 default configuration parameters, if not changed by user
66 (
'Zoom',
'fattore',
'100'),
67 (
'Zoom',
'fattore_ottimale',
'81'),
68 (
'Zoom',
'fullscreen',
'0'),
70 (
'Generale',
'dialogo',
'1'),
72 (
'Generale',
'altezza_celle',
'1.25'),
73 (
'Generale',
'pesca_auto',
'1'),
74 (
'Generale',
'movedirection',
'1'),
75 (
'Generale',
'descrizione_in_una_colonna',
'0'),
76 (
'Generale',
'toolbar_contestuali',
'1'),
77 (
'Generale',
'vedi_voce_breve',
'50'),
78 (
'Generale',
'dettaglio',
'1'),
79 (
'Generale',
'torna_a_ep',
'1'),
80 (
'Generale',
'copie_backup',
'5'),
81 (
'Generale',
'pausa_backup',
'15'),
82 (
'Generale',
'conta_usi',
'0'),
83 (
'Generale',
'ultimo_percorso', expanduser(
"~")),
87 (
'Computo',
'inizio_voci_abbreviate',
'100'),
88 (
'Computo',
'fine_voci_abbreviate',
'120'),
89 (
'Contabilita',
'cont_inizio_voci_abbreviate',
'100'),
90 (
'Contabilita',
'cont_fine_voci_abbreviate',
'120'),
91 (
'Contabilita',
'abilitaconfigparser',
'0'),
92 (
'Contabilita',
'idxsal',
'20'),
93 (
'Contabilita',
'ricicla_da',
'COMPUTO'),
95 (
'Importazione',
'ordina_computo',
'1'),
97 (
'Lavoro',
'committente',
'(str)'),
98 (
'Lavoro',
'stazioneAppaltante',
'(str)'),
99 (
'Lavoro',
'progetto',
'(str)'),
100 (
'Lavoro',
'rup',
'(str)'),
101 (
'Lavoro',
'progettista',
'(str)'),
103 (
'Lavoro',
'revisione',
'(str)'),
106 (
'ImpostazioniStampa',
'fileCopertine',
'(str)'),
107 (
'ImpostazioniStampa',
'copertina',
'(str)'),
108 (
'ImpostazioniStampa',
'intSx',
'(str)[COMMITTENTE]'),
109 (
'ImpostazioniStampa',
'intCenter',
'(str)'),
110 (
'ImpostazioniStampa',
'intDx',
'(str)[PROGETTO]'),
111 (
'ImpostazioniStampa',
'ppSx',
'(str)[OGGETTO]'),
112 (
'ImpostazioniStampa',
'ppCenter',
'(str)'),
113 (
'ImpostazioniStampa',
'ppDx',
'(str)Pagina [PAGINA] di [PAGINE]'),
115 (
'ImpostazioniExport',
'npElencoPrezzi',
'(str)1'),
116 (
'ImpostazioniExport',
'npComputoMetrico',
'(str)2'),
117 (
'ImpostazioniExport',
'npCostiManodopera',
'(str)3'),
118 (
'ImpostazioniExport',
'npQuadroEconomico',
'(str)4'),
119 (
'ImpostazioniExport',
'cbElencoPrezzi',
'(bool)True'),
120 (
'ImpostazioniExport',
'cbComputoMetrico',
'(bool)True'),
121 (
'ImpostazioniExport',
'cbCostiManodopera',
'(bool)True'),
122 (
'ImpostazioniExport',
'cbQuadroEconomico',
'(bool)True'),
126 for param
in parametri:
128 self.
_parser.get(param[0], param[1])
130 if not self.
_parser.has_section(param[0]):
131 self.
_parser.add_section(param[0])
132 self.
_parser.set(param[0], param[1], param[2])
136 load configuration data from disk
141 os.remove(self.
_path)
145 store configuration data to disk
147 fp = open(self.
_path,
'w')
151 def read(self, section, option, convert=False):
153 read an option from config
154 if convert is True, do the string->value conversion
155 (for latter, the string must have the correct format)
158 return self.
_parser.get(section, option)
164 read a block of options from config given the section name
165 if convert is True, do the string->value conversion
166 (for latter, the strings must have the correct format)
168 options = self.
_parser.options(section)
170 for option
in options:
171 val = self.
_parser.get(section, option)
185 def write(self, section, option, val):
187 write an option to config
189 if not self.
_parser.has_section(section):
190 self.
_parser.add_section(section)
191 self.
_parser.set(section, option, val)
199 write a block of options to config given the section name
200 if convert is True, do the value->string conversion
202 if not self.
_parser.has_section(section):
203 self.
_parser.add_section(section)
204 for key, val
in valDict.items():
209 self.
_parser.set(section, key, val)