void ZoomNavigator::DoInitialize() { znConfigItem data; if ( m_config->ReadItem( &data ) ) { m_enabled = data.IsEnabled(); } // create tab (possibly detached) Notebook *book = m_mgr->GetWorkspacePaneNotebook(); if( IsZoomPaneDetached() ) { // Make the window child of the main panel (which is the grand parent of the notebook) DockablePane *cp = new DockablePane(book->GetParent()->GetParent(), book, ZOOM_PANE_TITLE, wxNullBitmap, wxSize(200, 200)); zoompane = new wxPanel( cp ); cp->SetChildNoReparent(zoompane); } else { zoompane = new wxPanel( book ); book->AddPage( zoompane, ZOOM_PANE_TITLE, false); } m_text = new ZoomText( zoompane ); m_text->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(ZoomNavigator::OnPreviewClicked), NULL, this); m_text->Connect(wxEVT_LEFT_DCLICK, wxMouseEventHandler(ZoomNavigator::OnPreviewClicked), NULL, this); m_text->SetCursor(wxCURSOR_POINT_LEFT); wxBoxSizer* bs = new wxBoxSizer( wxVERTICAL ); bs->Add( m_text, 1, wxEXPAND, 0 ); wxCheckBox* cbEnablePlugin = new wxCheckBox(zoompane, wxID_ANY, _("Enable plugin")); cbEnablePlugin->SetValue( data.IsEnabled() ); bs->Add( cbEnablePlugin, 0, wxEXPAND); cbEnablePlugin->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(ZoomNavigator::OnEnablePlugin), NULL, this); zoompane->SetSizer( bs ); }
SymbolViewPlugin::SymbolViewPlugin(IManager* manager) : IPlugin(manager) { m_longName = _("Outline Plugin"); m_shortName = wxT("Outline"); OutlineSettings os; os.Load(); Notebook* book = m_mgr->GetWorkspacePaneNotebook(); if(IsPaneDetached()) { // Make the window child of the main panel (which is the grand parent of the notebook) DockablePane* cp = new DockablePane(book->GetParent()->GetParent(), book, _("Outline"), false, wxNullBitmap, wxSize(200, 200)); m_view = new OutlineTab(cp, m_mgr); cp->SetChildNoReparent(m_view); m_view->m_isEnabled = true; // Enabled when detached } else { m_view = new OutlineTab(book, m_mgr); book->AddPage(m_view, _("Outline"), false); } EventNotifier::Get()->Bind(wxEVT_SHOW_WORKSPACE_TAB, &SymbolViewPlugin::OnToggleTab, this); m_mgr->AddWorkspaceTab(_("Outline")); m_mgr->GetWorkspacePaneNotebook()->Bind(wxEVT_BOOK_PAGE_CHANGED, &SymbolViewPlugin::OnPageChanged, this); }
DatabaseExplorer::DatabaseExplorer(IManager* manager) : IPlugin(manager) { // create tab (possibly detached) Notebook* book = m_mgr->GetWorkspacePaneNotebook(); wxWindow* editorBook = m_mgr->GetEditorPaneNotebook(); EventNotifier::Get()->Connect(wxEVT_TREE_ITEM_FILE_ACTIVATED, clCommandEventHandler(DatabaseExplorer::OnOpenWithDBE), NULL, this); EventNotifier::Get()->Bind(wxEVT_SHOW_WORKSPACE_TAB, &DatabaseExplorer::OnToggleTab, this); if(IsDbViewDetached()) { DockablePane* cp = new DockablePane(book->GetParent()->GetParent(), book, _("DbExplorer"), false, wxNullBitmap, wxSize(200, 200)); m_dbViewerPanel = new DbViewerPanel(cp, editorBook, m_mgr); cp->SetChildNoReparent(m_dbViewerPanel); } else { m_dbViewerPanel = new DbViewerPanel(book, editorBook, m_mgr); // size_t index = GetSettings().GetSvnTabIndex(); // if(index == Notebook::npos) book->AddPage(m_dbViewerPanel, _("DbExplorer"), false); // else // book->InsertPage(index, m_dbViewerPanel, svnCONSOLE_TEXT, false); } m_mgr->AddWorkspaceTab(_("DbExplorer")); // configure autolayout algorithns wxSFAutoLayout layout; wxSFLayoutHorizontalTree* pHTreeAlg = wxDynamicCast(layout.GetAlgorithm(wxT("Horizontal Tree")), wxSFLayoutHorizontalTree); if(pHTreeAlg) pHTreeAlg->SetHSpace(200); wxSFLayoutVerticalTree* pVTreeAlg = wxDynamicCast(layout.GetAlgorithm(wxT("Vertical Tree")), wxSFLayoutVerticalTree); if(pVTreeAlg) pVTreeAlg->SetVSpace(75); m_longName = _("DatabaseExplorer for CodeLite"); m_shortName = wxT("DatabaseExplorer"); clKeyboardManager::Get()->AddGlobalAccelerator("wxEVT_EXECUTE_SQL", "Ctrl-J", _("Execute SQL")); wxTheApp->Bind(wxEVT_MENU, &DatabaseExplorer::OnExecuteSQL, this, XRCID("wxEVT_EXECUTE_SQL")); }
CMakePlugin::CMakePlugin(IManager* manager) : IPlugin(manager) , m_configuration(NULL) , m_cmake(NULL) , m_settingsManager(new CMakeSettingsManager(this)) , m_panel(NULL) { m_longName = _("CMake integration with CodeLite"); m_shortName = "CMakePlugin"; // Create CMake configuration file m_configuration.reset(new CMakeConfiguration(clStandardPaths::Get().GetUserDataDir() + wxFileName::GetPathSeparator() + "config/cmake.ini")); // Create cmake application m_cmake.reset(new CMake(m_configuration->GetProgramPath())); Notebook* book = m_mgr->GetWorkspacePaneNotebook(); cmakeImages images; const wxBitmap& bmp = images.Bitmap("cmake_16"); if(IsPaneDetached()) { DockablePane* cp = new DockablePane(book->GetParent()->GetParent(), book, HELP_TAB_NAME, bmp, wxSize(200, 200)); m_helpTab = new CMakeHelpTab(cp, this); cp->SetChildNoReparent(m_helpTab); } else { m_helpTab = new CMakeHelpTab(book, this); book->AddPage(m_helpTab, HELP_TAB_NAME, false, bmp); m_mgr->AddWorkspaceTab(HELP_TAB_NAME); } // Bind events EventNotifier::Get()->Bind( wxEVT_CMD_PROJ_SETTINGS_SAVED, clProjectSettingsEventHandler(CMakePlugin::OnSaveConfig), this); EventNotifier::Get()->Bind(wxEVT_GET_PROJECT_BUILD_CMD, clBuildEventHandler(CMakePlugin::OnGetBuildCommand), this); EventNotifier::Get()->Bind(wxEVT_GET_PROJECT_CLEAN_CMD, clBuildEventHandler(CMakePlugin::OnGetCleanCommand), this); EventNotifier::Get()->Bind( wxEVT_GET_IS_PLUGIN_MAKEFILE, clBuildEventHandler(CMakePlugin::OnGetIsPluginMakefile), this); EventNotifier::Get()->Bind(wxEVT_PLUGIN_EXPORT_MAKEFILE, clBuildEventHandler(CMakePlugin::OnExportMakefile), this); EventNotifier::Get()->Bind(wxEVT_WORKSPACE_LOADED, wxCommandEventHandler(CMakePlugin::OnWorkspaceLoaded), this); EventNotifier::Get()->Bind(wxEVT_SHOW_WORKSPACE_TAB, &CMakePlugin::OnToggleHelpTab, this); }
SymbolViewPlugin::SymbolViewPlugin(IManager *manager) : IPlugin(manager) { m_longName = _("Outline Plugin"); m_shortName = wxT("Outline"); OutlineSettings os; os.Load(); Notebook *book = m_mgr->GetWorkspacePaneNotebook(); if( IsPaneDetached() ) { // Make the window child of the main panel (which is the grand parent of the notebook) DockablePane *cp = new DockablePane(book->GetParent()->GetParent(), book, _("Outline"), wxNullBitmap, wxSize(200, 200)); m_view = new OutlineTab(cp, m_mgr); cp->SetChildNoReparent(m_view); } else { m_view = new OutlineTab(book, m_mgr); book->AddPage(m_view, _("Outline"), false); } }
DatabaseExplorer::DatabaseExplorer(IManager *manager) : IPlugin(manager) , m_addFileMenu(true) { // create tab (possibly detached) Notebook *book = m_mgr->GetWorkspacePaneNotebook(); wxWindow *editorBook = m_mgr->GetEditorPaneNotebook(); m_mgr->GetTheApp()->Connect(XRCID("erd_open"), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(DatabaseExplorer::OnOpenWithDBE), NULL, this); m_mgr->GetTheApp()->Connect(XRCID("erd_open"), wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DatabaseExplorer::OnUpdateOpenWithDBE), NULL, this); EventNotifier::Get()->Connect(wxEVT_TREE_ITEM_FILE_ACTIVATED, wxCommandEventHandler(DatabaseExplorer::OnOpenWithDBE), NULL, this); if( IsDbViewDetached() ) { DockablePane *cp = new DockablePane(book->GetParent()->GetParent(), book, wxT("DbExplorer"), wxNullBitmap, wxSize(200, 200)); m_dbViewerPanel = new DbViewerPanel(cp, editorBook, m_mgr ); cp->SetChildNoReparent(m_dbViewerPanel); } else { m_dbViewerPanel = new DbViewerPanel(book, editorBook, m_mgr ); //size_t index = GetSettings().GetSvnTabIndex(); //if(index == Notebook::npos) book->AddPage(m_dbViewerPanel, wxT("DbExplorer"), false); //else // book->InsertPage(index, m_dbViewerPanel, svnCONSOLE_TEXT, false); } // configure autolayout algorithns wxSFAutoLayout layout; wxSFLayoutHorizontalTree *pHTreeAlg = wxDynamicCast( layout.GetAlgorithm( wxT("Horizontal Tree") ), wxSFLayoutHorizontalTree ); if( pHTreeAlg ) pHTreeAlg->SetHSpace( 200 ); wxSFLayoutVerticalTree *pVTreeAlg = wxDynamicCast( layout.GetAlgorithm( wxT("Vertical Tree") ), wxSFLayoutVerticalTree ); if( pVTreeAlg ) pVTreeAlg->SetVSpace( 75 ); m_longName = _("DatabaseExplorer for CodeLite"); m_shortName = wxT("DatabaseExplorer"); }
CMakePlugin::CMakePlugin(IManager* manager) : IPlugin(manager) , m_configuration(NULL) , m_cmake(NULL) { m_longName = _("CMake integration with CodeLite"); m_shortName = "CMakePlugin"; // Create CMake configuration file m_configuration.reset(new CMakeConfiguration( clStandardPaths::Get().GetUserDataDir() + wxFileName::GetPathSeparator() + "config/cmake.ini")); // Create cmake application m_cmake.reset(new CMake(m_configuration->GetProgramPath())); Notebook* book = m_mgr->GetWorkspacePaneNotebook(); cmakeImages images; const wxBitmap& bmp = images.Bitmap("cmake_16"); if(IsPaneDetached()) { DockablePane* cp = new DockablePane(book->GetParent()->GetParent(), book, HELP_TAB_NAME, false, bmp, wxSize(200, 200)); m_helpTab = new CMakeHelpTab(cp, this); cp->SetChildNoReparent(m_helpTab); } else { m_helpTab = new CMakeHelpTab(book, this); book->AddPage(m_helpTab, HELP_TAB_NAME, false, bmp); m_mgr->AddWorkspaceTab(HELP_TAB_NAME); } // Bind events EventNotifier::Get()->Bind(wxEVT_SHOW_WORKSPACE_TAB, &CMakePlugin::OnToggleHelpTab, this); EventNotifier::Get()->Bind(wxEVT_CONTEXT_MENU_PROJECT, &CMakePlugin::OnProjectContextMenu, this); EventNotifier::Get()->Bind(wxEVT_CONTEXT_MENU_WORKSPACE, &CMakePlugin::OnWorkspaceContextMenu, this); EventNotifier::Get()->Bind(wxEVT_PROJ_FILE_ADDED, &CMakePlugin::OnFileAdded, this); EventNotifier::Get()->Bind(wxEVT_PROJ_FILE_REMOVED, &CMakePlugin::OnFileRemoved, this); Bind(wxEVT_ASYNC_PROCESS_OUTPUT, &CMakePlugin::OnCMakeOutput, this); Bind(wxEVT_ASYNC_PROCESS_TERMINATED, &CMakePlugin::OnCMakeTerminated, this); }
void DebuggerPane::CreateGUIControls() { wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL); SetSizer(mainSizer); long style = (kNotebook_Default | kNotebook_AllowDnD); if(!EditorConfigST::Get()->GetOptions()->GetWorkspaceTabsDirection()) { style |= kNotebook_BottomTabs; } if(EditorConfigST::Get()->GetOptions()->IsTabColourDark()) { style &= ~kNotebook_LightTabs; style |= kNotebook_DarkTabs; } if(EditorConfigST::Get()->GetOptions()->IsMouseScrollSwitchTabs()) { style |= kNotebook_MouseScrollSwitchTabs; } style |= kNotebook_UnderlineActiveTab; GeneralImages img; m_book = new Notebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style); mainSizer->Add(m_book, 1, wxEXPAND | wxALL, 0); // Calculate the widthest tab (the one with the 'Call Stack' label) int xx, yy; wxFont fnt = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); wxWindow::GetTextExtent(_("Breakpoints"), &xx, &yy, NULL, NULL, &fnt); // load list of detached panes wxArrayString detachedPanes; DetachedPanesInfo dpi; EditorConfigST::Get()->ReadObject(wxT("DetachedPanesList"), &dpi); detachedPanes = dpi.GetPanes(); wxString name; wxBitmap bmp; name = wxGetTranslation(LOCALS); bmp = wxXmlResource::Get()->LoadBitmap(wxT("locals_view")); // Add the 'Locals View' if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, bmp, wxSize(200, 200)); m_localsTable = new LocalsTable(cp); cp->SetChildNoReparent(m_localsTable); } else { m_localsTable = new LocalsTable(m_book); m_book->AddPage(m_localsTable, name, false, bmp); } // Add the 'watches View' name = wxGetTranslation(WATCHES); bmp = wxXmlResource::Get()->LoadBitmap(wxT("watches")); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, bmp, wxSize(200, 200)); m_watchesTable = new WatchesTable(cp); cp->SetChildNoReparent(m_watchesTable); } else { m_watchesTable = new WatchesTable(m_book); m_book->AddPage(m_watchesTable, name, false, bmp); } // Add the 'ASCII Viewer' name = wxGetTranslation(ASCII_VIEWER); bmp = wxXmlResource::Get()->LoadBitmap(wxT("text_view")); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, bmp, wxSize(200, 200)); m_asciiViewer = new DebuggerAsciiViewer(cp); cp->SetChildNoReparent(m_asciiViewer); } else { m_asciiViewer = new DebuggerAsciiViewer(m_book); m_book->AddPage(m_asciiViewer, name, false, bmp); } // Add the 'Call Stack' name = wxGetTranslation(FRAMES); bmp = wxXmlResource::Get()->LoadBitmap(wxT("frames")); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, bmp, wxSize(200, 200)); m_frameList = new DebuggerCallstackView(cp); cp->SetChildNoReparent(m_frameList); } else { m_frameList = new DebuggerCallstackView(m_book); m_book->AddPage(m_frameList, name, false, bmp); } // Add the 'Breakpoints' name = wxGetTranslation(BREAKPOINTS); bmp = wxXmlResource::Get()->LoadBitmap(wxT("breakpoint")); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, bmp, wxSize(200, 200)); m_breakpoints = new BreakpointDlg(cp); cp->SetChildNoReparent(m_breakpoints); } else { m_breakpoints = new BreakpointDlg(m_book); m_book->AddPage(m_breakpoints, name, false, bmp); } // Add the 'Threads' name = wxGetTranslation(THREADS); bmp = wxXmlResource::Get()->LoadBitmap(wxT("threads")); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, bmp, wxSize(200, 200)); m_threads = new ThreadListPanel(cp); cp->SetChildNoReparent(m_threads); } else { m_threads = new ThreadListPanel(m_book); m_book->AddPage(m_threads, name, false, bmp); } // Add the 'Memory View' name = wxGetTranslation(MEMORY); bmp = wxXmlResource::Get()->LoadBitmap(wxT("memory_view")); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, bmp, wxSize(200, 200)); m_memory = new MemoryView(cp); cp->SetChildNoReparent(m_memory); } else { m_memory = new MemoryView(m_book); m_book->AddPage(m_memory, name, false, bmp); } // Add the "Output" tab name = wxGetTranslation(DEBUGGER_OUTPUT); bmp = wxXmlResource::Get()->LoadBitmap(wxT("debugger_tab")); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, bmp, wxSize(200, 200)); m_outputDebug = new DebugTab(cp, wxID_ANY, wxGetTranslation(DEBUGGER_OUTPUT)); cp->SetChildNoReparent(m_outputDebug); } else { m_outputDebug = new DebugTab(m_book, wxID_ANY, wxGetTranslation(DEBUGGER_OUTPUT)); m_book->AddPage(m_outputDebug, name, false, bmp); } // Add the "Output" tab name = wxGetTranslation(DISASSEMBLY); bmp = img.Bitmap("dbgAsm"); if(IS_DETACHED(name)) { DockablePane* cp = new DockablePane(GetParent(), m_book, name, false, bmp, wxSize(200, 200)); m_disassemble = new DebuggerDisassemblyTab(cp, wxGetTranslation(DISASSEMBLY)); cp->SetChildNoReparent(m_disassemble); } else { m_disassemble = new DebuggerDisassemblyTab(m_book, wxGetTranslation(DISASSEMBLY)); m_book->AddPage(m_disassemble, name, false, bmp); } m_book->Bind(wxEVT_BOOK_PAGE_CHANGED, &DebuggerPane::OnPageChanged, this); m_initDone = true; }
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(); }
PhpPlugin::PhpPlugin(IManager* manager) : IPlugin(manager) , m_clangOldFlag(false) , m_browser(NULL) , m_debuggerPane(NULL) , m_xdebugLocalsView(NULL) , m_xdebugEvalPane(NULL) , m_showWelcomePage(false) { m_longName = wxT("PHP Plugin for the codelite IDE"); m_shortName = wxT("PHP"); // Instantiate the bitmaps, we do this so they will be populated in wxXmlResource // Sigleton class PHPImages images; PHPWorkspace::Get()->SetPluginManager(m_mgr); XDebugManager::Initialize(this); // Add our UI // create tab (possibly detached) Notebook* book = m_mgr->GetWorkspacePaneNotebook(); if(IsWorkspaceViewDetached()) { // Make the window child of the main panel (which is the grand parent of the notebook) DockablePane* cp = new DockablePane( book->GetParent()->GetParent(), book, PHPStrings::PHP_WORKSPACE_VIEW_TITLE, wxNullBitmap, wxSize(200, 200)); m_workspaceView = new PHPWorkspaceView(cp, m_mgr); cp->SetChildNoReparent(m_workspaceView); } else { m_workspaceView = new PHPWorkspaceView(book, m_mgr); book->InsertPage(0, m_workspaceView, PHPStrings::PHP_WORKSPACE_VIEW_TITLE, true); } PHPCodeCompletion::Instance()->SetManager(m_mgr); PHPEditorContextMenu::Instance()->ConnectEvents(); PHPParserThread::Instance()->Start(); // Pass the manager class to the context menu manager PHPEditorContextMenu::Instance()->SetManager(m_mgr); // Connect events EventNotifier::Get()->Connect( wxEVT_CC_SHOW_QUICK_OUTLINE, clCodeCompletionEventHandler(PhpPlugin::OnShowQuickOutline), NULL, this); EventNotifier::Get()->Connect( wxEVT_DBG_UI_DELTE_ALL_BREAKPOINTS, clDebugEventHandler(PhpPlugin::OnXDebugDeleteAllBreakpoints), NULL, this); EventNotifier::Get()->Connect( wxEVT_CMD_CREATE_NEW_WORKSPACE, wxCommandEventHandler(PhpPlugin::OnNewWorkspace), NULL, this); EventNotifier::Get()->Connect( wxEVT_NEW_PROJECT_WIZARD_SHOWING, clNewProjectEventHandler(PhpPlugin::OnNewProject), NULL, this); EventNotifier::Get()->Connect( wxEVT_NEW_PROJECT_WIZARD_FINISHED, clNewProjectEventHandler(PhpPlugin::OnNewProjectFinish), NULL, this); EventNotifier::Get()->Connect( wxEVT_CMD_IS_WORKSPACE_OPEN, clCommandEventHandler(PhpPlugin::OnIsWorkspaceOpen), NULL, this); EventNotifier::Get()->Connect( wxEVT_CMD_CLOSE_WORKSPACE, clCommandEventHandler(PhpPlugin::OnCloseWorkspace), NULL, this); EventNotifier::Get()->Connect( wxEVT_CMD_OPEN_WORKSPACE, clCommandEventHandler(PhpPlugin::OnOpenWorkspace), NULL, this); EventNotifier::Get()->Connect( wxEVT_CMD_RELOAD_WORKSPACE, clCommandEventHandler(PhpPlugin::OnReloadWorkspace), NULL, this); EventNotifier::Get()->Connect( wxEVT_CMD_OPEN_RESOURCE, wxCommandEventHandler(PhpPlugin::OnOpenResource), NULL, this); EventNotifier::Get()->Connect( wxEVT_CMD_GET_WORKSPACE_FILES, wxCommandEventHandler(PhpPlugin::OnGetWorkspaceFiles), NULL, this); EventNotifier::Get()->Connect(wxEVT_CMD_GET_CURRENT_FILE_PROJECT_FILES, wxCommandEventHandler(PhpPlugin::OnGetCurrentFileProjectFiles), NULL, this); EventNotifier::Get()->Connect( wxEVT_CMD_GET_ACTIVE_PROJECT_FILES, wxCommandEventHandler(PhpPlugin::OnGetActiveProjectFiles), NULL, this); EventNotifier::Get()->Connect( wxEVT_CMD_GET_FIND_IN_FILES_MASK, clCommandEventHandler(PhpPlugin::OnGetFiFMask), NULL, this); EventNotifier::Get()->Connect(wxEVT_FILE_SAVED, clCommandEventHandler(PhpPlugin::OnFileSaved), NULL, this); EventNotifier::Get()->Connect(wxEVT_PHP_LOAD_URL, PHPEventHandler(PhpPlugin::OnLoadURL), NULL, this); EventNotifier::Get()->Connect( wxEVT_ALL_EDITORS_CLOSED, wxCommandEventHandler(PhpPlugin::OnAllEditorsClosed), NULL, this); EventNotifier::Get()->Bind(wxEVT_XDEBUG_CONNECTED, &PhpPlugin::OnDebugSatrted, this); EventNotifier::Get()->Bind(wxEVT_XDEBUG_SESSION_ENDED, &PhpPlugin::OnDebugEnded, this); EventNotifier::Get()->Connect(wxEVT_GOING_DOWN, clCommandEventHandler(PhpPlugin::OnGoingDown), NULL, this); CallAfter(&PhpPlugin::DoCreateDebuggerPanes); // Extract all CC files from PHP.zip into the folder ~/.codelite/php-plugin/cc wxFileName phpResources(clStandardPaths::Get().GetDataDir(), "PHP.zip"); if(phpResources.Exists()) { clZipReader zipReader(phpResources); wxFileName targetDir(clStandardPaths::Get().GetUserDataDir(), ""); targetDir.AppendDir("php-plugin"); // Don't extract the zip if one of the files on disk is newer or equal to the zip timestamp wxFileName fnSampleFile(targetDir.GetPath(), "basic.php"); fnSampleFile.AppendDir("cc"); if(!fnSampleFile.Exists() || // the sample file does not exists // Or the resource file (PHP.zip) is newer than the sample file (phpResources.GetModificationTime().GetTicks() > fnSampleFile.GetModificationTime().GetTicks())) { targetDir.Mkdir(wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL); zipReader.Extract("*", targetDir.GetPath()); // Make sure we add this path to the general PHP settings targetDir.AppendDir("cc"); // the CC files are located under an internal folder named "cc" (lowercase) PHPConfigurationData config; if(config.Load().GetCcIncludePath().Index(targetDir.GetPath()) == wxNOT_FOUND) { config.Load().GetCcIncludePath().Add(targetDir.GetPath()); config.Save(); } } } else { CL_WARNING("PHP: Could not locate PHP resources 'PHP.zip' => '%s'", phpResources.GetFullPath()); } }
void WorkspacePane::CreateGUIControls() { wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL); SetSizer(mainSizer); // add notebook for tabs long bookStyle = wxVB_LEFT | wxAUI_NB_WINDOWLIST_BUTTON; m_book = new Notebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, bookStyle); // 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; name = _("Workspace"); if(IS_DETACHED(name)) { DockablePane *cp = new DockablePane(GetParent(), m_book, name, 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); } // Add the explorer tab name = _("Explorer"); if(IS_DETACHED(name)) { DockablePane *cp = new DockablePane(GetParent(), m_book, name, 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); } // Add the Open Windows Panel (Tabs) name = _("Tabs"); if(IS_DETACHED(name)) { DockablePane *cp = new DockablePane(GetParent(), m_book, name, 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); } // Add the Tabgroups tab name = _("Tabgroups"); if(IS_DETACHED(name)) { DockablePane *cp = new DockablePane(GetParent(), m_book, name, 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); } if (m_book->GetPageCount() > 0) { m_book->SetSelection((size_t)0); } UpdateTabs(); m_mgr->Update(); }