SpectraDocumentCanvas::SpectraDocumentCanvas( wxEvtHandler* handler, wxWindow* parent) : wxGLCanvas( parent, wxID_ANY, SpectraGLConfig(), wxDefaultPosition, wxDefaultSize) , evt_handler(handler) { Connect( wxEVT_MOTION, wxMouseEventHandler(SpectraDocumentCanvas::OnMouseEvent)); Connect( wxEVT_MOUSEWHEEL, wxMouseEventHandler(SpectraDocumentCanvas::OnMouseEvent)); }
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"))); }