quando metto in esecuzione una macro che fa parecchie operazioni portando via del tempo, avvio un dialog con l'istruzione che segue.
Codice: Seleziona tutto
CreateUnoDialog(DialogLibraries.UltimusFree2.DialogAttesa).Execute()
Codice: Seleziona tutto
CreateUnoDialog(DialogLibraries.UltimusFree2.DialogAttesa).Execute()
Codice: Seleziona tutto
Private Sub DlgClose
Me.endExecute()
End sub
Codice: Seleziona tutto
psm = uno.getComponentContext().ServiceManager
dp = psm.createInstance("com.sun.star.awt.DialogProvider")
oDialogo_attesa = dp.createDialog("vnd.sun.star.script:UltimusFree2.DlgAttesa?language=Basic&location=application")
########################################################################
class attesa (threading.Thread):
#~ http://bit.ly/2fzfsT7
'''avvia il dialogo di attesa'''
def __init__(self):
threading.Thread.__init__(self)
def run(self):
oDialog1Model = oDialogo_attesa.Model # oDialogo_attesa è una variabile generale
oDialog1Model.Title = 'Operazione in corso...'
sUrl = LeenO_path()+'/icons/y4RRIFJ.gif'
oDialogo_attesa.getModel().ImageControl1.ImageURL=sUrl
oDialogo_attesa.execute()
########################################################################
def firme_in_calce (arg=None):
attesa().start() # avvia il diaolgo di attesa che viene chiuso alla fine con oDialogo_attesa.endExecute()
'''
Inserisce (in COMPUTO o VARIANTE) un riepilogo delle categorie
ed i dati necessari alle firme
'''
oDoc = XSCRIPTCONTEXT.getDocument()
oSheet = oDoc.CurrentController.ActiveSheet
oDoc.CurrentController.ZoomValue = 400
if oSheet.Name in ('COMPUTO', 'VARIANTE', 'CONTABILITA'):
lRowF = ultima_voce(oSheet)+2
oDoc.CurrentController.setFirstVisibleRow(lRowF-2)
lRowE = getLastUsedCell(oSheet).EndRow
for i in range(lRowF, getLastUsedCell(oSheet).EndRow+1):
if oSheet.getCellByPosition(0, i).CellStyle == "Riga_rossa_Chiudi":
lRowE = i
break
if lRowE > lRowF+1:
oSheet.getRows().removeByIndex(lRowF, lRowE-lRowF)
#~ else:
riga_corrente = lRowF+2
if oDoc.getSheets().hasByName('S2') == True:
ii = 11
vv = 18
ss = 41
col ='S'
else:
ii = 8
vv = 9
ss = 9
col ='J'
oSheet.getRows().insertByIndex(lRowF, 17)
oSheet.getCellRangeByPosition(0, lRowF, ss, lRowF+17-1).CellStyle = 'ULTIMUS'
#~ INSERIMENTO TITOLO
oSheet.getCellByPosition(2 , riga_corrente).String = 'Riepilogo Categorie'
oSheet.getCellByPosition(ii , riga_corrente).String = 'Incidenze %'
oSheet.getCellByPosition(vv , riga_corrente).String = 'Importi €'
oSheet.getCellRangeByPosition (ii,riga_corrente,vv,riga_corrente).CellStyle = "Ultimus_centro"
inizio_gruppo = riga_corrente
riga_corrente += 1
for i in range (0, lRowF):
if oSheet.getCellByPosition(1 , i).CellStyle == 'Livello-0-scritta':
#~ chi(riga_corrente)
oSheet.getRows().insertByIndex(riga_corrente,1)
oSheet.getCellByPosition(1 , riga_corrente).Formula = '=B' + str(i+1)
oSheet.getCellByPosition(1 , riga_corrente).CellStyle = 'Ultimus_destra'
oSheet.getCellByPosition(2 , riga_corrente).Formula = '=C' + str(i+1)
#~ chi(formulaSCat)
oSheet.getCellByPosition(ii , riga_corrente).Formula = '=' + col + str(riga_corrente+1) + '/' + col + str(lRowF) + '*100'
oSheet.getCellByPosition(ii, riga_corrente).CellStyle = 'Ultimus %'
oSheet.getCellByPosition(vv , riga_corrente).Formula = '='+ col + str(i+1)
oSheet.getCellByPosition(vv , riga_corrente).CellStyle = 'Ultimus_totali'
riga_corrente += 1
elif oSheet.getCellByPosition(1 , i).CellStyle == 'Livello-1-scritta':
#~ chi(riga_corrente)
oSheet.getRows().insertByIndex(riga_corrente,1)
oSheet.getCellByPosition(1 , riga_corrente).Formula = '=B' + str(i+1)
oSheet.getCellByPosition(1 , riga_corrente).CellStyle = 'Ultimus_destra'
oSheet.getCellByPosition(2 , riga_corrente).Formula = '=CONCATENATE (" ";C' + str(i+1) + ')'
#~ chi(formulaSCat)
oSheet.getCellByPosition(ii , riga_corrente).Formula = '=' + col + str(riga_corrente+1) + '/' + col + str(lRowF) + '*100'
oSheet.getCellByPosition(ii, riga_corrente).CellStyle = 'Ultimus %'
oSheet.getCellByPosition(vv , riga_corrente).Formula = '='+ col + str(i+1)
oSheet.getCellByPosition(vv , riga_corrente).CellStyle = 'Ultimus_bordo'
riga_corrente += 1
elif oSheet.getCellByPosition(1 , i).CellStyle == 'livello2 valuta':
#~ chi(riga_corrente)
oSheet.getRows().insertByIndex(riga_corrente,1)
oSheet.getCellByPosition(1 , riga_corrente).Formula = '=B' + str(i+1)
oSheet.getCellByPosition(1 , riga_corrente).CellStyle = 'Ultimus_destra'
oSheet.getCellByPosition(2 , riga_corrente).Formula = '=CONCATENATE (" ";C' + str(i+1) + ')'
#~ chi(formulaSCat)
oSheet.getCellByPosition(ii , riga_corrente).Formula = '=' + col + str(riga_corrente+1) + '/' + col + str(lRowF) + '*100'
oSheet.getCellByPosition(ii, riga_corrente).CellStyle = 'Ultimus %'
oSheet.getCellByPosition(vv , riga_corrente).Formula = '='+ col + str(i+1)
oSheet.getCellByPosition(vv , riga_corrente).CellStyle = 'ULTIMUS'
riga_corrente += 1
#~ riga_corrente +=1
oSheet.getCellByPosition(2 , riga_corrente).String= 'T O T A L E €'
oSheet.getCellByPosition(2 , riga_corrente).CellStyle = 'Ultimus_destra'
oSheet.getCellByPosition(vv , riga_corrente).Formula = '=' + col + str(lRowF)
oSheet.getCellByPosition(vv , riga_corrente).CellStyle = 'Ultimus_Bordo_sotto'
fine_gruppo = riga_corrente
#~ DATA
oSheet.getCellByPosition(2 , riga_corrente+3).Formula = '=CONCATENATE("Data, ";TEXT(NOW();"DD/MM/YYYY"))'
#~ consolido il risultato
oRange = oSheet.getCellByPosition(2 , riga_corrente+3)
flags = (oDoc.createInstance('com.sun.star.sheet.CellFlags.FORMULA'))
aSaveData = oRange.getDataArray()
oRange.setDataArray(aSaveData)
oSheet.getCellByPosition(2 , riga_corrente+5).Formula = 'Il Progettista'
oSheet.getCellByPosition(2 , riga_corrente+6).Formula = '=CONCATENATE ("(";S2.C13;")")'
oSheet.getCellRangeByPosition(2 , riga_corrente+5, 2 , riga_corrente+6).CellStyle = 'Ultimus_centro'
oDialogo_attesa.endExecute()
oDoc.CurrentController.ZoomValue = 100
########################################################################
class myThread2 (threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
firme_in_calce ()
########################################################################
def main (arg=None):
myThread2().start()
Codice: Seleziona tutto
sUrl = LeenO_path()+'/icons/y4RRIFJ.gif'
oDialogo_attesa.getModel().ImageControl1.ImageURL=sUrl