summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/TEScreen.cpp17
-rw-r--r--noncore/apps/opie-console/TEScreen.h2
-rw-r--r--noncore/apps/opie-console/TEmulation.cpp4
-rw-r--r--noncore/apps/opie-console/TEmulation.h7
-rw-r--r--noncore/apps/opie-console/emulation_handler.cpp3
-rw-r--r--noncore/apps/opie-console/emulation_handler.h1
-rw-r--r--noncore/apps/opie-console/mainwindow.cpp35
-rw-r--r--noncore/apps/opie-console/mainwindow.h1
-rw-r--r--noncore/apps/opie-console/metafactory.cpp25
-rw-r--r--noncore/apps/opie-console/metafactory.h11
10 files changed, 64 insertions, 42 deletions
diff --git a/noncore/apps/opie-console/TEScreen.cpp b/noncore/apps/opie-console/TEScreen.cpp
index a3d115d..2675d31 100644
--- a/noncore/apps/opie-console/TEScreen.cpp
+++ b/noncore/apps/opie-console/TEScreen.cpp
@@ -984,9 +984,9 @@ void TEScreen::setSelExtentXY(const int x, const int y)
}
QString TEScreen::getSelText(const BOOL preserve_line_breaks)
{
- if (sel_begin == -1)
+ if (sel_begin == -1)
return QString::null; // Selection got clear while selecting.
int *m; // buffer to fill.
int s, d; // source index, dest. index.
@@ -1014,9 +1014,9 @@ QString TEScreen::getSelText(const BOOL preserve_line_breaks)
(eol >= (sel_BR % columns)))
{
eol = sel_BR % columns + 1;
}
-
+
while (hX < eol)
{
m[d++] = hist.getCell(hY, hX++).c;
s++;
@@ -1111,16 +1111,27 @@ QString TEScreen::getSelText(const BOOL preserve_line_breaks)
for (int i = 0; i < d; i++)
{
qc[i] = m[i];
}
-
+
QString res(qc, d);
delete m;
delete qc;
return res;
}
+QString TEScreen::getHistory() {
+ sel_begin = 0;
+ sel_BR = sel_begin;
+ sel_TL = sel_begin;
+ setSelExtentXY(columns-1,lines-1);
+ QString tmp=getSelText(true);
+ while (tmp.at(tmp.length()-2).unicode()==10 && tmp.at(tmp.length()-1).unicode()==10)
+ tmp.truncate(tmp.length()-1);
+
+ return tmp;
+}
/* above ... end of line processing for selection -- psilva
cases:
1) (eol+1)%columns == 0 --> the whole line is filled.
diff --git a/noncore/apps/opie-console/TEScreen.h b/noncore/apps/opie-console/TEScreen.h
index 473ce79..a840b44 100644
--- a/noncore/apps/opie-console/TEScreen.h
+++ b/noncore/apps/opie-console/TEScreen.h
@@ -161,8 +161,10 @@ public: // these are all `Screen' operations
QString getSelText(const BOOL preserve_line_breaks);
void checkSelection(int from, int to);
+ QString getHistory();
+
private: // helper
void clearImage(int loca, int loce, char c);
void moveImage(int dst, int loca, int loce);
diff --git a/noncore/apps/opie-console/TEmulation.cpp b/noncore/apps/opie-console/TEmulation.cpp
index 7a0c624..3b1b9e1 100644
--- a/noncore/apps/opie-console/TEmulation.cpp
+++ b/noncore/apps/opie-console/TEmulation.cpp
@@ -270,9 +270,11 @@ void TEmulation::clearSelection() {
if (!connected) return;
scr->clearSelection();
showBulk();
}
-
+void TEmulation::streamHistory(QTextStream* stream) {
+ *stream << scr->getHistory();
+}
// Refreshing -------------------------------------------------------------- --
#define BULK_TIMEOUT 20
diff --git a/noncore/apps/opie-console/TEmulation.h b/noncore/apps/opie-console/TEmulation.h
index ec15e7a..d7b3d6d 100644
--- a/noncore/apps/opie-console/TEmulation.h
+++ b/noncore/apps/opie-console/TEmulation.h
@@ -23,8 +23,10 @@
#include "TEScreen.h"
#include <qtimer.h>
#include <stdio.h>
#include <qtextcodec.h>
+#include <qtextstream.h>
+
#include "keytrans.h"
class TEmulation : public QObject
{ Q_OBJECT
@@ -36,15 +38,16 @@ public:
public:
virtual void setHistory(bool on);
virtual bool history();
+ virtual void streamHistory( QTextStream* );
public slots: // signals incoming from TEWidget
virtual void onImageSizeChange(int lines, int columns);
virtual void onHistoryCursorChange(int cursor);
virtual void onKeyPress(QKeyEvent*);
-
+
virtual void clearSelection();
virtual void onSelectionBegin(const int x, const int y);
virtual void onSelectionExtend(const int x, const int y);
virtual void setSelection(const BOOL preserve_line_breaks);
@@ -74,8 +77,10 @@ public:
void setKeytrans(int no);
void setKeytrans(const char * no);
+
+
protected:
TEWidget* gui;
TEScreen* scr; // referes to one `screen'
diff --git a/noncore/apps/opie-console/emulation_handler.cpp b/noncore/apps/opie-console/emulation_handler.cpp
index 7924568..235facb 100644
--- a/noncore/apps/opie-console/emulation_handler.cpp
+++ b/noncore/apps/opie-console/emulation_handler.cpp
@@ -30,8 +30,11 @@ EmulationHandler::EmulationHandler( const Profile& prof, QWidget* parent,const c
}
+TEmulation* EmulationHandler::emulation() {
+ return m_teEmu;
+}
EmulationHandler::~EmulationHandler() {
if (isRecording())
clearScript();
delete m_teEmu;
diff --git a/noncore/apps/opie-console/emulation_handler.h b/noncore/apps/opie-console/emulation_handler.h
index 7bc6f16..1338525 100644
--- a/noncore/apps/opie-console/emulation_handler.h
+++ b/noncore/apps/opie-console/emulation_handler.h
@@ -46,8 +46,9 @@ public:
~EmulationHandler();
void load( const Profile& );
QWidget* widget();
+ TEmulation *emulation();
void setColor( const QColor& fore, const QColor& back );
QPushButton* cornerButton();
/* Scripts */
diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp
index d221715..01468ca 100644
--- a/noncore/apps/opie-console/mainwindow.cpp
+++ b/noncore/apps/opie-console/mainwindow.cpp
@@ -8,16 +8,18 @@
#include <qmessagebox.h>
#include <qpushbutton.h>
#include <qwhatsthis.h>
#include <qfileinfo.h>
+#include <qtextstream.h>
#include <qpe/resource.h>
#include <qpe/qpeapplication.h>
#include <qpe/filemanager.h>
#include <qpe/mimetype.h>
#include <opie/ofiledialog.h>
+#include "TEmulation.h"
#include "keytrans.h"
#include "profileeditordialog.h"
#include "configdialog.h"
#include "default.h"
@@ -240,8 +242,14 @@ void MainWindow::initUI() {
connect( m_fullscreen, SIGNAL( activated() ),
this, SLOT( slotFullscreen() ) );
m_console->insertSeparator();
+
+ QAction *a = new QAction();
+ a->setText( tr("Save history") );
+ a->addTo( m_console );
+ connect(a, SIGNAL(activated() ),
+ this, SLOT(slotSaveHistory() ) );
/*
* terminate action
*/
m_terminate = new QAction();
@@ -301,9 +309,9 @@ void MainWindow::initUI() {
connect(m_kb, SIGNAL(keyPressed(FKey, ushort, ushort, bool)),
this, SLOT(slotKeyReceived(FKey, ushort, ushort, bool)));
- QAction *a = new QAction(tr("Copy"),
+ a = new QAction(tr("Copy"),
Resource::loadPixmap("copy"), QString::null,
0, this, 0 );
//a->addTo( m_icons );
connect( a, SIGNAL(activated() ),
@@ -767,4 +775,29 @@ void MainWindow::slotSaveSession() {
manager()->add( currentSession()->profile() );
manager()->save();
populateProfiles();
}
+void MainWindow::slotSaveHistory() {
+ QMap<QString, QStringList> map;
+ QStringList text;
+ text << "text/plain";
+ map.insert(tr("History"), text );
+ QString filename = OFileDialog::getSaveFileName(2, QPEApplication::documentDir(), QString::null, map);
+ if (filename.isEmpty() ) return;
+
+ QFileInfo info(filename);
+
+ DocLnk nf;
+ nf.setType("text/plain");
+ nf.setFile(filename);
+ nf.setName(info.fileName());
+
+
+ QFile file(filename);
+ file.open(IO_WriteOnly );
+ QTextStream str(&file );
+ if ( currentSession() )
+ currentSession()->emulationHandler()->emulation()->streamHistory(&str);
+
+ file.close();
+ nf.writeLink();
+}
diff --git a/noncore/apps/opie-console/mainwindow.h b/noncore/apps/opie-console/mainwindow.h
index 37219c5..0fac38b 100644
--- a/noncore/apps/opie-console/mainwindow.h
+++ b/noncore/apps/opie-console/mainwindow.h
@@ -69,8 +69,9 @@ private slots:
void slotFullscreen();
void slotWrap();
void slotSessionChanged( Session* );
void slotKeyReceived(FKey, ushort, ushort, bool);
+ void slotSaveHistory();
/* what could these both slot do? */
void slotCopy();
void slotPaste();
diff --git a/noncore/apps/opie-console/metafactory.cpp b/noncore/apps/opie-console/metafactory.cpp
index 0b43e17..24928e7 100644
--- a/noncore/apps/opie-console/metafactory.cpp
+++ b/noncore/apps/opie-console/metafactory.cpp
@@ -42,14 +42,8 @@ void MetaFactory::addReceiveLayer( const QCString& name,
receivelayer lay) {
m_strings.insert(str, name );
m_receiveFact.insert( str, lay );
}
-void MetaFactory::addEmulationLayer( const QCString& name,
- const QString& str,
- emulationLayer em) {
- m_strings.insert(str, name );
- m_emu.insert( str, em );
-}
QStringList MetaFactory::ioLayers()const {
QStringList list;
QMap<QString, iolayer>::ConstIterator it;
for (it = m_layerFact.begin(); it != m_layerFact.end(); ++it ) {
@@ -88,16 +82,8 @@ QStringList MetaFactory::receiveLayers()const {
list << it.key();
}
return list;
}
-QStringList MetaFactory::emulationLayers()const {
- QStringList list;
- QMap<QString, emulationLayer>::ConstIterator it;
- for ( it = m_emu.begin(); it != m_emu.end(); ++it ) {
- list << it.key();
- }
- return list;
-}
IOLayer* MetaFactory::newIOLayer( const QString& str,const Profile& prof ) {
IOLayer* lay = 0l;
@@ -147,19 +133,8 @@ ProfileDialogWidget *MetaFactory::newKeyboardPlugin( const QString& str, QWidget
wid = (*(it.data() ) )(str,parent);
}
return wid;
}
-EmulationLayer* MetaFactory::newEmulationLayer( const QString& str, WidgetLayer* wid) {
- EmulationLayer* lay = 0l;
-
- QMap<QString, emulationLayer>::Iterator it;
- it = m_emu.find( str );
- if ( it != m_emu.end() ) {
- lay = (*(it.data() ) )(wid);
- }
-
- return lay;
-}
FileTransferLayer* MetaFactory::newFileTransfer(const QString& str, IOLayer* lay ) {
FileTransferLayer* file = 0l;
QMap<QString, filelayer>::Iterator it;
it = m_fileFact.find( str );
diff --git a/noncore/apps/opie-console/metafactory.h b/noncore/apps/opie-console/metafactory.h
index f89136c..bcc40db 100644
--- a/noncore/apps/opie-console/metafactory.h
+++ b/noncore/apps/opie-console/metafactory.h
@@ -15,18 +15,16 @@
#include "file_layer.h"
#include "receive_layer.h"
#include "profile.h"
#include "profiledialogwidget.h"
-#include "emulation_layer.h"
class WidgetLayer;
class MetaFactory {
public:
typedef ProfileDialogWidget* (*configWidget)(const QString&, QWidget* parent);
typedef IOLayer* (*iolayer)(const Profile& );
typedef FileTransferLayer* (*filelayer)(IOLayer*);
typedef ReceiveLayer* (*receivelayer)(IOLayer*);
- typedef EmulationLayer* (*emulationLayer)(WidgetLayer* );
MetaFactory();
~MetaFactory();
@@ -60,14 +58,8 @@ public:
void addReceiveLayer( const QCString& name,
const QString&,
receivelayer);
- /**
- * adds a Factory for Emulation to the Layer..
- */
- void addEmulationLayer ( const QCString& name,
- const QString& uiString,
- emulationLayer );
/* translated UI Strings */
QStringList ioLayers()const;
QStringList connectionWidgets()const;
@@ -77,18 +69,16 @@ public:
*/
QStringList terminalWidgets()const;
QStringList fileTransferLayers()const;
QStringList receiveLayers()const;
- QStringList emulationLayers()const;
/**
* the generation...
*/
IOLayer* newIOLayer( const QString&,const Profile& );
ProfileDialogWidget *newConnectionPlugin ( const QString&, QWidget* );
ProfileDialogWidget* newTerminalPlugin( const QString&, QWidget* );
ProfileDialogWidget* newKeyboardPlugin( const QString&, QWidget* );
- EmulationLayer* newEmulationLayer(const QString&, WidgetLayer* );
FileTransferLayer* newFileTransfer(const QString&, IOLayer* );
ReceiveLayer* newReceive(const QString&, IOLayer* );
/*
@@ -112,9 +102,8 @@ private:
QMap<QString, configWidget> m_keyFact;
QMap<QString, iolayer> m_layerFact;
QMap<QString, filelayer> m_fileFact;
QMap<QString, receivelayer> m_receiveFact;
- QMap<QString, emulationLayer> m_emu;
};
#endif