summaryrefslogtreecommitdiffstats
path: root/tdedebugdialog/tdedebugdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdedebugdialog/tdedebugdialog.cpp')
-rw-r--r--tdedebugdialog/tdedebugdialog.cpp260
1 files changed, 260 insertions, 0 deletions
diff --git a/tdedebugdialog/tdedebugdialog.cpp b/tdedebugdialog/tdedebugdialog.cpp
new file mode 100644
index 000000000..d63fac78b
--- /dev/null
+++ b/tdedebugdialog/tdedebugdialog.cpp
@@ -0,0 +1,260 @@
+/* This file is part of the KDE libraries
+ Copyright (C) 1997 Matthias Kalle Dalheimer (kalle@kde.org)
+ Copyright (C) 1999 David Faure (faure@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tqlayout.h>
+#include <tqlineedit.h>
+#include <tqcombobox.h>
+#include <tqlabel.h>
+#include <tqgroupbox.h>
+#include <tqcheckbox.h>
+#include <tqpushbutton.h>
+#include <kdebug.h>
+#include <tdeglobal.h>
+#include <tdelocale.h>
+#include <kdialog.h>
+#include <tdeconfig.h>
+#include <kseparator.h>
+#include <tdeapplication.h>
+#include <dcopclient.h>
+
+#include "tdedebugdialog.h"
+
+TDEDebugDialog::TDEDebugDialog( TQStringList areaList, TQWidget *parent, const char *name, bool modal )
+ : KAbstractDebugDialog( parent, name, modal )
+{
+ setCaption(i18n("Debug Settings"));
+
+ TQVBoxLayout *topLayout = new TQVBoxLayout( this, KDialog::marginHint(), KDialog::spacingHint() );
+ if( topLayout == 0 ) { return; } // can this happen ?
+
+ TQLabel * tmpLabel = new TQLabel( i18n("Debug area:"), this );
+ tmpLabel->setFixedHeight( fontMetrics().lineSpacing() );
+ topLayout->addWidget( tmpLabel );
+
+ // Build combo of debug areas
+ pDebugAreas = new TQComboBox( false, this );
+ pDebugAreas->setFixedHeight( pDebugAreas->sizeHint().height() );
+ pDebugAreas->insertStringList( areaList );
+ topLayout->addWidget( pDebugAreas );
+
+ TQGridLayout *gbox = new TQGridLayout( 2, 2, KDialog::marginHint() );
+ if( gbox == 0 ) { return; }
+ topLayout->addLayout( TQT_TQLAYOUT(gbox) );
+
+ TQStringList destList;
+ destList.append( i18n("File") );
+ destList.append( i18n("Message Box") );
+ destList.append( i18n("Shell") );
+ destList.append( i18n("Syslog") );
+ destList.append( i18n("None") );
+
+ //
+ // Upper left frame
+ //
+ pInfoGroup = new TQGroupBox( i18n("Information"), this );
+ gbox->addWidget( pInfoGroup, 0, 0 );
+ TQVBoxLayout *vbox = new TQVBoxLayout( pInfoGroup, KDialog::spacingHint() );
+ vbox->addSpacing( fontMetrics().lineSpacing() );
+ pInfoLabel1 = new TQLabel( i18n("Output to:"), pInfoGroup );
+ vbox->addWidget( pInfoLabel1 );
+ pInfoCombo = new TQComboBox( false, pInfoGroup );
+ connect(pInfoCombo, TQT_SIGNAL(activated(int)),
+ this, TQT_SLOT(slotDestinationChanged(int)));
+ vbox->addWidget( pInfoCombo );
+ pInfoCombo->insertStringList( destList );
+ pInfoLabel2 = new TQLabel( i18n("Filename:"), pInfoGroup );
+ vbox->addWidget( pInfoLabel2 );
+ pInfoFile = new TQLineEdit( pInfoGroup );
+ vbox->addWidget( pInfoFile );
+ /*
+ pInfoLabel3 = new TQLabel( i18n("Show only area(s):"), pInfoGroup );
+ vbox->addWidget( pInfoLabel3 );
+ pInfoShow = new TQLineEdit( pInfoGroup );
+ vbox->addWidget( pInfoShow );
+ */
+
+ //
+ // Upper right frame
+ //
+ pWarnGroup = new TQGroupBox( i18n("Warning"), this );
+ gbox->addWidget( pWarnGroup, 0, 1 );
+ vbox = new TQVBoxLayout( pWarnGroup, KDialog::spacingHint() );
+ vbox->addSpacing( fontMetrics().lineSpacing() );
+ pWarnLabel1 = new TQLabel( i18n("Output to:"), pWarnGroup );
+ vbox->addWidget( pWarnLabel1 );
+ pWarnCombo = new TQComboBox( false, pWarnGroup );
+ connect(pWarnCombo, TQT_SIGNAL(activated(int)),
+ this, TQT_SLOT(slotDestinationChanged(int)));
+ vbox->addWidget( pWarnCombo );
+ pWarnCombo->insertStringList( destList );
+ pWarnLabel2 = new TQLabel( i18n("Filename:"), pWarnGroup );
+ vbox->addWidget( pWarnLabel2 );
+ pWarnFile = new TQLineEdit( pWarnGroup );
+ vbox->addWidget( pWarnFile );
+ /*
+ pWarnLabel3 = new TQLabel( i18n("Show only area(s):"), pWarnGroup );
+ vbox->addWidget( pWarnLabel3 );
+ pWarnShow = new TQLineEdit( pWarnGroup );
+ vbox->addWidget( pWarnShow );
+ */
+
+ //
+ // Lower left frame
+ //
+ pErrorGroup = new TQGroupBox( i18n("Error"), this );
+ gbox->addWidget( pErrorGroup, 1, 0 );
+ vbox = new TQVBoxLayout( pErrorGroup, KDialog::spacingHint() );
+ vbox->addSpacing( fontMetrics().lineSpacing() );
+ pErrorLabel1 = new TQLabel( i18n("Output to:"), pErrorGroup );
+ vbox->addWidget( pErrorLabel1 );
+ pErrorCombo = new TQComboBox( false, pErrorGroup );
+ connect(pErrorCombo, TQT_SIGNAL(activated(int)),
+ this, TQT_SLOT(slotDestinationChanged(int)));
+ vbox->addWidget( pErrorCombo );
+ pErrorCombo->insertStringList( destList );
+ pErrorLabel2 = new TQLabel( i18n("Filename:"), pErrorGroup );
+ vbox->addWidget( pErrorLabel2 );
+ pErrorFile = new TQLineEdit( pErrorGroup );
+ vbox->addWidget( pErrorFile );
+ /*
+ pErrorLabel3 = new TQLabel( i18n("Show only area(s):"), pErrorGroup );
+ vbox->addWidget( pErrorLabel3 );
+ pErrorShow = new TQLineEdit( pErrorGroup );
+ vbox->addWidget( pErrorShow );
+ */
+
+ //
+ // Lower right frame
+ //
+ pFatalGroup = new TQGroupBox( i18n("Fatal Error"), this );
+ gbox->addWidget( pFatalGroup, 1, 1 );
+ vbox = new TQVBoxLayout( pFatalGroup, KDialog::spacingHint() );
+ vbox->addSpacing( fontMetrics().lineSpacing() );
+ pFatalLabel1 = new TQLabel( i18n("Output to:"), pFatalGroup );
+ vbox->addWidget( pFatalLabel1 );
+ pFatalCombo = new TQComboBox( false, pFatalGroup );
+ connect(pFatalCombo, TQT_SIGNAL(activated(int)),
+ this, TQT_SLOT(slotDestinationChanged(int)));
+ vbox->addWidget( pFatalCombo );
+ pFatalCombo->insertStringList( destList );
+ pFatalLabel2 = new TQLabel( i18n("Filename:"), pFatalGroup );
+ vbox->addWidget( pFatalLabel2 );
+ pFatalFile = new TQLineEdit( pFatalGroup );
+ vbox->addWidget( pFatalFile );
+ /*
+ pFatalLabel3 = new TQLabel( i18n("Show only area(s):"), pFatalGroup );
+ vbox->addWidget( pFatalLabel3 );
+ pFatalShow = new TQLineEdit( pFatalGroup );
+ vbox->addWidget( pFatalShow );
+ */
+
+
+ pAbortFatal = new TQCheckBox( i18n("Abort on fatal errors"), this );
+ topLayout->addWidget(pAbortFatal);
+
+ topLayout->addStretch();
+ KSeparator *hline = new KSeparator( KSeparator::HLine, this );
+ topLayout->addWidget( hline );
+
+ buildButtons( topLayout );
+
+ connect( pDebugAreas, TQT_SIGNAL( activated( const TQString &) ),
+ TQT_SLOT( slotDebugAreaChanged( const TQString & ) ) );
+
+ // Get initial values ("initial" is understood by the slot)
+ slotDebugAreaChanged( "0 initial" );
+ slotDestinationChanged(0);
+
+ resize( 300, height() );
+}
+
+TDEDebugDialog::~TDEDebugDialog()
+{
+}
+
+void TDEDebugDialog::slotDebugAreaChanged( const TQString & text )
+{
+ // Save settings from previous page
+ if ( text != "0 initial" ) // except on first call
+ save();
+
+ TQString data = text.simplifyWhiteSpace();
+ int space = data.find(" ");
+ if (space == -1)
+ kdError() << "No space:" << data << endl;
+
+ bool longOK;
+ unsigned long number = data.left(space).toULong(&longOK);
+ if (!longOK)
+ kdError() << "The first part wasn't a number : " << data << endl;
+
+ /* Fill dialog fields with values from config data */
+ pConfig->setGroup( TQString::number( number ) ); // Group name = debug area code
+ pInfoCombo->setCurrentItem( pConfig->readNumEntry( "InfoOutput", 2 ) );
+ pInfoFile->setText( pConfig->readPathEntry( "InfoFilename","kdebug.dbg" ) );
+ //pInfoShow->setText( pConfig->readEntry( "InfoShow" ) );
+ pWarnCombo->setCurrentItem( pConfig->readNumEntry( "WarnOutput", 2 ) );
+ pWarnFile->setText( pConfig->readPathEntry( "WarnFilename","kdebug.dbg" ) );
+ //pWarnShow->setText( pConfig->readEntry( "WarnShow" ) );
+ pErrorCombo->setCurrentItem( pConfig->readNumEntry( "ErrorOutput", 2 ) );
+ pErrorFile->setText( pConfig->readPathEntry( "ErrorFilename","kdebug.dbg") );
+ //pErrorShow->setText( pConfig->readEntry( "ErrorShow" ) );
+ pFatalCombo->setCurrentItem( pConfig->readNumEntry( "FatalOutput", 2 ) );
+ pFatalFile->setText( pConfig->readPathEntry("FatalFilename","kdebug.dbg") );
+ //pFatalShow->setText( pConfig->readEntry( "FatalShow" ) );
+ pAbortFatal->setChecked( pConfig->readNumEntry( "AbortFatal", 1 ) );
+ slotDestinationChanged(0);
+}
+
+void TDEDebugDialog::save()
+{
+ pConfig->writeEntry( "InfoOutput", pInfoCombo->currentItem() );
+ pConfig->writePathEntry( "InfoFilename", pInfoFile->text() );
+ //pConfig->writeEntry( "InfoShow", pInfoShow->text() );
+ pConfig->writeEntry( "WarnOutput", pWarnCombo->currentItem() );
+ pConfig->writePathEntry( "WarnFilename", pWarnFile->text() );
+ //pConfig->writeEntry( "WarnShow", pWarnShow->text() );
+ pConfig->writeEntry( "ErrorOutput", pErrorCombo->currentItem() );
+ pConfig->writePathEntry( "ErrorFilename", pErrorFile->text() );
+ //pConfig->writeEntry( "ErrorShow", pErrorShow->text() );
+ pConfig->writeEntry( "FatalOutput", pFatalCombo->currentItem() );
+ pConfig->writePathEntry( "FatalFilename", pFatalFile->text() );
+ //pConfig->writeEntry( "FatalShow", pFatalShow->text() );
+ pConfig->writeEntry( "AbortFatal", pAbortFatal->isChecked() );
+
+ TQByteArray data;
+ if (!kapp->dcopClient()->send("*", "KDebug", "notifyKDebugConfigChanged()", data))
+ {
+ kdError() << "Unable to send DCOP message" << endl;
+ }
+}
+
+void TDEDebugDialog::slotDestinationChanged(int) {
+ pInfoFile->setEnabled(pInfoCombo->currentItem() == 0);
+ pWarnFile->setEnabled(pWarnCombo->currentItem() == 0);
+ pErrorFile->setEnabled(pErrorCombo->currentItem() == 0);
+ pFatalFile->setEnabled(pFatalCombo->currentItem() == 0);
+}
+
+#include "tdedebugdialog.moc"