Develop and Download Open Source Software

Browse CVS Repository

Contents of /tombo/Tombo/Src/HPCPlatform.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.8 - (show annotations) (download) (as text)
Wed Sep 6 17:25:10 2006 UTC (17 years, 7 months ago) by hirami
Branch: MAIN
CVS Tags: Tombo_2_0b2, Tombo_2_0b3, Tombo_2_0b1, Tombo_2_0b4, B228, B229, B226, B227, B231, B230, HEAD
Changes since 1.7: +5 -2 lines
File MIME type: text/x-c++src
* disable open note when starting.
- support menubar label's L9N.
- FIX: Menu checking is not worked.(WM5)

1 #if defined(PLATFORM_HPC)
2 #include <windows.h>
3 #include <commctrl.h>
4
5 #include "resource.h"
6 #include "Property.h"
7 #include "Tombo.h"
8 #include "Message.h"
9
10 #include "StatusBar.h"
11 #include "PlatformLayer.h"
12 #include "HPCPlatform.h"
13 #include "Property.h"
14
15 #define NUM_MY_TOOLBAR_BMPS 0
16 #define NUM_IMG_BUTTONS 10
17
18 #define NUM_CMDBAR_BUTTONS 19
19 static TBBUTTON aCmdBarButtons[NUM_CMDBAR_BUTTONS] = {
20 {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 0, -1},
21 {STD_FILENEW + NUM_MY_TOOLBAR_BMPS, IDM_NEWMEMO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
22 {STD_FILESAVE + NUM_MY_TOOLBAR_BMPS, IDM_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
23 {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 0, -1},
24 {STD_CUT + NUM_MY_TOOLBAR_BMPS, IDM_CUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
25 {STD_COPY + NUM_MY_TOOLBAR_BMPS, IDM_COPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
26 {STD_PASTE + NUM_MY_TOOLBAR_BMPS, IDM_PASTE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
27 {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 0, -1},
28 {STD_DELETE + NUM_MY_TOOLBAR_BMPS, IDM_DELETEITEM, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
29 {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 0, -1},
30 {18, IDM_INSDATE1, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
31 {19, IDM_INSDATE2, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
32 {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 0, -1},
33 {21, IDM_TOGGLEPANE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
34 {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 0, -1},
35 {24, IDM_SEARCH, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, 0, -1},
36 {22, IDM_SEARCH_PREV, 0, TBSTYLE_BUTTON, 0, 0, 0, -1},
37 {23, IDM_SEARCH_NEXT, 0, TBSTYLE_BUTTON, 0, 0, 0, -1},
38 {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 0, -1},
39 };
40
41 ///////////////////////////////////////
42 // methods implimentation
43 ///////////////////////////////////////
44
45 HPCPlatform::HPCPlatform() : pStatusBar(NULL)
46 {
47 }
48
49 HPCPlatform::~HPCPlatform()
50 {
51 delete pStatusBar;
52 }
53
54 static HWND GetCommandBar(HWND hBand, UINT uBandID)
55 {
56 UINT idx = SendMessage(hBand, RB_IDTOINDEX, uBandID, 0);
57 if (idx == -1) return NULL;
58 HWND hwnd = CommandBands_GetCommandBar(hBand, idx);
59 return hwnd;
60 }
61
62 void HPCPlatform::Create(HWND hWnd, HINSTANCE hInst)
63 {
64 HWND hBand, hwnd;
65 REBARBANDINFO arbbi[2];
66
67 pStatusBar = new StatusBar();
68 pStatusBar->Create(hWnd, g_Property.GetUseTwoPane());
69
70 // CommandBand����
71 HIMAGELIST himl = ImageList_Create(16,16,ILC_COLOR, 0, 1);
72 HBITMAP hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_REBAR));
73 ImageList_Add(himl, hBmp, (HBITMAP)NULL);
74 DeleteObject(hBmp);
75
76 hBand = CommandBands_Create(hInst, hWnd, IDC_CMDBAND,
77 RBS_AUTOSIZE | RBS_VARHEIGHT | RBS_BANDBORDERS | RBS_SMARTLABELS,
78 himl);
79 arbbi[0].cbSize = sizeof(REBARBANDINFO);
80 arbbi[0].fMask = RBBIM_ID | RBBIM_STYLE | RBBIM_SIZE | RBBIM_IMAGE;
81 arbbi[0].fStyle = RBBS_NOGRIPPER;
82 arbbi[0].wID = ID_CMDBAR_MAIN;
83 arbbi[0].cx = 280;
84 arbbi[0].iImage = 0;
85
86 arbbi[1].cbSize = sizeof(REBARBANDINFO);
87 arbbi[1].fMask = RBBIM_ID | RBBIM_STYLE | RBBIM_SIZE;
88 arbbi[1].fStyle = 0;
89 arbbi[1].wID = ID_BUTTONBAND;
90 arbbi[1].cx = 360;
91
92 // restore commandbar info
93 COMMANDBANDSRESTOREINFO cbri[NUM_COMMANDBAR];
94 BOOL bRestoreFlg = g_Property.GetCommandbarInfo(cbri, NUM_COMMANDBAR);
95 if (bRestoreFlg) {
96 arbbi[0].fStyle = cbri[0].fStyle;
97 arbbi[0].cx = cbri[0].cxRestored;
98
99 arbbi[1].fMask |= RBBIM_STYLE;
100 arbbi[1].fStyle = cbri[1].fStyle;
101 arbbi[1].cx = cbri[1].cxRestored;
102 }
103
104 CommandBands_AddBands(hBand, hInst, 2, arbbi);
105 // set first band(menu)
106
107 HMENU h = LoadMainMenu();
108 hwnd = GetCommandBar(hBand, ID_CMDBAR_MAIN);
109 CommandBar_InsertMenubarEx(hwnd, NULL, (LPTSTR)h, 0);
110
111 // set next band(buttons)
112 hwnd = GetCommandBar(hBand, ID_BUTTONBAND);
113
114 CommandBar_AddBitmap(hwnd, HINST_COMMCTRL, IDB_STD_SMALL_COLOR, 15, 0, 0);
115 CommandBar_AddBitmap(hwnd, hInst, IDB_TOOLBAR, NUM_IMG_BUTTONS, 0, 0);
116
117 CommandBar_AddButtons(hwnd, sizeof(aCmdBarButtons)/sizeof(TBBUTTON), aCmdBarButtons);
118
119 hMSCmdBar = hBand;
120 CommandBands_AddAdornments(hBand, hInst, 0, NULL);
121
122 if (bRestoreFlg) {
123 if (cbri[0].fMaximized) {
124 SendMessage(hBand, RB_MAXIMIZEBAND, 0, (LPARAM)0);
125 }
126 if (cbri[1].fMaximized) {
127 SendMessage(hBand, RB_MAXIMIZEBAND, 1, (LPARAM)0);
128 }
129 }
130
131 }
132
133 HWND HPCPlatform::GetMainToolBar()
134 {
135 return GetCommandBar(hMSCmdBar, ID_BUTTONBAND);
136 }
137
138 HMENU HPCPlatform::GetMainMenu()
139 {
140 return CommandBar_GetMenu(GetCommandBar(hMSCmdBar, ID_CMDBAR_MAIN), 0);
141 }
142
143 HMENU HPCPlatform::GetMDToolMenu()
144 {
145 return CommandBar_GetMenu(GetCommandBar(hMSCmdBar, ID_CMDBAR_MAIN), 0);
146
147 }
148
149 HMENU HPCPlatform::GetMSEditMenu()
150 {
151 return CommandBar_GetMenu(GetCommandBar(hMSCmdBar, ID_CMDBAR_MAIN), 0);
152 }
153
154 HMENU HPCPlatform::GetMSBookMarkMenu()
155 {
156 HMENU hMenu = GetMainMenu();
157 return GetSubMenu(hMenu, BOOKMARK_MENU_POS);
158 }
159
160 void HPCPlatform::EnableMenu(UINT uId, BOOL bEnable)
161 {
162 BOOL bTb = FALSE;
163 HWND hTbWin;
164 switch(uId) {
165 case IDM_DELETEITEM:
166 case IDM_NEWMEMO:
167 case IDM_CUT:
168 case IDM_COPY:
169 case IDM_PASTE:
170 case IDM_SAVE:
171 bTb = TRUE;
172 hTbWin = GetMainToolBar();
173 default:
174 break;
175 }
176
177
178 HMENU hMenu = GetMainMenu();
179 UINT uFlg1;
180 if (bEnable) {
181 uFlg1 = MF_BYCOMMAND | MF_ENABLED;
182 } else {
183 uFlg1 = MF_BYCOMMAND | MF_GRAYED;
184 }
185 EnableMenuItem(hMenu, uId, uFlg1);
186
187 if (bTb) {
188 SendMessage(hTbWin, TB_ENABLEBUTTON, uId, MAKELONG(bEnable, 0));
189 }
190 }
191
192 void HPCPlatform::ControlMenu(BOOL bTreeActive)
193 {
194 HMENU hMenu = CommandBar_GetMenu(GetCommandBar(hMSCmdBar, ID_CMDBAR_MAIN), 0);
195
196 UINT uFlg1, uFlg2;
197 if (bTreeActive) {
198 uFlg1 = MF_BYCOMMAND | MF_ENABLED;
199 uFlg2 = MF_BYCOMMAND | MF_GRAYED;
200 } else {
201 uFlg1 = MF_BYCOMMAND | MF_GRAYED;
202 uFlg2 = MF_BYCOMMAND | MF_ENABLED;
203 }
204
205 EnableMenuItem(hMenu, IDM_FORGETPASS, uFlg1);
206 EnableMenuItem(hMenu, IDM_PROPERTY, uFlg1);
207
208 EnableMenuItem(hMenu, IDM_INSDATE1, uFlg2);
209 EnableMenuItem(hMenu, IDM_INSDATE2, uFlg2);
210 EnableMenuItem(hMenu, IDM_DETAILS_HSCROLL, uFlg2);
211 }
212
213 void HPCPlatform::ControlToolbar(BOOL bTreeActive)
214 {
215 HWND hToolBar = GetCommandBar(hMSCmdBar, ID_BUTTONBAND);
216 SendMessage(hToolBar, TB_ENABLEBUTTON, IDM_INSDATE1, MAKELONG(!bTreeActive, 0));
217 SendMessage(hToolBar, TB_ENABLEBUTTON, IDM_INSDATE2, MAKELONG(!bTreeActive, 0));
218 }
219
220 void HPCPlatform::OpenDetailsView()
221 {
222 ControlMenu(FALSE);
223 ControlToolbar(FALSE);
224 }
225
226 void HPCPlatform::CloseDetailsView()
227 {
228 ControlMenu(TRUE);
229 ControlToolbar(TRUE);
230 }
231
232 void HPCPlatform::EnableSearchNext()
233 {
234 SendMessage(GetCommandBar(hMSCmdBar, ID_BUTTONBAND), TB_SETSTATE, IDM_SEARCH_PREV, MAKELONG(TBSTATE_ENABLED, 0));
235 SendMessage(GetCommandBar(hMSCmdBar, ID_BUTTONBAND), TB_SETSTATE, IDM_SEARCH_NEXT, MAKELONG(TBSTATE_ENABLED, 0));
236 }
237
238 void HPCPlatform::AdjustUserRect(RECT *r)
239 {
240 DWORD nHOffset = CommandBands_Height(hMSCmdBar);
241
242 WORD nStatusHeight;
243 if (g_Property.GetHideStatusBar()) {
244 nStatusHeight = 0;
245 } else {
246 nStatusHeight = GetStatusBarHeight();
247 }
248
249 r->top += nHOffset;
250 r->bottom -= (nHOffset + nStatusHeight);
251
252 }
253
254 void HPCPlatform::CheckMenu(UINT uid, BOOL bCheck)
255 {
256 HMENU hMenu;
257 BOOL bNegButton = FALSE;
258 switch(uid) {
259 case IDM_TOGGLEPANE:
260 bNegButton = TRUE;
261 hMenu = GetMainMenu();
262 break;
263 case IDM_DETAILS_HSCROLL:
264 hMenu = GetMDToolMenu();
265 break;
266 default:
267 break;
268 }
269
270 BOOL bButton = bNegButton ? !bCheck : bCheck;
271 // CheckMenuItem is superseeded funcs, but in CE, SetMenuItemInfo can't set values, so use it.
272 CheckMenuItem(hMenu, uid, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));
273 SendMessage(GetCommandBar(hMSCmdBar, ID_BUTTONBAND), TB_PRESSBUTTON, uid, MAKELONG(bButton, 0));
274 }
275
276 void HPCPlatform::ShowStatusBar(BOOL bShow)
277 {
278 pStatusBar->Show(bShow);
279 }
280
281 void HPCPlatform::SetStatusIndicator(DWORD nPos, LPCTSTR pText, BOOL bDisp)
282 {
283 pStatusBar->SetStatusIndicator(nPos, pText, bDisp);
284 }
285
286 WORD HPCPlatform::GetStatusBarHeight()
287 {
288 return pStatusBar->GetHeight();
289 }
290
291 void HPCPlatform::ResizeStatusBar(WPARAM wParam, LPARAM lParam)
292 {
293 pStatusBar->SendSize(wParam, lParam);
294 pStatusBar->ResizeStatusBar();
295 }
296
297 void HPCPlatform::GetStatusWindowRect(RECT *pRect)
298 {
299 pStatusBar->GetWindowRect(pRect);
300 }
301
302 ///////////////////////////////////////////////////
303 // Load i18nized menu
304 ///////////////////////////////////////////////////
305
306 static void InsertBaseMenu(HMENU hMain, int pos, LPCTSTR pText, HMENU hSub)
307 {
308 InsertMenu(hMain, pos, MF_BYPOSITION | MF_POPUP | MF_STRING , (UINT)hSub, pText);
309 }
310
311 static MenuMsgRes aFileMenu[] = {
312 { 0, IDM_NEWMEMO, 0, MSG_ID_MENUITEM_W32_F_NEWMEMO },
313 { 1, IDM_NEWFOLDER, 0, MSG_ID_MENUITEM_W32_F_NEWFOLDER },
314 { 2, IDM_RENAME, 0, MSG_ID_MENUITEM_W32_F_RENAME },
315 { 3, IDM_DELETEITEM, 0, MSG_ID_MENUITEM_W32_F_DEL },
316 { 4, -1, 0, 0 },
317 { 5, IDM_SAVE, 0, MSG_ID_MENUITEM_W32_F_SAVE },
318 { 6, -1, 0, 0 },
319 { 7, IDM_ABOUT, 0, MSG_ID_MENUITEM_W32_H_ABOUT },
320 { 8, IDM_EXIT, 0, MSG_ID_MENUITEM_W32_F_EXIT },
321 };
322
323 static MenuMsgRes aEditMenu[] = {
324 { 0, IDM_CUT, 0, MSG_ID_MENUITEM_W32_E_CUT },
325 { 1, IDM_COPY, 0, MSG_ID_MENUITEM_W32_E_COPY },
326 { 2, IDM_PASTE, 0, MSG_ID_MENUITEM_W32_E_PASTE },
327 { 3, -1, 0, 0 },
328 { 4, IDM_SELALL, 0, MSG_ID_MENUITEM_W32_E_SELALL },
329 { 5, -1, 0, 0 },
330 { 6, IDM_INSDATE1, 0, MSG_ID_MENUITEM_W32_E_DATE1 },
331 { 7, IDM_INSDATE2, 0, MSG_ID_MENUITEM_W32_E_DATE2 },
332 };
333
334 static MenuMsgRes aBookMarkMenu[] = {
335 { 0, IDM_BOOKMARK_ADD, 0, MSG_ID_MENUITEM_W32_B_ADDBM },
336 { 1, IDM_BOOKMARK_CONFIG, 0, MSG_ID_MENUITEM_W32_B_EDITBM },
337 { 2, -1, 0, 0 },
338 };
339
340 static MenuMsgRes aFindMenu[] = {
341 { 0, IDM_SEARCH, 0, MSG_ID_MENUITEM_W32_E_FIND },
342 { 1, IDM_SEARCH_NEXT, 0, MSG_ID_MENUITEM_W32_E_FINDNEXT },
343 { 2, IDM_SEARCH_PREV, 0, MSG_ID_MENUITEM_W32_E_FINDPREV },
344 { 3, -1, 0, 0 },
345 { 4, IDM_GREP, 0, MSG_ID_MENUITEM_W32_E_QFILTER },
346 { 5, IDM_VFOLDER_DEF, 0, MSG_ID_MENUITEM_W32_T_VIRTUALFOLDER },
347 };
348
349 static MenuMsgRes aToolMenu[] = {
350 { 0, IDM_DETAILS_HSCROLL, MF_CHECKED, MSG_ID_MENUITEM_W32_T_WRAPTEXT },
351 { 1, IDM_TOGGLEPANE, MF_CHECKED, MSG_ID_MENUITEM_W32_T_TWOPANE },
352 { 2, IDM_SHOWSTATUSBAR, MF_CHECKED, MSG_ID_MENUITEM_W32_T_STATUSBAR },
353 { 3, -1, 0, 0 },
354 { 4, IDM_ENCRYPT, 0, MSG_ID_MENUITEM_W32_T_ENCRYPT },
355 { 5, IDM_DECRYPT, 0, MSG_ID_MENUITEM_W32_T_DECRYPT },
356 { 6, -1, 0, 0 },
357 { 7, IDM_FORGETPASS, 0, MSG_ID_MENUITEM_W32_T_ERASEPASS },
358 { 8, -1, 0, 0 },
359 { 9, IDM_PROPERTY, 0, MSG_ID_MENUITEM_W32_T_OPTIONS },
360 };
361
362
363 HMENU HPCPlatform::LoadMainMenu()
364 {
365 HMENU hMain = CreateMenu();
366 HMENU hSub;
367 OverrideMenuTitle(hSub = CreatePopupMenu(), aFileMenu, sizeof(aFileMenu)/sizeof(MenuMsgRes));
368 InsertBaseMenu(hMain, 0, MSG_MENUITEM_W32B_FILE, hSub);
369 OverrideMenuTitle(hSub = CreatePopupMenu(), aEditMenu, sizeof(aEditMenu)/sizeof(MenuMsgRes));
370 InsertBaseMenu(hMain, 1, MSG_MENUITEM_W32B_EDIT, hSub);
371 OverrideMenuTitle(hSub = CreatePopupMenu(), aBookMarkMenu, sizeof(aBookMarkMenu)/sizeof(MenuMsgRes));
372 InsertBaseMenu(hMain, 2, MSG_MENUITEM_W32B_BOOKMARK, hSub);
373 OverrideMenuTitle(hSub = CreatePopupMenu(), aFindMenu, sizeof(aFindMenu)/sizeof(MenuMsgRes));
374 InsertBaseMenu(hMain, 3, MSG_MENUITEM_FIND, hSub);
375 OverrideMenuTitle(hSub = CreatePopupMenu(), aToolMenu, sizeof(aToolMenu)/sizeof(MenuMsgRes));
376 InsertBaseMenu(hMain, 4, MSG_MENUITEM_W32B_TOOL, hSub);
377
378 return hMain;
379 }
380
381 static MenuMsgRes aContextMenu[] = {
382 { 0, IDM_CUT, 0, MSG_ID_MENUITEM_MAIN_CUT },
383 { 1, IDM_COPY, 0, MSG_ID_MENUITEM_MAIN_COPY },
384 { 2, IDM_PASTE, 0, MSG_ID_MENUITEM_MAIN_PASTE },
385 { 3, -1, 0, 0 },
386 { 4, IDM_ENCRYPT, 0, MSG_ID_MENUITEM_MAIN_ENCRYPT },
387 { 5, IDM_DECRYPT, 0, MSG_ID_MENUITEM_MAIN_DECRYPT },
388 { 6, -1, 0, 0 },
389 { 7, IDM_SEARCH, 0, MSG_ID_MENUITEM_MAIN_FIND },
390 { 8, -1, 0, 0 },
391 { 9, IDM_NEWFOLDER, 0, MSG_ID_MENUITEM_MAIN_NEWFOLDER },
392 { 10, -1, 0, 0 },
393 { 11, IDM_DELETEITEM, 0, MSG_ID_MENUITEM_MAIN_DELETE },
394 { 12, IDM_RENAME, 0, MSG_ID_MENUITEM_MAIN_RENAME },
395 { 13, -1, 0, 0 },
396 { 14, IDM_TRACELINK, 0, MSG_ID_MENUITEM_CTX_TRACELINK},
397 { 15, -1, 0, 0 },
398 { 16, IDM_EXTAPP1, 0, MSG_ID_MENUITEM_EXTAPP1 },
399 };
400
401 #ifdef COMMENT
402 HMENU HPCPlatform::LoadContextMenu(DWORD nFlg)
403 {
404 HMENU hMenu = CreatePopupMenu();
405 OverrideMenuTitle(hMenu, aContextMenu, sizeof(aContextMenu)/sizeof(MenuMsgRes));
406 return hMenu;
407 }
408 #endif
409 #endif // PLATFORM_HPC

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26