Пример #1
0
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);
}
Пример #3
0
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();
}
Пример #4
0
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 );
}
Пример #5
0
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());
}
Пример #6
0
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);
}
Пример #7
0
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);
}
Пример #8
0
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')));
	
}
Пример #9
0
void
FavoritesMenu::DoneBuildingItemList()
{
	SetTargetForItems(fTarget);
}
Пример #10
0
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);
	}
}
Пример #11
0
void
BNavMenu::ResetTargets()
{
	SetTargetForItems(Target());
}
Пример #12
0
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);

}