Exemple #1
0
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());
		}
	}
}
Exemple #2
0
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();
	}
}
Exemple #3
0
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;
}
Exemple #4
0
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);
	}
}
Exemple #5
0
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;
	}
}