126 lines
4.3 KiB
Text
126 lines
4.3 KiB
Text
|
<?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("PageStyles")
|
||
|
pageNum = 1
|
||
|
pageName = "Страница издания"
|
||
|
|
||
|
If NOT hasPageStyleWith(pageName) Then
|
||
|
MsgBox "Ошибка. Стиль страниц <" & pageName & "> не найден."
|
||
|
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 + " "
|
||
|
If InStr(prevPageName, tmpName) = 1 Then
|
||
|
startNum = Right(prevPageName,Len(prevPageName) - Len(tmpName))
|
||
|
pageNum = CInt(startNum) + 1
|
||
|
EndIf
|
||
|
oViewCursor.jumpToNextPage()
|
||
|
EndIf
|
||
|
newPageName = pageName + " " + pageNum
|
||
|
|
||
|
createPageStyleByExample(newPageName)
|
||
|
If pageNum = 1 Then
|
||
|
oTextCursor = oViewCursor.Text.CreateTextCursorByRange(oViewCursor)
|
||
|
oViewCursor.PageDescName = newPageName
|
||
|
|
||
|
Else
|
||
|
previousPageStyle.FollowStyle = newPageName
|
||
|
EndIf
|
||
|
|
||
|
curPageStyle = pageStyles.getByName(newPageName)
|
||
|
'Установим стиль следующей страницы в стандартное значение
|
||
|
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("com.sun.star.text.Paragraph") OR enum1Element.supportsService("com.sun.star.text.TextTable") 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("com.sun.star.text.Paragraph") OR enum1Element.supportsService("com.sun.star.text.TextTable") 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>
|