From f08c67b465ef3da20f1e804aa6a28686ec892757 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Thu, 15 Jan 2009 15:27:14 +0100 Subject: [PATCH] fakevim: remove core dependencies from fakevimhandler.cpp. breaks writing of partial files for now. --- src/plugins/fakevim/fakevimhandler.cpp | 31 +++++++++----------------- src/plugins/fakevim/fakevimhandler.h | 2 ++ src/plugins/fakevim/fakevimplugin.cpp | 29 ++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 21 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index a56fad81d51..c438a9ac265 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -40,10 +40,6 @@ // Qt Creator. The idea is to keep this file here in a "clean" state that // allows easy reuse with any QTextEdit or QPlainTextEdit derived class. -#include <coreplugin/filemanager.h> -#include <coreplugin/icore.h> -#include <texteditor/basetexteditor.h> - //#include <indenter.h> #include <QtCore/QDebug> @@ -1200,18 +1196,11 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) bool exists = file.exists(); if (exists && !forced && !noArgs) { showRedMessage(tr("File '%1' exists (add ! to override)").arg(fileName)); - } else if (m_currentFile || file.open(QIODevice::ReadWrite)) { - if(m_currentFile) { - m_core->fileManager()->blockFileChange(m_currentFile); - m_currentFile->save(fileName); - m_core->fileManager()->unblockFileChange(m_currentFile); - } else { - QTextCursor tc = selectRange(beginLine, endLine); - qDebug() << "ANCHOR: " << tc.position() << tc.anchor() - << tc.selection().toPlainText(); - { QTextStream ts(&file); ts << tc.selection().toPlainText(); } - file.close(); - } + } else if (file.open(QIODevice::ReadWrite)) { + QTextCursor tc = selectRange(beginLine, endLine); + QString contents = tc.selection().toPlainText(); + emit q->writeFile(fileName, contents); + // check by reading back file.open(QIODevice::ReadOnly); QByteArray ba = file.readAll(); showBlackMessage(tr("\"%1\" %2 %3L, %4C written") @@ -1741,11 +1730,6 @@ void FakeVimHandler::Private::setWidget(QWidget *ob) { m_textedit = qobject_cast<QTextEdit *>(ob); m_plaintextedit = qobject_cast<QPlainTextEdit *>(ob); - TextEditor::BaseTextEditor* editor = qobject_cast<TextEditor::BaseTextEditor*>(ob); - if (editor) { - m_currentFile = editor->file(); - m_currentFileName = m_currentFile->fileName(); - } } /////////////////////////////////////////////////////////////////////// @@ -1834,3 +1818,8 @@ void FakeVimHandler::quit() { d->quit(); } + +void FakeVimHandler::setCurrentFileName(const QString &fileName) +{ + d->m_currentFileName = fileName; +} diff --git a/src/plugins/fakevim/fakevimhandler.h b/src/plugins/fakevim/fakevimhandler.h index 08df6d21b12..aeba5ace870 100644 --- a/src/plugins/fakevim/fakevimhandler.h +++ b/src/plugins/fakevim/fakevimhandler.h @@ -58,6 +58,7 @@ public slots: // FIXME: good idea? void addWidget(QWidget *widget); void removeWidget(QWidget *widget); + void setCurrentFileName(const QString &fileName); // This executes an "ex" style command taking context // information from \p widget; @@ -72,6 +73,7 @@ signals: void quitRequested(QWidget *); void selectionChanged(QWidget *widget, const QList<QTextEdit::ExtraSelection> &selection); + void writeFile(const QString &fileName, const QString &contents); private: bool eventFilter(QObject *ob, QEvent *ev); diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index 0a06fe7c112..e809eaae481 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -39,7 +39,9 @@ #include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/coreconstants.h> #include <coreplugin/editormanager/editormanager.h> +#include <coreplugin/filemanager.h> #include <coreplugin/icore.h> +#include <coreplugin/ifile.h> #include <coreplugin/messagemanager.h> #include <coreplugin/modemanager.h> #include <coreplugin/uniqueidmanager.h> @@ -117,12 +119,14 @@ private slots: void editorAboutToClose(Core::IEditor *); void changeSelection(QWidget *widget, const QList<QTextEdit::ExtraSelection> &selections); + void writeFile(const QString &fileName, const QString &contents); private: FakeVimPlugin *q; FakeVimHandler *m_handler; QAction *m_installHandlerAction; Core::ICore *m_core; + Core::IFile *m_currentFile; }; } // namespace Internal @@ -134,6 +138,7 @@ FakeVimPluginPrivate::FakeVimPluginPrivate(FakeVimPlugin *plugin) m_handler = 0; m_installHandlerAction = 0; m_core = 0; + m_currentFile = 0; } FakeVimPluginPrivate::~FakeVimPluginPrivate() @@ -206,6 +211,12 @@ void FakeVimPluginPrivate::installHandler(QWidget *widget) this, SLOT(changeSelection(QWidget*,QList<QTextEdit::ExtraSelection>))); m_handler->addWidget(widget); + TextEditor::BaseTextEditor* editor = + qobject_cast<TextEditor::BaseTextEditor*>(widget); + if (editor) { + m_currentFile = editor->file(); + m_handler->setCurrentFileName(editor->file()->fileName()); + } BaseTextEditor *bt = qobject_cast<BaseTextEditor *>(widget); if (bt) { @@ -225,12 +236,30 @@ void FakeVimPluginPrivate::installHandler(QWidget *widget) } } +void FakeVimPluginPrivate::writeFile(const QString &fileName, + const QString &contents) +{ + if (m_currentFile && fileName == m_currentFile->fileName()) { + // handle that as a special case for nicer interation with + // Creator core + m_core->fileManager()->blockFileChange(m_currentFile); + m_currentFile->save(fileName); + m_core->fileManager()->unblockFileChange(m_currentFile); + } else { + QFile file(fileName); + file.open(QIODevice::ReadWrite); + { QTextStream ts(&file); ts << contents; } + file.close(); + } +} + void FakeVimPluginPrivate::removeHandler(QWidget *widget) { Q_UNUSED(widget); m_handler->removeWidget(widget); Core::EditorManager::instance()->hideEditorInfoBar( QLatin1String(Constants::MINI_BUFFER)); + m_currentFile = 0; } void FakeVimPluginPrivate::editorOpened(Core::IEditor *editor) -- GitLab