📄 v4studioframe.cpp
字号:
EVT_TOOL(TOOL_NEW_XLINEPROPS, V4StudioFrame::OnNewXLineProps) EVT_TOOL(TOOL_NEW_RECT, V4StudioFrame::OnNewRect) EVT_TOOL(TOOL_NEW_CIRCLE, V4StudioFrame::OnNewCircle) EVT_TOOL(TOOL_NEW_TEXT, V4StudioFrame::OnNewText) EVT_TOOL(TOOL_NEW_FONTSTYLE, V4StudioFrame::OnNewFontStyle) EVT_TOOL(TOOL_NEW_SOUND, V4StudioFrame::OnNewSound) EVT_TOOL(TOOL_NEW_BACKGROUND2D, V4StudioFrame::OnNewBackground2D) EVT_TOOL(TOOL_NEW_IMAGE, V4StudioFrame::OnNewImageTexture) EVT_TOOL(TOOL_NEW_MOVIE, V4StudioFrame::OnNewMovieTexture)END_EVENT_TABLE()// creates new scenevoid V4StudioFrame::OnNew(wxCommandEvent &event){ //::wxLogMessage("Not yet implemented properly, load a BT file instead to start!"); //return; m_pV4sm = new V4SceneManager(this); m_pV4sm->LoadNew(); m_pMainToolbar->EnableTool(TOOL_ADD_TO_TL, true); m_pMainToolbar->EnableTool(TOOL_VIEW_DICT, true); m_pMainToolbar->EnableTool(TOOL_FILE_SAVE, true); m_pFileMenu->Enable(MENU_FILE_SAVE, true); m_pMainToolbar->EnableTool(TOOL_FILE_CLOSE, true); m_pFileMenu->Enable(MENU_FILE_CLOSE, true); m_pMainToolbar->EnableTool(TOOL_FILE_OPEN, false); m_pFileMenu->Enable(MENU_FILE_OPEN, false); m_pMainToolbar->EnableTool(TOOL_FILE_NEW, false); m_pFileMenu->Enable(MENU_FILE_NEW, false); m_pFileMenu->Enable(CHANGE_SIZE_DIALOG, true); m_pFileMenu->Enable(CHANGE_LENGTH, true); m_pFileMenu->Enable(CHANGE_FRAMERATE, true); Layout(); SetStatusText("New scene", 0); SceneGraphChanged();}// Opens an existing filevoid V4StudioFrame::OnFileOpen(wxCommandEvent &event){ wxFileDialog *dlg = new wxFileDialog(this, "Open a bt scene", "", "", "BT Files (*.bt)|*.bt|MP4 Files (*.mp4)|*.mp4|XMT Files (*.xmt)|*.xmt|SWF Files (*.swf)|*.swf|All files (*.*)|*.*", wxOPEN, wxDefaultPosition); if ( dlg->ShowModal() == wxID_OK ) { m_pV4sm = new V4SceneManager(this); m_pV4sm->LoadFile(dlg->GetPath().c_str()); m_pMainToolbar->EnableTool(TOOL_ADD_TO_TL, true); m_pMainToolbar->EnableTool(TOOL_VIEW_DICT, true); m_pMainToolbar->EnableTool(TOOL_FILE_SAVE, true); m_pFileMenu->Enable(MENU_FILE_SAVE, true); m_pMainToolbar->EnableTool(TOOL_FILE_CLOSE, true); m_pFileMenu->Enable(MENU_FILE_CLOSE, true); m_pMainToolbar->EnableTool(TOOL_FILE_OPEN, false); m_pFileMenu->Enable(MENU_FILE_OPEN, false); m_pMainToolbar->EnableTool(TOOL_FILE_NEW, false); m_pFileMenu->Enable(MENU_FILE_NEW, true); m_pFileMenu->Enable(CHANGE_SIZE_DIALOG, true); m_pFileMenu->Enable(CHANGE_LENGTH, true); m_pFileMenu->Enable(CHANGE_FRAMERATE, true); Layout(); SetStatusText(dlg->GetFilename(), 0); SceneGraphChanged(); } dlg->Destroy();}void V4StudioFrame::OnSave(wxCommandEvent &event){ wxFileDialog *dlg = new wxFileDialog(this, "Save the scene to an mp4 file", "", "", "MPEG-4 Files (*.mp4)|*.mp4|All files (*.*)|*.*", wxSAVE, wxDefaultPosition); if ( dlg->ShowModal() == wxID_OK ) { m_pV4sm->SaveFile(dlg->GetPath().c_str()); SetStatusText(dlg->GetFilename(), 0); } dlg->Destroy();}void V4StudioFrame::OnClose(wxCommandEvent &event){ if (m_pV4sm) delete m_pV4sm; m_pV4sm = NULL; m_pMainToolbar->EnableTool(TOOL_ADD_TO_TL, false); m_pMainToolbar->EnableTool(TOOL_VIEW_DICT, false); m_pMainToolbar->EnableTool(TOOL_FILE_SAVE, false); m_pFileMenu->Enable(MENU_FILE_SAVE, false); m_pMainToolbar->EnableTool(TOOL_FILE_CLOSE, false); m_pFileMenu->Enable(MENU_FILE_CLOSE, false); m_pMainToolbar->EnableTool(TOOL_FILE_OPEN, true); m_pFileMenu->Enable(MENU_FILE_OPEN, true); m_pMainToolbar->EnableTool(TOOL_FILE_NEW, true); m_pFileMenu->Enable(MENU_FILE_NEW, true); m_pFileMenu->Enable(CHANGE_SIZE_DIALOG, false); m_pFileMenu->Enable(CHANGE_LENGTH, false); m_pFileMenu->Enable(CHANGE_FRAMERATE, false); m_clipboardNode = NULL; m_clipboardParentNode = NULL; 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); Layout(); SceneGraphChanged();}// Quits application// TODO : memory leaks !void V4StudioFrame::OnQuit(wxCommandEvent &event){ Close(FALSE);}/**********************************************//* Functions to add components to the scene *//**********************************************/void V4StudioFrame::OnNewOrderedGroup(wxCommandEvent &event) { GF_Node *top = m_pV4sm->GetRootNode(); if (!top) { top = m_pV4sm->SetTopNode(TAG_MPEG4_OrderedGroup); m_selection = top; m_parentSelection = NULL; } else { GF_Node *og = m_pV4sm->NewNode(TAG_MPEG4_OrderedGroup); gf_node_insert_child(m_selection, og, -1); gf_node_register(og, m_selection); m_parentSelection = m_selection; m_selection = og; } Update();}void V4StudioFrame::OnNewLayer2D(wxCommandEvent &event) { GF_Node *top = m_pV4sm->GetRootNode(); if (!top) { top = m_pV4sm->SetTopNode(TAG_MPEG4_Layer2D); m_selection = top; m_parentSelection = NULL; } else { GF_Node *l2d = m_pV4sm->NewNode(TAG_MPEG4_Layer2D); gf_node_insert_child(m_selection, l2d, -1); gf_node_register(l2d, m_selection); m_parentSelection = m_selection; m_selection = l2d; } Update();}void V4StudioFrame::OnNewText(wxCommandEvent &event) { GF_Node *text = m_pV4sm->NewNode(TAG_MPEG4_Text); M_Shape *shape = (M_Shape *)m_selection; shape->geometry = text; gf_node_register(text, m_selection); m_parentSelection = m_selection; m_selection = text; Update();}void V4StudioFrame::OnNewFontStyle(wxCommandEvent &event) { GF_Node *fs = m_pV4sm->NewNode(TAG_MPEG4_FontStyle); M_Text *text = (M_Text *)m_selection; text->fontStyle = fs; gf_node_register(fs, m_selection); m_selection = fs; m_parentSelection = (GF_Node *)text; Update();}void V4StudioFrame::OnNewRect(wxCommandEvent &event) { GF_Node *rect = m_pV4sm->NewNode(TAG_MPEG4_Rectangle); M_Shape *shape = (M_Shape *)m_selection; shape->geometry = rect; gf_node_register(rect, m_selection); m_parentSelection = m_selection; m_selection = rect; Update();}void V4StudioFrame::OnNewCircle(wxCommandEvent &event) { GF_Node *circle = m_pV4sm->NewNode(TAG_MPEG4_Circle); M_Shape *shape = (M_Shape *)m_selection; shape->geometry = circle; gf_node_register(circle, m_selection); ((M_Circle *) circle)->radius = 75; m_parentSelection = m_selection; m_selection = circle; Update();}void V4StudioFrame::OnNewTransform2D(wxCommandEvent &event){ GF_Node *t2d = m_pV4sm->NewNode(TAG_MPEG4_Transform2D); if (!m_selection) m_selection = m_pV4sm->GetRootNode(); gf_node_insert_child(m_selection, t2d, -1); gf_node_register(t2d, m_selection); m_parentSelection = m_selection; m_selection = t2d; Update();}void V4StudioFrame::OnNewColorTransform(wxCommandEvent &event){ GF_Node *ct = m_pV4sm->NewNode(TAG_MPEG4_ColorTransform); if (!m_selection) m_selection = m_pV4sm->GetRootNode(); gf_node_insert_child(m_selection, ct, -1); gf_node_register(ct, m_selection); m_parentSelection = m_selection; m_selection = ct; Update();}void V4StudioFrame::OnNewTransformMatrix2D(wxCommandEvent &event){ GF_Node *tm2d = m_pV4sm->NewNode(TAG_MPEG4_TransformMatrix2D); if (!m_selection) m_selection = m_pV4sm->GetRootNode(); gf_node_insert_child(m_selection, tm2d, -1); gf_node_register(tm2d, m_selection); m_parentSelection = m_selection; m_selection = (GF_Node *)tm2d; Update();}void V4StudioFrame::OnNewShape(wxCommandEvent &event){ GF_Node *shape = m_pV4sm->NewNode(TAG_MPEG4_Shape); gf_node_insert_child(m_selection, shape, -1); gf_node_register( shape, m_selection); m_parentSelection = m_selection; m_selection = (GF_Node *)shape; Update();}void V4StudioFrame::OnNewAppearance(wxCommandEvent &event) { GF_Node *app = m_pV4sm->NewNode(TAG_MPEG4_Appearance); M_Shape *shape = (M_Shape *)m_selection; shape->appearance = app; gf_node_register(app, m_selection); m_parentSelection = m_selection; m_selection = app; Update();}void V4StudioFrame::OnNewLinearGradient(wxCommandEvent &event){ GF_Node *lg = m_pV4sm->NewNode(TAG_MPEG4_LinearGradient); M_Appearance *app = (M_Appearance *)m_selection; app->texture = lg; gf_node_register(lg, m_selection); m_parentSelection = m_selection; m_selection = (GF_Node *)lg; Update();}void V4StudioFrame::OnNewRadialGradient(wxCommandEvent &event){ GF_Node *rg = m_pV4sm->NewNode(TAG_MPEG4_RadialGradient); M_Appearance *app = (M_Appearance *)m_selection; app->texture = rg; gf_node_register(rg, m_selection); m_parentSelection = m_selection; m_selection = rg; Update();}void V4StudioFrame::OnNewMaterial2D(wxCommandEvent &event){ GF_Node *mat2d = m_pV4sm->NewNode(TAG_MPEG4_Material2D); M_Appearance *app = (M_Appearance *)m_selection; app->material = mat2d; gf_node_register(mat2d, m_selection); m_parentSelection = m_selection; m_selection = mat2d; Update();}void V4StudioFrame::OnNewLineProps(wxCommandEvent &event){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -