Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qarma for openSUSE:Factory checked 
in at 2026-04-10 17:53:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qarma (Old)
 and      /work/SRC/openSUSE:Factory/.qarma.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qarma"

Fri Apr 10 17:53:30 2026 rev:2 rq:1345716 version:1.1.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/qarma/qarma.changes      2025-01-14 
16:23:26.843993869 +0100
+++ /work/SRC/openSUSE:Factory/.qarma.new.21863/qarma.changes   2026-04-10 
18:02:53.350303361 +0200
@@ -1,0 +2,9 @@
+Thu Apr  9 23:52:03 UTC 2026 - Shawn Dunn <[email protected]>
+
+- Update to 1.1.1
+  * handle print column default value for lists
+    (gh#luebking/qarma#66)
+  * Mention --help-font-selection in --help (gh#luebking/qarma#53)
+  * Make DBus optional (gh#luebking/qarma#33)
+
+-------------------------------------------------------------------

Old:
----
  qarma-1.0.0.tar.gz

New:
----
  qarma-1.1.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ qarma.spec ++++++
--- /var/tmp/diff_new_pack.FHIE56/_old  2026-04-10 18:02:54.062332730 +0200
+++ /var/tmp/diff_new_pack.FHIE56/_new  2026-04-10 18:02:54.066332895 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           qarma
-Version:        1.0.0
+Version:        1.1.1
 Release:        0
 Summary:        Tool for creating Qt dialog boxes
 License:        GPL-2.0-Only

++++++ qarma-1.0.0.tar.gz -> qarma-1.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qarma-1.0.0/Qarma.cpp new/qarma-1.1.1/Qarma.cpp
--- old/qarma-1.0.0/Qarma.cpp   2024-04-19 14:32:24.000000000 +0200
+++ new/qarma-1.1.1/Qarma.cpp   2026-04-06 17:21:21.000000000 +0200
@@ -24,16 +24,20 @@
 #include <QCheckBox>
 #include <QColorDialog>
 #include <QComboBox>
+#include <QCryptographicHash>
 #include <QDate>
+#ifndef QARMA_NO_DBUS
 #include <QDBusConnection>
 #include <QDBusConnectionInterface>
 #include <QDBusInterface>
+#endif
 #include <QDialogButtonBox>
 #include <QEvent>
 #include <QFileDialog>
 #include <QFontDialog>
 #include <QFormLayout>
 #include <QIcon>
+#include <QImageReader>
 #include <QInputDialog>
 #include <QLabel>
 #include <QLocale>
@@ -42,12 +46,15 @@
 #include <QProcess>
 #include <QProgressDialog>
 #include <QPropertyAnimation>
+#include <QProxyStyle>
 #include <QPushButton>
 #include <QScreen>
 #include <QScrollBar>
 #include <QSettings>
 #include <QSlider>
 #include <QSocketNotifier>
+#include <QSplitter>
+#include <QStandardPaths>
 #include <QStringBuilder>
 #include <QStringList>
 #include <QTextBrowser>
@@ -70,6 +77,10 @@
 #include <unistd.h>
 #endif
 
+#define QARMA_VERSION "1.1.0"
+#define ZENITY_VERSION "4.2.1"
+
+
 #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
     #define SKIP_EMPTY Qt::SkipEmptyParts
 #else
@@ -180,6 +191,7 @@
 , m_type(Invalid)
 {
     m_pos = QPoint(INT_MAX, INT_MAX); // invalid
+    m_size = QSize(0,0); // so we can reasonably use isNull …
     QStringList argList = QCoreApplication::arguments(); // arguments() is slow
     const QString binary = argList.at(0);
     m_zenity = binary.endsWith("zenity");
@@ -271,6 +283,9 @@
         } else if (arg == "--dzen") {
             m_type = Dzen;
             error = showDzen(args);
+        } else if (arg == "--version") {
+            printf("%s\n", m_zenity ? ZENITY_VERSION : QARMA_VERSION);
+            exit(0);
         }
         if (error != 1) {
             break;
@@ -365,12 +380,18 @@
             m_dialog->setWindowIcon(QIcon(m_icon));
         QDialogButtonBox *box = m_dialog->findChild<QDialogButtonBox*>();
         if (box && !m_ok.isNull()) {
-            if (QPushButton *btn = box->button(QDialogButtonBox::Ok))
+            if (QPushButton *btn = box->button(QDialogButtonBox::Ok)) {
                 btn->setText(m_ok);
+                if (m_ok.isEmpty())
+                    btn->hide();
+            }
         }
         if (box && !m_cancel.isNull()) {
-            if (QPushButton *btn = box->button(QDialogButtonBox::Cancel))
+            if (QPushButton *btn = box->button(QDialogButtonBox::Cancel)) {
                 btn->setText(m_cancel);
+                if (m_cancel.isEmpty())
+                    btn->hide();
+            }
         }
         if (m_parentWindow) {
 #ifdef WS_X11
@@ -538,16 +559,34 @@
             QTreeWidget *tw = sender()->findChild<QTreeWidget*>();
             QStringList result;
             if (tw) {
+                QVariant v = sender()->property("qarma_print_column");
+                int column = 1;
+                if (v.isValid()) {
+                    column = v.toString() == "ALL" ? -1 : v.toInt();
+                    if (column > tw->columnCount())
+                        column = -1;
+                    else if (column > 0)
+                        --column;
+                }
                 bool done(false);
+                auto text = [=](const QTreeWidgetItem *twi, int col, int 
offset) {
+                    if (col > -1)
+                        return (col < offset) ? QString() : twi->text(col);
+                    QString s;
+                    for (int i = offset; i < tw->columnCount()-1; ++i)
+                        s += twi->text(i) + '\t';
+                    s += twi->text(tw->columnCount()-1);
+                    return s;
+                };
                 foreach (const QTreeWidgetItem *twi, tw->selectedItems()) {
                     done = true;
-                    result << twi->text(0);
+                    result << text(twi, column, 0);
                 }
                 if (!done) { // checkable
                     for (int i = 0; i < tw->topLevelItemCount(); ++i) {
                         const QTreeWidgetItem *twi = tw->topLevelItem(i);
                         if (twi->checkState(0) == Qt::Checked)
-                            result << twi->text(1);
+                            result << text(twi, column, 1);
                     }
                 }
             }
@@ -765,20 +804,154 @@
                                                 args.at(i) != "--warning" && 
args.at(i) != "--error")
             qDebug() << "unspecific argument" << args.at(i);
     }
-    if (QLabel *l = dlg->findChild<QLabel*>("qt_msgbox_label")) {
-        l->setWordWrap(wrap);
-        l->setTextFormat(html ? Qt::RichText : Qt::PlainText);
+    QLabel *msgLabel = dlg->findChild<QLabel*>("qt_msgbox_label");
+    if (msgLabel) {
+        // this is pointless because QMessageBox fucks around with that when 
applying its size constraints, see below
+//        msgLabel->setWordWrap(wrap);
+        msgLabel->setTextFormat(html ? Qt::RichText : Qt::PlainText);
         if (m_selectableLabel)
-            
l->setTextInteractionFlags(l->textInteractionFlags()|Qt::TextSelectableByMouse);
+            
msgLabel->setTextInteractionFlags(msgLabel->textInteractionFlags()|Qt::TextSelectableByMouse);
     }
     if (dlg->iconPixmap().isNull())
         dlg->setIcon(type == 'w' ? QMessageBox::Warning :
                    (type == 'q' ? QMessageBox::Question :
                    (type == 'e' ? QMessageBox::Critical : 
QMessageBox::Information)));
     SHOW_DIALOG
+    // **** grrrrrrrr *****
+    // https://github.com/luebking/qarma/issues/62
+    // https://runebook.dev/en/docs/qt/qmessagebox/resizeEvent
+    // the suggested spacer however doesn't work, but Qt allows us to fix the 
size after the show event
+    //
+    // still a lousy hack which might run into windowmanager related problems
+    if (!(wrap && m_size.isNull()) && msgLabel) {
+        if (m_size.width() > 0 && dlg->width() <= 500) {
+            // QMessageBox unconditionally disables wrapping for dialogs < 
500px width, so don't try to shrink those
+            m_size.setWidth(qMax(m_size.width(), dlg->width()));
+        }
+        // figure the dimensions of the dialog if the label wasn't there
+        QLabel *icnLabel = dlg->findChild<QLabel*>("qt_msgboxex_icon_label");
+        QSize delta = msgLabel->size();
+        // we need to account for the icon left of the label - if that's 
taller than the label
+        // it dictates the labels effective height
+        if (icnLabel)
+            delta.setHeight(qMax(delta.height(), icnLabel->height()));
+        // delta is now the virtual label size, subtract if from the dialog
+        delta = dlg->size() - delta;
+        QRect r;
+        QMargins marge = msgLabel->contentsMargins() + QMargins(4,4,4,4);
+        if (!wrap) {
+            r = msgLabel->fontMetrics().boundingRect(msgLabel->text());
+        } else if (m_size.width() < 1 || m_size.height() < 1) {
+            // likewise we can apply unilateral --width/--height
+            r = QRect(0,0,QWIDGETSIZE_MAX,QWIDGETSIZE_MAX);
+            if (m_size.width() > 0)
+                r.setWidth(m_size.width() - delta.width());
+            r = msgLabel->fontMetrics().boundingRect(r, Qt::TextWordWrap, 
msgLabel->text());
+            if (m_size.height() > 0) {
+                // for only fixed height, calculate the line count and 
overguess the necessary columns
+                r.setHeight(m_size.height() - delta.height());
+                int lines = qMax(1, 
r.height()/msgLabel->fontMetrics().lineSpacing());
+                r.setWidth(3*r.width()/(2*lines)); // generous 50% overhead to 
account for word wrapping, better the dialog is a bit wider than missing text
+            }
+        } else { // or completely fixed size
+            r.setSize(m_size);
+            delta = QSize(0,0);
+            marge = QMargins();
+        }
+        m_size = QSize(0,0); // reset so the global size adjustment doesn't 
apply
+        r.setWidth(r.width() + marge.left()+marge.right());
+        r.setHeight(r.height() + marge.top()+marge.bottom());
+        // if there's an icon, our new label, regardless of the widths 
sufficient for one unwrapped line, gets at least its height
+        if (icnLabel)
+            r.setHeight(qMax(r.height(), icnLabel->height()));
+        dlg->setFixedSize(delta + r.size());
+        // here's the catch - the WM migth think the pre-showing size is 
mandatory
+        // (probably race condition between window mapping and the size fix 
and the WM handling client messages)
+        // so we briefly wait (100ms is a complete random time) and set the 
current size again to get the WM up to speed
+        for (int ms = 2; ms < 150; ms*=2) {
+            QTimer::singleShot(ms, this, [=]() {dlg->setFixedSize(delta + 
r.size());});
+        }
+    }
     return 0;
 }
 
+QPixmap thumbnail(const QString &path, uint size)
+{
+    size = qMin(size, 1024u);
+    QImage thumb;
+    QImageReader thumbReader;
+    thumbReader.setFileName(path);
+    if (!thumbReader.canRead())
+        return QPixmap();
+
+    thumbReader.setQuality(50);
+    QSize sz = thumbReader.size();
+    QSize origSz = sz;
+    bool skipThumbnail = sz.width()*sz.height() < 1920*1200+1;
+
+    if (skipThumbnail) {
+        sz.scale(QSize(size,size), Qt::KeepAspectRatio);
+        thumbReader.setScaledSize(sz);
+    } else {
+        QFileInfo info(path);
+        QString canonicalPath = info.canonicalFilePath();
+        if (canonicalPath.isEmpty())
+            canonicalPath = info.absoluteFilePath();
+        QUrl url = QUrl::fromLocalFile(canonicalPath);
+        QCryptographicHash md5(QCryptographicHash::Md5);
+        
md5.addData(QFile::encodeName(url.adjusted(QUrl::RemovePassword).url()));
+
+        QString folder;
+        uint tSize;
+        if (size <= 128) {
+            tSize = 128; folder = "normal/";
+        } else if (size <= 256) {
+            tSize = 256; folder = "large/";
+        } else if (size <= 512) {
+            tSize = 512; folder = "x-large/";
+        } else {
+            tSize = 1024; folder = "xx-large/";
+        }
+        Q_UNUSED(tSize);
+
+        const QString thumbPath = 
QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) +
+                                                                    
QLatin1String("/thumbnails/") + folder +
+                                                                    
QString::fromLatin1(md5.result().toHex()) + QStringLiteral(".png");
+        QFileInfo tInfo(thumbPath);
+        if (tInfo.exists() && info.metadataChangeTime() <= 
tInfo.lastModified() && info.lastModified() <= tInfo.lastModified()) {
+            thumbReader.setFileName(thumbPath);
+            sz.scale(QSize(size,size), Qt::KeepAspectRatio);
+            thumbReader.setScaledSize(sz);
+            if (thumbReader.read(&thumb)) {
+                int w = thumb.text("Thumb::Image::Width").toInt();
+                int h = thumb.text("Thumb::Image::Height").toInt();
+                if (origSz == QSize(w, h))
+                    return QPixmap::fromImage(thumb);
+            }
+        }
+        thumbReader.setFileName(path);
+//        sz.scale(QSize(tSize,tSize), Qt::KeepAspectRatio); // in case we'll 
ever store the thumbnail
+        sz.scale(QSize(size,size), Qt::KeepAspectRatio);
+        thumbReader.setScaledSize(sz);
+    }
+    if (!thumbReader.read(&thumb))
+        return QPixmap();
+//    if (skipThumbnail)
+        return QPixmap::fromImage(thumb);
+}
+
+class DblClckStyle : public QProxyStyle
+{
+  public:
+    int styleHint(StyleHint hint, const QStyleOption *option = nullptr,
+                  const QWidget *widget = nullptr, QStyleHintReturn 
*returnData = nullptr) const override
+    {
+        if (hint == QStyle::SH_ItemView_ActivateItemOnSingleClick)
+            return false;
+        return QProxyStyle::styleHint(hint, option, widget, returnData);
+    }
+};
+
 char Qarma::showFileSelection(const QStringList &args)
 {
     QFileDialog *dlg = new QFileDialog;
@@ -821,6 +994,17 @@
             if (idx > -1)
                 mimeFilter = mimeFilter.left(idx).trimmed() + " (" + 
mimeFilter.mid(idx+1).trimmed() + ")";
             mimeFilters << mimeFilter;
+        } else if (args.at(i) == "--preview-images") {
+            READ_INT(size, UInt, "--preview-images must be followed by a 
positive number for the thumbnail size");
+            dlg->setOption(QFileDialog::DontUseNativeDialog);
+            if (QSplitter *splitter = dlg->findChild<QSplitter*>()) {
+                qApp->setStyle(new DblClckStyle);
+                QLabel *preview = new QLabel(splitter);
+                splitter->addWidget(preview);
+                connect(dlg, &QFileDialog::currentChanged, [=](const QString 
&path) {
+                    preview->setPixmap(thumbnail(path, size));
+                });
+            }
         }
         else { WARN_UNKNOWN_ARG("--file-selection") }
     }
@@ -863,7 +1047,7 @@
             flags |= Qt::ItemIsEditable;
         if (checkable) {
             flags |= Qt::ItemIsUserCheckable;
-            item->setCheckState(0, Qt::Unchecked);
+            item->setCheckState(0, QVariant(item->text(0)).toBool() ? 
Qt::Checked : Qt::Unchecked);
         }
         if (icons)
             item->setIcon(0, QPixmap(item->text(0)));
@@ -913,7 +1097,7 @@
             if (ok)
                 hiddenCols << v-1;
         } else if (args.at(i) == "--print-column") {
-            qWarning("TODO: --print-column");
+            dlg->setProperty("qarma_print_column", NEXT_ARG);
         } else if (args.at(i) == "--checklist") {
             tw->setSelectionMode(QAbstractItemView::NoSelection);
             tw->setAllColumnsShowFocus(false);
@@ -943,8 +1127,10 @@
     if (values.isEmpty())
         listenToStdIn();
 
-    if (checkable)
+    if (checkable) {
+        tw->setCurrentItem(nullptr);
         editable = false;
+    }
 
     tw->setProperty("qarma_list_flags", int(editable | checkable << 1 | icons 
<< 2));
 
@@ -969,6 +1155,7 @@
 
 void Qarma::notify(const QString message, bool noClose)
 {
+#ifndef QARMA_NO_DBUS
     if 
(QDBusConnection::sessionBus().interface()->isServiceRegistered("org.freedesktop.Notifications"))
 {
         QDBusInterface notifications("org.freedesktop.Notifications", 
"/org/freedesktop/Notifications", "org.freedesktop.Notifications");
         const QString summary = (message.length() < 32) ? message : 
message.left(25) + "...";
@@ -1000,6 +1187,7 @@
     SHOW_DIALOG
     dlg->adjustSize();
     dlg->move(QGuiApplication::screens().at(0)->availableGeometry().topRight() 
- QPoint(dlg->width() + 20, -20));
+#endif
 }
 
 char Qarma::showNotification(const QStringList &args)
@@ -1052,12 +1240,14 @@
     if (notifier)
         notifier->setEnabled(false);
 
-    QByteArray ba = m_type == TextInfo ? gs_stdin->readAll() : 
gs_stdin->readLine();
+    QByteArray ba = (m_type == TextInfo || m_type == List) ? 
gs_stdin->readAll() : gs_stdin->readLine();
     if (ba.isEmpty() && notifier) {
         gs_stdin->close();
 //         gs_stdin->deleteLater(); // hello segfault...
 //         gs_stdin = NULL;
         notifier->deleteLater();
+        if (m_type == Progress)
+            finishProgress();
         return;
     }
 
@@ -1167,31 +1357,30 @@
             addItems(tw, input, twflags & 1, twflags & 1<<1, twflags & 1<<2);
         }
     } else if (m_type == Dzen) {
-        while (true) {
-            ba = gs_stdin->read(8192);
-            if (ba.isEmpty())
-                break;
-            newText = QString::fromLocal8Bit(ba);
-            if (newText.endsWith('\n'))
-                newText.resize(newText.length()-1);
-            input.append(newText.split('\n'));
-            if (ba.size() < 8192) /** @todo: if the input block is exactly 
8kB, we're gonna wait for the next one here */
-                break;
-        }
-//        if (input.isEmpty())
-//            return;
         QLabel *header = m_dialog->findChild<QLabel*>("header");
         QLabel *body = m_dialog->findChild<QLabel*>("body");
         if (body) {
-            if (header->text().isEmpty() || 
m_dialog->property("unified").toBool())
+            const int lines = body->property("lines").toInt();
+            const bool unified = m_dialog->property("unified").toBool();
+            for (int i = unified ? 0 : 1; i < lines; ++i)
+                input.append(QString::fromLocal8Bit(gs_stdin->readLine()));
+//            qDebug() << input;
+            if (header->text().isEmpty() || unified) {
+//                qDebug() << header->text().isEmpty() << 
m_dialog->property("unified").toBool() << "set header text";
                 header->setText(input.takeFirst());
+            }
             if (!input.isEmpty()) {
+//                qDebug() << "have more input";
                 QStringList oldBody = body->text().split('\n');
+//                qDebug() << oldBody;
                 oldBody.append(input);
-                const int idx = qMax(0, oldBody.count() - 
body->property("lines").toInt());
+//                qDebug() << "=>" << oldBody;
+                const int idx = qMax(0, oldBody.count() - lines);
+//                qDebug() << "==>" << oldBody.mid(idx);
                 body->setText(oldBody.mid(idx).join('\n'));
             }
         } else {
+//            qDebug() << "just set header";
             header->setText(input.constLast());
         }
     }
