Skip to content
Extraits de code Groupes Projets
Vérifiée Valider 3003c764 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

UI: Enable the FakeVim by default!

parent 94300e11
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Ce commit fait partie de la requête de fusion !19. Les commentaires créés ici seront créés dans le contexte de cette requête de fusion.
...@@ -23,9 +23,42 @@ ScriptDocumentView::ScriptDocumentView(std::shared_ptr<ScriptDocument> ptr, QWid ...@@ -23,9 +23,42 @@ ScriptDocumentView::ScriptDocumentView(std::shared_ptr<ScriptDocument> ptr, QWid
setCentralWidget(editor); setCentralWidget(editor);
editor->setFocus(Qt::OtherFocusReason); editor->setFocus(Qt::OtherFocusReason);
// FakeVim
{
handler = new FakeVimHandler(editor, this);
proxy = EditorProxy::connectSignals(handler, editor);
connect(proxy, &EditorProxy::handleInput, handler, &FakeVimHandler::handleInput);
// connect(proxy, &EditorProxy::requestSave, document, &AbstractDocument::save); // TODO
// connect(proxy, &EditorProxy::requestSaveAndQuit, document, &AbstractDocument::save + &MainWindow::closeTab); // TODO
// connect(proxy, &EditorProxy::requestQuit, document, &MainWindow::closeTab); // TODO
initHandler(handler);
handler->handleCommand(QStringLiteral("set expandtab"));
handler->handleCommand(QStringLiteral("set shiftwidth=4"));
handler->handleCommand(QStringLiteral("set tabstop=4"));
handler->handleCommand(QStringLiteral("set autoindent"));
handler->handleCommand(QStringLiteral("set smartindent"));
clearUndoRedo(editor);
}
connect(this, &ScriptDocumentView::luaErrorFound, editor, &ScriptEditor::updateLastLuaError); connect(this, &ScriptDocumentView::luaErrorFound, editor, &ScriptEditor::updateLastLuaError);
} }
void
ScriptDocumentView::initHandler(FakeVimHandler *handler) noexcept
{
handler->handleCommand(QStringLiteral("set nopasskeys"));
handler->handleCommand(QStringLiteral("set nopasscontrolkey"));
handler->installEventFilter();
handler->setupWidget();
}
void
ScriptDocumentView::clearUndoRedo(QPlainTextEdit *scriptEditor) noexcept
{
scriptEditor->setUndoRedoEnabled(false);
scriptEditor->setUndoRedoEnabled(true);
}
void void
ScriptDocumentView::closeDocument() noexcept ScriptDocumentView::closeDocument() noexcept
{ {
......
...@@ -11,16 +11,29 @@ ...@@ -11,16 +11,29 @@
#include <QString> #include <QString>
#include <memory> #include <memory>
class QPlainTextEdit;
namespace FakeVim::Internal
{
class FakeVimHandler;
}
namespace Vivy namespace Vivy
{ {
class ScriptEditor; class ScriptEditor;
class ScriptHighlighter; class ScriptHighlighter;
class ScriptDocument; class ScriptDocument;
class EditorProxy;
}
namespace Vivy
{
class ScriptDocumentView final : public AbstractDocumentView { class ScriptDocumentView final : public AbstractDocumentView {
Q_OBJECT Q_OBJECT
VIVY_UNMOVABLE_OBJECT(ScriptDocumentView) VIVY_UNMOVABLE_OBJECT(ScriptDocumentView)
using FakeVimHandler = FakeVim::Internal::FakeVimHandler;
public: public:
explicit ScriptDocumentView(std::shared_ptr<ScriptDocument>, QWidget *parent = nullptr); explicit ScriptDocumentView(std::shared_ptr<ScriptDocument>, QWidget *parent = nullptr);
...@@ -37,10 +50,15 @@ signals: ...@@ -37,10 +50,15 @@ signals:
private: private:
ScriptEditor *editor{ nullptr }; ScriptEditor *editor{ nullptr };
EditorProxy *proxy{ nullptr };
ScriptHighlighter *syntax{ nullptr }; ScriptHighlighter *syntax{ nullptr };
FakeVimHandler *handler{ nullptr };
std::shared_ptr<ScriptDocument> document{ nullptr }; std::shared_ptr<ScriptDocument> document{ nullptr };
QString lastLuaErrorMsg{}; QString lastLuaErrorMsg{};
int lastLuaErrorLine{ -1 }; int lastLuaErrorLine{ -1 };
static void initHandler(FakeVimHandler *handler) noexcept;
static void clearUndoRedo(QPlainTextEdit *editor) noexcept;
}; };
} }
......
#include "EditorProxy.hh" #include "EditorProxy.hh"
#include "../FakeVim/FakeVimHandler.hh" #include "../FakeVim/FakeVimHandler.hh"
#include "../FakeVim/FakeVimActions.hh" #include "../FakeVim/FakeVimActions.hh"
#include "../../VivyApplication.hh"
#include <QMessageBox> #include <QMessageBox>
#include <QStatusBar> #include <QStatusBar>
...@@ -9,26 +10,10 @@ ...@@ -9,26 +10,10 @@
using namespace Vivy; using namespace Vivy;
void
Vivy::initHandler(FakeVimHandler *handler)
{
handler->handleCommand(QStringLiteral("set nopasskeys"));
handler->handleCommand(QStringLiteral("set nopasscontrolkey"));
handler->installEventFilter();
handler->setupWidget();
}
void
Vivy::clearUndoRedo(QPlainTextEdit *scriptEditor)
{
scriptEditor->setUndoRedoEnabled(false);
scriptEditor->setUndoRedoEnabled(true);
}
Vivy::EditorProxy * Vivy::EditorProxy *
Vivy::connectSignals(FakeVimHandler *handler, QMainWindow *mainWindow, QPlainTextEdit *editor) EditorProxy::connectSignals(FakeVimHandler *handler, QPlainTextEdit *editor) noexcept
{ {
EditorProxy *proxy = new EditorProxy(editor, mainWindow, handler); EditorProxy *proxy = new EditorProxy(editor, handler);
handler->commandBufferChanged.connect([proxy](const QString &contents, int cursorPos, handler->commandBufferChanged.connect([proxy](const QString &contents, int cursorPos,
int /* anchorPos */, int /* anchorPos */,
...@@ -64,10 +49,9 @@ Vivy::connectSignals(FakeVimHandler *handler, QMainWindow *mainWindow, QPlainTex ...@@ -64,10 +49,9 @@ Vivy::connectSignals(FakeVimHandler *handler, QMainWindow *mainWindow, QPlainTex
return proxy; return proxy;
} }
EditorProxy::EditorProxy(QPlainTextEdit *widg, QMainWindow *mainWin, QObject *parent) noexcept EditorProxy::EditorProxy(QPlainTextEdit *widg, QObject *parent) noexcept
: QObject(parent) : QObject(parent)
, widget(widg) , widget(widg)
, mainWindow(mainWin)
{ {
} }
...@@ -146,7 +130,7 @@ EditorProxy::updateStatusBar() noexcept ...@@ -146,7 +130,7 @@ EditorProxy::updateStatusBar() noexcept
static constexpr int msgMaxSize = 80; static constexpr int msgMaxSize = 80;
int slack = msgMaxSize - statusMessage.size() - statusData.size(); int slack = msgMaxSize - statusMessage.size() - statusData.size();
QString msg = statusMessage + QString(slack, QLatin1Char(' ')) + statusData; QString msg = statusMessage + QString(slack, QLatin1Char(' ')) + statusData;
mainWindow->statusBar()->showMessage(msg); vivyApp->getMainWindow()->statusBar()->showMessage(msg);
} }
void void
......
...@@ -24,10 +24,11 @@ using ExCommand = FakeVim::Internal::ExCommand; ...@@ -24,10 +24,11 @@ using ExCommand = FakeVim::Internal::ExCommand;
class EditorProxy : public QObject { class EditorProxy : public QObject {
Q_OBJECT Q_OBJECT
VIVY_UNMOVABLE_OBJECT(EditorProxy)
explicit EditorProxy(QPlainTextEdit *widget, QObject *parent = nullptr) noexcept;
public: public:
explicit EditorProxy(QPlainTextEdit *widget, QMainWindow *mw,
QObject *parent = nullptr) noexcept;
void openFile(const QString &fileName) noexcept; void openFile(const QString &fileName) noexcept;
bool save(const QString &fileName) noexcept; bool save(const QString &fileName) noexcept;
...@@ -70,19 +71,15 @@ private: ...@@ -70,19 +71,15 @@ private:
QString content() const noexcept; QString content() const noexcept;
QPlainTextEdit *widget; QPlainTextEdit *widget;
QMainWindow *mainWindow;
QString statusMessage; QString statusMessage;
QString statusData; QString statusData;
QList<QTextEdit::ExtraSelection> searchSelection; QList<QTextEdit::ExtraSelection> searchSelection;
QList<QTextEdit::ExtraSelection> clearSelection; QList<QTextEdit::ExtraSelection> clearSelection;
QList<QTextEdit::ExtraSelection> blockSelection; QList<QTextEdit::ExtraSelection> blockSelection;
};
QWidget *createEditorWidget(bool usePlainTextEdit); public:
void initHandler(FakeVimHandler *handler); static EditorProxy *connectSignals(FakeVimHandler *handler, QPlainTextEdit *editor) noexcept;
void clearUndoRedo(QPlainTextEdit *editor); };
EditorProxy *connectSignals(FakeVimHandler *handler, QMainWindow *mainWindow,
QPlainTextEdit *editor);
} }
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter