Skip to content

Commit 5096ce1

Browse files
committed
Fixed Ctrl+3 shortcut for Schema Viewer not working by updating editor subclasses, slight icon tweaks
1 parent 1491463 commit 5096ce1

5 files changed

Lines changed: 64 additions & 5 deletions

File tree

src/sqlite-ce-edit/editor.c

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,11 @@ void SwitchView(int mode) {
129129
SetFocus(g_hwndResult);
130130
SendMessageW(g_hwndStatus, SB_SETTEXTW, 1, (LPARAM)g_lastResultStatus);
131131
} else if (mode == 2) {
132+
wchar_t statusBuf[64];
132133
SetFocus(g_hwndSchema);
133134
RefreshSchema();
134-
SendMessageW(g_hwndStatus, SB_SETTEXTW, 1, (LPARAM)L"Schema");
135+
GetSchemaStatus(statusBuf, 64);
136+
SendMessageW(g_hwndStatus, SB_SETTEXTW, 1, (LPARAM)statusBuf);
135137
}
136138
}
137139

@@ -236,11 +238,15 @@ LRESULT CALLBACK QueryEditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
236238
DoFindNext();
237239
return 0;
238240
}
239-
/* F6 - Toggle view, Ctrl+1 - Query, Ctrl+2 - Results */
241+
/* F6 - Toggle view, Ctrl+1 - Query, Ctrl+2 - Results, Ctrl+3 - Schema */
240242
if (wParam == VK_F6) {
241243
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWRESULT, 0);
242244
return 0;
243245
}
246+
if (wParam == VK_F7) {
247+
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWSCHEMA, 0);
248+
return 0;
249+
}
244250
if (ctrl && wParam == '1') {
245251
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWQUERY, 0);
246252
return 0;
@@ -249,6 +255,10 @@ LRESULT CALLBACK QueryEditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
249255
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWRESULT, 0);
250256
return 0;
251257
}
258+
if (ctrl && wParam == '3') {
259+
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWSCHEMA, 0);
260+
return 0;
261+
}
252262
/* Ctrl+A - Select all (CE edit control may not support natively) */
253263
if (ctrl && wParam == 'A') {
254264
SendMessage(hwnd, EM_SETSEL, 0, -1);
@@ -365,11 +375,15 @@ LRESULT CALLBACK ResultEditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
365375
DoFindNext();
366376
return 0;
367377
}
368-
/* F6/Escape - back to query, Ctrl+1 - Query, Ctrl+2 - Results */
378+
/* F6/Escape - back to query, Ctrl+1 - Query, Ctrl+2 - Results, Ctrl+3 - Schema */
369379
if (wParam == VK_F6 || wParam == VK_ESCAPE || wParam == VK_BACK) {
370380
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWQUERY, 0);
371381
return 0;
372382
}
383+
if (wParam == VK_F7) {
384+
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWSCHEMA, 0);
385+
return 0;
386+
}
373387
if (ctrl && wParam == '1') {
374388
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWQUERY, 0);
375389
return 0;
@@ -378,6 +392,10 @@ LRESULT CALLBACK ResultEditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
378392
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWRESULT, 0);
379393
return 0;
380394
}
395+
if (ctrl && wParam == '3') {
396+
SendMessage(g_hwndMain, WM_COMMAND, IDM_VIEWSCHEMA, 0);
397+
return 0;
398+
}
381399
return 0; /* Block all other keys */
382400
}
383401
/* Allow Ctrl+C WM_CHAR through */

src/sqlite-ce-edit/globals.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ void RefreshSchema(void);
238238
void OnSchemaExpanding(NMTREEVIEWW *pnm);
239239
void OnSchemaDoubleClick(void);
240240
void OnSchemaDelete(void);
241+
void GetSchemaStatus(wchar_t *buf, int bufLen);
241242

