HMENU TtrayIcon::createPostProcMenu(void) { HMENU hm=CreatePopupMenu(); int ord=0; insertMenuItem(hm,ord,IDC_RBT_PPPRESETS,"Presets",IDFF_ppIsCustom,-1); insertMenuItem(hm,ord,IDC_CHB_AUTOQ,"Automatic quality control",IDFF_autoq); insertSeparator(hm,ord); insertMenuItem(hm,ord,IDC_RBT_PPCUSTOM,"Custom",IDFF_ppIsCustom); return hm; }
HMENU TffdshowPageEnc::createPresetsSubmenu(int cmd, bool save) { HMENU hm = CreatePopupMenu(); int ord = 0; for (TpresetsEnc::const_iterator p = presets->begin(); p != presets->end(); p++) { insertMenuItem(hm, ord, cmd++, p->name, false); } if (save) { insertSeparator(hm, ord); insertMenuItem(hm, ord, (cmd / 1000) * 1000 + 999, _(-IDD_FFDSHOWENC, _l("Save as...")), false); } return hm; }
void TtrayIcon::insertMenuItem(HMENU hm,int &ord,int id,char *caption,int cfgId,int negate) { bool checked; checked=cfgGet(cfgId)?true:false; if (negate==-1) checked=!checked; insertMenuItem(hm,ord,id,caption,checked); }
HMENU TtrayIcon::createMenu(void) { HMENU hm=CreatePopupMenu(); int ord=0; int len; deci->get_numPresets(&len); char actPreset[1024]; deci->get_activePresetName(actPreset,1023); for (int i=0;i<len;i++) { char preset[1024]; deci->get_presetName(i,preset,1023); insertMenuItem(hm,ord,IDC_FIRST_PRESET+i,preset,strcmp(preset,actPreset)==0); } insertSeparator(hm,ord); insertMenuItem(hm,ord,IDC_CHB_GLOBAL_POSTPROC,"Postprocessing",IDFF_isPostproc); // insertSubmenu(hm,ord,"Postprocessing settings",createPostProcMenu()); // insertSeparator(hm,ord); insertMenuItem(hm,ord,IDC_CHB_GLOBAL_PICTPROP,"Picture properties",IDFF_isPictProp); // insertSeparator(hm,ord); insertMenuItem(hm,ord,IDC_CHB_GLOBAL_NOISE,"Noise",IDFF_isNoise); // insertSeparator(hm,ord); insertMenuItem(hm,ord,IDC_CHB_GLOBAL_SHARPEN,"Sharpen",IDFF_isSharpen); insertMenuItem(hm,ord,IDC_CHB_FLIP,"Flip",IDFF_flip); insertMenuItem(hm,ord,IDC_CHB_SUBTITLES,"Subtitles",IDFF_isSubtitles); return hm; }
HRESULT csMenu::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT /*idCmdLast*/, UINT uFlags) { if( uFlags & CMF_DEFAULTONLY ) { return MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0); } UINT uPos = 0; UINT uCmdID = idCmdFirst; const DWORD flags = regReadFlags(); const csWString parallel = regReadParallel(); const DWORD parallelCount = regReadParallelCount(); const bool hasParallel = !parallel.empty() && parallelCount > 1; HMENU submenu = CreatePopupMenu(); insertMenuItem(submenu, uPos++, uCmdID++, L"List", !_files.empty()); insertMenuItem(submenu, uPos++, uCmdID++, L"List (path)", !_files.empty()); insertMenuItem(submenu, uPos++, uCmdID++, L"List (path, tabular)", !_files.empty()); insertSeparatorMenuItem(submenu, uPos++); insertMenuItem(submenu, uPos++, uCmdID++, L"Create symbolic link...", _files.size() == 1); insertSeparatorMenuItem(submenu, uPos++); insertCheckableMenuItem(submenu, uPos++, uCmdID++, L"Batch processing", testFlags(flags, CMD_FLAG_BATCH)); insertCheckableMenuItem(submenu, uPos++, uCmdID++, L"Parallel execution", testFlags(flags, CMD_FLAG_PARALLEL), hasParallel); insertCheckableMenuItem(submenu, uPos++, uCmdID++, L"Resolve UNC paths", testFlags(flags, CMD_FLAG_UNC)); insertCheckableMenuItem(submenu, uPos++, uCmdID++, L"UN*X path separators", testFlags(flags, CMD_FLAG_UNIX)); insertSubMenuItem(hmenu, submenu, indexMenu, uCmdID++, L"CS::Menu", _menuBitmap); const csWStringList scripts = regReadScripts(); if( !scripts.empty() && !_files.empty() ) { insertSeparatorMenuItem(submenu, uPos++); for(csWStringList::const_iterator it = scripts.begin(); it != scripts.end(); it++) { insertMenuItem(submenu, uPos++, uCmdID++, it->c_str()); } } return MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, uCmdID-idCmdFirst); }
void Menu::updateChoice( HMENU hmenu, int& index, ItemPtr item, const MENUITEMINFO& info ) { static const unsigned int MAX_MENU_TEXT = 1024; char txtBuf[ MAX_MENU_TEXT + 1 ]; unsigned int subItemIndex = 0; while( index < GetMenuItemCount( hmenu ) ) { MENUITEMINFO info = { sizeof( info ), MIIM_BITMAP | MIIM_CHECKMARKS | MIIM_DATA | MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_STRING | MIIM_SUBMENU }; info.cch = MAX_MENU_TEXT; info.dwTypeData = txtBuf; GetMenuItemInfo( hmenu, index, TRUE, &info ); if( info.dwItemData != (DWORD)item.getObject() ) break; if( subItemIndex < item->num() ) { ItemPtr subItem = ( *item )[ subItemIndex ]; if( !info.dwTypeData || buildMenuText( subItem ) != (LPCTSTR)info.dwTypeData ) insertMenuItem( hmenu, index, item ); ModifyMenu( hmenu, index, MF_BYPOSITION | MF_STRING, subItem->commandID(), buildMenuText( subItem ).c_str() ); EnableMenuItem( hmenu, index, MF_BYPOSITION | ( item->update() ? MF_ENABLED : MF_GRAYED ) ); CheckMenuItem( hmenu, index, MF_BYPOSITION | ( subItem->update() ? MF_CHECKED : MF_UNCHECKED ) ); ++index; ++subItemIndex; } else DeleteMenu( hmenu, index, MF_BYPOSITION ); } while( subItemIndex < item->num() ) { ItemPtr subItem = ( *item )[ subItemIndex ]; insertMenuItem( hmenu, index, item ); ModifyMenu( hmenu, index, MF_BYPOSITION | MF_STRING, subItem->commandID(), buildMenuText( subItem ).c_str() ); EnableMenuItem( hmenu, index, MF_BYPOSITION | ( item->update() ? MF_ENABLED : MF_GRAYED ) ); CheckMenuItem( hmenu, index, MF_BYPOSITION | ( subItem->update() ? MF_CHECKED : MF_UNCHECKED ) ); ++subItemIndex; } --index; }
// create and fill "recent" section at first void PanelKMenu::createRecentMenuItems() { RecentlyLaunchedApps::self().init(); RecentlyLaunchedApps::self().m_nNumMenuItems = 0; QStringList RecentApps; RecentlyLaunchedApps::self().getRecentApps(RecentApps); if (RecentApps.count() > 0) { bool bSeparator = KickerSettings::showMenuTitles(); int nId = serviceMenuEndId() + 1; int nIndex = KickerSettings::showMenuTitles() ? 1 : 0; for (QList<QString>::iterator it = RecentApps.fromLast(); /*nop*/; --it) { KService::Ptr s = KService::serviceByDesktopPath(*it); if (!s) { RecentlyLaunchedApps::self().removeItem(*it); } else { if (bSeparator) { bSeparator = false; /* FIXME: no more titles! int id = insertTitle( RecentlyLaunchedApps::self().caption(), serviceMenuEndId(), 0); setItemEnabled( id, false ); */ addSeparator(); } insertMenuItem(s, nId++, nIndex); RecentlyLaunchedApps::self().m_nNumMenuItems++; } if (it == RecentApps.begin()) { break; } } if (!KickerSettings::showMenuTitles()) { insertSeparator(RecentlyLaunchedApps::self().m_nNumMenuItems); } } }
// a context menu action was selected void UserMenuTree::slotPopupActivated(int id) { KILE_DEBUG() << "popup activated with id: " << id; switch (id ) { case POPUP_INSERT_ABOVE: insertMenuItem (m_popupItem, false); break; case POPUP_INSERT_BELOW: insertMenuItem (m_popupItem, true); break; case POPUP_SEPARATOR_ABOVE: insertSeparator(m_popupItem, false); break; case POPUP_SEPARATOR_BELOW: insertSeparator(m_popupItem, true); break; case POPUP_SUBMENU_ABOVE: insertSubmenu (m_popupItem, false); break; case POPUP_SUBMENU_BELOW: insertSubmenu (m_popupItem, true); break; case POPUP_INTO_SUBMENU: insertIntoSubmenu(m_popupItem, UserMenuData::Text); break; case POPUP_SEPARATOR_INTO_SUBMENU: insertIntoSubmenu(m_popupItem, UserMenuData::Separator); break; case POPUP_SUBMENU_INTO_SUBMENU: insertIntoSubmenu(m_popupItem, UserMenuData::Submenu); break; case POPUP_DELETE_ITEM: itemDelete(m_popupItem); break; case POPUP_DELETE_TREE: deleteMenuTree(); break; case POPUP_COLLAPSE_ITEM: m_popupItem->setExpanded(false); break; case POPUP_EXPAND_ITEM: m_popupItem->setExpanded(true); break; case POPUP_COLLAPSE_TREE: collapseAll(); break; case POPUP_EXPAND_TREE: expandAll(); break; case POPUP_ITEM_INFO: itemInfo(m_popupItem); break; } }
int Twindow::selectFromMenu(const char_t **items,int id,bool translate,int columnHeight) { HMENU hm=CreatePopupMenu(); for (int ord=0,i=0; items[ord]; i++) { insertMenuItem(hm,ord,i+1,items[i],false,columnHeight && i && (i%columnHeight)==0); } RECT r; if (id) { GetWindowRect(GetDlgItem(m_hwnd,id),&r); } else { POINT pt; GetCursorPos(&pt); r.left=pt.x; r.bottom=pt.y; } int cmd=TrackPopupMenu(translate?_(hm):hm,TPM_LEFTALIGN|TPM_TOPALIGN|TPM_RETURNCMD,r.left-1,r.bottom,0,m_hwnd,0); DestroyMenu(hm); return cmd?cmd-1:-1; }
void CMainFrame::updateLoadOptionsMenu() { const StringArray optionNames = Options::getExistingNames(); const String saveOptionsMenuPath = _T("3/11"); int index; HMENU optionsMenu = findMenuByString(m_hMenuDefault, saveOptionsMenuPath, index); HMENU loadMenu = (optionsMenu && (index >= 0)) ? getSubMenu(optionsMenu, _T("load options")) : NULL; if(loadMenu == NULL) { if(optionNames.size() > 0) { loadMenu = insertSubMenu(optionsMenu, 12, _T("&Load options")); } else { return; } } else { removeAllMenuItems(loadMenu); } const int n = min((int)optionNames.size(), 9); for(int i = 0; i < n; i++) { insertMenuItem(loadMenu,i, format(_T("%s\tCtrl+%d"), optionNames[i].cstr(), i+1), ID_OPTIONS_LOADOPTIONS+i+1); } }
void PanelKMenu::updateRecent() { if (!RecentlyLaunchedApps::self().m_bNeedToUpdate) { return; } RecentlyLaunchedApps::self().m_bNeedToUpdate = false; int nId = serviceMenuEndId() + 1; // remove previous items if (RecentlyLaunchedApps::self().m_nNumMenuItems > 0) { // -1 --> menu title int i = KickerSettings::showMenuTitles() ? -1 : 0; for (; i < RecentlyLaunchedApps::self().m_nNumMenuItems; i++) { removeItem(nId + i); entryMap_.remove(nId + i); } RecentlyLaunchedApps::self().m_nNumMenuItems = 0; if (!KickerSettings::showMenuTitles()) { removeItemAt(0); } } // insert new items QStringList RecentApps; RecentlyLaunchedApps::self().getRecentApps(RecentApps); if (RecentApps.count() > 0) { bool bNeedSeparator = KickerSettings::showMenuTitles(); for (QList<QString>::iterator it = RecentApps.fromLast(); /*nop*/; --it) { KService::Ptr s = KService::serviceByDesktopPath(*it); if (!s) { RecentlyLaunchedApps::self().removeItem(*it); } else { if (bNeedSeparator) { bNeedSeparator = false; addSeparator(); /* FIXME: no more titles! int id = insertTitle( RecentlyLaunchedApps::self().caption(), nId - 1, 0); setItemEnabled( id, false ); */ } insertMenuItem(s, nId++, KickerSettings::showMenuTitles() ? 1 : 0); RecentlyLaunchedApps::self().m_nNumMenuItems++; } if (it == RecentApps.begin()) break; } if (!KickerSettings::showMenuTitles()) { insertSeparator(RecentlyLaunchedApps::self().m_nNumMenuItems); } } }
void TffdshowPageEnc::showPresets(void) { if (!presets) { presets = new TpresetsEnc; presets->init(); } enum { IDI_MNI_LOAD_ALL = 1000, IDI_MNI_LOAD_PAGE = 2000, IDI_MNI_SAVE_ALL = 3000, IDI_MNI_SAVE_PAGE = 4000, IDI_MNI_MANAGE = 5000 }; HMENU hm = CreatePopupMenu(); int ord = 0; insertSubmenu(hm, ord, _(IDC_BT_PRESET, _l("Load all")), createPresetsSubmenu(IDI_MNI_LOAD_ALL, false)); insertSubmenu(hm, ord, _(IDC_BT_PRESET, _l("Load page")), createPresetsSubmenu(IDI_MNI_LOAD_PAGE, false)); enable(hm, 1, pageIs && page->propsIDs ? true : false); insertSeparator(hm, ord); HMENU hmPresets = createPresetsSubmenu(IDI_MNI_SAVE_ALL, true); enable(hmPresets, 0, false); insertSubmenu(hm, ord, _(IDC_BT_PRESET, _l("Save all")), hmPresets); hmPresets = createPresetsSubmenu(IDI_MNI_SAVE_PAGE, true); enable(hmPresets, 0, false); insertSubmenu(hm, ord, _(IDC_BT_PRESET, _l("Save page")), hmPresets); enable(hm, 4, pageIs && page->propsIDs ? true : false); insertSeparator(hm, ord); insertMenuItem(hm, ord, IDI_MNI_MANAGE, _(IDC_BT_PRESET, _l("Manage presets...")), false); enable(hm, 6, presets->size() >= 2); RECT r; GetWindowRect(GetDlgItem(m_hwnd, IDC_BT_PRESET), &r); POINT p = {0, r.bottom - r.top}; ClientToScreen(GetDlgItem(m_hwnd, IDC_BT_PRESET), &p); int cmd = TrackPopupMenu(hm, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD, p.x, p.y, 0, m_hwnd, NULL); PostMessage(m_hwnd, WM_NULL, 0, 0); if (cmd != 0) if (cmd == 5000) { TpresetsEncDlg pdlg(m_hwnd, deci, *presets); } else { int presetnum = cmd % 1000; TpresetEnc *preset = NULL; if (presetnum == 999) { char_t presetName[MAX_PATH] = _l(""); if (inputString(_(IDC_BT_PRESET, _l("Save as new preset")), _(IDC_BT_PRESET, _l("Preset name")), presetName, MAX_PATH) && presetName[0]) { preset = presets->getPreset(presetName); if (!preset) { preset = presets->createPreset(presetName); } } } else { preset = &(*presets)[presetnum]; } if (preset) switch (cmd = cmd / 1000) { case 1: case 2: preset->apply(&localCfg, cmd == 1 ? &*allPropsIDs.begin() : page->propsIDs); setChange(); if (cmd == 1) { codec2dlg(); } selectPage(page); break; case 3: case 4: preset->store(&localCfg, cmd == 3 ? &*allPropsIDs.begin() : page->propsIDs); selectPage(page); presets->save(); break; } } DestroyMenu(hm); }
void Menu::changed( HMENU hmenu, ItemPtr item ) { static const unsigned int MAX_MENU_TEXT = 1024; char txtBuf[ MAX_MENU_TEXT + 1 ]; int i = 0; unsigned int j = 0; while( i < GetMenuItemCount( hmenu ) ) { MENUITEMINFO info = { sizeof( info ), MIIM_BITMAP | MIIM_CHECKMARKS | MIIM_DATA | MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_STRING | MIIM_SUBMENU }; info.cch = MAX_MENU_TEXT; info.dwTypeData = txtBuf; GetMenuItemInfo( hmenu, i, TRUE, &info ); if( j < item->num() ) { ItemPtr sub = ( *item )[ j ]; if( ( Item* )info.dwItemData != sub ) { insertMenuItem( hmenu, i, sub ); ZeroMemory( &info, sizeof( info ) ); info.cbSize = sizeof( info ); info.fMask = MIIM_BITMAP | MIIM_CHECKMARKS | MIIM_DATA | MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_STRING | MIIM_SUBMENU; info.cch = MAX_MENU_TEXT; info.dwTypeData = txtBuf; GetMenuItemInfo( hmenu, i, TRUE, &info ); } if( sub->type() == "SEPARATOR" ) updateSeparator( hmenu, i, sub, info ); else if( sub->type() == "GROUP" ) updateGroup( hmenu, i, sub, info ); else if( sub->type() == "ACTION" ) updateAction( hmenu, i, sub, info ); else if( sub->type() == "TOGGLE" ) updateToggle( hmenu, i, sub, info ); else if( sub->type() == "CHOICE" ) updateChoice( hmenu, i, sub, info ); else if( sub->type() == "EXPANDED_CHOICE" ) updateExpandedChoice( hmenu, i, sub, info ); else updateUnknownItem( hmenu, i, sub, info ); GetMenuItemInfo( hmenu, i, TRUE, &info ); ++i; ++j; } else DeleteMenu( hmenu, i, MF_BYPOSITION ); } for(; j< item->num(); ++j ) { ItemPtr sub = ( *item )[ j ]; insertMenuItem( hmenu, i, sub ); MENUITEMINFO info = { sizeof( info ), MIIM_BITMAP | MIIM_CHECKMARKS | MIIM_DATA | MIIM_FTYPE | MIIM_ID | MIIM_STATE | MIIM_STRING | MIIM_SUBMENU }; info.cch = MAX_MENU_TEXT; info.dwTypeData = txtBuf; GetMenuItemInfo( hmenu, i, TRUE, &info ); if( sub->type() == "SEPARATOR" ) updateSeparator( hmenu, i, sub, info ); else if( sub->type() == "GROUP" ) updateGroup( hmenu, i, sub, info ); else if( sub->type() == "ACTION" ) updateAction( hmenu, i, sub, info ); else if( sub->type() == "TOGGLE" ) updateToggle( hmenu, i, sub, info ); else if( sub->type() == "CHOICE" ) updateChoice( hmenu, i, sub, info ); else if( sub->type() == "EXPANDED_CHOICE" ) updateExpandedChoice( hmenu, i, sub, info ); else updateUnknownItem( hmenu, i, sub, info ); GetMenuItemInfo( hmenu, i, TRUE, &info ); ++i; } }