void WorkspacePane::CreateGUIControls() { wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL); SetSizer(mainSizer); // add notebook for tabs #ifdef __WXOSX__ long style = (kNotebook_Default | kNotebook_AllowDnD | kNotebook_LeftTabs); #else long style = (kNotebook_Default | kNotebook_AllowDnD); #endif if(EditorConfigST::Get()->GetOptions()->IsTabColourDark()) { style &= ~kNotebook_LightTabs; style |= kNotebook_DarkTabs; } style |= kNotebook_UnderlineActiveTab; if(EditorConfigST::Get()->GetOptions()->IsMouseScrollSwitchTabs()) { style |= kNotebook_MouseScrollSwitchTabs; } m_book = new Notebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style); m_book->SetTabDirection(EditorConfigST::Get()->GetOptions()->GetWorkspaceTabsDirection()); m_book->SetArt(GetNotebookRenderer()); // Calculate the widest tab (the one with the 'Workspace' label) int xx, yy; wxFont fnt = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); wxWindow::GetTextExtent(_("Workspace"), &xx, &yy, NULL, NULL, &fnt); mainSizer->Add(m_book, 1, wxEXPAND | wxALL, 0); // Add the parsing progress controls m_staticText = new wxStaticText(this, wxID_ANY, _("Parsing workspace...")); mainSizer->Add(m_staticText, 0, wxEXPAND | wxALL, 2); m_parsingProgress = new wxGauge(this, wxID_ANY, 100, wxDefaultPosition, wxSize(-1, 15), wxGA_HORIZONTAL | wxGA_SMOOTH); mainSizer->Add(m_parsingProgress, 0, wxEXPAND | wxALL, 1); m_parsingProgress->Hide(); m_staticText->Hide(); // create tabs (possibly detached) DetachedPanesInfo dpi; EditorConfigST::Get()->ReadObject(wxT("DetachedPanesList"), &dpi); wxArrayString detachedPanes; detachedPanes = dpi.GetPanes(); // Add the workspace tab wxString name; // the IManager instance IManager* mgr = PluginManager::Get(); name = _("Workspace"); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, wxNullBitmap, wxSize(200, 200)); m_workspaceTab = new WorkspaceTab(cp, name); cp->SetChildNoReparent(m_workspaceTab); } else { m_workspaceTab = new WorkspaceTab(m_book, name); m_book->AddPage(m_workspaceTab, name, true, wxNullBitmap); } m_tabs.insert(std::make_pair(name, Tab(name, m_workspaceTab))); mgr->AddWorkspaceTab(name); // Add the explorer tab name = _("Explorer"); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, wxNullBitmap, wxSize(200, 200)); m_explorer = new FileExplorer(cp, name); cp->SetChildNoReparent(m_explorer); } else { m_explorer = new FileExplorer(m_book, name); m_book->AddPage(m_explorer, name, false); } m_tabs.insert(std::make_pair(name, Tab(name, m_explorer))); mgr->AddWorkspaceTab(name); // Add the "File Explorer" view to the list of files managed by the workspace-view m_workspaceTab->GetView()->AddPage(m_explorer, _("File Explorer"), false); // Add the Open Windows Panel (Tabs) #ifndef __WXOSX__ name = _("Tabs"); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, wxNullBitmap, wxSize(200, 200)); m_openWindowsPane = new OpenWindowsPanel(cp, name); cp->SetChildNoReparent(m_openWindowsPane); } else { m_openWindowsPane = new OpenWindowsPanel(m_book, name); m_book->AddPage(m_openWindowsPane, name, false); } m_tabs.insert(std::make_pair(name, Tab(name, m_openWindowsPane))); mgr->AddWorkspaceTab(name); #endif // Add the Tabgroups tab name = _("Tabgroups"); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, wxNullBitmap, wxSize(200, 200)); m_TabgroupsPane = new TabgroupsPane(cp, name); cp->SetChildNoReparent(m_TabgroupsPane); } else { m_TabgroupsPane = new TabgroupsPane(m_book, name); m_book->AddPage(m_TabgroupsPane, name, false); } m_tabs.insert(std::make_pair(name, Tab(name, m_TabgroupsPane))); mgr->AddWorkspaceTab(name); if(m_book->GetPageCount() > 0) { m_book->SetSelection((size_t)0); } m_mgr->Update(); }