SpectraDocumentFrame::SpectraDocumentFrame( SpectraApp& app, SpectraMainFrame* parent, wxGLContext* parent_ctxt, const SpectraDocumentFrame::VisualisationGetter& get_doc_vis, const SpectraDocumentFrame::RendererGetter& get_renderer ): wxFrame( (wxWindow*)parent, wxID_ANY, wxGetTranslation(wxT("Opening document")), wxDefaultPosition, wxDefaultSize ), parent_app(app) , main_frame(parent) , main_menu(new wxMenuBar()) , main_panel( new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize ) ), status_bar(new wxStatusBar(this)) , parent_context(parent_ctxt) , gl_canvas( new SpectraDocumentCanvas( (wxEvtHandler*)this, (wxWindow*)main_panel ) ), document_vis() , renderer() , idle_call_count(0) { assert(gl_canvas); InitMainMenu(); InitComponents(); Show(); document_vis = get_doc_vis( parent_app, main_frame, gl_canvas, parent_context ); assert(document_vis); document_vis->AddCanvas(gl_canvas); renderer = get_renderer( parent_app, main_frame, document_vis, gl_canvas ); assert(renderer); document_view.SetMaxTime(document_vis->Document().MaxTime()); ConnectEventHandlers(); HandleResize(); SetTitle(document_vis->Name()); SetStatus(wxT("TODO: short document info")); }
SpectraMainFrame::SpectraMainFrame(SpectraApp& app) : wxFrame( (wxWindow*)nullptr, wxID_ANY, wxT("OGLplus Spectra"), wxDefaultPosition, wxSize(300, 400) ), parent_app(app) , main_menu(new wxMenuBar()) , status_bar(new wxStatusBar(this)) , gl_canvas( new wxGLCanvas( (wxWindow*)this, wxID_ANY, SpectraGLConfig(), wxDefaultPosition, wxDefaultSize ) ), gl_context(gl_canvas) , gl_api_init() , shared_objects() , coroutine_exec() { InitMainMenu(); InitComponents(); Show(); coroutine_exec = std::make_shared<SpectraCoroutineExecutor>( parent_app, this //TODO progress panel + sizer ); SetStatus(wxGetTranslation(wxT("Initializing GL"), wxT("Status"))); gl_context.SetCurrent(*gl_canvas); gl_api_init.reset(new oglplus::GLAPIInitializer()); gl_canvas->Hide(); gl_vendor->SetLabel(wxString( (const char*)glGetString(GL_VENDOR), wxConvUTF8 )); gl_renderer->SetLabel(wxString( (const char*)glGetString(GL_RENDERER), wxConvUTF8 )); gl_version->SetLabel(wxString( (const char*)glGetString(GL_VERSION), wxConvUTF8 )); sl_version->SetLabel(wxString( (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION), wxConvUTF8 )); SetStatus(wxGetTranslation(wxT("Creating shared objects"), wxT("Status"))); shared_objects = std::make_shared<SpectraSharedObjects>(&gl_context, gl_canvas); SetStatus(wxGetTranslation(wxT("Ready"), wxT("Status"))); ConnectEventHandlers(); SetStatus(wxGetTranslation(wxT("Running"), wxT("Status"))); }