OSDN Git Service

Share resource file between TortoiseGitBlame and TortoiseProc
[tortoisegit/TortoiseGitJp.git] / contrib / other / diff-scripts / diff-odt.vbs
1 '\r
2 ' TortoiseSVN Diff script for Open Office Text files\r
3 '\r
4 ' Copyright (C) 2004-2008 the TortoiseSVN team\r
5 ' This file is distributed under the same license as TortoiseSVN\r
6 '\r
7 ' Last commit by:\r
8 ' $Author: steveking $\r
9 ' $Date: 2008-06-17 03:36:28 +0800 (Tue, 17 Jun 2008) $\r
10 ' $Rev: 13285 $\r
11 '\r
12 ' Authors:\r
13 ' Jonathan Ashley, 2007\r
14 ' Stefan Küng, 2006\r
15 '\r
16 dim objArgs,num,sBaseDoc,sNewDoc,objScript,word,destination\r
17 \r
18 Set objArgs = WScript.Arguments\r
19 num = objArgs.Count\r
20 if num < 2 then\r
21    MsgBox "Usage: [CScript | WScript] diff-odt.vbs base.odt new.odt", vbExclamation, "Invalid arguments"\r
22    WScript.Quit 1\r
23 end if\r
24 \r
25 sBaseDoc=objArgs(0)\r
26 sNewDoc=objArgs(1)\r
27 \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
31     Wscript.Quit 1\r
32 End If\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
35     Wscript.Quit 1\r
36 End If\r
37 \r
38 Set objScript = Nothing\r
39 \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
46    Wscript.Quit 1\r
47 End If\r
48 \r
49 On Error Goto 0\r
50 \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
58 End If\r
59 \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
76 \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
83 \r
84 'Set the frame\r
85 Set Frame = objDesktop.getCurrentFrame\r
86 \r
87 Set dispatcher=objServiceManager.CreateInstance("com.sun.star.frame.DispatchHelper")\r
88 \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
94 \r
95 \r
96 \r