diff options
Diffstat (limited to 'wizards/source/gimmicks/GetTexts.xba')
-rw-r--r-- | wizards/source/gimmicks/GetTexts.xba | 522 |
1 files changed, 0 insertions, 522 deletions
diff --git a/wizards/source/gimmicks/GetTexts.xba b/wizards/source/gimmicks/GetTexts.xba deleted file mode 100644 index c98e7d51f..000000000 --- a/wizards/source/gimmicks/GetTexts.xba +++ /dev/null @@ -1,522 +0,0 @@ -<?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="GetTexts" script:language="StarBasic">Option Explicit -' Macro-Description: -' This Macro extracts the Strings out of the currently activated document und inserts them into a logdocument -' The aim of the macro is to provide the programmer an insight into the StarOffice API -' It focusses on how document-Objects are accessed. -' Therefor not only texts of the document-body are retrieved but also Texts of general -' document Objects like, Annotations, charts and general Document Information - -Public oLogDocument, oLogText, oLogCursor, oLogHeaderStyle, oLogBodyTextStyle as Object -Public oDocument as Object -Public LogArray(1000) as String -Public LogIndex as Integer -Public oLocHeaderStyle as Object - -Sub Main -Dim sDocType as String -Dim oHyperCursor as Object -Dim oCharStyles as Object - BasicLibraries.LoadLibrary("Tools") - On Local Error GoTo NODOCUMENT - oDocument = StarDesktop.ActiveFrame.Controller.Model - sDocType = GetDocumentType(oDocument) - NODOCUMENT: - If Err <> 0 Then - Msgbox("This macro extracts all data from the active Writer, Calc or Draw document." & chr(13) &_ - "To start this macro you have to activate a document first." , 16, GetProductName) - Exit Sub - End If - On Local Error Goto 0 - - ' Open a new document where all the texts are inserted - oLogDocument = CreateNewDocument("swriter") - If Not IsNull(oLogDocument) Then - oLogText = oLogDocument.Text - - ' create and define the character styles of the Log-document - oCharStyles = oLogDocument.StyleFamilies.GetByName("CharacterStyles") - oLogHeaderStyle = oLogDocument.createInstance("com.sun.star.style.CharacterStyle") - oCharStyles.InsertbyName("Log Header", oLogHeaderStyle) - - oLogHeaderStyle.charWeight = com.sun.star.awt.FontWeight.BOLD - oLogBodyTextStyle = oLogDocument.createInstance("com.sun.star.style.CharacterStyle") - oCharStyles.InsertbyName("Log Body", oLogBodyTextStyle) - - ' Insert the title of the activated document as a hyperlink - oHyperCursor = oLogText.createTextCursor() - oHyperCursor.CharWeight = com.sun.star.awt.FontWeight.BOLD - oHyperCursor.gotoStart(False) - oHyperCursor.HyperLinkURL = oDocument.URL - oHyperCursor.HyperLinkTarget = oDocument.URL - If oDocument.DocumentProperties.Title <> "" Then - oHyperCursor.HyperlinkName = oDocument.DocumentProperties.Title - End If - oLogText.insertString(oHyperCursor, oDocument.DocumentProperties.Title, False) - oLogText.insertControlCharacter(oHyperCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False) - - oLogCursor = oLogText.createTextCursor() - oLogCursor.GotoEnd(False) - ' "Switch off" the Hyperlink - Properties - oLogCursor.SetPropertyToDefault("HyperLinkURL") - oLogCursor.SetPropertyToDefault("HyperLinkTarget") - oLogCursor.SetPropertyToDefault("HyperLinkName") - LogIndex = 0 - - ' Get the Properties of the document - GetDocumentProps() - - Select Case sDocType - Case "swriter" - GetWriterStrings() - Case "scalc" - GetCalcStrings() - Case "sdraw", "simpress" - GetDrawStrings() - Case Else - Msgbox("This macro only works with a Writer, Calc or Draw/Impress document.", 16, GetProductName()) - End Select - End If -End Sub - - -' ***********************************************Calc-Documents************************************************** - -Sub GetCalcStrings() -Dim i, n as integer -Dim oSheet as Object -Dim SheetName as String -Dim oSheets as Object - ' Create a sequence of all sheets within the document - oSheets = oDocument.Sheets - - For i = 0 to osheets.Count - 1 - oSheet = osheets.GetbyIndex(i) - SheetName = oSheet.Name - MakeLogHeadLine("Sheet No. " & i & "(" & SheetName & ")" ) - - ' Check the "body" of the sheet - GetCellTexts(oSheet) - - If oSheet.IsScenario then - MakeLogHeadLine("Scenario Comments from " & SheetName & "'") - WriteStringtoLogFile(osheet.ScenarioComment) - End if - - GetAnnotations(oSheet, "Annotations from '" & SheetName & "'") - - GetChartStrings(oSheet, "Charts from '" & SheetName & "'") - - GetControlStrings(oSheet.DrawPage, "Controls from '" & SheetName & "'") - Next - - ' Pictures - GetCalcGraphicNames() - - GetNamedRanges() -End Sub - - -Sub GetCellTexts(oSheet as Object) -Dim BigRange, BigEnum, oCell as Object - BigRange = oDocument.CreateInstance("com.sun.star.sheet.SheetCellRanges") - BigRange.InsertbyName("",oSheet) - BigEnum = BigRange.GetCells.CreateEnumeration - While BigEnum.hasmoreElements - oCell = BigEnum.NextElement - If oCell.String <> "" And Val(oCell.String) = 0then - WriteStringtoLogFile(oCell.String) - End If - Wend -End Sub - - -Sub GetAnnotations(oSheet as Object, HeaderLine as String) -Dim oNotes as Object -Dim n as Integer - oNotes = oSheet.getAnnotations - If oNotes.hasElements() then - MakeLogHeadLine(HeaderLine) - For n = 0 to oNotes.Count-1 - WriteStringtoLogFile(oNotes.GetbyIndex(n).String) - Next - End if -End Sub - - -Sub GetNamedRanges() -Dim i as integer - MakeLogHeadLine("Named Ranges") - For i = 0 To oDocument.NamedRanges.Count - 1 - WriteStringtoLogFile(oDocument.NamedRanges.GetbyIndex(i).Name) - Next -End Sub - - -Sub GetCalcGraphicNames() -Dim n,m as integer - MakeLogHeadLine("Graphics") - For n = 0 To oDocument.Drawpages.count-1 - For m = 0 To oDocument.Drawpages.GetbyIndex(n).Count - 1 - WriteStringtoLogFile(oDocument.DrawPages.GetbyIndex(n).GetbyIndex(m).Text.String) - Next m - Next n -End Sub - - -' ***********************************************Writer-Documents************************************************** - -Sub GetParagraphTexts(oParaObject as Object, HeadLine as String) -Dim ParaEnum as Object -Dim oPara as Object -Dim oTextPortEnum as Object -Dim oTextPortion as Object -Dim i as integer -Dim oCellNames() -Dim oCell as Object - - MakeLogHeadLine(HeadLine) - ParaEnum = oParaObject.Text.CreateEnumeration - - While ParaEnum.HasMoreElements - oPara = ParaEnum.NextElement - - ' Note: The Enumeration ParaEnum lists all tables and Paragraphs. - ' Therefor we have to find out what kind of object "oPara" actually is - If oPara.supportsService("com.sun.star.text.Paragraph") Then - ' "oPara" is a Paragraph - oTextPortEnum = oPara.createEnumeration - While oTextPortEnum.hasmoreElements - oTextPortion = oTextPortEnum.nextElement() - WriteStringToLogFile(oTextPortion.String) - Wend - Else - ' "oPara" is a table - oCellNames = oPara.CellNames - For i = 0 To Ubound(oCellNames()) - If oCellNames(i) <> "" Then - oCell = oPara.getCellByName(oCellNames(i)) - WriteStringToLogFile(oCell.String) - End If - Next - End If - Wend -End Sub - - - -Sub GetChartStrings(oSheet as Object, HeaderLine as String) -Dim i as Integer -Dim aChartObject as Object -Dim aChartDiagram as Object - - MakeLogHeadLine(HeaderLine) - - For i = 0 to oSheet.Charts.Count-1 - aChartObject = oSheet.Charts.GetByIndex(i).EmbeddedObject - If aChartObject.HasSubTitle then - WriteStringToLogFile(aChartObject.SubTitle.String) - End If - - If aChartObject.HasMainTitle then - WriteStringToLogFile(aChartObject.Title.String) - End If - - aChartDiagram = aChartObject.Diagram - - If aChartDiagram.hasXAxisTitle Then - WriteStringToLogFile(aChartDiagram.XAxisTitle) - End If - - If aChartDiagram.hasYAxisTitle Then - WriteStringToLogFile(aChartDiagram.YAxisTitle) - End If - - If aChartDiagram.hasZAxisTitle Then - WriteStringToLogFile(aChartDiagram.ZAxisTitle) - End If - Next i -End Sub - - - -Sub GetFrameTexts() -Dim i as integer -Dim oTextFrame as object -Dim oFrameEnum as Object -Dim oFramePort as Object -Dim oFrameTextEnum as Object -Dim oFrameTextPort as Object - - MakeLogHeadLine("Text Frames") - For i = 0 to oDocument.TextFrames.Count-1 - oTextFrame = oDocument.TextFrames.GetbyIndex(i) - WriteStringToLogFile(oTextFrame.Name) - - ' Is the frame bound to the Page - If oTextFrame.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE Then - GetParagraphTexts(oTextFrame, "Text Frame Contents") - End If - - oFrameEnum = oTextFrame.CreateEnumeration - While oFrameEnum.HasMoreElements - oFramePort = oFrameEnum.NextElement - If oFramePort.supportsService("com.sun.star.text.Paragraph") then - oFrameTextEnum = oFramePort.createEnumeration - While oFrameTextEnum.HasMoreElements - oFrameTextPort = oFrameTextEnum.NextElement - If oFrameTextPort.SupportsService("com.sun.star.text.TextFrame") Then - WriteStringtoLogFile(oFrameTextPort.String) - End If - Wend - Else - WriteStringtoLogFile(oFramePort.Name) - End if - Wend - Next -End Sub - - -Sub GetTextFieldStrings() -Dim aTextField as Object -Dim i as integer -Dim CurElement as Object - MakeLogHeadLine("Text Fields") - aTextfield = oDocument.getTextfields.CreateEnumeration - While aTextField.hasmoreElements - CurElement = aTextField.NextElement - If CurElement.PropertySetInfo.hasPropertybyName("Content") Then - WriteStringtoLogFile(CurElement.Content) - ElseIf CurElement.PropertySetInfo.hasPropertybyName("PlaceHolder") Then - WriteStringtoLogFile(CurElement.PlaceHolder) - WriteStringtoLogFile(CurElement.Hint) - ElseIf Curelement.TextFieldMaster.PropertySetInfo.HasPropertybyName("Content") then - WriteStringtoLogFile(CurElement.TextFieldMaster.Content) - End If - Wend -End Sub - - - -Sub GetLinkedFileNames() -Dim oDocSections as Object -Dim LinkedFileName as String -Dim i as Integer - If Right(oDocument.URL,3) = "sgl" Then - MakeLogHeadLine("Sub-documents") - oDocSections = oDocument.TextSections - For i = 0 to oDocSections.Count - 1 - LinkedFileName = oDocSections.GetbyIndex(i).FileLink.FileURL - If LinkedFileName <> "" Then - WriteStringToLogFile(LinkedFileName) - End If - Next i - End If -End Sub - - -Sub GetSectionNames() -Dim i as integer -Dim oDocSections as Object - MakeLogHeadLine("Sections") - oDocSections = oDocument.TextSections - For i = 0 to oDocSections.Count-1 - WriteStringtoLogFile(oDocSections.GetbyIndex(i).Name) - Next -End Sub - - -Sub GetWriterStrings() - GetParagraphTexts(oDocument, "Document Body") - GetGraphicNames() - GetStyles() - GetControlStrings(oDocument.DrawPage, "Controls") - GetTextFieldStrings() - GetSectionNames() - GetFrameTexts() - GetHyperLinks - GetLinkedFileNames() -End Sub - - -' ***********************************************Draw-Documents************************************************** - -Sub GetDrawPageTitles(LocObject as Object) -Dim n as integer -Dim oPage as Object - - For n = 0 to LocObject.Count - 1 - oPage = LocObject.GetbyIndex(n) - WriteStringtoLogFile(oPage.Name) - ' Is the Page a DrawPage and not a MasterPage? - If oPage.supportsService("com.sun.star.drawing.DrawPage")then - ' Get the Name of the NotesPage (only relevant for Impress-Documents) - If oDocument.supportsService("com.sun.star.presentation.PresentationDocument") then - WriteStringtoLogFile(oPage.NotesPage.Name) - End If - End If - Next -End Sub - - -Sub GetPageStrings(oPages as Object) -Dim m, n, s as Integer -Dim oPage, oPageElement, oShape as Object - For n = 0 to oPages.Count-1 - oPage = oPages.GetbyIndex(n) - If oPage.HasElements then - For m = 0 to oPage.Count-1 - oPageElement = oPage.GetByIndex(m) - If HasUnoInterfaces(oPageElement,"com.sun.star.container.XIndexAccess") Then - ' The Object "oPageElement" a group of Shapes, that can be accessed by their index - For s = 0 To oPageElement.Count - 1 - WriteStringToLogFile(oPageElement.GetByIndex(s).String) - Next s - ElseIf HasUnoInterfaces(oPageElement, "com.sun.star.text.XText") Then - WriteStringtoLogFile(oPageElement.String) - End If - Next - End If - Next -End Sub - - -Sub GetDrawStrings() -Dim oDPages, oMPages as Object - - oDPages = oDocument.DrawPages - oMPages = oDocument.Masterpages - - MakeLogHeadLine("Titles") - GetDrawPageTitles(oDPages) - GetDrawPageTitles(oMPages) - - MakeLogHeadLine("Document Body") - GetPageStrings(oDPages) - GetPageStrings(oMPages) -End Sub - - -' ***********************************************Misc************************************************** - -Sub GetDocumentProps() -Dim oDocuProps as Object - MakeLogHeadLine("Document Properties") - oDocuProps = oDocument.DocumentProperties - WriteStringToLogFile(oDocuProps.Title) - WriteStringToLogFile(oDocuProps.Description) - WriteStringToLogFile(oDocuProps.Subject) - WriteStringToLogFile(oDocuProps.Author) -' WriteStringToLogFile(oDocuProps.UserDefinedProperties.ReplyTo) -' WriteStringToLogFile(oDocuProps.UserDefinedProperties.Recipient) -' WriteStringToLogFile(oDocuProps.UserDefinedProperties.References) -' WriteStringToLogFile(oDocuProps.Keywords) -End Sub - - -Sub GetHyperlinks() -Dim i as integer -Dim oCrsr as Object -Dim oAllHyperLinks as Object -Dim SrchAttributes(0) as new com.sun.star.beans.PropertyValue -Dim oSearchDesc as Object - - MakeLogHeadLine("Hyperlinks") - ' create a Search-Descriptor - oSearchDesc = oDocument.CreateSearchDescriptor - oSearchDesc.Valuesearch = False - - ' define the Search-attributes - srchattributes(0).Name = "HyperLinkURL" - srchattributes(0).Value = "" - oSearchDesc.SetSearchAttributes(SrchAttributes()) - - oAllHyperLinks = oDocument.findAll(oSearchDesc()) - - For i = 0 to oAllHyperLinks.Count - 1 - oFound = oAllHyperLinks(i) - oCrsr = oFound.Text.createTextCursorByRange(oFound) - WriteStringToLogFile(oCrs.HyperLinkURL) 'Url - WriteStringToLogFile(oCrs.HyperLinkTarget) 'Name - WriteStringToLogFile(oCrs.HyperLinkName) 'Frame - Next i -End Sub - - -Sub GetGraphicNames() -Dim i as integer -Dim oDocGraphics as Object - MakeLogHeadLine("Graphics") - oDocGraphics = oDocument.GraphicObjects - For i = 0 to oDocGraphics.count - 1 - WriteStringtoLogFile(oDocGraphics.GetbyIndex(i).Name) - Next -End Sub - - -Sub GetStyles() -Dim m,n as integer - MakeLogHeadLine("User-defined Templates") - - ' Check all StyleFamilies(i.e. PageStyles, ParagraphStyles, CharacterStyles, cellStyles) - For n = 0 to oDocument.StyleFamilies.Count - 1 - For m = 0 to oDocument.StyleFamilies.getbyIndex(n).Count-1 - If oDocument.StyleFamilies.GetbyIndex(n).getbyIndex(m).IsUserDefined then - WriteStringtoLogFile(oDocument.StyleFamilies.GetbyIndex(n).getbyIndex(m).Name) - End If - Next - Next -End Sub - - -Sub GetControlStrings(oDPage as Object, HeaderLine as String) -Dim aForm as Object -Dim m,n as integer - MakeLogHeadLine(HeaderLine) - 'SearchFor all possible Controls - For n = 0 to oDPage.Forms.Count - 1 - aForm = oDPage.Forms(n) - For m = 0 to aForm.Count-1 - GetControlContent(aForm.GetbyIndex(m)) - Next - Next -End Sub - - -Sub GetControlContent(LocControl as Object) -Dim i as integer - - If LocControl.PropertySetInfo.HasPropertybyName("Label") then - WriteStringtoLogFile(LocControl.Label) - - ElseIf LocControl.SupportsService("com.sun.star.form.component.ListBox") then - For i = 0 to Ubound(LocControl.StringItemList()) - WriteStringtoLogFile(LocControl.StringItemList(i)) - Next - End If - If LocControl.PropertySetInfo.HasPropertybyName("HelpText") then - WriteStringtoLogFile(LocControl.Helptext) - End If -End Sub - -' ***********************************************LogDocument************************************************** - -Sub WriteStringtoLogFile( sString as String) - If (Not FieldInArray(LogArray(),LogIndex,sString))AND (NOT ISNULL(sString)) Then - LogArray(LogIndex) = sString - LogIndex = LogIndex + 1 - oLogText.insertString(oLogCursor,sString,False) - oLogText.insertControlCharacter(oLogCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False) - End If -End Sub - - -Sub MakeLogHeadLine(HeadText as String) - oLogCursor.CharStyleName = "Log Header" - oLogText.insertControlCharacter(oLogCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False) - oLogText.insertString(oLogCursor,HeadText,False) - oLogText.insertControlCharacter(oLogCursor,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False) - oLogCursor.CharStyleName = "Log Body" -End Sub -</script:module> |