mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-20 00:41:23 +00:00
Following the discussion on kde-devel: this is a VERY cleaned up version of
kdialog (based on kdialog-kde3-0.2.1, but I removed the client/server stuff, the 'width height' arguments, fixed all the encoding problems, used the KDE widgets like KLineEditDlg and KPasswordDialog, etc.) New features include: many messageboxes from KMessageBox (--yesnocancel, --warningyesno, --error etc.) Now you have a very easy way to create KDE dialog boxes from shell scripts. svn path=/trunk/kdebase/kdialog/; revision=167164
This commit is contained in:
parent
91ea8ded1a
commit
71811b6127
13
kdialog/Makefile.am
Normal file
13
kdialog/Makefile.am
Normal file
|
@ -0,0 +1,13 @@
|
|||
KDE_CXXFLAGS = -DQT_NO_CAST_ASCII -DQT_NO_ASCII_CAST
|
||||
INCLUDES = $(all_includes)
|
||||
|
||||
bin_PROGRAMS = kdialog
|
||||
|
||||
kdialog_SOURCES = kdialog.cpp widgets.cpp klistboxdialog.cpp
|
||||
kdialog_LDADD = $(LIB_KDEUI)
|
||||
kdialog_LDFLAGS = $(all_libraries) $(KDE_RPATH)
|
||||
|
||||
METASOURCES = AUTO
|
||||
|
||||
messages:
|
||||
$(XGETTEXT) $(kdialog_SOURCES) -o $(podir)/kdialog.pot
|
8
kdialog/README
Normal file
8
kdialog/README
Normal file
|
@ -0,0 +1,8 @@
|
|||
kdialog allows to display dialog boxes from shell scripts.
|
||||
The syntax is very much inspired from the "dialog" command
|
||||
(which shows text mode dialogs).
|
||||
|
||||
However the width and height attributes have been removed for
|
||||
most dialogs - Qt/KDE have layouts ;)
|
||||
|
||||
Current maintainer: David Faure <faure@kde.org>
|
262
kdialog/kdialog.cpp
Normal file
262
kdialog/kdialog.cpp
Normal file
|
@ -0,0 +1,262 @@
|
|||
//
|
||||
// Copyright (C) 1998 Matthias Hoelzer <hoelzer@kde.org>
|
||||
// Copyright (C) 2002 David Faure <faure@kde.org>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the7 implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <stream.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <qlist.h>
|
||||
#include <qfile.h>
|
||||
#include <qdstream.h>
|
||||
#include <qregexp.h>
|
||||
#include <kmessagebox.h>
|
||||
#include <kapp.h>
|
||||
#include <kdebug.h>
|
||||
//#include <ktopwidget.h>
|
||||
#include <kmainwindow.h>
|
||||
|
||||
#include "widgets.h"
|
||||
|
||||
#include <klocale.h>
|
||||
#include <qdialog.h>
|
||||
#include <kcmdlineargs.h>
|
||||
#include <kaboutdata.h>
|
||||
|
||||
static KCmdLineOptions options[] =
|
||||
{
|
||||
{ "yesno <text>", I18N_NOOP("Question message box with yes/no buttons"), 0 },
|
||||
{ "yesnocancel <text>", I18N_NOOP("Question message box with yes/no/cancel buttons"), 0 },
|
||||
{ "warningyesno <text>", I18N_NOOP("Warning message box with yes/no buttons"), 0 },
|
||||
{ "warningcontinuecancel <text>", I18N_NOOP("Warning message box with continue/cancel buttons"), 0 },
|
||||
{ "warningyesnocancel <text>", I18N_NOOP("Warning message box with yes/no/cancel buttons"), 0 },
|
||||
{ "sorry <text>", I18N_NOOP("'Sorry' message box"), 0 },
|
||||
{ "error <text>", I18N_NOOP("'Error' message box"), 0 },
|
||||
{ "msgbox <text>", I18N_NOOP("Message Box dialog"), 0 },
|
||||
{ "inputbox <text> <init>", I18N_NOOP("Input Box dialog"), 0 },
|
||||
{ "password <text>", I18N_NOOP("Password dialog"), 0 },
|
||||
{ "textbox <file> [width] [height]", I18N_NOOP("Text Box dialog"), 0 },
|
||||
{ "menu <text> [tag item] [tag item] ...", I18N_NOOP("Menu dialog"), 0 },
|
||||
{ "checklist <text> [tag item status] ...", I18N_NOOP("Check List dialog"), 0 },
|
||||
{ "radiolist <text> [tag item status] ...", I18N_NOOP("Radio List dialog"), 0 },
|
||||
|
||||
// TODO gauge stuff, reading values from stdin
|
||||
|
||||
|
||||
{ "title <text>", I18N_NOOP("Dialog title"), 0 },
|
||||
{ "separate-output", I18N_NOOP("Return list items on separate lines (for checklist option)"), 0 },
|
||||
|
||||
{ "+[arg]", I18N_NOOP("Arguments - depending on main option"), 0 },
|
||||
KCmdLineLastOption
|
||||
};
|
||||
|
||||
// string to int, with default value
|
||||
int convert(const QString &val, int def)
|
||||
{
|
||||
bool ok;
|
||||
int result = val.toInt(&ok);
|
||||
if (!ok)
|
||||
result = def;
|
||||
return result;
|
||||
}
|
||||
|
||||
int directCommand(KCmdLineArgs *args)
|
||||
{
|
||||
QString title;
|
||||
bool separateOutput = FALSE;
|
||||
|
||||
// --title text
|
||||
if (args->isSet("title"))
|
||||
{
|
||||
title = QString::fromLocal8Bit(args->getOption("title"));
|
||||
cout << title.local8Bit().data() << endl;
|
||||
}
|
||||
|
||||
// --separate-output
|
||||
if (args->isSet("separate-output"))
|
||||
{
|
||||
separateOutput = TRUE;
|
||||
}
|
||||
|
||||
// --yesno and other message boxes
|
||||
KMessageBox::DialogType type = (KMessageBox::DialogType) 0;
|
||||
QCString option;
|
||||
if (args->isSet("yesno")) {
|
||||
option = "yesno";
|
||||
type = KMessageBox::QuestionYesNo;
|
||||
}
|
||||
else if (args->isSet("yesnocancel")) {
|
||||
option = "yesnocancel";
|
||||
type = KMessageBox::QuestionYesNoCancel;
|
||||
}
|
||||
else if (args->isSet("warningyesno")) {
|
||||
option = "warningyesno";
|
||||
type = KMessageBox::WarningYesNo;
|
||||
}
|
||||
else if (args->isSet("warningyesnocancel")) {
|
||||
option = "warningyesnocancel";
|
||||
type = KMessageBox::WarningYesNoCancel;
|
||||
}
|
||||
else if (args->isSet("sorry")) {
|
||||
option = "sorry";
|
||||
type = KMessageBox::Sorry;
|
||||
}
|
||||
else if (args->isSet("error")) {
|
||||
option = "error";
|
||||
type = KMessageBox::Error;
|
||||
}
|
||||
else if (args->isSet("msgbox")) {
|
||||
option = "msgbox";
|
||||
type = KMessageBox::Information;
|
||||
}
|
||||
|
||||
if ( !option.isEmpty() )
|
||||
{
|
||||
QString text = QString::fromLocal8Bit(args->getOption( option ));
|
||||
int pos;
|
||||
while ((pos = text.find( QString::fromLatin1("\\n") )) >= 0)
|
||||
{
|
||||
text.replace(pos, 2, QString::fromLatin1("\n"));
|
||||
}
|
||||
|
||||
int ret = KMessageBox::messageBox( 0, type, text, title /*, TODO configurable button texts*/ );
|
||||
// ret is 1 for Ok, 2 for Cancel, 3 for Yes, 4 for No and 5 for Continue.
|
||||
// We want to return 0 for ok, yes and continue, 1 for no and 2 for cancel
|
||||
return (ret == KMessageBox::Ok || ret == KMessageBox::Yes || ret == KMessageBox::Continue) ? 0
|
||||
: ( ret == KMessageBox::No ? 1 : 2 );
|
||||
}
|
||||
|
||||
// --inputbox text [init]
|
||||
if (args->isSet("inputbox"))
|
||||
{
|
||||
QString result;
|
||||
QString init;
|
||||
|
||||
if (args->count() > 0)
|
||||
init = args->arg(0);
|
||||
|
||||
bool retcode = Widgets::inputBox(0, title, QString::fromLocal8Bit(args->getOption("inputbox")), init, result);
|
||||
cout << result.local8Bit().data() << endl;
|
||||
return retcode ? 0 : 1;
|
||||
}
|
||||
|
||||
|
||||
// --password text
|
||||
if (args->isSet("password"))
|
||||
{
|
||||
QCString result;
|
||||
bool retcode = Widgets::passwordBox(0, title, QString::fromLocal8Bit(args->getOption("password")), result);
|
||||
cout << result.data() << endl;
|
||||
return retcode ? 0 : 1;
|
||||
}
|
||||
|
||||
// --textbox file [width] [height]
|
||||
if (args->isSet("textbox"))
|
||||
{
|
||||
int w = 0;
|
||||
int h = 0;
|
||||
|
||||
if (args->count() == 2) {
|
||||
w = QString::fromLocal8Bit(args->arg(0)).toInt();
|
||||
h = QString::fromLocal8Bit(args->arg(1)).toInt();
|
||||
}
|
||||
|
||||
return Widgets::textBox(0, w, h, title, QString::fromLocal8Bit(args->getOption("textbox")));
|
||||
}
|
||||
|
||||
// --menu text [tag item] [tag item] ...
|
||||
if (args->isSet("menu")) {
|
||||
QStringList list;
|
||||
if (args->count() >= 2) {
|
||||
for (int i = 0; i < args->count(); i++) {
|
||||
list.append(QString::fromLocal8Bit(args->arg(i)));
|
||||
}
|
||||
QString text = QString::fromLocal8Bit(args->getOption("menu"));
|
||||
QString result;
|
||||
bool retcode = Widgets::listBox(0, title, text, list, result);
|
||||
cout << result.local8Bit().data() << endl;
|
||||
return retcode ? 0 : 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// --checklist text [tag item status] [tag item status] ...
|
||||
if (args->isSet("checklist")) {
|
||||
QStringList list;
|
||||
if (args->count() >= 3) {
|
||||
for (int i = 0; i < args->count(); i++) {
|
||||
list.append(QString::fromLocal8Bit(args->arg(i)));
|
||||
}
|
||||
|
||||
QString text = QString::fromLocal8Bit(args->getOption("checklist"));
|
||||
QStringList result;
|
||||
|
||||
bool retcode = Widgets::checkList(0, title, text, list, separateOutput, result);
|
||||
|
||||
unsigned int i;
|
||||
for (i=0; i<result.count(); i++)
|
||||
cout << result[i].local8Bit().data() << endl;;
|
||||
exit( retcode ? 0 : 1 );
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// --radiolist text width height menuheight [tag item status]
|
||||
if (args->isSet("radiolist")) {
|
||||
QStringList list;
|
||||
if (args->count() >= 3) {
|
||||
for (int i = 0; i < args->count(); i++) {
|
||||
list.append(QString::fromLocal8Bit(args->arg(i)));
|
||||
}
|
||||
|
||||
QString text = QString::fromLocal8Bit(args->getOption("radiolist"));
|
||||
QString result;
|
||||
bool retcode = Widgets::radioBox(0, title, text, list, result);
|
||||
cout << result.local8Bit().data() << endl;
|
||||
exit( retcode ? 0 : 1 );
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
KCmdLineArgs::usage();
|
||||
return -2; // NOTREACHED
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
KAboutData aboutData( "kdialog", I18N_NOOP("KDialog"),
|
||||
"0.9", I18N_NOOP( "KDialog can be used to show nice dialog boxes from shell scripts" ), KAboutData::License_BSD,
|
||||
"(C) 2000, Nick Thompson");
|
||||
aboutData.addAuthor("David Faure", I18N_NOOP("Current maintainer"),"faure@kde.org");
|
||||
aboutData.addAuthor("Nick Thompson",0, 0/*"nickthompson@lucent.com" bounces*/);
|
||||
aboutData.addAuthor("Matthias Hölzer",0,"hoelzer@kde.org");
|
||||
aboutData.addAuthor("David Gümbel",0,"david.guembel@gmx.net");
|
||||
|
||||
KCmdLineArgs::init(argc, argv, &aboutData);
|
||||
KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.
|
||||
|
||||
KApplication app;
|
||||
|
||||
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
|
||||
|
||||
// execute direct kdialog command
|
||||
return directCommand(args);
|
||||
}
|
49
kdialog/klistboxdialog.cpp
Normal file
49
kdialog/klistboxdialog.cpp
Normal file
|
@ -0,0 +1,49 @@
|
|||
//
|
||||
// Copyright (C) 1998 Matthias Hoelzer
|
||||
// email: hoelzer@physik.uni-wuerzburg.de
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the7 implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#include <qlabel.h>
|
||||
#include <qlistbox.h>
|
||||
#include <qvbox.h>
|
||||
|
||||
#include "klistboxdialog.h"
|
||||
#include "klistboxdialog.moc"
|
||||
|
||||
#include "klocale.h"
|
||||
|
||||
KListBoxDialog::KListBoxDialog(QString text, QWidget *parent)
|
||||
: KDialogBase( parent, 0, true, QString::null, Ok|Cancel, Ok, true )
|
||||
{
|
||||
QVBox *page = makeVBoxMainWidget();
|
||||
|
||||
label = new QLabel(text, page);
|
||||
label->setAlignment(AlignCenter);
|
||||
|
||||
table = new QListBox(page);
|
||||
}
|
||||
|
||||
void KListBoxDialog::insertItem(const QString& item)
|
||||
{
|
||||
table->insertItem(item);
|
||||
table->setCurrentItem(0);
|
||||
}
|
||||
|
||||
int KListBoxDialog::currentItem()
|
||||
{
|
||||
return table->currentItem();
|
||||
}
|
48
kdialog/klistboxdialog.h
Normal file
48
kdialog/klistboxdialog.h
Normal file
|
@ -0,0 +1,48 @@
|
|||
//
|
||||
// Copyright (C) 1998 Matthias Hoelzer
|
||||
// email: hoelzer@physik.uni-wuerzburg.de
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the7 implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
|
||||
#ifndef _KLISTBOXDIALOG_H_
|
||||
#define _KLISTBOXDIALOG_H_
|
||||
|
||||
#include <kdialogbase.h>
|
||||
|
||||
class KListBoxDialog : public KDialogBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
KListBoxDialog(QString text, QWidget *parent=0);
|
||||
~KListBoxDialog() {};
|
||||
|
||||
QListBox &getTable() { return *table; };
|
||||
|
||||
void insertItem( const QString& text );
|
||||
int currentItem();
|
||||
|
||||
protected:
|
||||
|
||||
QListBox *table;
|
||||
QLabel *label;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
30
kdialog/test
Executable file
30
kdialog/test
Executable file
|
@ -0,0 +1,30 @@
|
|||
echo "yesno box:"
|
||||
kdialog --title "This is a yesno box" --yesno "Choose: yes or no"
|
||||
if [ $? = 0 ]; then
|
||||
echo " your choice was: yes"
|
||||
else
|
||||
echo " your choice was: no"
|
||||
fi
|
||||
|
||||
echo "message box:"
|
||||
kdialog --title "This is a message" --msgbox "Well, this is it:\nthe message"
|
||||
|
||||
echo "input box:"
|
||||
kdialog --title "This is a input box" --inputbox "What is your name" "Joe User"
|
||||
if [ $? = 0 ]; then
|
||||
echo " you accepted"
|
||||
else
|
||||
echo " you did not accept"
|
||||
fi
|
||||
|
||||
echo "text box:"
|
||||
kdialog --title "This is a text box" --textbox widgets.h 400 300
|
||||
|
||||
echo "menu:"
|
||||
kdialog --title "This is a menu" --menu "Choose one of these" a English b German c French d Spanish
|
||||
|
||||
echo "checklist:"
|
||||
kdialog --title "This is a checklist" --checklist "Choose some of these" a English on b German off c French off d Spanish on
|
||||
|
||||
echo "radiolist:"
|
||||
kdialog --title "This is a radiolist" --radiolist "Choose one of these" a English off b German off c French on d Spanish off
|
167
kdialog/widgets.cpp
Normal file
167
kdialog/widgets.cpp
Normal file
|
@ -0,0 +1,167 @@
|
|||
//
|
||||
// Copyright (C) 1998 Matthias Hoelzer <hoelzer@kde.org>
|
||||
// Copyright (C) 2002 David Faure <faure@kde.org>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the7 implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
|
||||
#include <klocale.h>
|
||||
#include <kmessagebox.h>
|
||||
|
||||
#include "widgets.h"
|
||||
#include "klistboxdialog.h"
|
||||
#include <klineeditdlg.h>
|
||||
#include <kpassdlg.h>
|
||||
#include <kdebug.h>
|
||||
|
||||
#include <qtextedit.h>
|
||||
#include <qvbox.h>
|
||||
#include <qfile.h>
|
||||
|
||||
bool Widgets::inputBox(QWidget *parent, const QString& title, const QString& text, const QString& init, QString &result)
|
||||
{
|
||||
KLineEditDlg dlg( text, init, parent );
|
||||
|
||||
dlg.setCaption(title);
|
||||
bool retcode = (dlg.exec() == QDialog::Accepted);
|
||||
result = dlg.text();
|
||||
return retcode;
|
||||
}
|
||||
|
||||
bool Widgets::passwordBox(QWidget *parent, const QString& title, const QString& text, QCString &result)
|
||||
{
|
||||
KPasswordDialog dlg( KPasswordDialog::Password, false, 0, parent );
|
||||
|
||||
dlg.setCaption(title);
|
||||
dlg.setPrompt(text);
|
||||
bool retcode = (dlg.exec() == QDialog::Accepted);
|
||||
result = dlg.password();
|
||||
return retcode;
|
||||
}
|
||||
|
||||
int Widgets::textBox(QWidget *parent, int width, int height, const QString& title, const QString& file)
|
||||
{
|
||||
// KTextBox dlg(parent, 0, TRUE, width, height, file);
|
||||
KDialogBase dlg( parent, 0, true, QString::null, KDialogBase::Ok, KDialogBase::Ok );
|
||||
dlg.setCaption(title);
|
||||
QTextEdit *edit = new QTextEdit( dlg.makeVBoxMainWidget() );
|
||||
edit->setReadOnly(TRUE);
|
||||
|
||||
|
||||
QFile f(file);
|
||||
if (!f.open(IO_ReadOnly))
|
||||
{
|
||||
kdError() << i18n("kdialog: could not open file ") << file << endl;
|
||||
return -1;
|
||||
}
|
||||
QTextStream s(&f);
|
||||
|
||||
while (!s.eof())
|
||||
edit->append(s.readLine());
|
||||
|
||||
f.close();
|
||||
|
||||
if ( width > 0 && height > 0 )
|
||||
dlg.setInitialSize( QSize( width, height ) );
|
||||
|
||||
dlg.exec();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool Widgets::listBox(QWidget *parent, const QString& title, const QString& text, const QStringList& args, QString &result)
|
||||
{
|
||||
KListBoxDialog box(text,parent);
|
||||
|
||||
box.setCaption(title);
|
||||
|
||||
for (unsigned int i = 0; i+1<args.count(); i += 2) {
|
||||
box.insertItem(args[i+1]);
|
||||
}
|
||||
|
||||
bool retcode = (box.exec() == QDialog::Accepted);
|
||||
result = args[ box.currentItem()*2 ];
|
||||
return retcode;
|
||||
}
|
||||
|
||||
|
||||
bool Widgets::checkList(QWidget *parent, const QString& title, const QString& text, const QStringList& args, bool separateOutput, QStringList &result)
|
||||
{
|
||||
QStringList entries, tags;
|
||||
QString rs;
|
||||
|
||||
result.clear();
|
||||
|
||||
KListBoxDialog box(text,parent);
|
||||
|
||||
QListBox &table = box.getTable();
|
||||
|
||||
box.setCaption(title);
|
||||
|
||||
for (unsigned int i=0; i+2<args.count(); i += 3) {
|
||||
tags.append(args[i]);
|
||||
entries.append(args[i+1]);
|
||||
}
|
||||
|
||||
table.insertStringList(entries);
|
||||
table.setMultiSelection(TRUE);
|
||||
table.setCurrentItem(0); // This is to circumvent a Qt bug
|
||||
|
||||
for (unsigned int i=0; i+2<args.count(); i += 3) {
|
||||
table.setSelected( i/3, args[i+2] == QString::fromLatin1("on") );
|
||||
}
|
||||
|
||||
bool retcode = (box.exec() == QDialog::Accepted);
|
||||
|
||||
if (separateOutput) {
|
||||
for (unsigned int i=0; i<table.count(); i++)
|
||||
if (table.isSelected(i))
|
||||
result.append(tags[i]);
|
||||
} else {
|
||||
for (unsigned int i=0; i<table.count(); i++)
|
||||
if (table.isSelected(i))
|
||||
rs += QString::fromLatin1("\"") + tags[i] + QString::fromLatin1("\" ");
|
||||
result.append(rs);
|
||||
}
|
||||
return retcode;
|
||||
}
|
||||
|
||||
|
||||
bool Widgets::radioBox(QWidget *parent, const QString& title, const QString& text, const QStringList& args, QString &result)
|
||||
{
|
||||
QStringList entries, tags;
|
||||
|
||||
KListBoxDialog box(text,parent);
|
||||
|
||||
QListBox &table = box.getTable();
|
||||
|
||||
box.setCaption(title);
|
||||
|
||||
for (unsigned int i=0; i+2<args.count(); i += 3) {
|
||||
tags.append(args[i]);
|
||||
entries.append(args[i+1]);
|
||||
}
|
||||
|
||||
table.insertStringList(entries);
|
||||
|
||||
for (unsigned int i=0; i+2<args.count(); i += 3) {
|
||||
table.setSelected( i/3, args[i+2] == QString::fromLatin1("on") );
|
||||
}
|
||||
|
||||
bool retcode = (box.exec() == QDialog::Accepted);
|
||||
result = tags[ table.currentItem() ];
|
||||
return retcode;
|
||||
}
|
37
kdialog/widgets.h
Normal file
37
kdialog/widgets.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
//
|
||||
// Copyright (C) 1998 Matthias Hoelzer <hoelzer@kde.org>
|
||||
// Copyright (C) 2002 David Faure <faure@kde.org>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the7 implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
|
||||
#ifndef _WIDGETS_H_
|
||||
#define _WIDGETS_H_
|
||||
|
||||
#include <qwidget.h>
|
||||
#include <qstring.h>
|
||||
|
||||
namespace Widgets
|
||||
{
|
||||
bool inputBox(QWidget *parent, const QString& title, const QString& text, const QString& init, QString &result);
|
||||
bool passwordBox(QWidget *parent, const QString& title, const QString& text, QCString &result);
|
||||
int textBox(QWidget *parent, int width, int height, const QString& title, const QString& file);
|
||||
bool listBox(QWidget *parent, const QString& title, const QString& text, const QStringList& args, QString &result);
|
||||
bool checkList(QWidget *parent, const QString& title, const QString& text, const QStringList& args, bool separateOutput, QStringList &result);
|
||||
bool radioBox(QWidget *parent, const QString& title, const QString& text, const QStringList& args, QString &result);
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue