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" | 
