Mercurial > dwindows
changeset 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 | d2392cf845e4 |
children | caed245ea8a1 |
files | dwtest.c |
diffstat | 1 files changed, 136 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/dwtest.c Thu Mar 27 06:32:53 2003 +0000 +++ b/dwtest.c Thu Mar 27 07:05:56 2003 +0000 @@ -6,12 +6,20 @@ /* Select a fixed width font for our platform */ #ifdef __OS2__ #define FIXEDFONT "5.System VIO" +#define FOLDER_ICON_NAME "os2\folder" +#define FILE_ICON_NAME "os2\file" #elif defined(__WIN32__) #define FIXEDFONT "10.Terminal" +#define FOLDER_ICON_NAME "win\folder" +#define FILE_ICON_NAME "win\file" #elif GTK_MAJOR_VERSION > 1 #define FIXEDFONT "monospace 10" +#define FOLDER_ICON_NAME "gtk/folder" +#define FILE_ICON_NAME "gtk/file" #else #define FIXEDFONT "fixed" +#define FOLDER_ICON_NAME "gtk/folder" +#define FILE_ICON_NAME "gtk/file" #endif #define SCROLLBARWIDTH 14 @@ -31,7 +39,7 @@ notebook, vscrollbar, hscrollbar, - status, + status, status1, stext, tree, pagebox, @@ -55,6 +63,113 @@ FILE *fp=NULL; char **lp; +char *resolve_keyname( int vk ) +{ + char *keyname; + switch(vk) + { + case VK_LBUTTON : keyname = "VK_LBUTTON"; break; + case VK_RBUTTON : keyname = "VK_RBUTTON"; break; + case VK_CANCEL : keyname = "VK_CANCEL"; break; + case VK_MBUTTON : keyname = "VK_MBUTTON"; break; +/* case VK_BACK : keyname = "VK_BACK"; break;*/ + case VK_TAB : keyname = "VK_TAB"; break; + case VK_CLEAR : keyname = "VK_CLEAR"; break; + case VK_RETURN : keyname = "VK_RETURN"; break; + case VK_MENU : keyname = "VK_MENU"; break; + case VK_PAUSE : keyname = "VK_PAUSE"; break; + case VK_CAPITAL : keyname = "VK_CAPITAL"; break; + case VK_ESCAPE : keyname = "VK_ESCAPE"; break; + case VK_SPACE : keyname = "VK_SPACE"; break; + case VK_PRIOR : keyname = "VK_PRIOR"; break; + case VK_NEXT : keyname = "VK_NEXT"; break; + case VK_END : keyname = "VK_END"; break; + case VK_HOME : keyname = "VK_HOME"; break; + case VK_LEFT : keyname = "VK_LEFT"; break; + case VK_UP : keyname = "VK_UP"; break; + case VK_RIGHT : keyname = "VK_RIGHT"; break; + case VK_DOWN : keyname = "VK_DOWN"; break; + case VK_SELECT : keyname = "VK_SELECT"; break; + case VK_PRINT : keyname = "VK_PRINT"; break; + case VK_EXECUTE : keyname = "VK_EXECUTE"; break; + case VK_SNAPSHOT: keyname = "VK_SNAPSHOT"; break; + case VK_INSERT : keyname = "VK_INSERT"; break; + case VK_DELETE : keyname = "VK_DELETE"; break; + case VK_HELP : keyname = "VK_HELP"; break; + case VK_LWIN : keyname = "VK_LWIN"; break; + case VK_RWIN : keyname = "VK_RWIN"; break; + case VK_NUMPAD0 : keyname = "VK_NUMPAD0"; break; + case VK_NUMPAD1 : keyname = "VK_NUMPAD1"; break; + case VK_NUMPAD2 : keyname = "VK_NUMPAD2"; break; + case VK_NUMPAD3 : keyname = "VK_NUMPAD3"; break; + case VK_NUMPAD4 : keyname = "VK_NUMPAD4"; break; + case VK_NUMPAD5 : keyname = "VK_NUMPAD5"; break; + case VK_NUMPAD6 : keyname = "VK_NUMPAD6"; break; + case VK_NUMPAD7 : keyname = "VK_NUMPAD7"; break; + case VK_NUMPAD8 : keyname = "VK_NUMPAD8"; break; + case VK_NUMPAD9 : keyname = "VK_NUMPAD9"; break; + case VK_MULTIPLY: keyname = "VK_MULTIPLY"; break; + case VK_ADD : keyname = "VK_ADD"; break; + case VK_SEPARATOR: keyname = "VK_SEPARATOR"; break; + case VK_SUBTRACT: keyname = "VK_SUBTRACT"; break; + case VK_DECIMAL : keyname = "VK_DECIMAL"; break; + case VK_DIVIDE : keyname = "VK_DIVIDE"; break; + case VK_F1 : keyname = "VK_F1"; break; + case VK_F2 : keyname = "VK_F2"; break; + case VK_F3 : keyname = "VK_F3"; break; + case VK_F4 : keyname = "VK_F4"; break; + case VK_F5 : keyname = "VK_F5"; break; + case VK_F6 : keyname = "VK_F6"; break; + case VK_F7 : keyname = "VK_F7"; break; + case VK_F8 : keyname = "VK_F8"; break; + case VK_F9 : keyname = "VK_F9"; break; + case VK_F10 : keyname = "VK_F10"; break; + case VK_F11 : keyname = "VK_F11"; break; + case VK_F12 : keyname = "VK_F12"; break; + case VK_F13 : keyname = "VK_F13"; break; + case VK_F14 : keyname = "VK_F14"; break; + case VK_F15 : keyname = "VK_F15"; break; + case VK_F16 : keyname = "VK_F16"; break; + case VK_F17 : keyname = "VK_F17"; break; + case VK_F18 : keyname = "VK_F18"; break; + case VK_F19 : keyname = "VK_F19"; break; + case VK_F20 : keyname = "VK_F20"; break; + case VK_F21 : keyname = "VK_F21"; break; + case VK_F22 : keyname = "VK_F22"; break; + case VK_F23 : keyname = "VK_F23"; break; + case VK_F24 : keyname = "VK_F24"; break; + case VK_NUMLOCK : keyname = "VK_NUMLOCK"; break; + case VK_SCROLL : keyname = "VK_SCROLL"; break; + case VK_LSHIFT : keyname = "VK_LSHIFT"; break; + case VK_RSHIFT : keyname = "VK_RSHIFT"; break; + case VK_LCONTROL: keyname = "VK_LCONTROL"; break; + case VK_RCONTROL: keyname = "VK_RCONTROL"; break; +/* case VK_LMENU : keyname = "VK_LMENU"; break; */ +/* case VK_RMENU : keyname = "VK_RMENU"; break;*/ + default: keyname = "<unknown>"; break; + } + return keyname; +} + +char *resolve_keymodifiers( int mask ) +{ + if ( (mask & KC_CTRL) && (mask & KC_SHIFT) && (mask && KC_ALT) ) + return "KC_CTRL KC_SHIFT KC_ALT"; + else if ( (mask & KC_CTRL) && (mask & KC_SHIFT) ) + return "KC_CTRL KC_SHIFT"; + else if ( (mask & KC_CTRL) && (mask & KC_ALT) ) + return "KC_CTRL KC_ALT"; + else if ( (mask & KC_SHIFT) && (mask & KC_ALT) ) + return "KC_SHIFT KC_ALT"; + else if ( (mask & KC_SHIFT) ) + return "KC_SHIFT"; + else if ( (mask & KC_CTRL) ) + return "KC_CTRL"; + else if ( (mask & KC_ALT) ) + return "KC_ALT"; + else return "none"; +} + /* This gets called when a part of the graph needs to be repainted. */ int DWSIGNAL text_expose(HWND hwnd, DWExpose *exp, void *data) { @@ -135,13 +250,12 @@ int DWSIGNAL keypress_callback(HWND window, char ch, int vk, int state, void *data) { - FILE *fp = fopen("log", "a+"); - - if(fp) - { - fprintf(fp,"got keypress %c 0x%x %d %d\n", ch, ch, vk, state); - fclose(fp); - } + char tmpbuf[100]; + if ( ch ) + sprintf( tmpbuf, "Key: %c(%d) Modifiers: %s(%d)", ch, ch, resolve_keymodifiers(state), state ); + else + sprintf( tmpbuf, "Key: %s(%d) Modifiers: %s(%d)", resolve_keyname(vk), vk, resolve_keymodifiers(state), state ); + dw_window_set_text( status1, tmpbuf); return 0; } @@ -291,13 +405,16 @@ /* now a status area under this box */ status = dw_status_text_new("", 0); dw_box_pack_start( notebookbox2, status, 100, 20, TRUE, FALSE, 1); + /* and another one */ + status1 = dw_status_text_new("", 0); + dw_box_pack_start( notebookbox2, status1, 100, 20, TRUE, FALSE, 1); /* create render box for number pixmap */ textbox1 = dw_render_new( 100 ); dw_window_set_font(textbox1, FIXEDFONT); dw_font_text_extents(textbox1, NULL, "O", &font_width, &font_height); vscrollbox = dw_box_new(BOXVERT, 0); - dw_box_pack_start(vscrollbox, textbox1, (font_width*(width1+1)), font_height*rows, FALSE, TRUE, 0); + dw_box_pack_start(vscrollbox, textbox1, font_width*width1, font_height*rows, FALSE, TRUE, 0); dw_box_pack_start(vscrollbox, 0, (font_width*(width1+1)), SCROLLBARWIDTH, FALSE, FALSE, 0); dw_box_pack_start(pagebox, vscrollbox, 0, 0, FALSE, TRUE, 0); @@ -333,13 +450,15 @@ dw_signal_connect(textbox2, "configure_event", DW_SIGNAL_FUNC(configure_event), text2pm); dw_signal_connect(hscrollbar, "value_changed", DW_SIGNAL_FUNC(scrollbar_valuechanged), (void *)status); dw_signal_connect(vscrollbar, "value_changed", DW_SIGNAL_FUNC(scrollbar_valuechanged), (void *)status); - dw_signal_connect(textbox1, "key_press_event", DW_SIGNAL_FUNC(keypress_callback), text1pm); - dw_signal_connect(textbox2, "key_press_event", DW_SIGNAL_FUNC(keypress_callback), text2pm); + + dw_signal_connect(mainwindow, "key_press_event", DW_SIGNAL_FUNC(keypress_callback), NULL); } void tree_add(void) { HWND t1,t2,t3; + int depth = dw_color_depth(); + unsigned long fileicon,foldericon; /* create a box to pack into the notebook page */ treebox = dw_box_new(BOXHORZ, 2); @@ -349,9 +468,12 @@ tree = dw_tree_new(0); dw_box_pack_start( notebookbox3, tree, 500, 200, TRUE, FALSE, 1); - t1 = dw_tree_insert(tree, "tree item 1", 0, 0, 0 ); - t2 = dw_tree_insert(tree, "tree item 2", 0, 0, 0 ); - t3 = dw_tree_insert(tree, "tree item 3", 0, t2, 0 ); + foldericon = dw_icon_load_from_file( FOLDER_ICON_NAME ); + fileicon = dw_icon_load_from_file( FILE_ICON_NAME ); + + t1 = dw_tree_insert(tree, "tree item 1", foldericon, NULL, NULL ); + t2 = dw_tree_insert(tree, "tree item 2", foldericon, NULL, NULL ); + t3 = dw_tree_insert(tree, "tree item 3", fileicon, t2, NULL ); /* dw_signal_connect(textbox1, "expose_event", DW_SIGNAL_FUNC(text_expose), NULL);