void BSlowContextMenu::AttachedToWindow() { // showing flag is set immediately as // it may take a while to build the menu's // contents. // // it should get set only once when Go is called // and will get reset in DetachedFromWindow // // this flag is used in ContainerWindow::ShowContextMenu // to determine whether we should show this menu, and // the only reason we need to do this is because this // menu is spawned ::Go as an asynchronous menu, which // is done because we will deadlock if the target's // window is open... so there fIsShowing = true; BPopUpMenu::AttachedToWindow(); SpringLoadedFolderSetMenuStates(this, fTypesList); // allow an opportunity to reset the target for each of the items SetTargetForItems(Target()); }
void TemplatesMenu::AttachedToWindow() { BuildMenu(); BMenu::AttachedToWindow(); SetTargetForItems(fTarget); }
void NetworkMenu::AttachedToWindow (void) { if (CountItems()) { BMenuItem *item (NULL); while ((item = RemoveItem((int32)0)) != NULL) delete item; } BMessage msg; BMessage *invoke (NULL); for (int32 i = 0; (msg = vision_app->GetNetwork (i)), !msg.HasBool ("error"); i++) { const char *name = msg.FindString ("name"); invoke = new BMessage (fMsgConst); invoke->AddString ("network", name); BMenuItem *item (new BMenuItem(name, invoke)); AddItem (item); if (!vision_app->CheckNetworkValid (name)) item->SetEnabled (false); } SetTargetForItems (fTarget.Target(NULL)); BMenu::AttachedToWindow(); }
void SeqNavMenu::DoneBuildingItemList() { if( mSkipLoneDirectory && mFirstEntry == DIR_ENTRY && mItems.size() == 1 ) SkipLoneDirectory(); sort( mItems.begin(), mItems.end(), sort_items ); for( uint32 k = 0; k < mItems.size(); k++ ) AddItem( mItems[k] ); mItems.resize(0); SetTargetForItems( mTarget ); }
void RecentsMenu::DoneBuildingItemList() { // // !! note: don't call inherited here // the object list is not built // and this list does not need to be sorted // BNavMenu::DoneBuildingItemList(); // if (CountItems() <= 0) { BMenuItem* item = new BMenuItem(B_TRANSLATE("<No recent items>"), 0); item->SetEnabled(false); AddItem(item); } else SetTargetForItems(Target()); }
void BSlowContextMenu::DoneBuildingItemList() { // add sorted items to menu if (TrackerSettings().SortFolderNamesFirst()) fItemList->SortItems(&BNavMenu::CompareFolderNamesFirstOne); else fItemList->SortItems(&BNavMenu::CompareOne); int32 count = fItemList->CountItems(); for (int32 index = 0; index < count; index++) AddItem(fItemList->ItemAt(index)); fItemList->MakeEmpty(); if (!count) { BMenuItem *item = new BMenuItem("Empty folder", 0); item->SetEnabled(false); AddItem(item); } SetTargetForItems(fMessenger); }
void BNavMenu::DoneBuildingItemList() { // add sorted items to menu if (TrackerSettings().SortFolderNamesFirst()) fItemList->SortItems(CompareFolderNamesFirstOne); else fItemList->SortItems(CompareOne); // if the parent link should be shown, it will be the first // entry in the menu - but don't add the item if we're already // at the file system's root if (fFlags & kShowParent) { BDirectory directory(&fNavDir); BEntry entry(&fNavDir); if (!directory.IsRootDirectory() && entry.GetParent(&entry) == B_OK) { Model model(&entry, true); BLooper* looper; AddNavParentDir(&model, fMessage.what, fMessenger.Target(&looper)); } } int32 count = fItemList->CountItems(); for (int32 index = 0; index < count; index++) AddItem(fItemList->ItemAt(index)); fItemList->MakeEmpty(); if (!count) { BMenuItem* item = new BMenuItem(B_TRANSLATE("Empty folder"), 0); item->SetEnabled(false); AddItem(item); } SetTargetForItems(fMessenger); }
WindowsMenu::WindowsMenu( int32 disabledWindow ) : BMenu("Windows") { BMenuItem *menuitem; menuitem = new BMenuItem("Pattern", new BMessage('Win0'), '0'); if (disabledWindow==0) menuitem->SetEnabled(false); AddItem(menuitem); menuitem = new BMenuItem("Song", new BMessage('Win1'), '1'); if (disabledWindow==1) menuitem->SetEnabled(false); AddItem(menuitem); menuitem = new BMenuItem("Drumset", new BMessage('Win2'), '2'); if (disabledWindow==2) menuitem->SetEnabled(false); AddItem(menuitem); SetTargetForItems(be_app); AddSeparatorItem(); AddItem(new BMenuItem( "Move all to this workspace", new BMessage('Work'))); }
void FavoritesMenu::DoneBuildingItemList() { SetTargetForItems(fTarget); }
void OpenWithMenu::DoneBuildingItemList() { // sort by app name fSupportingAppList->SortItems(SortByRelationAndName, this); // check if each app is unique bool isUnique = true; int32 count = fSupportingAppList->CountItems(); for (int32 index = 0; index < count - 1; index++) { // the list is sorted, just compare two adjacent models if (strcmp(fSupportingAppList->ItemAt(index)->fModel->Name(), fSupportingAppList->ItemAt(index + 1)->fModel->Name()) == 0) { isUnique = false; break; } } // add apps as menu items BFont font; GetFont(&font); int32 lastRelation = -1; for (int32 index = 0; index < count ; index++) { RelationCachingModelProxy* modelProxy = fSupportingAppList->ItemAt(index); Model* model = modelProxy->fModel; BMessage* message = new BMessage(fEntriesToOpen); message->AddRef("handler", model->EntryRef()); BContainerWindow* window = dynamic_cast<BContainerWindow*>(fParentWindow); if (window != NULL) { message->AddData("nodeRefsToClose", B_RAW_TYPE, window->TargetModel()->NodeRef(), sizeof(node_ref)); } BString result; if (isUnique) { // just use the app name result = model->Name(); } else { // get a truncated full path BPath path; BEntry entry(model->EntryRef()); if (entry.GetPath(&path) != B_OK) { PRINT(("stale entry ref %s\n", model->Name())); delete message; continue; } result = path.Path(); font.TruncateString(&result, B_TRUNCATE_MIDDLE, kMaxMenuWidth); } #if DEBUG BString relationDescription; fIterator->RelationDescription(&fEntriesToOpen, model, &relationDescription); result += " ("; result += relationDescription; result += ")"; #endif // divide different relations of opening with a separator int32 relation = modelProxy->Relation(fIterator, &fEntriesToOpen); if (lastRelation != -1 && relation != lastRelation) AddSeparatorItem(); lastRelation = relation; ModelMenuItem* item = new ModelMenuItem(model, result.String(), message); AddItem(item); // mark item if it represents the preferred app if (fHaveCommonPreferredApp && *(model->EntryRef()) == fPreferredRef) { //PRINT(("marking item for % as preferred", model->Name())); item->SetMarked(true); } } // target the menu if (target != NULL) SetTargetForItems(target); else SetTargetForItems(fMessenger); if (CountItems() == 0) { BMenuItem* item = new BMenuItem(B_TRANSLATE("no supporting apps"), 0); item->SetEnabled(false); AddItem(item); } }
void BNavMenu::ResetTargets() { SetTargetForItems(Target()); }
TTransitionMenu::TTransitionMenu(TCueView* target, bool transitionIn) : BPopUpMenu("TransitionMenu") { BMessage* menuMessage; // Create "None" menuMessage = new BMessage(TRAN_NONE_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* noneItem = new BMenuItem("None", menuMessage); AddItem(noneItem); // Seperator01 AddSeparatorItem(); // Create Straight Wipes submenu // BMenu* straightWipesSubMenu = new BMenu("Straight Wipes"); BMenuItem* straightWipesSubMenuItem = new BMenuItem(straightWipesSubMenu); AddItem(straightWipesSubMenuItem); menuMessage = new BMessage(TRAN_WIPE_RIGHT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* wipeRightItem = new BMenuItem("Right", menuMessage); straightWipesSubMenu->AddItem(wipeRightItem); menuMessage = new BMessage(TRAN_WIPE_LEFT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* wipeLeftItem = new BMenuItem("Left", menuMessage); straightWipesSubMenu->AddItem(wipeLeftItem); menuMessage = new BMessage(TRAN_WIPE_DOWN_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* wipeDownItem = new BMenuItem("Down", menuMessage); straightWipesSubMenu->AddItem(wipeDownItem); menuMessage = new BMessage(TRAN_WIPE_UP_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* wipeUpItem = new BMenuItem("Up", menuMessage); straightWipesSubMenu->AddItem(wipeUpItem); // Create Diagonal Wipes submenu // BMenu* diagonalWipesSubMenu = new BMenu("Diagonal Wipes"); BMenuItem* diagonalWipesSubMenuItem = new BMenuItem(diagonalWipesSubMenu); AddItem(diagonalWipesSubMenuItem); menuMessage = new BMessage(TRAN_WIPE_TOP_LEFT_BOTTOM_RIGHT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* wipeTopLeftBottomRightItem = new BMenuItem("Top Left to Bottom Right", menuMessage); diagonalWipesSubMenu->AddItem(wipeTopLeftBottomRightItem); menuMessage = new BMessage(TRAN_WIPE_TOP_RIGHT_BOTTON_LEFT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* wipeTopRightToBottomLeftItem = new BMenuItem("Top Right to Bottom Left", menuMessage); diagonalWipesSubMenu->AddItem(wipeTopRightToBottomLeftItem); menuMessage = new BMessage(TRAN_WIPE_BOTTOM_LEFT_TOP_RIGHT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* wipeBottomLeftToTopRightItem = new BMenuItem("Bottom Left to Top Right", menuMessage); diagonalWipesSubMenu->AddItem(wipeBottomLeftToTopRightItem); menuMessage = new BMessage(TRAN_WIPE_BOTTOM_RIGHT_TOP_LEFT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* wipeBottomRightToTopLeftItem = new BMenuItem("Bottom Right to Top Left", menuMessage); diagonalWipesSubMenu->AddItem(wipeBottomRightToTopLeftItem); // Create Circular Wipes submenu // BMenu* circularWipesSubMenu = new BMenu("Circular Wipes"); BMenuItem* circularWipesSubMenuItem = new BMenuItem(circularWipesSubMenu); AddItem(circularWipesSubMenuItem); // Create Iris Out submenu // BMenu* irisOutSubMenu = new BMenu("Iris Out"); BMenuItem* irisOutSubMenuItem = new BMenuItem(irisOutSubMenu); AddItem(irisOutSubMenuItem); // Create Reveal submenu // BMenu* revealSubMenu = new BMenu("Reveal"); BMenuItem* revealSubMenuItem = new BMenuItem(revealSubMenu); AddItem(revealSubMenuItem); menuMessage = new BMessage(TRAN_REVEAL_RIGHT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* revealRightItem = new BMenuItem("Right", menuMessage); revealSubMenu->AddItem(revealRightItem); menuMessage = new BMessage(TRAN_REVEAL_LEFT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* revealLeftItem = new BMenuItem("Left", menuMessage); revealSubMenu->AddItem(revealLeftItem); menuMessage = new BMessage(TRAN_REVEAL_DOWN_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* revealDownItem = new BMenuItem("Down", menuMessage); revealSubMenu->AddItem(revealDownItem); menuMessage = new BMessage(TRAN_REVEAL_UP_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* revealUpItem = new BMenuItem("Up", menuMessage); revealSubMenu->AddItem(revealUpItem); menuMessage = new BMessage(TRAN_REVEAL_TOP_LEFT_BOTTOM_RIGHT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* revealTLBRItem = new BMenuItem("Top Left to Bottom Right", menuMessage); revealSubMenu->AddItem(revealTLBRItem); menuMessage = new BMessage(TRAN_REVEAL_TOP_RIGHT_BOTTON_LEFT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* revealTRBLItem = new BMenuItem("Top Right to Bottom Left", menuMessage); revealSubMenu->AddItem(revealTRBLItem); menuMessage = new BMessage(TRAN_REVEAL_BOTTOM_LEFT_TOP_RIGHT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* revealBLTRItem = new BMenuItem("Bottom Left to Top Right", menuMessage); revealSubMenu->AddItem(revealBLTRItem); menuMessage = new BMessage(TRAN_REVEAL_BOTTOM_RIGHT_TOP_LEFT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* revealBRTLItem = new BMenuItem("Bottom Right to Top Left", menuMessage); revealSubMenu->AddItem(revealBRTLItem); // Create Blinds submenu // BMenu* blindsSubMenu = new BMenu("Blinds"); BMenuItem* blindsSubMenuItem = new BMenuItem(blindsSubMenu); AddItem(blindsSubMenuItem); // Create Curtains submenu // BMenu* curtainsSubMenu = new BMenu("Curtains"); BMenuItem* curtainsSubMenuItem = new BMenuItem(curtainsSubMenu); AddItem(curtainsSubMenuItem); menuMessage = new BMessage(TRAN_CURTAINS_IN_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* curtainsInItem = new BMenuItem("In", menuMessage); curtainsSubMenu->AddItem(curtainsInItem); menuMessage = new BMessage(TRAN_CURTAINS_OUT_MSG); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* curtainsOutItem = new BMenuItem("Out", menuMessage); curtainsSubMenu->AddItem(curtainsOutItem); // Create Horizontal Strips submenu // BMenu* hStripsSubMenu = new BMenu("Horizontal Strips"); BMenuItem* hStripsSubMenuItem = new BMenuItem(hStripsSubMenu); AddItem(hStripsSubMenuItem); // Create Vertical Strips submenu // BMenu* vStripsSubMenu = new BMenu("Vertical Strips"); BMenuItem* vStripsSubMenuItem = new BMenuItem(vStripsSubMenu); AddItem(vStripsSubMenuItem); // Create Dissolve submenu // BMenu* dissolveSubMenu = new BMenu("Dissolve"); BMenuItem* dissolveSubMenuItem = new BMenuItem(dissolveSubMenu); AddItem(dissolveSubMenuItem); // Create Zoom submenu // BMenu* zoomSubMenu = new BMenu("Zoom"); BMenuItem* zoomSubMenuItem = new BMenuItem(zoomSubMenu); AddItem(zoomSubMenuItem); // All these items message to the cue straightWipesSubMenu->SetTargetForItems(target); diagonalWipesSubMenu->SetTargetForItems(target); circularWipesSubMenu->SetTargetForItems(target); irisOutSubMenu->SetTargetForItems(target); revealSubMenu->SetTargetForItems(target); blindsSubMenu->SetTargetForItems(target); curtainsSubMenu->SetTargetForItems(target); hStripsSubMenu->SetTargetForItems(target); vStripsSubMenu->SetTargetForItems(target); dissolveSubMenu->SetTargetForItems(target); zoomSubMenu->SetTargetForItems(target); // Seperator02 AddSeparatorItem(); // Create Settings item menuMessage = new BMessage(TRAN_DURATION); menuMessage->AddBool("TransitionIn", transitionIn); BMenuItem* durationItem = new BMenuItem("Settings...", menuMessage); AddItem(durationItem); // All these items message to the cue SetTargetForItems(target); }