On Jun 27, 2009, at 3:51 AM, Cor Nouws wrote:

Hi Hal,

Thnks for posting back.
Your proposed solution looks OK. When you have the final version, I'll try to take a closer look. Maybe you can post it as extension on the extension site?

I still have to find the site and look up how to post it. I was looking over what I had done and thought I had published this for others, but, perhaps with that one bug, I hadn't done that. I also like to do a write-up and put anything like that on my blog when I do it.

The code is below. It's working now. I also noticed a LONG delay from when I submit my emails to this list and when they show up. I'll have to see if I've changed my email address since I joined or something like that.

I left in the comment where the bug was. It's not there now. Of course, since I've gotten it working, I get a good point from someone else where I could have just checked the result of goLeft(). I may re- write it, but that breaks a person coding rule of mine: If it ain't broke, don't fix it. (I've spend WAY too much of my life in front of a CRT writing code!)


Hal


Regards - Cor

Hal Vaughan wrote (26-6-2009 17:19)
I may have a solution that's a bit different than what's been suggested, but thanks to both Cor and Fernand because what they wrote gave me the idea. I still have to code this and be sure it's what I want. A quick check tells me that if I have one character at the beginning, once I move the cursor over that character, I can keep trying oCurse.goLeft(), but the length of the string in the selection (sKey in this case) does not change. So I think I can just keep track of the length of the selected string. If I try goLeft() and the string length doesn't change, that should tell me I can't go left anymore and I'm at the beginning. If this works, I'll post a fixed version. I think I also exported this or was going to so other people could use them as well. If I haven't done it already, I will. I like it because it's a lot like AutoCorrect, but I can define new key phrases and replacement texts in a hurry and they are stored in the document, but can be exported to a text file and imported in another document, so they are document specific but can be transferred.

Sub InsertAutoMacroText
        oDoc = ThisComponent
        oCurs = oDoc.getCurrentController().getViewCursor()
        iEnd = false
        iCount = 0
        Do
                oCurs.goLeft(1, true)
                sKey = oCurs.getString()
                If iCount = Len(sKey) Then
                        iEnd = true
                        iCount = 0
                Else
                        sChar = Left(sKey, 1)
'                       MsgBox "String: " + sKey + ", Char: " + sChar
'BUG: This next line throws an error if we try to use this at the start of a
'document.
                        iChar = Asc(sChar)
' MsgBox "String: " + sKey + ", Char: " + sChar + ", Char Code: " + iChar
                        iCount = Len(sKey)
                        If iChar < 33 Then iEnd = true
                        If iCount > 32 Then iEnd = true
                End If
        Loop Until iEnd
        If iCount > 0 Then oCurs.goRight(1, true)
        sKey = oCurs.getString()
'       sText = "Replaced ->" + sKey + "<-"
        sText = GetDocumentVariable(sKey)
        oCurs.setString(sText)
        oCurs.collapseToEnd()
End Sub

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@api.openoffice.org
For additional commands, e-mail: dev-h...@api.openoffice.org

Reply via email to