summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-console/emulation_layer.cpp
Unidiff
Diffstat (limited to 'noncore/apps/opie-console/emulation_layer.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/emulation_layer.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/noncore/apps/opie-console/emulation_layer.cpp b/noncore/apps/opie-console/emulation_layer.cpp
index 5baf05c..265c11f 100644
--- a/noncore/apps/opie-console/emulation_layer.cpp
+++ b/noncore/apps/opie-console/emulation_layer.cpp
@@ -104,12 +104,13 @@ EmulationLayer::EmulationLayer( WidgetLayer* gui )
104 screen[1] = new Screen(gui->lines(),gui->columns()); 104 screen[1] = new Screen(gui->lines(),gui->columns());
105 scr = screen[0]; 105 scr = screen[0];
106 106
107 bulk_nlcnt = 0; // reset bulk newline counter 107 bulk_nlcnt = 0; // reset bulk newline counter
108 bulk_incnt = 0; // reset bulk counter 108 bulk_incnt = 0; // reset bulk counter
109 connected = FALSE; 109 connected = FALSE;
110 m_script = 0;
110 111
111 QObject::connect(&bulk_timer, SIGNAL( timeout() ), this, SLOT( showBulk() ) ); 112 QObject::connect(&bulk_timer, SIGNAL( timeout() ), this, SLOT( showBulk() ) );
112 QObject::connect(gui,SIGNAL( imageSizeChanged( int, int ) ), 113 QObject::connect(gui,SIGNAL( imageSizeChanged( int, int ) ),
113 this,SLOT( onImageSizeChange( int, int ) ) ); 114 this,SLOT( onImageSizeChange( int, int ) ) );
114 QObject::connect(gui,SIGNAL( changedHistoryCursor( int ) ), 115 QObject::connect(gui,SIGNAL( changedHistoryCursor( int ) ),
115 this,SLOT( historyCursorChange( int ) ) ); 116 this,SLOT( historyCursorChange( int ) ) );
@@ -129,12 +130,14 @@ EmulationLayer::EmulationLayer( WidgetLayer* gui )
129*/ 130*/
130 131
131EmulationLayer::~EmulationLayer() 132EmulationLayer::~EmulationLayer()
132{ 133{
133 delete screen[0]; 134 delete screen[0];
134 delete screen[1]; 135 delete screen[1];
136 if (isRecording())
137 clearScript();
135 bulk_timer.stop(); 138 bulk_timer.stop();
136} 139}
137 140
138/*! change between primary and alternate screen 141/*! change between primary and alternate screen
139*/ 142*/
140 143
@@ -225,12 +228,16 @@ void EmulationLayer::onKeyPress( QKeyEvent* ev )
225 } 228 }
226 else if (ev->ascii()>0) 229 else if (ev->ascii()>0)
227 { 230 {
228 QByteArray c = QByteArray( 1 ); 231 QByteArray c = QByteArray( 1 );
229 c.at( 0 ) = ev->ascii(); 232 c.at( 0 ) = ev->ascii();
230 // ibot: qbytearray is emited not char* 233 // ibot: qbytearray is emited not char*
234
235 /* Are we currently recording a script? If so, store the typed character */
236 if (isRecording())
237 m_script->appendString(ev->text());
231 emit sndBlock( (QByteArray) c ); 238 emit sndBlock( (QByteArray) c );
232 } 239 }
233} 240}
234 241
235// Unblocking, Byte to Unicode translation --------------------------------- -- 242// Unblocking, Byte to Unicode translation --------------------------------- --
236 243
@@ -251,12 +258,41 @@ void EmulationLayer::onRcvBlock(const QByteArray &s )
251 onRcvChar(result[j].unicode()); 258 onRcvChar(result[j].unicode());
252 if (s[i] == '\n') bulkNewline(); 259 if (s[i] == '\n') bulkNewline();
253 } 260 }
254 bulkEnd(); 261 bulkEnd();
255} 262}
256 263
264// Scripts ----------------------------------------------------------------- --
265
266
267Script *EmulationLayer::script() {
268 return m_script;
269}
270
271bool EmulationLayer::isRecording() {
272 return (m_script != 0);
273}
274
275void EmulationLayer::startRecording() {
276 if (!isRecording())
277 m_script = new Script();
278}
279
280void EmulationLayer::clearScript() {
281 if (isRecording()) {
282
283 }
284}
285
286void EmulationLayer::runScript(const Script *script) {
287 QByteArray a = QByteArray();
288 QString str = script->script();
289 a.setRawData(str.ascii(), str.length());
290 emit sndBlock(a);
291}
292
257// Selection --------------------------------------------------------------- -- 293// Selection --------------------------------------------------------------- --
258 294
259void EmulationLayer::onSelectionBegin(const int x, const int y) { 295void EmulationLayer::onSelectionBegin(const int x, const int y) {
260 if (!connected) return; 296 if (!connected) return;
261 scr->setSelBeginXY(x,y); 297 scr->setSelBeginXY(x,y);
262 showBulk(); 298 showBulk();