2023-07-24 08:13:26

by Boris Kolpackov

[permalink] [raw]
Subject: [PATCH 1/1] kconfig: port qconf to work with Qt6 in addition to Qt5

Tested with Qt5 5.15 and Qt6 6.4. Note that earlier versions of Qt5
are no longer guaranteed to work.

Signed-off-by: Boris Kolpackov <[email protected]>
---
scripts/kconfig/qconf.cc | 40 ++++++++++++++++++++++++++--------------
1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
index 78087b2..3a4d7a1 100644
--- a/scripts/kconfig/qconf.cc
+++ b/scripts/kconfig/qconf.cc
@@ -5,10 +5,11 @@
*/

#include <QAction>
+#include <QActionGroup>
#include <QApplication>
#include <QCloseEvent>
#include <QDebug>
-#include <QDesktopWidget>
+#include <QScreen>
#include <QFileDialog>
#include <QLabel>
#include <QLayout>
@@ -17,6 +18,7 @@
#include <QMenuBar>
#include <QMessageBox>
#include <QToolBar>
+#include <QRegularExpression>

#include <stdlib.h>

@@ -1126,7 +1128,7 @@ QString ConfigInfoView::debug_info(struct symbol *sym)

QString ConfigInfoView::print_filter(const QString &str)
{
- QRegExp re("[<>&\"\\n]");
+ QRegularExpression re("[<>&\"\\n]");
QString res = str;
for (int i = 0; (i = res.indexOf(re, i)) >= 0;) {
switch (res[i].toLatin1()) {
@@ -1322,15 +1324,15 @@ ConfigMainWindow::ConfigMainWindow(void)
int width, height;
char title[256];

- QDesktopWidget *d = configApp->desktop();
snprintf(title, sizeof(title), "%s%s",
rootmenu.prompt->text,
""
);
setWindowTitle(title);

- width = configSettings->value("/window width", d->width() - 64).toInt();
- height = configSettings->value("/window height", d->height() - 64).toInt();
+ QRect g = configApp->primaryScreen()->geometry();
+ width = configSettings->value("/window width", g.width() - 64).toInt();
+ height = configSettings->value("/window height", g.height() - 64).toInt();
resize(width, height);
x = configSettings->value("/window x");
y = configSettings->value("/window y");
@@ -1379,17 +1381,17 @@ ConfigMainWindow::ConfigMainWindow(void)
this, &ConfigMainWindow::goBack);

QAction *quitAction = new QAction("&Quit", this);
- quitAction->setShortcut(Qt::CTRL + Qt::Key_Q);
+ quitAction->setShortcut(Qt::CTRL | Qt::Key_Q);
connect(quitAction, &QAction::triggered,
this, &ConfigMainWindow::close);

QAction *loadAction = new QAction(QPixmap(xpm_load), "&Load", this);
- loadAction->setShortcut(Qt::CTRL + Qt::Key_L);
+ loadAction->setShortcut(Qt::CTRL | Qt::Key_L);
connect(loadAction, &QAction::triggered,
this, &ConfigMainWindow::loadConfig);

saveAction = new QAction(QPixmap(xpm_save), "&Save", this);
- saveAction->setShortcut(Qt::CTRL + Qt::Key_S);
+ saveAction->setShortcut(Qt::CTRL | Qt::Key_S);
connect(saveAction, &QAction::triggered,
this, &ConfigMainWindow::saveConfig);

@@ -1403,7 +1405,7 @@ ConfigMainWindow::ConfigMainWindow(void)
connect(saveAsAction, &QAction::triggered,
this, &ConfigMainWindow::saveConfigAs);
QAction *searchAction = new QAction("&Find", this);
- searchAction->setShortcut(Qt::CTRL + Qt::Key_F);
+ searchAction->setShortcut(Qt::CTRL | Qt::Key_F);
connect(searchAction, &QAction::triggered,
this, &ConfigMainWindow::searchConfig);
singleViewAction = new QAction(QPixmap(xpm_single_view), "Single View", this);
@@ -1750,11 +1752,21 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e)
e->accept();
return;
}
- QMessageBox mb("qconf", "Save configuration?", QMessageBox::Warning,
- QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape);
- mb.setButtonText(QMessageBox::Yes, "&Save Changes");
- mb.setButtonText(QMessageBox::No, "&Discard Changes");
- mb.setButtonText(QMessageBox::Cancel, "Cancel Exit");
+
+ QMessageBox mb(QMessageBox::Icon::Warning, "qconf",
+ "Save configuration?");
+
+ QPushButton *yb = mb.addButton(QMessageBox::Yes);
+ QPushButton *db = mb.addButton(QMessageBox::No);
+ QPushButton *cb = mb.addButton(QMessageBox::Cancel);
+
+ yb->setText("&Save Changes");
+ db->setText("&Discard Changes");
+ cb->setText("Cancel Exit");
+
+ mb.setDefaultButton(yb);
+ mb.setEscapeButton(cb);
+
switch (mb.exec()) {
case QMessageBox::Yes:
if (saveConfig())
--
2.40.1



2023-07-25 04:15:13

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 1/1] kconfig: port qconf to work with Qt6 in addition to Qt5



