Exemple #1
0
static HMENU ChangeMenuToPopup ( gui_window *wnd, HMENU hmenu, gui_ctl_id id, hint_type type )
{
    HMENU               popup;
    char                name[MAX_STR];
    unsigned            menu_flags;
    unsigned            attr_flags;

    popup = _wpi_createpopupmenu();
    if( popup != (HMENU)NULL ) {
        _wpi_getmenutext( hmenu, id, name, MAX_STR - 1, FALSE );
        GetMenuFlags( hmenu, id, false, &menu_flags, &attr_flags );
        _wpi_modifymenu( hmenu, id, menu_flags | MF_POPUP, attr_flags,
                         id, popup, name, FALSE );
        GUIDrawMenuBar( wnd );
        InsertPopup( wnd, id, popup, type );
    }

    return( popup );
}
Exemple #2
0
bool CRightView::OnContextMenu(CPoint point, int /*nLine*/, DiffStates state)
{
	if (!this->IsWindowVisible())
		return false;

	CMenu popup;
	if (!popup.CreatePopupMenu())
		return false;

#define ID_USEBLOCK 1
#define ID_USEFILE 2
#define ID_USETHEIRANDYOURBLOCK 3
#define ID_USEYOURANDTHEIRBLOCK 4
#define ID_USEBOTHTHISFIRST 5
#define ID_USEBOTHTHISLAST 6

	const UINT uFlags = GetMenuFlags( state );

	CString temp;

	if (m_pwndBottom->IsWindowVisible())
	{
		temp.LoadString(IDS_VIEWCONTEXTMENU_USETHISBLOCK);
	}
	else		
		temp.LoadString(IDS_VIEWCONTEXTMENU_USEOTHERBLOCK);
	popup.AppendMenu(uFlags, ID_USEBLOCK, temp);

	if (m_pwndBottom->IsWindowVisible())
	{
		temp.LoadString(IDS_VIEWCONTEXTMENU_USETHISFILE);
	}
	else
		temp.LoadString(IDS_VIEWCONTEXTMENU_USEOTHERFILE);
	popup.AppendMenu(MF_STRING | MF_ENABLED, ID_USEFILE, temp);

	if (m_pwndBottom->IsWindowVisible())
	{
		temp.LoadString(IDS_VIEWCONTEXTMENU_USEYOURANDTHEIRBLOCK);
		popup.AppendMenu(uFlags, ID_USEYOURANDTHEIRBLOCK, temp);
		temp.LoadString(IDS_VIEWCONTEXTMENU_USETHEIRANDYOURBLOCK);
		popup.AppendMenu(uFlags, ID_USETHEIRANDYOURBLOCK, temp);
	}
	else
	{
		temp.LoadString(IDS_VIEWCONTEXTMENU_USEBOTHTHISFIRST);
		popup.AppendMenu(uFlags, ID_USEBOTHTHISFIRST, temp);
		temp.LoadString(IDS_VIEWCONTEXTMENU_USEBOTHTHISLAST);
		popup.AppendMenu(uFlags, ID_USEBOTHTHISLAST, temp);
	}

	AddCutCopyAndPaste(popup);

	CompensateForKeyboard(point);

	int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);
	viewstate rightstate;
	viewstate bottomstate;
	viewstate leftstate;
	switch (cmd)
	{
	case ID_EDIT_COPY:
		OnEditCopy();
		return true;
	case ID_EDIT_CUT:
		OnEditCopy();
		RemoveSelectedText();
		return false;
	case ID_EDIT_PASTE:
		PasteText();
		return false;
	case ID_USEFILE:
		UseFile(false);
		break;
	case ID_USEBLOCK:
		UseBlock(false);
		break;
	case ID_USEYOURANDTHEIRBLOCK:
		UseYourAndTheirBlock(rightstate, bottomstate, leftstate);
		CUndo::GetInstance().AddState(leftstate, rightstate, bottomstate, m_ptCaretPos);
		break;
	case ID_USETHEIRANDYOURBLOCK:
		UseTheirAndYourBlock(rightstate, bottomstate, leftstate);
		CUndo::GetInstance().AddState(leftstate, rightstate, bottomstate, m_ptCaretPos);
		break;
	case ID_USEBOTHTHISFIRST:
		UseBothRightFirst(rightstate, leftstate);
		CUndo::GetInstance().AddState(leftstate, rightstate, bottomstate, m_ptCaretPos);
		break;
	case ID_USEBOTHTHISLAST:
		UseBothLeftFirst(rightstate, leftstate);
		CUndo::GetInstance().AddState(leftstate, rightstate, bottomstate, m_ptCaretPos);
		break;
	default:
		return false;
	} // switch (cmd) 
	return false;
}