diff options
Diffstat (limited to 'tdedebugdialog/tdedebugdialog.cpp')
-rw-r--r-- | tdedebugdialog/tdedebugdialog.cpp | 260 |
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" |