• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeui
 

tdeui

  • tdeui
kbugreport.cpp
1 /* This file is part of the KDE project
2  Copyright (C) 1999 David Faure <faure@kde.org>
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18 */
19 
20 #include <tqhbuttongroup.h>
21 #include <tqpushbutton.h>
22 #include <tqlabel.h>
23 #include <tqlayout.h>
24 #include <tqmultilineedit.h>
25 #include <tqradiobutton.h>
26 #include <tqwhatsthis.h>
27 #include <tqregexp.h>
28 
29 #include <tdeaboutdata.h>
30 #include <tdeapplication.h>
31 #include <tdeconfig.h>
32 #include <kdebug.h>
33 #include <klineedit.h>
34 #include <tdelocale.h>
35 #include <tdemessagebox.h>
36 #include <tdeprocess.h>
37 #include <kstandarddirs.h>
38 #include <kstdguiitem.h>
39 #include <kurl.h>
40 #include <kurllabel.h>
41 
42 #include "kbugreport.h"
43 
44 #include <stdio.h>
45 #include <pwd.h>
46 #include <unistd.h>
47 
48 #include <sys/utsname.h>
49 
50 #include "kdepackages.h"
51 #include <kcombobox.h>
52 #include <config.h>
53 #include <tdetempfile.h>
54 #include <tqtextstream.h>
55 #include <tqfile.h>
56 
57 class KBugReportPrivate {
58 public:
59  KComboBox *appcombo;
60  TQString lastError;
61  TQString tde_version;
62  TQString appname;
63  TQString os;
64  TQPushButton *submitBugButton;
65  KURL url;
66 };
67 
68 KBugReport::KBugReport( TQWidget * parentw, bool modal, const TDEAboutData *aboutData )
69  : KDialogBase( Plain,
70  i18n("Submit Bug Report"),
71  Ok | Cancel,
72  Ok,
73  parentw,
74  "KBugReport",
75  modal, // modal
76  true // separator
77  )
78 {
79  d = new KBugReportPrivate;
80 
81  // Use supplied aboutdata, otherwise the one from the active instance
82  // otherwise the TDEGlobal one. _activeInstance should neved be 0L in theory.
83  m_aboutData = aboutData
84  ? aboutData
85  : ( TDEGlobal::_activeInstance ? TDEGlobal::_activeInstance->aboutData()
86  : TDEGlobal::instance()->aboutData() );
87  m_process = 0;
88  TQWidget * parent = plainPage();
89  d->submitBugButton = 0;
90 
91  //if ( m_aboutData->bugAddress() == TQString::fromLatin1("submit@bugs.trinitydesktop.org") )
92  //{
93  // // This is a core KDE application -> redirect to the web form
94  // Always redirect to the Web form for Trinity
95  d->submitBugButton = new TQPushButton( parent );
96  setButtonCancel( KStdGuiItem::close() );
97  //}
98 
99  TQLabel * tmpLabel;
100  TQVBoxLayout * lay = new TQVBoxLayout( parent, 0, spacingHint() );
101 
102  TQGridLayout *glay = new TQGridLayout( lay, 4, 3 );
103  glay->setColStretch( 1, 10 );
104  glay->setColStretch( 2, 10 );
105 
106  int row = 0;
107 
108  if ( !d->submitBugButton )
109  {
110  // From
111  TQString qwtstr = i18n( "Your email address. If incorrect, use the Configure Email button to change it" );
112  tmpLabel = new TQLabel( i18n("From:"), parent );
113  glay->addWidget( tmpLabel, row,0 );
114  TQWhatsThis::add( tmpLabel, qwtstr );
115  m_from = new TQLabel( parent );
116  glay->addWidget( m_from, row, 1 );
117  TQWhatsThis::add( m_from, qwtstr );
118 
119 
120  // Configure email button
121  m_configureEmail = new TQPushButton( i18n("Configure Email..."),
122  parent );
123  connect( m_configureEmail, TQ_SIGNAL( clicked() ), this,
124  TQ_SLOT( slotConfigureEmail() ) );
125  glay->addMultiCellWidget( m_configureEmail, 0, 2, 2, 2, TQt::AlignTop|TQt::AlignRight );
126 
127  // To
128  qwtstr = i18n( "The email address this bug report is sent to." );
129  tmpLabel = new TQLabel( i18n("To:"), parent );
130  glay->addWidget( tmpLabel, ++row,0 );
131  TQWhatsThis::add( tmpLabel, qwtstr );
132  tmpLabel = new TQLabel( m_aboutData->bugAddress(), parent );
133  glay->addWidget( tmpLabel, row, 1 );
134  TQWhatsThis::add( tmpLabel, qwtstr );
135 
136  setButtonOK( KGuiItem( i18n("&Send"), "mail-send", i18n( "Send bug report." ),
137  i18n( "Send this bug report to %1." ).arg( m_aboutData->bugAddress() ) ) );
138 
139  }
140  else
141  {
142  m_configureEmail = 0;
143  m_from = 0;
144  showButtonOK( false );
145  }
146 
147  // Program name
148  TQString qwtstr = i18n( "The application for which you wish to submit a bug report - if incorrect, please use the Report Bug menu item of the correct application" );
149  tmpLabel = new TQLabel( i18n("Application: "), parent );
150  glay->addWidget( tmpLabel, ++row, 0 );
151  TQWhatsThis::add( tmpLabel, qwtstr );
152  d->appcombo = new KComboBox( false, parent, "app");
153  TQWhatsThis::add( d->appcombo, qwtstr );
154  d->appcombo->insertStrList((const char**)packages);
155  connect(d->appcombo, TQ_SIGNAL(activated(int)), TQ_SLOT(appChanged(int)));
156  d->appname = TQString::fromLatin1( m_aboutData
157  ? m_aboutData->productName()
158  : tqApp->name() );
159  glay->addWidget( d->appcombo, row, 1 );
160  int index = 0;
161  for (; index < d->appcombo->count(); index++) {
162  if (d->appcombo->text(index) == d->appname) {
163  break;
164  }
165  }
166  if (index == d->appcombo->count()) { // not present
167  d->appcombo->insertItem(d->appname);
168  }
169  d->appcombo->setCurrentItem(index);
170 
171  TQWhatsThis::add( tmpLabel, qwtstr );
172 
173  // Version
174  qwtstr = i18n( "The version of this application - please make sure that no newer version is available before sending a bug report" );
175  tmpLabel = new TQLabel( i18n("Version:"), parent );
176  glay->addWidget( tmpLabel, ++row, 0 );
177  TQWhatsThis::add( tmpLabel, qwtstr );
178  if (m_aboutData)
179  m_strVersion = m_aboutData->version();
180  else
181  m_strVersion = i18n("no version set (programmer error!)");
182  d->tde_version = TQString::fromLatin1( TDE_VERSION_STRING );
183  if (TQString::fromLatin1( KDE_DISTRIBUTION_TEXT ) != "")
184  d->tde_version += ", " + TQString::fromLatin1( KDE_DISTRIBUTION_TEXT );
185  if ( !d->submitBugButton )
186  m_strVersion += " " + d->tde_version;
187  m_version = new TQLabel( m_strVersion, parent );
188  //glay->addWidget( m_version, row, 1 );
189  glay->addMultiCellWidget( m_version, row, row, 1, 2 );
190  TQWhatsThis::add( m_version, qwtstr );
191 
192  tmpLabel = new TQLabel(i18n("OS:"), parent);
193  glay->addWidget( tmpLabel, ++row, 0 );
194 
195  struct utsname unameBuf;
196  uname( &unameBuf );
197  d->os = TQString::fromLatin1( unameBuf.sysname ) +
198  " (" + TQString::fromLatin1( unameBuf.machine ) + ") "
199  "release " + TQString::fromLatin1( unameBuf.release );
200 
201  tmpLabel = new TQLabel(d->os, parent);
202  glay->addMultiCellWidget( tmpLabel, row, row, 1, 2 );
203 
204  tmpLabel = new TQLabel(i18n("Compiler:"), parent);
205  glay->addWidget( tmpLabel, ++row, 0 );
206  tmpLabel = new TQLabel(TQString::fromLatin1(KDE_COMPILER_VERSION), parent);
207  glay->addMultiCellWidget( tmpLabel, row, row, 1, 2 );
208 
209  if ( !d->submitBugButton )
210  {
211  // Severity
212  m_bgSeverity = new TQHButtonGroup( i18n("Se&verity"), parent );
213  static const char * const sevNames[5] = { "critical", "grave", "normal", "wishlist", "i18n" };
214  const TQString sevTexts[5] = { i18n("Critical"), i18n("Grave"), i18n("normal severity","Normal"), i18n("Wishlist"), i18n("Translation") };
215 
216  for (int i = 0 ; i < 5 ; i++ )
217  {
218  // Store the severity string as the name
219  TQRadioButton *rb = new TQRadioButton( sevTexts[i], m_bgSeverity, sevNames[i] );
220  if (i==2) rb->setChecked(true); // default : "normal"
221  }
222 
223  lay->addWidget( m_bgSeverity );
224 
225  // Subject
226  TQHBoxLayout * hlay = new TQHBoxLayout( lay );
227  tmpLabel = new TQLabel( i18n("S&ubject: "), parent );
228  hlay->addWidget( tmpLabel );
229  m_subject = new KLineEdit( parent );
230  m_subject->setFocus();
231  tmpLabel->setBuddy(m_subject);
232  hlay->addWidget( m_subject );
233 
234  TQString text = i18n("Enter the text (in English if possible) that you wish to submit for the "
235  "bug report.\n"
236  "If you press \"Send\", a mail message will be sent to the maintainer of "
237  "this program.\n");
238  TQLabel * label = new TQLabel( parent, "label" );
239 
240  label->setText( text );
241  lay->addWidget( label );
242 
243  // The multiline-edit
244  m_lineedit = new TQMultiLineEdit( parent, "TQMultiLineEdit" );
245  m_lineedit->setMinimumHeight( 180 ); // make it big
246  m_lineedit->setWordWrap(TQMultiLineEdit::WidgetWidth);
247  lay->addWidget( m_lineedit, 10 /*stretch*/ );
248 
249  slotSetFrom();
250  } else {
251  // Point to the web form
252 
253  lay->addSpacing(10);
254  TQString text = i18n("Reporting bugs and requesting enhancements are maintained using the Bugzilla reporting system.\n"
255  "You'll need a login account and password to use the reporting system.\n"
256  "To control spam and rogue elements the login requires a valid email address.\n"
257  "Consider using any large email service if you want to avoid using your private email address.\n"
258  "\n"
259  "Selecting the button below opens your web browser to http://bugs.trinitydesktop.org,\n"
260  "where you will find the report form.\n"
261  "The information displayed above will be transferred to the reporting system.\n"
262  "Session cookies must be enabled to use the reporting system.\n"
263  "\n"
264  "Thank you for helping!");
265  TQLabel * label = new TQLabel( text, parent, "label");
266  lay->addWidget( label );
267  lay->addSpacing(10);
268 
269  updateURL();
270  d->submitBugButton->setText( i18n("&Launch Bug Report Wizard") );
271  d->submitBugButton->setSizePolicy(TQSizePolicy::Fixed,TQSizePolicy::Fixed);
272  lay->addWidget( d->submitBugButton );
273  lay->addSpacing(10);
274 
275  connect( d->submitBugButton, TQ_SIGNAL(clicked()),
276  this, TQ_SLOT(slotOk()));
277  }
278 }
279 
280 KBugReport::~KBugReport()
281 {
282  delete d;
283 }
284 
285 void KBugReport::updateURL()
286 {
287  KURL url ( "http://bugs.trinitydesktop.org/enter_bug.cgi" );
288  url.addQueryItem( "product", "TDE" );
289  url.addQueryItem( "op_sys", d->os );
290  url.addQueryItem( "cf_kde_compiler", KDE_COMPILER_VERSION );
291  url.addQueryItem( "cf_tde_version", d->tde_version );
292  url.addQueryItem( "cf_kde_appversion", m_strVersion );
293  url.addQueryItem( "cf_kde_package", d->appcombo->currentText() );
294  url.addQueryItem( "cf_kde_kbugreport", "1" );
295  d->url = url;
296 }
297 
298 void KBugReport::appChanged(int i)
299 {
300  TQString appName = d->appcombo->text(i);
301  int index = appName.find( '/' );
302  if ( index > 0 )
303  appName = appName.left( index );
304  kdDebug() << "appName " << appName << endl;
305 
306  if (d->appname == appName && m_aboutData)
307  m_strVersion = m_aboutData->version();
308  else
309  m_strVersion = i18n("unknown program name", "unknown");
310 
311  if ( !d->submitBugButton )
312  m_strVersion += d->tde_version;
313 
314  m_version->setText(m_strVersion);
315  if ( d->submitBugButton )
316  updateURL();
317 }
318 
319 void KBugReport::slotConfigureEmail()
320 {
321  if (m_process) return;
322  m_process = new TDEProcess;
323  *m_process << TQString::fromLatin1("tdecmshell") << TQString::fromLatin1("kcm_useraccount");
324  connect(m_process, TQ_SIGNAL(processExited(TDEProcess *)), TQ_SLOT(slotSetFrom()));
325  if (!m_process->start())
326  {
327  kdDebug() << "Couldn't start tdecmshell.." << endl;
328  delete m_process;
329  m_process = 0;
330  return;
331  }
332  m_configureEmail->setEnabled(false);
333 }
334 
335 void KBugReport::slotSetFrom()
336 {
337  delete m_process;
338  m_process = 0;
339  m_configureEmail->setEnabled(true);
340 
341  // ### KDE4: why oh why is KEmailSettings in tdeio?
342  TDEConfig emailConf( TQString::fromLatin1("emaildefaults") );
343 
344  // find out the default profile
345  emailConf.setGroup( TQString::fromLatin1("Defaults") );
346  TQString profile = TQString::fromLatin1("PROFILE_");
347  profile += emailConf.readEntry( TQString::fromLatin1("Profile"),
348  TQString::fromLatin1("Default") );
349 
350  emailConf.setGroup( profile );
351  TQString fromaddr = emailConf.readEntry( TQString::fromLatin1("EmailAddress") );
352  if (fromaddr.isEmpty()) {
353  struct passwd *p;
354  p = getpwuid(getuid());
355  fromaddr = TQString::fromLatin1(p->pw_name);
356  } else {
357  TQString name = emailConf.readEntry( TQString::fromLatin1("FullName"));
358  if (!name.isEmpty())
359  fromaddr = name + TQString::fromLatin1(" <") + fromaddr + TQString::fromLatin1(">");
360  }
361  m_from->setText( fromaddr );
362 }
363 
364 void KBugReport::slotUrlClicked(const TQString &urlText)
365 {
366  if ( kapp )
367  kapp->invokeBrowser( urlText );
368 
369  // When using the web form, a click can also close the window, as there's
370  // not much to do. It also gives the user a direct response to his click:
371  if ( d->submitBugButton )
372  KDialogBase::slotCancel();
373 }
374 
375 
376 void KBugReport::slotOk( void )
377 {
378  if ( d->submitBugButton ) {
379  if ( kapp )
380  kapp->invokeBrowser( d->url.url() );
381  return;
382  }
383 
384  if( m_lineedit->text().isEmpty() ||
385  m_subject->text().isEmpty() )
386  {
387  TQString msg = i18n("You must specify both a subject and a description "
388  "before the report can be sent.");
389  KMessageBox::error(this,msg);
390  return;
391  }
392 
393  switch ( m_bgSeverity->id( m_bgSeverity->selected() ) )
394  {
395  case 0: // critical
396  if ( KMessageBox::questionYesNo( this, i18n(
397  "<p>You chose the severity <b>Critical</b>. "
398  "Please note that this severity is intended only for bugs that</p>"
399  "<ul><li>break unrelated software on the system (or the whole system)</li>"
400  "<li>cause serious data loss</li>"
401  "<li>introduce a security hole on the system where the affected package is installed</li></ul>\n"
402  "<p>Does the bug you are reporting cause any of the above damage? "
403  "If it does not, please select a lower severity. Thank you!</p>" ),TQString::null,KStdGuiItem::cont(),KStdGuiItem::cancel() ) == KMessageBox::No )
404  return;
405  break;
406  case 1: // grave
407  if ( KMessageBox::questionYesNo( this, i18n(
408  "<p>You chose the severity <b>Grave</b>. "
409  "Please note that this severity is intended only for bugs that</p>"
410  "<ul><li>make the package in question unusable or mostly so</li>"
411  "<li>cause data loss</li>"
412  "<li>introduce a security hole allowing access to the accounts of users who use the affected package</li></ul>\n"
413  "<p>Does the bug you are reporting cause any of the above damage? "
414  "If it does not, please select a lower severity. Thank you!</p>" ),TQString::null,KStdGuiItem::cont(),KStdGuiItem::cancel() ) == KMessageBox::No )
415  return;
416  break;
417  }
418  if( !sendBugReport() )
419  {
420  TQString msg = i18n("Unable to send the bug report.\n"
421  "Please submit a bug report manually...\n"
422  "See http://bugs.trinitydesktop.org/ for instructions.");
423  KMessageBox::error(this, msg + "\n\n" + d->lastError);
424  return;
425  }
426 
427  KMessageBox::information(this,
428  i18n("Bug report sent, thank you for your input."));
429  accept();
430 }
431 
432 void KBugReport::slotCancel()
433 {
434  if( !d->submitBugButton && ( m_lineedit->edited() || m_subject->edited() ) )
435  {
436  int rc = KMessageBox::warningYesNo( this,
437  i18n( "Close and discard\nedited message?" ),
438  i18n( "Close Message" ), KStdGuiItem::discard(), KStdGuiItem::cont() );
439  if( rc == KMessageBox::No )
440  return;
441  }
442  KDialogBase::slotCancel();
443 }
444 
445 
446 TQString KBugReport::text() const
447 {
448  kdDebug() << m_bgSeverity->selected()->name() << endl;
449  // Prepend the pseudo-headers to the contents of the mail
450  TQString severity = TQString::fromLatin1(m_bgSeverity->selected()->name());
451  TQString appname = d->appcombo->currentText();
452  TQString os = TQString::fromLatin1("OS: %1 (%2)\n").
453  arg(KDE_COMPILING_OS).
454  arg(KDE_DISTRIBUTION_TEXT);
455  TQString bodyText;
456  for(int i = 0; i < m_lineedit->numLines(); i++)
457  {
458  TQString line = m_lineedit->textLine(i);
459  if (!line.endsWith("\n"))
460  line += '\n';
461  bodyText += line;
462  }
463 
464  if (severity == TQString::fromLatin1("i18n") && TDEGlobal::locale()->language() != TDELocale::defaultLanguage()) {
465  // Case 1 : i18n bug
466  TQString package = TQString::fromLatin1("i18n_%1").arg(TDEGlobal::locale()->language());
467  package = package.replace(TQString::fromLatin1("_"), TQString::fromLatin1("-"));
468  return TQString::fromLatin1("Package: %1").arg(package) +
469  TQString::fromLatin1("\n"
470  "Application: %1\n"
471  // not really i18n's version, so better here IMHO
472  "Version: %2\n").arg(appname).arg(m_strVersion)+
473  os+TQString::fromLatin1("\n")+bodyText;
474  } else {
475  appname = appname.replace(TQString::fromLatin1("_"), TQString::fromLatin1("-"));
476  // Case 2 : normal bug
477  return TQString::fromLatin1("Package: %1\n"
478  "Version: %2\n"
479  "Severity: %3\n")
480  .arg(appname).arg(m_strVersion).arg(severity)+
481  TQString::fromLatin1("Compiler: %1\n").arg(KDE_COMPILER_VERSION)+
482  os+TQString::fromLatin1("\n")+bodyText;
483  }
484 }
485 
486 bool KBugReport::sendBugReport()
487 {
488  TQString recipient ( m_aboutData ?
489  m_aboutData->bugAddress() :
490  TQString::fromLatin1("submit@bugs.trinitydesktop.org") );
491 
492  TQString command;
493  command = locate("exe", "tdesendbugmail");
494  if (command.isEmpty())
495  command = TDEStandardDirs::findExe( TQString::fromLatin1("tdesendbugmail") );
496 
497  KTempFile outputfile;
498  outputfile.close();
499 
500  TQString subject = m_subject->text();
501  command += " --subject ";
502  command += TDEProcess::quote(subject);
503  command += " --recipient ";
504  command += TDEProcess::quote(recipient);
505  command += " > ";
506  command += TDEProcess::quote(outputfile.name());
507 
508  fflush(stdin);
509  fflush(stderr);
510 
511  FILE * fd = popen(TQFile::encodeName(command), "w");
512  if (!fd)
513  {
514  kdError() << "Unable to open a pipe to " << command << endl;
515  return false;
516  }
517 
518  TQString btext = text();
519  fwrite(btext.ascii(),btext.length(),1,fd);
520  fflush(fd);
521 
522  int error = pclose(fd);
523  kdDebug() << "exit status1 " << error << " " << (WIFEXITED(error)) << " " << WEXITSTATUS(error) << endl;
524 
525  if ((WIFEXITED(error)) && WEXITSTATUS(error) == 1) {
526  TQFile of(outputfile.name());
527  if (of.open(IO_ReadOnly )) {
528  TQTextStream is(&of);
529  is.setEncoding(TQTextStream::UnicodeUTF8);
530  TQString line;
531  while (!is.eof())
532  line = is.readLine();
533  d->lastError = line;
534  } else {
535  d->lastError = TQString::null;
536  }
537  outputfile.unlink();
538  return false;
539  }
540  outputfile.unlink();
541  return true;
542 }
543 
544 TQString KBugReport::compilerVersion() {
545  return KDE_COMPILER_VERSION;
546 }
547 
548 TQString KBugReport::operatingSystem() {
549  return d->os;
550 }
551 
552 TQString KBugReport::tdeVersion() {
553  return d->tde_version;
554 }
555 
556 void KBugReport::virtual_hook( int id, void* data )
557 { KDialogBase::virtual_hook( id, data ); }
558 
559 #include "kbugreport.moc"
KBugReport::slotConfigureEmail
virtual void slotConfigureEmail()
"Configure email" has been clicked - this calls tdecmshell System/email
Definition: kbugreport.cpp:319
KBugReport::slotCancel
virtual void slotCancel()
Cancel has been clicked.
Definition: kbugreport.cpp:432
KBugReport::slotOk
virtual void slotOk(void)
OK has been clicked.
Definition: kbugreport.cpp:376
KBugReport::appChanged
void appChanged(int)
Application combo selection changed (and was activated)
Definition: kbugreport.cpp:298
KBugReport::~KBugReport
virtual ~KBugReport()
Destructor.
Definition: kbugreport.cpp:280
KBugReport::text
TQString text() const
A complete copy of the bug report.
Definition: kbugreport.cpp:446
KBugReport::slotSetFrom
virtual void slotSetFrom()
Sets the "From" field from the e-mail configuration Called at creation time, but also after "Configur...
Definition: kbugreport.cpp:335
KBugReport::slotUrlClicked
virtual void slotUrlClicked(const TQString &)
The URL-Label "http://bugs.trinitydesktop.org/" was clicked.
Definition: kbugreport.cpp:364
KBugReport::updateURL
void updateURL()
Update the url to match the current os, compiler, selected app, etc.
Definition: kbugreport.cpp:285
KBugReport::KBugReport
KBugReport(TQWidget *parent=0L, bool modal=true, const TDEAboutData *aboutData=0L)
Creates a bug-report dialog.
Definition: kbugreport.cpp:68
KBugReport::sendBugReport
bool sendBugReport()
Attempt to e-mail the bug report.
Definition: kbugreport.cpp:486
KComboBox
An enhanced combo box.
Definition: kcombobox.h:152
KDialogBase
A dialog base class with standard buttons and predefined layouts.
Definition: kdialogbase.h:192
KDialogBase::slotCancel
virtual void slotCancel()
Activated when the Cancel button has been clicked.
Definition: kdialogbase.cpp:1215
KDialogBase::setButtonOK
void setButtonOK(const KGuiItem &item=KStdGuiItem::ok())
Sets the appearance of the OK button.
Definition: kdialogbase.cpp:916
KDialogBase::setButtonCancel
void setButtonCancel(const KGuiItem &item=KStdGuiItem::cancel())
Sets the appearance of the Cancel button.
Definition: kdialogbase.cpp:970
KDialogBase::plainPage
TQFrame * plainPage()
Retrieve the empty page when the predefined layout is used in Plain mode.
Definition: kdialogbase.cpp:420
KDialogBase::showButtonOK
void showButtonOK(bool state)
Hide or display the OK button.
Definition: kdialogbase.cpp:876
KDialog::spacingHint
static int spacingHint()
Return the number of pixels you shall use between widgets inside a dialog according to the KDE standa...
Definition: kdialog.cpp:110
KGuiItem
An abstract class for GUI data such as ToolTip and Icon.
Definition: kguiitem.h:39
KLineEdit
An enhanced TQLineEdit widget for inputting text.
Definition: klineedit.h:146
KMessageBox::information
static void information(TQWidget *parent, const TQString &text, const TQString &caption=TQString::null, const TQString &dontShowAgainName=TQString::null, int options=Notify)
Display an "Information" dialog.
Definition: tdemessagebox.cpp:883
KMessageBox::error
static void error(TQWidget *parent, const TQString &text, const TQString &caption=TQString::null, int options=Notify)
Display an "Error" dialog.
Definition: tdemessagebox.cpp:734
KMessageBox::questionYesNo
static int questionYesNo(TQWidget *parent, const TQString &text, const TQString &caption=TQString::null, const KGuiItem &buttonYes=KStdGuiItem::yes(), const KGuiItem &buttonNo=KStdGuiItem::no(), const TQString &dontAskAgainName=TQString::null, int options=Notify)
Display a simple "question" dialog.
Definition: tdemessagebox.cpp:317
KMessageBox::warningYesNo
static int warningYesNo(TQWidget *parent, const TQString &text, const TQString &caption=TQString::null, const KGuiItem &buttonYes=KStdGuiItem::yes(), const KGuiItem &buttonNo=KStdGuiItem::no(), const TQString &dontAskAgainName=TQString::null, int options=Notify|Dangerous)
Display a "warning" dialog.
Definition: tdemessagebox.cpp:505
KStdGuiItem::cont
static KGuiItem cont()
Returns a "continue" item.
Definition: kstdguiitem.cpp:212
KTempFile
KTempFile::close
bool close()
KTempFile::unlink
void unlink()
KTempFile::name
TQString name() const
KURL
KURL::addQueryItem
void addQueryItem(const TQString &_item, const TQString &_value, int encoding_hint=0)
TDEAboutData
TDEAboutData::bugAddress
TQString bugAddress() const
TDEAboutData::version
TQString version() const
TDEAboutData::productName
const char * productName() const
TDEConfigBase::readEntry
TQString readEntry(const TQString &pKey, const TQString &aDefault=TQString::null) const
TDEConfigBase::setGroup
void setGroup(const TQString &group)
TDEConfig
TDEGlobal::instance
static TDEInstance * instance()
TDEGlobal::locale
static TDELocale * locale()
TDEInstance::aboutData
const TDEAboutData * aboutData() const
TDELocale::defaultLanguage
static TQString defaultLanguage()
TDEProcess
TDEProcess::start
virtual bool start(RunMode runmode=NotifyOnExit, Communication comm=NoCommunication)
TDEProcess::quote
static TQString quote(const TQString &arg)
TDEStandardDirs::findExe
static TQString findExe(const TQString &appname, const TQString &pathstr=TQString::null, bool ignoreExecBit=false)
endl
kndbgstream & endl(kndbgstream &s)
kdError
kdbgstream kdError(int area=0)
kdDebug
kdbgstream kdDebug(int area=0)
locate
TQString locate(const char *type, const TQString &filename, const TDEInstance *instance=TDEGlobal::instance())
tdelocale.h

tdeui

Skip menu "tdeui"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeui

Skip menu "tdeui"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeui by doxygen 1.9.1
This website is maintained by Timothy Pearson.