Skip to content

Commit f170e0b

Browse files
committed
WIP
1 parent bd32ecd commit f170e0b

File tree

3 files changed

+123
-40
lines changed

3 files changed

+123
-40
lines changed

src/WinWebDiffLib/Resource.h

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@
1313
#define IDR_POPUP_WEBPAGE_COMPARE 131
1414
#define IDR_POPUP_WEBPAGE_SYNC_EVENTS 132
1515
#define IDC_COMPARE 1021
16-
#define IDC_ZOOM 1022
17-
#define IDC_WIDTH 1023
18-
#define IDC_BY 1024
19-
#define IDC_HEIGHT 1025
20-
#define IDC_FITTOWINDOW 1026
21-
#define IDC_USERAGENT 1027
22-
#define IDC_SHOWDIFFERENCES 1028
23-
#define IDC_SYNC_EVENTS 1029
16+
#define IDC_ZOOM_LABEL 1022
17+
#define IDC_ZOOM 1023
18+
#define IDC_WIDTH 1024
19+
#define IDC_BY 1025
20+
#define IDC_HEIGHT 1026
21+
#define IDC_FITTOWINDOW 1027
22+
#define IDC_USERAGENT 1028
23+
#define IDC_SHOWDIFFERENCES 1029
24+
#define IDC_SYNC_EVENTS 1030
2425
#define ID_WEB_COMPARE_SCREENSHOTS 1633
2526
#define ID_WEB_COMPARE_FULLSIZE_SCREENSHOTS 1634
2627
#define ID_WEB_COMPARE_HTMLS 1635
@@ -31,6 +32,20 @@
3132
#define ID_WEB_SYNC_CLICK 1640
3233
#define ID_WEB_SYNC_INPUT 1641
3334
#define ID_WEB_SYNC_GOBACKFORWARD 1642
35+
#define IDS_COMPARE 2000
36+
#define IDS_ZOOM 2001
37+
#define IDS_SYNC_EVENTS 2002
38+
#define IDS_SHOWDIFFERENCES 2003
39+
#define IDS_WEB_COMPARE_SCREENSHOTS 2004
40+
#define IDS_WEB_COMPARE_FULLSIZE_SCREENSHOTS 2005
41+
#define IDS_WEB_COMPARE_HTMLS 2006
42+
#define IDS_WEB_COMPARE_TEXTS 2007
43+
#define IDS_WEB_COMPARE_RESOURCETREES 2008
44+
#define IDS_WEB_SYNC_ENABLED 2009
45+
#define IDS_WEB_SYNC_SCROLL 2010
46+
#define IDS_WEB_SYNC_CLICK 2011
47+
#define IDS_WEB_SYNC_INPUT 2012
48+
#define IDS_WEB_SYNC_GOBACKFORWARD 2013
3449
#define IDC_STATIC -1
3550

3651
// Next default values for new objects

src/WinWebDiffLib/WebToolWindow.hpp

Lines changed: 65 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
1111
{
1212
public:
1313
CWebToolWindow() :
14-
m_hWnd(NULL)
15-
, m_hInstance(NULL)
16-
, m_pWebDiffWindow(NULL)
14+
m_hWnd(nullptr)
15+
, m_hInstance(nullptr)
16+
, m_hComparePopup(nullptr)
17+
, m_hEventSyncPopup(nullptr)
18+
, m_pWebDiffWindow(nullptr)
1719
, m_bInSync(false)
20+
, m_nRef(0)
1821
{
1922
}
2023

@@ -26,13 +29,19 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
2629
{
2730
m_hInstance = hInstance;
2831
m_hWnd = CreateDialogParam(hInstance, MAKEINTRESOURCE(IDD_DIALOGBAR), hWndParent, DlgProc, reinterpret_cast<LPARAM>(this));
32+
m_hComparePopup = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_POPUP_WEBPAGE_COMPARE));
33+
m_hEventSyncPopup = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_POPUP_WEBPAGE_SYNC_EVENTS));
2934
return m_hWnd ? true : false;
3035
}
3136

3237
bool Destroy()
3338
{
3439
BOOL bSucceeded = DestroyWindow(m_hWnd);
35-
m_hWnd = NULL;
40+
m_hWnd = nullptr;
41+
DestroyMenu(m_hComparePopup);
42+
m_hComparePopup = nullptr;
43+
DestroyMenu(m_hEventSyncPopup);
44+
m_hEventSyncPopup = nullptr;
3645
return !!bSucceeded;
3746
}
3847

@@ -61,17 +70,6 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
6170
EnableWindow(GetDlgItem(m_hWnd, IDC_HEIGHT), !m_pWebDiffWindow->GetFitToWindow());
6271

6372
/*
64-
SendDlgItemMessage(m_hWnd, IDC_DIFF_HIGHLIGHT, BM_SETCHECK, m_pWebDiffWindow->GetShowDifferences() ? BST_CHECKED : BST_UNCHECKED, 0);
65-
SendDlgItemMessage(m_hWnd, IDC_DIFF_BLOCKSIZE_SLIDER, TBM_SETPOS, TRUE, m_pWebDiffWindow->GetDiffBlockSize());
66-
SendDlgItemMessage(m_hWnd, IDC_DIFF_BLOCKALPHA_SLIDER, TBM_SETPOS, TRUE, static_cast<LPARAM>(m_pWebDiffWindow->GetDiffColorAlpha() * 100));
67-
SendDlgItemMessage(m_hWnd, IDC_DIFF_CDTHRESHOLD_SLIDER, TBM_SETPOS, TRUE, static_cast<LPARAM>(m_pWebDiffWindow->GetColorDistanceThreshold()));
68-
SendDlgItemMessage(m_hWnd, IDC_OVERLAY_ALPHA_SLIDER, TBM_SETPOS, TRUE, static_cast<LPARAM>(m_pWebDiffWindow->GetOverlayAlpha() * 100));
69-
SendDlgItemMessage(m_hWnd, IDC_ZOOM_SLIDER, TBM_SETPOS, TRUE, static_cast<LPARAM>(m_pWebDiffWindow->GetZoom() * 8 - 8));
70-
SendDlgItemMessage(m_hWnd, IDC_DIFF_INSERTION_DELETION_DETECTION_MODE, CB_SETCURSEL, m_pWebDiffWindow->GetInsertionDeletionDetectionMode(), 0);
71-
SendDlgItemMessage(m_hWnd, IDC_OVERLAY_MODE, CB_SETCURSEL, m_pWebDiffWindow->GetOverlayMode(), 0);
72-
SendDlgItemMessage(m_hWnd, IDC_PAGE_SPIN, UDM_SETRANGE, 0, MAKELONG(1, m_pWebDiffWindow->GetMaxPageCount()));
73-
SendDlgItemMessage(m_hWnd, IDC_PAGE_SPIN, UDM_SETPOS, 0, MAKELONG(m_pWebDiffWindow->GetCurrentMaxPage() + 1, 0));
74-
7573
int w = static_cast<CWebDiffWindow *>(m_pWebDiffWindow)->GetDiffImageWidth();
7674
int h = static_cast<CWebDiffWindow *>(m_pWebDiffWindow)->GetDiffImageHeight();
7775
@@ -123,6 +121,51 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
123121
wcscpy_s(translated, org);
124122
return std::wstring(translated);
125123
};
124+
125+
struct StringIdControlId
126+
{
127+
int stringId;
128+
int controlId;
129+
};
130+
static const StringIdControlId stringIdControlId[] = {
131+
{IDS_COMPARE, IDC_COMPARE},
132+
{IDS_ZOOM, IDC_ZOOM_LABEL},
133+
{IDS_SYNC_EVENTS, IDC_SYNC_EVENTS},
134+
{IDS_SHOWDIFFERENCES, IDC_SHOWDIFFERENCES},
135+
};
136+
for (auto& e: stringIdControlId)
137+
::SetDlgItemText(m_hWnd, e.controlId, translateString(e.stringId).c_str());
138+
139+
static const StringIdControlId stringIdControlId1[] = {
140+
{IDS_WEB_COMPARE_SCREENSHOTS, ID_WEB_COMPARE_SCREENSHOTS},
141+
{IDS_WEB_COMPARE_FULLSIZE_SCREENSHOTS, ID_WEB_COMPARE_FULLSIZE_SCREENSHOTS},
142+
{IDS_WEB_COMPARE_HTMLS, ID_WEB_COMPARE_HTMLS},
143+
{IDS_WEB_COMPARE_TEXTS, ID_WEB_COMPARE_TEXTS},
144+
{IDS_WEB_COMPARE_RESOURCETREES, ID_WEB_COMPARE_RESOURCETREES},
145+
};
146+
for (auto& e : stringIdControlId1)
147+
{
148+
std::wstring str = translateString(e.stringId);
149+
MENUITEMINFO mii = { sizeof(MENUITEMINFO) };
150+
mii.fMask = MIIM_STRING;
151+
mii.dwTypeData = const_cast<LPWSTR>(str.c_str());
152+
::SetMenuItemInfo(m_hComparePopup, e.controlId, FALSE, &mii);
153+
}
154+
static const StringIdControlId stringIdControlId2[] = {
155+
{IDS_WEB_SYNC_ENABLED, ID_WEB_SYNC_ENABLED},
156+
{IDS_WEB_SYNC_SCROLL, ID_WEB_SYNC_SCROLL},
157+
{IDS_WEB_SYNC_CLICK, ID_WEB_SYNC_CLICK},
158+
{IDS_WEB_SYNC_INPUT, ID_WEB_SYNC_INPUT},
159+
{IDS_WEB_SYNC_GOBACKFORWARD, ID_WEB_SYNC_GOBACKFORWARD},
160+
};
161+
for (auto& e : stringIdControlId2)
162+
{
163+
std::wstring str = translateString(e.stringId);
164+
MENUITEMINFO mii = { sizeof(MENUITEMINFO) };
165+
mii.fMask = MIIM_STRING;
166+
mii.dwTypeData = const_cast<LPWSTR>(str.c_str());
167+
::SetMenuItemInfo(m_hEventSyncPopup, e.controlId, FALSE, &mii);
168+
}
126169
}
127170

128171
private:
@@ -141,8 +184,7 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
141184
RECT rc;
142185
GetWindowRect(GetDlgItem(m_hWnd, IDC_COMPARE), &rc);
143186
POINT point{ rc.left, rc.bottom };
144-
HMENU hPopup = LoadMenu(GetModuleHandle(L"WinWebDiffLib.dll"), MAKEINTRESOURCE(IDR_POPUP_WEBPAGE_COMPARE));
145-
HMENU hSubMenu = GetSubMenu(hPopup, 0);
187+
HMENU hSubMenu = GetSubMenu(m_hComparePopup, 0);
146188
TrackPopupMenu(hSubMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, 0, m_hWnd, nullptr);
147189
}
148190

@@ -151,8 +193,7 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
151193
RECT rc;
152194
GetWindowRect(GetDlgItem(m_hWnd, IDC_SYNC_EVENTS), &rc);
153195
POINT point{ rc.left, rc.bottom };
154-
HMENU hPopup = LoadMenu(GetModuleHandle(L"WinWebDiffLib.dll"), MAKEINTRESOURCE(IDR_POPUP_WEBPAGE_SYNC_EVENTS));
155-
HMENU hSubMenu = GetSubMenu(hPopup, 0);
196+
HMENU hSubMenu = GetSubMenu(m_hEventSyncPopup, 0);
156197
CheckMenuItem(hSubMenu, ID_WEB_SYNC_ENABLED, m_pWebDiffWindow->GetSyncEvents() ? MF_CHECKED : MF_UNCHECKED);
157198
CheckMenuItem(hSubMenu, ID_WEB_SYNC_SCROLL, m_pWebDiffWindow->GetSyncEventFlag(IWebDiffWindow::EVENT_SCROLL) ? MF_CHECKED : MF_UNCHECKED);
158199
CheckMenuItem(hSubMenu, ID_WEB_SYNC_CLICK, m_pWebDiffWindow->GetSyncEventFlag(IWebDiffWindow::EVENT_CLICK) ? MF_CHECKED : MF_UNCHECKED);
@@ -224,6 +265,7 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
224265
case IDC_SYNC_EVENTS:
225266
if (codeNotify == BN_CLICKED)
226267
ShowSyncEventsPopupMenu();
268+
break;
227269
case ID_WEB_SYNC_ENABLED:
228270
m_pWebDiffWindow->SetSyncEvents(!m_pWebDiffWindow->GetSyncEvents());
229271
break;
@@ -381,7 +423,7 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
381423

382424
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) override { return E_NOTIMPL; }
383425
ULONG STDMETHODCALLTYPE AddRef(void) override { return ++m_nRef; }
384-
ULONG STDMETHODCALLTYPE Release(void) override { if (--m_nRef == 0) { delete this; return 0; } return m_nRef; }
426+
ULONG STDMETHODCALLTYPE Release(void) override { if (--m_nRef == 0) { return 0; } return m_nRef; }
385427

386428
HRESULT Invoke(const WebDiffEvent& event)
387429
{
@@ -396,8 +438,10 @@ class CWebToolWindow : public IWebToolWindow, IWebDiffEventHandler
396438

397439
HWND m_hWnd;
398440
HINSTANCE m_hInstance;
441+
HMENU m_hComparePopup;
442+
HMENU m_hEventSyncPopup;
399443
IWebDiffWindow *m_pWebDiffWindow;
400444
bool m_bInSync;
401-
int m_nRef = 0;
445+
int m_nRef;
402446

403447
};

src/WinWebDiffLib/WinWebDiffLib.rc

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ BEGIN
132132
EDITTEXT IDC_WIDTH,16,16,24,12,ES_AUTOHSCROLL | WS_TABSTOP
133133
LTEXT "x",IDC_BY,40,20,6,8
134134
EDITTEXT IDC_HEIGHT,46,16,24,12,ES_AUTOHSCROLL | WS_TABSTOP
135-
LTEXT "Zoom:",IDC_STATIC,2,30,34,10
135+
LTEXT "Zoom:",IDC_ZOOM_LABEL,2,30,34,10
136136
COMBOBOX IDC_ZOOM,36,30,34,88,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
137137
LTEXT "UA:",IDC_STATIC,2,44,16,10
138138
EDITTEXT IDC_USERAGENT,18,44,52,14,ES_AUTOHSCROLL | WS_TABSTOP
@@ -159,27 +159,51 @@ IDR_POPUP_WEBPAGE_COMPARE MENU
159159
BEGIN
160160
POPUP "_POPUP_"
161161
BEGIN
162-
MENUITEM "&Screenshots", ID_WEB_COMPARE_SCREENSHOTS
163-
MENUITEM "&Full Size Screenshots", ID_WEB_COMPARE_FULLSIZE_SCREENSHOTS
164-
MENUITEM "&HTMLs", ID_WEB_COMPARE_HTMLS
165-
MENUITEM "&Texts", ID_WEB_COMPARE_TEXTS
166-
MENUITEM "&Resource Trees", ID_WEB_COMPARE_RESOURCETREES
162+
MENUITEM "&Screenshots", ID_WEB_COMPARE_SCREENSHOTS
163+
MENUITEM "&Full Size Screenshots", ID_WEB_COMPARE_FULLSIZE_SCREENSHOTS
164+
MENUITEM "&HTMLs", ID_WEB_COMPARE_HTMLS
165+
MENUITEM "&Texts", ID_WEB_COMPARE_TEXTS
166+
MENUITEM "&Resource Trees", ID_WEB_COMPARE_RESOURCETREES
167167
END
168168
END
169169

170170
IDR_POPUP_WEBPAGE_SYNC_EVENTS MENU
171171
BEGIN
172172
POPUP "_POPUP_"
173173
BEGIN
174-
MENUITEM "&Enabled", ID_WEB_SYNC_ENABLED
174+
MENUITEM "&Enabled", ID_WEB_SYNC_ENABLED
175175
MENUITEM SEPARATOR
176-
MENUITEM "&Scroll", ID_WEB_SYNC_SCROLL
177-
MENUITEM "&Click", ID_WEB_SYNC_CLICK
178-
MENUITEM "&Input", ID_WEB_SYNC_INPUT
179-
MENUITEM "&GoBack/Forward", ID_WEB_SYNC_GOBACKFORWARD
176+
MENUITEM "&Scroll", ID_WEB_SYNC_SCROLL
177+
MENUITEM "&Click", ID_WEB_SYNC_CLICK
178+
MENUITEM "&Input", ID_WEB_SYNC_INPUT
179+
MENUITEM "&GoBack/Forward", ID_WEB_SYNC_GOBACKFORWARD
180180
END
181181
END
182182

183+
184+
/////////////////////////////////////////////////////////////////////////////
185+
//
186+
// String Table
187+
//
188+
189+
STRINGTABLE
190+
BEGIN
191+
IDS_COMPARE "Compare"
192+
IDS_ZOOM "Zoom:"
193+
IDS_SYNC_EVENTS "&Event Sync"
194+
IDS_SHOWDIFFERENCES "View &Differences"
195+
IDS_WEB_COMPARE_SCREENSHOTS "&Screenshots"
196+
IDS_WEB_COMPARE_FULLSIZE_SCREENSHOTS "&Full Size Screenshots"
197+
IDS_WEB_COMPARE_HTMLS "&HTMLs"
198+
IDS_WEB_COMPARE_TEXTS "&Texts"
199+
IDS_WEB_COMPARE_RESOURCETREES "&Resource Trees"
200+
IDS_WEB_SYNC_ENABLED "&Enabled"
201+
IDS_WEB_SYNC_SCROLL "&Scroll"
202+
IDS_WEB_SYNC_CLICK "&Click"
203+
IDS_WEB_SYNC_INPUT "&Input"
204+
IDS_WEB_SYNC_GOBACKFORWARD "&GoBack/Forward"
205+
END
206+
183207
#endif // English (United States) resources
184208
/////////////////////////////////////////////////////////////////////////////
185209

0 commit comments

Comments
 (0)