summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/TEWidget.cpp52
-rw-r--r--noncore/apps/opie-console/TEWidget.h6
-rw-r--r--noncore/apps/opie-console/emulation_handler.cpp3
-rw-r--r--noncore/apps/opie-console/emulation_widget.cpp3
-rw-r--r--noncore/apps/opie-console/widget.cpp2
5 files changed, 57 insertions, 9 deletions
diff --git a/noncore/apps/opie-console/TEWidget.cpp b/noncore/apps/opie-console/TEWidget.cpp
index e4415dc..bf9a313 100644
--- a/noncore/apps/opie-console/TEWidget.cpp
+++ b/noncore/apps/opie-console/TEWidget.cpp
@@ -89,10 +89,8 @@
//FIXME: the rim should normally be 1, 0 only when running in full screen mode.
#define rimX 0 // left/right rim width
#define rimY 0 // top/bottom rim high
-#define SCRWIDTH 16 // width of the scrollbar
-
#define yMouseScroll 1
// scroll increment used when dragging selection at top/bottom of window.
/* Button XPM */
@@ -318,8 +316,12 @@ TEWidget::TEWidget(QWidget *parent, const char *name) : QFrame(parent,name)
scrollbar = new QScrollBar( this );
scrollbar->setCursor( arrowCursor );
connect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(scrollChanged(int)));
+ hscrollbar = new QScrollBar( Qt::Horizontal, this );
+ hscrollbar->setCursor( arrowCursor );
+ connect(hscrollbar, SIGNAL(valueChanged(int)), this, SLOT(hscrollChanged(int)));
+
m_cornerButton = new QPushButton( this );
m_cornerButton->setPixmap( QPixmap( (const char**)menu_xpm ) );
m_cornerButton->setMaximumSize( 14, 14 );
m_cornerButton->hide();
@@ -351,8 +353,9 @@ TEWidget::TEWidget(QWidget *parent, const char *name) : QFrame(parent,name)
font_w = 1;
font_h = 1;
font_a = 1;
word_selection_mode = FALSE;
+ vcolumns = 0;
setMouseMarks(TRUE);
setVTFont( QFont("fixed") );
setColorTable(base_color_table); // init color table
@@ -629,8 +632,15 @@ void TEWidget::scrollChanged(int)
{
emit changedHistoryCursor(scrollbar->value()); //expose
}
+void TEWidget::hscrollChanged(int loc)
+{
+ hposition = loc;
+ propagateSize();
+ update();
+}
+
void TEWidget::setScroll(int cursor, int slines)
{
disconnect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(scrollChanged(int)));
scrollbar->setRange(0,slines);
@@ -1138,36 +1148,65 @@ void TEWidget::clearImage()
void TEWidget::calcGeometry()
{
//FIXME: set rimX == rimY == 0 when running in full screen mode.
+ int showhscrollbar = 1;
+ int hwidth = 0;
+
+ if(vcolumns == 0) showhscrollbar = 0;
+ if(showhscrollbar == 1) hwidth = QApplication::style().scrollBarExtent().width();
+
scrollbar->resize(QApplication::style().scrollBarExtent().width(),
- contentsRect().height());
+ contentsRect().height() - hwidth);
+
+ if(showhscrollbar == 1)
+ {
+ hscrollbar->resize(contentsRect().width() - hwidth, hwidth);
+ hscrollbar->setRange(0, 40);
+
+ QPoint p = contentsRect().bottomLeft();
+ hscrollbar->move(QPoint(p.x(), p.y() - hwidth));
+ hscrollbar->show();
+ }
+ else hscrollbar->hide();
+
switch(scrollLoc)
{
case SCRNONE :
columns = ( contentsRect().width() - 2 * rimX ) / font_w;
+ if(vcolumns) columns = vcolumns;
blX = (contentsRect().width() - (columns*font_w) ) / 2;
brX = blX;
scrollbar->hide();
break;
case SCRLEFT :
columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w;
+ if(vcolumns) columns = vcolumns;
brX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2;
blX = brX + scrollbar->width();
scrollbar->move(contentsRect().topLeft());
scrollbar->show();
break;
case SCRRIGHT:
columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w;
+ if(vcolumns) columns = vcolumns;
blX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2;
+ if(showhscrollbar)
+ blX = -hposition * font_w;
brX = blX;
scrollbar->move(contentsRect().topRight() - QPoint(scrollbar->width()-1,0));
scrollbar->show();
break;
}
//FIXME: support 'rounding' styles
lines = ( contentsRect().height() - 2 * rimY ) / font_h;
bY = (contentsRect().height() - (lines *font_h)) / 2;
+
+ if(showhscrollbar == 1)
+ {
+ //bY = bY - 10;
+ lines = lines - 1;
+ }
}
void TEWidget::makeImage()
//FIXME: rename 'calcGeometry?
@@ -1300,4 +1339,11 @@ void TEWidget::drop_menu_activated(int)
QPushButton* TEWidget::cornerButton() {
return m_cornerButton;
}
+
+void TEWidget::setWrapAt(int columns)
+{
+ vcolumns = columns;
+}
+
+
diff --git a/noncore/apps/opie-console/TEWidget.h b/noncore/apps/opie-console/TEWidget.h
index f03a16e..6ff731b 100644
--- a/noncore/apps/opie-console/TEWidget.h
+++ b/noncore/apps/opie-console/TEWidget.h
@@ -68,8 +68,10 @@ public:
void doScroll(int lines);
void emitSelection();
+ void setWrapAt(int columns);
+
public:
void setImage(const ca* const newimg, int lines, int columns);
@@ -153,8 +155,9 @@ public slots:
protected slots:
void scrollChanged(int value);
+ void hscrollChanged(int value);
void blinkEvent();
private:
@@ -187,10 +190,11 @@ private:
BOOL preserve_line_breaks;
QPushButton *m_cornerButton;
QClipboard* cb;
- QScrollBar* scrollbar;
+ QScrollBar* scrollbar, *hscrollbar;
int scrollLoc;
+ int hposition, vcolumns;
//#define SCRNONE 0
//#define SCRLEFT 1
//#define SCRRIGHT 2
diff --git a/noncore/apps/opie-console/emulation_handler.cpp b/noncore/apps/opie-console/emulation_handler.cpp
index e80168d..e0f63cd 100644
--- a/noncore/apps/opie-console/emulation_handler.cpp
+++ b/noncore/apps/opie-console/emulation_handler.cpp
@@ -11,8 +11,11 @@
EmulationHandler::EmulationHandler( const Profile& prof, QWidget* parent,const char* name )
: QObject(0, name )
{
m_teWid = new TEWidget( parent, "TerminalMain");
+ // use setWrapAt(0) for classic behaviour (wrap at screen width, no scrollbar)
+ // use setWrapAt(80) for normal console with scrollbar
+ m_teWid->setWrapAt(prof.readNumEntry("Wrap", 0) ? 0 : 80);
m_teWid->setMinimumSize(150, 70 );
m_script = 0;
parent->resize( m_teWid->calcSize(80, 24 ) );
m_teEmu = new TEmuVt102(m_teWid );
diff --git a/noncore/apps/opie-console/emulation_widget.cpp b/noncore/apps/opie-console/emulation_widget.cpp
index d8e342b..9f95c72 100644
--- a/noncore/apps/opie-console/emulation_widget.cpp
+++ b/noncore/apps/opie-console/emulation_widget.cpp
@@ -14,11 +14,8 @@
#define rimX 0 // left/right rim width
#define rimY 0 // top/bottom rim high
-#define SCRWIDTH 16 // width of scrollbar
-
-
static const ColorEntry color_table[TABLE_COLORS] =
{
ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback
ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red
diff --git a/noncore/apps/opie-console/widget.cpp b/noncore/apps/opie-console/widget.cpp
index d948179..10045c6 100644
--- a/noncore/apps/opie-console/widget.cpp
+++ b/noncore/apps/opie-console/widget.cpp
@@ -101,10 +101,8 @@ alter Widget to use only QByteArray, where applicable.
//FIXME: the rim should normally be 1, 0 only when running in full screen mode.
#define rimX 0 // left/right rim width
#define rimY 0 // top/bottom rim high
-#define SCRWIDTH 16 // width of the scrollbar
-
#define yMouseScroll 1
// scroll increment used when dragging selection at top/bottom of window.
/* ------------------------------------------------------------------------- */