diff --git a/Addons.xcu b/Addons.xcu
index 7cf0ff5..40ebbc3 100644
--- a/Addons.xcu
+++ b/Addons.xcu
@@ -83,6 +83,26 @@
_self
+
+
+ com.sun.star.text.TextDocument,com.sun.star.text.WebDocument
+
+
+ Балансировка хвоста
+ Équilibrer la dernière ligne
+ Balance the last line
+ Уравнотежите последњу линију
+ Uravnotežite posljednji redak
+ Uravnotežite posljednji redak
+
+
+ macro:///ePublishing.Archive.balanceCurParaLastLine
+
+
+ _self
+
+
+
@@ -169,26 +189,6 @@
_self
-
-
- com.sun.star.text.TextDocument,com.sun.star.text.WebDocument
-
-
- Балансировка хвоста
- Équilibrer la dernière ligne
- Balance the last line
- Уравнотежите последњу линију
- Uravnotežite posljednji redak
- Uravnotežite posljednji redak
-
-
- macro:///ePublishing.Archive.adjustLastLineCurPara
-
-
- _self
-
-
-
@@ -276,7 +276,7 @@
- macro:///ePublishing.Archive.adjustLastLineCurPara
+ macro:///ePublishing.Archive.balanceCurParaLastLine
diff --git a/description.xml b/description.xml
index b31c629..10a71f7 100644
--- a/description.xml
+++ b/description.xml
@@ -3,7 +3,7 @@
xmlns:dep="http://openoffice.org/extensions/description/2006"
xmlns:xlink="http://www.w3.org/1999/xlink">
-
+
Инструменты для создания электронных изданий
diff --git a/ePublishing/Archive.xba b/ePublishing/Archive.xba
index 51fad40..70f1c6a 100644
--- a/ePublishing/Archive.xba
+++ b/ePublishing/Archive.xba
@@ -1,6 +1,6 @@
-Sub archMark25
+Sub archMark29
End Sub
@@ -172,6 +172,7 @@ sub convertIndesignPageBreaks
Exit Sub
EndIf
turnOffTracking()
+ setZoomToSpeedUpTasks()
balanceFootNotes()
Dim oViewCursor As Object
@@ -231,6 +232,7 @@ sub convertIndesignPageBreaks
Wait 100
pageNumber = getPageNumber(oTextCursor.Text.createTextCursorByRange(oTextCursor.End))
EndIf
+
'check first character
oTextCursor.goRight(1,true)
nextPara = oTextCursor.End
@@ -261,9 +263,10 @@ sub convertIndesignPageBreaks
EndIf
End If
- If pageNumber - prevPageNumber < 2 Then
- 'stretchPrevPage(prevPara)
- EndIf
+
+ 'If pageNumber - prevPageNumber < 2 Then
+ 'stretchPrevPage(prevPara)
+ 'EndIf
prevPageNumber = pageNumber
oFound = ThisComponent.findNext(oFound.End, oSearch)
@@ -274,14 +277,16 @@ end Sub
Sub configureHeadings
configureArchiveHeading1
- configureOtherArchiveHeadings
+ configureArchiveHeadings()
End Sub
-
Sub configureArchiveHeading1
Dim outline1() As Object
Dim oViewCursor As Object
Dim oSavePosition As Object
+ Dim initPosition As Object
+ Dim initPageNum As Integer
+ fixViewCursor()
oViewCursor = thisComponent.getCurrentController.getViewCursor
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
outline1 = getHeadingWithLevel(1)
@@ -289,33 +294,35 @@ Sub configureArchiveHeading1
Dim pageNumberCursor As Object
Dim i As Integer
Dim j As Integer
- Dim initialPageCount As Integer
- initialPageCount = ThisComponent.currentController.pageCount
For i = LBound(outline1) To UBound(outline1)
oViewCursor.goToRange(outline1(i), false)
oViewCursor.jumpToEndOfPage()
- pageNumberCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
- pageNumberCursor.goToStartOfWord(false)
- startViewPageNum = getPageNumber(pageNumberCursor)
+ initPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
+ initPageNum = oViewcursor.getPage()
- Do While startViewPageNum = getPageNumber(pageNumberCursor) And initialPageCount = ThisComponent.currentController.pageCount
- outline1(i).ParaTopMargin = outline1(i).ParaTopMargin + 100
+ Do While Not isContentPageChanged(initPosition, initPageNum) AND outline1(i).ParaBottomMargin < 10000
+ outline1(i).ParaBottomMargin = outline1(i).ParaBottomMargin + 100
+ Loop
+ Do While isContentPageChanged(initPosition, initPageNum)
+ If outline1(i).ParaBottomMargin < 0 Then
+ Exit Do
+ EndIf
+ outline1(i).ParaBottomMargin = outline1(i).ParaBottomMargin - 100
Loop
- If outline1(i).ParaTopMargin >= 100 Then
- outline1(i).ParaTopMargin = outline1(i).ParaTopMargin - 100
- EndIf
Next i
oViewCursor.goToRange(oSavePosition,false)
End Sub
-Sub configureOtherArchiveHeadings
+Sub configureArchiveHeadings()
Dim outline1() As Object
Dim oViewCursor As Object
- Dim oSavePosition As Object
+ Dim initPosition As Object
+ Dim initPageNum As Integer
+ Dim savePosition As Object
+ fixViewCursor()
oViewCursor = thisComponent.getCurrentController.getViewCursor
- oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
+ savePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
- Dim startViewPageNum As Integer
Dim pageNumberCursor As Object
Dim i As Integer
Dim j As Integer
@@ -327,23 +334,25 @@ Sub configureOtherArchiveHeadings
If outline1(i).BreakType <> 4 Then
oViewCursor.goToRange(outline1(i), false)
oViewCursor.jumpToEndOfPage()
- pageNumberCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
- pageNumberCursor.goToStartOfWord(false)
- startViewPageNum = getPageNumber(pageNumberCursor)
+ initPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
+ initPageNum = oViewcursor.getPage()
- Do While startViewPageNum = getPageNumber(pageNumberCursor) And initialPageCount = ThisComponent.currentController.pageCount
+ Do While Not isContentPageChanged(initPosition, initPageNum)
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin + 100
If (outline1(i).ParaTopMargin > outline1(i).ParaBottomMargin) Then
Exit Do
EndIf
Loop
- If outline1(i).ParaTopMargin >= 100 Then
+ Do While isContentPageChanged(initPosition, initPageNum)
+ If outline1(i).ParaBottomMargin < 0 Then
+ Exit Do
+ EndIf
outline1(i).ParaTopMargin = outline1(i).ParaTopMargin - 100
- EndIf
+ Loop
EndIf
Next i
Next j
- oViewCursor.goToRange(oSavePosition,false)
+ oViewCursor.goToRange(savePosition,false)
End Sub
@@ -449,13 +458,21 @@ Sub stretchPrevPage()
Next i
Exit Sub
EndIf
-
-
-
-
oViewCursor.goToRange(oSavePosition,false)
End Sub
+Sub balanceCurParaLastLine()
+ Dim oViewCursor As Object
+ Dim oTextCursor As Object
+ Dim paraEnd As Object
+ Dim success As Boolean
+ Dim adjustType As Integer
+ fixViewCursor()
+ oViewCursor = ThisComponent.CurrentController.getViewCursor()
+ oViewCursor.ParaIsHyphenation = true
+ success = balanceParaTail(oViewCursor.Start, false)
+End Sub
+
Sub adjustLastLineCurPara()
Dim oViewCursor As Object
Dim oTextCursor As Object
@@ -463,6 +480,7 @@ Sub adjustLastLineCurPara()
Dim success As Boolean
Dim adjustType As Integer
Dim hyph As Boolean
+ fixViewCursor()
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oTextCursor = oViewCursor.Text.CreateTextCursorByRange(oViewCursor)
paraEnd = getParaEnd(oTextCursor)
@@ -474,7 +492,7 @@ Sub adjustLastLineCurPara()
adjustType = oTextCursor.ParaAdjust
hyph = oTextCursor.ParaIsHyphenation
oTextCursor.ParaIsHyphenation = true
- success = balanceParaTail(oTextCursor.Start)
+ success = balanceParaTail(oTextCursor.Start, true)
If success And adjustType = 2 Then
oTextCursor.ParaLastLineAdjust = 2
Else
@@ -503,7 +521,7 @@ Sub balanceFootNote(textElement As Object)
enum1Element = enum1.nextElement
If enum1Element.supportsService("com.sun.star.text.Paragraph") Then
oViewCursor.goToRange(enum1Element,false)
- adjustLastLineCurPara()
+ balanceCurParaLastLine()
EndIf
Wend
End Sub
@@ -537,7 +555,7 @@ End Function
-Function balanceParaTail(targetPara As Object) As Boolean
+Function balanceParaTail(targetPara As Object, strictMode As Boolean) As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim oContent As Object
@@ -550,10 +568,10 @@ Function balanceParaTail(targetPara As Object) As Boolean
oContentStart = getParaStart(oTextCursor)
oContentEnd = getParaEnd(oTextCursor)
oContent = getParaSelected(oContentStart,oContentEnd)
- balanceParaTail = balanceContentTail(oContent)
+ balanceParaTail = balanceContentTail(oContent, strictMode)
End Function
-Function balanceContentTail(oContent As Object) As Boolean
+Function balanceContentTail(oContent As Object, strictMode As Boolean) As Boolean
' Globalscope.BasicLibraries.LoadLibrary( "MRILib" )
balanceContentTail = false
Dim oViewCursor As Object
@@ -561,20 +579,18 @@ Function balanceContentTail(oContent As Object) As Boolean
Dim lineCount As Integer
Dim initialLineCount As Integer
Dim lineLen As Integer
+ Dim initialLineLen As Integer
Dim minLastLineLength As Integer
Dim medianLen As Integer
Dim paraLines() As Object
- Dim decreaseKerningFailed As Boolean
- Dim increaseKerningFailed As Boolean
Dim fallBackSuccess As Boolean
fallBackSuccess = false
- decreaseKerningFailed = false
- increaseKerningFailed = false
oViewCursor = ThisComponent.CurrentController.getViewCursor()
paraLen = Len(oContent.String)
paraLines = getContentLines(oContent)
initialLineCount = getParaLinesCount(paraLines)
lineLen = getParaLineLength(paraLines, 0)
+ initialLineLen = lineLen
medianLen = calculateMedianParaLen(oContent)
minLastLineLength = medianLen * 0.93
@@ -597,9 +613,20 @@ Function balanceContentTail(oContent As Object) As Boolean
'Tightened last line but it is still smaller than we need
fallBackSuccess = tryExpandPrevLines(oContent, minLastLineLength)
If Not fallBackSuccess Then
- oContent.CharKerning = initialCharKerning
+ If strictMode Then
+ oContent.CharKerning = initialCharKerning
+ balanceContentTail = false
+ Else
+ paraLines = getContentLines(oContent)
+ lineLen = getParaLineLength(paraLines,0)
+ If (lineLen < initialLineLen) Then
+ oContent.CharKerning = initialCharKerning
+ balanceContentTail = false
+ Else
+ balanceContentTail = true
+ EndIf
+ EndIf
oViewCursor.collapseToEnd()
- balanceContentTail = false
Exit Function
EndIf
Exit Do
@@ -654,10 +681,15 @@ End Function
Function tryExpandPrevLines(oPara As Object, minLastLineLength As Integer) As Boolean
Dim lineCount As Integer
+ Dim finishLineCount As Integer
Dim initialLineCount As Integer
Dim paraLine As Object
+ Dim finishLastline As Object
Dim lineNum As Integer
Dim failedLines() As Integer
+ Dim lastLineCharKerning As Integer
+ Dim paraLines() As Object
+ Dim lineCharKerning As Integer
paraLines = getContentLines(oPara)
lineLen = getParaLineLength(paraLines,0)
initialLineCount = getParaLinesCount(paraLines)
@@ -674,9 +706,16 @@ Function tryExpandPrevLines(oPara As Object, minLastLineLength As Integer) As Bo
lineLen = getParaLineLength(paraLines,0)
If lineNum > 1 And (lineCount <> initialLineCount Or paraLine.CharKerning > MAX_CHAR_KERNING) Then
AddToArray(failedLines, lineNum)
- decreaseCharKerning(paraLine)
+ lineCharKerning = decreaseCharKerning(paraLine)
paraLines = getContentLines(oPara)
lineCount = getParaLinesCount(paraLines)
+ If lineCount > initialLineCount Then
+ Do While lineCount > initialLineCount And lineCharKerning > MIN_CHAR_KERNING
+ lineCharKerning = decreaseCharKerning(paraLine)
+ paraLines = getContentLines(oPara)
+ lineCount = getParaLinesCount(paraLines)
+ Loop
+ EndIf
lineLen = getParaLineLength(paraLines,0)
lineNum = 0
ElseIf lineNum = 1 And paraLine.CharKerning > MAX_CHAR_KERNING Then
@@ -689,8 +728,50 @@ Function tryExpandPrevLines(oPara As Object, minLastLineLength As Integer) As Bo
Else
tryExpandPrevLines = false
EndIf
+ normalizeLastLine(oPara)
+
+
End Function
+Sub normalizeLastLine(oPara As Object)
+ Dim lineCount As Integer
+ Dim finishLineCount As Integer
+ Dim initialLineCount As Integer
+ Dim paraLine As Object
+ Dim finishLastline As Object
+ Dim lineNum As Integer
+ Dim failedLines() As Integer
+ Dim lastLineCharKerning As Integer
+ Dim paraLines() As Object
+ Dim oTextCursor As Object
+ oTextCursor = oPara.Text.createTextCursorByRange(oPara)
+ oTextCursor.collapseToEnd()
+ If ( oTextCursor.CharKerning > 0 ) Then
+ Exit Sub
+ EndIf
+
+ 'increase last line kerning to 0
+ paraLines = getContentLines(oPara)
+ lineCount = getParaLinesCount(paraLines)
+ finishLineCount = lineCount
+ finishLastline = paraLines(UBound(paraLines))
+ 'try just set 0 char kerning to last line, reduce kerning if failed
+ lastLineCharKerning = 0
+ finishLastline.CharKerning = lastLineCharKerning
+ paraLines = getContentLines(oPara)
+ lineCount = getParaLinesCount(paraLines)
+ If lineCount > finishLineCount Then
+ Do While lineCount > finishLineCount AND lastLineCharKerning > MIN_CHAR_KERNING
+ lastLineCharKerning = lastLineCharKerning - 2
+ finishLastline.CharKerning = lastLineCharKerning
+ paraLines = getContentLines(oPara)
+ lineCount = getParaLinesCount(paraLines)
+ Loop
+ EndIf
+
+End Sub
+
+
Function getParaLinesCount(paraLines() As Object) As Integer
getParaLinesCount = UBound(paraLines) + 1
@@ -736,7 +817,7 @@ Function getContentLines(oContent As Object) As Variant
getContentLines = paraLines
End Function
-Sub decreaseCharKerning(oPara As Object)
+Function decreaseCharKerning(oPara As Object) As Integer
Dim initialCharKerning As Integer
Dim textExcerpts As Object
Dim textExcerpt As Object
@@ -747,9 +828,10 @@ Sub decreaseCharKerning(oPara As Object)
If (initialCharKerning >= MIN_CHAR_KERNING) Then
oPara.CharKerning = initialCharKerning - 2
EndIf
-End Sub
+ decreaseCharKerning = initialCharKerning - 2
+End Function
-Sub increaseCharKerning(oPara As Object)
+Function increaseCharKerning(oPara As Object) As Integer
Dim initialCharKerning As Integer
Dim textExcerpts As Object
Dim textExcerpt As Object
@@ -758,7 +840,9 @@ Sub increaseCharKerning(oPara As Object)
initialCharKerning = oPara.CharKerning
EndIf
oPara.CharKerning = initialCharKerning + 2
-End Sub
+ increaseCharKerning = initialCharKerning + 2
+End Function
+
Function lastLineIsNotBalanced(lineLen As Integer,minLastLineLength As Integer) As Boolean
lastLineIsNotBalanced = true
If lineLen = 0 Then
@@ -1034,8 +1118,10 @@ End Sub
Sub replaceParaStyle
dim oldStyleName As String
+ dim oldStyleNameLocalized As String
dim oldStyle As Object
dim newStyleName As String
+ dim newStyleNameLocalized As String
dim paragraphStyles As Object
dim userInput As Integer
Dim listBox As Object
@@ -1067,11 +1153,11 @@ Sub replaceParaStyle
listBox.addItems(sortedDPSN , 0)
oDialog.Title = getTranslation("replaceParaStyleDialogTitle")
oDialog.Execute()
- newStyleName = oDialog.model.Tag
- If newStyleName="0" or newStyleName="" Then
+ newStyleNameLocalized = oDialog.model.Tag
+ If newStyleNameLocalized="0" or newStyleNameLocalized="" Then
Exit sub
EndIf
- foundIndex = getIndex(displayParaStyleNames, newStyleName)
+ foundIndex = getIndex(displayParaStyleNames, newStyleNameLocalized)
'set style system name instead of display name
newStyleName = paraStyleNames(foundIndex)
@@ -1079,11 +1165,10 @@ Sub replaceParaStyle
MsgBox getTranslation("replaceParaStyleStylesEqualsNotification")
Exit sub
EndIf
-
If oldStyleName <> "" Then
oldStyle = paraStyles.getByName(oldStyleName)
If NOT oldStyle.isUserDefined Then
- MsgBox getTranslation("replaceParaStyleCurrentStyleIsStandard")
+ replaceDefaultParaStyle(getLocalizedParaStyleName(oldStyleName), newStyleNameLocalized)
Exit sub
EndIf
oldStyle.ParentStyle = newStyleName
@@ -1101,10 +1186,70 @@ Sub replaceParaStyle
EndIf
EndIf
Wend
-
-
End Sub
+Function getLocalizedParaStyleName(styleName as String) As String
+ Dim style As Object
+ Dim styles As Object
+ styles = ThisComponent.StyleFamilies
+ style = styles.getByName(styles.elementNames(1)).getByName(styleName)
+ getLocalizedParaStyleName = style.DisplayName
+End Function
+
+sub replaceDefaultParaStyle(fromStyle As String, toStyle As String)
+
+ dim document as object
+ dim dispatcher as object
+ document = ThisComponent.CurrentController.Frame
+ dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
+ dim args1(21) as new com.sun.star.beans.PropertyValue
+ args1(0).Name = "SearchItem.StyleFamily"
+ args1(0).Value = 2
+ args1(1).Name = "SearchItem.CellType"
+ args1(1).Value = 0
+ args1(2).Name = "SearchItem.RowDirection"
+ args1(2).Value = true
+ args1(3).Name = "SearchItem.AllTables"
+ args1(3).Value = false
+ args1(4).Name = "SearchItem.SearchFiltered"
+ args1(4).Value = false
+ args1(5).Name = "SearchItem.Backward"
+ args1(5).Value = false
+ args1(6).Name = "SearchItem.Pattern"
+ args1(6).Value = true
+ args1(7).Name = "SearchItem.Content"
+ args1(7).Value = false
+ args1(8).Name = "SearchItem.AsianOptions"
+ args1(8).Value = false
+ args1(9).Name = "SearchItem.AlgorithmType"
+ args1(9).Value = 0
+ args1(10).Name = "SearchItem.SearchFlags"
+ args1(10).Value = 65536
+ args1(11).Name = "SearchItem.SearchString"
+ args1(11).Value = fromStyle
+ args1(12).Name = "SearchItem.ReplaceString"
+ args1(12).Value = toStyle
+ args1(13).Name = "SearchItem.Locale"
+ args1(13).Value = 255
+ args1(14).Name = "SearchItem.ChangedChars"
+ args1(14).Value = 2
+ args1(15).Name = "SearchItem.DeletedChars"
+ args1(15).Value = 2
+ args1(16).Name = "SearchItem.InsertedChars"
+ args1(16).Value = 2
+ args1(17).Name = "SearchItem.TransliterateFlags"
+ args1(17).Value = 1280
+ args1(18).Name = "SearchItem.Command"
+ args1(18).Value = 3
+ args1(19).Name = "SearchItem.SearchFormatted"
+ args1(19).Value = false
+ args1(20).Name = "SearchItem.AlgorithmType2"
+ args1(20).Value = 1
+ args1(21).Name = "Quiet"
+ args1(21).Value = true
+ dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
+end sub
+
Function getIndex(array As variant, value As variant) As Integer
Dim id As Integer
Dim nRight As Integer
@@ -1159,4 +1304,26 @@ Sub subShellSort(mArray)
h = h \ 3
Loop
End Sub
+
+sub setZoomToSpeedUpTasks
+ dim document as object
+ dim dispatcher as object
+ dim args1(2) as new com.sun.star.beans.PropertyValue
+ dim args2(1) as new com.sun.star.beans.PropertyValue
+
+ document = ThisComponent.CurrentController.Frame
+ dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
+ args1(0).Name = "Zoom.Value"
+ args1(0).Value = 60
+ args1(1).Name = "Zoom.ValueSet"
+ args1(1).Value = 28703
+ args1(2).Name = "Zoom.Type"
+ args1(2).Value = 0
+ dispatcher.executeDispatch(document, ".uno:Zoom", "", 0, args1())
+ args2(0).Name = "ViewLayout.Columns"
+ args2(0).Value = 1
+ args2(1).Name = "ViewLayout.BookMode"
+ args2(1).Value = false
+ dispatcher.executeDispatch(document, ".uno:ViewLayout", "", 0, args2())
+end sub
\ No newline at end of file
diff --git a/ePublishing/Hyphenations.xba b/ePublishing/Hyphenations.xba
index 0ad9425..48e670e 100644
--- a/ePublishing/Hyphenations.xba
+++ b/ePublishing/Hyphenations.xba
@@ -15,6 +15,7 @@ Private Sub convertHyphInDoc()
statusIndicator = ThisComponent.getCurrentController.StatusIndicator
statusIndicator.Start(getTranslation("hyphenationsInProgress"),10)
turnOffTracking
+ setZoomToSpeedUpTasks()
AcceptAllTrackedChanges
convertHyphInText(ThisComponent.Text)
' Globalscope.BasicLibraries.LoadLibrary( "MRILib" )
diff --git a/ePublishing/PageStyles.xba b/ePublishing/PageStyles.xba
index 5a0ce36..b36956c 100644
--- a/ePublishing/PageStyles.xba
+++ b/ePublishing/PageStyles.xba
@@ -1,6 +1,7 @@
- Dim pDialog As Object
+
+ Dim pDialog As Object
Sub pageStylesDialog
Dim listBox As Object
@@ -356,8 +357,8 @@ Function covertMMtoLong(dimension As String) As Long
convertMMtoLong = -1
Exit Function
EndIf
- dimension = customReplace(dimension, ",", ".")
- If Not IsNumeric(dimension) Then
+ dimension = customReplace(dimension, ".", ",")
+ If Not IsNumeric( dimension ) Then
convertMMtoLong = -1
Exit Function
EndIf
diff --git a/ePublishing/TOCLinks.xba b/ePublishing/TOCLinks.xba
index 1781e80..e8dc25a 100644
--- a/ePublishing/TOCLinks.xba
+++ b/ePublishing/TOCLinks.xba
@@ -18,6 +18,7 @@ Sub makeLinksWithLevel(level)
Dim outline() As Object
Dim oAnchor1Name As String
Dim oAnchor2Name As String
+ Dim message As String
Dim i As Integer
heading = getHeadingWithLevel(level)
outline = getOutlineWithLevel(level)
@@ -31,7 +32,10 @@ Sub makeLinksWithLevel(level)
createLink(outline(i),"",oAnchor2Name)
Next i
Else
- MsgBox getTranslation("TOCErrorContentsNotMatchHeadings1") & " " & level & " (" & (Ubound(outline)+1) & getTranslation("TOCErrorContentsNotMatchHeadings2") & " " & level & " " & getTranslation("TOCErrorContentsNotMatchHeadings3") & (Ubound(heading)+1) & ")"
+ message = getTranslation("TOCErrorContentsNotMatchHeadings1") & " " & level & " (" & (Ubound(outline)+1) &") " & _
+ getTranslation("TOCErrorContentsNotMatchHeadings2") & " " & level & " " & _
+ getTranslation("TOCErrorContentsNotMatchHeadings3") & " (" & (Ubound(heading)+1) & ")"
+ showTOCLinksDialog(message, heading(), outline() )
EndIf
ElseIf Ubound(outline) = -1 Then
' MsgBox (getTranslation("TOCErrorNoContents1") & " " & level & " " & getTranslation("TOCErrorNoContents2"))
@@ -131,6 +135,95 @@ Function getOutlineWithLevel(curNum)
getOutlineWithLevel = par()
End Function
+
+Sub showTOCLinksDialog(message As String, heading() As Object, outline() As Object)
+ Dim pDialog As Object
+ Dim grid As Object
+ Dim headingsColumn As Object
+ Dim tocColumn As Object
+ Dim oGridControl As Object
+ Dim oColumnModel As Object
+ Dim oDataModel As Object
+ Dim rect As Object
+ Dim i As Integer
+ Dim j As Integer
+ Dim outlineCell As String
+ Dim headingCell As String
+ DialogLibraries.LoadLibrary("ePublishing")
+ pDialog = CreateUnoDialog( DialogLibraries.ePublishing.toc_links )
+
+ 'grid = pDialog.getControl("grid")
+ grid = pDialog.Model.createInstance("com.sun.star.awt.grid.UnoControlGridModel")
+ grid.Name = "tocGrid"
+ grid.ShowColumnHeader = True
+ grid.ShowRowHeader = True
+ grid.VScroll = true
+ grid.Sizeable = true
+ grid.Step = 0
+
+ oColumnModel = createUnoService( "com.sun.star.awt.grid.DefaultGridColumnModel")
+
+ tocColumn = createUnoService( "com.sun.star.awt.grid.GridColumn")
+ tocColumn.Title = getTranslation("tocItemText")
+ tocColumn.ColumnWidth = 100
+ tocColumn.Resizeable = true
+ 'tocColumn.Flexibility = true
+
+ oColumnModel.addColumn( tocColumn )
+
+ headingsColumn = createUnoService( "com.sun.star.awt.grid.GridColumn")
+ headingsColumn.Title = getTranslation("headingItemText")
+ headingsColumn.ColumnWidth = 100
+ headingsColumn.Resizeable = true
+ 'headingsColumn.Flexibility = true
+
+ oColumnModel.addColumn( headingsColumn )
+
+ grid.ColumnModel = oColumnModel
+ 'grid.Sizeable = False
+ 'gridStep = 0
+
+ oDataModel = createUnoService( "com.sun.star.awt.grid.DefaultGridDataModel")
+ If Ubound(outline) > Ubound(heading) Then
+ For i = 0 To (Ubound(outline))
+ outlineCell = outline(i).getString()
+ j = i MOD (Ubound(heading) + 1)
+ headingCell = heading(j).getString()
+ oDataModel.addRow ( i+1 , Array(outlineCell, headingCell) )
+ Next
+ Else
+ For i = 0 To (Ubound(heading))
+ headingCell = heading(i).getString()
+ If i > Ubound(outline) Then
+ outlineCell = ""
+ Else
+ outlineCell = outline(i).getString()
+ EndIf
+ oDataModel.addRow ( i+1 , Array(outlineCell, headingCell) )
+ Next i
+ EndIf
+ grid.GridDataModel = oDataModel
+
+ oGridControl = createUnoService("com.sun.star.awt.grid.UnoControlGrid")
+ oGridControl.setModel(grid)
+ pDialog.addControl("gridtab", oGridControl)
+ rect = pDialog.getPosSize()
+ oGridControl.setPosSize(10,60,rect.Width - 20,rect.Height - 120, com.sun.star.awt.PosSize.POSSIZE)
+
+
+
+
+ pDialog.getControl("Ok").Label = getTranslation("buttonOk")
+ pDialog.getControl("message").SetText(message)
+ pDialog.Title = getTranslation("tocDialogLabel")
+ pDialog.Execute()
+ pDialog.dispose()
+End Sub
+
+
+
+
+
Sub addToArray(xArray(),vNextElement)
Dim iUB As Integer
Dim iLB As Integer
diff --git a/ePublishing/Translations.xba b/ePublishing/Translations.xba
index a47b9e3..fac044c 100644
--- a/ePublishing/Translations.xba
+++ b/ePublishing/Translations.xba
@@ -29,7 +29,7 @@ End Function
Function getRussian(identifier As String) As String
Select Case identifier
Case "buttonOk"
- getRussian = "Применить"
+ getRussian = "OK"
Exit Function
Case "buttonCancel"
getRussian = "Отмена"
@@ -140,10 +140,10 @@ Function getRussian(identifier As String) As String
getRussian = "Число параграфов со стилем Оглавление "
Exit Function
Case "TOCErrorContentsNotMatchHeadings2"
- getRussian = ") не кратно числу Заголовоков"
+ getRussian = " не кратно числу Заголовоков"
Exit Function
Case "TOCErrorContentsNotMatchHeadings3"
- getRussian = "уровня ("
+ getRussian = "уровня "
Exit Function
Case "complileJournalIssueConfirmation"
getRussian = "Вы уверены, что хотите запустить сборку выпуска ?"
@@ -295,6 +295,15 @@ Function getRussian(identifier As String) As String
Case "EndnotesConversionTwoOptions"
getRussian = "Найдены и стандартные и ручные концевые сноски. Можно сконвертировать стандартные в ручные (установите курсор в нужном параграфе) или ручные в стандартные"
Exit Function
+ Case "tocDialogLabel"
+ getRussian = "Ошибка"
+ Exit Function
+ Case "tocItemText"
+ getRussian = "Текст оглавления"
+ Exit Function
+ Case "headingItemText"
+ getRussian = "Текст заголовка"
+ Exit Function
Case Else
getRussian = "Перевод не найден"
End Select
@@ -415,10 +424,10 @@ Function getEnglish(identifier As String) As String
getEnglish = "Number of paras with style Contents "
Exit Function
Case "TOCErrorContentsNotMatchHeadings2"
- getEnglish = ") dosn't match number of headings with "
+ getEnglish = " dosn't match number of headings with "
Exit Function
Case "TOCErrorContentsNotMatchHeadings3"
- getEnglish = "level ("
+ getEnglish = "level "
Exit Function
Case "complileJournalIssueConfirmation"
getEnglish = "Compile journal issue from articles?"
@@ -570,6 +579,15 @@ Function getEnglish(identifier As String) As String
Case "EndnotesConversionTwoOptions"
getEnglish = "Both standard and manual endnotes are found. You can convert standard to manual (place the cursor in the desired paragraph) or manual to standard"
Exit Function
+ Case "tocDialogLabel"
+ getEnglish = "Error"
+ Exit Function
+ Case "tocItemText"
+ getEnglish = "Contents item text"
+ Exit Function
+ Case "headingItemText"
+ getEnglish = "Heading text"
+ Exit Function
Case Else
getEnglish = "No translation"
End Select
@@ -689,10 +707,10 @@ Function getFrench(identifier As String) As String
getFrench = "Nombre de paragraphes avec style Table des matières."
Exit Function
Case "TOCErrorContentsNotMatchHeadings2"
- getFrench = ") n'est pas un multiple du nombre de titres"
+ getFrench = " n'est pas un multiple du nombre de titres"
Exit Function
Case "TOCErrorContentsNotMatchHeadings3"
- getFrench = "au niveau ("
+ getFrench = "au niveau "
Exit Function
Case "complileJournalIssueConfirmation"
getFrench = "Êtes-vous sûr de vouloir compiler un journal à partir d'articles ?"
@@ -844,6 +862,15 @@ Function getFrench(identifier As String) As String
Case "EndnotesConversionTwoOptions"
getFrench = "Des notes de fin standard et manuelles sont trouvées. Vous pouvez convertir standard en manuel (placez le curseur dans le paragraphe souhaité) ou manuel en standard"
Exit Function
+ Case "tocDialogLabel"
+ getFrench = "Erreur"
+ Exit Function
+ Case "tocItemText"
+ getFrench = "Texte de l'élément de contenu"
+ Exit Function
+ Case "headingItemText"
+ getFrench = "Texte d'en-tête"
+ Exit Function
Case Else
getFrench = "No translation"
End Select
@@ -963,10 +990,10 @@ Function getCroatian(identifier As String) As String
getCroatian = "Broj paragrafa sa stilom Sadržaj"
Exit Function
Case "TOCErrorContentsNotMatchHeadings2"
- getCroatian = ") nije višestruko od broja Zaglavlja"
+ getCroatian = " nije višestruko od broja Zaglavlja"
Exit Function
Case "TOCErrorContentsNotMatchHeadings3"
- getCroatian = "Nivoa ("
+ getCroatian = "Nivoa "
Exit Function
Case "complileJournalIssueConfirmation"
getCroatian = "Da li ste sigurni da želite da pokrenete gradnju izdanja ?"
@@ -1118,6 +1145,15 @@ Function getCroatian(identifier As String) As String
Case "EndnotesConversionTwoOptions"
getCroatian = "Pronađene su i standardne i ručne bilješke. Možete pretvoriti standardni u ručni (postavite kursor u željeni odlomak) ili ručni u standardni"
Exit Function
+ Case "tocDialogLabel"
+ getCroatian = "Pogreška"
+ Exit Function
+ Case "tocItemText"
+ getCroatian = "Sadržaj teksta stavke"
+ Exit Function
+ Case "headingItemText"
+ getCroatian = "Tekst zaglavlja"
+ Exit Function
Case Else
getCroatian = "No translation"
End Select
@@ -1237,10 +1273,10 @@ Function getSerbian(identifier As String) As String
getSerbian = "Број параграфа са стилом Садржај"
Exit Function
Case "TOCErrorContentsNotMatchHeadings2"
- getSerbian = ") није вишеструко од броја Заглавља"
+ getSerbian = " није вишеструко од броја Заглавља"
Exit Function
Case "TOCErrorContentsNotMatchHeadings3"
- getSerbian = "Нивоа ("
+ getSerbian = "Нивоа "
Exit Function
Case "complileJournalIssueConfirmation"
getSerbian = "Да ли сте сигурни да желите да покренете градњу издања ?"
@@ -1392,6 +1428,15 @@ Function getSerbian(identifier As String) As String
Case "EndnotesConversionTwoOptions"
getSerbian = "Пронађене су и стандардне и ручне белешке. Можете претворити стандардни у ручни (поставите курсор у жељени одломак) или ручни у стандардни"
Exit Function
+ Case "tocDialogLabel"
+ getSerbian = "Грешка"
+ Exit Function
+ Case "tocItemText"
+ getSerbian = "Садржај текста ставке"
+ Exit Function
+ Case "headingItemText"
+ getSerbian = "Текст заглавља"
+ Exit Function
Case Else
getSerbian = "No translation"
End Select
@@ -1511,10 +1556,10 @@ Function getBosnian(identifier As String) As String
getBosnian = "Broj paragrafa sa stilom Sadržaj"
Exit Function
Case "TOCErrorContentsNotMatchHeadings2"
- getBosnian = ") nije višestruko od broja Zaglavlja"
+ getBosnian = " nije višestruko od broja Zaglavlja"
Exit Function
Case "TOCErrorContentsNotMatchHeadings3"
- getBosnian = "Nivoa ("
+ getBosnian = "Nivoa "
Exit Function
Case "complileJournalIssueConfirmation"
getBosnian = "Da li ste sigurni da želite da pokrenete gradnju izdanja ?"
@@ -1666,6 +1711,15 @@ Function getBosnian(identifier As String) As String
Case "EndnotesConversionTwoOptions"
getBosnian = "Pronađene su i standardne i ručne bilješke. Možete pretvoriti standardni u ručni (postavite kursor u željeni odlomak) ili ručni u standardni"
Exit Function
+ Case "tocDialogLabel"
+ getBosnian = "Greška"
+ Exit Function
+ Case "tocItemText"
+ getBosnian = "Sadržaj teksta stavke"
+ Exit Function
+ Case "headingItemText"
+ getBosnian = "Tekst zaglavlja"
+ Exit Function
Case Else
getBosnian = "No translation"
End Select
diff --git a/ePublishing/dialog.xlb b/ePublishing/dialog.xlb
index a461644..9d58d22 100644
--- a/ePublishing/dialog.xlb
+++ b/ePublishing/dialog.xlb
@@ -5,4 +5,5 @@
+
\ No newline at end of file
diff --git a/ePublishing/journals.xba b/ePublishing/journals.xba
index 703a46e..bcddfb0 100644
--- a/ePublishing/journals.xba
+++ b/ePublishing/journals.xba
@@ -1,6 +1,6 @@
-Private sub journalsMark35
+Private sub journalsMark36
End sub
Dim templateName As String
@@ -29,6 +29,7 @@ Private Sub makeUpIssue
If NOT confirm(description) Then
Exit Sub
EndIf
+ setZoomToSpeedUpTasks()
EIFN = "ЭиФН"
PHA = "ФА"
@@ -1141,16 +1142,11 @@ Sub configureCursorPositionForContentShrink()
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim curSelection As Object
- Dim selectionTextRange
+ Dim selectionTextRange As Object
Dim nextChar As String
Dim prefChar As String
oViewCursor = ThisComponent.CurrentController.getViewCursor()
- curSelection = ThisComponent.getCurrentSelection()
- If Not curSelection.supportsService("com.sun.star.text.TextRanges") Then
- selectionTextRange = curSelection.Anchor
- oViewCursor.JumpToFirstPage(false)
- oViewCursor.goToRange(selectionTextRange,false)
- EndIf
+ fixViewCursor()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
'At start of Para
oTextCursor.collapseToEnd()
@@ -1160,14 +1156,28 @@ Sub configureCursorPositionForContentShrink()
oViewCursor.goToRange(oTextCursor,false)
End Sub
-Function isShrinkPageSucceded(initPosition As Object,initPageNum As String) As Boolean
+Sub fixViewCursor()
+ Dim oViewCursor As Object
+ Dim curSelection As Object
+ Dim selectionTextRange As Object
+ oViewCursor = ThisComponent.CurrentController.getViewCursor()
+ curSelection = ThisComponent.getCurrentSelection()
+ If Not curSelection.supportsService("com.sun.star.text.TextRanges") Then
+ selectionTextRange = curSelection.Anchor
+ oViewCursor.JumpToFirstPage(false)
+ oViewCursor.goToRange(selectionTextRange,false)
+ EndIf
+End Sub
+
+
+Function isContentPageChanged(initPosition As Object,initPageNum As String) As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
isShrinkPageSucceded = false
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(initPosition,false)
If (oViewCursor.getPage <> initPageNum) Then
- isShrinkPageSucceded = true
+ isContentPageChanged = true
EndIf
End Function
@@ -1190,11 +1200,11 @@ Function breakParaAtCursor() As Object
oViewCursor.goToRange(oTextCursor,false)
breakParaAtCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
Else
- oTextCursor.goRight(1,false)
- oViewCursor.goToRange(oTextCursor,false)
- oViewCursor.BreakType = com.sun.star.style.BreakType.PAGE_BEFORE
- oTextCursor.goLeft(1,false)
- oViewCursor.goToRange(oTextCursor,false)
+ 'oTextCursor.goRight(1,false)
+ 'oViewCursor.goToRange(oTextCursor,false)
+ 'oViewCursor.BreakType = com.sun.star.style.BreakType.PAGE_BEFORE
+ 'oTextCursor.goLeft(1,false)
+ 'oViewCursor.goToRange(oTextCursor,false)
breakParaAtCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
EndIf
End Function
@@ -1295,7 +1305,7 @@ Function shrinkPageContent() As Boolean
targetContent = selectContentToShrink(initPosition,startPosition)
For i = LBound(targetContent) To Ubound(targetContent)
shrinkContentSpacing(targetContent(i))
- If isShrinkPageSucceded(initPosition, initPageNum) Then
+ If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
@@ -1307,9 +1317,9 @@ Function shrinkPageContent() As Boolean
decreaseContentCharHeight(targetContent(i), delta)
EndIf
If shrinkContentWithKerning(targetContent(i)) Then
- balanceContentTail(targetContent(i))
+ balanceContentTail(targetContent(i),false)
EndIf
- If isShrinkPageSucceded(initPosition, initPageNum) Then
+ If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
@@ -1317,7 +1327,7 @@ Function shrinkPageContent() As Boolean
For j = 1 To roundsLineHeight
For i = LBound(targetContent) To Ubound(targetContent)
decreaseIntervalHeight(targetContent(i))
- If isShrinkPageSucceded(initPosition, initPageNum) Then
+ If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
diff --git a/ePublishing/toc_links.xdl b/ePublishing/toc_links.xdl
new file mode 100644
index 0000000..9e0bff5
--- /dev/null
+++ b/ePublishing/toc_links.xdl
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/epublishing.update.xml b/epublishing.update.xml
index 18f5fab..d535c91 100644
--- a/epublishing.update.xml
+++ b/epublishing.update.xml
@@ -2,9 +2,9 @@
-
+
-
+
diff --git a/translations.ods b/translations.ods
index b7b2ce0..b56e958 100644
Binary files a/translations.ods and b/translations.ods differ