Improve example python code in scripting.
* Modified the code to be more pythonic. * If "len(theString) == 0", then "not theString" evaluates to True. * "theString[0].isupper()" and "theString[1].isupper()" can be combined. * Remove unused imported string module * Wrap long lines * run autopep8 to prettify * ... Change-Id: Ic8aaa0728a43936cd4c6e1ed590e01ba8f0fbf5b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104136 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
This commit is contained in:
parent
3f425069fc
commit
5fb0e0f68b
@ -15,7 +15,7 @@ $(eval $(call gb_Package_add_files_with_dir,scripting_ScriptsPython,$(LIBO_SHARE
|
|||||||
python/InsertText.py \
|
python/InsertText.py \
|
||||||
python/NamedRanges.py \
|
python/NamedRanges.py \
|
||||||
python/SetCellColor.py \
|
python/SetCellColor.py \
|
||||||
python/pythonSamples/TableSample.py \
|
python/TableSample.py \
|
||||||
))
|
))
|
||||||
|
|
||||||
# vim: set noet sw=4 ts=4:
|
# vim: set noet sw=4 ts=4:
|
||||||
|
@ -16,61 +16,77 @@
|
|||||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||||
#
|
#
|
||||||
|
|
||||||
# helper function
|
def getNewString(theString):
|
||||||
def getNewString( theString ) :
|
"""helper function
|
||||||
if( not theString or len(theString) ==0) :
|
"""
|
||||||
|
if (not theString):
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
# should we tokenize on "."?
|
# should we tokenize on "."?
|
||||||
if theString[0].isupper() and len(theString)>=2 and theString[1].isupper() :
|
if len(theString) >= 2 and theString[:2].isupper():
|
||||||
# first two chars are UC => first UC, rest LC
|
# first two chars are UC => first UC, rest LC
|
||||||
newString=theString[0:1].upper() + theString[1:].lower();
|
newString = theString[0].upper() + theString[1:].lower()
|
||||||
|
|
||||||
elif theString[0].isupper():
|
elif theString[0].isupper():
|
||||||
# first char UC => all to LC
|
# first char UC => all to LC
|
||||||
newString=theString.lower()
|
newString = theString.lower()
|
||||||
else: # all to UC.
|
|
||||||
newString=theString.upper()
|
|
||||||
return newString;
|
|
||||||
|
|
||||||
def capitalisePython( ):
|
else:
|
||||||
"""Change the case of a selection, or current word from upper case, to first char upper case, to all lower case to upper case..."""
|
# all to UC.
|
||||||
import string
|
newString = theString.upper()
|
||||||
|
|
||||||
|
return newString
|
||||||
|
|
||||||
|
|
||||||
|
def capitalisePython():
|
||||||
|
"""Change the case of the selected or current word(s).
|
||||||
|
If at least the first two characters are "UPpercase, then it is changed
|
||||||
|
to first char "Uppercase".
|
||||||
|
If the first character is "Uppercase", then it is changed to
|
||||||
|
all "lowercase".
|
||||||
|
Otherwise, all are changed to "UPPERCASE".
|
||||||
|
"""
|
||||||
# The context variable is of type XScriptContext and is available to
|
# The context variable is of type XScriptContext and is available to
|
||||||
# all BeanShell scripts executed by the Script Framework
|
# all BeanShell scripts executed by the Script Framework
|
||||||
xModel = XSCRIPTCONTEXT.getDocument()
|
xModel = XSCRIPTCONTEXT.getDocument()
|
||||||
|
|
||||||
#the writer controller impl supports the css.view.XSelectionSupplier interface
|
# the writer controller impl supports the css.view.XSelectionSupplier
|
||||||
|
# interface
|
||||||
xSelectionSupplier = xModel.getCurrentController()
|
xSelectionSupplier = xModel.getCurrentController()
|
||||||
|
|
||||||
#see section 7.5.1 of developers' guide
|
# see section 7.5.1 of developers' guide
|
||||||
xIndexAccess = xSelectionSupplier.getSelection()
|
xIndexAccess = xSelectionSupplier.getSelection()
|
||||||
count = xIndexAccess.getCount();
|
count = xIndexAccess.getCount()
|
||||||
if(count>=1): #ie we have a selection
|
|
||||||
i=0
|
|
||||||
while i < count :
|
|
||||||
xTextRange = xIndexAccess.getByIndex(i);
|
|
||||||
#print "string: " + xTextRange.getString();
|
|
||||||
theString = xTextRange.getString();
|
|
||||||
if len(theString)==0 :
|
|
||||||
# sadly we can have a selection where nothing is selected
|
|
||||||
# in this case we get the XWordCursor and make a selection!
|
|
||||||
xText = xTextRange.getText();
|
|
||||||
xWordCursor = xText.createTextCursorByRange(xTextRange);
|
|
||||||
if not xWordCursor.isStartOfWord():
|
|
||||||
xWordCursor.gotoStartOfWord(False);
|
|
||||||
xWordCursor.gotoNextWord(True);
|
|
||||||
theString = xWordCursor.getString();
|
|
||||||
newString = getNewString(theString);
|
|
||||||
if newString :
|
|
||||||
xWordCursor.setString(newString);
|
|
||||||
xSelectionSupplier.select(xWordCursor);
|
|
||||||
else :
|
|
||||||
|
|
||||||
newString = getNewString( theString );
|
if(count >= 1): # ie we have a selection
|
||||||
if newString:
|
i = 0
|
||||||
xTextRange.setString(newString);
|
|
||||||
xSelectionSupplier.select(xTextRange);
|
while i < count:
|
||||||
i+= 1
|
xTextRange = xIndexAccess.getByIndex(i)
|
||||||
|
theString = xTextRange.getString()
|
||||||
|
# print("theString")
|
||||||
|
if len(theString) == 0:
|
||||||
|
# sadly we can have a selection where nothing is selected
|
||||||
|
# in this case we get the XWordCursor and make a selection!
|
||||||
|
xText = xTextRange.getText()
|
||||||
|
xWordCursor = xText.createTextCursorByRange(xTextRange)
|
||||||
|
|
||||||
|
if not xWordCursor.isStartOfWord():
|
||||||
|
xWordCursor.gotoStartOfWord(False)
|
||||||
|
|
||||||
|
xWordCursor.gotoNextWord(True)
|
||||||
|
theString = xWordCursor.getString()
|
||||||
|
newString = getNewString(theString)
|
||||||
|
|
||||||
|
if newString:
|
||||||
|
xWordCursor.setString(newString)
|
||||||
|
xSelectionSupplier.select(xWordCursor)
|
||||||
|
else:
|
||||||
|
newString = getNewString(theString)
|
||||||
|
if newString:
|
||||||
|
xTextRange.setString(newString)
|
||||||
|
xSelectionSupplier.select(xTextRange)
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
|
||||||
# lists the scripts, that shall be visible inside OOo. Can be omitted, if
|
# lists the scripts, that shall be visible inside OOo. Can be omitted, if
|
||||||
|
@ -18,21 +18,30 @@
|
|||||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||||
#
|
#
|
||||||
|
|
||||||
def HelloWorldPython( ):
|
def HelloWorldPython():
|
||||||
"""Prints the string 'Hello World(in Python)' into the current document"""
|
"""Prints the string 'Hello World (in Python)' into the current document.
|
||||||
#get the doc from the scripting context which is made available to all scripts
|
"""
|
||||||
|
|
||||||
|
# Get the doc from the scripting context which is made available to all
|
||||||
|
# scripts.
|
||||||
desktop = XSCRIPTCONTEXT.getDesktop()
|
desktop = XSCRIPTCONTEXT.getDesktop()
|
||||||
model = desktop.getCurrentComponent()
|
model = desktop.getCurrentComponent()
|
||||||
#check whether there's already an opened document. Otherwise, create a new one
|
|
||||||
|
# Check whether there's already an opened document.
|
||||||
|
# Otherwise, create a new one
|
||||||
if not hasattr(model, "Text"):
|
if not hasattr(model, "Text"):
|
||||||
model = desktop.loadComponentFromURL(
|
model = desktop.loadComponentFromURL(
|
||||||
"private:factory/swriter","_blank", 0, () )
|
"private:factory/swriter", "_blank", 0, ())
|
||||||
#get the XText interface
|
|
||||||
|
# get the XText interface
|
||||||
text = model.Text
|
text = model.Text
|
||||||
#create an XTextRange at the end of the document
|
|
||||||
|
# create an XTextRange at the end of the document
|
||||||
tRange = text.End
|
tRange = text.End
|
||||||
#and set the string
|
|
||||||
|
# and set the string
|
||||||
tRange.String = "Hello World (in Python)"
|
tRange.String = "Hello World (in Python)"
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# vim: set shiftwidth=4 softtabstop=4 expandtab:
|
# vim: set shiftwidth=4 softtabstop=4 expandtab:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# HelloWorld python script for the scripting framework
|
# Example python script for the scripting framework
|
||||||
|
|
||||||
#
|
#
|
||||||
# This file is part of the LibreOffice project.
|
# This file is part of the LibreOffice project.
|
||||||
@ -20,9 +20,11 @@
|
|||||||
|
|
||||||
def InsertText(text):
|
def InsertText(text):
|
||||||
"""Inserts the argument string into the current document.
|
"""Inserts the argument string into the current document.
|
||||||
If there is a selection, the selection is replaced by it."""
|
If there is a selection, the selection is replaced by it.
|
||||||
|
"""
|
||||||
|
|
||||||
# Get the doc from the scripting context which is made available to all scripts
|
# Get the doc from the scripting context which is made available to
|
||||||
|
# all scripts.
|
||||||
desktop = XSCRIPTCONTEXT.getDesktop()
|
desktop = XSCRIPTCONTEXT.getDesktop()
|
||||||
model = desktop.getCurrentComponent()
|
model = desktop.getCurrentComponent()
|
||||||
|
|
||||||
@ -34,28 +36,30 @@ def InsertText(text):
|
|||||||
# all BeanShell scripts executed by the Script Framework
|
# all BeanShell scripts executed by the Script Framework
|
||||||
xModel = XSCRIPTCONTEXT.getDocument()
|
xModel = XSCRIPTCONTEXT.getDocument()
|
||||||
|
|
||||||
#the writer controller impl supports the css.view.XSelectionSupplier interface
|
# The writer controller impl supports the css.view.XSelectionSupplier
|
||||||
|
# interface.
|
||||||
xSelectionSupplier = xModel.getCurrentController()
|
xSelectionSupplier = xModel.getCurrentController()
|
||||||
|
|
||||||
#see section 7.5.1 of developers' guide
|
# See section 7.5.1 of developers' guide
|
||||||
xIndexAccess = xSelectionSupplier.getSelection()
|
xIndexAccess = xSelectionSupplier.getSelection()
|
||||||
count = xIndexAccess.getCount();
|
count = xIndexAccess.getCount()
|
||||||
if count >= 1: #ie we have a selection
|
|
||||||
|
if count >= 1: # ie we have a selection
|
||||||
i = 0
|
i = 0
|
||||||
|
|
||||||
while i < count:
|
while i < count:
|
||||||
xTextRange = xIndexAccess.getByIndex(i);
|
xTextRange = xIndexAccess.getByIndex(i)
|
||||||
theString = xTextRange.getString();
|
theString = xTextRange.getString()
|
||||||
if not len(theString):
|
|
||||||
# Nothing really selected; just insert.
|
|
||||||
xText = xTextRange.getText();
|
|
||||||
xWordCursor = xText.createTextCursorByRange(xTextRange);
|
|
||||||
xWordCursor.setString(text);
|
|
||||||
xSelectionSupplier.select(xWordCursor);
|
|
||||||
else:
|
|
||||||
# Replace the selection.
|
|
||||||
xTextRange.setString(text);
|
|
||||||
xSelectionSupplier.select(xTextRange);
|
|
||||||
|
|
||||||
i += 1
|
if not len(theString):
|
||||||
|
# Nothing really selected, just insert.
|
||||||
|
xText = xTextRange.getText()
|
||||||
|
xWordCursor = xText.createTextCursorByRange(xTextRange)
|
||||||
|
xWordCursor.setString(text)
|
||||||
|
xSelectionSupplier.select(xWordCursor)
|
||||||
|
else:
|
||||||
|
# Replace the selection.
|
||||||
|
xTextRange.setString(text)
|
||||||
|
xSelectionSupplier.select(xTextRange)
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
import traceback
|
import traceback
|
||||||
import uno
|
import uno
|
||||||
|
|
||||||
|
|
||||||
def GetNamedRanges():
|
def GetNamedRanges():
|
||||||
"""Returns a list of the named ranges in the document.
|
"""Returns a list of the named ranges in the document.
|
||||||
"""
|
"""
|
||||||
@ -28,6 +29,7 @@ def GetNamedRanges():
|
|||||||
traceback.print_tb(tb)
|
traceback.print_tb(tb)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def DefineNamedRange(sheet, x0, y0, width, height, name):
|
def DefineNamedRange(sheet, x0, y0, width, height, name):
|
||||||
"""Defines a new (or replaces an existing) named range on a sheet,
|
"""Defines a new (or replaces an existing) named range on a sheet,
|
||||||
using zero-based absolute coordinates
|
using zero-based absolute coordinates
|
||||||
@ -37,7 +39,9 @@ def DefineNamedRange(sheet, x0, y0, width, height, name):
|
|||||||
# FIXME: Is there some Python-callable API to turn a row and column into an A1 string?
|
# FIXME: Is there some Python-callable API to turn a row and column into an A1 string?
|
||||||
# This obviously works only for the first 26 columns.
|
# This obviously works only for the first 26 columns.
|
||||||
abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
content = "$" + sheet + "." + "$" + abc[x0 : x0+1] + "$" + str(y0+1) + ":" + "$" + abc[x0+width-1 : x0+width] + "$" + str(y0+height)
|
content = "$" + sheet + "." + "$" + \
|
||||||
|
abc[x0: x0+1] + "$" + str(y0+1) + ":" + "$" + abc[x0+width -
|
||||||
|
1: x0+width] + "$" + str(y0+height)
|
||||||
position = uno.createUnoStruct('com.sun.star.table.CellAddress')
|
position = uno.createUnoStruct('com.sun.star.table.CellAddress')
|
||||||
position.Sheet = 0
|
position.Sheet = 0
|
||||||
position.Column = 0
|
position.Column = 0
|
||||||
@ -45,6 +49,7 @@ def DefineNamedRange(sheet, x0, y0, width, height, name):
|
|||||||
model.NamedRanges.addNewByName(name, content, position, 0)
|
model.NamedRanges.addNewByName(name, content, position, 0)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def DeleteNamedRange(name):
|
def DeleteNamedRange(name):
|
||||||
try:
|
try:
|
||||||
desktop = XSCRIPTCONTEXT.getDesktop()
|
desktop = XSCRIPTCONTEXT.getDesktop()
|
||||||
|
@ -1,15 +1,38 @@
|
|||||||
|
#
|
||||||
|
# This file is part of the LibreOffice project.
|
||||||
|
#
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
#
|
||||||
|
# This file incorporates work covered by the following license notice:
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed
|
||||||
|
# with this work for additional information regarding copyright
|
||||||
|
# ownership. The ASF licenses this file to you under the Apache
|
||||||
|
# License, Version 2.0 (the "License"); you may not use this file
|
||||||
|
# except in compliance with the License. You may obtain a copy of
|
||||||
|
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||||
|
#
|
||||||
|
|
||||||
def SetCellColor(x, y, color):
|
def SetCellColor(x, y, color):
|
||||||
"""Sets the background of the cell at (x,y) (zero-based column and row
|
"""Sets the background of the cell at (x,y) (zero-based column and row
|
||||||
indices, for example (2,3) == C4) on the first sheet and
|
indices, for example (2,3) == C4) on the first sheet and
|
||||||
returns the contents of the cell as a string.
|
returns the contents of the cell as a string.
|
||||||
"""
|
"""
|
||||||
#get the doc from the scripting context which is made available to all scripts
|
# Get the doc from the scripting context which is made available to
|
||||||
|
# all scripts.
|
||||||
desktop = XSCRIPTCONTEXT.getDesktop()
|
desktop = XSCRIPTCONTEXT.getDesktop()
|
||||||
model = desktop.getCurrentComponent()
|
model = desktop.getCurrentComponent()
|
||||||
#check whether there's already an opened document
|
|
||||||
|
# Check whether there's already an opened document.
|
||||||
if not hasattr(model, "Sheets"):
|
if not hasattr(model, "Sheets"):
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
sheet = model.Sheets.Sheet1
|
sheet = model.Sheets.Sheet1
|
||||||
cell = sheet.getCellByPosition(x, y)
|
cell = sheet.getCellByPosition(x, y)
|
||||||
|
|
||||||
cell.CellBackColor = color
|
cell.CellBackColor = color
|
||||||
|
|
||||||
return cell.String
|
return cell.String
|
||||||
|
131
scripting/examples/python/TableSample.py
Normal file
131
scripting/examples/python/TableSample.py
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
#
|
||||||
|
# This file is part of the LibreOffice project.
|
||||||
|
#
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
#
|
||||||
|
# This file incorporates work covered by the following license notice:
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
# contributor license agreements. See the NOTICE file distributed
|
||||||
|
# with this work for additional information regarding copyright
|
||||||
|
# ownership. The ASF licenses this file to you under the Apache
|
||||||
|
# License, Version 2.0 (the "License"); you may not use this file
|
||||||
|
# except in compliance with the License. You may obtain a copy of
|
||||||
|
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||||
|
#
|
||||||
|
|
||||||
|
import uno
|
||||||
|
|
||||||
|
# a UNO struct later needed to create a document
|
||||||
|
from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK
|
||||||
|
from com.sun.star.text.TextContentAnchorType import AS_CHARACTER
|
||||||
|
from com.sun.star.awt import Size
|
||||||
|
|
||||||
|
|
||||||
|
def insertTextIntoCell(table, cellName, text, color):
|
||||||
|
tableText = table.getCellByName(cellName)
|
||||||
|
cursor = tableText.createTextCursor()
|
||||||
|
|
||||||
|
cursor.setPropertyValue("CharColor", color)
|
||||||
|
tableText.setString(text)
|
||||||
|
|
||||||
|
|
||||||
|
def createTable():
|
||||||
|
"""Creates a new writer document and inserts a table with some data
|
||||||
|
(also known as the SWriter sample).
|
||||||
|
"""
|
||||||
|
ctx = uno.getComponentContext()
|
||||||
|
smgr = ctx.ServiceManager
|
||||||
|
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
|
||||||
|
|
||||||
|
# open a writer document
|
||||||
|
doc = desktop.loadComponentFromURL(
|
||||||
|
"private:factory/swriter", "_blank", 0, ())
|
||||||
|
|
||||||
|
text = doc.Text
|
||||||
|
cursor = text.createTextCursor()
|
||||||
|
text.insertString(
|
||||||
|
cursor,
|
||||||
|
"The first line in the newly created text document.\n",
|
||||||
|
0)
|
||||||
|
text.insertString(
|
||||||
|
cursor,
|
||||||
|
"Now we are in the second line\n",
|
||||||
|
0)
|
||||||
|
|
||||||
|
# create a text table
|
||||||
|
table = doc.createInstance("com.sun.star.text.TextTable")
|
||||||
|
|
||||||
|
# with 4 rows and 4 columns
|
||||||
|
table.initialize(4, 4)
|
||||||
|
|
||||||
|
text.insertTextContent(cursor, table, 0)
|
||||||
|
rows = table.Rows
|
||||||
|
|
||||||
|
table.setPropertyValue("BackTransparent", uno.Bool(0))
|
||||||
|
table.setPropertyValue("BackColor", 13421823)
|
||||||
|
row = rows.getByIndex(0)
|
||||||
|
row.setPropertyValue("BackTransparent", uno.Bool(0))
|
||||||
|
row.setPropertyValue("BackColor", 6710932)
|
||||||
|
|
||||||
|
textColor = 16777215
|
||||||
|
|
||||||
|
insertTextIntoCell(table, "A1", "FirstColumn", textColor)
|
||||||
|
insertTextIntoCell(table, "B1", "SecondColumn", textColor)
|
||||||
|
insertTextIntoCell(table, "C1", "ThirdColumn", textColor)
|
||||||
|
insertTextIntoCell(table, "D1", "SUM", textColor)
|
||||||
|
|
||||||
|
table.getCellByName("A2").setValue(22.5)
|
||||||
|
table.getCellByName("B2").setValue(5615.3)
|
||||||
|
table.getCellByName("C2").setValue(-2315.7)
|
||||||
|
table.getCellByName("D2").setFormula("sum <A2:C2>")
|
||||||
|
|
||||||
|
table.getCellByName("A3").setValue(21.5)
|
||||||
|
table.getCellByName("B3").setValue(615.3)
|
||||||
|
table.getCellByName("C3").setValue(-315.7)
|
||||||
|
table.getCellByName("D3").setFormula("sum <A3:C3>")
|
||||||
|
|
||||||
|
table.getCellByName("A4").setValue(121.5)
|
||||||
|
table.getCellByName("B4").setValue(-615.3)
|
||||||
|
table.getCellByName("C4").setValue(415.7)
|
||||||
|
table.getCellByName("D4").setFormula("sum <A4:C4>")
|
||||||
|
|
||||||
|
cursor.setPropertyValue("CharColor", 255)
|
||||||
|
cursor.setPropertyValue("CharShadowed", uno.Bool(1))
|
||||||
|
|
||||||
|
text.insertControlCharacter(cursor, PARAGRAPH_BREAK, 0)
|
||||||
|
text.insertString(
|
||||||
|
cursor,
|
||||||
|
"This is a colored Text - blue with shadow\n",
|
||||||
|
0)
|
||||||
|
text.insertControlCharacter(cursor, PARAGRAPH_BREAK, 0)
|
||||||
|
|
||||||
|
textFrame = doc.createInstance("com.sun.star.text.TextFrame")
|
||||||
|
textFrame.setSize(Size(15000, 400))
|
||||||
|
textFrame.setPropertyValue("AnchorType", AS_CHARACTER)
|
||||||
|
|
||||||
|
text.insertTextContent(cursor, textFrame, 0)
|
||||||
|
|
||||||
|
textInTextFrame = textFrame.getText()
|
||||||
|
cursorInTextFrame = textInTextFrame.createTextCursor()
|
||||||
|
textInTextFrame.insertString(
|
||||||
|
cursorInTextFrame,
|
||||||
|
"The first line in the newly created text frame.",
|
||||||
|
0)
|
||||||
|
textInTextFrame.insertString(
|
||||||
|
cursorInTextFrame,
|
||||||
|
"\nWith this second line the height of the rame raises.",
|
||||||
|
0)
|
||||||
|
text.insertControlCharacter(cursor, PARAGRAPH_BREAK, 0)
|
||||||
|
|
||||||
|
cursor.setPropertyValue("CharColor", 65536)
|
||||||
|
cursor.setPropertyValue("CharShadowed", uno.Bool(0))
|
||||||
|
|
||||||
|
text.insertString(cursor, "That's all for now !!", 0)
|
||||||
|
|
||||||
|
|
||||||
|
g_exportedScripts = createTable,
|
||||||
|
|
||||||
|
# vim: set shiftwidth=4 softtabstop=4 expandtab:
|
@ -1,116 +0,0 @@
|
|||||||
#
|
|
||||||
# This file is part of the LibreOffice project.
|
|
||||||
#
|
|
||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
||||||
#
|
|
||||||
# This file incorporates work covered by the following license notice:
|
|
||||||
#
|
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
# contributor license agreements. See the NOTICE file distributed
|
|
||||||
# with this work for additional information regarding copyright
|
|
||||||
# ownership. The ASF licenses this file to you under the Apache
|
|
||||||
# License, Version 2.0 (the "License"); you may not use this file
|
|
||||||
# except in compliance with the License. You may obtain a copy of
|
|
||||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
||||||
#
|
|
||||||
|
|
||||||
import uno
|
|
||||||
|
|
||||||
# a UNO struct later needed to create a document
|
|
||||||
from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK
|
|
||||||
from com.sun.star.text.TextContentAnchorType import AS_CHARACTER
|
|
||||||
from com.sun.star.awt import Size
|
|
||||||
|
|
||||||
from com.sun.star.lang import XMain
|
|
||||||
|
|
||||||
def insertTextIntoCell( table, cellName, text, color ):
|
|
||||||
tableText = table.getCellByName( cellName )
|
|
||||||
cursor = tableText.createTextCursor()
|
|
||||||
cursor.setPropertyValue( "CharColor", color )
|
|
||||||
tableText.setString( text )
|
|
||||||
|
|
||||||
|
|
||||||
def createTable():
|
|
||||||
"""creates a new writer document and inserts a table with some data (also known as the SWriter sample)"""
|
|
||||||
ctx = uno.getComponentContext()
|
|
||||||
smgr = ctx.ServiceManager
|
|
||||||
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
|
|
||||||
|
|
||||||
# open a writer document
|
|
||||||
doc = desktop.loadComponentFromURL( "private:factory/swriter","_blank", 0, () )
|
|
||||||
|
|
||||||
text = doc.Text
|
|
||||||
cursor = text.createTextCursor()
|
|
||||||
text.insertString( cursor, "The first line in the newly created text document.\n", 0 )
|
|
||||||
text.insertString( cursor, "Now we are in the second line\n" , 0 )
|
|
||||||
|
|
||||||
# create a text table
|
|
||||||
table = doc.createInstance( "com.sun.star.text.TextTable" )
|
|
||||||
|
|
||||||
# with 4 rows and 4 columns
|
|
||||||
table.initialize( 4,4)
|
|
||||||
|
|
||||||
text.insertTextContent( cursor, table, 0 )
|
|
||||||
rows = table.Rows
|
|
||||||
|
|
||||||
table.setPropertyValue( "BackTransparent", uno.Bool(0) )
|
|
||||||
table.setPropertyValue( "BackColor", 13421823 )
|
|
||||||
row = rows.getByIndex(0)
|
|
||||||
row.setPropertyValue( "BackTransparent", uno.Bool(0) )
|
|
||||||
row.setPropertyValue( "BackColor", 6710932 )
|
|
||||||
|
|
||||||
textColor = 16777215
|
|
||||||
|
|
||||||
insertTextIntoCell( table, "A1", "FirstColumn", textColor )
|
|
||||||
insertTextIntoCell( table, "B1", "SecondColumn", textColor )
|
|
||||||
insertTextIntoCell( table, "C1", "ThirdColumn", textColor )
|
|
||||||
insertTextIntoCell( table, "D1", "SUM", textColor )
|
|
||||||
|
|
||||||
values = ( (22.5,21.5,121.5),
|
|
||||||
(5615.3,615.3,-615.3),
|
|
||||||
(-2315.7,315.7,415.7) )
|
|
||||||
table.getCellByName("A2").setValue(22.5)
|
|
||||||
table.getCellByName("B2").setValue(5615.3)
|
|
||||||
table.getCellByName("C2").setValue(-2315.7)
|
|
||||||
table.getCellByName("D2").setFormula("sum <A2:C2>")
|
|
||||||
|
|
||||||
table.getCellByName("A3").setValue(21.5)
|
|
||||||
table.getCellByName("B3").setValue(615.3)
|
|
||||||
table.getCellByName("C3").setValue(-315.7)
|
|
||||||
table.getCellByName("D3").setFormula("sum <A3:C3>")
|
|
||||||
|
|
||||||
table.getCellByName("A4").setValue(121.5)
|
|
||||||
table.getCellByName("B4").setValue(-615.3)
|
|
||||||
table.getCellByName("C4").setValue(415.7)
|
|
||||||
table.getCellByName("D4").setFormula("sum <A4:C4>")
|
|
||||||
|
|
||||||
|
|
||||||
cursor.setPropertyValue( "CharColor", 255 )
|
|
||||||
cursor.setPropertyValue( "CharShadowed", uno.Bool(1) )
|
|
||||||
|
|
||||||
text.insertControlCharacter( cursor, PARAGRAPH_BREAK, 0 )
|
|
||||||
text.insertString( cursor, " This is a colored Text - blue with shadow\n" , 0 )
|
|
||||||
text.insertControlCharacter( cursor, PARAGRAPH_BREAK, 0 )
|
|
||||||
|
|
||||||
textFrame = doc.createInstance( "com.sun.star.text.TextFrame" )
|
|
||||||
textFrame.setSize( Size(15000,400))
|
|
||||||
textFrame.setPropertyValue( "AnchorType" , AS_CHARACTER )
|
|
||||||
|
|
||||||
text.insertTextContent( cursor, textFrame, 0 )
|
|
||||||
|
|
||||||
textInTextFrame = textFrame.getText()
|
|
||||||
cursorInTextFrame = textInTextFrame.createTextCursor()
|
|
||||||
textInTextFrame.insertString( cursorInTextFrame, "The first line in the newly created text frame.", 0 )
|
|
||||||
textInTextFrame.insertString( cursorInTextFrame, "\nWith this second line the height of the rame raises.",0)
|
|
||||||
text.insertControlCharacter( cursor, PARAGRAPH_BREAK, 0 )
|
|
||||||
|
|
||||||
cursor.setPropertyValue( "CharColor", 65536 )
|
|
||||||
cursor.setPropertyValue( "CharShadowed", uno.Bool(0) )
|
|
||||||
|
|
||||||
text.insertString( cursor, " That's all for now !!" , 0 )
|
|
||||||
|
|
||||||
g_exportedScripts = createTable,
|
|
||||||
|
|
||||||
# vim: set shiftwidth=4 softtabstop=4 expandtab:
|
|
Loading…
x
Reference in New Issue
Block a user