Mercurial > hg > octave-nkf
comparison libqterminal/unix/QUnixTerminalImpl.cpp @ 15658:eaa7da75d202
Added QTerminalInteface class.
author | Jacob Dawid <jacob.dawid@googlemail.com> |
---|---|
date | Tue, 31 Jan 2012 11:14:38 +0100 |
parents | c05926c0657d |
children | 739f0f73e772 |
comparison
equal
deleted
inserted
replaced
15657:17ef804ef614 | 15658:eaa7da75d202 |
---|---|
22 #include "unix/QUnixTerminalImpl.h" | 22 #include "unix/QUnixTerminalImpl.h" |
23 #include "unix/kpty.h" | 23 #include "unix/kpty.h" |
24 | 24 |
25 #include <termios.h> | 25 #include <termios.h> |
26 | 26 |
27 QTerminal::QTerminal(QWidget *parent) | 27 QUnixTerminalImpl::QUnixTerminalImpl(QWidget *parent) |
28 : QWidget(parent) { | 28 : QTerminalInterface(parent) { |
29 setMinimumSize(600, 400); | 29 setMinimumSize(600, 400); |
30 initialize(); | 30 initialize(); |
31 } | 31 } |
32 | 32 |
33 void QTerminal::initialize() | 33 void QUnixTerminalImpl::initialize() |
34 { | 34 { |
35 m_kpty = new KPty(); | 35 m_kpty = new KPty(); |
36 m_kpty->open(); | 36 m_kpty->open(); |
37 | 37 |
38 m_sessionModel = new TerminalModel(m_kpty); | 38 m_sessionModel = new TerminalModel(m_kpty); |
58 | 58 |
59 m_sessionModel->run(); | 59 m_sessionModel->run(); |
60 m_sessionModel->addView(m_sessionView); | 60 m_sessionModel->addView(m_sessionView); |
61 m_sessionView->setScrollBarPosition(TerminalView::ScrollBarRight); | 61 m_sessionView->setScrollBarPosition(TerminalView::ScrollBarRight); |
62 | 62 |
63 connect(m_sessionModel, SIGNAL(finished()), this, SLOT(sessionFinished())); | |
64 setFocusProxy(m_sessionView); | 63 setFocusProxy(m_sessionView); |
65 | 64 |
66 setFocus(Qt::OtherFocusReason); | 65 setFocus(Qt::OtherFocusReason); |
67 m_sessionView->resize(this->size()); | 66 m_sessionView->resize(this->size()); |
68 | 67 |
69 connectToPty(); | 68 connectToPty(); |
70 } | 69 } |
71 | 70 |
72 void QTerminal::connectToPty() | 71 void QUnixTerminalImpl::connectToPty() |
73 { | 72 { |
74 int fds = m_kpty->slaveFd(); | 73 int fds = m_kpty->slaveFd(); |
75 | 74 |
76 dup2 (fds, STDIN_FILENO); | 75 dup2 (fds, STDIN_FILENO); |
77 dup2 (fds, STDOUT_FILENO); | 76 dup2 (fds, STDOUT_FILENO); |
88 if(!isatty(STDERR_FILENO)) { | 87 if(!isatty(STDERR_FILENO)) { |
89 qDebug("Error: stderr is not a tty."); | 88 qDebug("Error: stderr is not a tty."); |
90 } | 89 } |
91 } | 90 } |
92 | 91 |
93 QTerminal::~QTerminal() | 92 QUnixTerminalImpl::~QUnixTerminalImpl() |
94 { | 93 { |
95 emit destroyed(); | 94 emit destroyed(); |
96 } | 95 } |
97 | 96 |
98 void QTerminal::setTerminalFont(QFont &font) | 97 void QUnixTerminalImpl::setTerminalFont(QFont &font) |
99 { | 98 { |
100 if(!m_sessionView) | 99 if(!m_sessionView) |
101 return; | 100 return; |
102 m_sessionView->setVTFont(font); | 101 m_sessionView->setVTFont(font); |
103 } | 102 } |
104 | 103 |
105 void QTerminal::setTextCodec(QTextCodec *codec) | 104 void QUnixTerminalImpl::setSize(int h, int v) |
106 { | |
107 if(!m_sessionModel) | |
108 return; | |
109 m_sessionModel->setCodec(codec); | |
110 } | |
111 | |
112 void QTerminal::setSize(int h, int v) | |
113 { | 105 { |
114 if(!m_sessionView) | 106 if(!m_sessionView) |
115 return; | 107 return; |
116 m_sessionView->setSize(h, v); | 108 m_sessionView->setSize(h, v); |
117 } | 109 } |
118 | 110 |
119 void QTerminal::setHistorySize(int lines) | 111 void QUnixTerminalImpl::sendText(QString text) |
120 { | |
121 if(lines < 0) | |
122 m_sessionModel->setHistoryType(HistoryTypeFile()); | |
123 else | |
124 m_sessionModel->setHistoryType(HistoryTypeBuffer(lines)); | |
125 } | |
126 | |
127 void QTerminal::setReadOnly(bool readonly) | |
128 { | |
129 m_sessionView->setReadOnly(readonly); | |
130 } | |
131 | |
132 void QTerminal::sendText(QString text) | |
133 { | 112 { |
134 m_sessionModel->sendText(text); | 113 m_sessionModel->sendText(text); |
135 } | 114 } |
136 | 115 |
137 void QTerminal::focusInEvent(QFocusEvent *focusEvent) | 116 void QUnixTerminalImpl::focusInEvent(QFocusEvent *focusEvent) |
138 { | 117 { |
139 Q_UNUSED(focusEvent); | 118 Q_UNUSED(focusEvent); |
140 m_sessionView->updateImage(); | 119 m_sessionView->updateImage(); |
141 m_sessionView->repaint(); | 120 m_sessionView->repaint(); |
142 m_sessionView->update(); | 121 m_sessionView->update(); |
143 } | 122 } |
144 | 123 |
145 void QTerminal::showEvent(QShowEvent *) | 124 void QUnixTerminalImpl::showEvent(QShowEvent *) |
146 { | 125 { |
147 m_sessionView->updateImage(); | 126 m_sessionView->updateImage(); |
148 m_sessionView->repaint(); | 127 m_sessionView->repaint(); |
149 m_sessionView->update(); | 128 m_sessionView->update(); |
150 } | 129 } |
151 | 130 |
152 void QTerminal::resizeEvent(QResizeEvent*) | 131 void QUnixTerminalImpl::resizeEvent(QResizeEvent*) |
153 { | 132 { |
154 m_sessionView->resize(this->size()); | 133 m_sessionView->resize(this->size()); |
155 m_sessionView->updateImage(); | 134 m_sessionView->updateImage(); |
156 m_sessionView->repaint(); | 135 m_sessionView->repaint(); |
157 m_sessionView->update(); | 136 m_sessionView->update(); |
158 } | 137 } |
159 | 138 |
160 void QTerminal::sessionFinished() | 139 void QUnixTerminalImpl::copyClipboard() |
161 { | |
162 emit finished(); | |
163 } | |
164 | |
165 void QTerminal::copyClipboard() | |
166 { | 140 { |
167 m_sessionView->copyClipboard(); | 141 m_sessionView->copyClipboard(); |
168 } | 142 } |
169 | 143 |
170 void QTerminal::pasteClipboard() | 144 void QUnixTerminalImpl::pasteClipboard() |
171 { | 145 { |
172 m_sessionView->pasteClipboard(); | 146 m_sessionView->pasteClipboard(); |
173 } | 147 } |
174 | 148 |