2 ' TortoiseSVN Diff script for Open Office Text files
\r
4 ' Copyright (C) 2004-2008 the TortoiseSVN team
\r
5 ' This file is distributed under the same license as TortoiseSVN
\r
8 ' $Author: steveking $
\r
9 ' $Date: 2008-06-17 03:36:28 +0800 (Tue, 17 Jun 2008) $
\r
13 ' Jonathan Ashley, 2007
\r
16 dim objArgs,num,sBaseDoc,sNewDoc,objScript,word,destination
\r
18 Set objArgs = WScript.Arguments
\r
21 MsgBox "Usage: [CScript | WScript] diff-odt.vbs base.odt new.odt", vbExclamation, "Invalid arguments"
\r
28 Set objScript = CreateObject("Scripting.FileSystemObject")
\r
29 If objScript.FileExists(sBaseDoc) = False Then
\r
30 MsgBox "File " + sBaseDoc +" does not exist. Cannot compare the documents.", vbExclamation, "File not found"
\r
33 If objScript.FileExists(sNewDoc) = False Then
\r
34 MsgBox "File " + sNewDoc +" does not exist. Cannot compare the documents.", vbExclamation, "File not found"
\r
38 Set objScript = Nothing
\r
40 On Error Resume Next
\r
41 'The service manager is always the starting point
\r
42 'If there is no office running then an office is started
\r
43 Set objServiceManager= Wscript.CreateObject("com.sun.star.ServiceManager")
\r
44 If Err.Number <> 0 Then
\r
45 Wscript.Echo "You must have OpenOffice installed to perform this operation."
\r
51 'Because this is a diff, TortoiseSVN marks the files as read-only.
\r
52 'However, OpenOffice will not compare any file with that flag set.
\r
53 'Make sure we un-set that flag.
\r
54 Set objFSO = CreateObject("Scripting.FileSystemObject")
\r
55 Set objFile = objFSO.GetFile(sNewDoc)
\r
56 If (objFile.Attributes AND 1)=1 Then
\r
57 objFile.Attributes = objFile.Attributes XOR 1
\r
60 'Create the DesktopSet
\r
61 Set objDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")
\r
62 Set objUriTranslator = objServiceManager.createInstance("com.sun.star.uri.ExternalUriReferenceTranslator")
\r
63 'Adjust the paths for OO
\r
64 sBaseDoc=Replace(sBaseDoc, "\", "/")
\r
65 sBaseDoc=Replace(sBaseDoc, ":", "|")
\r
66 sBaseDoc=Replace(sBaseDoc, "%", "%25")
\r
67 sBaseDoc=Replace(sBaseDoc, " ", "%20")
\r
68 sBaseDoc="file:///"&sBaseDoc
\r
69 sBaseDoc=objUriTranslator.translateToInternal(sBaseDoc)
\r
70 sNewDoc=Replace(sNewDoc, "\", "/")
\r
71 sNewDoc=Replace(sNewDoc, ":", "|")
\r
72 sNewDoc=Replace(sNewDoc, "%", "%25")
\r
73 sNewDoc=Replace(sNewDoc, " ", "%20")
\r
74 sNewDoc="file:///"&sNewDoc
\r
75 sNewDoc=objUriTranslator.translateToInternal(sNewDoc)
\r
77 'Open the %base document
\r
78 Dim oPropertyValue(0)
\r
79 Set oPropertyValue(0) = objServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
\r
80 oPropertyValue(0).Name = "ShowTrackedChanges"
\r
81 oPropertyValue(0).Value = true
\r
82 Set objDocument=objDesktop.loadComponentFromURL(sNewDoc,"_blank", 0, oPropertyValue)
\r
85 Set Frame = objDesktop.getCurrentFrame
\r
87 Set dispatcher=objServiceManager.CreateInstance("com.sun.star.frame.DispatchHelper")
\r
89 'Execute the comparison
\r
90 dispatcher.executeDispatch Frame, ".uno:ShowTrackedChanges", "", 0, oPropertyValue
\r
91 oPropertyValue(0).Name = "URL"
\r
92 oPropertyValue(0).Value = sBaseDoc
\r
93 dispatcher.executeDispatch Frame, ".uno:CompareDocuments", "", 0, oPropertyValue
\r