| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  | #include "fakevimhandler.h"
 | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <QtCore/QDebug>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QtGui/QApplication>
 | 
					
						
							|  |  |  | #include <QtGui/QMainWindow>
 | 
					
						
							| 
									
										
										
										
											2009-01-15 17:29:30 +01:00
										 |  |  | #include <QtGui/QMessageBox>
 | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  | #include <QtGui/QPlainTextEdit>
 | 
					
						
							|  |  |  | #include <QtGui/QStatusBar>
 | 
					
						
							|  |  |  | #include <QtGui/QTextEdit>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | using namespace FakeVim::Internal; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  | class Proxy : public QObject | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     Q_OBJECT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2009-01-27 14:08:17 +01:00
										 |  |  |     Proxy(QWidget *widget, QMainWindow *mw, QObject *parent = 0) | 
					
						
							|  |  |  |       : QObject(parent), m_widget(widget), m_mainWindow(mw) | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |     {} | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | public slots: | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |     void changeSelection(const QList<QTextEdit::ExtraSelection> &s) | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-01-23 16:37:32 +01:00
										 |  |  |         if (QPlainTextEdit *ed = qobject_cast<QPlainTextEdit *>(m_widget)) | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  |             ed->setExtraSelections(s); | 
					
						
							| 
									
										
										
										
											2009-01-23 16:37:32 +01:00
										 |  |  |         else if (QTextEdit *ed = qobject_cast<QTextEdit *>(m_widget)) | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  |             ed->setExtraSelections(s); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-15 17:29:30 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-27 14:08:17 +01:00
										 |  |  |     void changeStatusData(const QString &info) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         m_statusData = info; | 
					
						
							|  |  |  |         updateStatusBar(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void changeStatusMessage(const QString &info) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         m_statusMessage = info; | 
					
						
							|  |  |  |         updateStatusBar(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |     void changeExtraInformation(const QString &info) | 
					
						
							| 
									
										
										
										
											2009-01-15 17:29:30 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |         QMessageBox::information(m_widget, "Information", info); | 
					
						
							| 
									
										
										
										
											2009-01-15 17:29:30 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-27 14:08:17 +01:00
										 |  |  |      | 
					
						
							|  |  |  |     void updateStatusBar() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         int slack = 80 - m_statusMessage.size() - m_statusData.size(); | 
					
						
							|  |  |  |         QString msg = m_statusMessage + QString(slack, QChar(' ')) + m_statusData; | 
					
						
							|  |  |  |         m_mainWindow->statusBar()->showMessage(msg); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     QWidget *m_widget; | 
					
						
							| 
									
										
										
										
											2009-01-27 14:08:17 +01:00
										 |  |  |     QMainWindow *m_mainWindow; | 
					
						
							|  |  |  |     QString m_statusMessage; | 
					
						
							|  |  |  |     QString m_statusData; | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  | 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) { | 
					
						
							| 
									
										
										
										
											2009-01-26 10:31:49 +01:00
										 |  |  |         QPlainTextEdit *w = new QPlainTextEdit; | 
					
						
							|  |  |  |         w->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  |         title = "PlainTextEdit"; | 
					
						
							| 
									
										
										
										
											2009-01-26 10:31:49 +01:00
										 |  |  |         widget = w; | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  |     } else { | 
					
						
							| 
									
										
										
										
											2009-01-26 10:31:49 +01:00
										 |  |  |         QTextEdit *w = new QTextEdit; | 
					
						
							|  |  |  |         w->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  |         title = "TextEdit"; | 
					
						
							| 
									
										
										
										
											2009-01-26 10:31:49 +01:00
										 |  |  |         widget = w; | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |     widget->setObjectName("Editor"); | 
					
						
							| 
									
										
										
										
											2009-01-26 10:31:49 +01:00
										 |  |  |     //widget->resize(450, 350);
 | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  |     widget->setFocus(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-27 14:08:17 +01:00
										 |  |  |     QMainWindow mw; | 
					
						
							|  |  |  |     Proxy proxy(widget, &mw); | 
					
						
							| 
									
										
										
										
											2009-01-06 13:03:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |     FakeVimHandler handler(widget, 0); | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     mw.setWindowTitle("Fakevim (" + title + ")"); | 
					
						
							|  |  |  |     mw.setCentralWidget(widget); | 
					
						
							| 
									
										
										
										
											2009-01-26 10:31:49 +01:00
										 |  |  |     mw.resize(600, 650); | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  |     mw.move(0, 0); | 
					
						
							|  |  |  |     mw.show(); | 
					
						
							|  |  |  |      | 
					
						
							| 
									
										
										
										
											2009-01-06 13:03:59 +01:00
										 |  |  |     QFont font = widget->font(); | 
					
						
							|  |  |  |     //: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
 | 
					
						
							|  |  |  |     //font.setFamily("Misc");
 | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  |     font.setFamily("Monospace"); | 
					
						
							| 
									
										
										
										
											2009-01-06 13:03:59 +01:00
										 |  |  |     //font.setStretch(QFont::SemiCondensed);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     widget->setFont(font); | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  |     mw.statusBar()->setFont(font); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  |     QObject::connect(&handler, SIGNAL(commandBufferChanged(QString)), | 
					
						
							| 
									
										
										
										
											2009-01-27 14:08:17 +01:00
										 |  |  |         &proxy, SLOT(changeStatusMessage(QString))); | 
					
						
							| 
									
										
										
										
											2009-08-11 14:39:44 +02:00
										 |  |  |     //QObject::connect(&handler, SIGNAL(quitRequested(bool)),
 | 
					
						
							|  |  |  |     //    &app, SLOT(quit()));
 | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  |     QObject::connect(&handler, | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |         SIGNAL(selectionChanged(QList<QTextEdit::ExtraSelection>)), | 
					
						
							|  |  |  |         &proxy, SLOT(changeSelection(QList<QTextEdit::ExtraSelection>))); | 
					
						
							| 
									
										
										
										
											2009-01-27 14:08:17 +01:00
										 |  |  |     QObject::connect(&handler, SIGNAL(extraInformationChanged(QString)), | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |         &proxy, SLOT(changeExtraInformation(QString))); | 
					
						
							| 
									
										
										
										
											2009-01-27 14:08:17 +01:00
										 |  |  |     QObject::connect(&handler, SIGNAL(statusDataChanged(QString)), | 
					
						
							|  |  |  |         &proxy, SLOT(changeStatusData(QString))); | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-31 14:52:08 +02:00
										 |  |  |     theFakeVimSetting(ConfigUseFakeVim)->setValue(true); | 
					
						
							| 
									
										
										
										
											2009-04-01 15:11:26 +02:00
										 |  |  |     theFakeVimSetting(ConfigShiftWidth)->setValue(8); | 
					
						
							|  |  |  |     theFakeVimSetting(ConfigTabStop)->setValue(8); | 
					
						
							| 
									
										
										
										
											2009-07-10 14:56:12 +02:00
										 |  |  |     theFakeVimSetting(ConfigAutoIndent)->setValue(true); | 
					
						
							| 
									
										
										
										
											2009-04-01 15:11:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-31 14:52:08 +02:00
										 |  |  |     handler.installEventFilter(); | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |     handler.setupWidget(); | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  |     if (args.size() >= 1) | 
					
						
							| 
									
										
										
										
											2009-01-23 15:12:04 +01:00
										 |  |  |         handler.handleCommand("r " + args.at(0)); | 
					
						
							| 
									
										
										
										
											2009-01-06 12:20:45 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return app.exec(); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-01-13 13:47:00 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include "main.moc"
 |