void ApiHandler::IpcEditorGetText(EditorCtrl& editor, IConnection& conn) { vector<char> text; editor.GetText(text); hessian_ipc::Writer& writer = conn.get_reply_writer(); writer.write_reply(text); }
void PreviewDlg::UpdateBrowser(cxUpdateMode mode) { if (m_thread) return; // update in process // Do we have a temp file if (m_tempPath.empty()) { m_tempPath = wxFileName::CreateTempFileName(wxEmptyString); m_tempPath += wxT(".html"); m_isFirst = true; } // Load the text of entire doc vector<char> text; { EditorCtrl* editor = m_pinnedEditor ? m_pinnedEditor : m_editorCtrl; editor->GetText(text); m_truePath = editor->GetPath(); } m_uncPath = eDocumentPath::ConvertPathToUncFileUrl(m_truePath); // Make sure we only update when the editor changes m_editorChangeToken = m_editorCtrl->GetChangeToken(); m_editorCtrl->MarkPreviewDone(); if (m_pipeCmd.empty()) { wxFile tempFile(m_tempPath, wxFile::write); if (!tempFile.IsOpened()) return; if (!text.empty()) { if (!m_truePath.empty()) { InsertBase(text, m_truePath); // Check if we should also save the current css file // (does not work with remote files as file has to be // saved in same location as source) if (m_pinnedEditor && !m_editorCtrl->IsRemote()) { if (InsertStyle(text)) { wxFileOutputStream cssFile(m_tempCssPath); if (!cssFile.IsOk()) return; m_editorCtrl->WriteText(cssFile); } } } tempFile.Write(&*text.begin(), text.size()); } if (m_isFirst) mode = cxUPDATE_RELOAD; RefreshBrowser(mode); } else { cxEnv env; m_editorCtrl->SetEnv(env, true); const wxString cmd = ShellRunner::GetBashCommand(m_pipeCmd, env); if (cmd.empty()) return; // Thread will send event and delete itself when done m_thread = new Preview_CommandThread(cmd, text, m_tempPath, m_truePath, *this, env); } m_isOnPreview = true; }