Loading pkgs/by-name/ca/candle/658.patch 0 → 100644 +182 −0 Original line number Diff line number Diff line From 43eb409b4854eab40fe627fa8266946a64508083 Mon Sep 17 00:00:00 2001 From: Keith Packard <keithp@keithp.com> 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 <keithp@keithp.com> --- 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 <keithp@keithp.com> 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 <keithp@keithp.com> --- 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 <keithp@keithp.com> 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 <keithp@keithp.com> --- 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()); } } pkgs/applications/misc/candle/default.nix→pkgs/by-name/ca/candle/package.nix +58 −0 Original line number Diff line number Diff line { 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 Loading @@ -28,16 +43,16 @@ mkDerivation rec { runHook postInstall ''; buildInputs = [ qtbase qtserialport ]; doInstallCheck = true; passthru.updateScript = nix-update-script { }; meta = with lib; { 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; }; } }) pkgs/top-level/all-packages.nix +0 −2 Original line number Diff line number Diff line Loading @@ -1883,8 +1883,6 @@ with pkgs; ''; }); candle = libsForQt5.callPackage ../applications/misc/candle { }; capstone = callPackage ../development/libraries/capstone { }; capstone_4 = callPackage ../development/libraries/capstone/4.nix { }; Loading Loading
pkgs/by-name/ca/candle/658.patch 0 → 100644 +182 −0 Original line number Diff line number Diff line From 43eb409b4854eab40fe627fa8266946a64508083 Mon Sep 17 00:00:00 2001 From: Keith Packard <keithp@keithp.com> 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 <keithp@keithp.com> --- 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 <keithp@keithp.com> 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 <keithp@keithp.com> --- 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 <keithp@keithp.com> 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 <keithp@keithp.com> --- 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()); } }
pkgs/applications/misc/candle/default.nix→pkgs/by-name/ca/candle/package.nix +58 −0 Original line number Diff line number Diff line { 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 Loading @@ -28,16 +43,16 @@ mkDerivation rec { runHook postInstall ''; buildInputs = [ qtbase qtserialport ]; doInstallCheck = true; passthru.updateScript = nix-update-script { }; meta = with lib; { 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; }; } })
pkgs/top-level/all-packages.nix +0 −2 Original line number Diff line number Diff line Loading @@ -1883,8 +1883,6 @@ with pkgs; ''; }); candle = libsForQt5.callPackage ../applications/misc/candle { }; capstone = callPackage ../development/libraries/capstone { }; capstone_4 = callPackage ../development/libraries/capstone/4.nix { }; Loading