[Risolto] Use printer metrics for text formatting via macro

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

[Risolto] Use printer metrics for text formatting via macro

Messaggio da giuserpe »

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

    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, 11:34, modificato 2 volte in totale.
LibreOffice fresh su Windows e Linux
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: Use printer metrics for text formatting via macro

Messaggio da giuserpe »

Guardando nei sorgenti: https://api.libreoffice.org/docs/idl/re ... ource.html leggo:

Codice: Seleziona tutto

// 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

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 fresh su Windows e Linux
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Use printer metrics for text formatting via macro

Messaggio da hubert lambert »

Ciao giuserpe,

Devi utilizzare il servizio GlobalSheetSettings:

Codice: Seleziona tutto

    doc = XSCRIPTCONTEXT.getDocument()
    ctx = XSCRIPTCONTEXT.getComponentContext()
    gss = ctx.ServiceManager.createInstanceWithContext("com.sun.star.sheet.GlobalSheetSettings", ctx)
    gss.UsePrinterMetrics = True
Saluti.
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: Use printer metrics for text formatting via ma

Messaggio da giuserpe »

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 fresh su Windows e Linux
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Use printer metrics for text formatting via ma

Messaggio da hubert lambert »

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.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
Rispondi