void CCommEditTool::BringConsoleToFront() { CConsolePage *p = GetConsole(); Panel *pPage = p->GetParent(); if ( pPage == NULL ) { OnToggleConsole(); } else { ToolWindow *tw = dynamic_cast< ToolWindow * >( pPage->GetParent() ); if ( tw ) { if ( tw->GetActivePage() != p ) { tw->SetActivePage( p ); vgui::surface()->SetForegroundWindow( tw->GetVPanel() ); p->TextEntryRequestFocus(); } else { PropertySheet *pSheet = tw->GetPropertySheet(); int nPageCount = pSheet->GetNumPages(); int i; for ( i = 0; i < nPageCount; ++i ) { if ( p == pSheet->GetPage(i) ) break; } i = ( i + 1 ) % nPageCount; pSheet->SetActivePage( pSheet->GetPage(i) ); } } } }
PropertySheet* PropertySheet::clone() { PropertySheet* pSheet = new PropertySheet(); Properties::iterator iter = m_mProperties.begin(); while (iter != m_mProperties.end()) { pSheet->addProperty(iter->second->clone()); iter++; } return pSheet; }
FloatProperty::FloatProperty(QWidget *parent, PropertySheet &sheet, std::string name, float value, std::function<bool(float)> setter) : _value(value), _setter(std::move(setter)) { _nameLabel = new QLabel(QString::fromStdString(name + ":"), parent); _lineEdit = new QLineEdit(QString::number(value), parent); connect(_lineEdit, SIGNAL(editingFinished()), this, SLOT(textEdited())); sheet.addWidget(_nameLabel, sheet.rowCount(), 0); sheet.addWidget(_lineEdit, sheet.rowCount() - 1, 1); }
MediumProperty::MediumProperty(QWidget *parent, PropertySheet &sheet, std::string name, std::shared_ptr<Medium> value, std::function<bool(std::shared_ptr<Medium> &)> setter, Scene *scene) : _value(std::move(value)), _setter(std::move(setter)), _scene(scene) { _nameLabel = new QLabel(QString::fromStdString(name + ":"), parent); _mediumSelector = new QComboBox(parent); buildMediumList(); sheet.addWidget(_nameLabel, sheet.rowCount(), 0); sheet.addWidget(_mediumSelector, sheet.rowCount() - 1, 1); }
void PropertySheet::OnPanelDropped( CUtlVector< KeyValues * >& msglist ) { if ( msglist.Count() != 1 ) { return; } PropertySheet *sheet = IsDroppingSheet( msglist ); if ( !sheet ) { // Defer to active page if ( _activePage && _activePage->IsDropEnabled() ) { return _activePage->OnPanelDropped( msglist ); } return; } KeyValues *data = msglist[ 0 ]; Panel *page = reinterpret_cast< Panel * >( data->GetPtr( "propertypage" ) ); char const *title = data->GetString( "tabname", "" ); if ( !page || !sheet ) return; // Can only create if sheet was part of a ToolWindow derived object ToolWindow *tw = dynamic_cast< ToolWindow * >( sheet->GetParent() ); if ( tw ) { IToolWindowFactory *factory = tw->GetToolWindowFactory(); if ( factory ) { bool showContext = sheet->PageHasContextMenu( page ); sheet->RemovePage( page ); if ( sheet->GetNumPages() == 0 ) { tw->MarkForDeletion(); } AddPage( page, title, NULL, showContext ); } } }
virtual void OnCreateDragData( KeyValues *msg ) { Assert( m_pParent->IsDraggableTab() ); msg->SetPtr( "propertypage", m_pPage ); msg->SetPtr( "propertysheet", m_pParent ); char sz[ 256 ]; GetText( sz, sizeof( sz ) ); msg->SetString( "tabname", sz ); msg->SetString( "text", sz ); }
virtual void OnDragFailed( CUtlVector< KeyValues * >& msglist ) { PropertySheet *sheet = IsDroppingSheet( msglist ); if ( !sheet ) return; // Create a new property sheet if ( m_pParent->IsDraggableTab() ) { if ( msglist.Count() == 1 ) { KeyValues *data = msglist[ 0 ]; int screenx = data->GetInt( "screenx" ); int screeny = data->GetInt( "screeny" ); // m_pParent->ScreenToLocal( screenx, screeny ); if ( !m_pParent->IsWithin( screenx, screeny ) ) { Panel *page = reinterpret_cast< Panel * >( data->GetPtr( "propertypage" ) ); PropertySheet *sheet = reinterpret_cast< PropertySheet * >( data->GetPtr( "propertysheet" ) ); char const *title = data->GetString( "tabname", "" ); if ( !page || !sheet ) return; // Can only create if sheet was part of a ToolWindow derived object ToolWindow *tw = dynamic_cast< ToolWindow * >( sheet->GetParent() ); if ( tw ) { IToolWindowFactory *factory = tw->GetToolWindowFactory(); if ( factory ) { bool hasContextMenu = sheet->PageHasContextMenu( page ); sheet->RemovePage( page ); factory->InstanceToolWindow( tw->GetParent(), sheet->ShouldShowContextButtons(), page, title, hasContextMenu ); if ( sheet->GetNumPages() == 0 ) { tw->MarkForDeletion(); } } } } } } }
virtual void OnPanelDropped( CUtlVector< KeyValues * >& msglist ) { PropertySheet *sheet = IsDroppingSheet( msglist ); if ( sheet ) { Panel *target = GetParent()->GetDropTarget( msglist ); if ( target ) { // Fixme, mouse pos could be wrong... target->OnPanelDropped( msglist ); } } // Defer to active page... Panel *active = m_pParent->GetActivePage(); if ( !active || !active->IsDroppable( msglist ) ) return; active->OnPanelDropped( msglist ); }
virtual bool IsDroppable( CUtlVector< KeyValues * >&msglist ) { // It's never droppable, but should activate FireActionSignal(); SetSelected(true); Repaint(); if ( !GetParent() ) return false; PropertySheet *sheet = IsDroppingSheet( msglist ); if ( sheet ) { return GetParent()->IsDroppable( msglist ); } // Defer to active page... Panel *active = m_pParent->GetActivePage(); if ( !active || !active->IsDroppable( msglist ) ) return false; return active->IsDroppable( msglist ); }
PageTab(PropertySheet *parent, const char *panelName, const char *text, char const *imageName, int maxTabWidth, Panel *page, bool showContextButton ) : Button( (Panel *)parent, panelName, text), m_pParent( parent ), m_pPage( page ), m_pImage( 0 ), m_pszImageName( 0 ), m_bShowContextLabel( showContextButton ) { SetCommand(new KeyValues("TabPressed")); _active = false; m_bMaxTabWidth = maxTabWidth; SetDropEnabled( true ); SetDragEnabled( m_pParent->IsDraggableTab() ); if ( imageName ) { m_pImage = new ImagePanel( this, text ); int buflen = Q_strlen( imageName ) + 1; m_pszImageName = new char[ buflen ]; Q_strncpy( m_pszImageName, imageName, buflen ); } SetMouseClickEnabled( MOUSE_RIGHT, true ); m_pContextLabel = m_bShowContextLabel ? new ContextLabel( this, "Context", "9" ) : NULL; }