summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/opie-console/emulation_widget.cpp3
-rw-r--r--noncore/apps/opie-console/widget_layer.h2
2 files changed, 5 insertions, 0 deletions
diff --git a/noncore/apps/opie-console/emulation_widget.cpp b/noncore/apps/opie-console/emulation_widget.cpp
index 5c3b2d2..318d7bb 100644
--- a/noncore/apps/opie-console/emulation_widget.cpp
+++ b/noncore/apps/opie-console/emulation_widget.cpp
@@ -1,124 +1,127 @@
// opie-console includes
#include "emulation_widget.h"
#include "common.h"
#include "widget_layer.h"
#include "profile.h"
// qt includes
#include <qwidget.h>
#include <qarray.h>
#include <qstring.h>
#include <qpainter.h>
#include <qrect.h>
#include <qscrollbar.h>
#define rimX 0 // left/right rim width
#define rimY 0 // top/bottom rim high
#define SCRWIDTH 16 // width of scrollbar
EmulationWidget::EmulationWidget( const Profile& config, QWidget *parent, const char* name ) : WidgetLayer( config, parent, name )
{
// initialize font attributes
QFontMetrics fm( font() );
f_height = fm.height();
f_width = fm.maxWidth();
f_ascent = fm.ascent();
+ // give reasonable defaults to m_columns, m_lines
+ calcGeometry();
+
// initialize scrollbar related vars
m_scrollbar = new QScrollBar( this );
m_scrollbar->setCursor( arrowCursor );
// load config
reloadConfig( config );
m_resizing = false;
}
void EmulationWidget::reloadConfig( const Profile& config )
{
// nothing yet
}
EmulationWidget::~EmulationWidget()
{
//clean up
}
static QChar vt100extended(QChar c)
{
switch (c.unicode())
{
case 0x25c6 : return 1;
case 0x2592 : return 2;
case 0x2409 : return 3;
case 0x240c : return 4;
case 0x240d : return 5;
case 0x240a : return 6;
case 0x00b0 : return 7;
case 0x00b1 : return 8;
case 0x2424 : return 9;
case 0x240b : return 10;
case 0x2518 : return 11;
case 0x2510 : return 12;
case 0x250c : return 13;
case 0x2514 : return 14;
case 0x253c : return 15;
case 0xf800 : return 16;
case 0xf801 : return 17;
case 0x2500 : return 18;
case 0xf803 : return 19;
case 0xf804 : return 20;
case 0x251c : return 21;
case 0x2524 : return 22;
case 0x2534 : return 23;
case 0x252c : return 24;
case 0x2502 : return 25;
case 0x2264 : return 26;
case 0x2265 : return 27;
case 0x03c0 : return 28;
case 0x2260 : return 29;
case 0x00a3 : return 30;
case 0x00b7 : return 31;
}
return c;
}
void EmulationWidget::setImage( QArray<Character> const newimg, int lines, int columns )
{
const QPixmap* pm = backgroundPixmap();
QPainter paint;
// dont allow updates, while drawing
setUpdatesEnabled( false );
paint.begin( this );
QPoint tL = contentsRect().topLeft();
int tLx = tL.x();
int tLy = tL.y();
// hasBlinker = false;
int cf = -1;
int cb = -1;
int cr = -1;
int lins = QMIN( m_lines, QMAX( 0, lines ) );
int cols = QMIN( m_columns, QMAX( 0, columns ) );
QArray<QChar> disstrU = QArray<QChar>( cols );
for ( int y = 0; y < lins; ++y )
{ int len;
const Character* lcl = &m_image[y * m_columns];
const Character* ext = &newimg[y * columns];
if ( ! m_resizing )
for ( int x = 0; x < cols; ++x )
{
// disable, till widget works, WITHOUT blinking
//hasBlinker |= ( ext[x].r & RE_BLINK );
if ( ext[x] != lcl[x] )
diff --git a/noncore/apps/opie-console/widget_layer.h b/noncore/apps/opie-console/widget_layer.h
index bc8fe36..067f3da 100644
--- a/noncore/apps/opie-console/widget_layer.h
+++ b/noncore/apps/opie-console/widget_layer.h
@@ -1,124 +1,126 @@
/* -------------------------------------------------------------------------- */
/* */
/* [widget_layer.h] Widget Layer */
/* */
/* -------------------------------------------------------------------------- */
// proposal of a widget Layer in opie-console
//
// fellow devels:
// just mail me (ibotty@web.de), what you additionally need from the main widget
// (or say in chat)
#ifndef WIDGET_LAYER_H
#define WIDGET_LAYER_H
// qt includes
#include <qapplication.h>
#include <qframe.h>
#include <qarray.h>
#include <qtimer.h>
#include <qkeycode.h>
#include <qclipboard.h>
// opie-console includes
#include "session.h"
#include "common.h"
#include "profile.h"
+
+
/*
* given a pseudo location ( column, line ),
* returns the actual index, in the QArray<Character>
*/
#define loc(X,Y) ((Y)*m_columns+(X))
extern unsigned short vt100_graphics[32];
class WidgetLayer : public QFrame
{ Q_OBJECT
public:
/**
* constructor
* @param const Profile &config, the configuration for this widget
* @param QWidget *parent, the parent widget
* @param const char *name, the name of the widget, defaults to ""
*/
WidgetLayer( const Profile& config, QWidget *parent=0, const char *name=0 );
/**
* destructor
*/
virtual ~WidgetLayer();
public:
/**
* sets the image
* @param QArray<Character> const newimg, the new image
* @param int lines, lines count of newimg
* @param int columns, columns count of newimg
*/
virtual void setImage( QArray<Character> const newimg, int lines, int colums ) = 0;
/**
* annoy the user
*/
void bell();
/**
* @return int m_lines, the lines count
*/
int lines() { return m_lines; }
/**
* @return int m_columns, the columns count
*/
int columns() { return m_columns; }
/**
* insert current selection (currently this is only the clipboard)
*/
void insertSelection();
/**
* insert text
* @param QString text, the text to be inserted
*/
void insertText( QString text );
/**
* set selection (clipboard) to text
* @param const QString &text, the text to be selected
*/
void setSelection( const QString &text );
/**
* paste content of clipboard
*/
void pasteClipboard();
/**
* reload configuration
* @param const Profile& config, the config to be used (may be the same as in constructor)
*/
virtual void reloadConfig( const Profile& config ) = 0;
/**
* sets the scrollbar (if implemented by successor of this class)
*/
virtual void setScroll( int cursor, int slines ) = 0;
/**
* scrolls (if implemented, by successor of this class)
* @param int value, how much the widget should scroll up (positive value) or down (negative value)
*/
virtual void scroll( int value ) = 0;
signals:
/**