00001
00002
00003
00004
00005
00007
00008 #include "wxluxframe.h"
00009
00010 #include "blank.xpm"
00011
00013 using namespace lux;
00014
00015 LuxMainFrame::LuxMainFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
00016 {
00017 this->SetSizeHints( wxDefaultSize, wxDefaultSize );
00018
00019 m_menubar = new wxMenuBar( 0 );
00020 m_file = new wxMenu();
00021 wxMenuItem* m_open;
00022 m_open = new wxMenuItem( m_file, wxID_OPEN, wxString( wxT("&Open") ) + wxT('\t') + wxT("CTRL+O"), wxT("Open a scene"), wxITEM_NORMAL );
00023 m_file->Append( m_open );
00024
00025 m_file->AppendSeparator();
00026
00027 wxMenuItem* m_exit;
00028 m_exit = new wxMenuItem( m_file, wxID_EXIT, wxString( wxT("&Exit") ) + wxT('\t') + wxT("ALT+F4"), wxT("Exit LuxRender"), wxITEM_NORMAL );
00029 m_file->Append( m_exit );
00030
00031 m_menubar->Append( m_file, wxT("&File") );
00032
00033 m_render = new wxMenu();
00034 wxMenuItem* m_resume;
00035 m_resume = new wxMenuItem( m_render, ID_RESUMEITEM, wxString( wxT("&Resume") ) + wxT('\t') + wxT("CTRL+S"), wxT("Resume rendering"), wxITEM_NORMAL );
00036 m_render->Append( m_resume );
00037
00038 wxMenuItem* m_stop;
00039 m_stop = new wxMenuItem( m_render, ID_STOPITEM, wxString( wxT("S&top") ) + wxT('\t') + wxT("CTRL+T"), wxT("Stop current rendering"), wxITEM_NORMAL );
00040 m_render->Append( m_stop );
00041
00042 m_menubar->Append( m_render, wxT("&Render") );
00043
00044 m_help = new wxMenu();
00045 wxMenuItem* m_about;
00046 m_about = new wxMenuItem( m_help, wxID_ABOUT, wxString( wxT("&About") ) + wxT('\t') + wxT("F1"), wxT("Show about dialog"), wxITEM_NORMAL );
00047 m_help->Append( m_about );
00048
00049 m_menubar->Append( m_help, wxT("Help") );
00050
00051 this->SetMenuBar( m_menubar );
00052
00053 wxBoxSizer* bSizer;
00054 bSizer = new wxBoxSizer( wxVERTICAL );
00055
00056 m_auinotebook = new wxAuiNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxAUI_NB_SCROLL_BUTTONS|wxAUI_NB_TAB_MOVE|wxAUI_NB_TAB_SPLIT );
00057 m_renderPage = new wxPanel( m_auinotebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
00058 wxBoxSizer* bRenderSizer;
00059 bRenderSizer = new wxBoxSizer( wxVERTICAL );
00060
00061 m_renderToolBar = new wxToolBar( m_renderPage, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL );
00062 m_renderToolBar->SetToolBitmapSize( wxSize( 16,16 ) );
00063 m_renderToolBar->AddTool( ID_RESUMETOOL, wxT("Resume"), wxBitmap( blank_xpm ), wxNullBitmap, wxITEM_NORMAL, wxT("Resume rendering"), wxT("Resume rendering") );
00064 m_renderToolBar->AddTool( ID_STOPTOOL, wxT("Stop"), wxBitmap( blank_xpm ), wxNullBitmap, wxITEM_NORMAL, wxT("Stop current rendering"), wxT("Stop current rendering") );
00065 m_renderToolBar->AddSeparator();
00066 wxStaticText* m_staticText;
00067 m_staticText = new wxStaticText( m_renderToolBar, wxID_ANY, wxT("Threads: "), wxDefaultPosition, wxDefaultSize, 0 );
00068 m_staticText->Wrap( -1 );
00069 m_renderToolBar->AddControl( m_staticText );
00070 m_threadSpinCtrl = new wxSpinCtrl( m_renderToolBar, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 48,-1 ), wxSP_ARROW_KEYS, 1, 16, 1 );
00071 m_renderToolBar->AddControl( m_threadSpinCtrl );
00072 m_renderToolBar->Realize();
00073
00074 bRenderSizer->Add( m_renderToolBar, 0, wxEXPAND, 5 );
00075
00076 m_renderPage->SetSizer( bRenderSizer );
00077 m_renderPage->Layout();
00078 bRenderSizer->Fit( m_renderPage );
00079 m_auinotebook->AddPage( m_renderPage, wxT("Render"), true, wxNullBitmap );
00080 m_logPage = new wxPanel( m_auinotebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
00081 wxBoxSizer* bLogSizer;
00082 bLogSizer = new wxBoxSizer( wxVERTICAL );
00083
00084 m_logTextCtrl = new wxTextCtrl( m_logPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_DONTWRAP|wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH|wxTE_WORDWRAP );
00085 bLogSizer->Add( m_logTextCtrl, 1, wxALL|wxEXPAND, 5 );
00086
00087 m_logPage->SetSizer( bLogSizer );
00088 m_logPage->Layout();
00089 bLogSizer->Fit( m_logPage );
00090 m_auinotebook->AddPage( m_logPage, wxT("Log"), false, wxNullBitmap );
00091
00092 bSizer->Add( m_auinotebook, 1, wxEXPAND | wxALL, 5 );
00093
00094 this->SetSizer( bSizer );
00095 this->Layout();
00096 m_statusBar = this->CreateStatusBar( 2, wxST_SIZEGRIP, wxID_ANY );
00097
00098
00099 this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( LuxMainFrame::OnExit ) );
00100 this->Connect( m_open->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnOpen ) );
00101 this->Connect( m_exit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00102 this->Connect( m_resume->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00103 this->Connect( m_stop->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00104 this->Connect( m_about->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00105 this->Connect( ID_RESUMETOOL, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00106 this->Connect( ID_STOPTOOL, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00107 }
00108
00109 LuxMainFrame::~LuxMainFrame()
00110 {
00111
00112 this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( LuxMainFrame::OnExit ) );
00113 this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnOpen ) );
00114 this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00115 this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00116 this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00117 this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00118 this->Disconnect( ID_RESUMETOOL, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00119 this->Disconnect( ID_STOPTOOL, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( LuxMainFrame::OnMenu ) );
00120 }