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);