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

Reply via email to