From da4169bcd68b28f7602063429eb5cc2364634d83 Mon Sep 17 00:00:00 2001 From: Georgy Litvinov Date: Thu, 17 Oct 2019 00:31:08 +0300 Subject: [PATCH] Alpha works --- IPHRedaction/Clean.xba | 18 ++++++++ IPHRedaction/Validation.xba | 80 ++++++++++++++++++++++++++++++++++-- IPHRedaction/script.xlb | 4 +- redaction.oxt | Bin 52764 -> 53690 bytes 4 files changed, 97 insertions(+), 5 deletions(-) diff --git a/IPHRedaction/Clean.xba b/IPHRedaction/Clean.xba index dec6070..f583774 100644 --- a/IPHRedaction/Clean.xba +++ b/IPHRedaction/Clean.xba @@ -41,12 +41,30 @@ Private Sub loadArticleStyles ThisComponent.StyleFamilies.loadStylesFromURL( filePath, aArgs() ) End Sub +Private Function CreateProperty( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue + Dim oPropertyValue As New com.sun.star.beans.PropertyValue + If Not IsMissing( cName ) Then + oPropertyValue.Name = cName + EndIf + If Not IsMissing( uValue ) Then + oPropertyValue.Value = uValue + EndIf + CreateProperty() = oPropertyValue +End Function + Private Sub AskAndReplace(SearchString, oReplaceString) Dim SrchAttributes(0) as new com.sun.star.beans.PropertyValue Dim ReplAttributes(0) as new com.sun.star.beans.PropertyValue ReplaceFormatting(SearchString,oReplaceString,SrchAttributes,ReplAttributes, true) End Sub +Private Function DocHasCharStyle(oDoc, sName$) As Boolean + Dim oStyles + oStyles = oDoc.StyleFamilies.getByName("CharacterStyles") + DocHasCharStyle() = oStyles.hasByName(sName) +End Function + + Private Function getTemplatePath() as String Dim ath as String Dim settings As Object diff --git a/IPHRedaction/Validation.xba b/IPHRedaction/Validation.xba index a14b16e..3f335d9 100644 --- a/IPHRedaction/Validation.xba +++ b/IPHRedaction/Validation.xba @@ -1,12 +1,86 @@ -Sub valButtonMark +Sub markY End Sub - Sub validateButton - MsgBox "Validation works!" + removeBadCharacters End Sub +Private Sub removeBadCharacters + StartTracking + AskAndReplace("[\uE000-\uF8FF]+","") + checkAllFootnotes + StopTracking + showTrackedChanges +End Sub + +Private Sub checkAllFootnotes() + Dim footnotes As Object + Dim count as Integer + Dim charNum as Long + Dim char As Long + Dim label As String + Dim result As String + result = "" + footnotes = ThisComponent.Footnotes + count = footnotes.getCount + For i = 0 to count-1 + footnote = footnotes.getByIndex(i) +' Mri footnote + label = footnote.Label + charNum = Len(label) + For j = 1 to charNum + char = Asc(Right(Left(label,j),1)) + If char >= 57344 AND char <= 63743 then + result = result & "Символ "& Chr(char) &" сноски "& i &" находится в диапазоне для частного использования"& chr(10) + 'Mri footnote + 'footNote.setLabel(Left(label,j-1) & "*" & Right(label,charNum-j)) + End If + Next j + Next i + If result <> "" then + MsgBox result + EndIf +End Sub + +Private Sub showTrackedChanges + dim document as object + dim dispatcher as object + document = ThisComponent.CurrentController.Frame + dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") + dispatcher.executeDispatch(document, ".uno:AcceptTrackedChanges", "", 0, Array()) + dim args2(0) as new com.sun.star.beans.PropertyValue + args2(0).Name = "ShowTrackedChanges" + args2(0).Value = true + dispatcher.executeDispatch(document, ".uno:ShowTrackedChanges", "", 0, args2()) + +end Sub + +Private Sub StartTracking + dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") + document = ThisComponent.CurrentController.Frame + dim trackProperties(0) as new com.sun.star.beans.PropertyValue + trackProperties(0).Name = "TrackChanges" + trackProperties(0).Value = true + dispatcher.executeDispatch(document, ".uno:TrackChanges", "", 0, trackProperties()) + dim args1(0) as new com.sun.star.beans.PropertyValue + args1(0).Name = "ShowTrackedChanges" + args1(0).Value = true + dispatcher.executeDispatch(document, ".uno:ShowTrackedChanges", "", 0, args1()) +End Sub + +Private Sub StopTracking + dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") + document = ThisComponent.CurrentController.Frame + dim trackProperties(0) as new com.sun.star.beans.PropertyValue + trackProperties(0).Name = "TrackChanges" + trackProperties(0).Value = false + dispatcher.executeDispatch(document, ".uno:TrackChanges", "", 0, trackProperties()) + dim args1(0) as new com.sun.star.beans.PropertyValue + args1(0).Name = "ShowTrackedChanges" + args1(0).Value = true + dispatcher.executeDispatch(document, ".uno:ShowTrackedChanges", "", 0, args1()) +End Sub \ No newline at end of file diff --git a/IPHRedaction/script.xlb b/IPHRedaction/script.xlb index aee7981..20de646 100644 --- a/IPHRedaction/script.xlb +++ b/IPHRedaction/script.xlb @@ -1,6 +1,6 @@ - + - + \ No newline at end of file diff --git a/redaction.oxt b/redaction.oxt index a0117c994749b63c6118abf90b670fcc2c9f1ccd..3b2056a0d635bcbc7495122a89e8f1f0bff281f3 100644 GIT binary patch delta 7286 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 K3%~!>f&T)|O4lF& delta 6276 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