//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //controltype_frame_insertpluginmenu //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void controltype_frame_insertpluginmenu(control *c, Menu *m) { const char menu_title[] = "Plugins"; Menu *sub = make_menu(menu_title, c); controltype_label_details *details = (controltype_label_details *) c->controldetails; make_menuitem_cmd(sub, "Load Plugin...", config_getfull_control_plugin_c(c, "Load", "*browse*")); static const char *submenu_titles[] = { "Unload Plugin", "Visibility" }; for (int n = 0; n < 2; n++) { Menu *sub2 = make_menu(submenu_titles[n], c); ModuleInfo *mi = details->module_info; if (NULL == mi) make_menuitem_nop(sub2, "No plugins loaded"); for (;mi; mi=mi->next) { if (0 == n) { make_menuitem_bol(sub2, mi->module_name, config_getfull_control_plugin_c(c, "Unload", mi->module_name), false); } else if (1 == n) { bool temp = !plugin_getset_show_state(details->plugin_info, mi->module_name, 3); make_menuitem_bol(sub2, mi->module_name, config_getfull_control_plugin_prop_b(c, mi->module_name, "IsVisible", temp), !temp); } } make_submenu_item(sub, submenu_titles[n], sub2); } if (details->module_info) make_menuitem_cmd(sub, "About Plugins", config_getfull_control_plugin_s(c, "About")); make_submenu_item(m, menu_title, sub); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_bitmap_menu_context //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_bitmap_menu_context(std::shared_ptr<bb::MenuConfig> m, agent *a) { //Get the agent details agenttype_bitmap_details *details = (agenttype_bitmap_details *) a->agentdetails; //For convenience, change the bitmap source without changing the settings make_menuitem_cmd(m, L"Change Source...", config_getfull_control_setagentprop_c(a->controlptr, a->agentaction, L"Source", L"*browse*")); if (details->is_icon) { make_menuitem_int(m, L"Icon Size", config_getfull_control_setagentprop_s(a->controlptr, a->agentaction, L"Size"), details->width, 1, 256); } else if (details->filename) { make_menuitem_int(m, L"Scale", config_getfull_control_setagentprop_s(a->controlptr, a->agentaction, L"Scale"), details->scale, 1, 500); } std::shared_ptr<bb::MenuConfig> submenu = make_menu(L"Image Alignment", a->controlptr); make_menuitem_bol(submenu, L"Left", config_getfull_control_setagentprop_c(a->controlptr, a->agentaction, L"HAlign", L"Left"), details->halign == 1); make_menuitem_bol(submenu, L"Center", config_getfull_control_setagentprop_c(a->controlptr, a->agentaction, L"HAlign", L"Center"), details->halign == 0); make_menuitem_bol(submenu, L"Right", config_getfull_control_setagentprop_c(a->controlptr, a->agentaction, L"HAlign", L"Right"), details->halign == 2); make_menuitem_nop(submenu, L""); make_menuitem_bol(submenu, L"Top", config_getfull_control_setagentprop_c(a->controlptr, a->agentaction, L"VAlign", L"Top"), details->valign == 1); make_menuitem_bol(submenu, L"Center", config_getfull_control_setagentprop_c(a->controlptr, a->agentaction, L"VAlign", L"Center"), details->valign == 0); make_menuitem_bol(submenu, L"Bottom", config_getfull_control_setagentprop_c(a->controlptr, a->agentaction, L"VAlign", L"Bottom"), details->valign == 2); make_submenu_item(m, L"Image Alignment", submenu); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_graph_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_graph_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { for (int i = 0; i < AGENTTYPE_GRAPH_CHARTTYPECOUNT; i++) { make_menuitem_cmd(m, agenttype_graph_friendlycharttypes[i], config_getfull_control_setagent_c(c, action, "Graph", agenttype_graph_charttypes[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_winamppoller_text_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_winamppoller_text_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { for (int i = WINAMP_POLLINGTYPE_LASTSCALE + 1; i < WINAMP_POLLINGTYPECOUNT; i++) { make_menuitem_cmd(m, agenttype_winamp_friendlynames[i], config_getfull_control_setagent_c(c, action, "WinampText", agenttype_winamp_pollingnames[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_systemmonitor_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_systemmonitor_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { //Add a menu item for every type for (int i = 1; i < SYSTEMMONITOR_NUMTYPES; i++) { make_menuitem_cmd(m, agenttype_systemmonitor_friendlytypes[i], config_getfull_control_setagent_c(c, action, "SystemMonitor", agenttype_systemmonitor_types[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_systeminfo_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_systeminfo_menu_set(std::shared_ptr<bb::MenuConfig> m, control *c, agent *a, wchar_t *action, int controlformat) { //Add a menu item for every type for (int i = 1; i < SYSTEMINFO_NUMTYPES; i++) { make_menuitem_cmd(m, agenttype_systeminfo_friendlytypes[i], config_getfull_control_setagent_c(c, action, L"SystemInfo", agenttype_systeminfo_types[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_diskspacemonitor_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_diskspacemonitor_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { //Add a menu item for every type for (int i = 1; i < DISKSPACEMONITOR_NUMTYPES; i++) { make_menuitem_cmd(m, agenttype_diskspacemonitor_friendlytypes[i], config_getfull_control_setagent_c(c, action, "DiskSpaceMonitor", agenttype_diskspacemonitor_types[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_networkmonitor_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_networkmonitor_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { //Add a menu item for every type for (int i = 0; i < AGENTTYPE_NETWORKMONITOR_NUMINTERFACES; i++) { make_menuitem_cmd(m, agenttype_networkmonitor_friendlyinterfaces[i], config_getfull_control_setagent_c(c, action, "NetworkMonitor", agenttype_networkmonitor_interface_numbers[i])); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_switchedstate_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_switchedstate_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { char temp[32] = ""; switch(controlformat) { case CONTROL_FORMAT_TEXT: strcpy(temp, agenttype_switchedstate_typenames[AGENTTYPE_SWITCHEDSTATE_TYPE_TEXT]); break; case CONTROL_FORMAT_IMAGE: strcpy(temp, agenttype_switchedstate_typenames[AGENTTYPE_SWITCHEDSTATE_TYPE_IMAGE]); break; case CONTROL_FORMAT_TRIGGER: strcpy(temp, agenttype_switchedstate_typenames[AGENTTYPE_SWITCHEDSTATE_TYPE_TRIGGER]); break; default: make_menuitem_nop(m, "Invalid type."); break; } make_menuitem_cmd(m, "Set", config_getfull_control_setagent_c(c, action, "SwitchedState", temp)); }
//################################################## //menu_control_pluginoptions //################################################## void menu_control_pluginoptions(Menu *m) { Menu *submenu; submenu = make_menu("Configuration"); make_submenu_item(submenu, "Modules", module_menu_modulelist()); make_submenu_item(submenu, "Edit Modules", module_menu_editmodules()); make_submenu_item(submenu, "Set Default Module", module_menu_setactivemodule()); make_menuitem_nop(submenu, NULL); make_menuitem_cmd(submenu, "Load Configuration Script...", config_get_plugin_load_dialog()); make_menuitem_cmd(submenu, "Edit Configuration Script", config_get_plugin_edit()); make_menuitem_nop(submenu, NULL); make_menuitem_cmd(submenu, "Save Configuration", config_get_plugin_save()); make_menuitem_cmd(submenu, "Save Configuration As...", config_get_plugin_saveas()); make_menuitem_nop(submenu, NULL); make_menuitem_cmd(submenu, "Reload Configuration", config_get_plugin_revert()); make_submenu_item(m, "Configuration", submenu); submenu = make_menu("Help"); make_menuitem_cmd(submenu, "Quick Reference...", "@BBInterface Plugin About QuickHelp"); make_menuitem_cmd(submenu, "About...", "@BBInterface Plugin About"); make_menuitem_cmd(submenu, "Show Welcome Interface", "@BBInterface Plugin Load WelcomeScript\\welcome.rc"); make_submenu_item(m, "Help", submenu); }
void menu_control_interfaceoptions(Menu *m, control *c) { //Variables Menu *submenu, *submenu2; //Make the operations menu submenu = make_menu("Interface Operations", c); //Create new controls submenu2 = make_menu("Create New Control", c); control_menu_create(submenu2, c, false); make_submenu_item(submenu, "Create New Control", submenu2); if (c->controltypeptr->can_parent) //If it can be a parent { submenu2 = make_menu("Create New Child Control", c); control_menu_create(submenu2, c, true); make_submenu_item(submenu, "Create New Child Control", submenu2); } make_menuitem_cmd(submenu,"Create New Module",config_get_module_create()); make_menuitem_nop(submenu, NULL); control_menu_settings(submenu, c); make_submenu_item(m, "Interface Operations", submenu); }
//################################################## //agenttype_mixer_menu_linecontrols //################################################## int agenttype_mixer_menu_linecontrols(Menu *menu, control *c, char *action, char *agentname, int format, UINT device, HMIXER mixer_handle, MIXERLINE &mixer_line) { //Variables MIXERLINECONTROLS mixer_linecontrols; MIXERCONTROL mixer_controls[8]; int elementcount = 0; char text_item[256]; char text_params[256]; const char *type; //Setup the function call with required values UINT count_control = mixer_line.cControls; if (count_control > 8) count_control = 8; //Maximum 8 controls per line mixer_linecontrols.cbStruct = sizeof(MIXERLINECONTROLS); mixer_linecontrols.cControls = count_control; mixer_linecontrols.dwLineID = mixer_line.dwLineID; mixer_linecontrols.pamxctrl = &mixer_controls[0]; mixer_linecontrols.cbmxctrl = sizeof(MIXERCONTROL); //Figure out the type if (format == CONTROL_FORMAT_SCALE) { type = mixer_name_scale; } else if (format == CONTROL_FORMAT_BOOL) { type = mixer_name_bool; } else return 0; //Get the line controls if (MMSYSERR_NOERROR != mixerGetLineControls((HMIXEROBJ)mixer_handle, &mixer_linecontrols, MIXER_GETLINECONTROLSF_ALL)) { return 0; } //For every control for (unsigned int control = 0; control < count_control; control++) { bool passestest = false; switch (format) { case CONTROL_FORMAT_SCALE: passestest = (mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_VOLUME || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_BASS || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_TREBLE || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_FADER); break; case CONTROL_FORMAT_BOOL: passestest = (mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_BOOLEAN || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_BUTTON || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_LOUDNESS || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_MONO || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_MUTE || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_ONOFF || mixer_controls[control].dwControlType == MIXERCONTROL_CONTROLTYPE_STEREOENH); break; } if (passestest) { elementcount++; sprintf(text_item, "- %s", mixer_controls[control].szName); sprintf(text_params, "%d %d %d", device, (int)mixer_line.dwLineID, (int)mixer_controls[control].dwControlID); make_menuitem_cmd(menu, text_item, config_getfull_control_setagent_c(c, action, type, text_params)); } } return elementcount; }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_icon_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_icon_menu_set(std::shared_ptr<bb::MenuConfig> m, control *c, agent *a, wchar_t *action, int controlformat) { make_menuitem_cmd(m, L"Browse...", config_getfull_control_setagent_c(c, action, L"Icon", L"*browse*")); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_icon_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_icon_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { make_menuitem_cmd(m, "Browse...", config_getfull_control_setagent_c(c, action, "Icon", "*browse*")); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_winamppoller_scale_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_winamppoller_scale_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { make_menuitem_cmd(m, "Track Position", config_getfull_control_setagent_c(c, action, "WinampScale", "TrackPosition")); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //agenttype_winamppoller_bool_menu_set //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void agenttype_winamppoller_bool_menu_set(Menu *m, control *c, agent *a, char *action, int controlformat) { make_menuitem_cmd(m, "Track Is Playing", config_getfull_control_setagent_c(c, action, "WinampBool", "IsPlaying")); }