1 module allegro5.allegro_native_dialog; 2 3 version(ALLEGRO_NO_PRAGMA_LIB) {} 4 else 5 { 6 pragma(lib, "allegro_dialog"); 7 } 8 9 import allegro5.allegro; 10 import allegro5.internal.da5; 11 12 extern (C) 13 { 14 alias ALLEGRO_GTK_TOPLEVEL_INTERNAL ALLEGRO_GTK_TOPLEVEL; 15 16 struct ALLEGRO_FILECHOOSER {}; 17 struct ALLEGRO_TEXTLOG {}; 18 struct ALLEGRO_MENU {}; 19 20 struct ALLEGRO_MENU_INFO 21 { 22 const_char* caption; 23 ushort id; 24 int flags; 25 ALLEGRO_BITMAP* icon; 26 } 27 28 template ALLEGRO_MENU_SEPARATOR() 29 { 30 const ALLEGRO_MENU_SEPARATOR = ALLEGRO_MENU_INFO(null, -1, 0, null); 31 } 32 33 template ALLEGRO_START_OF_MENU(const_char[] caption, int id) 34 { 35 const ALLEGRO_START_OF_MENU = ALLEGRO_MENU_INFO(mixin(`"` ~ caption ~ `->\0"`), id, 0, NULL); 36 } 37 38 template ALLEGRO_END_OF_MENU() 39 { 40 const ALLEGRO_END_OF_MENU = ALLEGRO_MENU_INFO(null, 0, 0, null); 41 } 42 43 bool al_init_native_dialog_addon(); 44 void al_shutdown_native_dialog_addon(); 45 ALLEGRO_FILECHOOSER* al_create_native_file_dialog(in ALLEGRO_PATH* initial_path, in char* title, in char* patterns, int mode); 46 void al_show_native_file_dialog(ALLEGRO_DISPLAY* display, ALLEGRO_FILECHOOSER* dialog); 47 int al_get_native_file_dialog_count(in ALLEGRO_FILECHOOSER* dialog); 48 ALLEGRO_PATH* al_get_native_file_dialog_path(in ALLEGRO_FILECHOOSER* dialog, size_t index); 49 void al_destroy_native_file_dialog(ALLEGRO_FILECHOOSER* dialog); 50 51 int al_show_native_message_box(ALLEGRO_DISPLAY* display, in char* title, in char* heading, in char* text, in char* buttons, int flags); 52 53 ALLEGRO_TEXTLOG* al_open_native_text_log(in char* title, int flags); 54 void al_close_native_text_log(ALLEGRO_TEXTLOG* textlog); 55 void al_append_native_text_log(ALLEGRO_TEXTLOG* textlog, in char* format, ...); 56 ALLEGRO_EVENT_SOURCE* al_get_native_text_log_event_source(ALLEGRO_TEXTLOG* textlog); 57 58 /* creating/modifying menus */ 59 ALLEGRO_MENU* al_create_menu();; 60 ALLEGRO_MENU* al_create_popup_menu();; 61 ALLEGRO_MENU* al_build_menu(ALLEGRO_MENU_INFO* info); 62 int al_append_menu_item(ALLEGRO_MENU* parent, in char* title, ushort id, int flags, ALLEGRO_BITMAP* icon, ALLEGRO_MENU* submenu); 63 int al_insert_menu_item(ALLEGRO_MENU* parent, int pos, in char* title, ushort id, int flags, ALLEGRO_BITMAP* icon, ALLEGRO_MENU* submenu); 64 bool al_remove_menu_item(ALLEGRO_MENU* menu, int pos); 65 ALLEGRO_MENU* al_clone_menu(ALLEGRO_MENU* menu); 66 ALLEGRO_MENU* al_clone_menu_for_popup(ALLEGRO_MENU* menu); 67 void al_destroy_menu(ALLEGRO_MENU* menu); 68 69 /* properties */ 70 const_char* al_get_menu_item_caption(ALLEGRO_MENU* menu, int pos); 71 void al_set_menu_item_caption(ALLEGRO_MENU* menu, int pos, in char* caption); 72 int al_get_menu_item_flags(ALLEGRO_MENU* menu, int pos); 73 void al_set_menu_item_flags(ALLEGRO_MENU* menu, int pos, int flags); 74 int al_toggle_menu_item_flags(ALLEGRO_MENU* menu, int pos, int flags); 75 ALLEGRO_BITMAP* al_get_menu_item_icon(ALLEGRO_MENU* menu, int pos); 76 void al_set_menu_item_icon(ALLEGRO_MENU* menu, int pos, ALLEGRO_BITMAP* icon); 77 78 /* querying menus */ 79 ALLEGRO_MENU* al_find_menu(ALLEGRO_MENU* haystack, ushort id); 80 bool al_find_menu_item(ALLEGRO_MENU* haystack, ushort id, ALLEGRO_MENU** menu, int* index); 81 82 /* menu events */ 83 ALLEGRO_EVENT_SOURCE* al_get_default_menu_event_source();; 84 ALLEGRO_EVENT_SOURCE* al_enable_menu_event_source(ALLEGRO_MENU* menu); 85 void al_disable_menu_event_source(ALLEGRO_MENU* menu); 86 87 /* displaying menus */ 88 ALLEGRO_MENU* al_get_display_menu(ALLEGRO_DISPLAY* display); 89 bool al_set_display_menu(ALLEGRO_DISPLAY* display, ALLEGRO_MENU* menu); 90 bool al_popup_menu(ALLEGRO_MENU* popup, ALLEGRO_DISPLAY* display); 91 ALLEGRO_MENU* al_remove_display_menu(ALLEGRO_DISPLAY* display); 92 93 uint al_get_allegro_native_dialog_version(); 94 95 enum 96 { 97 ALLEGRO_FILECHOOSER_FILE_MUST_EXIST = 1, 98 ALLEGRO_FILECHOOSER_SAVE = 2, 99 ALLEGRO_FILECHOOSER_FOLDER = 4, 100 ALLEGRO_FILECHOOSER_PICTURES = 8, 101 ALLEGRO_FILECHOOSER_SHOW_HIDDEN = 16, 102 ALLEGRO_FILECHOOSER_MULTIPLE = 32 103 } 104 105 enum 106 { 107 ALLEGRO_MESSAGEBOX_WARN = 1<<0, 108 ALLEGRO_MESSAGEBOX_ERROR = 1<<1, 109 ALLEGRO_MESSAGEBOX_OK_CANCEL = 1<<2, 110 ALLEGRO_MESSAGEBOX_YES_NO = 1<<3, 111 ALLEGRO_MESSAGEBOX_QUESTION = 1<<4 112 } 113 114 enum 115 { 116 ALLEGRO_TEXTLOG_NO_CLOSE = 1<<0, 117 ALLEGRO_TEXTLOG_MONOSPACE = 1<<1 118 } 119 120 enum 121 { 122 ALLEGRO_EVENT_NATIVE_DIALOG_CLOSE = 600, 123 ALLEGRO_EVENT_MENU_CLICK = 601 124 } 125 126 enum 127 { 128 ALLEGRO_MENU_ITEM_ENABLED = 0, 129 ALLEGRO_MENU_ITEM_CHECKBOX = 1, 130 ALLEGRO_MENU_ITEM_CHECKED = 2, 131 ALLEGRO_MENU_ITEM_DISABLED = 4 132 } 133 }