Andrew, Thank you for the navigation help. Your book was the first place I looked, but I was too many layers away to really understand how to get the help I needed. Hopefully next time I will be able to do it on my own! Many thanks also for all your work over the last decade!!
Matt On Wed, Nov 19, 2014 at 6:36 PM, Andrew Douglas Pitonyak < and...@pitonyak.org> wrote: > Matt, > > It occurs to me that I might come off a bit arrogant in my response, but, > my intention is to point you at a couple of places that contain the answer > to one of your questions. So, please grant me some grace while reading and > assume that I have the best of intentions. I have been having some > stressful days lately and I have very little time. > > On 11/19/2014 12:59 PM, Matt Price wrote: > >> Jim, >> >> That was it! Or, almost. I changed the line to: >> >> oText.insertTextContent(oVC, oAnno, True) >> And the annotation now gets attached to the whole range. >> >> I wish I knew how to find the documentation for these functions! I don't >> know what the various parameters actually d -- what is the final Boolean >> doing there? How do you know? >> > > The answer is well hidden, but I know where to look :-) > > If you download this document (which has a bunch of macros so you will be > warned that it has macros, you may tell it "no, do not enable macros" and > it will still work fine, you just won't be able to click on all the buttons > that run the macros from the document). > > http://www.pitonyak.org/OOME_3_0.odt > > Table 123 says the following: > > insertTextContent(XTextRange, XTextContent, boolean) > > Insert text content such as a text table, text frame, or text field. In > general, the text content should be created by the text object. If the > Boolean value is True, the text in the text range is overwritten; > otherwise, the text content is inserted after the text range. > > How did I now to put that into the document? I probably looked here: > > > AOO documentation here: > http://www.openoffice.org/api/docs/common/ref/com/sun/star/ > text/XText.html#insertTextContent > > or here: > > LO documentation here: > http://api.libreoffice.org/docs/idl/ref/interfacecom_1_ > 1sun_1_1star_1_1text_1_1XText.html > > On the web site, it reads as follows: > > void insertTextContent ( [in] com::sun::star::text::XTextRange > xRange, > [in] com::sun::star::text::XTextContent xContent, > [in] boolean bAbsorb > ) > > inserts a content, such as a text table, text frame or text field. > > Which contents are accepted is implementation-specific. Some > implementations may only accept contents which were created by the factory > that supplied the same text or the document which contains the text. > > Parameters > xRange specifies the position of insertion. > xContent the text content to be inserted. > bAbsorb specifies whether the text spanned by xRange will be > replaced. If TRUE then the content of xRange will be replaced by xContent, > otherwise xContent will be inserted at the end of xRange. > > No, if you are still reading, let me say that it was easy for me to find > because I have spent literally thousands of hours working on this stuff and > I knew exactly where to look and what to look for (especially since you had > a snippet). I do not expect that you would have found it as fast as I and, > it is also not clear that without more exposure that it would have been > clear that it was what you needed to see. > > I found the LO link by searching for > > libreoffice API insertTextContent > > on Google. While playing with macros, it is common for me inspect the > objects in question (I wrote my own object inspector, many people use > XRay). I then identify method names that look promising and then use a > Google search to figure out how to use that method. > > >> But in any case, many thanks for solving htis problem, it's actually >> pretty >> awesome to be able to do this with a single keystroke! >> > > Glad you figured it out. > > > >> m >> >> >> >> On Wed, Nov 19, 2014 at 12:38 PM, Jim Byrnes <jf_byr...@comcast.net> >> wrote: >> >> On 11/19/2014 10:55 AM, Matt Price wrote: >>> >>> Thanks Tom, >>>> >>>> I've just spent some time looking htrough Andrew Pitonyak's macro guide. >>>> It helps a little but there doesn't seem to be any direct documentation >>>> of >>>> hte functions. What I'm looking at is the second line reproduced below: >>>> >>>> oVC = ThisComponent.CurrentController.ViewCursor >>>> oText.insertTextContent(oVC.Start, oAnno, False) >>>> >>>> Matt, >>> I don't use Writer much and honestly I'm not sure what you expect to see. >>> Try this. In the above two lines change Start to End and False to True >>> and >>> put those two lines right under your "rem I don't know what to put in >>> here" >>> line. Then select some text and run the macro. >>> >>> Regards, Jim >>> >>> >>> I think oVC.Start needs to be replaced with something else, but I can't >>> >>>> figure out what. All of Andrew's examples with insertTextContent insert >>>> the content at a single location, not at a text range, so maybe I need a >>>> different function. If someone knows another method I'd appreciate the >>>> advice. >>>> >>>> Thanks, >>>> Matt >>>> >>>> On Wed, Nov 19, 2014 at 11:15 AM, Tom Davies <tomc...@gmail.com> wrote: >>>> >>>> Hi :) >>>> >>>>> The best documentation is at; >>>>> https://wiki.documentfoundation.org/Documentation/Publications >>>>> and the most recent full books are also on the official LibreOffice >>>>> website. >>>>> >>>>> For macros i think the best book by far is Andrew Pitonyak's guide on >>>>> >>>>> https://wiki.documentfoundation.org/Documentation/Other_ >>>>> Documentation_and_Resources#Programmers >>>>> >>>>> I'm not sure they will help for this specific use-case but they might >>>>> help >>>>> generally. >>>>> Regards from >>>>> Tom :) >>>>> >>>>> >>>>> >>>>> On 19 November 2014 16:05, Matt Price <mopto...@gmail.com> wrote: >>>>> >>>>> Hi, >>>>> >>>>>> I am trying to add a really simple macro that I can bind to a key. I >>>>>> just >>>>>> want ot be able ot add checkmarks to student papers veyr quickly, so I >>>>>> would like to select a sentence or other text range, then press a key, >>>>>> and >>>>>> have the ckeckmark appear in a new comment. >>>>>> >>>>>> I can almost do htis, using code stolen from the web: >>>>>> >>>>>> rem------------------------------------------- >>>>>> rem -- misleadingly named macro adds a simple hceckmark at point, or >>>>>> in >>>>>> response to highlighted text. >>>>>> sub createComment >>>>>> rem create the annotation object >>>>>> oAnno = >>>>>> ThisComponent.createInstance("com.sun.star.text.textfield. >>>>>> Annotation") >>>>>> rem Chr 10004 is the decimal for hex code 2714, "heavy >>>>>> checkmark" >>>>>> oAnno.Content = Chr(10004) >>>>>> oAnno.Author = "Matt Price" >>>>>> oText = ThisComponent.Text >>>>>> rem check to see if anything is selected >>>>>> oSels = ThisComponent.getCurrentSelection() >>>>>> If Not IsNull(oSels) Then >>>>>> rem I don't know what to put in here >>>>>> Else >>>>>> oVC = ThisComponent.CurrentController.ViewCursor >>>>>> oText.insertTextContent(oVC.Start, oAnno, False) >>>>>> End If >>>>>> end sub >>>>>> >>>>>> ----------------------- >>>>>> >>>>>> You can see that, if there's no selection, I already know how to >>>>>> insert >>>>>> the >>>>>> annotation. But I don't know how to attach the annotation to the >>>>>> selected >>>>>> range instead of just the start of the cursor. >>>>>> >>>>>> In general, I don't know where to find the funciton references or even >>>>>> the >>>>>> source code for the relevant functions. I'm finding it quite >>>>>> difficult >>>>>> to >>>>>> figure out how to learn to program -- is there comprehensive >>>>>> documentation >>>>>> somewhere? >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Matt >>>>>> >>>>>> -- >>>>>> To unsubscribe e-mail to: users+unsubscr...@global.libreoffice.org >>>>>> Problems? >>>>>> http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/ >>>>>> Posting guidelines + more: http://wiki.documentfoundation.org/ >>>>>> Netiquette >>>>>> List archive: http://listarchives.libreoffice.org/global/users/ >>>>>> All messages sent to this list will be publicly archived and cannot be >>>>>> deleted >>>>>> >>>>>> >>>>>> >>>>> >>> -- >>> To unsubscribe e-mail to: users+unsubscr...@global.libreoffice.org >>> Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to- >>> unsubscribe/ >>> Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette >>> List archive: http://listarchives.libreoffice.org/global/users/ >>> All messages sent to this list will be publicly archived and cannot be >>> deleted >>> >>> > -- > Andrew Pitonyak > My Macro Document: http://www.pitonyak.org/AndrewMacro.odt > Info: http://www.pitonyak.org/oo.php > > > > -- > To unsubscribe e-mail to: users+unsubscr...@global.libreoffice.org > Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to- > unsubscribe/ > Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette > List archive: http://listarchives.libreoffice.org/global/users/ > All messages sent to this list will be publicly archived and cannot be > deleted > -- To unsubscribe e-mail to: users+unsubscr...@global.libreoffice.org Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/ Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette List archive: http://listarchives.libreoffice.org/global/users/ All messages sent to this list will be publicly archived and cannot be deleted