#include "fakevimhandler.h" #include #include #include #include #include #include using namespace FakeVim::Internal; class Proxy : public QObject { Q_OBJECT public: Proxy(QWidget *widget) : QObject(0), m_widget(widget) {} public slots: void changeSelection(QWidget *w, const QList &s) { if (QPlainTextEdit *ed = qobject_cast(w)) ed->setExtraSelections(s); else if (QTextEdit *ed = qobject_cast(w)) ed->setExtraSelections(s); } private: QWidget *m_widget; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); QStringList args = app.arguments(); (void) args.takeFirst(); QWidget *widget = 0; QString title; bool usePlainTextEdit = args.size() < 2; if (usePlainTextEdit) { widget = new QPlainTextEdit; title = "PlainTextEdit"; } else { widget = new QTextEdit; title = "TextEdit"; } widget->resize(450, 350); widget->setFocus(); Proxy proxy(widget); FakeVimHandler handler; QMainWindow mw; mw.setWindowTitle("Fakevim (" + title + ")"); mw.setCentralWidget(widget); mw.resize(500, 650); mw.move(0, 0); mw.show(); QFont font = widget->font(); //: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1 //font.setFamily("Misc"); font.setFamily("Monospace"); //font.setStretch(QFont::SemiCondensed); widget->setFont(font); mw.statusBar()->setFont(font); QObject::connect(&handler, SIGNAL(commandBufferChanged(QString)), mw.statusBar(), SLOT(showMessage(QString))); QObject::connect(&handler, SIGNAL(quitRequested(QWidget *)), &app, SLOT(quit())); QObject::connect(&handler, SIGNAL(selectionChanged(QWidget*,QList)), &proxy, SLOT(changeSelection(QWidget*,QList))); handler.addWidget(widget); if (args.size() >= 1) handler.handleCommand(widget, "r " + args.at(0)); return app.exec(); } #include "main.moc"