void newmenu(char *name, int *hotkeys, int *forwardkeys) { addmenu(name, NULL, true, NULL, NULL, *hotkeys > 0, *forwardkeys > 0); }
HMENU user_create_menu(int mid, int flags) { HMENU m = CreatePopupMenu(), c; int i, count, sel_lng; # define addmenu(x, i, v) (InsertMenu(x, (UINT)-1, MF_BYPOSITION | MF_STRING, (i), (v)) ) # define addmenu_chk(x, i, v) (InsertMenu(x, (UINT)-1, MF_BYPOSITION | MF_CHECKED | MF_STRING, (i), (v)) ) # define menugroup(x) (InsertMenu(x, (UINT)-1, MF_BYPOSITION | MF_SEPARATOR, 0, 0) ) # define addchild(x, h, v) (InsertMenu(x, (UINT)-1, MF_BYPOSITION | MF_STRING | MF_POPUP, (UINT_PTR)(h), (v)) ) # define menubegin(x) (x = CreatePopupMenu()) # define menuend(x) (DestroyMenu(x)) switch(mid) { case 1: { struct video_dec *vd; letter sub_name[128]; vdata.shared->call_function(call_video_getvdec, 0, &vd, 0); menubegin(c); addmenu(c, 1001, uni("(None)")); count = vd->video_decoder_trans_info(video_get_sub_language_count, 0, 0, 0); /* get primary language id */ sel_lng = vd->video_decoder_trans_info(video_get_sub_language_current, 0, 0, 0); for(i=0; i<count; i++) { vd->video_decoder_trans_info(video_get_sub_language_current, i, 0, sub_name); if(i != sel_lng) addmenu(c, 2000 + i, sub_name); else addmenu_chk(c, 2000 + i, sub_name); } addchild(m, c, uni("Primary")); menubegin(c); addmenu(c, 1002, uni("(None)")); /* get secondary language id */ sel_lng = vd->video_decoder_trans_info(video_get_sub_language_current, 1, 0, 0); for(i=0; i<count; i++) { vd->video_decoder_trans_info(video_get_sub_language_current, i, 0, sub_name); if(i != sel_lng) addmenu(c, 8000 + i, sub_name); else addmenu_chk(c, 8000 + i, sub_name); } addchild(m, c, uni("Secondary")); } break; } return m; }
HMENU user_create_menu(int mid, int flags) { HMENU m = CreatePopupMenu(), c; # define addmenu(x, i, v) (InsertMenu(x, (UINT)-1, MF_BYPOSITION | MF_STRING, (i), (v)) ) # define menugroup(x) (InsertMenu(x, (UINT)-1, MF_BYPOSITION | MF_SEPARATOR, 0, 0) ) # define addchild(x, h, v) (InsertMenu(x, (UINT)-1, MF_BYPOSITION | MF_STRING | MF_POPUP, (UINT_PTR)(h), (v)) ) # define menubegin(x) (x = CreatePopupMenu()) # define menuend(x) (DestroyMenu(x)) switch(mid) { case menu_ml_options: addmenu(m, mid_repeat_list, skin.shared->language_text[oooo_skins_repeat_list]); addmenu(m, mid_repeat_track, skin.shared->language_text[oooo_skins_repeat_track]); addmenu(m, mid_autoswitching, skin.shared->language_text[oooo_skins_autoswitching]); menugroup(m); addmenu(m, mid_shuffle, skin.shared->language_text[oooo_skins_shuffle]); addmenu(m, mid_switch_sindex, skin.shared->language_text[oooo_skins_display_shuffle_index]); menugroup(m); menubegin(c); addmenu(c, midc_title , skin.shared->language_text[oooo_tag_title]); addmenu(c, midc_album , skin.shared->language_text[oooo_tag_album]); addmenu(c, midc_artist , skin.shared->language_text[oooo_tag_artist]); addmenu(c, midc_oartist , skin.shared->language_text[oooo_tag_origartist]); addmenu(c, midc_composer , skin.shared->language_text[oooo_tag_composer]); addmenu(c, midc_lyricist , skin.shared->language_text[oooo_tag_lyricist]); addmenu(c, midc_band , skin.shared->language_text[oooo_tag_band]); addmenu(c, midc_copyright , skin.shared->language_text[oooo_tag_copyright]); addmenu(c, midc_publisher , skin.shared->language_text[oooo_tag_publish]); addmenu(c, midc_encodedby , skin.shared->language_text[oooo_tag_encodedby]); addmenu(c, midc_genre , skin.shared->language_text[oooo_tag_genre]); addmenu(c, midc_year , skin.shared->language_text[oooo_tag_year]); addmenu(c, midc_url , skin.shared->language_text[oooo_tag_url]); addmenu(c, midc_ourl , skin.shared->language_text[oooo_tag_offiartisturl]); addmenu(c, midc_filepath , skin.shared->language_text[oooo_tag_filepath]); addmenu(c, midc_filename , skin.shared->language_text[oooo_tag_filename]); addmenu(c, midc_bpm , skin.shared->language_text[oooo_tag_bpm]); addmenu(c, midc_track , skin.shared->language_text[oooo_tag_tracknum]); addmenu(c, midc_index , skin.shared->language_text[oooo_tag_index]); addchild(m, c, skin.shared->language_text[oooo_skins_columns]); menuend(c); addmenu(m, midc_font , uni("Select Font")); addmenu(m, mid_settings , skin.shared->language_text[oooo_skins_show_preferences]); break; case menu_ml_add: addmenu(m, mid_addfiles , skin.shared->language_text[oooo_skins_addfiles]); addmenu(m, mid_add_dir , skin.shared->language_text[oooo_skins_addfolders]); menugroup(m); addmenu(m, mid_add_mlib , skin.shared->language_text[oooo_skins_addtoml]); break; case menu_ml_save: addmenu(m, mid_savepl, skin.shared->language_text[oooo_skins_save_playlist]); menugroup(m); addmenu(m, mid_import, skin.shared->language_text[oooo_skins_import_ml]); addmenu(m, mid_export, skin.shared->language_text[oooo_skins_export_ml]); break; case menu_ml_remove: addmenu(m, mid_removesel, skin.shared->language_text[oooo_skins_remove_sel]); addmenu(m, mid_removeall, skin.shared->language_text[oooo_skins_clear_playlist]); menugroup(m); addmenu(m, mid_removeml, skin.shared->language_text[oooo_skins_clearml]); break; case menu_ml_sort: addmenu(m, mid_sort_filename, skin.shared->language_text[oooo_skins_sort_by_filename]); addmenu(m, mid_unsort, skin.shared->language_text[oooo_skins_sort_unsort]); break; case menu_ml_popup: addmenu(m, mid_edittags, skin.shared->language_text[oooo_skins_edit_tags]); addmenu(m, mid_removesel, skin.shared->language_text[oooo_skins_remove_sel]); menugroup(m); addmenu(m, mid_preview, uni("Preview")); addmenu(m, mid_preview_stop, uni("Stop preview")); if(flags == 1) /* media library */ { addmenu(m, mid_addtoplaylist, skin.shared->language_text[oooo_skins_addtoplaylist]); } break; case menu_open: { letter exptext[256]; str_cpy(exptext, skin.shared->language_text[oooo_skins_open]); str_cat(exptext, uni(" (experimental)")); addmenu(m, mid_addfiles, skin.shared->language_text[oooo_skins_addfiles]); addmenu(m, mid_adddirs, skin.shared->language_text[oooo_skins_addfolders]); menugroup(m); addmenu(m, mid_loadtracks, skin.shared->language_text[oooo_menu_load_tracks]); menugroup(m); addmenu(m, mid_tray, skin.shared->language_text[oooo_menu_eject_load]); addmenu(m, mid_seldrive, skin.shared->language_text[oooo_menu_select_drive]); menugroup(m); addmenu(m, mid_experimental, exptext); } break; } return m; }