/* 辅助函数-Log信息台-配置右键弹出菜单 */
void showLogBoxRightClickMenu(int pHdl, int ctrlID, int xPoint, int yPoint){
	int menuBar = NewMenuBar(0);
	int menuIDForPop = NewMenu(menuBar, "" , -1);
	NewMenuItem(menuBar, menuIDForPop, "Save Log to File", -1, 0, logBoxRightClickMenuCallback, NULL);
	NewMenuItem(menuBar, menuIDForPop, "Clear Log Console", -1, 0, logBoxRightClickMenuCallback, NULL);
	RunPopupMenu(menuBar, menuIDForPop, 
		pHdl, yPoint, xPoint, 0, 0, 0, 0);
}
/* 辅助函数-为图表创建右键弹出菜单(只对Graph类的控件有效) */
void showMenuPopup(int pHdl, int ctrlID, int xPoint, int yPoint){
	int i = getGraphIndex(pHdl, 0);
	int menuBar = NewMenuBar(0);
	int menuIDForPop = NewMenu(menuBar, "" , -1);
	char openStr[25]="Open Analysis Window";
	char closeStr[25]="Close Analysis Window";
	char pauseStr[20] = "Pause";
	char startStr[20] = "Start";
	if(tabFlag == 0){
		NewMenuItem(menuBar, menuIDForPop, signalShowingStat[i]>0?pauseStr:startStr, -1, 0, menuPopupCallback, NULL);
		NewMenuItem(menuBar, menuIDForPop, PopPanels[i]>0?closeStr:openStr, -1, 0, menuPopupCallback, NULL);
	}else{
		NewMenuItem(menuBar, menuIDForPop, signalShowingStat[i]>0?pauseStr:startStr, -1, 0, menuPopupCallback, NULL);
		NewMenuItem(menuBar, menuIDForPop, PopPanels[i]>0?closeStr:openStr, -1, 0, menuPopupCallback, NULL);
	}//if-else
	RunPopupMenu(menuBar, menuIDForPop, 
		pHdl, yPoint, xPoint, 0, 0, 0, 0);
	///DisplayPanel(menuPopupHdl);
}
Пример #3
0
UIMenuItem* CSkelMeshViewer::GetObjectMenu(UIMenuItem* menu)
{
	assert(!menu);
	menu = &NewSubmenu("SkeletalMesh");

	(*menu)
	[
		NewMenuCheckbox("Show bone names\tB", &ShowLabels)
		+NewMenuCheckbox("Show sockets\tA", &ShowAttach)
		+NewMenuCheckbox("Show influences\tI", &DrawFlags, DF_SHOW_INFLUENCES)
		+NewMenuCheckbox("Show mesh UVs\tCtrl+U", &ShowUV)
		+NewMenuSeparator()
		+NewMenuItem(bIsUE4Mesh ? "Find animations ...\tCtrl+A" : "Cycle AnimSets\tCtrl+A")
		.SetCallback(BIND_MEMBER(&CSkelMeshViewer::AttachAnimSet, this))
		+NewMenuItem("Cycle skeleton display\tS")
		.SetCallback(BIND_LAMBDA([this]() { ProcessKey('s'); })) // simulate keypress
		+NewMenuItem("Tag mesh\tCtrl+T")
		.SetCallback(BIND_LAMBDA([this]() { ProcessKey(KEY_CTRL|'t'); })) // simulate keypress
		+NewMenuItem("Untag all meshes")
		.SetCallback(BIND_LAMBDA([this]() { UntagAllMeshes(); }))
	];

	return CMeshViewer::GetObjectMenu(menu);
}
Пример #4
0
//callback associated with the controls on a panel that is loaded at run-time
int CVICALLBACK RuntimeCtrlCB (int panelHandle, int control, int event, void *callbackdata, int eventData1, int eventData2)
{
	char childWindowMenu[MAX_STRING_SIZE];
	int isChildPanel;
	int numCtrls;
	int menuBarHandle;
	int menuID;
	int ctrlType;
	char ctrlString[MAX_STRING_SIZE];
	char menuString[MAX_STRING_SIZE];
	CTRLSTRUCT* ctrlArray = callbackdata;
	int releaseID =0;

	switch(event)
	{
		case EVENT_RIGHT_CLICK:
			if(ctrlArray == NULL)
				return 0;

			menuBarHandle = NewMenuBar (0);
			menuID = NewMenu(menuBarHandle,"",-1);

			GetCtrlAttribute(panelHandle,control,ATTR_CTRL_STYLE,&ctrlType);

			GetStyleNameForCtrl(ctrlType, ctrlString);
			sprintf(menuString,"Control Type: %s",ctrlString);

			NewMenuItem(menuBarHandle,menuID,menuString,-1,0,NULL,NULL);

			GetPanelAttribute(panelHandle,ATTR_NUM_CTRLS,&numCtrls);

			strcpy(ctrlString, FindCtrlCBName(ctrlArray,control,numCtrls));

			sprintf(menuString,"Ctrl Callback: %s",strlen(ctrlString)==0?"<null>":ctrlString);

			NewMenuItem(menuBarHandle,menuID,menuString,-1,0,NULL,NULL);

			InsertSeparator(menuBarHandle, menuID, -1);
			GetPanelAttribute (panelHandle, ATTR_PANEL_PARENT, &isChildPanel);

			if(!isChildPanel)
			   sprintf(childWindowMenu,"Confine Window");
			else
			   sprintf(childWindowMenu,"Release Window");

			releaseID = NewMenuItem (menuBarHandle, menuID, childWindowMenu, -1, 0, 0, 0);

			if(releaseID == RunPopupMenu(menuBarHandle,menuID,panelHandle,eventData1,eventData2,0,0,0,0))
			{
			   SetPanelParenthood(panelHandle,isChildPanel);
			}

			DiscardMenu(menuBarHandle,menuID);
			DiscardMenuBar(menuBarHandle);

			//indicate to the panel that this is a control callback
			gbCtrlCB = 1;
 		break;
	}

	return 0;
}