Mercurial > dwindows
comparison dwtest.c @ 2850:2934b2fdcd8e
Mac/iOS: Add return value to dw_window_set_bitmap(_from_data) in resource
refactoring. They now return DW_ERROR_NONE on success, DW_ERROR_UNKNOWN on
invalid parameters and DW_ERROR_GENERAL when failing to load the bitmap.
This change came when I discovered Xcode UI does not allow subfolders in the
copied resources. dwtest has been modified to function in either way... from
a compiled app bundle or from the build directory.
The API change should not affect apps, but may require changes to other
language bindings.
Follow ups for the other platforms will be coming shortly.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 14 Nov 2022 20:38:19 +0000 |
parents | 444031116159 |
children | fdd21139c07f |
comparison
equal
deleted
inserted
replaced
2849:de56f1d265b3 | 2850:2934b2fdcd8e |
---|---|
18 #endif | 18 #endif |
19 | 19 |
20 /* Select a fixed width font for our platform */ | 20 /* Select a fixed width font for our platform */ |
21 #ifdef __OS2__ | 21 #ifdef __OS2__ |
22 #define FIXEDFONT "5.System VIO" | 22 #define FIXEDFONT "5.System VIO" |
23 #define FOLDER_ICON_NAME "os2\\folder" | 23 #define PLATFORMFOLDER "os2\\" |
24 #define FILE_ICON_NAME "os2\\file" | |
25 #elif defined(__WIN32__) | 24 #elif defined(__WIN32__) |
26 #define FIXEDFONT "10.Lucida Console" | 25 #define FIXEDFONT "10.Lucida Console" |
27 #define FOLDER_ICON_NAME "win\\folder" | 26 #define PLATFORMFOLDER "win\\" |
28 #define FILE_ICON_NAME "win\\file" | |
29 #elif defined(__MAC__) | 27 #elif defined(__MAC__) |
30 #define FIXEDFONT "9.Monaco" | 28 #define FIXEDFONT "9.Monaco" |
31 #define FOLDER_ICON_NAME "mac/folder" | 29 #define PLATFORMFOLDER "mac/" |
32 #define FILE_ICON_NAME "mac/file" | |
33 #elif defined(__IOS__) | 30 #elif defined(__IOS__) |
34 #define FIXEDFONT "9.Monaco" | 31 #define FIXEDFONT "9.Monaco" |
35 #define FOLDER_ICON_NAME "folder" | |
36 #define FILE_ICON_NAME "file" | |
37 #elif defined(__ANDROID__) | 32 #elif defined(__ANDROID__) |
38 #define FIXEDFONT "10.Monospace" | 33 #define FIXEDFONT "10.Monospace" |
39 #define FOLDER_ICON_NAME "folder" | |
40 #define FILE_ICON_NAME "file" | |
41 #elif GTK_MAJOR_VERSION > 1 | 34 #elif GTK_MAJOR_VERSION > 1 |
42 #define FIXEDFONT "10.monospace" | 35 #define FIXEDFONT "10.monospace" |
43 #define FOLDER_ICON_NAME "gtk/folder" | 36 #define PLATFORMFOLDER "gtk/" |
44 #define FILE_ICON_NAME "gtk/file" | |
45 #else | 37 #else |
46 #define FIXEDFONT "fixed" | 38 #define FIXEDFONT "fixed" |
47 #define FOLDER_ICON_NAME "gtk/folder" | |
48 #define FILE_ICON_NAME "gtk/file" | |
49 #endif | 39 #endif |
40 | |
41 char fileiconpath[1025] = "file"; | |
42 char foldericonpath[1025] = "folder"; | |
50 | 43 |
51 #define MAX_WIDGETS 20 | 44 #define MAX_WIDGETS 20 |
52 | 45 |
53 unsigned long flStyle = DW_FCF_SYSMENU | DW_FCF_TITLEBAR | | 46 unsigned long flStyle = DW_FCF_SYSMENU | DW_FCF_TITLEBAR | |
54 DW_FCF_TASKLIST | DW_FCF_DLGBORDER; | 47 DW_FCF_TASKLIST | DW_FCF_DLGBORDER; |
696 { | 689 { |
697 static int isfoldericon = 1; | 690 static int isfoldericon = 1; |
698 | 691 |
699 if(isfoldericon) | 692 if(isfoldericon) |
700 { | 693 { |
701 isfoldericon = 0; | 694 isfoldericon = 0; |
702 dw_window_set_bitmap(window, 0, FILE_ICON_NAME); | 695 dw_window_set_bitmap(window, 0, fileiconpath); |
703 dw_window_set_tooltip(window, "File Icon"); | 696 dw_window_set_tooltip(window, "File Icon"); |
704 } | 697 } |
705 else | 698 else |
706 { | 699 { |
707 isfoldericon = 1; | 700 isfoldericon = 1; |
708 dw_window_set_bitmap_from_data(window, 0, folder_ico, sizeof(folder_ico)); | 701 dw_window_set_bitmap_from_data(window, 0, folder_ico, sizeof(folder_ico)); |
709 dw_window_set_tooltip(window, "Folder Icon"); | 702 dw_window_set_tooltip(window, "Folder Icon"); |
710 } | 703 } |
711 return 0; | 704 return 0; |
712 } | 705 } |
713 | 706 |
714 int DWSIGNAL percent_button_box_callback(HWND window, void *data) | 707 int DWSIGNAL percent_button_box_callback(HWND window, void *data) |
1646 * Create our file toolbar boxes... | 1639 * Create our file toolbar boxes... |
1647 */ | 1640 */ |
1648 buttonboxperm = dw_box_new(DW_VERT, 0); | 1641 buttonboxperm = dw_box_new(DW_VERT, 0); |
1649 dw_box_pack_start(buttonsbox, buttonboxperm, 25, 0, FALSE, TRUE, 2); | 1642 dw_box_pack_start(buttonsbox, buttonboxperm, 25, 0, FALSE, TRUE, 2); |
1650 dw_window_set_color(buttonboxperm, DW_CLR_WHITE, DW_CLR_WHITE); | 1643 dw_window_set_color(buttonboxperm, DW_CLR_WHITE, DW_CLR_WHITE); |
1651 abutton1 = dw_bitmapbutton_new_from_file("Top Button", 0, FILE_ICON_NAME); | 1644 abutton1 = dw_bitmapbutton_new_from_file("Top Button", 0, fileiconpath); |
1652 dw_box_pack_start(buttonboxperm, abutton1, 100, 30, FALSE, FALSE, 0 ); | 1645 dw_box_pack_start(buttonboxperm, abutton1, 100, 30, FALSE, FALSE, 0 ); |
1653 dw_signal_connect(abutton1, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(button_callback), NULL); | 1646 dw_signal_connect(abutton1, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(button_callback), NULL); |
1654 dw_box_pack_start(buttonboxperm, 0, 25, 5, FALSE, FALSE, 0); | 1647 dw_box_pack_start(buttonboxperm, 0, 25, 5, FALSE, FALSE, 0); |
1655 abutton2 = dw_bitmapbutton_new_from_data( "Folder Icon", 0, folder_ico, sizeof(folder_ico)); | 1648 abutton2 = dw_bitmapbutton_new_from_data( "Folder Icon", 0, folder_ico, sizeof(folder_ico)); |
1656 dw_box_pack_start(buttonsbox, abutton2, 25, 25, FALSE, FALSE, 0); | 1649 dw_box_pack_start(buttonsbox, abutton2, 25, 25, FALSE, FALSE, 0); |
2222 menu_add(); | 2215 menu_add(); |
2223 | 2216 |
2224 notebookbox = dw_box_new(DW_VERT, 5); | 2217 notebookbox = dw_box_new(DW_VERT, 5); |
2225 dw_box_pack_start(mainwindow, notebookbox, 0, 0, TRUE, TRUE, 0); | 2218 dw_box_pack_start(mainwindow, notebookbox, 0, 0, TRUE, TRUE, 0); |
2226 | 2219 |
2227 foldericon = dw_icon_load_from_file(FOLDER_ICON_NAME); | 2220 /* First try the current directory */ |
2228 fileicon = dw_icon_load_from_file(FILE_ICON_NAME); | 2221 foldericon = dw_icon_load_from_file(foldericonpath); |
2229 | 2222 fileicon = dw_icon_load_from_file(fileiconpath); |
2223 | |
2224 #ifdef PLATFORMFOLDER | |
2225 /* In case we are running from the build directory... | |
2226 * also check the appropriate platform subfolder | |
2227 */ | |
2228 if(!foldericon) | |
2229 { | |
2230 strncpy(foldericonpath, PLATFORMFOLDER "folder", 1024); | |
2231 foldericon = dw_icon_load_from_file(foldericonpath); | |
2232 } | |
2233 if(!fileicon) | |
2234 { | |
2235 strncpy(foldericonpath, PLATFORMFOLDER "file", 1024); | |
2236 fileicon = dw_icon_load_from_file(fileiconpath); | |
2237 } | |
2238 #endif | |
2239 | |
2240 /* Finally try from the platform application directory */ | |
2230 if(!foldericon && !fileicon) | 2241 if(!foldericon && !fileicon) |
2231 { | 2242 { |
2232 char *appdir = dw_app_dir(); | 2243 char *appdir = dw_app_dir(); |
2233 char pathbuff[1025] = {0}; | 2244 char pathbuff[1025] = {0}; |
2234 int pos = (int)strlen(appdir); | 2245 int pos = (int)strlen(appdir); |
2235 | 2246 |
2236 strncpy(pathbuff, appdir, 1024); | 2247 strncpy(pathbuff, appdir, 1024); |
2237 pathbuff[pos] = DW_DIR_SEPARATOR; | 2248 pathbuff[pos] = DW_DIR_SEPARATOR; |
2238 pos++; | 2249 pos++; |
2239 strncpy(&pathbuff[pos], FOLDER_ICON_NAME, 1024-pos); | 2250 strncpy(&pathbuff[pos], "folder", 1024-pos); |
2240 foldericon = dw_icon_load_from_file(pathbuff); | 2251 foldericon = dw_icon_load_from_file(pathbuff); |
2241 strncpy(&pathbuff[pos], FILE_ICON_NAME, 1024-pos); | 2252 if(foldericon) |
2253 strncpy(foldericonpath, pathbuff, 1024); | |
2254 strncpy(&pathbuff[pos], "file", 1024-pos); | |
2242 fileicon = dw_icon_load_from_file(pathbuff); | 2255 fileicon = dw_icon_load_from_file(pathbuff); |
2256 if(fileicon) | |
2257 strncpy(fileiconpath, pathbuff, 1024); | |
2243 } | 2258 } |
2244 | 2259 |
2245 notebook = dw_notebook_new(1, TRUE); | 2260 notebook = dw_notebook_new(1, TRUE); |
2246 dw_box_pack_start(notebookbox, notebook, 100, 100, TRUE, TRUE, 0); | 2261 dw_box_pack_start(notebookbox, notebook, 100, 100, TRUE, TRUE, 0); |
2247 dw_signal_connect(notebook, DW_SIGNAL_SWITCH_PAGE, DW_SIGNAL_FUNC(switch_page_cb), NULL); | 2262 dw_signal_connect(notebook, DW_SIGNAL_SWITCH_PAGE, DW_SIGNAL_FUNC(switch_page_cb), NULL); |