コード例 #1
0
void AmBankChangeView::BuildMenu(const AmTrack* track, BMenu* menu) const
{
	mPreferredWidth = 20;
	
	AmFilterHolderI*				holder = track->Filter(DESTINATION_PIPELINE);
	if (holder && holder->Filter() ) {
		ArpCRef<AmDeviceI>			device = holder->Filter()->Device();
		if (device) {
			uint32					count = device->CountBanks();
			for (uint32 k = 0; k < count; k++) {
				ArpCRef<AmBankI>	bank = device->Bank(k);
				if (bank) {
					BString			label;
					get_bank_label(bank, k, label);
					BMessage*		msg = new BMessage(BANK_MSG);
					BMenuItem*		item = new BMenuItem(label.String(), msg);
					if (msg && item) {
						msg->AddInt32("number", k);
						menu->AddItem(item);
						float		w = StringWidth(label.String() ) + 20;
						if (w > mPreferredWidth) mPreferredWidth = w;
					}
				}
			}
		}
	}
}
コード例 #2
0
void AmProgramChangeView::BuildMenu(const AmTrack* track, BMenu* menu, int32 oldIndex) const
{
	ArpCRef<AmBankI>		bank = 0;
	AmFilterHolderI*		holder = track->Filter(DESTINATION_PIPELINE);
	uint32					count = 128;
	uint32					firstNumber = 0;
	if (holder && holder->Filter() ) {
		ArpCRef<AmDeviceI>	device = holder->Filter()->Device();
		if (device) {
			bank = device->Bank(BankNumber() );
			if (bank) {
				count = bank->CountPatches();
				firstNumber = bank->FirstPatchNumber();
			}
		}
	}
	for (uint32 k = 0; k < count; k++) {
		BMessage*			msg = new BMessage(PROGRAM_MSG);
		BString				label;
		BString				patchName;
		label << k + firstNumber;
		if (bank) patchName = bank->PatchName(k);
		if (patchName.Length() > 0) label << " - " << patchName.String();
		BMenuItem*			item = new BMenuItem(label.String(), msg);
		if (msg && item) {
			msg->AddInt32("number", (int32)k);
			menu->AddItem(item);
			if (int32(k) == oldIndex) item->SetMarked(true);
		}
	}
	menu->SetTargetForItems(this);
}
コード例 #3
0
void _AmControlMenu::Build(const AmTrack* track)
{
	AmFilterHolderI* 		holder = track->Filter(DESTINATION_PIPELINE);
	ArpCRef<AmDeviceI>		device = NULL;
	if (holder && holder->Filter()) device = holder->Filter()->Device();
	
	RemoveItems(0, CountItems(), true);
	for (uint32 k = 0; k < AM_CONTROLLER_SIZE; k++) {
		BString			cn;
		if (device) cn = device->ControlName(k, true);
		if (cn.Length() < 1) cn << k;
		const char*		label = NULL;
		if (cn.Length() > 0) label = cn.String();
		if (!label) label = am_control_name(k);
		if (!label) {
			cn << k;
			label = cn.String();
		}
		AddControlItem(k, label);
	}
}