OSDN Git Service

Add PrediffLineFilter.sct
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 8 Apr 2018 15:45:29 +0000 (00:45 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 8 Apr 2018 15:45:29 +0000 (00:45 +0900)
Plugins/dlls/PrediffLineFilter.sct [new file with mode: 0644]
Translations/WinMerge/English.pot

diff --git a/Plugins/dlls/PrediffLineFilter.sct b/Plugins/dlls/PrediffLineFilter.sct
new file mode 100644 (file)
index 0000000..94cb455
--- /dev/null
@@ -0,0 +1,279 @@
+<scriptlet>\r
+<implements type="Automation" id="dispatcher">\r
+  <property name="PluginEvent">\r
+    <get/>\r
+  </property>\r
+  <property name="PluginDescription">\r
+    <get/>\r
+  </property>\r
+  <property name="PluginFileFilters">\r
+    <get/>\r
+  </property>\r
+  <property name="PluginIsAutomatic">\r
+    <get/>\r
+  </property>\r
+  <method name="PrediffBufferW"/>\r
+  <method name="ShowSettingsDialog"/>\r
+</implements>\r
+\r
+<script language="VBS">\r
+\r
+'/////////////////////////////////////////////////////////////////////////////\r
+'    This is a plugin for WinMerge.\r
+'    It will display the text content of MS Excel files.\r
+'    Copyright (C) 2018 Takashi Sawanaka\r
+'\r
+'    This program is free software; you can redistribute it and/or modify\r
+'    it under the terms of the GNU General Public License as published by\r
+'    the Free Software Foundation; either version 2 of the License, or\r
+'    (at your option) any later version.\r
+'\r
+'    This program is distributed in the hope that it will be useful,\r
+'    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+'    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+'    GNU General Public License for more details.\r
+'\r
+'    You should have received a copy of the GNU General Public License\r
+'    along with this program; if not, write to the Free Software\r
+'    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
+'\r
+\r
+Option Explicit\r
+\r
+Const RegKeyPath = "HKCU\Software\Thingamahoochie\WinMerge\Plugins\PrediffLineFilter.sct\"\r
+Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")\r
+Dim wsh: Set wsh = CreateObject("WScript.Shell")\r
+\r
+Function regRead(Key, DefaultValue)\r
+  regRead = DefaultValue\r
+  On Error Resume Next\r
+  regRead = wsh.RegRead(Key)\r
+End Function\r
+\r
+Function get_PluginEvent()\r
+  get_PluginEvent = "BUFFER_PREDIFF"\r
+End Function\r
+\r
+Function get_PluginDescription()\r
+  get_PluginDescription = "Prediff Line Filter"\r
+End Function\r
+\r
+Function get_PluginFileFilters()\r
+  get_PluginFileFilters = "\.nomatch(\..*)?$"\r
+End Function\r
+\r
+Function get_PluginIsAutomatic()\r
+  get_PluginIsAutomatic = True\r
+End Function\r
+\r
+Function SafeUBound(ary)\r
+  On Error Resume Next\r
+  SafeUBound = -1\r
+  SafeUBound = UBound(ary)\r
+End Function\r
+\r
+Function PrediffBufferW(pText, pSize, pbChanged)\r
+  On Error Resume Next\r
+  Dim re, pattern, replaceText\r
+  Dim count, i, j\r
+  Dim lines\r
+  Set re = New RegExp\r
+  If pText = "" Then\r
+    pbChanged = False\r
+    PrediffBufferW = True\r
+    Exit Function\r
+  End If\r
+  lines = Split(pText, vbLf)\r
+  count = regRead(RegKeyPath & "Count", 0)\r
+  For i = 1 To count\r
+    If regRead(RegKeyPath & "Enabled" & i, True) Then\r
+      If regRead(RegKeyPath & "UseRegExp" & i, True) Then\r
+        re.Global = True\r
+        re.Pattern = regRead(RegKeyPath & "Pattern" & i, "")\r
+        replaceText = regRead(RegKeyPath & "ReplaceText" & i, "")\r
+        For j = 0 To SafeUBound(lines)\r
+          lines(j) = re.Replace(lines(j), replaceText)\r
+        Next\r
+      Else\r
+        pattern = regRead(RegKeyPath & "Pattern" & i, "")\r
+        replaceText = regRead(RegKeyPath & "ReplaceText" & i, "")\r
+        For j = 0 To SafeUBound(lines)\r
+          lines(j) = Replace(lines(j), pattern, replaceText)\r
+        Next\r
+      End If\r
+    End If\r
+  Next\r
+  pText = Join(lines, vbLf)\r
+  pSize = Len(pText)\r
+  pbChanged = True\r
+  PrediffBufferW = True\r
+End Function\r
+\r
+Function ShowSettingsDialog()\r
+  Dim tname: tname = fso.BuildPath(fso.GetSpecialFolder(2), fso.GetTempName() & ".hta")\r
+  Dim tfile: Set tfile = fso.CreateTextFile(tname)\r
+  tfile.Write getResource("dialog1")\r
+  tfile.Close\r
+  Run wsh, "mshta.exe """ & tname & """"\r
+  fso.DeleteFile tname \r
+End Function\r
+\r
+Sub Run(sh, cmd)\r
+  sh.Run cmd, 1, True\r
+End Sub\r
+\r
+</script>\r
+\r
+<resource id="dialog1">\r
+<![CDATA[\r
+<html>\r
+  <head>\r
+    <title>PrediffLineFilter.sct WinMerge Plugin Options</title>\r
+    <meta content="text/html" charset="ShiftJIS">\r
+    <style>\r
+      body { background-color: lightgray; }\r
+      ul { list-style:none; }\r
+      table { border-collapse: collapse; }\r
+      table, td, th { border: 1px #000000 solid; }\r
+      td { background-color: #FFFFFF; }\r
+    </style>\r
+    <script type="text/javascript">\r
+      var REGKEY_PATH = "HKCU\\Software\\Thingamahoochie\\WinMerge\\Plugins\\PrediffLineFilter.sct\\";\r
+\r
+      function regRead(key, defaultValue) {\r
+        try {\r
+          return (new ActiveXObject("WScript.Shell")).RegRead(key);\r
+        } catch (e) {\r
+          return defaultValue;\r
+        }\r
+      }\r
+\r
+      function regWrite(key, value, type) {\r
+        (new ActiveXObject("WScript.Shell")).RegWrite(key, value, type);\r
+      }\r
+\r
+      function insertRow(r) {\r
+        if (r == -1) {\r
+          r = table1.rows.length;\r
+        }\r
+        var newRow = table1.insertRow(r);\r
+        newRow.insertCell(-1).innerHTML = '<input type="checkbox" name="chkEnabled" ' + (regRead(REGKEY_PATH + "Enabled" + r, true) ? 'checked' : '') + ' />';\r
+        newRow.insertCell(-1).innerHTML = '<input type="checkbox" name="chkUseRegExp" ' + (regRead(REGKEY_PATH + "UseRegExp" + r, false) ? 'checked' : '') + ' />';\r
+        newRow.insertCell(-1).innerHTML = '<input type="text" name="txtPattern" value="' + regRead(REGKEY_PATH + "Pattern" + r,  "") + '" />';\r
+        newRow.insertCell(-1).innerHTML = '<input type="text" name="txtReplaceText" value="' + regRead(REGKEY_PATH + "ReplaceText" + r,  "") + '" />';\r
+      }\r
+\r
+      function deleteRow(r) {\r
+        if (table1.rows.length > 2) {\r
+          table1.deleteRow(r);\r
+        }\r
+      }\r
+\r
+      function onload() {\r
+\r
+        var w = 800, h = 600;\r
+        window.resizeTo(w, h);\r
+        window.moveTo((screen.width - w) / 2, (screen.height - h) / 2);\r
+\r
+        cboLanguage.selectedIndex = navigator.browserLanguage.substr(0, 2) === 'ja' ? 1 : 0;\r
+        setLanguage(navigator.browserLanguage);\r
+        var count = regRead(REGKEY_PATH + "Count", 1);\r
+        for (var i = 0; i < count; i++) {\r
+          insertRow(-1);\r
+        }\r
+      }\r
+\r
+      function setLanguage(lang) {\r
+        var div = document.getElementById("language") || document.createElement('div')\r
+        div.id = "language";\r
+        var html = '&shy;<style>';\r
+        if (lang.substr(0, 2).toLowerCase() === 'ja') {\r
+          html += '.en { display: none } .ja { display: inline }';\r
+        } else {\r
+          html += '.ja { display: none } .en { display: inline }';\r
+        }\r
+        div.innerHTML = html;\r
+        if (!document.getElementById("language"))\r
+          document.body.appendChild(div);\r
+      }\r
+\r
+      function cboLanguage_onclick() {\r
+        setLanguage(cboLanguage.options[cboLanguage.selectedIndex].text);\r
+      }\r
+\r
+      function btnOk_onclick() {\r
+        regWrite(REGKEY_PATH + "Count", table1.rows.length - 1, "REG_DWORD");\r
+        for (var i = 0; i < table1.rows.length - 1; i++) {\r
+          regWrite(REGKEY_PATH + "Enabled" + (i + 1), document.getElementsByName("chkEnabled")[i].checked, "REG_DWORD");\r
+          regWrite(REGKEY_PATH + "UseRegExp" + (i + 1), document.getElementsByName("chkUseRegExp")[i].checked, "REG_DWORD");\r
+          regWrite(REGKEY_PATH + "Pattern" + (i + 1), document.getElementsByName("txtPattern")[i].value, "REG_SZ");\r
+          regWrite(REGKEY_PATH + "ReplaceText" + (i + 1), document.getElementsByName("txtReplaceText")[i].value, "REG_SZ");\r
+        }\r
+        window.close();\r
+      }\r
+\r
+      function btnCancel_onclick() {\r
+        window.close();\r
+      }\r
+\r
+    </script>\r
+  </head>\r
+  <body onload="onload();">\r
+    <div>\r
+      <ul>\r
+        <li>\r
+          <label class="en">Language: </label>\r
+          <label class="ja">\8c¾\8cê: </label>\r
+          <select id="cboLanguage" onclick="cboLanguage_onclick();" >\r
+            <option value="English">English</option>\r
+            <option value="Japanese">Japanese</option>\r
+          </select>\r
+        </li>\r
+      </ul>\r
+      <ul>\r
+        <li>\r
+          <input class="en" type="button" value="Add" onclick="insertRow(-1)" />\r
+          <input class="ja" type="button" value="\92Ç\89Á" onclick="insertRow(-1)" />\r
+          <input class="en" type="button" value="Delete" onclick="deleteRow(-1)" />\r
+          <input class="ja" type="button" value="\8dí\8f\9c" onclick="deleteRow(-1)" />\r
+        </li>\r
+      </ul>\r
+      <ul>\r
+        <li>\r
+          <table id="table1">\r
+            <tr>\r
+              <th>\r
+                <label class="en">Enabled</label>\r
+                <label class="ja">\97L\8cø</label>\r
+              </th>\r
+              <th>\r
+                <label class="en">Use RegExp</label>\r
+                <label class="ja">\90³\8bK\95\\8c»\82ð\8eg\97p</label>\r
+              </th>\r
+              <th>\r
+                <label class="en">Find what</label>\r
+                <label class="ja">\8c\9f\8dõ\95\8e\9a\97ñ</label>\r
+              </th>\r
+              <th>\r
+                <label class="en">Replace with</label>\r
+                <label class="ja">\92u\8a·\8cã\82Ì\95\8e\9a\97ñ</label>\r
+              </th>\r
+            </tr>\r
+          </table>\r
+        </li>\r
+      </ul>\r
+      <ul>\r
+        <li>\r
+          <input class="en" type="button" onclick="btnOk_onclick();" value="OK" />\r
+          <input class="en" type="button" onclick="btnCancel_onclick();" value="Cancel" />\r
+          <input class="ja" type="button" onclick="btnOk_onclick();" value="OK" />\r
+          <input class="ja" type="button" onclick="btnCancel_onclick();" value="\83L\83\83\83\93\83Z\83\8b" />\r
+        </li>\r
+      </ul>\r
+    </div>\r
+  </body>\r
+</html>\r
+]]>\r
+</resource>\r
+\r
+</scriptlet>\r
index 7b4082d..e5c8b9f 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WinMerge\n"
 "Report-Msgid-Bugs-To: http://bugs.winmerge.org/\n"
-"POT-Creation-Date: 2018-04-01 22:36+0000\n"
+"POT-Creation-Date: 2018-04-03 05:09+0000\n"
 "PO-Revision-Date: \n"
 "Last-Translator: \n"
 "Language-Team: English <winmerge-translate@lists.sourceforge.net>\n"