#include "AdeptHeaders.hpp" #include "GUIManager.hpp" #include "GUIObject.hpp" #include "GUITextObject.hpp" //############################################################################# //########################### GUIGroup ################################### //############################################################################# //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // GUIGroup::GUIGroup(const char *group_name) : Plug(Plug::DefaultData), guiObjects(NULL, true), guiTextObjects(NULL) { groupName = group_name; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // GUIGroup::~GUIGroup() { } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void GUIGroup::AddTextObject(GUITextObject *gui_text_object) { Check_Object(this); Check_Object(gui_text_object); guiTextObjects.Add(gui_text_object); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void GUIGroup::AddGUIObject(GUIObject *gui_object) { Check_Object(this); Check_Object(gui_object); guiObjects.AddValue(gui_object, gui_object->guiObjectName); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // GUIObject* GUIGroup::FindGUIObject(const char *object_name) { Check_Object(this); return guiObjects.Find(object_name); } //####################################################################### //########################### GUIManager ########################### //####################################################################### //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // GUIManager::GUIManager() : Plug(Plug::DefaultData), guiObjects(NULL, true), guiGroups(NULL, true) { } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // GUIManager::~GUIManager() { guiObjects.DeletePlugs(); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void GUIManager::ClearGUIChain() { Check_Object(this); guiObjects.DeletePlugs(); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void GUIManager::ReadObjectsFromNotation(Stuff::NotationFile *gui_contents) { Check_Object(this); Check_Pointer(gui_contents); NotationFile::PageIterator *pages = gui_contents->MakePageIterator(); Check_Object(pages); Page *page; while ((page = pages->ReadAndNext()) != NULL) { Check_Object(page); GUIObject *gui_object; gui_object = new GUIObject(GUIObject::DefaultData, page); Check_Object(gui_object); guiObjects.AddValue(gui_object, gui_object->guiObjectName); } Check_Object(pages); delete pages; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void GUIManager::Execute() { Check_Object(this); SortedChainIteratorOf iterator(&guiObjects); GUIObject *gui_object; while((gui_object = iterator.ReadAndNext()) != NULL) { Check_Object(gui_object); gui_object->Draw(); } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void GUIManager::WriteObjectsFromFileToStream( NotationFile *gui_contents, MemoryStream *stream ) { Check_Object(this); Check_Pointer(stream); NotationFile::PageIterator *pages = gui_contents->MakePageIterator(); Check_Object(pages); Page *page; while ((page = pages->ReadAndNext()) != NULL) { Check_Object(page); GUIObject *gui_object; gui_object = new GUIObject(GUIObject::DefaultData, page); Check_Object(gui_object); gui_object->Save(stream); Check_Object(gui_object); delete gui_object; } Check_Object(pages); delete pages; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void GUIManager::SaveObjectsToStream(Stuff::MemoryStream *stream) { Check_Object(this); Check_Pointer(stream); SortedChainIteratorOf iterator(&guiObjects); GUIObject *gui_object; while((gui_object = iterator.ReadAndNext()) != NULL) { Check_Object(gui_object); gui_object->Save(stream); } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void GUIManager::ReadObjectsFromStream(Stuff::MemoryStream *stream) { Check_Object(this); Check_Pointer(stream); while(stream->GetBytesRemaining() > 0) { GUIObject *gui_object; gui_object = new GUIObject( GUIObject::DefaultData, stream ); Check_Object(gui_object); guiObjects.AddValue(gui_object, gui_object->guiObjectName); } }