summaryrefslogtreecommitdiffstats
path: root/kdbg/ttywnd.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdbg/ttywnd.h')
-rw-r--r--kdbg/ttywnd.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/kdbg/ttywnd.h b/kdbg/ttywnd.h
new file mode 100644
index 0000000..3995ffc
--- /dev/null
+++ b/kdbg/ttywnd.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright Johannes Sixt
+ * This file is licensed under the GNU General Public License Version 2.
+ * See the file COPYING in the toplevel directory of the source directory.
+ */
+
+#ifndef TTYWND_H
+#define TTYWND_H
+
+#include <qtextedit.h>
+
+class QSocketNotifier;
+class QPopupMenu;
+
+/**
+ * This class is cortesy Judin Max <novaprint@mtu-net.ru>.
+ *
+ * The master side of the TTY is the emulator.
+ *
+ * The slave side is where a client process can write output and can read
+ * input. For this purpose, it must open the file (terminal device) whose
+ * name is returned by @ref slaveTTY for both reading and writing. To
+ * establish the stdin, stdout, and stderr channels the file descriptor
+ * obtained by this must be dup'd to file descriptors 0, 1, and 2, resp.
+ */
+class STTY : public QObject
+{
+ Q_OBJECT
+public:
+ STTY();
+ ~STTY();
+
+ QString slaveTTY(){ return m_slavetty; };
+
+protected slots:
+ void outReceived(int);
+
+signals:
+ void output(char* buffer, int charlen);
+
+protected:
+ int m_masterfd;
+ int m_slavefd;
+ QSocketNotifier* m_outNotifier;
+ QString m_slavetty;
+ bool findTTY();
+};
+
+class TTYWindow : public QTextEdit
+{
+ Q_OBJECT
+public:
+ TTYWindow(QWidget* parent, const char* name);
+ ~TTYWindow();
+
+ QString activate();
+ void deactivate();
+
+protected:
+ STTY* m_tty;
+ virtual QPopupMenu* createPopupMenu(const QPoint& pos);
+ int m_hPos; //!< tracks horizontal cursor position
+
+protected slots:
+ void slotAppend(char* buffer, int count);
+ void slotClear();
+};
+
+#endif // TTYWND_H