mirror of
https://gitee.com/kekingcn/file-online-preview.git
synced 2026-03-21 16:43:51 +08:00
优化项目结构、优化 maven 结构
This commit is contained in:
193
office-plugin/windows-office/share/basic/Template/Autotext.xba
Normal file
193
office-plugin/windows-office/share/basic/Template/Autotext.xba
Normal file
@@ -0,0 +1,193 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
|
||||
<!--***********************************************************
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
***********************************************************-->
|
||||
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Autotext" script:language="StarBasic">Option Explicit
|
||||
|
||||
Public UserfieldDataType(14) as String
|
||||
Public oDocAuto as Object
|
||||
Public BulletList(7) as Integer
|
||||
Public sTextFieldNotDefined as String
|
||||
Public sGeneralError as String
|
||||
|
||||
|
||||
Sub Main()
|
||||
Dim oCursor as Object
|
||||
Dim oStyles as Object
|
||||
Dim oSearchDesc as Object
|
||||
Dim oFoundall as Object
|
||||
Dim oFound as Object
|
||||
Dim i as Integer
|
||||
Dim sFoundString as String
|
||||
Dim sFoundContent as String
|
||||
Dim FieldStringThere as String
|
||||
Dim ULStringThere as String
|
||||
Dim PHStringThere as String
|
||||
On Local Error Goto GENERALERROR
|
||||
' Initialization...
|
||||
BasicLibraries.LoadLibrary("Tools")
|
||||
If InitResources("'Template'", "tpl") Then
|
||||
sGeneralError = GetResText(1302)
|
||||
sTextFieldNotDefined = GetResText(1400)
|
||||
End If
|
||||
|
||||
UserfieldDatatype(0) = "COMPANY"
|
||||
UserfieldDatatype(1) = "FIRSTNAME"
|
||||
UserfieldDatatype(2) = "NAME"
|
||||
UserfieldDatatype(3) = "SHORTCUT"
|
||||
UserfieldDatatype(4) = "STREET"
|
||||
UserfieldDatatype(5) = "COUNTRY"
|
||||
UserfieldDatatype(6) = "ZIP"
|
||||
UserfieldDatatype(7) = "CITY"
|
||||
UserfieldDatatype(8) = "TITLE"
|
||||
UserfieldDatatype(9) = "POSITION"
|
||||
UserfieldDatatype(10) = "PHONE_PRIVATE"
|
||||
UserfieldDatatype(11) = "PHONE_COMPANY"
|
||||
UserfieldDatatype(12) = "FAX"
|
||||
UserfieldDatatype(13) = "EMAIL"
|
||||
UserfieldDatatype(14) = "STATE"
|
||||
BulletList(0) = 149
|
||||
BulletList(1) = 34
|
||||
BulletList(2) = 65
|
||||
BulletList(3) = 61
|
||||
BulletList(4) = 49
|
||||
BulletList(5) = 47
|
||||
BulletList(6) = 79
|
||||
BulletList(7) = 58
|
||||
|
||||
oDocAuto = ThisComponent
|
||||
oStyles = oDocAuto.Stylefamilies.GetByName("NumberingStyles")
|
||||
|
||||
' Prepare the Search-Descriptor
|
||||
oSearchDesc = oDocAuto.createsearchDescriptor()
|
||||
oSearchDesc.SearchRegularExpression = True
|
||||
oSearchDesc.SearchWords = True
|
||||
oSearchDesc.SearchString = "<[^>]+>"
|
||||
oFoundall = oDocAuto.FindAll(oSearchDesc)
|
||||
|
||||
'Loop over the foundings
|
||||
For i = 0 To oFoundAll.Count - 1
|
||||
oFound = oFoundAll.GetByIndex(i)
|
||||
sFoundString = oFound.String
|
||||
'Extract the string inside the brackets
|
||||
sFoundContent = FindPartString(sFoundString,"<",">",1)
|
||||
sFoundContent = LTrim(sFoundContent)
|
||||
|
||||
' Define the Cursor and place it on the founding
|
||||
oCursor = oFound.Text.CreateTextCursorbyRange(oFound)
|
||||
|
||||
' Find out, which object is to be created...
|
||||
FieldStringThere = Instr(1,sFoundContent,"Field")
|
||||
ULStringThere = Instr(1,sFoundContent,"UL")
|
||||
PHStringThere = Instr(1,sFoundContent,"Placeholder")
|
||||
If FieldStringThere = 1 Then
|
||||
CreateUserDatafield(oCursor, sFoundContent)
|
||||
ElseIf ULStringThere = 1 Then
|
||||
CreateBullet(oCursor, oStyles)
|
||||
ElseIf PHStringThere = 1 Then
|
||||
CreatePlaceholder(oCursor, sFoundContent)
|
||||
End If
|
||||
Next i
|
||||
|
||||
GENERALERROR:
|
||||
If Err <> 0 Then
|
||||
Msgbox(sGeneralError,16, GetProductName())
|
||||
Resume LETSGO
|
||||
End If
|
||||
LETSGO:
|
||||
End Sub
|
||||
|
||||
|
||||
' creates a User - datafield out of a string with the following structure
|
||||
' "<field:Company>"
|
||||
Sub CreateUserDatafield(oCursor, sFoundContent as String)
|
||||
Dim MaxIndex as Integer
|
||||
Dim sFoundList(3)
|
||||
Dim oUserfield as Object
|
||||
Dim UserInfo as String
|
||||
Dim UserIndex as Integer
|
||||
|
||||
oUserfield = oDocAuto.CreateInstance("com.sun.star.text.TextField.ExtendedUser")
|
||||
sFoundList() = ArrayoutofString(sFoundContent,":",MaxIndex)
|
||||
UserInfo = UCase(LTrim(sFoundList(1)))
|
||||
UserIndex = IndexinArray(UserInfo, UserfieldDatatype())
|
||||
If UserIndex <> -1 Then
|
||||
oUserField.UserDatatype = UserIndex
|
||||
oCursor.Text.InsertTextContent(oCursor,oUserField,True)
|
||||
oUserField.IsFixed = True
|
||||
Else
|
||||
Msgbox(UserInfo &": " & sTextFieldNotDefined,16, GetProductName())
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
' Creates a Bullet by setting a soft Formatation on the first unsorted List-Templates with a defined
|
||||
' Bullet Id
|
||||
Sub CreateBullet(oCursor, oStyles as Object)
|
||||
Dim n, m, s as Integer
|
||||
Dim StyleSet as Boolean
|
||||
Dim ostyle as Object
|
||||
Dim StyleName as String
|
||||
Dim alevel()
|
||||
StyleSet = False
|
||||
For s = 0 To Ubound(BulletList())
|
||||
For n = 0 To oStyles.Count - 1
|
||||
ostyle = oStyles.getbyindex(n)
|
||||
StyleName = oStyle.Name
|
||||
alevel() = ostyle.NumberingRules.getbyindex(0)
|
||||
' The properties of the style are stored in a Name-Value-Array()
|
||||
For m = 0 to Ubound(alevel())
|
||||
' Set the first Numbering template without a bulletID
|
||||
If (aLevel(m).Name = "BulletId") Then
|
||||
If alevel(m).Value = BulletList(s) Then
|
||||
oCursor.NumberingStyle = StyleName
|
||||
oCursor.SetString("")
|
||||
exit Sub
|
||||
End if
|
||||
End If
|
||||
Next m
|
||||
Next n
|
||||
Next s
|
||||
If Not StyleSet Then
|
||||
' The Template with the demanded BulletID is not available, so take the first style in the sequence
|
||||
' that has a defined Bullet ID
|
||||
oCursor.NumberingStyleName = oStyles.GetByIndex(5).Name
|
||||
oCursor.SetString("")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
' Creates a placeholder out of a string with the following structure:
|
||||
'<placeholder:Showtext:Helptext>
|
||||
Sub CreatePlaceholder(oCursor as Object, sFoundContent as String)
|
||||
Dim oPlaceholder as Object
|
||||
Dim MaxIndex as Integer
|
||||
Dim sFoundList(3)
|
||||
oPlaceholder = oDocAuto.CreateInstance("com.sun.star.text.TextField.JumpEdit")
|
||||
sFoundList() = ArrayoutofString(sFoundContent, ":" & chr(34),MaxIndex)
|
||||
' Delete The Double-quotes
|
||||
oPlaceholder.Hint = DeleteStr(sFoundList(2),chr(34))
|
||||
oPlaceholder.placeholder = DeleteStr(sFoundList(1),chr(34))
|
||||
oCursor.Text.InsertTextContent(oCursor,oPlaceholder,True)
|
||||
End Sub
|
||||
|
||||
|
||||
</script:module>
|
||||
Reference in New Issue
Block a user