| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #include "stdafx.h"
- #include "ClipCompare.h"
- #include "Misc.h"
- #include "Options.h"
- CClipCompare::CClipCompare(void)
- {
- }
- CClipCompare::~CClipCompare(void)
- {
- }
- void CClipCompare::Compare(int leftId, int rightId)
- {
- CClip leftClip;
- if(leftClip.LoadFormats(leftId, true))
- {
- CClip rightClip;
- if(rightClip.LoadFormats(rightId, true))
- {
- bool saveW = true;
- bool saveA = true;
-
- if(leftClip.GetUnicodeTextFormat() == _T("") || rightClip.GetUnicodeTextFormat() == _T(""))
- {
- saveW = false;
- }
- if(leftClip.GetCFTextTextFormat() == "" || rightClip.GetCFTextTextFormat() == "")
- {
- saveA = false;
- }
- if(saveW || saveA)
- {
- CString leftFile = SaveToFile(leftId, &leftClip, saveW, saveA);
- CString rightFile = SaveToFile(rightId, &rightClip, saveW, saveA);
- CString path = GetComparePath();
- if(path != _T(""))
- {
- SHELLEXECUTEINFO sei = { sizeof(sei) };
- sei.lpFile = path;
- CString csParam;
- csParam.Format(_T("\"%s\" \"%s\""), leftFile, rightFile);
- sei.lpParameters = csParam;
- sei.nShow = SW_NORMAL;
- Log(StrF(_T("Comparing two clips, left Id %d, right Id %d, Path: %s %s"), leftId, rightId, path, csParam));
- if (!ShellExecuteEx(&sei))
- {
- }
- }
- else
- {
- Log(StrF(_T("CClipCompare::Compare, No Valid compare apps, not doing compare")));
- ShellExecute(NULL, _T("open"), _T("http://winmerge.org/"), NULL,NULL, SW_SHOW);
- }
- }
- else
- {
- Log(StrF(_T("CClipCompare::Compare, did not find valid text for both passed in clips")));
- }
- }
- else
- {
- Log(StrF(_T("CClipCompare::Compare, Failed to load RIGHT clip formats Id: %d"), rightId));
- }
- }
- else
- {
- Log(StrF(_T("CClipCompare::Compare, Failed to load LEFT clip formats Id: %d"), leftId));
- }
- }
- CString CClipCompare::GetComparePath()
- {
- CString path = CGetSetOptions::GetDiffApp();
- if(path != _T(""))
- {
- return path;
- }
- path = _T("C:\\Program Files (x86)\\Beyond Compare 3\\BCompare.exe");
- if(FileExists(path))
- {
- return path;
- }
- path = _T("C:\\Program Files\\Beyond Compare 3\\BCompare.exe");
- if(FileExists(path))
- {
- return path;
- }
- path = _T("C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe");
- if(FileExists(path))
- {
- return path;
- }
- path = _T("C:\\Program Files (x86)\\Araxis\\Araxis Merge\\compare.exe");
- if(FileExists(path))
- {
- return path;
- }
- path = _T("C:\\Program Files\\Araxis\\Araxis Merge\\compare.exe");
- if(FileExists(path))
- {
- return path;
- }
- return _T("");
- }
- CString CClipCompare::SaveToFile(int id, CClip *pClip, bool saveW, bool SaveA)
- {
- CString path;
- CString pathCompare = CGetSetOptions::GetPath(PATH_CLIP_DIFF);
- CString cs;
- cs.Format(_T("%sditto_compare_%d.txt"), pathCompare, id);
- if(FileExists(cs))
- {
- for(int i = 0; i < 1000; i++)
- {
- cs.Format(_T("%sditto_compare_%d.txt"), pathCompare, id);
- if(FileExists(cs))
- {
- path = cs;
- break;
- }
- }
- }
- else
- {
- path = cs;
- }
- if(path != _T("") &&
- pClip != NULL)
- {
- pClip->WriteTextToFile(path, saveW, SaveA, false);
- }
- return path;
- }
|