home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
- <script:module xmlns:script="http://openoffice.org/2000/script" script:name="AutoText" script:language="StarBasic">' BASIC
- Option Explicit
- Dim oDocument as Object
- Dim sDocumentTitle as String
-
- ' Todo: Problem mit der Spaltenbreite l├╢sen
- ' Internationale Vorlage für Überschrift
- Sub Main()
- Dim oTable as Object
- Dim oRows as Object
- Dim oDocuText as Object
- Dim oAutoTextCursor as Object
- Dim oAutoTextContainer as Object
- Dim oAutogroup as Object
- Dim oAutoText as Object
- Dim oCharStyles as Object
- Dim oContentStyle as Object
- Dim oHeaderStyle as Object
- Dim oGroupTitleStyle as Object
- Dim n, m, iAutoCount as Integer
- BasicLibraries.LoadLibrary("Tools")
- sDocumentTitle = "Installed AutoTexts"
-
- ' Open a new empty document
- oDocument = StarDesktop.LoadComponentFromURL("private:factory/swriter","_blank",0,NoArgs)
- oDocument.DocumentInfo.Title = sDocumentTitle
- oDocuText = oDocument.Text
-
- ' Create The Character-templates
- oCharStyles = oDocument.StyleFamilies.GetByName("CharacterStyles")
-
- ' The Characterstyle for the Header that describes the Title of Autotextgroups
- oGroupTitleStyle = oDocument.createInstance("com.sun.star.style.CharacterStyle")
- oCharStyles.InsertbyName("AutoTextGroupTitle", oGroupTitleStyle)
-
- oGroupTitleStyle.CharWeight = com.sun.star.awt.FontWeight.BOLD
- oGroupTitleStyle.CharHeight = 14
-
- ' The Characterstyle for the Header that describes the Title of Autotextgroups
- oHeaderStyle = oDocument.createInstance("com.sun.star.style.CharacterStyle")
- oCharStyles.InsertbyName("AutoTextHeading", oHeaderStyle)
- oHeaderStyle.CharWeight = com.sun.star.awt.FontWeight.BOLD
-
- ' "Ordinary" Table Content
- oContentStyle = oDocument.createInstance("com.sun.star.style.CharacterStyle")
- oCharStyles.InsertbyName("TableContent", oContentStyle)
-
- oAutoTextContainer = CreateUnoService("com.sun.star.text.AutoTextContainer")
-
- oAutoTextCursor = oDocuText.CreateTextCursor()
-
- oAutoTextCursor.CharStyleName = "AutoTextGroupTitle"
- ' Link the Title with the following table
- oAutoTextCursor.ParaKeepTogether = True
-
- For n = 0 To oAutoTextContainer.Count - 1
- oAutoGroup = oAutoTextContainer.GetByIndex(n)
-
- oAutoTextCursor.SetString(oAutoGroup.Title)
- oAutoTextCursor.CollapseToEnd()
- oDocuText.insertControlCharacter(oAutoTextCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False)
- oTable = oDocument.CreateInstance("com.sun.star.text.TextTable")
- ' Divide the table if necessary
- oTable.Split = True
- ' oTable.KeepTogether = False
- oTable.RepeatHeadLine = True
- oAutoTextCursor.Text.InsertTextContent(oAutoTextCursor,oTable,False)
- InsertStringToCell("AutoText Name",oTable.GetCellbyPosition(0,0), "AutoTextHeading")
- InsertStringToCell("AutoText Shortcut",oTable.GetCellbyPosition(1,0), "AutoTextHeading")
- ' Insert one row at the bottom of the table
- oRows = oTable.Rows
- iAutoCount = oAutoGroup.Count
- For m = 0 To iAutoCount-1
- ' Insert the name and the title of all Autotexts
- oAutoText = oAutoGroup.GetByIndex(m)
- InsertStringToCell(oAutoGroup.Titles(m), oTable.GetCellbyPosition(0, m + 1), "TableContent")
- InsertStringToCell(oAutoGroup.ElementNames(m), oTable.GetCellbyPosition(1, m + 1), "TableContent")
- If m < iAutoCount-1 Then
- oRows.InsertbyIndex(m + 2,1)
- End If
- Next m
- oDocuText.insertControlCharacter(oAutoTextCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False)
- oAutoTextCursor.CollapseToEnd()
- Next n
- End Sub
-
-
- Sub InsertStringToCell(sCellString as String, oCell as Object, sCellStyle as String)
- Dim oCellCursor as Object
- oCellCursor = oCell.CreateTextCursor()
- oCellCursor.CharStyleName = sCellStyle
- oCell.Text.insertString(oCellCursor,sCellString,False)
- oDocument.CurrentController.Select(oCellCursor)
- End Sub</script:module>