⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 v4studioframe.cpp

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "safe_include.h" #include "wx/wxprec.h"#ifndef WX_PRECOMP  #include "wx/wx.h"#endif#include "V4StudioFrame.h"#include "wx/xrc/xmlres.h"#include <gpac/internal/scenegraph_dev.h>#include <gpac/internal/terminal_dev.h> // GF_Terminal#include <gpac/nodes_mpeg4.h>V4StudioFrame::V4StudioFrame():    wxFrame((wxFrame *) NULL, -1, "V4Studio", wxPoint(50, 50), wxSize(800, 700)){	m_pV4sm = NULL;	m_selection = NULL;	m_parentSelection = NULL;	m_clipboardNode = NULL;	m_frame = 0; // we start at frame=0	editDict = false;	// Creates components and places them on the form	fieldView = new V4FieldList(this, wxSize(100,250));	treeView = new V4StudioTree(this, wxSize(100,250), fieldView);	timeLine = new V4TimeLine(this);	timeLine->SetSize(500, 100);	cmdPanel = new V4CommandPanel(this);	cmdPanel->SetSize(100, 100);	/*new m_pFileMenu bar*/	wxMenuBar *b = new wxMenuBar();	/*file*/	m_pFileMenu = new wxMenu();	m_pFileMenu->Append(MENU_FILE_NEW, "&New\tCtrl+N", "Create a new document");	m_pFileMenu->Append(MENU_FILE_OPEN, "&Open...\tCtrl+O", "Open an existing document");	m_pFileMenu->Append(MENU_FILE_SAVE, "&Save\tCtrl+S", "Save the active document");	m_pFileMenu->Append(MENU_FILE_CLOSE, "&Close\tCtrl+X", "Close the active document");	m_pFileMenu->AppendSeparator();	m_pFileMenu->Append(CHANGE_SIZE_DIALOG, "&Size\tCtrl+Z", "Change scene size");  m_pFileMenu->Append(CHANGE_FRAMERATE, "&FrameRate\tCtrl+F", "Change FrameRate");  m_pFileMenu->Append(CHANGE_LENGTH, "&Length\tCtrl+L", "Change Length");	m_pFileMenu->AppendSeparator();	m_pFileMenu->Append(MENU_FILE_QUIT, "E&xit", "Quit the application; prompts to save documents");	b->Append(m_pFileMenu, "&File");	SetMenuBar(b);	m_pStatusbar = CreateStatusBar();	// Main Toolbar	m_pMainToolbar = new wxToolBar(this, -1, wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL|wxTB_FLAT);	m_pMainToolbar->AddTool(TOOL_FILE_NEW, _("New"), wxBitmap (wxT("rc\\new.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Open a new file"), wxT(""));	m_pMainToolbar->AddTool(TOOL_FILE_OPEN, _("Open"), wxBitmap (wxT("rc\\open.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Open an existing file (BT/XMT/MP4)"), wxT(""));	m_pMainToolbar->AddTool(TOOL_FILE_SAVE, _("Save"), wxBitmap (wxT("rc\\save.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Save to a file"), wxT(""));	m_pMainToolbar->AddTool(TOOL_FILE_CLOSE, _("Close"), wxBitmap (wxT("rc\\close.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Close the file"), wxT(""));	m_pMainToolbar->AddSeparator();	m_pMainToolbar->AddTool(TOOL_FILE_PREVIEW, _("Preview"), wxBitmap (wxT("rc\\preview.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Preview in player"), wxT(""));	m_pMainToolbar->AddSeparator();	m_pMainToolbar->AddTool(TOOL_EDIT_CUT, _("Cut"), wxBitmap (wxT("rc\\cut.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Cut"), wxT(""));	m_pMainToolbar->AddTool(TOOL_EDIT_COPY, _("Copy"), wxBitmap (wxT("rc\\copy.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Copy"), wxT(""));	m_pMainToolbar->AddTool(TOOL_EDIT_PASTE, _("Paste"), wxBitmap (wxT("rc\\paste.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Paste"), wxT(""));	m_pMainToolbar->AddTool(TOOL_EDIT_PASTE_USE, _("PastePlus"), wxBitmap (wxT("rc\\paste_use.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Paste a USE"), wxT(""));	m_pMainToolbar->AddTool(TOOL_EDIT_DELETE, _("Delete"), wxBitmap (wxT("rc\\delete.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Delete"), wxT(""));	m_pMainToolbar->AddSeparator();	m_pMainToolbar->AddTool(TOOL_EDIT_UNDO, _("Undo"), wxBitmap (wxT("rc\\undo.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Undo"), wxT(""));	m_pMainToolbar->AddTool(TOOL_EDIT_REDO, _("Redo"), wxBitmap (wxT("rc\\redo.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Redo"), wxT(""));	m_pMainToolbar->AddSeparator();	m_pMainToolbar->AddSeparator();	m_pMainToolbar->AddTool(TOOL_ADD_TO_TL, _("AddToTL"), wxBitmap( wxT("rc\\paste.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Add to timeLine"), wxT(""));	m_pMainToolbar->AddTool(TOOL_NEXT_FRAME, _("NextFrame"), wxBitmap( wxT("rc\\redo.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Next frame"), wxT(""));	m_pMainToolbar->AddTool(TOOL_VIEW_DICT, _("ViewDict"), wxBitmap( wxT("rc\\open.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("View Dictionnary"), wxT(""));	/* Not Implemented yet */	m_pMainToolbar->EnableTool(TOOL_FILE_PREVIEW, false);	m_pMainToolbar->EnableTool(TOOL_EDIT_UNDO, false);	m_pMainToolbar->EnableTool(TOOL_EDIT_REDO, false);	m_pMainToolbar->EnableTool(TOOL_NEXT_FRAME, false);	/* Not available when starting V4Studio */	/* Nothing to save */	m_pFileMenu->Enable(MENU_FILE_SAVE, false);	m_pFileMenu->Enable(MENU_FILE_CLOSE, false);	m_pFileMenu->Enable(CHANGE_SIZE_DIALOG, false);  m_pFileMenu->Enable(CHANGE_LENGTH, false);  m_pFileMenu->Enable(CHANGE_FRAMERATE, false);	m_pMainToolbar->EnableTool(TOOL_FILE_SAVE, false);	m_pMainToolbar->EnableTool(TOOL_FILE_CLOSE, false);	/* Nothing to edit */	m_pMainToolbar->EnableTool(TOOL_EDIT_CUT, false);	m_pMainToolbar->EnableTool(TOOL_EDIT_COPY, false);	m_pMainToolbar->EnableTool(TOOL_EDIT_PASTE, false);	m_pMainToolbar->EnableTool(TOOL_EDIT_PASTE_USE, false);	m_pMainToolbar->EnableTool(TOOL_EDIT_DELETE, false);	m_pMainToolbar->EnableTool(TOOL_ADD_TO_TL, false);	m_pMainToolbar->EnableTool(TOOL_VIEW_DICT, false);	m_pMainToolbar->Realize();	SetToolBar(m_pMainToolbar);	// Node Creation Toolbar	m_pNodeToolbar = new wxToolBar(this, -1, wxDefaultPosition, wxDefaultSize, wxTB_VERTICAL|wxTB_FLAT);	m_pNodeToolbar->AddTool(TOOL_NEW_ORDEREDGROUP, _("OrderedGroup"), wxBitmap (wxT("rc\\orderedgroup.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create an OrderedGroup"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_LAYER2D, _("Layer2D"), wxBitmap (wxT("rc\\layer2d.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a Layer2D"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_TRANSFORM2D, _("Transform2D"), wxBitmap (wxT("rc\\t2d.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a Tranform2D"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_TRANSFORMMATRIX2D, _("TransformMatrix2D"), wxBitmap (wxT("rc\\tm2d.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a TranformMatrix2D"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_COLOR_TRANSFORM, _("ColorTransform"), wxBitmap (wxT("rc\\colortransform.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a ColorTransform"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_SHAPE, _("Shape"), wxBitmap (wxT("rc\\shape.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a Shape"), wxT(""));	m_pNodeToolbar->AddSeparator();	m_pNodeToolbar->AddTool(TOOL_NEW_APPEARANCE, _("Appearance"), wxBitmap (wxT("rc\\appearance.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create an Appearance"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_MATERIAL2D, _("Material2D"), wxBitmap (wxT("rc\\material2d.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a Material2D"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_LINEPROPS, _("LineProps"), wxBitmap (wxT("rc\\lineproperties.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a LineProperties"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_LINEAR_GRADIENT, _("LinearGradient"), wxBitmap (wxT("rc\\lg.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a Linear Gradient"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_RADIAL_GRADIENT, _("RadialGradient"), wxBitmap (wxT("rc\\rg.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a Radial Gradient"), wxT(""));	m_pNodeToolbar->AddSeparator();	m_pNodeToolbar->AddTool(TOOL_NEW_RECT, _("Rectangle"), wxBitmap (wxT("rc\\rect.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a Rectangle"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_CIRCLE, _("Circle"), wxBitmap (wxT("rc\\circle.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a Rectangle"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_IFS2D, _("IndexedFaceSet2D"), wxBitmap (wxT("rc\\ifs2d.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create an IndexedFaceSet2D"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_ILS2D, _("IndexedLineSet2D"), wxBitmap (wxT("rc\\ils2d.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create an IndexedLineSet2D"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_XLINEPROPS, _("XLineProps"), wxBitmap (wxT("rc\\xlineproperties.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create an XLineProperties"), wxT(""));	m_pNodeToolbar->AddSeparator();	m_pNodeToolbar->AddTool(TOOL_NEW_TEXT, _("Text"), wxBitmap (wxT("rc\\text.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a Text"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_FONTSTYLE, _("FontStyle"), wxBitmap (wxT("rc\\fs.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Create a FontStyle"), wxT(""));	m_pNodeToolbar->AddSeparator();	m_pNodeToolbar->AddTool(TOOL_NEW_BACKGROUND2D, _("Background2D"), wxBitmap (wxT("rc\\image.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Add a Background2D"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_MOVIE, _("Movie"), wxBitmap (wxT("rc\\movie.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Add a Movie"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_IMAGE, _("Image"), wxBitmap (wxT("rc\\image.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Add an Image"), wxT(""));	m_pNodeToolbar->AddTool(TOOL_NEW_SOUND, _("Sound"), wxBitmap (wxT("rc\\sound.bmp"), wxBITMAP_TYPE_ANY), wxNullBitmap, wxITEM_NORMAL, _("Add a Sound"), wxT(""));	m_pNodeToolbar->Realize();	set_properties();	do_layout();	UpdateToolBar();}V4StudioFrame::~V4StudioFrame(){}/* Functions that changes scene parameters */void V4StudioFrame::OnChangeFrameRate(wxCommandEvent &event) {  u32 l = m_pV4sm->GetFrameRate();  wxString sFR;  sFR.Printf("%d", l);  wxTextEntryDialog dialog(this, _T("Enter scene framerate"), _T("one positive integer number"), sFR, wxOK | wxCANCEL);  if (dialog.ShowModal() != wxID_OK) {    dialog.Destroy();    return;  }  sscanf(dialog.GetValue(), "%d", &l);  m_pV4sm->SetFrameRate(l);  dialog.Destroy();  SceneGraphChanged();}void V4StudioFrame::OnChangeLength(wxCommandEvent &event) {  u32 l = m_pV4sm->GetLength();  wxString sLength;  sLength.Printf("%d", l);  wxTextEntryDialog dialog(this, _T("Enter scene length"), _T("one positive integer number"), sLength, wxOK | wxCANCEL);  if (dialog.ShowModal() != wxID_OK) {    dialog.Destroy();    return;  }  sscanf(dialog.GetValue(), "%d", &l);  m_pV4sm->SetLength(l);  dialog.Destroy();  SceneGraphChanged();}void V4StudioFrame::OnChangeSize(wxCommandEvent &event) {	if (!m_pV4sm) return;	u32 w, h;	wxSize sceneSize;	m_pV4sm->GetSceneSize(sceneSize);		w = sceneSize.GetX();	h = sceneSize.GetY();	wxString sSize;	sSize.Printf("%d %d", w, h);	wxTextEntryDialog dialog(this,						   _T("Enter the scene width and height"),						   _T("Please enter two integer numbers"),						   sSize,						   wxOK | wxCANCEL);	while (dialog.ShowModal() != wxID_OK && w == 0 && h == 0) {}	sscanf(dialog.GetValue(), "%d %d", &w, &h);	m_pV4sm->SetSceneSize(w,h);	dialog.Destroy();	SceneGraphChanged();}// Dispatchs the new scene graph to all the sub components who need it.void V4StudioFrame::SceneGraphChanged() {	m_parentSelection = NULL;	m_selection = (m_pV4sm ? m_pV4sm->GetRootNode() : NULL);  Layout();	Update();}void V4StudioFrame::set_properties(){    SetTitle(_("V4Studio"));    wxIcon _icon;    _icon.CopyFromBitmap(wxBitmap(_("rc\\v4.bmp"), wxBITMAP_TYPE_ANY));    SetIcon(_icon);    SetSize(wxSize(500, 500));}void V4StudioFrame::do_layout(){	wxBoxSizer * sizer_6 = new wxBoxSizer(wxVERTICAL);   // top = treeview + fieldview; bottom = timeline + command panel	wxBoxSizer * sizer_7 = new wxBoxSizer(wxHORIZONTAL); // right = timeline, left = command panel	wxBoxSizer * sizer_8 = new wxBoxSizer(wxHORIZONTAL); // right = treeview; left = fieldview	sizer_6->Add(sizer_8,  2, wxEXPAND, 0); // height of treeview twice bigger thant height of timeline	sizer_6->Add(sizer_7,  1, wxEXPAND, 0);	sizer_7->Add(timeLine, 3, wxEXPAND, 0);	sizer_7->Add(cmdPanel, 1, wxEXPAND, 0);	sizer_8->Add(treeView,  1, wxEXPAND, 0);	sizer_8->Add(fieldView, 1, wxEXPAND, 0);	wxBoxSizer* sizer_9 = new wxBoxSizer(wxHORIZONTAL);	sizer_9->Add(m_pNodeToolbar, 0, wxEXPAND, 0);	sizer_9->Add(sizer_6, 1, wxEXPAND, 0);	SetSizer(sizer_9);	Layout();  cmdPanel->Layout();}BEGIN_EVENT_TABLE(V4StudioFrame, wxFrame)  // m_pFileMenu events  EVT_MENU(MENU_FILE_NEW, V4StudioFrame::OnNew)  EVT_MENU(MENU_FILE_OPEN, V4StudioFrame::OnFileOpen)  EVT_MENU(MENU_FILE_SAVE, V4StudioFrame::OnSave)  EVT_MENU(MENU_FILE_CLOSE, V4StudioFrame::OnClose)  EVT_MENU(MENU_FILE_QUIT, V4StudioFrame::OnQuit)  EVT_MENU(CHANGE_SIZE_DIALOG, V4StudioFrame::OnChangeSize)  EVT_MENU(CHANGE_FRAMERATE, V4StudioFrame::OnChangeFrameRate)  EVT_MENU(CHANGE_LENGTH, V4StudioFrame::OnChangeLength)  // edit toolbar events  EVT_TOOL(TOOL_FILE_NEW, V4StudioFrame::OnNew)  EVT_TOOL(TOOL_FILE_OPEN, V4StudioFrame::OnFileOpen)  EVT_TOOL(TOOL_FILE_SAVE, V4StudioFrame::OnSave)  EVT_TOOL(TOOL_FILE_CLOSE, V4StudioFrame::OnClose)  EVT_TOOL(TOOL_EDIT_CUT, V4StudioFrame::OnEditCut)  EVT_TOOL(TOOL_EDIT_COPY, V4StudioFrame::OnEditCopy)  EVT_TOOL(TOOL_EDIT_PASTE, V4StudioFrame::OnEditPaste)  EVT_TOOL(TOOL_EDIT_PASTE_USE, V4StudioFrame::OnEditPasteUse)  EVT_TOOL(TOOL_EDIT_DELETE, V4StudioFrame::OnEditDelete)  EVT_TOOL(TOOL_ADD_TO_TL, V4StudioFrame::OnAddToTimeLine)  EVT_TOOL(TOOL_NEXT_FRAME, V4StudioFrame::NextFrame)  EVT_TOOL(TOOL_VIEW_DICT, V4StudioFrame::SwitchView)  // new toolbar events  EVT_TOOL(TOOL_NEW_ORDEREDGROUP, V4StudioFrame::OnNewOrderedGroup)  EVT_TOOL(TOOL_NEW_LAYER2D, V4StudioFrame::OnNewLayer2D)  EVT_TOOL(TOOL_NEW_TRANSFORM2D, V4StudioFrame::OnNewTransform2D)  EVT_TOOL(TOOL_NEW_TRANSFORMMATRIX2D, V4StudioFrame::OnNewTransformMatrix2D)  EVT_TOOL(TOOL_NEW_COLOR_TRANSFORM, V4StudioFrame::OnNewColorTransform)  EVT_TOOL(TOOL_NEW_SHAPE, V4StudioFrame::OnNewShape)  EVT_TOOL(TOOL_NEW_APPEARANCE, V4StudioFrame::OnNewAppearance)  EVT_TOOL(TOOL_NEW_LINEAR_GRADIENT, V4StudioFrame::OnNewLinearGradient)  EVT_TOOL(TOOL_NEW_RADIAL_GRADIENT, V4StudioFrame::OnNewRadialGradient)  EVT_TOOL(TOOL_NEW_MATERIAL2D, V4StudioFrame::OnNewMaterial2D)  EVT_TOOL(TOOL_NEW_LINEPROPS, V4StudioFrame::OnNewLineProps)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -