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