Pannello di Controllo Moderatore ]

[Risolto] Use printer metrics for text formatting via macro

Creare una macro - Scrivere uno script - Usare le API

[Risolto] Use printer metrics for text formatting via macro

Messaggioda giuserpe » martedì 29 agosto 2017, 0:33

Ciao,
Ho cercato in lungo ed in largo la proprietà per regolare via macro la voce di menù Tools>Options...>LibreOffice Calc>Genaral>Use printer metrics for text formatting (in italiano Usa i parametri della stampante per la formattazione del testo) .
Ho trovato questo https://api.libreoffice.org/docs/idl/re ... tings.html
quindi ho prodotto il seguente codice:
Codice: Seleziona tutto   Espandi visualeStringi visuale
    oDoc = ThisComponent
    coso = oDoc.createInstance("com.sun.star.sheet.DocumentSettings")

ma ispezionando coso non ci trovo niente che abbia a che fare con PrinterIndependentLayout

Qualcuno sa indicarmi un'alternativa per gestire questa variabile?

Grazie in anticipo.
Giuseppe
Ultima modifica di giuserpe il martedì 5 settembre 2017, 10:34, modificato 2 volte in totale.
LibreOffice 5.2.7 su Windows e Linux
Avatar utente
giuserpe
 
Messaggi: 88
Iscritto il: mercoledì 23 aprile 2014, 11:53

Re: Use printer metrics for text formatting via macro

Messaggioda giuserpe » martedì 29 agosto 2017, 8:04

Guardando nei sorgenti: https://api.libreoffice.org/docs/idl/re ... ource.html leggo:
Codice: Seleziona tutto   Espandi visualeStringi visuale
// Writer, later others
[optional, property] short PrinterIndependentLayout;

quindi presumo sia una variabile gestibile solo con Writer (e confermo per prove fatte).
Intanto mi chiedevo se si potesse gestire l'opzione agendo direttamente sul dialogo sempre via macro.

sto provando con:
Codice: Seleziona tutto   Espandi visualeStringi visuale
def debug(arg=None):
    oDoc = XSCRIPTCONTEXT.getDocument()
    oSheet = oDoc.CurrentController.ActiveSheet
    ctx = XSCRIPTCONTEXT.getComponentContext()
    desktop = XSCRIPTCONTEXT.getDesktop()
    oFrame = desktop.getCurrentFrame()
    dispatchHelper = ctx.ServiceManager.createInstanceWithContext( 'com.sun.star.frame.DispatchHelper', ctx )
    oProp = PropertyValue()
    oProp.Name = 'PrinterIndependentLayout'
    oProp.Value = 3
    properties =(oProp,)
    dispatchHelper.executeDispatch(oFrame, '.uno:OptionsTreeDialog', '', 0, properties)
    # dispatchHelper.disposing
    return

(scusate se uso Python, ma come vedete è di facile lettura anche per color che usano Basic).
Sto andando proprio alla cieca, ed infatti l'uso di oProp.Name = 'PrinterIndependentLayout' è pura improvvisazione.
Naturalmente l'unico effetto che ottengo è l'apertura del dialogo.
LibreOffice 5.2.7 su Windows e Linux
Avatar utente
giuserpe
 
Messaggi: 88
Iscritto il: mercoledì 23 aprile 2014, 11:53

Re: Use printer metrics for text formatting via macro

Messaggioda hubert lambert » martedì 5 settembre 2017, 8:11

Ciao giuserpe,

Devi utilizzare il servizio GlobalSheetSettings:

Codice: Seleziona tutto   Espandi visualeStringi visuale
    doc = XSCRIPTCONTEXT.getDocument()
    ctx = XSCRIPTCONTEXT.getComponentContext()
    gss = ctx.ServiceManager.createInstanceWithContext("com.sun.star.sheet.GlobalSheetSettings", ctx)
    gss.UsePrinterMetrics = True

Saluti.
OpenOffice 4.1.3 | LibreOffice 5.3.3
Win7 + LinuxMint
hubert lambert
Volontario
Volontario
 
Messaggi: 32
Iscritto il: venerdì 9 giugno 2017, 12:48

Re: Use printer metrics for text formatting via ma

Messaggioda giuserpe » martedì 5 settembre 2017, 10:30

Ti ringrazio tantissimo.
Intanto ero ad un passo dalla soluzione e forse non ci sarei mai arrivato da solo: mi mancava gss.UsePrinterMetrics = True, ma ero concentrato su PrinterIndependentLayout.
A questo punto chiedo, dove trovo documentazione di ordinaria comprensione riguardo questo genere di questioni? Ma, premesso che non ho una formazione informatica, forse chiedo troppo.

Grazie ancora
Giuseppe
LibreOffice 5.2.7 su Windows e Linux
Avatar utente
giuserpe
 
Messaggi: 88
Iscritto il: mercoledì 23 aprile 2014, 11:53

Re: Use printer metrics for text formatting via ma

Messaggioda hubert lambert » martedì 5 settembre 2017, 14:00

giuserpe ha scritto:Ti ringrazio tantissimo.

Mi fa piacere che funzioni ;) .

giuserpe ha scritto:A questo punto chiedo, dove trovo documentazione di ordinaria comprensione riguardo questo genere di questioni?

Questa volta era abbastanza semplice: ho ciercato nella documentazione ufficiale colla parole chiave "metrics"! :)
OpenOffice 4.1.3 | LibreOffice 5.3.3
Win7 + LinuxMint
hubert lambert
Volontario
Volontario
 
Messaggi: 32
Iscritto il: venerdì 9 giugno 2017, 12:48


Torna a Macro e UNO API

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite