/* This file is part of Konsole, an X terminal. Copyright (C) 1997,1998 by Lars Doelle This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef EMULATION_H #define EMULATION_H #include "TEWidget.h" #include "TEScreen.h" #include #include #include #include #include enum { NOTIFYNORMAL=0, NOTIFYBELL=1, NOTIFYACTIVITY=2, NOTIFYSILENCE=3 }; class TEmulation : public QObject { Q_OBJECT public: TEmulation(TEWidget* gui); virtual void changeGUI(TEWidget* newgui); ~TEmulation(); public: TQSize imageSize(); virtual void setHistory(const HistoryType&); const TQTextCodec *codec() { return m_codec; } void setCodec(const TQTextCodec *); virtual const HistoryType& history(); virtual void streamHistory(TQTextStream*); virtual void findTextBegin(); virtual bool findTextNext( const TQString &str, bool forward, bool caseSensitive, bool regExp ); public slots: // signals incoming from TEWidget virtual void onImageSizeChange(int lines, int columns); virtual void onHistoryCursorChange(int cursor); virtual void onKeyPress(TQKeyEvent*); virtual void clearSelection(); virtual void copySelection(); virtual TQString getSelection(); virtual void onSelectionBegin(const int x, const int y, const bool columnmode); virtual void onSelectionExtend(const int x, const int y); virtual void setSelection(const bool preserve_line_breaks); virtual void isBusySelecting(bool busy); virtual void testIsSelected(const int x, const int y, bool &selected); public slots: // signals incoming from data source void onRcvBlock(const char* txt,int len); signals: void lockPty(bool); void useUtf8(bool); void sndBlock(const char* txt,int len); void ImageSizeChanged(int lines, int columns); void changeColumns(int columns); void changeColLin(int columns, int lines); void changeTitle(int arg, const char* str); void notifySessionState(int state); void zmodemDetected(); void changeTabTextColor(int color); public: virtual void onRcvChar(int); virtual void setMode (int) = 0; virtual void resetMode(int) = 0; virtual void sendString(const char*) = 0; virtual void setConnect(bool r); bool isConnected() { return connected; } bool utf8() { return m_codec->mibEnum() == 106; } virtual char getErase(); virtual void setListenToKeyPress(bool l); void setColumns(int columns); void setKeymap(int no); void setKeymap(const TQString &id); int keymapNo(); TQString keymap(); virtual void clearEntireScreen() =0; virtual void reset() =0; protected: TQGuardedPtr gui; TEScreen* scr; // referes to one `screen' TEScreen* screen[2]; // 0 = primary, 1 = alternate void setScreen(int n); // set `scr' to `screen[n]' bool connected; // communicate with widget bool listenToKeyPress; // listen to input void setCodec(int c); // codec number, 0 = locale, 1=utf8 const TQTextCodec* m_codec; TQTextDecoder* decoder; KeyTrans* keytrans; // refreshing related material. // this is localized in the class. private slots: // triggered by timer void showBulk(); private: void connectGUI(); void bulkStart(); private: TQTimer bulk_timer1; TQTimer bulk_timer2; int m_findPos; }; #endif // ifndef EMULATION_H