@@ -1520,9 +1709,21 @@
     QStringList lastListValues, lastListColumns, lastComboValues;
     bool lastListHeader(false);
     QComboBox *lastCombo = NULL;
+    QLineEdit *lastEntry = nullptr;
+    QString lastEntryValue;
     for (int i = 0; i < args.count(); ++i) {
         if (args.at(i) == "--add-entry") {
-            fl->addRow(NEXT_ARG, new QLineEdit(dlg));
+            fl->addRow(NEXT_ARG, lastEntry = new QLineEdit(dlg));
+            lastEntry->setText(lastEntryValue);
+            lastEntry->setPlaceholderText(lastEntryValue);
+        } else if (args.at(i) == "--entry-value") {
+            lastEntryValue = NEXT_ARG;
+            if (lastEntry) {
+                lastEntry->setText(lastEntryValue);
+                lastEntry->setPlaceholderText(lastEntryValue);
+                lastEntryValue.clear();
+                lastEntry = nullptr;
+            }
         } else if (args.at(i) == "--add-password") {
             QLineEdit *le;
             fl->addRow(NEXT_ARG, le = new QLineEdit(dlg));
@@ -1617,8 +1818,10 @@
     vl->addWidget(header = new QLabel(dlg));
     header->setObjectName("header");
     header->setAlignment(Qt::AlignCenter);
+    header->setMargin(6);
     vl->addWidget(body = new QLabel(dlg));
     body->setObjectName("body");
+    body->setMargin(8);
    
     
     QPalette pal = dlg->palette();
@@ -1642,13 +1845,6 @@
                 pal.setColor(cg, QPalette::Base, c);
                 pal.setColor(cg, QPalette::Window, c);
             }
-        } else if (args.at(i) == "-bg") {
-            QColor c(NEXT_ARG);
-            for (int i = 0; i < 3; ++i) { // Disabled, Active, Inactive, Normal
-                QPalette::ColorGroup cg = (QPalette::ColorGroup)i;
-                pal.setColor(cg, QPalette::Base, c);
-                pal.setColor(cg, QPalette::Window, c);
-            }
         } else if (args.at(i) == "-fn") {
             dlg->setFont(xftFont(NEXT_ARG));
         } else if (args.at(i) == "-ta" || args.at(i) == "-sa") {
@@ -1664,17 +1860,14 @@
             READ_INT(lines, UInt, "-l(ines) expects a positive integer as next 
value");
             body->setProperty("lines", lines);
         } else if (args.at(i) == "-x") {
-            READ_INT(x, UInt, "-x expects a positive integer as next value");
+            READ_INT(x, Int, "-x expects a positive integer as next value");
             m_pos.setX(x);
         } else if (args.at(i) == "-y") {
-            READ_INT(y, UInt, "-y expects a positive integer as next value");
+            READ_INT(y, Int, "-y expects a positive integer as next value");
             m_pos.setY(y);
         } else if (args.at(i) == "-w") {
             READ_INT(w, UInt, "-w expects a positive integer as next value");
             m_size.setWidth(w);
-        } else if (args.at(i) == "-l") {
-            READ_INT(lines, UInt, "-l(ines) expects a positive integer as next 
value");
-            body->setProperty("lines", lines);
         } else if (args.at(i) == "-p") {
             suicide = -1;
             if (i+1 < args.count()) {
@@ -1764,15 +1957,17 @@
                             Help("--help-scale", tr("Show scale options")) <<
                             Help("--help-text-info", tr("Show text information 
options")) <<
                             Help("--help-color-selection", tr("Show color 
selection options")) <<
+                            Help("--help-font-selection", tr("Show font 
selection options")) <<
                             Help("--help-password", tr("Show password dialog 
options")) <<
                             Help("--help-forms", tr("Show forms dialog 
options")) <<
+                            Help("--help-dzen", tr("Show dzen options")) <<
                             Help("--help-misc", tr("Show miscellaneous 
options")) <<
                             Help("--help-qt", tr("Show Qt Options")));
         helpDict["general"] = CategoryHelp(tr("General options"), HelpList() <<
                             Help("--title=TITLE", tr("Set the dialog title")) 
<<
                             Help("--window-icon=ICONPATH", tr("Set the window 
icon")) <<
-                            Help("--width=WIDTH", tr("Set the width")) <<
-                            Help("--height=HEIGHT", tr("Set the height")) <<
+                            Help("--width=WIDTH", tr("Set the width") + tr(" 
(not entirely deterministic for message dialogs)")) <<
+                            Help("--height=HEIGHT", tr("Set the height") + 
tr(" (not entirely deterministic for message dialogs)")) <<
                             Help("--pos=[+-]x[(+-)y]", "QARMA ONLY! " + 
tr("Set the position")) <<
                             Help("--timeout=TIMEOUT", tr("Set dialog timeout 
in seconds")) <<
                             Help("--ok-label=TEXT", tr("Sets the label of the 
Ok button")) <<
@@ -1815,7 +2010,8 @@
                             Help("--save", tr("Activate save mode")) <<
                             Help("--separator=SEPARATOR", tr("Set output 
separator character")) <<
                             Help("--confirm-overwrite", tr("Confirm file 
selection if filename already exists")) <<
-                            Help("--file-filter=NAME | PATTERN1 PATTERN2 ...", 
tr("Sets a filename filter")));
+                            Help("--file-filter=NAME | PATTERN1 PATTERN2 ...", 
tr("Sets a filename filter")) <<
+                            Help("--preview-images=SIZE", "QARMA ONLY! " + 
tr("Show image thumbnails of SIZE")));
         helpDict["list"] = CategoryHelp(tr("List Command\n  %1 --list 
[Options] [Item1 ...]\nList Options").arg(applicationName()), HelpList() <<
                             Help("--text=TEXT", tr("Set the dialog text")) <<
                             Help("--column=COLUMN", tr("Set the column 
header")) <<
@@ -1887,6 +2083,7 @@
                             Help("--prompt=TEXT", "QARMA ONLY! " + tr("The 
prompt for the user")));
         helpDict["forms"] = CategoryHelp(tr("Forms dialog options"), 
HelpList() <<
                             Help("--add-entry=Field name", tr("Add a new Entry 
in forms dialog")) <<
+                            Help("--entry-value=TEXT", "QARMA ONLY! " + 
tr("Preset text for the last entry")) <<
                             Help("--add-password=Field name", tr("Add a new 
Password Entry in forms dialog")) <<
                             Help("--add-calendar=Calendar field name", tr("Add 
a new Calendar in forms dialog")) <<
                             Help("--add-list=List field and header name", 
tr("Add a new List in forms dialog")) <<
@@ -1899,12 +2096,32 @@
                             Help("--separator=SEPARATOR", tr("Set output 
separator character")) <<
                             Help("--forms-date-format=PATTERN", tr("Set the 
format for the returned date")) <<
                             Help("--add-checkbox=Checkbox label", "QARMA ONLY! 
" + tr("Add a new Checkbox forms dialog")));
+        helpDict["dzen"] =  CategoryHelp(tr("Dzen options"), HelpList() <<
+                            Help("-fg <color>", tr("Set foreground color. 
Either as symbolic name (e.g. red, darkgreen, etc.) or as #rrggbb hex-value.")) 
<<
+                            Help("-bg <color>", tr("Set background color (same 
format as -fg).")) <<
+                            Help("-fn <font>", tr("Set font (using the format 
of xlsfonts and xfontsel).")) <<
+                            Help("-ta <l|c|r>", tr("Set alignement of title 
window content: l(eft), c(center) or r(ight).")) <<
+                            Help("-sa <l|c|r>", tr("Set alignment of slave 
window (see -ta ).")) <<
+                            Help("-l <lines>", tr("Number of lines to display 
in slave window.")) <<
+                            Help("-u", tr("Update contents of title and slave 
window simultaneously.")) <<
+                            Help("-p [<timeout>]", tr("Persist EOF (optional 
timeout in seconds).")) <<
+                            Help("-x <pixels>", tr("Set x position on the 
screen.")) <<
+                            Help("-y <pixels>", tr("Set y position on the 
screen.")) <<
+                            Help("-w <pixels>", tr("width")));
         helpDict["misc"] = CategoryHelp(tr("Miscellaneous options"), 
HelpList() <<
                             Help("--about", tr("About Qarma")) <<
                             Help("--version", tr("Print version")));
         helpDict["qt"] = CategoryHelp(tr("Qt options"), HelpList() <<
-                            Help("--foo", tr("Foo")) <<
-                            Help("--bar", tr("Bar")));
+                            Help("-platform <platformName[:options]>", 
tr("specifies the Qt Platform Abstraction (QPA) plugin")) <<
+                            Help("-platformpluginpath <path>", tr("specifies 
the path to platform plugins")) <<
+                            Help("-platformtheme <platformTheme>", 
tr("specifies the platform theme")) <<
+                            Help("-plugin <plugin>", tr("specifies additional 
plugins to load. Can appear multiple times")) <<
+                            Help("-qwindowgeometry <WxH+X+Y>", tr("specifies 
window geometry for the main window")) <<
+                            Help("-qwindowicon <icon>", tr("sets the default 
window icon")) <<
+                            Help("-qwindowtitle <title>", tr("sets the title 
of the first window")) <<
+                            Help("-reverse", tr("sets the application's layout 
direction to Qt::RightToLeft")) <<
+                            Help("-display <hostname:screen_number>", 
tr("switches displays on X11")) <<
+                            Help("-geometry <WxH+X+Y>", tr("same as 
-qwindowgeometry")));
         helpDict["application"] = CategoryHelp(tr("Application Options"), 
HelpList() <<
                             Help("--calendar", tr("Display calendar dialog")) 
<<
                             Help("--entry", tr("Display text entry dialog")) <<
@@ -1922,6 +2139,7 @@
                             Help("--font-selection", "QARMA ONLY! " + 
tr("Display font selection dialog")) <<
                             Help("--password", tr("Display password dialog")) 
<<
                             Help("--forms", tr("Display forms dialog")) <<
+                            Help("--dzen", "QARMA ONLY! " + tr("Somewhat dzen 
compatible label")) <<
                             Help("--display=DISPLAY", tr("X display to use")) 
<<
                             Help("--class=CLASS", tr("Program class as used by 
the window manager")) <<
                             Help("--name=NAME", tr("Program name as used by 
the window manager")));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qarma-1.0.0/qarma.pro new/qarma-1.1.1/qarma.pro
--- old/qarma-1.0.0/qarma.pro   2024-04-19 14:32:24.000000000 +0200
+++ new/qarma-1.1.1/qarma.pro   2026-04-06 17:21:21.000000000 +0200
@@ -1,11 +1,17 @@
 HEADERS = Qarma.h
 SOURCES = Qarma.cpp
-QT      += dbus gui widgets
+QT      += gui widgets
 lessThan(QT_MAJOR_VERSION, 6){
   unix:!macx:QT += x11extras
 }
 TARGET  = qarma
 
+DISABLE_DBUS {
+       DEFINES += QARMA_NO_DBUS
+} else {
+       QT += dbus
+}
+
 unix:!macx:LIBS    += -lX11
 unix:!macx:DEFINES += WS_X11
 

Reply via email to