//\r
#include "StdAfx.h"\r
#include "ShowCompareCommand.h"\r
-#include "SVNDiff.h"\r
+//#include "SVNDiff.h"\r
\r
\r
bool ShowCompareCommand::Execute()\r
{\r
+#if 0\r
bool bRet = false;\r
SVNDiff diff(NULL, hwndExplorer);\r
\r
bRet = diff.ShowCompare(url1, rev1, url2, rev2, pegrev, ignoreancestry, blame);\r
\r
return bRet;\r
+#endif \r
+ return 0;\r
}\r
\r
void CLogDlg::ShowContextMenuForRevisions(CWnd* /*pWnd*/, CPoint point)\r
{\r
-#if 0\r
+\r
int selIndex = m_LogList.GetSelectionMark();\r
if (selIndex < 0)\r
return; // nothing selected, nothing to do with a context menu\r
m_bCancelled = FALSE;\r
\r
// calculate some information the context menu commands can use\r
- CString pathURL = GetURLFromPath(m_path);\r
+// CString pathURL = GetURLFromPath(m_path);\r
+\r
POSITION pos = m_LogList.GetFirstSelectedItemPosition();\r
int indexNext = m_LogList.GetNextSelectedItem(pos);\r
if (indexNext < 0)\r
return;\r
- PLOGENTRYDATA pSelLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(indexNext));\r
+\r
+ GitRev* pSelLogEntry = reinterpret_cast<GitRev*>(m_arShownList.GetAt(indexNext));\r
+#if 0\r
GitRev revSelected = pSelLogEntry->Rev;\r
GitRev revPrevious = git_revnum_t(revSelected)-1;\r
if ((pSelLogEntry->pArChangedPaths)&&(pSelLogEntry->pArChangedPaths->GetCount() <= 2))\r
}\r
}\r
\r
+#endif\r
\r
-\r
+ int FirstSelect=-1, LastSelect=-1;\r
+ pos = m_LogList.GetFirstSelectedItemPosition();\r
+ FirstSelect = m_LogList.GetNextSelectedItem(pos);\r
+ while(pos)\r
+ {\r
+ LastSelect = m_LogList.GetNextSelectedItem(pos);\r
+ }\r
//entry is selected, now show the popup menu\r
CIconMenu popup;\r
if (popup.CreatePopupMenu())\r
{\r
if (m_LogList.GetSelectedCount() == 1)\r
{\r
+#if 0\r
if (!m_path.IsDirectory())\r
{\r
if (m_hasWC)\r
popup.AppendMenu(MF_SEPARATOR, NULL);\r
}\r
else\r
+#endif \r
{\r
if (m_hasWC)\r
{\r
popup.AppendMenuIcon(ID_BLAMEWITHPREVIOUS, IDS_LOG_POPUP_BLAMEWITHPREVIOUS, IDI_BLAME);\r
popup.AppendMenu(MF_SEPARATOR, NULL);\r
}\r
- if (!m_ProjectProperties.sWebViewerRev.IsEmpty())\r
- {\r
- popup.AppendMenuIcon(ID_VIEWREV, IDS_LOG_POPUP_VIEWREV);\r
- }\r
- if (!m_ProjectProperties.sWebViewerPathRev.IsEmpty())\r
- {\r
- popup.AppendMenuIcon(ID_VIEWPATHREV, IDS_LOG_POPUP_VIEWPATHREV);\r
- }\r
- if ((!m_ProjectProperties.sWebViewerPathRev.IsEmpty())||\r
- (!m_ProjectProperties.sWebViewerRev.IsEmpty()))\r
- {\r
- popup.AppendMenu(MF_SEPARATOR, NULL);\r
- }\r
\r
- popup.AppendMenuIcon(ID_REPOBROWSE, IDS_LOG_BROWSEREPO, IDI_REPOBROWSE);\r
- popup.AppendMenuIcon(ID_COPY, IDS_LOG_POPUP_COPY);\r
- if (m_hasWC)\r
- popup.AppendMenuIcon(ID_UPDATE, IDS_LOG_POPUP_UPDATE, IDI_UPDATE);\r
+// if (!m_ProjectProperties.sWebViewerRev.IsEmpty())\r
+// {\r
+// popup.AppendMenuIcon(ID_VIEWREV, IDS_LOG_POPUP_VIEWREV);\r
+// }\r
+// if (!m_ProjectProperties.sWebViewerPathRev.IsEmpty())\r
+// {\r
+// popup.AppendMenuIcon(ID_VIEWPATHREV, IDS_LOG_POPUP_VIEWPATHREV);\r
+// }\r
+// if ((!m_ProjectProperties.sWebViewerPathRev.IsEmpty())||\r
+// (!m_ProjectProperties.sWebViewerRev.IsEmpty()))\r
+// {\r
+// popup.AppendMenu(MF_SEPARATOR, NULL);\r
+// }\r
+\r
+// popup.AppendMenuIcon(ID_REPOBROWSE, IDS_LOG_BROWSEREPO, IDI_REPOBROWSE);\r
+// popup.AppendMenuIcon(ID_COPY, IDS_LOG_POPUP_COPY);\r
+// if (m_hasWC)\r
+// popup.AppendMenuIcon(ID_UPDATE, IDS_LOG_POPUP_UPDATE, IDI_UPDATE);\r
if (m_hasWC)\r
popup.AppendMenuIcon(ID_REVERTTOREV, IDS_LOG_POPUP_REVERTTOREV, IDI_REVERT);\r
if (m_hasWC)\r
popup.AppendMenuIcon(ID_REVERTREV, IDS_LOG_POPUP_REVERTREV, IDI_REVERT);\r
- if (m_hasWC)\r
- popup.AppendMenuIcon(ID_MERGEREV, IDS_LOG_POPUP_MERGEREV, IDI_MERGE);\r
+// if (m_hasWC)\r
+// popup.AppendMenuIcon(ID_MERGEREV, IDS_LOG_POPUP_MERGEREV, IDI_MERGE);\r
popup.AppendMenuIcon(ID_CHECKOUT, IDS_MENUCHECKOUT, IDI_CHECKOUT);\r
popup.AppendMenuIcon(ID_EXPORT, IDS_MENUEXPORT, IDI_EXPORT);\r
popup.AppendMenu(MF_SEPARATOR, NULL);\r
if (m_hasWC)\r
{\r
popup.AppendMenuIcon(ID_REVERTREV, IDS_LOG_POPUP_REVERTREVS, IDI_REVERT);\r
- if (m_hasWC)\r
- popup.AppendMenuIcon(ID_MERGEREV, IDS_LOG_POPUP_MERGEREVS, IDI_MERGE);\r
+// if (m_hasWC)\r
+// popup.AppendMenuIcon(ID_MERGEREV, IDS_LOG_POPUP_MERGEREVS, IDI_MERGE);\r
bAddSeparator = true;\r
}\r
if (bAddSeparator)\r
popup.AppendMenu(MF_SEPARATOR, NULL);\r
}\r
-\r
- if ((selEntries.size() > 0)&&(bAllFromTheSameAuthor))\r
- {\r
- popup.AppendMenuIcon(ID_EDITAUTHOR, IDS_LOG_POPUP_EDITAUTHOR);\r
- }\r
- if (m_LogList.GetSelectedCount() == 1)\r
- {\r
- popup.AppendMenuIcon(ID_EDITLOG, IDS_LOG_POPUP_EDITLOG);\r
- popup.AppendMenuIcon(ID_REVPROPS, IDS_REPOBROWSE_SHOWREVPROP, IDI_PROPERTIES); // "Show Revision Properties"\r
- popup.AppendMenu(MF_SEPARATOR, NULL);\r
- }\r
+#if 0\r
+// if ((selEntries.size() > 0)&&(bAllFromTheSameAuthor))\r
+// {\r
+// popup.AppendMenuIcon(ID_EDITAUTHOR, IDS_LOG_POPUP_EDITAUTHOR);\r
+// }\r
+// if (m_LogList.GetSelectedCount() == 1)\r
+// {\r
+// popup.AppendMenuIcon(ID_EDITLOG, IDS_LOG_POPUP_EDITLOG);\r
+// popup.AppendMenuIcon(ID_REVPROPS, IDS_REPOBROWSE_SHOWREVPROP, IDI_PROPERTIES); // "Show Revision Properties"\r
+// popup.AppendMenu(MF_SEPARATOR, NULL);\r
+// }\r
+#endif\r
if (m_LogList.GetSelectedCount() != 0)\r
{\r
popup.AppendMenuIcon(ID_COPYCLIPBOARD, IDS_LOG_POPUP_COPYTOCLIPBOARD);\r
\r
int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);\r
DialogEnableWindow(IDOK, FALSE);\r
- SetPromptApp(&theApp);\r
+// SetPromptApp(&theApp);\r
theApp.DoWaitCursor(1);\r
bool bOpenWith = false;\r
+\r
switch (cmd)\r
{\r
+ case ID_GNUDIFF1:\r
+ {\r
+// if (PromptShown())\r
+// {\r
+// GitDiff diff(this, this->m_hWnd, true);\r
+// diff.SetHEADPeg(m_LogRevision);\r
+// diff.ShowUnifiedDiff(m_path, revPrevious, m_path, revSelected);\r
+// }\r
+// else\r
+// CAppUtils::StartShowUnifiedDiff(m_hWnd, m_path, revPrevious, m_path, revSelected, GitRev(), m_LogRevision);\r
+ }\r
+ break;\r
+\r
+ case ID_GNUDIFF2:\r
+ {\r
+// if (PromptShown())\r
+// {\r
+// GitDiff diff(this, this->m_hWnd, true);\r
+// diff.SetHEADPeg(m_LogRevision);\r
+// diff.ShowUnifiedDiff(m_path, revSelected2, m_path, revSelected);\r
+// }\r
+// else\r
+// CAppUtils::StartShowUnifiedDiff(m_hWnd, m_path, revSelected2, m_path, revSelected, GitRev(), m_LogRevision);\r
+ }\r
+ break;\r
+\r
+ case ID_COMPARETWO:\r
+ {\r
+ //GitRev * r1 = reinterpret_cast<GitRev*>((*m_arShownList)[FirstSelect]);\r
+ //GitRev * r2 = reinterpret_cast<GitRev*>((*m_arShownList)[LastSelect]);\r
+ //if (m_LogList.GetSelectedCount() > 2)\r
+ //{\r
+ // r1 = revHighest;\r
+ // r2 = revLowest;\r
+ //}\r
+ //user clicked on the menu item "compare revisions"\r
+ //if (PromptShown())\r
+ //{\r
+ // GitDiff diff(this, m_hWnd, true);\r
+ // diff.SetAlternativeTool(!!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
+ // diff.SetHEADPeg(m_LogRevision);\r
+ // diff.ShowCompare(CTGitPath(pathURL), r2, CTGitPath(pathURL), r1);\r
+ //}\r
+ //else\r
+ // CAppUtils::StartShowCompare(m_hWnd, CTGitPath(pathURL), r2, CTGitPath(pathURL), r1, GitRev(), m_LogRevision, !!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
+ }\r
+ break;\r
+\r
+#if 0\r
case ID_GNUDIFF1:\r
{\r
if (PromptShown())\r
CAppUtils::StartShowUnifiedDiff(m_hWnd, m_path, revPrevious, m_path, revSelected, GitRev(), m_LogRevision);\r
}\r
break;\r
+\r
case ID_GNUDIFF2:\r
{\r
if (PromptShown())\r
ShellExecute(this->m_hWnd, _T("open"), url, NULL, NULL, SW_SHOWDEFAULT); \r
}\r
break;\r
+#endif\r
default:\r
break;\r
} // switch (cmd)\r
theApp.DoWaitCursor(-1);\r
EnableOKButton();\r
} // if (popup.CreatePopupMenu())\r
-#endif\r
}\r
\r
void CLogDlg::ShowContextMenuForChangedpaths(CWnd* /*pWnd*/, CPoint point)\r
{\r
-#if 0\r
+\r
int selIndex = m_ChangedFileListCtrl.GetSelectionMark();\r
if ((point.x == -1) && (point.y == -1))\r
{\r
if (pos == NULL)\r
return; // nothing is selected, get out of here\r
\r
- PLOGENTRYDATA pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(m_LogList.GetNextSelectedItem(pos)));\r
- git_revnum_t rev1 = pLogEntry->Rev;\r
+ bool bOneRev = true;\r
+#if 0\r
+ GitRev * pLogEntry = reinterpret_cast<GitRev *>(m_arShownList.GetAt(m_LogList.GetNextSelectedItem(pos)));\r
+ git_revnum_t rev1 = pLogEntry;\r
git_revnum_t rev2 = rev1;\r
bool bOneRev = true;\r
if (pos)\r
}\r
}\r
}\r
-\r
+#endif\r
//entry is selected, now show the popup menu\r
CIconMenu popup;\r
if (popup.CreatePopupMenu())\r
bool bEntryAdded = false;\r
if (m_ChangedFileListCtrl.GetSelectedCount() == 1)\r
{\r
- if ((!bOneRev)||(IsDiffPossible(changedlogpaths[0], rev1)))\r
+// if ((!bOneRev)||(IsDiffPossible(changedlogpaths[0], rev1)))\r
{\r
popup.AppendMenuIcon(ID_DIFF, IDS_LOG_POPUP_DIFF, IDI_DIFF);\r
popup.AppendMenuIcon(ID_BLAMEDIFF, IDS_LOG_POPUP_BLAMEDIFF, IDI_BLAME);\r
popup.AppendMenuIcon(ID_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF_CH, IDI_DIFF);\r
bEntryAdded = true;\r
}\r
- if (rev2 == rev1-1)\r
+// if (rev2 == rev1-1)\r
{\r
if (bEntryAdded)\r
popup.AppendMenu(MF_SEPARATOR, NULL);\r
bool bOpenWith = false;\r
bool bMergeLog = false;\r
m_bCancelled = false;\r
+#if 0\r
switch (cmd)\r
{\r
case ID_DIFF:\r
default:\r
break;\r
} // switch (cmd)\r
- } // if (popup.CreatePopupMenu())\r
#endif\r
+ } // if (popup.CreatePopupMenu())\r
}\r
\r
void CLogDlg::OnDtnDropdownDatefrom(NMHDR * /*pNMHDR*/, LRESULT *pResult)\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\copy.ico"\r
+ RelativePath=".\copy.ico"\r
>\r
</File>\r
<File\r
- RelativePath=".\copy.ico"\r
+ RelativePath="..\Resources\copy.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\explorer.ico"\r
+ RelativePath=".\explorer.ico"\r
>\r
</File>\r
<File\r
- RelativePath=".\explorer.ico"\r
+ RelativePath="..\Resources\explorer.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath=".\newfolder.ico"\r
+ RelativePath="..\Resources\newfolder.ico"\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\newfolder.ico"\r
+ RelativePath=".\newfolder.ico"\r
>\r
</File>\r
<File\r
- RelativePath=".\open.ico"\r
+ RelativePath="..\Resources\open.ico"\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\open.ico"\r
+ RelativePath=".\open.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\refresh.ico"\r
+ RelativePath=".\refresh.ico"\r
>\r
</File>\r
<File\r
- RelativePath=".\refresh.ico"\r
+ RelativePath="..\Resources\refresh.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\save.ico"\r
+ RelativePath=".\save.ico"\r
>\r
</File>\r
<File\r
- RelativePath=".\save.ico"\r
+ RelativePath="..\Resources\save.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
<File\r
- RelativePath=".\up.ico"\r
+ RelativePath="..\Resources\up.ico"\r
>\r
</File>\r
<File\r
- RelativePath="..\Resources\up.ico"\r
+ RelativePath=".\up.ico"\r
>\r
</File>\r
<File\r
>\r
</File>\r
</Filter>\r
+ <Filter\r
+ Name="Compare"\r
+ >\r
+ <File\r
+ RelativePath=".\Commands\ShowCompareCommand.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\Commands\ShowCompareCommand.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
</Filter>\r
<Filter\r
Name="Utility Dialogs"\r
--- /dev/null
+// TortoiseSVN - a Windows shell extension for easy version control\r
+\r
+// Copyright (C) 2003-2007 - Stefan Kueng\r
+\r
+// This program is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU General Public License\r
+// as published by the Free Software Foundation; either version 2\r
+// of the License, or (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 Foundation,\r
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+//\r
+#include "StdAfx.h"\r
+#include "Resource.h"\r
+#include "FindBar.h"\r
+#include "Registry.h"\r
+#include <string>\r
+#include <Commdlg.h>\r
+\r
+using namespace std;\r
+\r
+CFindBar::CFindBar()\r
+{\r
+}\r
+\r
+CFindBar::~CFindBar(void)\r
+{\r
+ DestroyIcon(m_hIcon);\r
+}\r
+\r
+LRESULT CFindBar::DlgFunc(HWND /*hwndDlg*/, UINT uMsg, WPARAM wParam, LPARAM lParam)\r
+{\r
+ UNREFERENCED_PARAMETER(lParam);\r
+ switch (uMsg)\r
+ {\r
+ case WM_INITDIALOG:\r
+ {\r
+ m_hIcon = (HICON)::LoadImage(hResource, MAKEINTRESOURCE(IDI_CANCELNORMAL), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR);\r
+ SendMessage(GetDlgItem(*this, IDC_FINDEXIT), BM_SETIMAGE, IMAGE_ICON, (LPARAM)m_hIcon);\r
+ }\r
+ return TRUE;\r
+ case WM_COMMAND:\r
+ return DoCommand(LOWORD(wParam), HIWORD(wParam));\r
+ default:\r
+ return FALSE;\r
+ }\r
+}\r
+\r
+LRESULT CFindBar::DoCommand(int id, int msg)\r
+{\r
+ bool bFindPrev = false;\r
+ switch (id)\r
+ {\r
+ case IDC_FINDPREV:\r
+ bFindPrev = true;\r
+ case IDC_FINDNEXT:\r
+ {\r
+ DoFind(bFindPrev);\r
+ }\r
+ break;\r
+ case IDC_FINDEXIT:\r
+ {\r
+ ::SendMessage(m_hParent, COMMITMONITOR_FINDEXIT, 0, 0);\r
+ }\r
+ break;\r
+ case IDC_FINDTEXT:\r
+ {\r
+ if (msg == EN_CHANGE)\r
+ {\r
+ SendMessage(m_hParent, COMMITMONITOR_FINDRESET, 0, 0);\r
+ DoFind(false);\r
+ }\r
+ }\r
+ break;\r
+ }\r
+ return 1;\r
+}\r
+\r
+void CFindBar::DoFind(bool bFindPrev)\r
+{\r
+ int len = ::GetWindowTextLength(GetDlgItem(*this, IDC_FINDTEXT));\r
+ TCHAR * findtext = new TCHAR[len+1];\r
+ ::GetWindowText(GetDlgItem(*this, IDC_FINDTEXT), findtext, len+1);\r
+ wstring ft = wstring(findtext);\r
+ delete [] findtext;\r
+ bool bCaseSensitive = !!SendMessage(GetDlgItem(*this, IDC_MATCHCASECHECK), BM_GETCHECK, 0, NULL);\r
+ if (bFindPrev)\r
+ ::SendMessage(m_hParent, COMMITMONITOR_FINDMSGPREV, (WPARAM)bCaseSensitive, (LPARAM)ft.c_str());\r
+ else\r
+ ::SendMessage(m_hParent, COMMITMONITOR_FINDMSGNEXT, (WPARAM)bCaseSensitive, (LPARAM)ft.c_str());\r
+}
\ No newline at end of file
--- /dev/null
+// TortoiseSVN - a Windows shell extension for easy version control\r
+\r
+// Copyright (C) 2007 - TortoiseSVN\r
+\r
+// This program is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU General Public License\r
+// as published by the Free Software Foundation; either version 2\r
+// of the License, or (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 Foundation,\r
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+//\r
+#pragma once\r
+#include "basedialog.h"\r
+\r
+\r
+/**\r
+ * \ingroup TortoiseUDiff\r
+ * FindBar.\r
+ * A search bar similar to the one found in FireFox\r
+ */\r
+class CFindBar : public CDialog\r
+{\r
+public:\r
+ CFindBar();\r
+ ~CFindBar(void);\r
+\r
+ void SetParent(HWND hParent) {m_hParent = hParent;}\r
+protected:\r
+ LRESULT CALLBACK DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);\r
+ LRESULT DoCommand(int id, int msg);\r
+\r
+ void DoFind(bool bFindPrev);\r
+\r
+private:\r
+ HWND m_hParent;\r
+ HICON m_hIcon;\r
+};\r
--- /dev/null
+// TortoiseSVN - a Windows shell extension for easy version control\r
+\r
+// Copyright (C) 2003-2008 - TortoiseSVN\r
+\r
+// This program is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU General Public License\r
+// as published by the Free Software Foundation; either version 2\r
+// of the License, or (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 Foundation,\r
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+//\r
+#include "StdAfx.h"\r
+#include "MainWindow.h"\r
+#include "UnicodeUtils.h"\r
+\r
+CMainWindow::CMainWindow(HINSTANCE hInst, const WNDCLASSEX* wcx /* = NULL*/) \r
+ : CWindow(hInst, wcx)\r
+ , m_bShowFindBar(false)\r
+{\r
+ SetWindowTitle(_T("TortoiseUDiff"));\r
+}\r
+\r
+CMainWindow::~CMainWindow(void)\r
+{\r
+}\r
+\r
+bool CMainWindow::RegisterAndCreateWindow()\r
+{\r
+ WNDCLASSEX wcx; \r
+\r
+ // Fill in the window class structure with default parameters \r
+ wcx.cbSize = sizeof(WNDCLASSEX);\r
+ wcx.style = CS_HREDRAW | CS_VREDRAW;\r
+ wcx.lpfnWndProc = CWindow::stWinMsgHandler;\r
+ wcx.cbClsExtra = 0;\r
+ wcx.cbWndExtra = 0;\r
+ wcx.hInstance = hResource;\r
+ wcx.hCursor = NULL;\r
+ wcx.lpszClassName = ResString(hResource, IDS_APP_TITLE);\r
+ wcx.hIcon = LoadIcon(hResource, MAKEINTRESOURCE(IDI_TORTOISEUDIFF));\r
+ wcx.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);\r
+ wcx.lpszMenuName = MAKEINTRESOURCE(IDC_TORTOISEUDIFF);\r
+ wcx.hIconSm = LoadIcon(wcx.hInstance, MAKEINTRESOURCE(IDI_TORTOISEUDIFF));\r
+ if (RegisterWindow(&wcx))\r
+ {\r
+ if (Create(WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SIZEBOX | WS_SYSMENU | WS_CLIPCHILDREN, NULL))\r
+ {\r
+ m_FindBar.SetParent(*this);\r
+ m_FindBar.Create(hResource, IDD_FINDBAR, *this);\r
+ ShowWindow(*this, SW_SHOW);\r
+ UpdateWindow(*this);\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+}\r
+\r
+LRESULT CALLBACK CMainWindow::WinMsgHandler(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)\r
+{\r
+ switch (uMsg)\r
+ {\r
+ case WM_CREATE:\r
+ {\r
+ m_hwnd = hwnd;\r
+ Initialize();\r
+ }\r
+ break;\r
+ case WM_COMMAND:\r
+ {\r
+ return DoCommand(LOWORD(wParam));\r
+ }\r
+ break;\r
+ case WM_MOUSEWHEEL:\r
+ {\r
+ if (GET_KEYSTATE_WPARAM(wParam) == MK_SHIFT)\r
+ {\r
+ // scroll sideways\r
+ SendEditor(SCI_LINESCROLL, -GET_WHEEL_DELTA_WPARAM(wParam)/40, 0);\r
+ }\r
+ else\r
+ return DefWindowProc(hwnd, uMsg, wParam, lParam);\r
+ }\r
+ break;\r
+ case WM_SIZE:\r
+ {\r
+ RECT rect;\r
+ GetClientRect(*this, &rect);\r
+ if (m_bShowFindBar)\r
+ {\r
+ ::SetWindowPos(m_hWndEdit, HWND_TOP, \r
+ rect.left, rect.top,\r
+ rect.right-rect.left, rect.bottom-rect.top-30,\r
+ SWP_SHOWWINDOW);\r
+ ::SetWindowPos(m_FindBar, HWND_TOP,\r
+ rect.left, rect.bottom-30,\r
+ rect.right-rect.left, 30,\r
+ SWP_SHOWWINDOW);\r
+ }\r
+ else\r
+ {\r
+ ::SetWindowPos(m_hWndEdit, HWND_TOP, \r
+ rect.left, rect.top,\r
+ rect.right-rect.left, rect.bottom-rect.top,\r
+ SWP_SHOWWINDOW);\r
+ ::ShowWindow(m_FindBar, SW_HIDE);\r
+ }\r
+ }\r
+ break;\r
+ case WM_GETMINMAXINFO:\r
+ {\r
+ MINMAXINFO * mmi = (MINMAXINFO*)lParam;\r
+ mmi->ptMinTrackSize.x = 100;\r
+ mmi->ptMinTrackSize.y = 100;\r
+ return 0;\r
+ }\r
+ break;\r
+ case WM_DESTROY:\r
+ PostQuitMessage(0);\r
+ break;\r
+ case WM_CLOSE:\r
+ {\r
+ CRegStdWORD w = CRegStdWORD(_T("Software\\TortoiseSVN\\UDiffViewerWidth"), (DWORD)CW_USEDEFAULT);\r
+ CRegStdWORD h = CRegStdWORD(_T("Software\\TortoiseSVN\\UDiffViewerHeight"), (DWORD)CW_USEDEFAULT);\r
+ CRegStdWORD p = CRegStdWORD(_T("Software\\TortoiseSVN\\UDiffViewerPos"), 0);\r
+\r
+ RECT rect;\r
+ ::GetWindowRect(*this, &rect);\r
+ w = rect.right-rect.left;\r
+ h = rect.bottom-rect.top;\r
+ p = MAKELONG(rect.left, rect.top);\r
+ }\r
+ ::DestroyWindow(m_hwnd);\r
+ break;\r
+ case WM_SETFOCUS:\r
+ SetFocus(m_hWndEdit);\r
+ break;\r
+ case COMMITMONITOR_FINDMSGNEXT:\r
+ {\r
+ SendEditor(SCI_CHARRIGHT);\r
+ SendEditor(SCI_SEARCHANCHOR);\r
+ m_bMatchCase = !!wParam;\r
+ m_findtext = (LPCTSTR)lParam;\r
+ SendEditor(SCI_SEARCHNEXT, m_bMatchCase ? SCFIND_MATCHCASE : 0, (LPARAM)CUnicodeUtils::StdGetUTF8(m_findtext).c_str());\r
+ SendEditor(SCI_SCROLLCARET);\r
+ }\r
+ break;\r
+ case COMMITMONITOR_FINDMSGPREV:\r
+ {\r
+ SendEditor(SCI_SEARCHANCHOR);\r
+ m_bMatchCase = !!wParam;\r
+ m_findtext = (LPCTSTR)lParam;\r
+ SendEditor(SCI_SEARCHPREV, m_bMatchCase ? SCFIND_MATCHCASE : 0, (LPARAM)CUnicodeUtils::StdGetUTF8(m_findtext).c_str());\r
+ SendEditor(SCI_SCROLLCARET);\r
+ }\r
+ break;\r
+ case COMMITMONITOR_FINDEXIT:\r
+ {\r
+ RECT rect;\r
+ GetClientRect(*this, &rect);\r
+ m_bShowFindBar = false;\r
+ ::ShowWindow(m_FindBar, SW_HIDE);\r
+ ::SetWindowPos(m_hWndEdit, HWND_TOP, \r
+ rect.left, rect.top,\r
+ rect.right-rect.left, rect.bottom-rect.top,\r
+ SWP_SHOWWINDOW);\r
+ }\r
+ break;\r
+ case COMMITMONITOR_FINDRESET:\r
+ SendEditor(SCI_SETSELECTIONSTART, 0);\r
+ SendEditor(SCI_SETSELECTIONEND, 0);\r
+ SendEditor(SCI_SEARCHANCHOR);\r
+ break;\r
+ default:\r
+ return DefWindowProc(hwnd, uMsg, wParam, lParam);\r
+ }\r
+\r
+ return 0;\r
+};\r
+\r
+LRESULT CMainWindow::DoCommand(int id)\r
+{\r
+ switch (id) \r
+ {\r
+ case ID_FILE_EXIT:\r
+ ::PostQuitMessage(0);\r
+ return 0;\r
+ case IDM_SHOWFINDBAR:\r
+ {\r
+ m_bShowFindBar = true;\r
+ ::ShowWindow(m_FindBar, SW_SHOW);\r
+ RECT rect;\r
+ GetClientRect(*this, &rect);\r
+ ::SetWindowPos(m_hWndEdit, HWND_TOP, \r
+ rect.left, rect.top,\r
+ rect.right-rect.left, rect.bottom-rect.top-30,\r
+ SWP_SHOWWINDOW);\r
+ ::SetWindowPos(m_FindBar, HWND_TOP,\r
+ rect.left, rect.bottom-30,\r
+ rect.right-rect.left, 30,\r
+ SWP_SHOWWINDOW);\r
+ ::SetFocus(m_FindBar);\r
+ SendEditor(SCI_SETSELECTIONSTART, 0);\r
+ SendEditor(SCI_SETSELECTIONEND, 0);\r
+ SendEditor(SCI_SEARCHANCHOR);\r
+ }\r
+ break;\r
+ case IDM_FINDNEXT:\r
+ SendEditor(SCI_CHARRIGHT);\r
+ SendEditor(SCI_SEARCHANCHOR);\r
+ SendEditor(SCI_SEARCHNEXT, m_bMatchCase ? SCFIND_MATCHCASE : 0, (LPARAM)CUnicodeUtils::StdGetUTF8(m_findtext).c_str());\r
+ SendEditor(SCI_SCROLLCARET);\r
+ break;\r
+ case IDM_FINDPREV:\r
+ SendEditor(SCI_SEARCHANCHOR);\r
+ SendEditor(SCI_SEARCHPREV, m_bMatchCase ? SCFIND_MATCHCASE : 0, (LPARAM)CUnicodeUtils::StdGetUTF8(m_findtext).c_str());\r
+ SendEditor(SCI_SCROLLCARET);\r
+ break;\r
+ case IDM_FINDEXIT:\r
+ {\r
+ if (IsWindowVisible(m_FindBar))\r
+ {\r
+ RECT rect;\r
+ GetClientRect(*this, &rect);\r
+ m_bShowFindBar = false;\r
+ ::ShowWindow(m_FindBar, SW_HIDE);\r
+ ::SetWindowPos(m_hWndEdit, HWND_TOP, \r
+ rect.left, rect.top,\r
+ rect.right-rect.left, rect.bottom-rect.top,\r
+ SWP_SHOWWINDOW);\r
+ }\r
+ else\r
+ PostQuitMessage(0);\r
+ }\r
+ break;\r
+ default:\r
+ break;\r
+ };\r
+ return 1;\r
+}\r
+\r
+\r
+LRESULT CMainWindow::SendEditor(UINT Msg, WPARAM wParam, LPARAM lParam)\r
+{\r
+ if (m_directFunction)\r
+ {\r
+ return ((SciFnDirect) m_directFunction)(m_directPointer, Msg, wParam, lParam);\r
+ }\r
+ return ::SendMessage(m_hWndEdit, Msg, wParam, lParam); \r
+}\r
+\r
+bool CMainWindow::Initialize()\r
+{\r
+ CRegStdWORD pos(_T("Software\\TortoiseSVN\\UDiffViewerPos"), 0);\r
+ CRegStdWORD width(_T("Software\\TortoiseSVN\\UDiffViewerWidth"), (DWORD)640);\r
+ CRegStdWORD height(_T("Software\\TortoiseSVN\\UDiffViewerHeight"), (DWORD)480);\r
+ if (DWORD(pos) && DWORD(width) && DWORD(height))\r
+ {\r
+ RECT rc;\r
+ rc.left = LOWORD(DWORD(pos));\r
+ rc.top = HIWORD(DWORD(pos));\r
+ rc.right = rc.left + DWORD(width);\r
+ rc.bottom = rc.top + DWORD(height);\r
+ HMONITOR hMon = MonitorFromRect(&rc, MONITOR_DEFAULTTONULL);\r
+ if (hMon)\r
+ {\r
+ // only restore the window position if the monitor is valid\r
+ MoveWindow(*this, LOWORD(DWORD(pos)), HIWORD(DWORD(pos)),\r
+ DWORD(width), DWORD(height), FALSE);\r
+ }\r
+ }\r
+\r
+ m_hWndEdit = ::CreateWindow(\r
+ _T("Scintilla"),\r
+ _T("Source"),\r
+ WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_CLIPCHILDREN,\r
+ CW_USEDEFAULT, CW_USEDEFAULT,\r
+ CW_USEDEFAULT, CW_USEDEFAULT,\r
+ *this,\r
+ 0,\r
+ hResource,\r
+ 0);\r
+ if (m_hWndEdit == NULL)\r
+ return false;\r
+\r
+ RECT rect;\r
+ GetClientRect(*this, &rect);\r
+ ::SetWindowPos(m_hWndEdit, HWND_TOP, \r
+ rect.left, rect.top,\r
+ rect.right-rect.left, rect.bottom-rect.top,\r
+ SWP_SHOWWINDOW);\r
+\r
+ m_directFunction = SendMessage(m_hWndEdit, SCI_GETDIRECTFUNCTION, 0, 0);\r
+ m_directPointer = SendMessage(m_hWndEdit, SCI_GETDIRECTPOINTER, 0, 0);\r
+\r
+ // Set up the global default style. These attributes are used wherever no explicit choices are made.\r
+ SetAStyle(STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT), ::GetSysColor(COLOR_WINDOW),\r
+ // Reusing TortoiseBlame's setting which already have an user friendly\r
+ // pane in TortoiseSVN's Settings dialog, while there is no such\r
+ // pane for TortoiseUDiff.\r
+ CRegStdWORD(_T("Software\\TortoiseSVN\\BlameFontSize"), 10),\r
+ WideToMultibyte(CRegStdString(_T("Software\\TortoiseSVN\\BlameFontName"), _T("Courier New"))).c_str());\r
+ SendEditor(SCI_SETTABWIDTH, 4);\r
+ SendEditor(SCI_SETREADONLY, TRUE);\r
+ LRESULT pix = SendEditor(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)"_99999");\r
+ SendEditor(SCI_SETMARGINWIDTHN, 0, pix);\r
+ SendEditor(SCI_SETMARGINWIDTHN, 1);\r
+ SendEditor(SCI_SETMARGINWIDTHN, 2);\r
+ //Set the default windows colors for edit controls\r
+ SendEditor(SCI_STYLESETFORE, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT));\r
+ SendEditor(SCI_STYLESETBACK, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOW));\r
+ SendEditor(SCI_SETSELFORE, TRUE, ::GetSysColor(COLOR_HIGHLIGHTTEXT));\r
+ SendEditor(SCI_SETSELBACK, TRUE, ::GetSysColor(COLOR_HIGHLIGHT));\r
+ SendEditor(SCI_SETCARETFORE, ::GetSysColor(COLOR_WINDOWTEXT));\r
+\r
+ return true;\r
+}\r
+\r
+bool CMainWindow::LoadFile(LPCTSTR filename)\r
+{\r
+ SendEditor(SCI_SETREADONLY, FALSE);\r
+ SendEditor(SCI_CLEARALL);\r
+ SendEditor(EM_EMPTYUNDOBUFFER);\r
+ SendEditor(SCI_SETSAVEPOINT);\r
+ SendEditor(SCI_CANCEL);\r
+ SendEditor(SCI_SETUNDOCOLLECTION, 0);\r
+\r
+ FILE *fp = NULL;\r
+ _tfopen_s(&fp, filename, _T("rb"));\r
+ if (fp) \r
+ {\r
+ //SetTitle();\r
+ char data[4096];\r
+ int lenFile = fread(data, 1, sizeof(data), fp);\r
+ bool bUTF8 = IsUTF8(data, lenFile);\r
+ while (lenFile > 0) \r
+ {\r
+ SendEditor(SCI_ADDTEXT, lenFile,\r
+ reinterpret_cast<LPARAM>(static_cast<char *>(data)));\r
+ lenFile = fread(data, 1, sizeof(data), fp);\r
+ }\r
+ fclose(fp);\r
+ SendEditor(SCI_SETCODEPAGE, bUTF8 ? SC_CP_UTF8 : GetACP());\r
+ }\r
+ else \r
+ {\r
+ return false;\r
+ }\r
+\r
+ SendEditor(SCI_SETUNDOCOLLECTION, 1);\r
+ ::SetFocus(m_hWndEdit);\r
+ SendEditor(EM_EMPTYUNDOBUFFER);\r
+ SendEditor(SCI_SETSAVEPOINT);\r
+ SendEditor(SCI_GOTOPOS, 0);\r
+ SendEditor(SCI_SETREADONLY, TRUE);\r
+\r
+ SendEditor(SCI_CLEARDOCUMENTSTYLE, 0, 0);\r
+ SendEditor(SCI_SETSTYLEBITS, 5, 0);\r
+\r
+ //SetAStyle(SCE_DIFF_DEFAULT, RGB(0, 0, 0));\r
+ SetAStyle(SCE_DIFF_COMMAND, RGB(0x0A, 0x24, 0x36));\r
+ SetAStyle(SCE_DIFF_POSITION, RGB(0xFF, 0, 0));\r
+ SetAStyle(SCE_DIFF_HEADER, RGB(0x80, 0, 0), RGB(0xFF, 0xFF, 0x80));\r
+ SetAStyle(SCE_DIFF_COMMENT, RGB(0, 0x80, 0));\r
+ SendEditor(SCI_STYLESETBOLD, SCE_DIFF_COMMENT, TRUE);\r
+ SetAStyle(SCE_DIFF_DELETED, ::GetSysColor(COLOR_WINDOWTEXT), RGB(0xFF, 0x80, 0x80));\r
+ SetAStyle(SCE_DIFF_ADDED, ::GetSysColor(COLOR_WINDOWTEXT), RGB(0x80, 0xFF, 0x80));\r
+\r
+ SendEditor(SCI_SETLEXER, SCLEX_DIFF);\r
+ SendEditor(SCI_SETKEYWORDS, 0, (LPARAM)"revision");\r
+ SendEditor(SCI_COLOURISE, 0, -1);\r
+ ::ShowWindow(m_hWndEdit, SW_SHOW);\r
+ return true;\r
+}\r
+\r
+void CMainWindow::SetTitle(LPCTSTR title)\r
+{\r
+ int len = _tcslen(title);\r
+ TCHAR * pBuf = new TCHAR[len+40];\r
+ _stprintf_s(pBuf, len+40, _T("%s - TortoiseUDiff"), title);\r
+ SetWindowTitle(std::wstring(pBuf));\r
+ delete [] pBuf;\r
+}\r
+\r
+void CMainWindow::SetAStyle(int style, COLORREF fore, COLORREF back, int size, const char *face) \r
+{\r
+ SendEditor(SCI_STYLESETFORE, style, fore);\r
+ SendEditor(SCI_STYLESETBACK, style, back);\r
+ if (size >= 1)\r
+ SendEditor(SCI_STYLESETSIZE, style, size);\r
+ if (face) \r
+ SendEditor(SCI_STYLESETFONT, style, reinterpret_cast<LPARAM>(face));\r
+}\r
+\r
+bool CMainWindow::IsUTF8(LPVOID pBuffer, int cb)\r
+{\r
+ if (cb < 2)\r
+ return true;\r
+ UINT16 * pVal = (UINT16 *)pBuffer;\r
+ UINT8 * pVal2 = (UINT8 *)(pVal+1);\r
+ // scan the whole buffer for a 0x0000 sequence\r
+ // if found, we assume a binary file\r
+ for (int i=0; i<(cb-2); i=i+2)\r
+ {\r
+ if (0x0000 == *pVal++)\r
+ return false;\r
+ }\r
+ pVal = (UINT16 *)pBuffer;\r
+ if (*pVal == 0xFEFF)\r
+ return false;\r
+ if (cb < 3)\r
+ return false;\r
+ if (*pVal == 0xBBEF)\r
+ {\r
+ if (*pVal2 == 0xBF)\r
+ return true;\r
+ }\r
+ // check for illegal UTF8 chars\r
+ pVal2 = (UINT8 *)pBuffer;\r
+ for (int i=0; i<cb; ++i)\r
+ {\r
+ if ((*pVal2 == 0xC0)||(*pVal2 == 0xC1)||(*pVal2 >= 0xF5))\r
+ return false;\r
+ pVal2++;\r
+ }\r
+ pVal2 = (UINT8 *)pBuffer;\r
+ bool bUTF8 = false;\r
+ for (int i=0; i<(cb-3); ++i)\r
+ {\r
+ if ((*pVal2 & 0xE0)==0xC0)\r
+ {\r
+ pVal2++;i++;\r
+ if ((*pVal2 & 0xC0)!=0x80)\r
+ return false;\r
+ bUTF8 = true;\r
+ }\r
+ if ((*pVal2 & 0xF0)==0xE0)\r
+ {\r
+ pVal2++;i++;\r
+ if ((*pVal2 & 0xC0)!=0x80)\r
+ return false;\r
+ pVal2++;i++;\r
+ if ((*pVal2 & 0xC0)!=0x80)\r
+ return false;\r
+ bUTF8 = true;\r
+ }\r
+ if ((*pVal2 & 0xF8)==0xF0)\r
+ {\r
+ pVal2++;i++;\r
+ if ((*pVal2 & 0xC0)!=0x80)\r
+ return false;\r
+ pVal2++;i++;\r
+ if ((*pVal2 & 0xC0)!=0x80)\r
+ return false;\r
+ pVal2++;i++;\r
+ if ((*pVal2 & 0xC0)!=0x80)\r
+ return false;\r
+ bUTF8 = true;\r
+ }\r
+ pVal2++;\r
+ }\r
+ if (bUTF8)\r
+ return true;\r
+ return false;\r
+}\r
--- /dev/null
+// TortoiseSVN - a Windows shell extension for easy version control\r
+\r
+// Copyright (C) 2007 - TortoiseUDiff\r
+\r
+// This program is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU General Public License\r
+// as published by the Free Software Foundation; either version 2\r
+// of the License, or (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 Foundation,\r
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+//\r
+#pragma once\r
+#include "BaseWindow.h"\r
+#include "SciLexer.h"\r
+#include "Scintilla.h"\r
+#include "Registry.h"\r
+#include "resource.h"\r
+#include "FindBar.h"\r
+#include <string>\r
+#include <stdio.h>\r
+\r
+using namespace std;\r
+\r
+/**\r
+ * \ingroup TortoiseUDiff\r
+ * Main window of TortoiseUDiff. Handles the child windows (Scintilla control,\r
+ * CFindBar, ...).\r
+ */\r
+class CMainWindow : public CWindow\r
+{\r
+public:\r
+ CMainWindow(HINSTANCE hInst, const WNDCLASSEX* wcx = NULL);\r
+ ~CMainWindow(void);\r
+\r
+ /**\r
+ * Registers the window class and creates the window.\r
+ */\r
+ bool RegisterAndCreateWindow();\r
+\r
+ LRESULT SendEditor(UINT Msg, WPARAM wParam = 0, LPARAM lParam = 0);\r
+ HWND GetHWNDEdit() { return m_hWndEdit; }\r
+ bool LoadFile(LPCTSTR filename);\r
+ void SetTitle(LPCTSTR title);\r
+\r
+protected:\r
+ /// the message handler for this window\r
+ LRESULT CALLBACK WinMsgHandler(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);\r
+ /// Handles all the WM_COMMAND window messages (e.g. menu commands)\r
+ LRESULT DoCommand(int id);\r
+\r
+ bool Initialize();\r
+\r
+private:\r
+ void SetAStyle(int style, COLORREF fore, COLORREF back=::GetSysColor(COLOR_WINDOW), \r
+ int size=-1, const char *face=0);\r
+ bool IsUTF8(LPVOID pBuffer, int cb);\r
+\r
+private:\r
+ LRESULT m_directFunction;\r
+ LRESULT m_directPointer;\r
+\r
+ HWND m_hWndEdit;\r
+\r
+ CFindBar m_FindBar;\r
+ bool m_bShowFindBar;\r
+ bool m_bMatchCase;\r
+ wstring m_findtext;\r
+};\r
--- /dev/null
+TortoiseUDiff : a unified diff viewer for TortoiseSVN\r
+\r
+This unified diff viewer is basically a simple wrapper around the\r
+Scintilla edit control with the udiff lexer.\r
+\r
+This is a by-product of the CommitMonitor, released under GPL for\r
+TortoiseSVN.
\ No newline at end of file
--- /dev/null
+// TortoiseSVN - a Windows shell extension for easy version control\r
+\r
+// Copyright (C) 2003-2008 - Stefan Kueng\r
+\r
+// This program is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU General Public License\r
+// as published by the Free Software Foundation; either version 2\r
+// of the License, or (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 Foundation,\r
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+//\r
+#include "stdafx.h"\r
+#include "TortoiseUDiff.h"\r
+#include "MainWindow.h"\r
+#include "CmdLineParser.h"\r
+\r
+#include <commctrl.h>\r
+#pragma comment(lib, "comctl32.lib")\r
+\r
+\r
+#pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")\r
+\r
+\r
+int APIENTRY _tWinMain(HINSTANCE hInstance,\r
+ HINSTANCE hPrevInstance,\r
+ LPTSTR lpCmdLine,\r
+ int nCmdShow)\r
+{\r
+ UNREFERENCED_PARAMETER(hPrevInstance);\r
+ UNREFERENCED_PARAMETER(nCmdShow);\r
+\r
+ MSG msg;\r
+ HACCEL hAccelTable;\r
+\r
+ CCmdLineParser parser(lpCmdLine);\r
+\r
+ if (parser.HasKey(_T("?")) || parser.HasKey(_T("help")) || !parser.HasKey(_T("patchfile")))\r
+ {\r
+ TCHAR buf[1024];\r
+ LoadString(hInstance, IDS_COMMANDLINEHELP, buf, sizeof(buf)/sizeof(TCHAR));\r
+ MessageBox(NULL, buf, _T("TortoiseUDiff"), MB_ICONINFORMATION);\r
+ return 0;\r
+ }\r
+\r
+ INITCOMMONCONTROLSEX used = {\r
+ sizeof(INITCOMMONCONTROLSEX),\r
+ ICC_STANDARD_CLASSES | ICC_BAR_CLASSES\r
+ };\r
+ InitCommonControlsEx(&used);\r
+\r
+\r
+ if (::LoadLibrary(_T("SciLexer.DLL")) == NULL)\r
+ return FALSE;\r
+ \r
+ CMainWindow mainWindow(hInstance);\r
+ if (parser.HasVal(_T("title")))\r
+ mainWindow.SetTitle(parser.GetVal(_T("title")));\r
+ else\r
+ mainWindow.SetTitle(parser.GetVal(_T("patchfile")));\r
+ if (mainWindow.RegisterAndCreateWindow())\r
+ {\r
+ if (mainWindow.LoadFile(parser.GetVal(_T("patchfile"))))\r
+ {\r
+ ::ShowWindow(mainWindow.GetHWNDEdit(), SW_SHOW);\r
+ ::SetFocus(mainWindow.GetHWNDEdit());\r
+\r
+ hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TORTOISEUDIFF));\r
+\r
+ // Main message loop:\r
+ while (GetMessage(&msg, NULL, 0, 0))\r
+ {\r
+ if (!TranslateAccelerator(mainWindow, hAccelTable, &msg))\r
+ {\r
+ TranslateMessage(&msg);\r
+ DispatchMessage(&msg);\r
+ }\r
+ }\r
+ return (int) msg.wParam;\r
+ }\r
+ }\r
+ return 0;\r
+}\r
+\r
+\r
+\r
--- /dev/null
+// TortoiseSVN - a Windows shell extension for easy version control\r
+\r
+// Copyright (C) 2003-2007 - Stefan Kueng\r
+\r
+// This program is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU General Public License\r
+// as published by the Free Software Foundation; either version 2\r
+// of the License, or (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 Foundation,\r
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+//\r
+#pragma once\r
+\r
+#include "resource.h"\r
--- /dev/null
+// Microsoft Visual C++ generated resource script.\r
+//\r
+#include "resource.h"\r
+\r
+#define APSTUDIO_READONLY_SYMBOLS\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 2 resource.\r
+//\r
+#define APSTUDIO_HIDDEN_SYMBOLS\r
+#include "windows.h"\r
+#ifndef APSTUDIO_INVOKED\r
+#include "TortoiseUDiff.rc2"\r
+#endif\r
+#undef APSTUDIO_HIDDEN_SYMBOLS\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+#undef APSTUDIO_READONLY_SYMBOLS\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// Neutral resources\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)\r
+#ifdef _WIN32\r
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL\r
+#pragma code_page(1252)\r
+#endif //_WIN32\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Icon\r
+//\r
+\r
+// Icon with lowest ID value placed first to ensure application icon\r
+// remains consistent on all systems.\r
+IDI_CANCELNORMAL ICON "..\\Resources\\cancel-normal.ico"\r
+#endif // Neutral resources\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// English (U.S.) resources\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
+#ifdef _WIN32\r
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
+#pragma code_page(1252)\r
+#endif //_WIN32\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Icon\r
+//\r
+\r
+// Icon with lowest ID value placed first to ensure application icon\r
+// remains consistent on all systems.\r
+IDI_TORTOISEUDIFF ICON "TortoiseUDiff.ico"\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Accelerator\r
+//\r
+\r
+IDC_TORTOISEUDIFF ACCELERATORS \r
+BEGIN\r
+ VK_ESCAPE, IDM_FINDEXIT, VIRTKEY, NOINVERT\r
+ VK_F3, IDM_FINDNEXT, VIRTKEY, NOINVERT\r
+ VK_F3, IDM_FINDPREV, VIRTKEY, SHIFT, NOINVERT\r
+ "F", IDM_SHOWFINDBAR, VIRTKEY, CONTROL, NOINVERT\r
+ "W", ID_FILE_EXIT, VIRTKEY, CONTROL, NOINVERT\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Menu\r
+//\r
+\r
+IDC_TORTOISEUDIFF MENU \r
+BEGIN\r
+ POPUP "&File"\r
+ BEGIN\r
+ MENUITEM "&Exit", ID_FILE_EXIT\r
+ END\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Dialog\r
+//\r
+\r
+IDD_FINDBAR DIALOGEX 0, 0, 246, 21\r
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU\r
+FONT 8, "MS Shell Dlg", 400, 0, 0x1\r
+BEGIN\r
+ PUSHBUTTON "",IDC_FINDEXIT,0,3,15,14,BS_ICON | NOT WS_TABSTOP,WS_EX_TRANSPARENT\r
+ LTEXT "Find:",IDC_STATIC,19,5,17,8\r
+ EDITTEXT IDC_FINDTEXT,40,2,55,14,ES_AUTOHSCROLL\r
+ PUSHBUTTON "< &Previous",IDC_FINDPREV,100,2,58,14\r
+ PUSHBUTTON "&Next >",IDC_FINDNEXT,160,2,58,14\r
+ CONTROL "Mat&ch case",IDC_MATCHCASECHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,222,4,52,10\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// String Table\r
+//\r
+\r
+STRINGTABLE \r
+BEGIN\r
+ IDS_APP_TITLE "TortoiseUDiff"\r
+ IDS_COMMANDLINEHELP "TortoiseUDiff: the unified diff viewer for TortoiseSVN\n\nAvailable command line parameters are:\n/patchfile:""path to unified diff file""\n/title:""title to show for the viewer"""\r
+ IDC_TORTOISEUDIFF "TORTOISEUDIFF"\r
+END\r
+\r
+#endif // English (U.S.) resources\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// German (Switzerland) resources\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DES)\r
+#ifdef _WIN32\r
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN_SWISS\r
+#pragma code_page(1252)\r
+#endif //_WIN32\r
+\r
+#ifdef APSTUDIO_INVOKED\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// TEXTINCLUDE\r
+//\r
+\r
+1 TEXTINCLUDE \r
+BEGIN\r
+ "resource.h\0"\r
+END\r
+\r
+2 TEXTINCLUDE \r
+BEGIN\r
+ "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"\r
+ "#include ""windows.h""\r\n"\r
+ "#ifndef APSTUDIO_INVOKED\r\n"\r
+ "#include ""TortoiseUDiff.rc2""\r\n"\r
+ "#endif\r\n"\r
+ "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n\0"\r
+END\r
+\r
+3 TEXTINCLUDE \r
+BEGIN\r
+ "\r\0"\r
+END\r
+\r
+#endif // APSTUDIO_INVOKED\r
+\r
+#endif // German (Switzerland) resources\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+\r
+#ifndef APSTUDIO_INVOKED\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 3 resource.\r
+//\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+#endif // not APSTUDIO_INVOKED\r
+\r
--- /dev/null
+//\r
+// TortoiseUDiff.RC2 - resources Microsoft Visual C++ does not edit directly\r
+//\r
+\r
+#ifdef APSTUDIO_INVOKED\r
+#error this file is not editable by Microsoft Visual C++\r
+#endif //APSTUDIO_INVOKED\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// Add manually edited resources here...\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Version\r
+//\r
+#include "..\version.h"\r
+VS_VERSION_INFO VERSIONINFO\r
+ FILEVERSION FILEVER\r
+ PRODUCTVERSION PRODUCTVER\r
+ FILEFLAGSMASK 0x3fL\r
+#ifdef _DEBUG\r
+ FILEFLAGS 0x1L\r
+#else\r
+ FILEFLAGS 0x0L\r
+#endif\r
+ FILEOS 0x4L\r
+ FILETYPE VFT_APP\r
+ FILESUBTYPE 0x0L\r
+BEGIN\r
+ BLOCK "StringFileInfo"\r
+ BEGIN\r
+ BLOCK "040004e4"\r
+ BEGIN\r
+ VALUE "CompanyName", "http://tortoisesvn.net\0"\r
+ VALUE "FileDescription", "TortoiseUDiff\0"\r
+ VALUE "FileVersion", STRFILEVER\r
+ VALUE "InternalName", "TortoiseUDiff.exe\0"\r
+ VALUE "LegalCopyright", "Copyright (C) 2007-2008 - TortoiseSVN\0"\r
+ VALUE "OriginalFilename", "TortoiseUDiff.exe\0"\r
+ VALUE "ProductName", "TortoiseUDiff\0"\r
+ VALUE "ProductVersion", STRPRODUCTVER\r
+ END\r
+ END\r
+ BLOCK "VarFileInfo"\r
+ BEGIN\r
+ VALUE "Translation", 0x400, 1252\r
+ END\r
+END\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
--- /dev/null
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9.00"\r
+ Name="TortoiseUDiff"\r
+ ProjectGUID="{BC5A5F3B-E41A-4C56-B16F-263D2C6D6475}"\r
+ RootNamespace="TortoiseUDiff"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ <Platform\r
+ Name="x64"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="..\..\bin\Debug\bin"\r
+ IntermediateDirectory="..\..\obj\TortoiseUDiff\Debug"\r
+ ConfigurationType="1"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="..\..\ext\scintilla\include;..\Utils;..\Utils\MiscUI"\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="2"\r
+ WarningLevel="4"\r
+ DebugInformationFormat="4"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ LinkIncremental="2"\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Debug|x64"\r
+ OutputDirectory="..\..\bin\Debug64\bin"\r
+ IntermediateDirectory="..\..\obj\TortoiseUDiff\Debug64"\r
+ ConfigurationType="1"\r
+ CharacterSet="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories="..\..\ext\scintilla\include;..\Utils;..\Utils\MiscUI"\r
+ PreprocessorDefinitions="WIN64;_DEBUG;_WINDOWS"\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="2"\r
+ WarningLevel="4"\r
+ DebugInformationFormat="3"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ LinkIncremental="2"\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="17"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="..\..\bin\Release\bin"\r
+ IntermediateDirectory="..\..\obj\TortoiseUDiff\Release"\r
+ ConfigurationType="1"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="..\..\ext\scintilla\include;..\Utils;..\Utils\MiscUI"\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="2"\r
+ WarningLevel="4"\r
+ DebugInformationFormat="3"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ LinkIncremental="1"\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ OptimizeForWindows98="0"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|x64"\r
+ OutputDirectory="..\..\bin\Release64\bin"\r
+ IntermediateDirectory="..\..\obj\TortoiseUDiff\Release64"\r
+ ConfigurationType="1"\r
+ CharacterSet="1"\r
+ WholeProgramOptimization="1"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ TargetEnvironment="3"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories="..\..\ext\scintilla\include;..\Utils;..\Utils\MiscUI"\r
+ PreprocessorDefinitions="WIN64;NDEBUG;_WINDOWS"\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="2"\r
+ WarningLevel="4"\r
+ DebugInformationFormat="3"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ LinkIncremental="1"\r
+ GenerateDebugInformation="true"\r
+ SubSystem="2"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ OptimizeForWindows98="1"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="17"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="..\Utils\MiscUI\BaseDialog.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\Utils\MiscUI\BaseWindow.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\Utils\CmdLineParser.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\FindBar.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\MainWindow.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\Utils\Registry.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\stdafx.cpp"\r
+ >\r
+ <FileConfiguration\r
+ Name="Debug|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Debug|x64"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|Win32"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ <FileConfiguration\r
+ Name="Release|x64"\r
+ >\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ UsePrecompiledHeader="1"\r
+ />\r
+ </FileConfiguration>\r
+ </File>\r
+ <File\r
+ RelativePath=".\TortoiseUDiff.cpp"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\Utils\UnicodeUtils.cpp"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\Utils\MiscUI\BaseDialog.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\Utils\MiscUI\BaseWindow.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\Utils\CmdLineParser.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\FindBar.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\MainWindow.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\Utils\registry.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\Resource.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\stdafx.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\TortoiseUDiff.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\Utils\UnicodeUtils.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ <File\r
+ RelativePath="..\Resources\cancel-normal.ico"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\TortoiseUDiff.ico"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath=".\TortoiseUDiff.rc"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
--- /dev/null
+//{{NO_DEPENDENCIES}}\r
+// Microsoft Visual C++ generated include file.\r
+// Used by TortoiseUDiff.rc\r
+//\r
+#define IDD_TORTOISEUDIFF_DIALOG 102\r
+#define IDS_APP_TITLE 103\r
+#define IDM_ABOUT 104\r
+#define IDS_COMMANDLINEHELP 104\r
+#define IDI_TORTOISEUDIFF 107\r
+#define IDC_TORTOISEUDIFF 109\r
+#define IDR_MAINFRAME 128\r
+#define IDB_CANCELNORMAL 130\r
+#define IDI_ICON1 132\r
+#define IDI_CANCELNORMAL 132\r
+#define IDD_FINDBAR 144\r
+#define IDC_FINDNEXT 1014\r
+#define IDC_FINDTEXT 1019\r
+#define IDC_FINDPREV 1020\r
+#define IDC_MATCHCASECHECK 1021\r
+#define IDC_FINDEXIT 1022\r
+#define ID_FILE_EXIT 32771\r
+#define IDM_SHOWFINDBAR 32787\r
+#define IDM_FINDNEXT 32789\r
+#define IDM_FINDPREV 32790\r
+#define IDM_FINDEXIT 32793\r
+#define IDC_STATIC -1\r
+\r
+// Next default values for new objects\r
+// \r
+#ifdef APSTUDIO_INVOKED\r
+#ifndef APSTUDIO_READONLY_SYMBOLS\r
+#define _APS_NO_MFC 1\r
+#define _APS_NEXT_RESOURCE_VALUE 133\r
+#define _APS_NEXT_COMMAND_VALUE 32773\r
+#define _APS_NEXT_CONTROL_VALUE 1000\r
+#define _APS_NEXT_SYMED_VALUE 110\r
+#endif\r
+#endif\r
--- /dev/null
+// stdafx.cpp : source file that includes just the standard includes\r
+// TortoiseUDiff.pch will be the pre-compiled header\r
+// stdafx.obj will contain the pre-compiled type information\r
+\r
+#include "stdafx.h"\r
--- /dev/null
+// stdafx.h : include file for standard system include files,\r
+// or project specific include files that are used frequently, but\r
+// are changed infrequently\r
+//\r
+\r
+#pragma once\r
+\r
+// Modify the following defines if you have to target a platform prior to the ones specified below.\r
+// Refer to MSDN for the latest info on corresponding values for different platforms.\r
+#ifndef WINVER // Allow use of features specific to Windows XP or later.\r
+#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.\r
+#endif\r
+\r
+#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. \r
+#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.\r
+#endif \r
+\r
+#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.\r
+#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.\r
+#endif\r
+\r
+#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later.\r
+#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE.\r
+#endif\r
+\r
+#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers\r
+// Windows Header Files:\r
+#include <windows.h>\r
+\r
+// C RunTime Header Files\r
+#include <stdlib.h>\r
+#include <malloc.h>\r
+#include <memory.h>\r
+#include <tchar.h>\r
+\r
+\r
+#define COMMITMONITOR_FINDMSGPREV (WM_APP+1)\r
+#define COMMITMONITOR_FINDMSGNEXT (WM_APP+2)\r
+#define COMMITMONITOR_FINDEXIT (WM_APP+3)\r
+#define COMMITMONITOR_FINDRESET (WM_APP+4)\r