From d961b6ebd56f364e388e377fba7efebe05af649c Mon Sep 17 00:00:00 2001 From: MarcFontaine Date: Thu, 11 Sep 2025 13:55:53 +0200 Subject: [PATCH 1/2] candle: 1.1 -> 1.1.8 * Update candle to 1.1.8. * Add a patch that applies https://github.com/Denvi/Candle/pull/658. PR 658 enables the user to save application setting. --- pkgs/applications/misc/candle/658.patch | 182 ++++++++++++++++++++++ pkgs/applications/misc/candle/default.nix | 51 +++--- 2 files changed, 215 insertions(+), 18 deletions(-) create mode 100644 pkgs/applications/misc/candle/658.patch diff --git a/pkgs/applications/misc/candle/658.patch b/pkgs/applications/misc/candle/658.patch new file mode 100644 index 000000000000..2163b1a900bc --- /dev/null +++ b/pkgs/applications/misc/candle/658.patch @@ -0,0 +1,182 @@ +From 43eb409b4854eab40fe627fa8266946a64508083 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Mon, 9 Jun 2025 16:19:21 -0700 +Subject: [PATCH 1/3] Let Qt pick how to store settings + +Apply target-specific Qt code about how to store application +preference values by specifying the organization and application name +rather than a file name + +Signed-off-by: Keith Packard +--- + src/frmmain.cpp | 9 +++++---- + src/frmmain.h | 3 ++- + 2 files changed, 7 insertions(+), 5 deletions(-) + +diff --git a/src/frmmain.cpp b/src/frmmain.cpp +index cab86028..52602d8f 100644 +--- a/src/frmmain.cpp ++++ b/src/frmmain.cpp +@@ -85,7 +85,8 @@ frmMain::frmMain(QWidget *parent) : + << "black"; + + // Loading settings +- m_settingsFileName = qApp->applicationDirPath() + "/settings.ini"; ++ m_settingsOrg = "Candle"; ++ m_settingsApp = "candle"; + preloadSettings(); + + m_settings = new frmSettings(this); +@@ -315,7 +316,7 @@ double frmMain::toolZPosition() + + void frmMain::preloadSettings() + { +- QSettings set(m_settingsFileName, QSettings::IniFormat); ++ QSettings set(m_settingsOrg, m_settingsApp); + set.setIniCodec("UTF-8"); + + qApp->setStyleSheet(QString(qApp->styleSheet()).replace(QRegExp("font-size:\\s*\\d+"), "font-size: " + set.value("fontSize", "8").toString())); +@@ -328,7 +329,7 @@ void frmMain::preloadSettings() + + void frmMain::loadSettings() + { +- QSettings set(m_settingsFileName, QSettings::IniFormat); ++ QSettings set(m_settingsOrg, m_settingsApp); + set.setIniCodec("UTF-8"); + + m_settingsLoading = true; +@@ -482,7 +483,7 @@ void frmMain::loadSettings() + + void frmMain::saveSettings() + { +- QSettings set(m_settingsFileName, QSettings::IniFormat); ++ QSettings set(m_settingsOrg, m_settingsApp); + set.setIniCodec("UTF-8"); + + set.setValue("port", m_settings->port()); +diff --git a/src/frmmain.h b/src/frmmain.h +index c1f0ef94..b18d4bbb 100644 +--- a/src/frmmain.h ++++ b/src/frmmain.h +@@ -236,7 +236,8 @@ private slots: + frmSettings *m_settings; + frmAbout m_frmAbout; + +- QString m_settingsFileName; ++ QString m_settingsOrg; ++ QString m_settingsApp; + QString m_programFileName; + QString m_heightMapFileName; + QString m_lastFolder; + +From 7e5e6405d87fe238300b7f632e06053d8f6c7329 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Mon, 9 Jun 2025 16:20:23 -0700 +Subject: [PATCH 2/3] Apply default settings on first run + +If there are no application settings available, then +apply the default values. + +Signed-off-by: Keith Packard +--- + src/frmmain.cpp | 8 ++++++++ + src/frmsettings.cpp | 13 +++++++++---- + src/frmsettings.h | 1 + + 3 files changed, 18 insertions(+), 4 deletions(-) + +diff --git a/src/frmmain.cpp b/src/frmmain.cpp +index 52602d8f..3714253a 100644 +--- a/src/frmmain.cpp ++++ b/src/frmmain.cpp +@@ -479,6 +479,13 @@ void frmMain::loadSettings() + ui->cboCommand->setCurrentIndex(-1); + + m_settingsLoading = false; ++ ++ if (!set.value("valid", false).toBool()) { ++ m_settings->setDefaults(); ++ applySettings(); ++ show(); ++ ui->scrollArea->updateMinimumWidth(); ++ } + } + + void frmMain::saveSettings() +@@ -593,6 +600,7 @@ void frmMain::saveSettings() + + for (int i = 0; i < ui->cboCommand->count(); i++) list.append(ui->cboCommand->itemText(i)); + set.setValue("recentCommands", list); ++ set.setValue("valid", true); + } + + bool frmMain::saveChanges(bool heightMapMode) +diff --git a/src/frmsettings.cpp b/src/frmsettings.cpp +index cdc87371..988965f6 100644 +--- a/src/frmsettings.cpp ++++ b/src/frmsettings.cpp +@@ -621,11 +621,8 @@ void frmSettings::on_cboToolType_currentIndexChanged(int index) + ui->txtToolAngle->setEnabled(index == 1); + } + +-void frmSettings::on_cmdDefaults_clicked() ++void frmSettings::setDefaults() + { +- if (QMessageBox::warning(this, qApp->applicationDisplayName(), tr("Reset settings to default values?"), +- QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel) != QMessageBox::Yes) return; +- + setPort(""); + setBaud(115200); + +@@ -688,6 +685,14 @@ void frmSettings::on_cmdDefaults_clicked() + setFontSize(9); + } + ++void frmSettings::on_cmdDefaults_clicked() ++{ ++ if (QMessageBox::warning(this, qApp->applicationDisplayName(), tr("Reset settings to default values?"), ++ QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel) != QMessageBox::Yes) return; ++ ++ setDefaults(); ++} ++ + void frmSettings::on_cboFontSize_currentTextChanged(const QString &arg1) + { + qApp->setStyleSheet(QString(qApp->styleSheet()).replace(QRegExp("font-size:\\s*\\d+"), "font-size: " + arg1)); +diff --git a/src/frmsettings.h b/src/frmsettings.h +index fc44eb81..b6f2bf0f 100644 +--- a/src/frmsettings.h ++++ b/src/frmsettings.h +@@ -117,6 +117,7 @@ class frmSettings : public QDialog + void setIgnoreErrors(bool value); + bool autoLine(); + void setAutoLine(bool value); ++ void setDefaults(); + + protected: + void showEvent(QShowEvent *se); + +From 4ea46db51a0578c94082e4c381dade76a7c44a2b Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Mon, 9 Jun 2025 16:21:16 -0700 +Subject: [PATCH 3/3] Try to load any file provided on the command line + +Don't filter based upon assumptions about gcode file extensions + +Signed-off-by: Keith Packard +--- + src/frmmain.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/frmmain.cpp b/src/frmmain.cpp +index 3714253a..42cf901e 100644 +--- a/src/frmmain.cpp ++++ b/src/frmmain.cpp +@@ -282,7 +282,7 @@ frmMain::frmMain(QWidget *parent) : + m_timerStateQuery.start(); + + // Handle file drop +- if (qApp->arguments().count() > 1 && isGCodeFile(qApp->arguments().last())) { ++ if (qApp->arguments().count() > 1) { + loadFile(qApp->arguments().last()); + } + } diff --git a/pkgs/applications/misc/candle/default.nix b/pkgs/applications/misc/candle/default.nix index 32c0b872d1ae..7e7f4a9a1862 100644 --- a/pkgs/applications/misc/candle/default.nix +++ b/pkgs/applications/misc/candle/default.nix @@ -1,26 +1,41 @@ { - mkDerivation, + stdenv, lib, fetchFromGitHub, - qtbase, - qtserialport, - qmake, + nix-update-script, + qt5, }: -mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "candle"; - version = "1.1"; + version = "1.1.8"; src = fetchFromGitHub { owner = "Denvi"; repo = "Candle"; - rev = "v${version}"; - sha256 = "1gpx08gdz8awbsj6lsczwgffp19z3q0r2fvm72a73qd9az29pmm0"; + rev = "v${finalAttrs.version}"; + sha256 = "sha256-A53rHlabcuw/nWS7jsCyVrP3CUkmUI/UMRqpogyFOCM="; }; - nativeBuildInputs = [ qmake ]; + sourceRoot = "${finalAttrs.src.name}/src"; - sourceRoot = "${src.name}/src"; + patches = [ + # Store application settings in ~/.config/Candle + # https://github.com/Denvi/Candle/pull/658 + ./658.patch + ]; + + patchFlags = [ "-p2" ]; + + nativeBuildInputs = [ + qt5.qmake + qt5.wrapQtAppsHook + ]; + + buildInputs = [ + qt5.qtbase + qt5.qtserialport + ]; installPhase = '' runHook preInstall @@ -28,16 +43,16 @@ mkDerivation rec { runHook postInstall ''; - buildInputs = [ - qtbase - qtserialport - ]; + doInstallCheck = true; - meta = with lib; { + passthru.updateScript = nix-update-script { }; + + meta = { description = "GRBL controller application with G-Code visualizer written in Qt"; mainProgram = "candle"; homepage = "https://github.com/Denvi/Candle"; - license = licenses.gpl3; - maintainers = with maintainers; [ matti-kariluoma ]; + license = lib.licenses.gpl3; + maintainers = with lib.maintainers; [ matti-kariluoma ]; + platforms = qt5.qtbase.meta.platforms; }; -} +}) From 05cf9965696ecaf4636f6f61ff22c1d4654cd722 Mon Sep 17 00:00:00 2001 From: MarcFontaine Date: Thu, 11 Sep 2025 14:07:58 +0200 Subject: [PATCH 2/2] candle: migrate to by-name --- pkgs/{applications/misc => by-name/ca}/candle/658.patch | 0 .../misc/candle/default.nix => by-name/ca/candle/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 3 files changed, 2 deletions(-) rename pkgs/{applications/misc => by-name/ca}/candle/658.patch (100%) rename pkgs/{applications/misc/candle/default.nix => by-name/ca/candle/package.nix} (100%) diff --git a/pkgs/applications/misc/candle/658.patch b/pkgs/by-name/ca/candle/658.patch similarity index 100% rename from pkgs/applications/misc/candle/658.patch rename to pkgs/by-name/ca/candle/658.patch diff --git a/pkgs/applications/misc/candle/default.nix b/pkgs/by-name/ca/candle/package.nix similarity index 100% rename from pkgs/applications/misc/candle/default.nix rename to pkgs/by-name/ca/candle/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 35787411523f..71121a81b996 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1892,8 +1892,6 @@ with pkgs; ''; }); - candle = libsForQt5.callPackage ../applications/misc/candle { }; - capstone = callPackage ../development/libraries/capstone { }; capstone_4 = callPackage ../development/libraries/capstone/4.nix { };