本文整理汇总了C++中Panel::GetVPanel方法的典型用法代码示例。如果您正苦于以下问题:C++ Panel::GetVPanel方法的具体用法?C++ Panel::GetVPanel怎么用?C++ Panel::GetVPanel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Panel
的用法示例。
在下文中一共展示了Panel::GetVPanel方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnAskPageClose
void CEditorRoot::OnAskPageClose( KeyValues *pKV )
{
Panel *pPageTab = (Panel*)pKV->GetPtr( "PageTab" );
CNodeView *pGraph = GetFlowGraph( pKV->GetInt( "TabIndex" ) );
if ( pPageTab == NULL ||
pGraph == NULL )
{
Assert( 0 );
return;
}
ConfirmTabClose( pPageTab->GetVPanel() );
#if 0
if ( !m_bWarnOnClose || !pGraph->IsSaveDirty() )
ConfirmTabClose( pPageTab->GetVPanel() );
else
{
const char *pszShadername = pGraph->GetShadername();
char shortName[MAX_PATH*4];
KeyValues *pKVResponse_Yes = new KeyValues( "ResponseGraphSave", "DoSave", 1 );
KeyValues *pKVResponse_No = new KeyValues( "ResponseGraphSave", "DoSave", 0 );
if ( pszShadername == NULL )
{
pKVResponse_No->deleteThis();
pKVResponse_No = new KeyValues( "ResponseGraphSave", "DoSave", 2 );
}
else
{
Q_FileBase( pszShadername, shortName, sizeof( shortName ) );
}
pKVResponse_Yes->SetPtr( "PageTab", pPageTab );
pKVResponse_No->SetPtr( "PageTab", pPageTab );
pKVResponse_Yes->SetPtr( "Graph", pGraph );
pKVResponse_No->SetPtr( "Graph", pGraph );
vgui::PromptSimple *prompt = new vgui::PromptSimple( this, "Unsaved changes" );
prompt->MoveToCenterOfScreen();
if ( pszShadername != NULL )
prompt->SetText( VarArgs( "The graph %s has unsaved changes. Save now?", shortName ) );
else
prompt->SetText( "This graph has not been saved yet, are you sure that you want to close it?" );
prompt->AddButton( "Yes", pKVResponse_Yes );
prompt->AddButton( "No", pKVResponse_No );
prompt->MakeReadyForUse();
prompt->InvalidateLayout( true, true );
}
#endif
}
示例2: OnOpenContextMenu
//-----------------------------------------------------------------------------
// Purpose: catches the opencontextmenu event
//-----------------------------------------------------------------------------
void PropertySheet::OnOpenContextMenu( KeyValues *params )
{
// tell parent
KeyValues *kv = params->MakeCopy();
PostActionSignal( kv );
Panel *page = reinterpret_cast< Panel * >( params->GetPtr( "page" ) );
if ( page )
{
PostMessage( page->GetVPanel(), params->MakeCopy() );
}
}
示例3: OnResponseGraphSave
void CEditorRoot::OnResponseGraphSave( KeyValues *pKV )
{
int iResponse = pKV->GetInt( "DoSave" );
const bool bSave = iResponse == 1;
const bool bAbort = iResponse == 2;
if ( bAbort )
return;
Panel *pPageTab = (Panel*)pKV->GetPtr( "PageTab" );
CNodeView *pGraph = (CNodeView*)pKV->GetPtr( "Graph" );
if ( bSave && pGraph != NULL )
pGraph->SaveToFile();
ConfirmTabClose( pPageTab->GetVPanel() );
}
示例4: GetCurrentKeyFocus
//-----------------------------------------------------------------------------
// Purpose: Get the panel that currently has keyfocus
//-----------------------------------------------------------------------------
VPANEL EditablePanel::GetCurrentKeyFocus()
{
Panel *focus = m_NavGroup.GetCurrentFocus();
if (focus == this)
return NULL;
if (focus)
{
if (focus->IsPopup())
return BaseClass::GetCurrentKeyFocus();
// chain down the editpanel hierarchy
VPANEL subFocus = focus->GetCurrentKeyFocus();
if (subFocus)
return subFocus;
// hit a leaf panel, return that
return focus->GetVPanel();
}
return BaseClass::GetCurrentKeyFocus();
}
示例5: RequestFocusPrev
//-----------------------------------------------------------------------------
// Purpose: Sets the focus to the previous panel in the tab order
// Input : *panel - panel currently with focus
//-----------------------------------------------------------------------------
bool FocusNavGroup::RequestFocusPrev(VPANEL panel)
{
if(panel==NULL)
return false;
_currentFocus = NULL;
int newPosition = 9999999;
if (panel)
{
newPosition = ipanel()->GetTabPosition(panel);
}
bool bFound = false;
bool bRepeat = true;
Panel *best = NULL;
while (1)
{
newPosition--;
if (newPosition > 0)
{
int bestPosition = 0;
// look for the next tab position
for (int i = 0; i < _mainPanel->GetChildCount(); i++)
{
Panel *child = _mainPanel->GetChild(i);
if (child && child->IsVisible() && child->IsEnabled() && child->GetTabPosition())
{
int tabPosition = child->GetTabPosition();
if (tabPosition == newPosition)
{
// we've found the right tab
best = child;
bestPosition = newPosition;
// don't loop anymore since we've found the correct panel
break;
}
else if (tabPosition < newPosition && tabPosition > bestPosition)
{
// record the match since this is the closest so far
bestPosition = tabPosition;
best = child;
}
}
}
if (!bRepeat)
break;
if (best)
break;
}
else
{
// reset new position for next loop
newPosition = 9999999;
}
// haven't found an item
if (!_topLevelFocus)
{
// check to see if we should push the focus request up
if (_mainPanel->GetVParent() && _mainPanel->GetVParent() != surface()->GetEmbeddedPanel())
{
// we're not a top level panel, so forward up the request instead of looping
if (ipanel()->RequestFocusPrev(_mainPanel->GetVParent(), _mainPanel->GetVPanel()))
{
bFound = true;
SetCurrentDefaultButton(NULL);
break;
}
}
}
// not found an item, loop back
newPosition = 9999999;
bRepeat = false;
}
if (best)
{
_currentFocus = best->GetVPanel();
best->RequestFocus(-1);
bFound = true;
if (!CanButtonBeDefault(best->GetVPanel()))
{
if (_defaultButton)
{
SetCurrentDefaultButton(_defaultButton);
}
else
{
SetCurrentDefaultButton(NULL);
//.........这里部分代码省略.........
示例6: RequestFocusNext
//-----------------------------------------------------------------------------
// Purpose: Sets the focus to the previous panel in the tab order
// Input : *panel - panel currently with focus
//-----------------------------------------------------------------------------
bool FocusNavGroup::RequestFocusNext(VPANEL panel)
{
// basic recursion guard, in case user has set up a bad focus hierarchy
static int stack_depth = 0;
stack_depth++;
_currentFocus = NULL;
int newPosition = 0;
if (panel)
{
newPosition = ipanel()->GetTabPosition(panel);
}
bool bFound = false;
bool bRepeat = true;
Panel *best = NULL;
while (1)
{
newPosition++;
int bestPosition = 999999;
// look for the next tab position
for (int i = 0; i < _mainPanel->GetChildCount(); i++)
{
Panel *child = _mainPanel->GetChild(i);
if ( !child )
continue;
if (child && child->IsVisible() && child->IsEnabled() && child->GetTabPosition())
{
int tabPosition = child->GetTabPosition();
if (tabPosition == newPosition)
{
// we've found the right tab
best = child;
bestPosition = newPosition;
// don't loop anymore since we've found the correct panel
break;
}
else if (tabPosition > newPosition && tabPosition < bestPosition)
{
// record the match since this is the closest so far
bestPosition = tabPosition;
best = child;
}
}
}
if (!bRepeat)
break;
if (best)
break;
// haven't found an item
// check to see if we should push the focus request up
if (!_topLevelFocus)
{
if (_mainPanel->GetVParent() && _mainPanel->GetVParent() != surface()->GetEmbeddedPanel())
{
// we're not a top level panel, so forward up the request instead of looping
if (stack_depth < 15)
{
if (ipanel()->RequestFocusNext(_mainPanel->GetVParent(), _mainPanel->GetVPanel()))
{
bFound = true;
SetCurrentDefaultButton(NULL);
break;
}
// if we find one then we break, otherwise we loop
}
}
}
// loop back
newPosition = 0;
bRepeat = false;
}
if (best)
{
_currentFocus = best->GetVPanel();
best->RequestFocus(1);
bFound = true;
if (!CanButtonBeDefault(best->GetVPanel()))
{
if (_defaultButton)
{
SetCurrentDefaultButton(_defaultButton);
}
else
{
//.........这里部分代码省略.........