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