Mercurial > foo_out_sdl
comparison foosdk/sdk/foobar2000/SDK/menu_helpers.h @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:e9bb126753e7 | 1:20d02a178406 |
|---|---|
| 1 #pragma once | |
| 2 #include "menu.h" | |
| 3 #include "contextmenu.h" | |
| 4 | |
| 5 namespace menu_helpers { | |
| 6 #ifdef _WIN32 | |
| 7 void win32_auto_mnemonics(HMENU menu); | |
| 8 #endif | |
| 9 | |
| 10 bool run_command_context(const GUID & p_command,const GUID & p_subcommand,const pfc::list_base_const_t<metadb_handle_ptr> & data); | |
| 11 bool run_command_context_ex(const GUID & p_command,const GUID & p_subcommand,const pfc::list_base_const_t<metadb_handle_ptr> & data,const GUID & caller); | |
| 12 bool run_command_context_playlist(const GUID & p_command,const GUID & p_subcommand); | |
| 13 bool run_command_context_now_playing(const GUID & p_command,const GUID & p_subcommand); | |
| 14 | |
| 15 bool test_command_context(const GUID & p_guid); | |
| 16 | |
| 17 bool is_command_checked_context(const GUID & p_command,const GUID & p_subcommand,const pfc::list_base_const_t<metadb_handle_ptr> & data); | |
| 18 bool is_command_checked_context_playlist(const GUID & p_command,const GUID & p_subcommand); | |
| 19 | |
| 20 bool find_command_by_name(const char * p_name,service_ptr_t<contextmenu_item> & p_item,unsigned & p_index); | |
| 21 bool find_command_by_name(const char * p_name,GUID & p_command); | |
| 22 | |
| 23 bool context_get_description(const GUID& p_guid,pfc::string_base & out); | |
| 24 | |
| 25 bool guid_from_name(const char * p_name,unsigned p_name_len,GUID & p_out); | |
| 26 bool name_from_guid(const GUID & p_guid,pfc::string_base & p_out); | |
| 27 | |
| 28 class guid_to_name_table | |
| 29 { | |
| 30 public: | |
| 31 guid_to_name_table(); | |
| 32 ~guid_to_name_table(); | |
| 33 const char * search(const GUID & p_guid); | |
| 34 private: | |
| 35 struct entry { | |
| 36 char* m_name; | |
| 37 GUID m_guid; | |
| 38 }; | |
| 39 pfc::array_t<entry> m_data; | |
| 40 bool m_inited; | |
| 41 | |
| 42 static int entry_compare_search(const entry & entry1,const GUID & entry2); | |
| 43 static int entry_compare(const entry & entry1,const entry & entry2); | |
| 44 }; | |
| 45 | |
| 46 class name_to_guid_table | |
| 47 { | |
| 48 public: | |
| 49 name_to_guid_table(); | |
| 50 ~name_to_guid_table(); | |
| 51 bool search(const char * p_name,unsigned p_name_len,GUID & p_out); | |
| 52 private: | |
| 53 struct entry { | |
| 54 char* m_name; | |
| 55 GUID m_guid; | |
| 56 }; | |
| 57 pfc::array_t<entry> m_data; | |
| 58 bool m_inited; | |
| 59 struct search_entry { | |
| 60 const char * m_name; unsigned m_name_len; | |
| 61 }; | |
| 62 | |
| 63 static int entry_compare_search(const entry & entry1,const search_entry & entry2); | |
| 64 static int entry_compare(const entry & entry1,const entry & entry2); | |
| 65 }; | |
| 66 | |
| 67 }; | |
| 68 | |
| 69 | |
| 70 | |
| 71 class standard_commands | |
| 72 { | |
| 73 public: | |
| 74 static const GUID | |
| 75 guid_context_file_properties, guid_context_file_open_directory, guid_context_copy_names, | |
| 76 guid_context_send_to_playlist, guid_context_reload_info, guid_context_reload_info_if_changed, | |
| 77 guid_context_rewrite_info, guid_context_remove_tags, | |
| 78 guid_context_convert_run, guid_context_convert_run_singlefile,guid_context_convert_run_withcue, | |
| 79 guid_context_write_cd, | |
| 80 guid_context_rg_scan_track, guid_context_rg_scan_album, guid_context_rg_scan_album_multi, | |
| 81 guid_context_rg_remove, guid_context_save_playlist, guid_context_masstag_edit, | |
| 82 guid_context_masstag_rename, | |
| 83 guid_main_always_on_top, guid_main_preferences, guid_main_about, | |
| 84 guid_main_exit, guid_main_restart, guid_main_activate, | |
| 85 guid_main_hide, guid_main_activate_or_hide, guid_main_titleformat_help, | |
| 86 guid_main_next, guid_main_previous, | |
| 87 guid_main_next_or_random, guid_main_random, guid_main_pause, | |
| 88 guid_main_play, guid_main_play_or_pause, guid_main_rg_set_album, | |
| 89 guid_main_rg_set_track, guid_main_rg_disable, guid_main_rg_byorder, | |
| 90 guid_main_stop, | |
| 91 guid_main_stop_after_current, guid_main_volume_down, guid_main_volume_up, | |
| 92 guid_main_volume_mute, guid_main_add_directory, guid_main_add_files, | |
| 93 guid_main_add_location, guid_main_add_playlist, guid_main_clear_playlist, | |
| 94 guid_main_create_playlist, guid_main_highlight_playing, guid_main_load_playlist, | |
| 95 guid_main_next_playlist, guid_main_previous_playlist, guid_main_open, | |
| 96 guid_main_remove_playlist, guid_main_remove_dead_entries, guid_main_remove_duplicates, | |
| 97 guid_main_rename_playlist, guid_main_save_all_playlists, guid_main_save_playlist, | |
| 98 guid_main_playlist_search, guid_main_playlist_sel_crop, guid_main_playlist_sel_remove, | |
| 99 guid_main_playlist_sel_invert, guid_main_playlist_undo, guid_main_show_console, | |
| 100 guid_main_play_cd, guid_main_restart_resetconfig, guid_main_record, | |
| 101 guid_main_playlist_moveback, guid_main_playlist_moveforward, guid_main_playlist_redo, | |
| 102 guid_main_playback_follows_cursor, guid_main_cursor_follows_playback, guid_main_saveconfig, | |
| 103 guid_main_playlist_select_all, guid_main_show_now_playing, | |
| 104 | |
| 105 guid_seek_ahead_1s, guid_seek_ahead_5s, guid_seek_ahead_10s, guid_seek_ahead_30s, | |
| 106 guid_seek_ahead_1min, guid_seek_ahead_2min, guid_seek_ahead_5min, guid_seek_ahead_10min, | |
| 107 | |
| 108 guid_seek_back_1s, guid_seek_back_5s, guid_seek_back_10s, guid_seek_back_30s, | |
| 109 guid_seek_back_1min, guid_seek_back_2min, guid_seek_back_5min, guid_seek_back_10min, | |
| 110 | |
| 111 guid_library_configure, guid_library_rescan, | |
| 112 guid_internet_radio | |
| 113 ; | |
| 114 | |
| 115 static bool run_main(const GUID & guid); | |
| 116 static inline bool run_context(const GUID & guid,const pfc::list_base_const_t<metadb_handle_ptr> &data) {return menu_helpers::run_command_context(guid,pfc::guid_null,data);} | |
| 117 static inline bool run_context(const GUID & guid,const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller) {return menu_helpers::run_command_context_ex(guid,pfc::guid_null,data,caller);} | |
| 118 | |
| 119 static inline bool context_file_properties(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_file_properties,data,caller);} | |
| 120 static inline bool context_file_open_directory(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_file_open_directory,data,caller);} | |
| 121 static inline bool context_copy_names(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_copy_names,data,caller);} | |
| 122 static inline bool context_send_to_playlist(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_send_to_playlist,data,caller);} | |
| 123 static inline bool context_reload_info(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_reload_info,data,caller);} | |
| 124 static inline bool context_reload_info_if_changed(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_reload_info_if_changed,data,caller);} | |
| 125 static inline bool context_rewrite_info(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_rewrite_info,data,caller);} | |
| 126 static inline bool context_remove_tags(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_remove_tags,data,caller);} | |
| 127 static inline bool context_convert_run(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_convert_run,data,caller);} | |
| 128 static inline bool context_convert_run_singlefile(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_convert_run_singlefile,data,caller);} | |
| 129 static inline bool context_write_cd(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_write_cd,data,caller);} | |
| 130 static inline bool context_rg_scan_track(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_rg_scan_track,data,caller);} | |
| 131 static inline bool context_rg_scan_album(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_rg_scan_album,data,caller);} | |
| 132 static inline bool context_rg_scan_album_multi(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_rg_scan_album_multi,data,caller);} | |
| 133 static inline bool context_rg_remove(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_rg_remove,data,caller);} | |
| 134 static inline bool context_save_playlist(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_save_playlist,data,caller);} | |
| 135 static inline bool context_masstag_edit(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_masstag_edit,data,caller);} | |
| 136 static inline bool context_masstag_rename(const pfc::list_base_const_t<metadb_handle_ptr> &data,const GUID& caller = contextmenu_item::caller_undefined) {return run_context(guid_context_masstag_rename,data,caller);} | |
| 137 static inline bool main_always_on_top() {return run_main(guid_main_always_on_top);} | |
| 138 static inline bool main_preferences() {return run_main(guid_main_preferences);} | |
| 139 static inline bool main_about() {return run_main(guid_main_about);} | |
| 140 static inline bool main_exit() {return run_main(guid_main_exit);} | |
| 141 static inline bool main_restart() {return run_main(guid_main_restart);} | |
| 142 static inline bool main_activate() {return run_main(guid_main_activate);} | |
| 143 static inline bool main_hide() {return run_main(guid_main_hide);} | |
| 144 static inline bool main_activate_or_hide() {return run_main(guid_main_activate_or_hide);} | |
| 145 static inline bool main_titleformat_help() {return run_main(guid_main_titleformat_help);} | |
| 146 static inline bool main_playback_follows_cursor() {return run_main(guid_main_playback_follows_cursor);} | |
| 147 static inline bool main_next() {return run_main(guid_main_next);} | |
| 148 static inline bool main_previous() {return run_main(guid_main_previous);} | |
| 149 static inline bool main_next_or_random() {return run_main(guid_main_next_or_random);} | |
| 150 static inline bool main_random() {return run_main(guid_main_random);} | |
| 151 static inline bool main_pause() {return run_main(guid_main_pause);} | |
| 152 static inline bool main_play() {return run_main(guid_main_play);} | |
| 153 static inline bool main_play_or_pause() {return run_main(guid_main_play_or_pause);} | |
| 154 static inline bool main_rg_set_album() {return run_main(guid_main_rg_set_album);} | |
| 155 static inline bool main_rg_set_track() {return run_main(guid_main_rg_set_track);} | |
| 156 static inline bool main_rg_disable() {return run_main(guid_main_rg_disable);} | |
| 157 static inline bool main_stop() {return run_main(guid_main_stop);} | |
| 158 static inline bool main_stop_after_current() {return run_main(guid_main_stop_after_current);} | |
| 159 static inline bool main_volume_down() {return run_main(guid_main_volume_down);} | |
| 160 static inline bool main_volume_up() {return run_main(guid_main_volume_up);} | |
| 161 static inline bool main_volume_mute() {return run_main(guid_main_volume_mute);} | |
| 162 static inline bool main_add_directory() {return run_main(guid_main_add_directory);} | |
| 163 static inline bool main_add_files() {return run_main(guid_main_add_files);} | |
| 164 static inline bool main_add_location() {return run_main(guid_main_add_location);} | |
| 165 static inline bool main_add_playlist() {return run_main(guid_main_add_playlist);} | |
| 166 static inline bool main_clear_playlist() {return run_main(guid_main_clear_playlist);} | |
| 167 static inline bool main_create_playlist() {return run_main(guid_main_create_playlist);} | |
| 168 static inline bool main_highlight_playing() {return run_main(guid_main_highlight_playing);} | |
| 169 static inline bool main_load_playlist() {return run_main(guid_main_load_playlist);} | |
| 170 static inline bool main_next_playlist() {return run_main(guid_main_next_playlist);} | |
| 171 static inline bool main_previous_playlist() {return run_main(guid_main_previous_playlist);} | |
| 172 static inline bool main_open() {return run_main(guid_main_open);} | |
| 173 static inline bool main_remove_playlist() {return run_main(guid_main_remove_playlist);} | |
| 174 static inline bool main_remove_dead_entries() {return run_main(guid_main_remove_dead_entries);} | |
| 175 static inline bool main_remove_duplicates() {return run_main(guid_main_remove_duplicates);} | |
| 176 static inline bool main_rename_playlist() {return run_main(guid_main_rename_playlist);} | |
| 177 static inline bool main_save_all_playlists() {return run_main(guid_main_save_all_playlists);} | |
| 178 static inline bool main_save_playlist() {return run_main(guid_main_save_playlist);} | |
| 179 static inline bool main_playlist_search() {return run_main(guid_main_playlist_search);} | |
| 180 static inline bool main_playlist_sel_crop() {return run_main(guid_main_playlist_sel_crop);} | |
| 181 static inline bool main_playlist_sel_remove() {return run_main(guid_main_playlist_sel_remove);} | |
| 182 static inline bool main_playlist_sel_invert() {return run_main(guid_main_playlist_sel_invert);} | |
| 183 static inline bool main_playlist_undo() {return run_main(guid_main_playlist_undo);} | |
| 184 static inline bool main_show_console() {return run_main(guid_main_show_console);} | |
| 185 static inline bool main_play_cd() {return run_main(guid_main_play_cd);} | |
| 186 static inline bool main_restart_resetconfig() {return run_main(guid_main_restart_resetconfig);} | |
| 187 static inline bool main_playlist_moveback() {return run_main(guid_main_playlist_moveback);} | |
| 188 static inline bool main_playlist_moveforward() {return run_main(guid_main_playlist_moveforward);} | |
| 189 static inline bool main_saveconfig() {return run_main(guid_main_saveconfig);} | |
| 190 }; | |
| 191 | |
| 192 namespace fb2k { | |
| 193 // Turn sentence-capitalized into title-capitalized if needed | |
| 194 // No-op on systems using sentence capitalization | |
| 195 void capitalizeMenuLabel( pfc::string_base & inOut ); | |
| 196 } |
