示例#1
0
 int InputDevice::GetAxisIndex(const Axis* axis) const
 {
    for (int i = 0; i < GetAxisCount(); ++i)
    {
       if (GetAxis(i) == axis)
       {
          return i;
       }
    }
    return -1;
 }
示例#2
0
// Take the result of the popup menu selection, figure out
// what the user wanted, and take the appropriate action
int		CXYChart::InterpretPopupMenuItem( int result )
{
	int			whichAxis, returnVal;

	if( result >= kMinimumPopupValue ) return result;

	if( result <= 0 ) return kPopupError;

	if( result <= kMenuMinorVertGrids )
	{
		switch( result )
		{
		case kMenuMajorHorizGrids: m_UseMajorHorizontalGrids = !m_UseMajorHorizontalGrids; break;
		case kMenuMajorVertGrids: m_UseMajorVerticalGrids = !m_UseMajorVerticalGrids; break;
		case kMenuMinorHorizGrids: m_UseMinorHorizontalGrids = !m_UseMinorHorizontalGrids; break;
		case kMenuMinorVertGrids: m_UseMinorVerticalGrids = !m_UseMinorVerticalGrids; break;
		default: break;
		}

		return kPopupUpdate;
	}

	if( result >= kMenuTitleFont && result < kMenuTitleFont + nFontSizes )
	{
		m_TitleFont.lfHeight = fontSizes[result-kMenuTitleFont];
		return kPopupUpdate;
	}

	if( result == kMenuPlotSettings )
	{
		if( PlotSettings() ) return kPopupUpdate; else return kPopupNoAction;
	}

	if( result >= kMenuAxisMinimum && result < kMenuAxisMinimum + (kMaxAxes*kMenuAxisRange) )
	{
		// These must be axis sets
		whichAxis = (result-kMenuAxisMinimum) / kMenuAxisRange;

		if( whichAxis < 0 || whichAxis > GetAxisCount() ) return kPopupError;

		if( result % kMenuAxisRange == kMenuAxisRange-1 ) // have to do this one manually
			if( AxisSettings(whichAxis) ) return kPopupUpdate; else return kPopupNoAction;

		if( (returnVal = GetAxis(whichAxis)->InterpretAxisPopupMenuItem( (result-kMenuAxisMinimum) % kMenuAxisRange ) ) == kPopupError )
			return result;
		else
			return returnVal;
	}

	if( result >= kMenuDataMinimum && result < kMenuDataMinimum + kMaxDataSets*kMenuDataRange )
	{
		int			whichDataSet;

		whichDataSet = (result-kMenuDataMinimum) / kMenuDataRange;

		if( whichDataSet < 0 || whichDataSet > GetDataSetCount() ) return kPopupError;

		if( (result-kMenuDataMinimum) % kMenuDataRange == kMenuDataRange-1 ) // have to do this one manually
			if( DataSettings(whichDataSet) ) return kPopupUpdate; else return kPopupNoAction;

		if( (returnVal = InterpretDataSetPopupMenuItem( whichDataSet, (result-kMenuDataMinimum) % kMenuDataRange ) ) == kPopupError )
			return result;
		else
			return returnVal;
	}

	return kPopupError;
}
示例#3
0
// Show the contextual menu (shortcut menu) for an XY Chart. If passedMenu
// is not NULL, the menu is appended to passedMenu, otherwise a new
// menu is created
int		CXYChart::ShowPopupMenu( CMenu *passedMenu, CWnd *window, UINT nFlags, CPoint point )
{
	CMenu			menu, *menuPtr;
	CMenu			axisMenus[kMaxAxes];
	int				result, i;
	UINT			flag;

	if( window == NULL ) return FALSE;
	
	if( passedMenu == NULL || (!::IsMenu(passedMenu->m_hMenu)) )
	{
		menuPtr = &menu;
		menuPtr->CreatePopupMenu();
	}
	else
		menuPtr = passedMenu;

	// Grids sub-menu
	{
	CMenu		gridSubMenu;
	gridSubMenu.CreatePopupMenu();
	flag = GetPopupCheckedFlag(this->m_UseMajorHorizontalGrids);
	gridSubMenu.AppendMenu( MF_STRING | flag, kMenuMajorHorizGrids, _T("Major Horizontal Grids"));
	flag = GetPopupCheckedFlag(this->m_UseMajorVerticalGrids);
	gridSubMenu.AppendMenu( MF_STRING | flag, kMenuMajorVertGrids, _T("Major Vertical Grids"));
	flag = GetPopupCheckedFlag(this->m_UseMinorHorizontalGrids);
	gridSubMenu.AppendMenu( MF_STRING | flag, kMenuMinorHorizGrids, _T("Minor Horizontal Grids"));
	flag = GetPopupCheckedFlag(this->m_UseMinorVerticalGrids);
	gridSubMenu.AppendMenu( MF_STRING | flag, kMenuMinorVertGrids, _T("Minor Vertical Grids"));
	menuPtr->AppendMenu( MF_POPUP | MF_STRING, (UINT) gridSubMenu.GetSafeHmenu(), _T("Grids"));
	}

	// Separator
	menuPtr->AppendMenu( MF_SEPARATOR);

	// Check for a title, and put in title size if needed
	if( this->m_Title != "" )
	{
		AddFontSizePopup( menuPtr, _T("Title size"), this->m_TitleFont.lfHeight, kMenuTitleFont );

		// Separator
		menuPtr->AppendMenu( MF_SEPARATOR);
	}

	// Axes
	for( i = 0; i < GetAxisCount(); i++ )
	{
		GetAxis(i)->AddAxisPopupMenus( menuPtr, (kMenuAxisRange*i)+kMenuAxisMinimum );
	}

	// Separator
	if( GetAxisCount() > 0 )
		menuPtr->AppendMenu( MF_SEPARATOR);

	// Data sets
	for( i = 0; i < GetDataSetCount(); i++ )
	{
		AddDataPopupMenus( i, menuPtr, (kMenuDataRange*i) + kMenuDataMinimum );
	}

	// Separator
	if( GetDataSetCount() > 0 )
		menuPtr->AppendMenu( MF_SEPARATOR);

	// Settings...
	menuPtr->AppendMenu( MF_STRING, kMenuPlotSettings, _T("Settings..."));

	result = menuPtr->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, point.x,
		point.y, window );

	return InterpretPopupMenuItem( result );
}