diff --git a/src/kdialog.cpp b/src/kdialog.cpp --- a/src/kdialog.cpp +++ b/src/kdialog.cpp @@ -296,6 +296,8 @@ parser.addOption(QCommandLineOption(QStringList() << QLatin1String("password"), i18n("Password dialog"), QLatin1String("text"))); parser.addOption(QCommandLineOption(QStringList() << QLatin1String("newpassword"), i18n("New Password dialog"), QLatin1String("text"))); parser.addOption(QCommandLineOption(QStringList() << QLatin1String("textbox"), i18n("Text Box dialog"), QLatin1String("file"))); + parser.addOption(QCommandLineOption(QStringList() << QLatin1String("imgbox"), i18n("Image Box dialog"), QLatin1String("file"))); + parser.addOption(QCommandLineOption(QStringList() << QLatin1String("imginputbox"), i18n("Image Box Input dialog"), QLatin1String("file> + if (parser.isSet(QStringLiteral("imgbox"))) + { + return Widgets::imgBox(nullptr, title, parser.value(QStringLiteral("imgbox"))); + } + + // --imginputbox [text] + if (parser.isSet(QStringLiteral("imginputbox"))) + { + QString result; + QString text; + + if (args.count() > 0) { + text = args.at(0); + } + + const bool retcode = Widgets::imgInputBox(nullptr, title, parser.value(QStringLiteral("imginputbox")), text, result); + cout << result.toLocal8Bit().data() << endl; + return retcode ? 0 : 1; + } + // --textinputbox file [width] [height] if (parser.isSet(QStringLiteral("textinputbox"))) { diff --git a/src/widgets.h b/src/widgets.h --- a/src/widgets.h +++ b/src/widgets.h @@ -31,6 +31,8 @@ bool passwordBox(QWidget *parent, const QString& title, const QString& text, QString &result); bool newPasswordBox(QWidget *parent, const QString& title, const QString& text, QString &result); int textBox(QWidget *parent, int width, int height, const QString& title, const QString& file); + int imgBox(QWidget *parent, const QString& title, const QString& file); + int imgInputBox(QWidget *parent, const QString& title, const QString& file, const QString& init, QString &result); int textInputBox(QWidget *parent, int width, int height, const QString& title, const QString& text, const QString& init, QString &result); bool listBox(QWidget *parent, const QString& title, const QString& text, const QStringList& args, const QString &defaultEntry, QString &result); bool checkList(QWidget *parent, const QString& title, const QString& text, const QStringList& args, bool separateOutput, QStringList &result); diff --git a/src/widgets.cpp b/src/widgets.cpp --- a/src/widgets.cpp +++ b/src/widgets.cpp @@ -33,6 +33,7 @@ #include #include #include +#include // KDE #include @@ -130,6 +131,67 @@ return (dlg.exec() == QDialog::Accepted) ? 0 : 1; } +int Widgets::imgBox(QWidget *parent, const QString& title, const QString& file) +{ + QDialog dlg(parent); + dlg.setWindowTitle(title); + + QVBoxLayout *mainLayout = new QVBoxLayout(&dlg); + + QLabel *label = new QLabel(&dlg); + mainLayout->addWidget(label); + + addButtonBox(dlg, QDialogButtonBox::Ok); + + QFile f(file); + if (!f.open(QIODevice::ReadOnly)) { + qWarning() << i18n("kdialog: could not open file %1", file); + return -1; + } + + label->setPixmap(QPixmap(file)); + return (dlg.exec() == QDialog::Accepted) ? 0 : 1; +} + +int Widgets::imgInputBox(QWidget *parent, const QString& title, const QString& file, const QString& text, QString &result) +{ + QFile f(file); + if (!f.open(QIODevice::ReadOnly)) { + qWarning() << i18n("kdialog: could not open file %1", file); + return -1; + } + + QDialog dlg(parent); + dlg.setWindowTitle(title); + + QVBoxLayout *mainLayout = new QVBoxLayout(&dlg); + + if (!text.isEmpty()) { + QLabel *head = new QLabel(&dlg); + head->setText(text); + mainLayout->addWidget(head); + } + + QLabel *label = new QLabel(&dlg); + mainLayout->addWidget(label); + + label->setPixmap(QPixmap(file)); + + QLineEdit *edit = new QLineEdit(&dlg); + mainLayout->addWidget(edit); + edit->setReadOnly(false); + edit->setFocus(); + + addButtonBox(dlg, QDialogButtonBox::Ok); + + bool retcode = (dlg.exec() == QDialog::Accepted); + + if (retcode) + result = edit->text(); + + return retcode; +} + int Widgets::textInputBox(QWidget *parent, int width, int height, const QString& title, const QString& text, const QString& init, QString &result) { QDialog dlg(parent);