2 LeenO - modulo di gestione dialoghi
11 from com.sun.star.awt.MessageBoxButtons
import BUTTONS_OK
13 from com.sun.star.awt.MessageBoxButtons
import BUTTONS_YES_NO
22 from com.sun.star.awt.MessageBoxButtons
import DEFAULT_BUTTON_NO
25 from com.sun.star.awt.MessageBoxType
import MESSAGEBOX
29 from com.sun.star.awt.MessageBoxType
import QUERYBOX
34 '''Informa l'utente sullo stato progressivo dell'elaborazione.'''
36 oProgressBar = oDoc.CurrentController.Frame.createStatusIndicator()
37 oProgressBar.start(
'', 100)
38 oProgressBar.Value = valore
39 oProgressBar.Text = testo
46 s { object } : oggetto da interrogare
47 mostra un dialog che indica il tipo di oggetto ed i metodi ad esso applicabili
50 parentwin = doc.CurrentController.Frame.ContainerWindow
51 s1 = str(s) +
'\n\n' + str(dir(s).__str__())
52 MessageBox(parentwin, str(s1), str(type(s)),
'infobox')
57 Visualizza il menù di scelta sì/no
58 restituisce 2 per sì e 3 per no
61 parentwin = doc.CurrentController.Frame.ContainerWindow
65 return MessageBox(parentwin, s, t, QUERYBOX, BUTTONS_YES_NO + DEFAULT_BUTTON_NO)
70 Visualizza una message box
73 parentwin = doc.CurrentController.Frame.ContainerWindow
86 def MessageBox(ParentWin, MsgText, MsgTitle, MsgType=MESSAGEBOX, MsgButtons=BUTTONS_OK):
88 Show a message box with the UNO based toolkit
91 sm = ctx.ServiceManager
92 sv = sm.createInstanceWithContext(
'com.sun.star.awt.Toolkit', ctx)
93 myBox = sv.createMessageBox(ParentWin, MsgType, MsgButtons, MsgTitle, MsgText)
95 return myBox.execute()
101 Inspector https://extensions.openoffice.org/project/MRI
104 mrii = ctx.ServiceManager.createInstanceWithContext(
'mytools.Mri', ctx)
106 MsgBox(
'MRI in corso...',
'avviso')
112 definisce la variabile globale oDialogo_attesa
113 che va gestita così negli script:
116 attesa().start() #mostra il dialogo
118 LeenoUtils.getGlobalVar('oDialogo_attesa').endExecute() #chiude il dialogo
121 dp = psm.createInstance(
"com.sun.star.awt.DialogProvider")
122 oDialogo_attesa = dp.createDialog(
123 "vnd.sun.star.script:UltimusFree2.DlgAttesa?language=Basic&location=application")
127 sString = oDialogo_attesa.getControl(
"Label2")
129 oDialogo_attesa.Title =
'Operazione in corso...'
130 sUrl = PL.LeenO_path() +
'/icons/attendi.png'
131 oDialogo_attesa.getModel().ImageControl1.ImageURL = sUrl
133 return oDialogo_attesa
138 avvia il dialogo di attesa
139 http://bit.ly/2fzfsT7
142 threading.Thread.__init__(self)
151 Permetta la scelta dell'elaborato da trattare e restituisce il suo nome
155 dp = psm.createInstance(
"com.sun.star.awt.DialogProvider")
156 oDlgXLO = dp.createDialog(
157 "vnd.sun.star.script:UltimusFree2.Dialog_XLO?language=Basic&location=application"
160 oDlgXLO.Title = titolo
162 for el
in (
"COMPUTO",
"VARIANTE",
"CONTABILITA"):
164 importo = oDoc.getSheets().getByName(el).getCellRangeByName(
168 "CME_XLO").Label =
'~Computo: € ' + importo
171 "VAR_XLO").Label =
'~Variante: € ' + importo
172 if el ==
'CONTABILITA':
174 "CON_XLO").Label =
'C~ontabilità: € ' + importo
180 if oDlgXLO.execute() == 1:
181 if oDlgXLO.getControl(
"CME_XLO").State:
182 elaborato =
'COMPUTO'
183 elif oDlgXLO.getControl(
"VAR_XLO").State:
184 elaborato =
'VARIANTE'
185 elif oDlgXLO.getControl(
"CON_XLO").State:
186 elaborato =
'CONTABILITA'
187 elif oDlgXLO.getControl(
"EP_XLO").State:
192 def ScegliElabDest(*, Title='', AskTarget=False, AskSort=False, Sort=False, ValComputo=None, ValVariante=None, ValContabilita=None):
202 vCmp =
'' if ValComputo
is None else '{:9.2f} €'.format(ValComputo)
203 vVar =
'' if ValVariante
is None else '{:9.2f} €'.format(ValVariante)
204 vCon =
'' if ValContabilita
is None else '{:9.2f} €'.format(ValContabilita)
207 def infoHandler(owner, widgetId, widget, cmdStr):
208 if widgetId ==
'sortInfo':
210 "È possibile effettuare l'ordinamento delle voci di\n"
211 "computo in base alla struttura delle categorie.\n"
212 "Se il file in origine è particolarmente disordinato,\n"
213 "riceverai un messaggio che ti indica come intervenire.\n"
214 "Se il risultato finale non dovesse andar bene, puoi\n"
215 "ripetere l'importazione senza il riordino delle voci\n"
216 "de-selezionando la casella relativa"
254 "Documento corrente",
266 Dialogs.Button(Id=
"sortInfo", Label=
"Info su ordinamento", Icon=
"Icons-24x24/info.png")
275 Dialogs.Button(Label=
"Annulla", RetVal=-1, Icon=
"Icons-24x24/cancel.png"),
283 elab = (
'COMPUTO',
'VARIANTE',
'CONTABILITA',
'Elenco')[dlg[
'elab'].getCurrent()]
284 dest = (
'CORRENTE',
'NUOVO')[dlg[
'dest'].getCurrent()
if AskTarget
else 1]
285 sort = dlg[
'sort'].getState()
287 return {
'elaborato':elab,
'destinazione':dest,
'ordina':sort}