"Post Window" -> "Post window" prevents it being seen as two separate
[supercollider.git] / QtCollider / QcApplication.h
blob746c8f4eb0ddbafb41ea5c95ecaacb2c4d3cd384
1 /************************************************************************
3 * Copyright 2010 Jakob Leben (jakob.leben@gmail.com)
5 * This file is part of SuperCollider Qt GUI.
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 ************************************************************************/
22 #ifndef QC_APPLICATION_H
23 #define QC_APPLICATION_H
25 #include "Common.h"
27 #include <QApplication>
28 #include <QEventLoop>
29 #include <QMutex>
31 namespace QtCollider {
33 class EventProcessor : public QObject {
34 public:
35 void work() {
36 QApplication::postEvent( this, new QEvent(QEvent::User) );
37 _loop.exec();
39 void customEvent( QEvent *e ) {
40 _loop.exit();
42 private:
43 QEventLoop _loop;
46 } // namespace QtCollider
48 class QcApplication : public QApplication
50 Q_OBJECT
52 public:
53 QcApplication( int & argc, char ** argv );
54 virtual ~QcApplication();
55 static bool compareThread(); // NOTE: language must be locked
56 static void processEvents() {
57 if( _instance ) _instance->_eventProc.work();
60 public Q_SLOTS:
61 void interpret( const QString & code, bool printResult = true );
63 private:
64 bool event( QEvent * );
66 QtCollider::EventProcessor _eventProc;
68 static QMutex _mutex;
69 static QcApplication *_instance;
72 #endif // QC_APPLICATION_H