242243
/*============================================================================
243244
** Function Declarations - Database (database.c)

src/sqlite-ce-edit/main.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,16 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
343343
TV_KEYDOWN *pKey = (TV_KEYDOWN*)lParam;
344344
if (pKey->wVKey == VK_DELETE) {
345345
OnSchemaDelete();
346+
} else if (GetKeyState(VK_CONTROL) < 0) {
347+
if (pKey->wVKey == '1') SendMessage(hwnd, WM_COMMAND, IDM_VIEWQUERY, 0);
348+
else if (pKey->wVKey == '2') SendMessage(hwnd, WM_COMMAND, IDM_VIEWRESULT, 0);
349+
else if (pKey->wVKey == '3') SendMessage(hwnd, WM_COMMAND, IDM_VIEWSCHEMA, 0);
350+
} else if (pKey->wVKey == VK_F5) {
351+
ExecuteQuery();
352+
} else if (pKey->wVKey == VK_F6) {
353+
SendMessage(hwnd, WM_COMMAND, IDM_VIEWRESULT, 0);
354+
} else if (pKey->wVKey == VK_F7) {
355+
SendMessage(hwnd, WM_COMMAND, IDM_VIEWSCHEMA, 0);
346356
}
347357
}
348358
}
@@ -379,7 +389,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR lpCmd, int nShow) {
379389
WNDCLASSW wc = {0};
380390
MSG msg;
381391
RECT rcWork;
382-
ACCEL accel[10];
392+
ACCEL accel[15];
383393
int nAccel = 0;
384394

385395
(void)hPrev; (void)lpCmd; (void)nShow;
@@ -391,9 +401,13 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR lpCmd, int nShow) {
391401
accel[nAccel].fVirt = FCONTROL | FVIRTKEY; accel[nAccel].key = 'O'; accel[nAccel].cmd = IDM_OPENQUERY; nAccel++;
392402
accel[nAccel].fVirt = FCONTROL | FVIRTKEY; accel[nAccel].key = 'S'; accel[nAccel].cmd = IDM_SAVEQUERY; nAccel++;
393403
accel[nAccel].fVirt = FCONTROL | FVIRTKEY; accel[nAccel].key = 'F'; accel[nAccel].cmd = IDM_FIND; nAccel++;
404+
accel[nAccel].fVirt = FCONTROL | FVIRTKEY; accel[nAccel].key = '1'; accel[nAccel].cmd = IDM_VIEWQUERY; nAccel++;
405+
accel[nAccel].fVirt = FCONTROL | FVIRTKEY; accel[nAccel].key = '2'; accel[nAccel].cmd = IDM_VIEWRESULT; nAccel++;
406+
accel[nAccel].fVirt = FCONTROL | FVIRTKEY; accel[nAccel].key = '3'; accel[nAccel].cmd = IDM_VIEWSCHEMA; nAccel++;
394407
accel[nAccel].fVirt = FVIRTKEY; accel[nAccel].key = VK_F3; accel[nAccel].cmd = IDM_FINDNEXT; nAccel++;
395408
accel[nAccel].fVirt = FVIRTKEY; accel[nAccel].key = VK_F5; accel[nAccel].cmd = IDM_EXECUTE; nAccel++;
396409
accel[nAccel].fVirt = FVIRTKEY; accel[nAccel].key = VK_F6; accel[nAccel].cmd = IDM_VIEWRESULT; nAccel++;
410+
accel[nAccel].fVirt = FVIRTKEY; accel[nAccel].key = VK_F7; accel[nAccel].cmd = IDM_VIEWSCHEMA; nAccel++;
397411
accel[nAccel].fVirt = FALT | FVIRTKEY; accel[nAccel].key = 'X'; accel[nAccel].cmd = IDM_EXIT; nAccel++;
398412
g_hAccel = CreateAcceleratorTableW(accel, nAccel);
399413

src/sqlite-ce-edit/schema.c

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,26 @@
1515

1616
static HIMAGELIST g_hSchemaImages = NULL;
1717

18+
/* Schema counts for status bar */
19+
static int g_nTables = 0;
20+
static int g_nViews = 0;
21+
static int g_nTriggers = 0;
22+
23+
/*============================================================================
24+
** Get schema status string
25+
**============================================================================*/
26+
27+
void GetSchemaStatus(wchar_t *buf, int bufLen) {
28+
if (!g_db) {
29+
lstrcpyW(buf, L"No database");
30+
return;
31+
}
32+
wsprintfW(buf, L"%d table%s, %d view%s, %d trigger%s",
33+
g_nTables, g_nTables == 1 ? L"" : L"s",
34+
g_nViews, g_nViews == 1 ? L"" : L"s",
35+
g_nTriggers, g_nTriggers == 1 ? L"" : L"s");
36+
}
37+
1838
/*============================================================================
1939
** Create the schema TreeView control
2040
**============================================================================*/
@@ -64,8 +84,11 @@ void RefreshSchema(void) {
6484

6585
if (!g_hwndSchema) return;
6686

67-
/* Clear existing items */
87+
/* Clear existing items and counts */
6888
TreeView_DeleteAllItems(g_hwndSchema);
89+
g_nTables = 0;
90+
g_nViews = 0;
91+
g_nTriggers = 0;
6992

7093
if (!g_db) return;
7194

@@ -89,6 +112,7 @@ void RefreshSchema(void) {
89112
"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name",
90113
&results, &nRows, &nCols, &errmsg);
91114
if (errmsg) { sqlite_freemem(errmsg); errmsg = NULL; }
115+
g_nTables = nRows;
92116

93117
for (i = 1; i <= nRows && results; i++) {
94118
if (results[i]) {
@@ -104,6 +128,7 @@ void RefreshSchema(void) {
104128
"SELECT name FROM sqlite_master WHERE type='view' ORDER BY name",
105129
&results, &nRows, &nCols, &errmsg);
106130
if (errmsg) { sqlite_freemem(errmsg); errmsg = NULL; }
131+
g_nViews = nRows;
107132

108133
for (i = 1; i <= nRows && results; i++) {
109134
if (results[i]) {
@@ -119,6 +144,7 @@ void RefreshSchema(void) {
119144
"SELECT name FROM sqlite_master WHERE type='trigger' ORDER BY name",
120145
&results, &nRows, &nCols, &errmsg);
121146
if (errmsg) { sqlite_freemem(errmsg); errmsg = NULL; }
147+
g_nTriggers = nRows;
122148

123149
for (i = 1; i <= nRows && results; i++) {
124150
if (results[i]) {

src/sqlite-ce-edit/toolbar.bmp

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)