Page 1 of 1
Macro for clickable User-defined Index in LO Writer
Posted: Wed Dec 07, 2022 6:04 pm
by paul1149
If this is not in the best subforum, sorry, please relocate.
I use LO 7.4. on Linux. A little while back LO implemented clickable user-defined indexes in the Writer module. As with a Table of Contents, you can now set up a user-defined index so that each entry can be clicked on to navigate to its text.
To do that, you go to the Entries tab on the Index setup dialog, click on the level of entry you want to edit, then click on a graphical depiction of the entry and select the hyperlink icon. You select hyperlink twice for each entry.
I have a macro to create the user-defined index. But I haven't been able to find what properties to specify so that all the above work would be done by it. So each time I create a U-D index I have to add that manually.
I tried to record the process, but the steps are not picked up by the macro recorder.
Does anyone know how to do this, or how to find out the pertinent properties to work with?
Thanks much.
Re: Macro for clickable User-defined Index in LO Writer
Posted: Thu Dec 08, 2022 10:52 pm
by JeJe
You might get more help if you provide an example document. Do you use MRI?
https://github.com/hanya/MRI/releases
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 1:05 am
by paul1149
Ok, I've attached a file with a user Index. After making the Index I made the level 3 entries clickable. That's the property I want to home in on.
MRI might be exactly what I'm looking for - if I can figure out how to use it. Thanks for the suggestion!
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 1:09 am
by JeJe
Just:
install it.
Run the sub LoadMriLibrary in MyMacros/MriLib (Edit: I set an IDE toolbar shortcut for this)
Then its MRI yourobjectname anywhere in your code
A window pops up with all about the object
eg put the caret where you want it and put this in a sub
vc = thiscomponent.currentcontroller.viewcursor
MRI vc
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 1:20 am
by JeJe
perhaps you just need to set the following just like any other hyperlink?
HyperLinkEvents
HyperLinkName
HyperLinkTarget
HyperLinkURL
with the caret on one of your existing links you can examine those with MRI vc as above
Edit
Select the text where you want the hyperlink then try
vc.HyperLinkName = whatever
and so on
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 3:38 am
by paul1149
JeJe wrote: ↑Fri Dec 09, 2022 1:09 am
vc = thiscomponent.currentcontroller.viewcursor
MRI vc
Thanks, that plus `Globalscope.BasicLibraries.LoadLibrary( "MRILib" )` got me running. On the Properties tab, with one of the index entries under the caret in the document, I find this in MRI:
Code: Select all
HyperLinkEvents .container.XNameReplace -INTERFACE- Maybevoid 51
HyperLinkName string "" Maybevoid 51
HyperLinkTarget string "" Maybevoid 51
HyperLinkURL string #1%19mauris%20e... Maybevoid 51
I have no idea what to do with that however. It's reporting the existence of a hyperlink, but I don't see any parameters for setting one.
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 11:12 am
by JeJe
Just the = operator
vc.HyperLinkName = yourhyperlinkname
vc.HyperLinkTarget = yourhyperlinktarget
etc.
Easiest might be to make a copy of what you have there for one you've set, make the modifications, then change the selection and apply them there.
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 12:28 pm
by paul1149
Ok, but what I'm trying to do is not to specify certain names and targets, but to make all Level 3 entries subsequently added to the Index clickable. This would be for a generic user-defined index I could generate for any document. I already have the Index-generating macro, I just need to find what to add to it to make Level 3 entries clickable.
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 1:22 pm
by JeJe
Do the HyperLinkEvents not do what you want?
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 1:24 pm
by paul1149
I have no idea how to implement it. I don't see any spec there for Level 3, for instance.
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 2:16 pm
by JeJe
Looking again HyperLinkEvents are empty anyway.
I'm not understanding what you want here. If you select some words in your document and run this:
Code: Select all
thiscomponent.currentcontroller.viewcursor.hyperlinkurl = "#1%19mauris%20elit,%20nec%20elementum%19UUser-Defined%7Ctoxmark"
It makes it a hyperlink that takes it to your first link target because the url is the same. Nothing else is needed, that's what does it.
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 2:21 pm
by paul1149
IIUC, that is the problem. It would take me to the first link. That link will not exist in other documents.
I'm not looking to embed specific links in an Index, I'm trying to make all subsequent Level 3 entries added to an index clickable. But it's quite possible I'm misunderstanding what you're saying.
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 2:27 pm
by JeJe
As you've had no other responses, you could try posting over at here - might get more help:
https://ask.libreoffice.org/
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 2:27 pm
by paul1149
ok. thanks again.
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 2:30 pm
by JeJe
Try exploring
mri thiscomponent.documentindexes.getbyindex(0)
Re: Macro for clickable User-defined Index in LO Writer
Posted: Fri Dec 09, 2022 2:52 pm
by paul1149
Interesting. I still don't see anything to work from for this specific problem, but interesting nonetheless.
Code: Select all
(Name) (Value Type) (Value) (Info.) (Attr.) (Handle)
Anchor .text.XTextRange -INTERFACE- Pseud Read_Only
BackColor long -1 105
BackGraphic .graphic.XGraphic -void- 105
BackGraphicFilter string "" 105
BackGraphicLocation .style.GraphicLocation NONE 105
BackGraphicURL string -Error-
BackTransparent boolean True 105
ContentSection .text.XTextSection -INTERFACE- Read_Only 1053
CreateFromChapter boolean False 1008
CreateFromEmbeddedObjects boolean False 1029
CreateFromGraphicObjects boolean False 1028
CreateFromLevelParagraphStyles boolean False 1052
CreateFromMarks boolean True 1005
CreateFromTables boolean False 1026
CreateFromTextFrames boolean False 1027
DocumentIndexMarks [].text.XDocumentIndexMark -Sequence- Read_Only 1050
HeaderSection .text.XTextSection -INTERFACE- Maybevoid,Read_Only 1054
HideTabLeaderAndPageNumber boolean -void- 1023
ImplementationId []byte -SEQUENCE- Pseud Read_Only
ImplementationName string SwXDocumentIndex Pseud Read_Only
IsProtected boolean True 1031
IsRelativeTabstops boolean True 1051
LevelFormat .container.XIndexReplace -INTERFACE- 1021
LevelParagraphStyles .container.XIndexReplace -INTERFACE- Read_Only 1022
LocalName string content.xml#id3... Attr. Read_Only
MetadataReference .beans.StringPair -STRUCT- Attr.
Name string User-Defined1 1057
Namespace string file:///home/pa... Attr. Read_Only
ParaStyleHeading string User Index Heading 1037
ParaStyleLevel1 string User Index 1 1039
ParaStyleLevel10 string User Index 10 1048
ParaStyleLevel2 string User Index 2 1040
ParaStyleLevel3 string User Index 3 1041
ParaStyleLevel4 string User Index 4 1042
ParaStyleLevel5 string User Index 5 1043
ParaStyleLevel6 string User Index 6 1044
ParaStyleLevel7 string User Index 7 1045
ParaStyleLevel8 string User Index 8 1046
ParaStyleLevel9 string User Index 9 1047
PropertySetInfo .beans.XPropertySetInfo -INTERFACE- Pseud Read_Only
ServiceName string com.sun.star.te... Pseud Read_Only
StringValue string file:///home/pa... Attr. Read_Only
SupportedServiceNames []string -Sequence- Pseud Read_Only
TOCBookmark string "" 1061
TOCNewLine boolean -void- 1062
TOCParagraphOutlineLevel boolean -void- 1063
TabInTOC boolean -void- 1024
TextColumns .text.XTextColumns -INTERFACE- 109
Title string Index Entries 1003
Types []type -Sequence- Pseud Read_Only
UseLevelFromSource boolean False 1020
UserIndexName string User-Defined 1036