[rkward-cvs] SF.net SVN: rkward:[2439] trunk/rkward/rkward
tfry at users.sourceforge.net
tfry at users.sourceforge.net
Sat Apr 4 21:38:11 UTC 2009
Revision: 2439
http://rkward.svn.sourceforge.net/rkward/?rev=2439&view=rev
Author: tfry
Date: 2009-04-04 21:38:11 +0000 (Sat, 04 Apr 2009)
Log Message:
-----------
Implement auto-scrolling (harder than expected) and sane width for progress control dialog
Modified Paths:
--------------
trunk/rkward/rkward/misc/rkprogresscontrol.cpp
trunk/rkward/rkward/misc/rkprogresscontrol.h
trunk/rkward/rkward/settings/rksettingsmoduler.h
Modified: trunk/rkward/rkward/misc/rkprogresscontrol.cpp
===================================================================
--- trunk/rkward/rkward/misc/rkprogresscontrol.cpp 2009-04-03 12:41:38 UTC (rev 2438)
+++ trunk/rkward/rkward/misc/rkprogresscontrol.cpp 2009-04-04 21:38:11 UTC (rev 2439)
@@ -2,7 +2,7 @@
rkprogresscontol - description
-------------------
begin : Sun Sep 10 2006
- copyright : (C) 2006, 2007, 2008 by Thomas Friedrichsmeier
+ copyright : (C) 2006, 2007, 2008, 2009 by Thomas Friedrichsmeier
email : tfry at users.sourceforge.net
***************************************************************************/
@@ -20,11 +20,14 @@
#include <QHBoxLayout>
#include <QCloseEvent>
#include <QVBoxLayout>
+#include <QScrollBar>
+#include <QTimer>
#include <klocale.h>
#include "../rkglobals.h"
#include "../rbackend/rinterface.h"
+#include "../settings/rksettingsmoduler.h"
#include "../debug.h"
@@ -229,6 +232,8 @@
output_text->setReadOnly (true);
output_text->setPlainText (QString ());
output_text->setUndoRedoEnabled (false);
+ output_text->setLineWrapMode (QTextEdit::NoWrap);
+ output_text->setMinimumWidth (QFontMetrics (output_text->font ()).averageCharWidth () * RKSettingsModuleR::getDefaultWidth ());
output_box->setStretchFactor (output_text, 10);
if (!(mode_flags & RKProgressControl::OutputShownByDefault)) {
@@ -236,6 +241,7 @@
}
}
setDetailsWidget (output_box);
+ connect (this, SIGNAL(aboutToShowDetails()), this, SLOT(scrollDown()));
KDialog::ButtonCodes button_codes = KDialog::Cancel;
if (mode_flags & RKProgressControl::OutputSwitchable) button_codes |= KDialog::Details;
@@ -259,6 +265,11 @@
void RKProgressControlDialog::addOutput (const ROutput *output) {
RK_TRACE (MISC);
+ // scrolled all the way to the bottom?
+ bool at_end = true;
+ QScrollBar *bar = output_text->verticalScrollBar ();
+ if (bar && (bar->value () < bar->maximum ())) at_end = false;
+
if (output->type != last_output_type) {
output_text->insertPlainText ("\n");
@@ -272,8 +283,21 @@
}
output_text->insertPlainText (output->output);
+
+ // if previously at end, auto-scroll
+ if (at_end && output_text->isVisible ()) scrollDown ();
}
+void RKProgressControlDialog::scrollDown () {
+ RK_TRACE (MISC);
+
+ // oh what an ugly hack... (to cope with changing slider position just when the details widget becomes visible
+ if (!output_text->isVisible ()) QTimer::singleShot (0, this, SLOT(scrollDown()));
+
+ QScrollBar *bar = output_text->verticalScrollBar ();
+ if (bar) bar->setValue (bar->maximum ());
+}
+
void RKProgressControlDialog::setCloseTextToClose () {
RK_TRACE (MISC);
Modified: trunk/rkward/rkward/misc/rkprogresscontrol.h
===================================================================
--- trunk/rkward/rkward/misc/rkprogresscontrol.h 2009-04-03 12:41:38 UTC (rev 2438)
+++ trunk/rkward/rkward/misc/rkprogresscontrol.h 2009-04-04 21:38:11 UTC (rev 2439)
@@ -2,7 +2,7 @@
rkprogresscontol - description
-------------------
begin : Sun Sep 10 2006
- copyright : (C) 2006, 2007 by Thomas Friedrichsmeier
+ copyright : (C) 2006, 2007, 2009 by Thomas Friedrichsmeier
email : tfry at users.sourceforge.net
***************************************************************************/
@@ -110,6 +110,7 @@
/** This class provides the dialog shown as part of an RKProgressControl. Generally you should not use this class directly, but rather use RKProgressControl. */
class RKProgressControlDialog : public KDialog {
+ Q_OBJECT
public:
/** constructor. */
RKProgressControlDialog (const QString &text, const QString &caption, int mode_flags, bool modal);
@@ -121,6 +122,8 @@
void finished ();
protected:
void closeEvent (QCloseEvent *e);
+private slots:
+ void scrollDown ();
private:
QLabel *error_indicator;
QTextEdit *output_text;
Modified: trunk/rkward/rkward/settings/rksettingsmoduler.h
===================================================================
--- trunk/rkward/rkward/settings/rksettingsmoduler.h 2009-04-03 12:41:38 UTC (rev 2438)
+++ trunk/rkward/rkward/settings/rksettingsmoduler.h 2009-04-04 21:38:11 UTC (rev 2439)
@@ -2,7 +2,7 @@
rksettingsmoduler - description
-------------------
begin : Wed Jul 28 2004
- copyright : (C) 2004, 2007 by Thomas Friedrichsmeier
+ copyright : (C) 2004, 2007, 2009 by Thomas Friedrichsmeier
email : tfry at users.sourceforge.net
***************************************************************************/
@@ -51,6 +51,8 @@
/** generate the commands needed to set the R run time options */
static QStringList makeRRunTimeOptionCommands ();
+
+ static int getDefaultWidth () { return options_width; };
public slots:
void boxChanged (int);
void pathChanged ();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the rkward-tracker
mailing list