Books lib added

This commit is contained in:
Georgy Litvinov 2020-03-13 15:53:41 +01:00
parent acad3ba493
commit 62fafde775

126
ePublishing/Books.xba Normal file
View file

@ -0,0 +1,126 @@
<?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="Books" script:language="StarBasic" script:moduleType="normal">Sub markBooks3
End Sub
Sub setUniqPageStyles
Dim prevPageName As String
Dim firstPageName As String
Dim pageName As String
Dim curPageNum As Integer
Dim prevPageNum As String
Dim leftPageNum As Long
Dim docPages As Long
Dim articlePages As Long
Dim previousPageStyle As Object
Dim pageStyles As Object
Dim curPageStyle As Object
Dim curPageStyleName As String
Dim nextStyle As Object
Dim clonedStyle As Object
Dim clonedStyleName As String
Dim oViewCursor As Object
Dim pageNum As Integer
Dim page As Integer
oViewCursor = ThisComponent.CurrentController.getViewCursor()
pageStyles = ThisComponent.StyleFamilies.getByName(&quot;PageStyles&quot;)
pageNum = 1
pageName = &quot;Страница издания&quot;
If NOT hasPageStyleWith(pageName) Then
MsgBox &quot;Ошибка. Стиль страниц &lt;&quot; &amp; pageName &amp; &quot;&gt; не найден.&quot;
Exit Sub
EndIf
page = findFirstPageNumberWithStyle(pageName)
firstPage = page
oViewCursor.jumpToPage(page)
curPageStyleName = oViewCursor.PageStyleName
Do While StrComp(curPageStyleName,pageName,1) = 0
If pageNum = 1 Then
oViewCursor.jumpToPreviousPage()
prevPageName = oViewCursor.PageStyleName
previousPageStyle = pageStyles.getByName(prevPageName)
tmpName = pageName + &quot; &quot;
If InStr(prevPageName, tmpName) = 1 Then
startNum = Right(prevPageName,Len(prevPageName) - Len(tmpName))
pageNum = CInt(startNum) + 1
EndIf
oViewCursor.jumpToNextPage()
EndIf
newPageName = pageName + &quot; &quot; + pageNum
createPageStyleByExample(newPageName)
If pageNum = 1 Then
oTextCursor = oViewCursor.Text.CreateTextCursorByRange(oViewCursor)
oViewCursor.PageDescName = newPageName
Else
previousPageStyle.FollowStyle = newPageName
EndIf
curPageStyle = pageStyles.getByName(newPageName)
&apos;Установим стиль следующей страницы в стандартное значение
curPageStyle.FollowStyle = pageName
previousPageStyle = curPageStyle
oViewCursor.jumpToNextPage()
curPageStyleName = getNextPageStyleName()
pageNum = pageNum + 1
Loop
End Sub
Function hasPageStyleWith(pageStyleName)
Dim enum1 As Object
Dim enum1Element As Object
Dim curPage As String
Dim curStyleName As String
Dim pageName As String
Dim oViewCursor As Object
Dim anchor As Object
enum1 = ThisComponent.Text.createEnumeration()
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) OR enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then
If NOT IsMissing(enum1Element.PageDescName) AND NOT IsNull(enum1Element.PageDescName) Then
pageName = CStr(enum1Element.PageDescName)
If pageStyleName = pageName Then
hasPageStyleWith = true
Exit Function
EndIf
EndIf
EndIf
Wend
hasPageStyleWith = false
End Function
Function findFirstPageNumberWithStyle(pageStyleName)
Dim enum1 As Object
Dim enum1Element As Object
Dim curPage As String
Dim curStyleName As String
Dim pageName As String
Dim oViewCursor As Object
Dim anchor As Object
Dim oSavePosition As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
enum1 = ThisComponent.Text.createEnumeration()
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) OR enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then
If NOT IsMissing(enum1Element.PageDescName) AND NOT IsNull(enum1Element.PageDescName) Then
pageName = CStr(enum1Element.PageDescName)
If pageStyleName = pageName Then
anchor = enum1Element.getAnchor()
oViewCursor.gotoRange(anchor,false)
findFirstPageNumberWithStyle = oViewCursor.getPage()
oViewCursor.goToRange(oSavePosition, false)
Exit Function
EndIf
EndIf
EndIf
Wend
findFirstPageNumberWithStyle = -1
End Function
</script:module>