X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/afc515904461bec3733682252de9eb1b01af1fe4..86a9144fd0a042f0ecb6ebd0c748b5a33341159a:/utils/configtool/src/configtooldoc.cpp diff --git a/utils/configtool/src/configtooldoc.cpp b/utils/configtool/src/configtooldoc.cpp index 660af43535..6e7a276271 100644 --- a/utils/configtool/src/configtooldoc.cpp +++ b/utils/configtool/src/configtooldoc.cpp @@ -9,7 +9,7 @@ // Licence: ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "configtooldoc.h" #endif @@ -90,26 +90,24 @@ bool ctConfigToolDoc::OnCloseDocument() UpdateAllViews (NULL, & hint); DeleteItems(); - return TRUE; + return true; } else { - return FALSE; + return false; } } // Saves the doc bool ctConfigToolDoc::Save() { - bool ret = FALSE; + if (!IsModified() && m_savedYet) return true; - if (!IsModified() && m_savedYet) return TRUE; - if (m_documentFile == wxT("") || !m_savedYet) - ret = SaveAs(); - else - ret = OnSaveDocument(m_documentFile); + bool ret = (m_documentFile == wxT("") || !m_savedYet) ? + SaveAs() : + OnSaveDocument(m_documentFile); if ( ret ) - SetDocumentSaved(TRUE); + SetDocumentSaved(true); return ret; } @@ -138,8 +136,8 @@ bool ctConfigToolDoc::OnCreate(const wxString& path, long flags) SetTopItem(rootItem); - Modify(FALSE); - SetDocumentSaved(FALSE); + Modify(false); + SetDocumentSaved(false); wxString rootName(wxT("untitled")); wxStripExtension(rootName); @@ -158,7 +156,7 @@ bool ctConfigToolDoc::OnCreate(const wxString& path, long flags) ctConfigToolHint hint(NULL, ctInitialUpdate); UpdateAllViews (NULL, & hint); - SetFilename(GetFilename(), TRUE); + SetFilename(GetFilename(), true); } } return success; @@ -183,7 +181,7 @@ bool ctConfigToolDoc::OnSaveDocument(const wxString& filename) if (wxFileExists(tempFilename)) wxRemoveFile(tempFilename); - bool leaveBackup = TRUE; + bool leaveBackup = true; bool saved = DoSave(tempFilename); @@ -221,9 +219,9 @@ bool ctConfigToolDoc::OnSaveDocument(const wxString& filename) wxRemoveFile(tempFilename); } - Modify(FALSE); + Modify(false); ((ctConfigToolView*)GetFirstView())->OnChangeFilename(); - SetDocumentSaved(TRUE); + SetDocumentSaved(true); SetFilename(filename); wxGetApp().GetSettings().m_lastFilename = filename; } else @@ -255,7 +253,7 @@ bool ctConfigToolDoc::OnOpenDocument(const wxString& filename) UpdateAllViews (NULL, & hint); } - SetDocumentSaved(TRUE); // Necessary or it will pop up the Save As dialog + SetDocumentSaved(true); // Necessary or it will pop up the Save As dialog return opened; } @@ -265,16 +263,16 @@ bool ctConfigToolDoc::DoSave(const wxString& filename) { wxFileOutputStream stream(filename); if (!stream.Ok()) - return FALSE; + return false; stream << wxT("\n"); - stream << wxT(""); + stream << wxT(""); DoSave(m_topItem, stream, 1); stream << wxT("\n\n"); - return TRUE; + return true; } inline static void OutputIndentation(wxOutputStream& stream, int indent) @@ -370,7 +368,7 @@ bool ctConfigToolDoc::DoSave(ctConfigItem* item, wxOutputStream& stream, int ind OutputIndentation(stream, indent*2); stream << wxT(""); - return TRUE; + return true; } /// Open the settings file @@ -391,20 +389,20 @@ bool ctConfigToolDoc::DoOpen(const wxString& filename) wxSimpleHtmlTag* firstSettingTag = settingsTag->GetChildren(); if (firstSettingTag) DoOpen(firstSettingTag, NULL); - return TRUE; + return true; } - return TRUE; + return true; } } - return FALSE; + return false; } static bool GetHtmlBoolValue(const wxString& value) { if (value == wxT("true") || value == wxT("TRUE") || value == wxT("1")) - return TRUE; + return true; else - return FALSE; + return false; } static int GetHtmlIntegerValue(const wxString& value) @@ -508,7 +506,7 @@ bool ctConfigToolDoc::DoOpen(wxSimpleHtmlTag* tag, ctConfigItem* parent) childTag->GetAttributeValue(description, wxT("description")); if (type == wxT("bool")) - prop->GetVariant() = wxVariant((bool) FALSE, name); + prop->GetVariant() = wxVariant(false, name); else if (type == wxT("double")) prop->GetVariant() = wxVariant((double) 0.0, name); else if (type == wxT("long")) @@ -516,7 +514,7 @@ bool ctConfigToolDoc::DoOpen(wxSimpleHtmlTag* tag, ctConfigItem* parent) else prop->GetVariant() = wxVariant(wxT(""), name); prop->SetDescription(description); - prop->SetCustom(TRUE); + prop->SetCustom(true); prop->SetEditorType(editorType); if (!choices.IsEmpty()) { @@ -534,7 +532,7 @@ bool ctConfigToolDoc::DoOpen(wxSimpleHtmlTag* tag, ctConfigItem* parent) else if (prop->GetVariant().GetType() == wxT("long")) prop->GetVariant() = (long) GetHtmlIntegerValue(childTag->GetNext()->GetTagText()); else if (prop->GetVariant().GetType() == wxT("bool")) - prop->GetVariant() = (bool) GetHtmlBoolValue(childTag->GetNext()->GetTagText()); + prop->GetVariant() = GetHtmlBoolValue(childTag->GetNext()->GetTagText()); else if (prop->GetVariant().GetType() == wxT("double")) prop->GetVariant() = (double) GetHtmlDoubleValue(childTag->GetNext()->GetTagText()); } @@ -543,7 +541,7 @@ bool ctConfigToolDoc::DoOpen(wxSimpleHtmlTag* tag, ctConfigItem* parent) } childTag = childTag->GetNext(); } - return TRUE; + return true; } /// Clear dependencies @@ -681,8 +679,8 @@ wxString ctConfigToolDoc::GenerateConfigureCommand() wxString str; str << wxT("# configurewx\n# Generated by wxConfigTool\n\n"); - wxString path = GetFrameworkDir(TRUE); - bool makeUnix = TRUE; + wxString path = GetFrameworkDir(true); + bool makeUnix = true; if (!path.IsEmpty()) { if (makeUnix) @@ -848,7 +846,7 @@ ctConfigItem* ctConfigToolDoc::FindNextSibling(ctConfigItem* item) ctConfigCommand::ctConfigCommand(const wxString& name, int cmdId, ctConfigItem* activeState, ctConfigItem* savedState, ctConfigItem* parent, ctConfigItem* insertBefore, - bool ignoreFirstTime): wxCommand(TRUE, name) + bool ignoreFirstTime): wxCommand(true, name) { m_activeState = activeState; m_savedState = savedState; @@ -861,7 +859,7 @@ ctConfigCommand::ctConfigCommand(const wxString& name, int cmdId, ctConfigCommand::ctConfigCommand(const wxString& name, int cmdId, ctConfigItem* activeState, ctProperties* properties, - bool ignoreFirstTime): wxCommand(TRUE, name) + bool ignoreFirstTime): wxCommand(true, name) { m_activeState = activeState; m_savedState = NULL; @@ -883,12 +881,12 @@ ctConfigCommand::~ctConfigCommand() bool ctConfigCommand::Do() { - return DoAndUndo(TRUE); + return DoAndUndo(true); } bool ctConfigCommand::Undo() { - return DoAndUndo(FALSE); + return DoAndUndo(false); } // Combine Do and Undo into one @@ -916,7 +914,7 @@ bool ctConfigCommand::DoAndUndo(bool doCmd) m_savedState = m_activeState; m_activeState = NULL; - m_savedState->GetDocument()->Modify(TRUE); + m_savedState->GetDocument()->Modify(true); ctConfigToolView* view = (ctConfigToolView*) m_savedState->GetDocument()->GetFirstView(); view->OnChangeFilename(); } @@ -925,7 +923,7 @@ bool ctConfigCommand::DoAndUndo(bool doCmd) wxASSERT(m_savedState != NULL); wxASSERT(m_activeState == NULL); - m_savedState->GetDocument()->Modify(TRUE); + m_savedState->GetDocument()->Modify(true); m_savedState->Attach(m_parent, m_insertBefore); ctConfigToolView* view = (ctConfigToolView*) m_savedState->GetDocument()->GetFirstView(); view->AddItems(wxGetApp().GetMainFrame()->GetConfigTreeCtrl(), m_savedState); @@ -944,7 +942,7 @@ bool ctConfigCommand::DoAndUndo(bool doCmd) wxASSERT(m_savedState != NULL); wxASSERT(m_activeState == NULL); - m_savedState->GetDocument()->Modify(TRUE); + m_savedState->GetDocument()->Modify(true); m_savedState->Attach(m_parent, m_insertBefore); ctConfigToolView* view = (ctConfigToolView*) m_savedState->GetDocument()->GetFirstView(); view->AddItems(wxGetApp().GetMainFrame()->GetConfigTreeCtrl(), m_savedState); @@ -958,7 +956,7 @@ bool ctConfigCommand::DoAndUndo(bool doCmd) wxASSERT(m_savedState == NULL); wxASSERT(m_activeState != NULL); - m_activeState->GetDocument()->Modify(TRUE); + m_activeState->GetDocument()->Modify(true); ctConfigToolView* view = (ctConfigToolView*) m_activeState->GetDocument()->GetFirstView(); m_activeState->Detach(); m_savedState = m_activeState; @@ -974,7 +972,7 @@ bool ctConfigCommand::DoAndUndo(bool doCmd) wxASSERT(m_savedState != NULL); wxASSERT(m_activeState == NULL); - m_savedState->GetDocument()->Modify(TRUE); + m_savedState->GetDocument()->Modify(true); m_savedState->Attach(m_parent, m_insertBefore); ctConfigToolView* view = (ctConfigToolView*) m_savedState->GetDocument()->GetFirstView(); view->AddItems(wxGetApp().GetMainFrame()->GetConfigTreeCtrl(), m_savedState); @@ -988,7 +986,7 @@ bool ctConfigCommand::DoAndUndo(bool doCmd) wxASSERT(m_savedState == NULL); wxASSERT(m_activeState != NULL); - m_activeState->GetDocument()->Modify(TRUE); + m_activeState->GetDocument()->Modify(true); m_activeState->Detach(); m_savedState = m_activeState; m_activeState = NULL; @@ -1023,7 +1021,7 @@ bool ctConfigCommand::DoAndUndo(bool doCmd) } node = node->GetNext(); } - m_activeState->GetDocument()->Modify(TRUE); + m_activeState->GetDocument()->Modify(true); ctConfigToolView* view = (ctConfigToolView*) m_activeState->GetDocument()->GetFirstView(); if (view) { @@ -1031,12 +1029,218 @@ bool ctConfigCommand::DoAndUndo(bool doCmd) m_activeState->GetDocument()->UpdateAllViews (NULL, & hint); } } - m_ignoreThis = FALSE; + m_ignoreThis = false; break; } } - return TRUE; + return true; +} + +IMPLEMENT_CLASS(ctConfiguration, wxObject) + +ctConfiguration::ctConfiguration() +{ + m_treeItemId = wxTreeItemId(); + m_parent = NULL; + m_topItem = NULL; +} + +ctConfiguration::ctConfiguration(ctConfiguration* parent, const wxString& name) +{ + m_treeItemId = wxTreeItemId(); + SetName(name); + m_parent = parent; + if (parent) + parent->AddChild(this); +} + +ctConfiguration::~ctConfiguration() +{ +/* + ctConfigTreeCtrl* treeCtrl = wxGetApp().GetMainFrame()->GetConfigTreeCtrl(); + if (m_treeItemId.IsOk() && treeCtrl) + { + ctTreeItemData* data = (ctTreeItemData*) treeCtrl->GetItemData(m_treeItemId); + if (data) + data->SetConfigItem(NULL); + } + if (GetParent()) + GetParent()->RemoveChild(this); + else + { + if (wxGetApp().GetMainFrame()->GetDocument() && + wxGetApp().GetMainFrame()->GetDocument()->GetTopItem() == this) + wxGetApp().GetMainFrame()->GetDocument()->SetTopItem(NULL); + } +*/ + + Clear(); +} + +/// Assignment operator. +void ctConfiguration::operator= (const ctConfiguration& configuration) +{ + m_name = configuration.m_name; + m_description = configuration.m_description; +} + +/// Clear children +void ctConfiguration::Clear() +{ + wxNode* node = m_children.GetFirst(); + while (node) + { + wxNode* next = node->GetNext(); + ctConfiguration* child = (ctConfiguration*) node->GetData(); + + // This should delete 'node' too, assuming + // child's m_parent points to 'this'. If not, + // it'll be cleaned up by m_children.Clear(). + delete child; + + node = next; + } + m_children.Clear(); +} + +// Get the nth child +ctConfiguration* ctConfiguration::GetChild(int n) const +{ + wxASSERT ( n < GetChildCount() && n > -1 ); + + if ( n < GetChildCount() && n > -1 ) + { + ctConfiguration* child = wxDynamicCast(m_children.Item(n)->GetData(), ctConfiguration); + return child; + } + else + return NULL; +} + +// Get the child count +int ctConfiguration::GetChildCount() const +{ + return m_children.GetCount(); +} + +/// Add a child +void ctConfiguration::AddChild(ctConfiguration* configuration) +{ + m_children.Append(configuration); + configuration->SetParent(this); +} + +/// Remove (but don't delete) a child +void ctConfiguration::RemoveChild(ctConfiguration* configuration) +{ + m_children.DeleteObject(configuration); + configuration->SetParent(NULL); +} + +/// Get the associated document (currently, assumes +/// there's only ever one document active) +ctConfigToolDoc* ctConfiguration::GetDocument() +{ + ctConfigToolDoc* doc = wxGetApp().GetMainFrame()->GetDocument(); + return doc; +} + +/// Find an item in this hierarchy +// TODO: ensure that names are unique, somehow. +ctConfiguration* ctConfiguration::FindConfiguration(const wxString& name) +{ + if (GetName() == name) + return this; + + for ( wxNode* node = GetChildren().GetFirst(); node; node = node->GetNext() ) + { + ctConfiguration* child = (ctConfiguration*) node->GetData(); + ctConfiguration* found = child->FindConfiguration(name); + if (found) + return found; + } + return NULL; +} + +/// Find the next sibling +ctConfiguration* ctConfiguration::FindNextSibling() +{ + if (!GetParent()) + return NULL; + wxNode* node = GetParent()->GetChildren().Member(this); + if (node && node->GetNext()) + { + return (ctConfiguration*) node->GetNext()->GetData(); + } + return NULL; +} + +/// Find the previous sibling +ctConfiguration* ctConfiguration::FindPreviousSibling() +{ + if (!GetParent()) + return NULL; + wxNode* node = GetParent()->GetChildren().Member(this); + if (node && node->GetPrevious()) + { + return (ctConfiguration*) node->GetPrevious()->GetData(); + } + return NULL; +} + +/// Create a clone of this and children +ctConfiguration* ctConfiguration::DeepClone() +{ + ctConfiguration* newItem = Clone(); + + for ( wxNode* node = GetChildren().GetFirst(); node; node = node->GetNext() ) + { + ctConfiguration* child = (ctConfiguration*) node->GetData(); + ctConfiguration* newChild = child->DeepClone(); + newItem->AddChild(newChild); + } + return newItem; +} + +/// Detach: remove from parent, and remove tree items +void ctConfiguration::Detach() +{ + // TODO + if (GetParent()) + GetParent()->RemoveChild(this); + else + GetDocument()->SetTopItem(NULL); + SetParent(NULL); + +/* + wxTreeItemId treeItem = GetTreeItemId(); + + DetachFromTree(); + + // Will delete the branch, but not the config items. + wxGetApp().GetMainFrame()->GetConfigTreeCtrl()->Delete(treeItem); +*/ +} + +/// Hide from tree: make sure tree deletions won't delete +/// the config items +void ctConfiguration::DetachFromTree() +{ +/* + wxTreeItemId item = GetTreeItemId(); + + // TODO + ctTreeItemData* data = (ctTreeItemData*) wxGetApp().GetMainFrame()->GetConfigTreeCtrl()->GetItemData(item); + data->SetConfigItem(NULL); + m_treeItemId = wxTreeItemId(); + + for ( wxNode* node = GetChildren().GetFirst(); node; node = node->GetNext() ) + { + ctConfiguration* child = (ctConfiguration*) node->GetData(); + child->DetachFromTree(); + } +*/ }