//----------------------------------------------------------------------------- // Purpose: reloads the control settings from file //----------------------------------------------------------------------------- void BuildGroup::ReloadControlSettings() { delete m_hBuildDialog.Get(); m_hBuildDialog = NULL; // loop though objects in the current control group and remove them all // the 0th panel is always the contextPanel which is not deletable for( int i = 1; i < _panelDar.Count(); i++ ) { if (!_panelDar[i].Get()) // this can happen if we had two of the same handle in the list { _panelDar.Remove(i); --i; continue; } // only delete deletable panels, as the only deletable panels // are the ones created using the resource file if ( _panelDar[i].Get()->IsBuildModeDeletable()) { delete _panelDar[i].Get(); _panelDar.Remove(i); --i; } } if (m_pResourceName) { EditablePanel *edit = dynamic_cast<EditablePanel *>(m_pParentPanel); if (edit) { edit->LoadControlSettings(m_pResourceName, m_pResourcePathID); } else { LoadControlSettings(m_pResourceName, m_pResourcePathID); } } _controlGroup.RemoveAll(); ActivateBuildDialog(); }
//----------------------------------------------------------------------------- // Purpose: changes which control settings are currently loaded //----------------------------------------------------------------------------- void BuildGroup::ChangeControlSettingsFile(const char *controlResourceName) { // clear any current state _controlGroup.RemoveAll(); _currentPanel = m_pParentPanel; // load the new state, via the dialog if possible EditablePanel *edit = dynamic_cast<EditablePanel *>(m_pParentPanel); if (edit) { edit->LoadControlSettings(controlResourceName, m_pResourcePathID); } else { LoadControlSettings(controlResourceName, m_pResourcePathID); } // force it to update KeyValues *keyval = new KeyValues("SetActiveControl"); keyval->SetPtr("PanelPtr", GetCurrentPanel()); ivgui()->PostMessage(m_hBuildDialog->GetVPanel(), keyval, NULL); }