/* * SessionClientEvent.cpp * * Copyright (C) 2009-11 by RStudio, Inc. * * This program is licensed to you under the terms of version 3 of the * GNU Affero General Public License. This program is distributed WITHOUT * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. * */ #include #include #include #include #include #include #include using namespace core ; namespace session { namespace client_events { const int kBusy = 1; const int kConsolePrompt = 2; const int kConsoleWriteOutput = 3; const int kConsoleWriteError = 4; const int kShowErrorMessage = 5; const int kShowHelp = 6; const int kBrowseUrl = 7; const int kWorkspaceRefresh = 8; const int kWorkspaceAssign = 9; const int kWorkspaceRemove = 10; const int kShowEditor = 11; const int kChooseFile = 13; const int kAbendWarning = 14; const int kQuit = 15; const int kSuicide = 16; const int kFileChanged = 17; const int kWorkingDirChanged = 18; const int kPlotsStateChanged = 19; const int kViewData = 20; const int kPackageStatusChanged = 21; const int kInstalledPackagesChanged = 22; const int kLocator = 23; const int kConsoleResetHistory = 25; const int kSessionSerialization = 26; const int kHistoryEntriesAdded = 27; const int kQuotaStatus = 29; const int kOAuthApproval = 30; const int kPublishPdf = 31; const int kFileEdit = 32; const int kShowContent = 33; const int kShowData = 34; const int kAsyncCompletion = 35; const int kSaveActionChanged = 36; const int kConsoleWritePrompt = 37; const int kConsoleWriteInput = 38; const int kShowWarningBar = 39; const int kOpenProjectError = 40; const int kVcsRefresh = 41; const int kAskPass = 42; const int kConsoleProcessOutput = 43; const int kConsoleProcessExit = 44; const int kListChanged = 45; const int kConsoleProcessCreated = 46; const int kUiPrefsChanged = 47; const int kHandleUnsavedChanges = 48; const int kPosixShellOutput = 49; const int kPosixShellExit = 50; } void ClientEvent::init(int type, const json::Value& data) { type_ = type; data_ = data; id_ = core::system::generateUuid(); } void ClientEvent::asJsonObject(int id, json::Object* pObject) const { json::Object& object = *pObject; object["id"] = id; object["type"] = typeName(); object["data"] = data(); } std::string ClientEvent::typeName() const { switch(type_) { case client_events::kBusy: return "busy"; case client_events::kConsolePrompt: return "console_prompt"; case client_events::kConsoleWriteOutput: return "console_output"; case client_events::kConsoleWriteError: return "console_error"; case client_events::kShowErrorMessage: return "show_error_message"; case client_events::kShowHelp: return "show_help"; case client_events::kBrowseUrl: return "browse_url"; case client_events::kWorkspaceRefresh: return "workspace_refresh"; case client_events::kWorkspaceAssign: return "workspace_assign"; case client_events::kWorkspaceRemove: return "workspace_remove"; case client_events::kShowEditor: return "show_editor"; case client_events::kChooseFile: return "choose_file"; case client_events::kAbendWarning: return "abend_warning"; case client_events::kQuit: return "quit"; case client_events::kSuicide: return "suicide"; case client_events::kFileChanged: return "file_changed"; case client_events::kWorkingDirChanged: return "working_dir_changed"; case client_events::kPlotsStateChanged: return "plots_state_changed"; case client_events::kViewData: return "view_data"; case client_events::kPackageStatusChanged: return "package_status_changed"; case client_events::kInstalledPackagesChanged: return "installed_packages_changed"; case client_events::kLocator: return "locator"; case client_events::kConsoleResetHistory: return "console_reset_history"; case client_events::kSessionSerialization: return "session_serialization"; case client_events::kHistoryEntriesAdded: return "history_entries_added"; case client_events::kQuotaStatus: return "quota_status"; case client_events::kOAuthApproval: return "oauth_approval"; case client_events::kPublishPdf: return "publish_pdf"; case client_events::kFileEdit: return "file_edit"; case client_events::kShowContent: return "show_content"; case client_events::kShowData: return "show_data"; case client_events::kAsyncCompletion: return "async_completion"; case client_events::kSaveActionChanged: return "save_action_changed"; case client_events::kConsoleWritePrompt: return "console_write_prompt"; case client_events::kConsoleWriteInput: return "console_write_input"; case client_events::kShowWarningBar: return "show_warning_bar"; case client_events::kOpenProjectError: return "open_project_error"; case client_events::kVcsRefresh: return "vcs_refresh"; case client_events::kAskPass: return "ask_pass"; case client_events::kConsoleProcessOutput: return "console_process_output"; case client_events::kConsoleProcessExit: return "console_process_exit"; case client_events::kListChanged: return "list_changed"; case client_events::kUiPrefsChanged: return "ui_prefs_changed"; case client_events::kHandleUnsavedChanges: return "handle_unsaved_changes"; case client_events::kPosixShellOutput: return "posix_shell_output"; case client_events::kPosixShellExit: return "posix_shell_exit"; default: LOG_WARNING_MESSAGE("unexpected event type: " + boost::lexical_cast(type_)); return ""; } } ClientEvent browseUrlEvent(const std::string& url, const std::string& window) { json::Object browseURLInfo; browseURLInfo["url"] = url; browseURLInfo["window"] = window; return ClientEvent(client_events::kBrowseUrl, browseURLInfo); } ClientEvent showErrorMessageEvent(const std::string& title, const std::string& message) { json::Object errorMessage ; errorMessage["title"] = title; errorMessage["message"] = message; return ClientEvent(client_events::kShowErrorMessage, errorMessage); } } // namespace session