123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
- <!--
- * 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 .
- -->
- <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
- 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 = CreateNewDocument("swriter")
- If Not IsNull(oDocument) Then
- oDocument.DocumentProperties.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 If
- 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>
|