On 7/24/23 00:46, Boris Kolpackov wrote:
> Tested with Qt5 5.15 and Qt6 6.4. Note that earlier versions of Qt5
> are no longer guaranteed to work.

Was there such a guarantee somewhere?

>
> Signed-off-by: Boris Kolpackov <[email protected]>

Acked-by: Randy Dunlap <[email protected]>
Tested-by: Randy Dunlap <[email protected]>

> ---
> scripts/kconfig/qconf.cc | 40 ++++++++++++++++++++++++++--------------
> 1 file changed, 26 insertions(+), 14 deletions(-)

Thanks.
--
~Randy

2023-07-25 14:59:49

by Boris Kolpackov

[permalink] [raw]
Subject: Re: [PATCH 1/1] kconfig: port qconf to work with Qt6 in addition to Qt5

Randy Dunlap <[email protected]> writes:

> On 7/24/23 00:46, Boris Kolpackov wrote:
>
> > Tested with Qt5 5.15 and Qt6 6.4. Note that earlier versions of Qt5
> > are no longer guaranteed to work.
>
> Was there such a guarantee somewhere?

I don't believe there was anything explicit, but seeing that the
qconf source code hardly changed in the past couple of years, it
could have worked with earlier versions of Qt5 and some people
could have relied on that.


> Acked-by: Randy Dunlap <[email protected]>
> Tested-by: Randy Dunlap <[email protected]>

Thanks!

2023-07-29 11:26:29

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH 1/1] kconfig: port qconf to work with Qt6 in addition to Qt5

On Tue, Jul 25, 2023 at 10:58 PM Boris Kolpackov
<[email protected]> wrote:
>
> Randy Dunlap <[email protected]> writes:
>
> > On 7/24/23 00:46, Boris Kolpackov wrote:
> >
> > > Tested with Qt5 5.15 and Qt6 6.4. Note that earlier versions of Qt5
> > > are no longer guaranteed to work.



This patch did not change scripts/kconfig/qconf-cfg.sh at all.
Hence, Qt5 is always linked.


Please change scripts/kconfig/qconf-cfg.sh so that:

1. If Qt6 is installed, please link Qt6.
2. If Qt6 is not installed but Qt5 is installed,
please link Qt5



> >
> > Was there such a guarantee somewhere?
>
> I don't believe there was anything explicit, but seeing that the
> qconf source code hardly changed in the past couple of years, it
> could have worked with earlier versions of Qt5 and some people
> could have relied on that.
>
>
> > Acked-by: Randy Dunlap <[email protected]>
> > Tested-by: Randy Dunlap <[email protected]>
>
> Thanks!


A request to reviewers/testers:

Please make sure you tested this
with both Qt5 and Qt6.


To check the Qt version you are running:
1. 'make xconfig'
2. See Help -> About


--
Best Regards
Masahiro Yamada