void PhpPlugin::OnCloseWorkspace(clCommandEvent& e) { if(PHPWorkspace::Get()->IsOpen()) { m_mgr->EnableClangCodeCompletion(m_clangOldFlag); PHPWorkspace::Get()->Close(); m_workspaceView->UnLoadWorkspace(); // notify codelite to close the currently opened workspace wxCommandEvent eventClose(wxEVT_COMMAND_MENU_SELECTED, wxID_CLOSE_ALL); eventClose.SetEventObject(FRAME); FRAME->GetEventHandler()->ProcessEvent(eventClose); wxCommandEvent eventCloseWsp(wxEVT_COMMAND_MENU_SELECTED, XRCID("close_workspace")); eventCloseWsp.SetEventObject(FRAME); FRAME->GetEventHandler()->ProcessEvent(eventCloseWsp); // Show the 'Workspace' tab by sending the main frame a "Hide workspace tab" event wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, XRCID("show_workspace_tab")); event.SetEventObject(FRAME); event.SetInt(1); FRAME->GetEventHandler()->AddPendingEvent(event); /// The 'wxID_CLOSE_ALL' is done async (i.e. it will take place in the next event loop) /// So we mark ourself that we should display the welcome page next time we capture /// the 'All Editors Closed' event m_showWelcomePage = true; } else { e.Skip(); } }
bool wxWindowGTK::DoPopupMenu( wxMenu *menu, int x, int y ) { wxCHECK_MSG( m_widget != NULL, false, wxT("invalid window") ); wxCHECK_MSG( menu != NULL, false, wxT("invalid popup-menu") ); // NOTE: if you change this code, you need to update // the same code in taskbar.cpp as well. This // is ugly code duplication, I know. menu->UpdateUI(); bool is_waiting = true; gulong handler = gtk_signal_connect( GTK_OBJECT(menu->m_menu), "hide", GTK_SIGNAL_FUNC(gtk_pop_hide_callback), (gpointer)&is_waiting ); wxPoint pos; gpointer userdata; GtkMenuPositionFunc posfunc; if ( x == -1 && y == -1 ) { // use GTK's default positioning algorithm userdata = NULL; posfunc = NULL; } else { pos = ClientToScreen(wxPoint(x, y)); userdata = &pos; posfunc = wxPopupMenuPositionCallback; } wxMenuEvent eventOpen(wxEVT_MENU_OPEN, -1, menu); DoCommonMenuCallbackCode(menu, eventOpen); gtk_menu_popup( GTK_MENU(menu->m_menu), NULL, // parent menu shell NULL, // parent menu item posfunc, // function to position it userdata, // client data 0, // button used to activate it wxGtkTimeLastClick // the time of activation ); while (is_waiting) { gtk_main_iteration(); } gtk_signal_disconnect(GTK_OBJECT(menu->m_menu), handler); wxMenuEvent eventClose(wxEVT_MENU_CLOSE, -1, menu); DoCommonMenuCallbackCode(menu, eventClose); return true; }
void NodeJSWorkspace::Close() { if(!IsOpen()) return; // Store the session clGetManager()->StoreWorkspaceSession(m_filename); Save(); DoClear(); // disable clang for NodeJS clGetManager()->EnableClangCodeCompletion(m_clangOldFlag); // Clear the UI GetView()->Clear(); // Notify workspace closed event wxCommandEvent event(wxEVT_WORKSPACE_CLOSED); EventNotifier::Get()->ProcessEvent(event); m_debugger.Reset(NULL); // notify codelite to close the currently opened workspace wxCommandEvent eventClose(wxEVT_MENU, wxID_CLOSE_ALL); eventClose.SetEventObject(EventNotifier::Get()->TopFrame()); EventNotifier::Get()->TopFrame()->GetEventHandler()->ProcessEvent(eventClose); m_showWelcomePage = true; }
void Dialog::Close(int result) { if (OnClose(result)) { if (eventClose) eventClose(result); Destroy(); } }
EditorFrame::~EditorFrame() { // this will make sure that the main menu bar's member m_widget is freed before the we enter wxMenuBar destructor // see this wxWidgets bug report for more details: // http://trac.wxwidgets.org/ticket/14292 #if defined(__WXGTK__) && wxVERSION_NUMBER < 2904 delete m_myMenuBar; #endif clCommandEvent evntInternalClosed(wxEVT_DETACHED_EDITOR_CLOSED); evntInternalClosed.SetClientData((IEditor*)m_editor); evntInternalClosed.SetFileName(m_editor->GetFileName().GetFullPath()); EventNotifier::Get()->ProcessEvent(evntInternalClosed); // Send the traditional plugin event notifying that this editor is about to be destroyed wxCommandEvent eventClose(wxEVT_EDITOR_CLOSING); eventClose.SetClientData((IEditor*)m_editor); EventNotifier::Get()->ProcessEvent(eventClose); m_editor = NULL; }
void PhpPlugin::DoOpenWorkspace(const wxString& filename, bool createIfMissing) { // notify codelite to close the currently opened workspace wxCommandEvent eventClose(wxEVT_COMMAND_MENU_SELECTED, XRCID("close_workspace")); eventClose.SetEventObject(FRAME); FRAME->GetEventHandler()->ProcessEvent(eventClose); // Open the PHP workspace if(!PHPWorkspace::Get()->Open(filename, createIfMissing)) { wxMessageBox(_("Failed to open workspace: corrupted workspace file"), wxT("CodeLite"), wxOK | wxICON_WARNING | wxCENTER, FRAME); return; } // Keep the old clang state before we disable it const TagsOptionsData& options = TagsManagerST::Get()->GetCtagsOptions(); m_clangOldFlag = (options.GetClangOptions() & CC_CLANG_ENABLED); m_mgr->EnableClangCodeCompletion(false); m_workspaceView->LoadWorkspace(); // Hide the 'Workspace' tab by sending the main frame a "Hide workspace tab" event wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, XRCID("show_workspace_tab")); event.SetEventObject(FRAME); event.SetInt(0); FRAME->GetEventHandler()->AddPendingEvent(event); // Select the 'PHP' tab size_t index = m_mgr->GetWorkspacePaneNotebook()->GetPageIndex(m_workspaceView); if(index != Notebook::npos) { m_mgr->GetWorkspacePaneNotebook()->SetSelection(index); } // and finally, request codelite to keep this workspace in the recently opened workspace list m_mgr->AddWorkspaceToRecentlyUsedList(filename); }
void PhpPlugin::DoOpenWorkspace(const wxString& filename, bool createIfMissing, bool createProjectFromSources) { // notify codelite to close the currently opened workspace wxCommandEvent eventClose(wxEVT_COMMAND_MENU_SELECTED, XRCID("close_workspace")); eventClose.SetEventObject(FRAME); FRAME->GetEventHandler()->ProcessEvent(eventClose); // Open the PHP workspace if(!PHPWorkspace::Get()->Open(filename, m_workspaceView, createIfMissing)) { wxMessageBox(_("Failed to open workspace: corrupted workspace file"), wxT("CodeLite"), wxOK | wxICON_WARNING | wxCENTER, FRAME); return; } // Keep the old clang state before we disable it const TagsOptionsData& options = TagsManagerST::Get()->GetCtagsOptions(); m_clangOldFlag = (options.GetClangOptions() & CC_CLANG_ENABLED); m_mgr->EnableClangCodeCompletion(false); m_workspaceView->LoadWorkspaceView(); // Select the 'PHP' tab m_mgr->GetWorkspaceView()->SelectPage(PHPStrings::PHP_WORKSPACE_VIEW_LABEL); if(createProjectFromSources) { PHPConfigurationData conf; PHPProject::CreateData cd; conf.Load(); cd.importFilesUnderPath = true; cd.name = PHPWorkspace::Get()->GetWorkspaceName(); cd.phpExe = conf.GetPhpExe(); cd.path = PHPWorkspace::Get()->GetFilename().GetPath(); cd.projectType = PHPProjectSettingsData::kRunAsCLI; m_workspaceView->CallAfter(&PHPWorkspaceView::CreateNewProject, cd); } }
long wxTaskBarIconEx::WindowProc( WXHWND hWnd, unsigned int msg, unsigned int wParam, long lParam ) { wxLogTrace(wxT("Function Start/End"), wxT("wxTaskBarIconEx::WindowProc - Function Begin")); wxEventType eventType = 0; long lReturnValue = 0; if ( WM_CLOSE == msg ) { wxLogTrace(wxT("Function Status"), wxT("wxTaskBarIconEx::WindowProc - WM_CLOSE Detected")); wxCloseEvent eventClose(wxEVT_CLOSE_WINDOW); ProcessEvent(eventClose); if ( !eventClose.GetSkipped() ) lReturnValue = DefWindowProc((HWND) hWnd, msg, wParam, lParam); else lReturnValue = 0; } else if ( WM_TASKBARCREATED == msg ) { wxLogTrace(wxT("Function Status"), wxT("wxTaskBarIconEx::WindowProc - WM_TASKBARCREATED Detected")); eventType = wxEVT_TASKBAR_CREATED; } else if ( WM_TASKBARSHUTDOWN == msg ) { wxLogTrace(wxT("Function Status"), wxT("wxTaskBarIconEx::WindowProc - WM_TASKBARSHUTDOWN Detected")); eventType = wxEVT_TASKBAR_SHUTDOWN; } if (msg != sm_taskbarMsg) lReturnValue = DefWindowProc((HWND) hWnd, msg, wParam, lParam); if ( 0 == eventType ) { switch (lParam) { case WM_LBUTTONDOWN: eventType = wxEVT_TASKBAR_LEFT_DOWN; break; case WM_LBUTTONUP: eventType = wxEVT_TASKBAR_LEFT_UP; break; case WM_RBUTTONDOWN: eventType = wxEVT_TASKBAR_RIGHT_DOWN; break; case WM_RBUTTONUP: eventType = wxEVT_TASKBAR_RIGHT_UP; break; case WM_LBUTTONDBLCLK: eventType = wxEVT_TASKBAR_LEFT_DCLICK; break; case WM_RBUTTONDBLCLK: eventType = wxEVT_TASKBAR_RIGHT_DCLICK; break; case WM_MOUSEMOVE: eventType = wxEVT_TASKBAR_MOVE; break; case WM_CONTEXTMENU: eventType = wxEVT_TASKBAR_CONTEXT_MENU; break; case NIN_SELECT: eventType = wxEVT_TASKBAR_SELECT; break; case NIN_KEYSELECT: eventType = wxEVT_TASKBAR_KEY_SELECT; break; case NIN_BALLOONSHOW: eventType = wxEVT_TASKBAR_BALLOON_SHOW; break; case NIN_BALLOONHIDE: eventType = wxEVT_TASKBAR_BALLOON_HIDE; break; case NIN_BALLOONTIMEOUT: eventType = wxEVT_TASKBAR_BALLOON_TIMEOUT; break; case NIN_BALLOONUSERCLICK: eventType = wxEVT_TASKBAR_BALLOON_USERCLICK; break; } } if (eventType) { wxTaskBarIconExEvent event(eventType, this); ProcessEvent(event); lReturnValue = 0; } wxLogTrace(wxT("Function Start/End"), wxT("wxTaskBarIconEx::WindowProc - Function End")); return lReturnValue; }