Mercurial > dwindows
comparison dwtest.c @ 297:5414d3d582e4
Add icons to tree items on page three.
Make the keypress callback display things more easily.
author | mhessling@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 27 Mar 2003 07:05:56 +0000 |
parents | 315812516608 |
children | 4559a2fd2db2 |
comparison
equal
deleted
inserted
replaced
296:d2392cf845e4 | 297:5414d3d582e4 |
---|---|
4 #include "dw.h" | 4 #include "dw.h" |
5 | 5 |
6 /* Select a fixed width font for our platform */ | 6 /* Select a fixed width font for our platform */ |
7 #ifdef __OS2__ | 7 #ifdef __OS2__ |
8 #define FIXEDFONT "5.System VIO" | 8 #define FIXEDFONT "5.System VIO" |
9 #define FOLDER_ICON_NAME "os2\folder" | |
10 #define FILE_ICON_NAME "os2\file" | |
9 #elif defined(__WIN32__) | 11 #elif defined(__WIN32__) |
10 #define FIXEDFONT "10.Terminal" | 12 #define FIXEDFONT "10.Terminal" |
13 #define FOLDER_ICON_NAME "win\folder" | |
14 #define FILE_ICON_NAME "win\file" | |
11 #elif GTK_MAJOR_VERSION > 1 | 15 #elif GTK_MAJOR_VERSION > 1 |
12 #define FIXEDFONT "monospace 10" | 16 #define FIXEDFONT "monospace 10" |
17 #define FOLDER_ICON_NAME "gtk/folder" | |
18 #define FILE_ICON_NAME "gtk/file" | |
13 #else | 19 #else |
14 #define FIXEDFONT "fixed" | 20 #define FIXEDFONT "fixed" |
21 #define FOLDER_ICON_NAME "gtk/folder" | |
22 #define FILE_ICON_NAME "gtk/file" | |
15 #endif | 23 #endif |
16 | 24 |
17 #define SCROLLBARWIDTH 14 | 25 #define SCROLLBARWIDTH 14 |
18 | 26 |
19 unsigned long flStyle = DW_FCF_SYSMENU | DW_FCF_TITLEBAR | | 27 unsigned long flStyle = DW_FCF_SYSMENU | DW_FCF_TITLEBAR | |
29 notebookbox2, | 37 notebookbox2, |
30 notebookbox3, | 38 notebookbox3, |
31 notebook, | 39 notebook, |
32 vscrollbar, | 40 vscrollbar, |
33 hscrollbar, | 41 hscrollbar, |
34 status, | 42 status, status1, |
35 stext, | 43 stext, |
36 tree, | 44 tree, |
37 pagebox, | 45 pagebox, |
38 treebox, | 46 treebox, |
39 textbox1, textbox2, textboxA, | 47 textbox1, textbox2, textboxA, |
52 int max_linewidth=0; | 60 int max_linewidth=0; |
53 int current_row=0,current_col=0; | 61 int current_row=0,current_col=0; |
54 | 62 |
55 FILE *fp=NULL; | 63 FILE *fp=NULL; |
56 char **lp; | 64 char **lp; |
65 | |
66 char *resolve_keyname( int vk ) | |
67 { | |
68 char *keyname; | |
69 switch(vk) | |
70 { | |
71 case VK_LBUTTON : keyname = "VK_LBUTTON"; break; | |
72 case VK_RBUTTON : keyname = "VK_RBUTTON"; break; | |
73 case VK_CANCEL : keyname = "VK_CANCEL"; break; | |
74 case VK_MBUTTON : keyname = "VK_MBUTTON"; break; | |
75 /* case VK_BACK : keyname = "VK_BACK"; break;*/ | |
76 case VK_TAB : keyname = "VK_TAB"; break; | |
77 case VK_CLEAR : keyname = "VK_CLEAR"; break; | |
78 case VK_RETURN : keyname = "VK_RETURN"; break; | |
79 case VK_MENU : keyname = "VK_MENU"; break; | |
80 case VK_PAUSE : keyname = "VK_PAUSE"; break; | |
81 case VK_CAPITAL : keyname = "VK_CAPITAL"; break; | |
82 case VK_ESCAPE : keyname = "VK_ESCAPE"; break; | |
83 case VK_SPACE : keyname = "VK_SPACE"; break; | |
84 case VK_PRIOR : keyname = "VK_PRIOR"; break; | |
85 case VK_NEXT : keyname = "VK_NEXT"; break; | |
86 case VK_END : keyname = "VK_END"; break; | |
87 case VK_HOME : keyname = "VK_HOME"; break; | |
88 case VK_LEFT : keyname = "VK_LEFT"; break; | |
89 case VK_UP : keyname = "VK_UP"; break; | |
90 case VK_RIGHT : keyname = "VK_RIGHT"; break; | |
91 case VK_DOWN : keyname = "VK_DOWN"; break; | |
92 case VK_SELECT : keyname = "VK_SELECT"; break; | |
93 case VK_PRINT : keyname = "VK_PRINT"; break; | |
94 case VK_EXECUTE : keyname = "VK_EXECUTE"; break; | |
95 case VK_SNAPSHOT: keyname = "VK_SNAPSHOT"; break; | |
96 case VK_INSERT : keyname = "VK_INSERT"; break; | |
97 case VK_DELETE : keyname = "VK_DELETE"; break; | |
98 case VK_HELP : keyname = "VK_HELP"; break; | |
99 case VK_LWIN : keyname = "VK_LWIN"; break; | |
100 case VK_RWIN : keyname = "VK_RWIN"; break; | |
101 case VK_NUMPAD0 : keyname = "VK_NUMPAD0"; break; | |
102 case VK_NUMPAD1 : keyname = "VK_NUMPAD1"; break; | |
103 case VK_NUMPAD2 : keyname = "VK_NUMPAD2"; break; | |
104 case VK_NUMPAD3 : keyname = "VK_NUMPAD3"; break; | |
105 case VK_NUMPAD4 : keyname = "VK_NUMPAD4"; break; | |
106 case VK_NUMPAD5 : keyname = "VK_NUMPAD5"; break; | |
107 case VK_NUMPAD6 : keyname = "VK_NUMPAD6"; break; | |
108 case VK_NUMPAD7 : keyname = "VK_NUMPAD7"; break; | |
109 case VK_NUMPAD8 : keyname = "VK_NUMPAD8"; break; | |
110 case VK_NUMPAD9 : keyname = "VK_NUMPAD9"; break; | |
111 case VK_MULTIPLY: keyname = "VK_MULTIPLY"; break; | |
112 case VK_ADD : keyname = "VK_ADD"; break; | |
113 case VK_SEPARATOR: keyname = "VK_SEPARATOR"; break; | |
114 case VK_SUBTRACT: keyname = "VK_SUBTRACT"; break; | |
115 case VK_DECIMAL : keyname = "VK_DECIMAL"; break; | |
116 case VK_DIVIDE : keyname = "VK_DIVIDE"; break; | |
117 case VK_F1 : keyname = "VK_F1"; break; | |
118 case VK_F2 : keyname = "VK_F2"; break; | |
119 case VK_F3 : keyname = "VK_F3"; break; | |
120 case VK_F4 : keyname = "VK_F4"; break; | |
121 case VK_F5 : keyname = "VK_F5"; break; | |
122 case VK_F6 : keyname = "VK_F6"; break; | |
123 case VK_F7 : keyname = "VK_F7"; break; | |
124 case VK_F8 : keyname = "VK_F8"; break; | |
125 case VK_F9 : keyname = "VK_F9"; break; | |
126 case VK_F10 : keyname = "VK_F10"; break; | |
127 case VK_F11 : keyname = "VK_F11"; break; | |
128 case VK_F12 : keyname = "VK_F12"; break; | |
129 case VK_F13 : keyname = "VK_F13"; break; | |
130 case VK_F14 : keyname = "VK_F14"; break; | |
131 case VK_F15 : keyname = "VK_F15"; break; | |
132 case VK_F16 : keyname = "VK_F16"; break; | |
133 case VK_F17 : keyname = "VK_F17"; break; | |
134 case VK_F18 : keyname = "VK_F18"; break; | |
135 case VK_F19 : keyname = "VK_F19"; break; | |
136 case VK_F20 : keyname = "VK_F20"; break; | |
137 case VK_F21 : keyname = "VK_F21"; break; | |
138 case VK_F22 : keyname = "VK_F22"; break; | |
139 case VK_F23 : keyname = "VK_F23"; break; | |
140 case VK_F24 : keyname = "VK_F24"; break; | |
141 case VK_NUMLOCK : keyname = "VK_NUMLOCK"; break; | |
142 case VK_SCROLL : keyname = "VK_SCROLL"; break; | |
143 case VK_LSHIFT : keyname = "VK_LSHIFT"; break; | |
144 case VK_RSHIFT : keyname = "VK_RSHIFT"; break; | |
145 case VK_LCONTROL: keyname = "VK_LCONTROL"; break; | |
146 case VK_RCONTROL: keyname = "VK_RCONTROL"; break; | |
147 /* case VK_LMENU : keyname = "VK_LMENU"; break; */ | |
148 /* case VK_RMENU : keyname = "VK_RMENU"; break;*/ | |
149 default: keyname = "<unknown>"; break; | |
150 } | |
151 return keyname; | |
152 } | |
153 | |
154 char *resolve_keymodifiers( int mask ) | |
155 { | |
156 if ( (mask & KC_CTRL) && (mask & KC_SHIFT) && (mask && KC_ALT) ) | |
157 return "KC_CTRL KC_SHIFT KC_ALT"; | |
158 else if ( (mask & KC_CTRL) && (mask & KC_SHIFT) ) | |
159 return "KC_CTRL KC_SHIFT"; | |
160 else if ( (mask & KC_CTRL) && (mask & KC_ALT) ) | |
161 return "KC_CTRL KC_ALT"; | |
162 else if ( (mask & KC_SHIFT) && (mask & KC_ALT) ) | |
163 return "KC_SHIFT KC_ALT"; | |
164 else if ( (mask & KC_SHIFT) ) | |
165 return "KC_SHIFT"; | |
166 else if ( (mask & KC_CTRL) ) | |
167 return "KC_CTRL"; | |
168 else if ( (mask & KC_ALT) ) | |
169 return "KC_ALT"; | |
170 else return "none"; | |
171 } | |
57 | 172 |
58 /* This gets called when a part of the graph needs to be repainted. */ | 173 /* This gets called when a part of the graph needs to be repainted. */ |
59 int DWSIGNAL text_expose(HWND hwnd, DWExpose *exp, void *data) | 174 int DWSIGNAL text_expose(HWND hwnd, DWExpose *exp, void *data) |
60 { | 175 { |
61 HPIXMAP hpm; | 176 HPIXMAP hpm; |
133 return TRUE; | 248 return TRUE; |
134 } | 249 } |
135 | 250 |
136 int DWSIGNAL keypress_callback(HWND window, char ch, int vk, int state, void *data) | 251 int DWSIGNAL keypress_callback(HWND window, char ch, int vk, int state, void *data) |
137 { | 252 { |
138 FILE *fp = fopen("log", "a+"); | 253 char tmpbuf[100]; |
139 | 254 if ( ch ) |
140 if(fp) | 255 sprintf( tmpbuf, "Key: %c(%d) Modifiers: %s(%d)", ch, ch, resolve_keymodifiers(state), state ); |
141 { | 256 else |
142 fprintf(fp,"got keypress %c 0x%x %d %d\n", ch, ch, vk, state); | 257 sprintf( tmpbuf, "Key: %s(%d) Modifiers: %s(%d)", resolve_keyname(vk), vk, resolve_keymodifiers(state), state ); |
143 fclose(fp); | 258 dw_window_set_text( status1, tmpbuf); |
144 } | |
145 return 0; | 259 return 0; |
146 } | 260 } |
147 | 261 |
148 int DWSIGNAL exit_callback(HWND window, void *data) | 262 int DWSIGNAL exit_callback(HWND window, void *data) |
149 { | 263 { |
289 pagebox = dw_box_new(BOXHORZ, 2); | 403 pagebox = dw_box_new(BOXHORZ, 2); |
290 dw_box_pack_start( notebookbox2, pagebox, 0, 0, TRUE, TRUE, 0); | 404 dw_box_pack_start( notebookbox2, pagebox, 0, 0, TRUE, TRUE, 0); |
291 /* now a status area under this box */ | 405 /* now a status area under this box */ |
292 status = dw_status_text_new("", 0); | 406 status = dw_status_text_new("", 0); |
293 dw_box_pack_start( notebookbox2, status, 100, 20, TRUE, FALSE, 1); | 407 dw_box_pack_start( notebookbox2, status, 100, 20, TRUE, FALSE, 1); |
408 /* and another one */ | |
409 status1 = dw_status_text_new("", 0); | |
410 dw_box_pack_start( notebookbox2, status1, 100, 20, TRUE, FALSE, 1); | |
294 | 411 |
295 /* create render box for number pixmap */ | 412 /* create render box for number pixmap */ |
296 textbox1 = dw_render_new( 100 ); | 413 textbox1 = dw_render_new( 100 ); |
297 dw_window_set_font(textbox1, FIXEDFONT); | 414 dw_window_set_font(textbox1, FIXEDFONT); |
298 dw_font_text_extents(textbox1, NULL, "O", &font_width, &font_height); | 415 dw_font_text_extents(textbox1, NULL, "O", &font_width, &font_height); |
299 vscrollbox = dw_box_new(BOXVERT, 0); | 416 vscrollbox = dw_box_new(BOXVERT, 0); |
300 dw_box_pack_start(vscrollbox, textbox1, (font_width*(width1+1)), font_height*rows, FALSE, TRUE, 0); | 417 dw_box_pack_start(vscrollbox, textbox1, font_width*width1, font_height*rows, FALSE, TRUE, 0); |
301 dw_box_pack_start(vscrollbox, 0, (font_width*(width1+1)), SCROLLBARWIDTH, FALSE, FALSE, 0); | 418 dw_box_pack_start(vscrollbox, 0, (font_width*(width1+1)), SCROLLBARWIDTH, FALSE, FALSE, 0); |
302 dw_box_pack_start(pagebox, vscrollbox, 0, 0, FALSE, TRUE, 0); | 419 dw_box_pack_start(pagebox, vscrollbox, 0, 0, FALSE, TRUE, 0); |
303 | 420 |
304 /* create render box for gap pixmap */ | 421 /* create render box for gap pixmap */ |
305 /* create box for filecontents and horz scrollbar */ | 422 /* create box for filecontents and horz scrollbar */ |
331 dw_signal_connect(textbox1, "expose_event", DW_SIGNAL_FUNC(text_expose), NULL); | 448 dw_signal_connect(textbox1, "expose_event", DW_SIGNAL_FUNC(text_expose), NULL); |
332 dw_signal_connect(textbox2, "expose_event", DW_SIGNAL_FUNC(text_expose), NULL); | 449 dw_signal_connect(textbox2, "expose_event", DW_SIGNAL_FUNC(text_expose), NULL); |
333 dw_signal_connect(textbox2, "configure_event", DW_SIGNAL_FUNC(configure_event), text2pm); | 450 dw_signal_connect(textbox2, "configure_event", DW_SIGNAL_FUNC(configure_event), text2pm); |
334 dw_signal_connect(hscrollbar, "value_changed", DW_SIGNAL_FUNC(scrollbar_valuechanged), (void *)status); | 451 dw_signal_connect(hscrollbar, "value_changed", DW_SIGNAL_FUNC(scrollbar_valuechanged), (void *)status); |
335 dw_signal_connect(vscrollbar, "value_changed", DW_SIGNAL_FUNC(scrollbar_valuechanged), (void *)status); | 452 dw_signal_connect(vscrollbar, "value_changed", DW_SIGNAL_FUNC(scrollbar_valuechanged), (void *)status); |
336 dw_signal_connect(textbox1, "key_press_event", DW_SIGNAL_FUNC(keypress_callback), text1pm); | 453 |
337 dw_signal_connect(textbox2, "key_press_event", DW_SIGNAL_FUNC(keypress_callback), text2pm); | 454 dw_signal_connect(mainwindow, "key_press_event", DW_SIGNAL_FUNC(keypress_callback), NULL); |
338 } | 455 } |
339 | 456 |
340 void tree_add(void) | 457 void tree_add(void) |
341 { | 458 { |
342 HWND t1,t2,t3; | 459 HWND t1,t2,t3; |
460 int depth = dw_color_depth(); | |
461 unsigned long fileicon,foldericon; | |
343 | 462 |
344 /* create a box to pack into the notebook page */ | 463 /* create a box to pack into the notebook page */ |
345 treebox = dw_box_new(BOXHORZ, 2); | 464 treebox = dw_box_new(BOXHORZ, 2); |
346 dw_box_pack_start( notebookbox3, treebox, 500, 200, TRUE, TRUE, 0); | 465 dw_box_pack_start( notebookbox3, treebox, 500, 200, TRUE, TRUE, 0); |
347 | 466 |
348 /* now a tree area under this box */ | 467 /* now a tree area under this box */ |
349 tree = dw_tree_new(0); | 468 tree = dw_tree_new(0); |
350 dw_box_pack_start( notebookbox3, tree, 500, 200, TRUE, FALSE, 1); | 469 dw_box_pack_start( notebookbox3, tree, 500, 200, TRUE, FALSE, 1); |
351 | 470 |
352 t1 = dw_tree_insert(tree, "tree item 1", 0, 0, 0 ); | 471 foldericon = dw_icon_load_from_file( FOLDER_ICON_NAME ); |
353 t2 = dw_tree_insert(tree, "tree item 2", 0, 0, 0 ); | 472 fileicon = dw_icon_load_from_file( FILE_ICON_NAME ); |
354 t3 = dw_tree_insert(tree, "tree item 3", 0, t2, 0 ); | 473 |
474 t1 = dw_tree_insert(tree, "tree item 1", foldericon, NULL, NULL ); | |
475 t2 = dw_tree_insert(tree, "tree item 2", foldericon, NULL, NULL ); | |
476 t3 = dw_tree_insert(tree, "tree item 3", fileicon, t2, NULL ); | |
355 | 477 |
356 /* | 478 /* |
357 dw_signal_connect(textbox1, "expose_event", DW_SIGNAL_FUNC(text_expose), NULL); | 479 dw_signal_connect(textbox1, "expose_event", DW_SIGNAL_FUNC(text_expose), NULL); |
358 dw_signal_connect(textbox2, "expose_event", DW_SIGNAL_FUNC(text_expose), NULL); | 480 dw_signal_connect(textbox2, "expose_event", DW_SIGNAL_FUNC(text_expose), NULL); |
359 dw_signal_connect(textbox2, "configure_event", DW_SIGNAL_FUNC(configure_event), text2pm); | 481 dw_signal_connect(textbox2, "configure_event", DW_SIGNAL_FUNC(configure_event), text2pm); |