void Project::LoadXML(wxInputStream& is) { wxXmlDocument doc(is); wxXmlNode *root = doc.GetRoot(); wxString m_target = XML::GetStringAttribute(*root, wxT("target"), wxT("GLSL")); size_t count = GetPageCount(); for (size_t index = 0; index < count; index++) { Panel *panel = static_cast<Panel *>(GetPage(index)); panel->GetGraphCtrl()->Clear(); wxString name = GetPageText(index); wxXmlNode *child = root->GetChildren(); while (child != NULL) { if (child->GetPropVal(wxT("name"), wxT("")) == name) { break; } child = child->GetNext(); } if (child != NULL) { Serialized::DeserializeObject(*child->GetChildren(), panel->GetGraphCtrl()); } } }
void Project::Load(wxWindow *parent, MenuState *menu, const wxString& filename) { wxString type = GetProjectType(filename); New(parent, menu, type); wxFileInputStream fis(filename); int first = fis.Peek(); if (first == 0x1b) { // Binary format. fis.GetC(); LuaInputStream lis(&fis); l_instance->LoadBinary(lis); } else { // XML format. l_instance->LoadXML(fis); } // Clear Undo data of all panels. size_t count = l_instance->GetPageCount(); for (size_t index = 0; index < count; index++) { Panel *panel = (Panel *)l_instance->GetPage(index); panel->GetUndoerCtrl()->Clear(); panel->GetGraphCtrl()->GraphCanvas::Redraw(true); panel->GetGraphCtrl()->GenerateCode(); } }
int Project::Compile(int index, const wxString& output) { if (index >= (int)GetPageCount()) { return CompileInvalidPage; } Panel *panel = (Panel *)GetPage(index); return panel->GetGraphCtrl()->Compile(output) ? CompileSuccess : CompileError; }
void Project::LoadBinary21(LuaInputStream& lis) { lis.Read(); // Skip project type. int panel_cnt = lis.ReadInteger(); if (panel_cnt != GetPageCount()) { THROW(TXT("Could not read from file.")); } for (int i = 0; i < panel_cnt; i++) { Panel *panel = (Panel *)GetPage(i); panel->GetGraphCtrl()->Clear(); panel->LoadBinary21(lis); } }
void Shader::OnCommand(wxCommandEvent& evt) { Project *project = Project::GetProject(); Panel *panel; Undoer *undoer; Graph *graph; if (project != NULL) { panel = project->GetPanel(); if (panel != NULL) { undoer = panel->GetUndoerCtrl(); graph = panel->GetGraphCtrl(); } } switch (evt.GetId()) { case wxID_OPEN: Open(); break; case wxID_SAVE: Save(); break; case wxID_SAVEAS: SaveAs(); break; case wxID_EXIT: Close(false); break; case wxID_UNDO: undoer->Undo(); break; case wxID_REDO: undoer->Redo(); break; case wxID_CUT: graph->Cut(); break; case wxID_COPY: graph->Copy(); break; case wxID_PASTE: graph->Paste(); break; case wxID_DUPLICATE: graph->Duplicate(); break; case wxID_GROUP: graph->GroupNodes(); break; case wxID_UNGROUP: graph->UngroupNodes(); break; case wxID_SAVEGROUP: graph->SaveGroup(); break; case wxID_COPYMETAFILE: graph->CopyAsMetafile(); break; case wxID_CONFIGURE: project->Configure(); break; case wxID_RELOADLIBS: //project->ReloadLibs(); break; } }