1 /************************************************************************ 2 * 3 * Copyright 2011 Jakob Leben (jakob.leben@gmail.com) 4 * 5 * This file is part of SuperCollider Qt GUI. 6 * 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 2 of the License, or 10 * (at your option) any later version. 11 * 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. 16 * 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/>. 19 * 20 ************************************************************************/ 21 22 #pragma once 23 24 #include "SC_TerminalClient.h" 25 #include "Common.h" 26 27 #include <QObject> 28 #include <QBasicTimer> 29 #include <QEvent> 30 31 namespace QtCollider { 32 33 struct SCRequestEvent : public QEvent { 34 SCRequestEvent(QtCollider::EventType type, const QVariant& d = QVariant()): QEvent((QEvent::Type)type), data(d) {} 35 36 QVariant data; 37 }; 38 39 class LangClient : public QObject, public SC_TerminalClient { 40 Q_OBJECT 41 public: 42 LangClient(const char* name); ~LangClient()43 virtual ~LangClient() {} 44 virtual void sendSignal(Signal); 45 46 protected: 47 virtual void commandLoop(); 48 virtual void daemonLoop(); 49 50 virtual void onQuit(int exitCode); 51 virtual void onLibraryShutdown(); 52 53 virtual void customEvent(QEvent*); 54 virtual void timerEvent(QTimerEvent*); 55 56 private: 57 void tick(); 58 QBasicTimer appClockTimer; 59 }; 60 61 } // namespace QtCollider 62