Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1378
  • Last Modified:

Attempting to insert image at end of openoffice writer doc

My goal is to have a script that will insert text and an image at the end of a Writer doc. The attached code works fine on an empty doc, but when I run it a second time on the same document (after it contains text and an image), I get the exception

"  File "test.py", line 33, in ?
    oViewCursor.gotoEnd(False)
uno.com.sun.star.uno.RuntimeException: no text selection"


 
import sys
import Danny.OOo.OOoLib as OOoLib
import unohelper
import os.path
import glob
from com.sun.star.beans import PropertyValue
from array import array


L =  [ PropertyValue() for i in range(4)]


L[0].Name="FileName"
#L[0].Value="file:///home/ollie/Desktop/Screenshot.png"
L[0].Value="file://" + sys.argv[1]
print L[0].Value
L[1].Name="FilterName"
L[1].Value="<All formats>"
L[2].Name = "AsLink"
L[2].Value = False
L[3].Name="Style"
L[3].Value="Graphics"

desktop = OOoLib.getDesktop()
doc=desktop.getCurrentComponent()

oText = doc.getText()
xEnd = oText.getEnd()
xEnd.setString("This is some text.\n")


oViewCursor = doc.CurrentController.ViewCursor
oViewCursor.gotoEnd(False)


dispatcher = OOoLib.getServiceManager().createInstance('com.sun.star.frame.DispatchHelper') 
dispatcher.executeDispatch(doc.getCurrentController(), ".uno:InsertGraphic", "", 0, tuple(L))


#dispatcher.executeDispatch(doc.getCurrentController().getFrame(),'.uno:InsertGraphic','',0,tuple(L))

Open in new window

0
opike
Asked:
opike
  • 7
  • 2
2 Solutions
 
MytixCommented:
Does replacing this line:
oViewCursor = doc.CurrentController.ViewCursor
oViewCursor.gotoEnd(False)

Open in new window

With this:
oViewCursor = doc.CurrentController.ViewCursor
oViewCursor.gotoStart(True)
oViewCursor.gotoEnd(False)

Open in new window

Work? I think it needs to be forced or something

0
 
opikeAuthor Commented:
Gives me the same error on the gotoStart(True) call:

Traceback (most recent call last):
  File "test.py", line 33, in ?
    oViewCursor.gotoStart(True)
uno.com.sun.star.uno.RuntimeException: no text selection
0
 
opikeAuthor Commented:
I've figured out that the error occurs the 2nd time because after the first run, the script leaves the image as being selected in the document and the gotoEnd and gotoStart functions must be working on the current selection and not the entire document.

I'm now researching on how to fix this...
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
opikeAuthor Commented:
I found this method:
doc.CurrentController.select(<object>)

But it requires that another object is specified to set the selection to, where here I'd like to unselect everything. There doesn't appear to be a way to do that.
0
 
MytixCommented:
Wasn't there a getEmpty() function?
0
 
opikeAuthor Commented:
You'll have to help me out with some more specifics....

I didn't see a getEmpty() function in the api documentation:
http://api.openoffice.org/docs/common/ref/index-files/index-1.html
0
 
opikeAuthor Commented:
The trick of recording a macro to see what code gets created by Writer isn't helpful here since it appears that the macro recorder doesn't record selection events.
0
 
opikeAuthor Commented:
Got this working... I added the following line to the end of the script to deselect the image. Then subsequent executions of the script ran fine.

dispatcher.executeDispatch(doc.getCurrentController(), ".uno:Escape", "", 0, tuple())
0
 
opikeAuthor Commented:
Figured out the solution.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 7
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now