epublishing/ePublishing/PageStyles.xba

381 lines
16 KiB
XML

<?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="PageStyles" script:language="StarBasic" script:moduleType="normal">
Dim pDialog As Object
Sub pageStylesDialog
Dim listBox As Object
Dim oStyles As Object
Dim pageStyles As Object
Dim pageStyleNames() As String
Dim imageURL As String
Dim pageStyle As Object
Dim i As Integer
oStyles = ThisComponent.StyleFamilies
pageStyles = oStyles.getByName(oStyles.elementNames(2))
pageStyleNames = pageStyles.getElementNames
Dim displayPageStyleNames(Ubound(pageStyleNames))
For i = LBound(displayPageStyleNames) To Ubound(displayPageStyleNames)
pageStyle = pageStyles.getByName(pageStyleNames(i))
displayPageStyleNames(i) = pageStyle.displayName
Next i
subShellSort(displayPageStyleNames)
DialogLibraries.LoadLibrary(&quot;ePublishing&quot;)
pDialog = CreateUnoDialog( DialogLibraries.ePublishing.PageConfig )
imageURL = convertToURL(getExtensionPath() + &quot;/images/panel.svg&quot;)
pDialog.getControl(&quot;ImageControl1&quot;).model.imageURL = imageURL
pDialog.getControl(&quot;ImageControl1&quot;).model.ScaleMode = 2
pDialog.getControl(&quot;description&quot;).setText(getTranslation(&quot;PageConfigDialogTranslations&quot;))
cleanPageSettings()
setHelpText()
pDialog.getControl(&quot;Cancel&quot;).Label = getTranslation(&quot;PageConfigDialogCancelButton&quot;)
pDialog.getControl(&quot;Ok&quot;).Label = getTranslation(&quot;PageConfigDialogOkButton&quot;)
listBox = pDialog.getControl(&quot;pageStyles&quot;)
listBox.addItems(displayPageStyleNames, 0)
pDialog.Title = getTranslation(&quot;PageConfigDialogTitle&quot;)
pDialog.Execute()
pDialog.dispose()
End Sub
Function getExtensionPath As String
Dim extensionIdentifier As String
Dim pip As Object
extensionIdentifier = &quot;pro.litvinovg.epublishing&quot;
pip = GetDefaultContext.getByName(&quot;/singletons/com.sun.star.deployment.PackageInformationProvider&quot;)
getExtensionPath = pip.getPackageLocation(extensionIdentifier)
End Function
Sub applyPageStyleConfiguration()
Dim styles As Object
Dim selectedItems() As String
Dim oStyles As Object
Dim pageStyles As Object
Dim pageStyleNames() As String
Dim pageStyleName As String
Dim pageStyleDisplayName As String
Dim pageStyle As Object
Dim style As Object
Dim i As Integer
Dim foundIndex As Integer
pDialog.getControl(&quot;Ok&quot;).Model.State = 0
styles = pDialog.getControl(&quot;pageStyles&quot;)
&apos;Mri styles
selectedItems = styles.getSelectedItems
If Ubound(selectedItems) &lt; 0 Then
MsgBox getTranslation(&quot;pageStylesNoStyleSelected&quot;)
Exit sub
EndIf
If noPageSettings() Then
MsgBox getTranslation(&quot;pageStylesNoSettingsSet&quot;)
Exit sub
EndIf
oStyles = ThisComponent.StyleFamilies
pageStyles = oStyles.getByName(oStyles.elementNames(2))
pageStyleNames = pageStyles.getElementNames
Dim displayPageStyleNames(Ubound(pageStyleNames))
For i = LBound(displayPageStyleNames) To Ubound(displayPageStyleNames)
pageStyle = pageStyles.getByName(pageStyleNames(i))
displayPageStyleNames(i) = pageStyle.displayName
Next i
For i = LBound(selectedItems) To Ubound(selectedItems)
pageStyleDisplayName = selectedItems(i)
foundIndex = getIndex(displayPageStyleNames, pageStyleDisplayName)
pageStyleName = pageStyleNames(foundIndex)
pageStyle = pageStyles.getByName(pageStyleName)
applyPageSettings(pageStyle)
Next i
MsgBox getTranslation(&quot;PageConfigSettingsApplied&quot;)
cleanPageSettings()
End Sub
Sub cleanPageSettings()
pDialog.getControl(&quot;pageHeight&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;pageWidth&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;leftPageMargin&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;topPageMargin&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;rightPageMargin&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;bottomPageMargin&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;headerHeight&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;headerOffset&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;footerHeight&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;footerOffset&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;footnoteAreaHeight&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;footnoteAreaOffset&quot;).setText(&quot;&quot;)
pDialog.getControl(&quot;textToLine&quot;).setText(&quot;&quot;)
End Sub
Sub setHelpText
pDialog.getControl(&quot;pageHeight&quot;).Model.HelpText = getTranslation(&quot;PageConfigPageHeight&quot;)
pDialog.getControl(&quot;pageWidth&quot;).Model.HelpText = getTranslation(&quot;PageConfigPageWidth&quot;)
pDialog.getControl(&quot;leftPageMargin&quot;).Model.HelpText = getTranslation(&quot;PageConfigLeftPageMargin&quot;)
pDialog.getControl(&quot;topPageMargin&quot;).Model.HelpText = getTranslation(&quot;PageConfigTopPageMargin&quot;)
pDialog.getControl(&quot;rightPageMargin&quot;).Model.HelpText = getTranslation(&quot;PageConfigRightPageMargin&quot;)
pDialog.getControl(&quot;bottomPageMargin&quot;).Model.HelpText = getTranslation(&quot;PageConfigBottomPageMargin&quot;)
pDialog.getControl(&quot;headerHeight&quot;).Model.HelpText = getTranslation(&quot;PageConfigHeaderHeight&quot;)
pDialog.getControl(&quot;headerOffset&quot;).Model.HelpText = getTranslation(&quot;PageConfigHeaderOffset&quot;)
pDialog.getControl(&quot;footerHeight&quot;).Model.HelpText = getTranslation(&quot;PageConfigFooterHeight&quot;)
pDialog.getControl(&quot;footerOffset&quot;).Model.HelpText = getTranslation(&quot;PageConfigFooterOffset&quot;)
pDialog.getControl(&quot;footnoteAreaHeight&quot;).Model.HelpText = getTranslation(&quot;PageConfigFootnoteAreaHeight&quot;)
pDialog.getControl(&quot;footnoteAreaOffset&quot;).Model.HelpText = getTranslation(&quot;PageConfigFootnoteAreaOffset&quot;)
pDialog.getControl(&quot;textToLine&quot;).Model.HelpText = getTranslation(&quot;PageConfigTextToLine&quot;)
pDialog.getControl(&quot;mm1&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm2&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm3&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm4&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm5&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm6&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm7&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm8&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm9&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm10&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm11&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm12&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm13&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
End Sub
Function noPageSettings() As Boolean
Dim setting As String
noPageSettings = true
setting = pDialog.getControl(&quot;pageHeight&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;pageWidth&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;leftPageMargin&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;topPageMargin&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;rightPageMargin&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;bottomPageMargin&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;headerHeight&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;headerOffset&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;footerHeight&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;footerOffset&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;footnoteAreaHeight&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;footnoteAreaOffset&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
setting = pDialog.getControl(&quot;textToLine&quot;).getText()
If Len(setting) &gt; 0 Then
noPageSettings = false
EndIf
End Function
Sub applyPageSettings(targetStyle As Object)
Dim oStyles As Object
Dim curStyle As Object
Dim inputHeight As String
Dim inputTopMargin As String
Dim inputBottomMargin As String
Dim inputLeftMargin As String
Dim inputRightMargin As String
Dim inputHeaderBodyDistance As String
Dim inputFooterBodyDistance As String
Dim inputFootnoteLineDistance As String
Dim inputFootnoteLineTextDistance As String
Dim inputFooterHeight As String
Dim inputHeaderHeight As String
Dim inputFootnoteArea As String
Dim newWidth As Long
Dim newHeight As Long
Dim newTopMargin As Long
Dim newBottomMargin As Long
Dim newLeftMargin As Long
Dim newRightMargin As Long
Dim textFieldHeight As Long
Dim textFieldWidth As Long
Dim headerBodyDistance As Long
Dim footerBodyDistance As Long
Dim footnoteLineDistance As Long
Dim footnoteLineTextDistance As Long
oStyles = ThisComponent.StyleFamilies.getByName(&quot;PageStyles&quot;)
inputWidth = pDialog.getControl(&quot;pageWidth&quot;).getText()
inputHeight = pDialog.getControl(&quot;pageHeight&quot;).getText()
inputTopMargin = pDialog.getControl(&quot;topPageMargin&quot;).getText()
inputBottomMargin = pDialog.getControl(&quot;bottomPageMargin&quot;).getText()
inputLeftMargin = pDialog.getControl(&quot;leftPageMargin&quot;).getText()
inputRightMargin = pDialog.getControl(&quot;rightPageMargin&quot;).getText()
inputHeaderBodyDistance = pDialog.getControl(&quot;headerOffset&quot;).getText()
inputFooterBodyDistance = pDialog.getControl(&quot;footerOffset&quot;).getText()
inputFooterHeight = pDialog.getControl(&quot;footerHeight&quot;).getText()
inputHeaderHeight = pDialog.getControl(&quot;headerHeight&quot;).getText()
inputFootnoteArea = pDialog.getControl(&quot;footnoteAreaHeight&quot;).getText()
inputFootnoteLineTextDistance = pDialog.getControl(&quot;textToLine&quot;).getText()
&apos;InputBox(&quot;Введите расстояние от текста страницы до линии сноски (в сотых долях мм):&quot;, &quot;Установка расстояния от текста страницы до линии сноски &quot;, &quot;&quot;)
inputFootnoteLineDistance = pDialog.getControl(&quot;footnoteAreaOffset&quot;).getText()
&apos;InputBox(&quot;Введите расстояние от линии сноски до текста сноски (в сотых долях мм):&quot;, &quot;Установка расстояния от линии сноски до текста сноски &quot;, &quot;&quot;)
curStyle = targetStyle
&apos;Mri curStyle
newWidth = curStyle.Width
newHeight = curStyle.height
newTopMargin = curStyle.TopMargin
newBottomMargin = curStyle.BottomMargin
newLeftMargin = curStyle.LeftMargin
newRightMargin = curStyle.RightMargin
If covertMMtoLong(inputFootnoteArea) &gt; 0 Then
Dim footnoteArea As Long
footnoteArea = covertMMtoLong(inputFootnoteArea)
curStyle.FootnoteHeight = footnoteArea
EndIf
If covertMMtoLong(inputHeaderBodyDistance) &gt; 0 Then
headerBodyDistance = covertMMtoLong(inputHeaderBodyDistance)
curStyle.HeaderBodyDistance = headerBodyDistance
EndIf
If covertMMtoLong(inputFooterBodyDistance) &gt; 0 Then
footerBodyDistance = covertMMtoLong(inputFooterBodyDistance)
curStyle.FooterBodyDistance = footerBodyDistance
EndIf
If covertMMtoLong(inputFootnoteLineDistance) &gt; 0 Then
footnoteLineDistance = covertMMtoLong(inputFootnoteLineDistance)
curStyle.FootnoteLineDistance = footnoteLineDistance
EndIf
If covertMMtoLong(inputFootnoteLineTextDistance) &gt; 0 Then
footnoteLineTextDistance = covertMMtoLong(inputFootnoteLineTextDistance)
curStyle.FootnoteLineTextDistance = footnoteLineTextDistance
EndIf
If covertMMtoLong(inputFooterHeight) &gt; 0 Then
Dim footerHeight As Long
footerHeight = covertMMtoLong(inputFooterHeight)
curStyle.FooterIsOn = true
curStyle.FooterIsDynamicHeight = false
curStyle.FooterHeight = footerHeight + curStyle.FooterBodyDistance
EndIf
If covertMMtoLong(inputHeaderHeight) &gt; 0 Then
Dim headerHeight As Long
headerHeight = covertMMtoLong(inputHeaderHeight)
curStyle.HeaderIsOn = true
curStyle.HeaderIsDynamicHeight = false
curStyle.HeaderHeight = headerHeight + curStyle.HeaderBodyDistance
EndIf
If curstyle.IsLandscape Then
If covertMMtoLong(inputHeight) &gt; 0 Then
newWidth = covertMMtoLong(inputHeight)
EndIf
If covertMMtoLong(inputWidth) &gt; 0 Then
newHeight = covertMMtoLong(inputWidth)
EndIf
If covertMMtoLong(inputLeftMargin) &gt; 0 Then
newTopMargin = covertMMtoLong(inputLeftMargin)
EndIf
If covertMMtoLong(inputRightMargin) &gt; 0 Then
newBottomMargin = covertMMtoLong(inputRightMargin)
EndIf
If covertMMtoLong(inputTopMargin) &gt; 0 Then
newLeftMargin = covertMMtoLong(inputTopMargin)
EndIf
If covertMMtoLong(inputBottomMargin) &gt; 0 Then
newRightMargin = covertMMtoLong(inputBottomMargin)
EndIf
Else
If covertMMtoLong(inputWidth) &gt; 0 Then
newWidth = covertMMtoLong(inputWidth)
EndIf
If covertMMtoLong(inputHeight) &gt; 0 Then
newHeight = covertMMtoLong(inputHeight)
EndIf
If covertMMtoLong(inputTopMargin) &gt; 0 Then
newTopMargin = covertMMtoLong(inputTopMargin)
EndIf
If covertMMtoLong(inputBottomMargin) &gt; 0 Then
newBottomMargin = covertMMtoLong(inputBottomMargin)
EndIf
If covertMMtoLong(inputLeftMargin) &gt; 0 Then
newLeftMargin = covertMMtoLong(inputLeftMargin)
EndIf
If covertMMtoLong(inputRightMargin) &gt; 0 Then
newRightMargin = covertMMtoLong(inputRightMargin)
EndIf
End If
textFieldWidth = newWidth - newLeftMargin - newRightMargin
textFieldHeight = newHeight - newTopMargin - newBottomMargin
If textFieldWidth &gt; 5000 Then
curStyle.Width = newWidth
curStyle.LeftMargin = newLeftMargin
curStyle.RightMargin = newRightMargin
EndIf
If textFieldHeight &gt; 5000 Then
curStyle.Height = newHeight
curStyle.TopMargin = newTopMargin
curStyle.BottomMargin = newBottomMargin
EndIf
Exit Sub
End Sub
Function covertMMtoLong(dimension As String) As Long
If Len(dimension) &lt; 1 Then
convertMMtoLong = -1
Exit Function
EndIf
dimension = customReplace(dimension, &quot;.&quot;, &quot;,&quot;)
If Not IsNumeric( dimension ) Then
convertMMtoLong = -1
Exit Function
EndIf
Dim value As Double
value = CDbl(dimension)
If value &lt; 0 Then
convertMMtoLong = -1
Exit Function
EndIf
value = value * 100
covertMMtoLong = CLng(value)
End Function
Function customReplace(Source As String, Search As String, NewPart As String) As String
Dim Result As String
Result = join(split(Source, Search), NewPart)
customReplace = Result
End Function
</script:module>