Subject: [bug#62308] [PATCH] gnu: Add converseen.

From: Nicolas Goaziou <[email-masked]>
Date: Tue, 21 Mar 2023 22:14:32 +0100

* gnu/packages/image.scm (converseen): New variable.
* gnu/packages/patches/converseen-hide-non-free-pointers.patch:
* gnu/packages/patches/converseen-hide-updates-checks.patch: New files.
* gnu/local.mk: Register files above.
---
 gnu/local.mk                                  |   2 +
 gnu/packages/image.scm                        |  46 ++++
 .../converseen-hide-non-free-pointers.patch   | 198 ++++++++++++++++++
 .../converseen-hide-updates-checks.patch      | 110 ++++++++++
 4 files changed, 356 insertions(+)
 create mode 100644 gnu/packages/patches/converseen-hide-non-free-pointers.patch
 create mode 100644 gnu/packages/patches/converseen-hide-updates-checks.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 4a662efc3c..4b82dcd91b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1009,6 +1009,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/connman-CVE-2022-32293-pt1.patch	\
   %D%/packages/patches/connman-CVE-2022-32293-pt2.patch	\
   %D%/packages/patches/containerd-create-pid-file.patch	\
+  %D%/packages/patches/converseen-hide-updates-checks.patch	\
+  %D%/packages/patches/converseen-hide-non-free-pointers.patch	\
   %D%/packages/patches/cool-retro-term-wctype.patch		\
   %D%/packages/patches/coreutils-gnulib-tests.patch		\
   %D%/packages/patches/coq-fix-envvars.patch			\
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 228a31c7d0..e1eafae446 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -35,6 +35,7 @@
 ;;; Copyright © 2022 Jai Vetrivelan <[email-masked]>
 ;;; Copyright © 2022 ( <[email-masked]>
 ;;; Copyright © 2022-2023 Bruno Victal <[email-masked]>
+;;; Copyright © 2023 Nicolas Goaziou <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -76,6 +77,7 @@ (define-module (gnu packages image)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages man)
   #:use-module (gnu packages maths)
@@ -115,6 +117,50 @@ (define-module (gnu packages image)
   #:use-module (guix deprecation)
   #:use-module (srfi srfi-1))
 
+(define-public converseen
+  (package
+    (name "converseen")
+    (version "0.9.11.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Faster3ck/Converseen")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0nxvac8df47gxg1klqlz0s3rxl0ykrikmciniwkb938bgilmaijm"))
+              (patches
+               (search-patches "converseen-hide-updates-checks.patch"
+                               ;; Remove links to sites relying on non-free
+                               ;; Javascript.
+                               "converseen-hide-non-free-pointers.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:tests? #false                   ;no tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'set-translations-location
+            ;; Fix translations location.  Without this, only English is
+            ;; offered.
+            (lambda _
+              (substitute* "src/translator.cpp"
+                (("QString\\(\"%1/share/converseen/loc\"\\).arg\\(rootPath\\)")
+                 (string-append "QString(\""
+                                #$output
+                                "/share/converseen/loc\")"))))))))
+    (native-inputs
+     (list pkg-config qttools-5))
+    (inputs
+     (list imagemagick qtbase-5))
+    (home-page "https://converseen.fasterland.net/")
+    (synopsis "Batch image converter and resizer")
+    (description
+     "Converseen is an image batch conversion tool.  You can resize and
+convert images in more than 100 different formats.")
+    (license license:gpl3+)))
+
 (define-public iqa
   (package
     (name "iqa")
diff --git a/gnu/packages/patches/converseen-hide-non-free-pointers.patch b/gnu/packages/patches/converseen-hide-non-free-pointers.patch
new file mode 100644
index 0000000000..b4994733cd
--- /dev/null
+++ b/gnu/packages/patches/converseen-hide-non-free-pointers.patch
@@ -0,0 +1,198 @@
+Remove pointers to PayPal and Facebook.
+Upstream status: Guix-specific, not forwarded upstream.
+
+diff --git a/src/dialoginfo.cpp b/src/dialoginfo.cpp
+index 3302f55..b64f414 100755
+--- a/src/dialoginfo.cpp
++++ b/src/dialoginfo.cpp
+@@ -31,7 +31,6 @@ DialogInfo::DialogInfo(QWidget *parent) :
+     setupUi(this);
+ 
+     connect(pushClose, SIGNAL(clicked()), this, SLOT(close()));
+-    connect(pushFacebook, SIGNAL(clicked()), this, SLOT(openFacebookPage()));
+ 
+     QString appVersion;
+     QString magickVersion;
+@@ -63,8 +62,3 @@ void DialogInfo::openFacebookPage()
+     QDesktopServices::openUrl(QUrl("https://www.facebook.com/converseen", QUrl::TolerantMode));
+ }
+ 
+-void DialogInfo::on_pushDonatePayPal_clicked()
+-{
+-    QDesktopServices::openUrl(QUrl("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HQA6TBT5354FC", QUrl::TolerantMode));
+-}
+-
+diff --git a/src/dialoginfo.h b/src/dialoginfo.h
+index 4c13776..f1b7ea3 100755
+--- a/src/dialoginfo.h
++++ b/src/dialoginfo.h
+@@ -33,7 +33,6 @@ public:
+ 
+ private slots:
+     void openFacebookPage();
+-    void on_pushDonatePayPal_clicked();
+ };
+ 
+ #endif // DIALOGINFO_H
+diff --git a/src/mainwindowimpl.cpp b/src/mainwindowimpl.cpp
+index 83a365f..9a44492 100755
+--- a/src/mainwindowimpl.cpp
++++ b/src/mainwindowimpl.cpp
+@@ -162,7 +162,6 @@ void MainWindowImpl::createActions()
+     connect(actionConvert, SIGNAL(triggered()), this, SLOT(elabora()));
+ 
+     connect(actionInfo, SIGNAL(triggered()), this, SLOT(about()));
+-    connect(actionDonatePaypal, SIGNAL(triggered()), this, SLOT(openPaypalLink()));
+     connect(actionReportBug, SIGNAL(triggered()), this, SLOT(bugReport()));
+ }
+ 
+diff --git a/ui/dialoginfo.ui b/ui/dialoginfo.ui
+index b2c7788..20b9d9d 100755
+--- a/ui/dialoginfo.ui
++++ b/ui/dialoginfo.ui
+@@ -254,122 +254,6 @@ p, li { white-space: pre-wrap; }
+      </layout>
+     </widget>
+    </item>
+-   <item>
+-    <layout class="QVBoxLayout" name="verticalLayout">
+-     <item>
+-      <widget class="QLabel" name="label_18">
+-       <property name="text">
+-        <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;If you appreciate this work and would like to support the project, you are welcome to donate via PayPal&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+-       </property>
+-       <property name="wordWrap">
+-        <bool>true</bool>
+-       </property>
+-      </widget>
+-     </item>
+-     <item>
+-      <layout class="QHBoxLayout" name="horizontalLayout_4">
+-       <item>
+-        <widget class="QPushButton" name="pushDonatePayPal">
+-         <property name="text">
+-          <string/>
+-         </property>
+-         <property name="icon">
+-          <iconset resource="../resources.qrc">
+-           <normaloff>:/Images/res/btn_donateCC_LG.png</normaloff>:/Images/res/btn_donateCC_LG.png</iconset>
+-         </property>
+-         <property name="iconSize">
+-          <size>
+-           <width>150</width>
+-           <height>50</height>
+-          </size>
+-         </property>
+-         <property name="flat">
+-          <bool>true</bool>
+-         </property>
+-        </widget>
+-       </item>
+-      </layout>
+-     </item>
+-    </layout>
+-   </item>
+-   <item>
+-    <widget class="Line" name="line_2">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+-    <layout class="QHBoxLayout" name="horizontalLayout_5">
+-     <item>
+-      <spacer name="horizontalSpacer_2">
+-       <property name="orientation">
+-        <enum>Qt::Horizontal</enum>
+-       </property>
+-       <property name="sizeHint" stdset="0">
+-        <size>
+-         <width>40</width>
+-         <height>20</height>
+-        </size>
+-       </property>
+-      </spacer>
+-     </item>
+-     <item>
+-      <layout class="QHBoxLayout" name="horizontalLayout_3">
+-       <item>
+-        <widget class="QLabel" name="label_7">
+-         <property name="text">
+-          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;Follow Converseen:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <widget class="QPushButton" name="pushFacebook">
+-         <property name="cursor">
+-          <cursorShape>PointingHandCursor</cursorShape>
+-         </property>
+-         <property name="text">
+-          <string/>
+-         </property>
+-         <property name="icon">
+-          <iconset resource="../resources.qrc">
+-           <normaloff>:/Images/res/facebook-icon.png</normaloff>:/Images/res/facebook-icon.png</iconset>
+-         </property>
+-         <property name="iconSize">
+-          <size>
+-           <width>32</width>
+-           <height>32</height>
+-          </size>
+-         </property>
+-         <property name="flat">
+-          <bool>true</bool>
+-         </property>
+-        </widget>
+-       </item>
+-      </layout>
+-     </item>
+-     <item>
+-      <spacer name="horizontalSpacer_3">
+-       <property name="orientation">
+-        <enum>Qt::Horizontal</enum>
+-       </property>
+-       <property name="sizeHint" stdset="0">
+-        <size>
+-         <width>40</width>
+-         <height>20</height>
+-        </size>
+-       </property>
+-      </spacer>
+-     </item>
+-    </layout>
+-   </item>
+-   <item>
+-    <widget class="Line" name="line">
+-     <property name="orientation">
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-    </widget>
+-   </item>
+    <item>
+     <widget class="QLabel" name="label_2">
+      <property name="text">
+diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui
+index 28df8cc..0ee7f37 100755
+--- a/ui/mainwindow.ui
++++ b/ui/mainwindow.ui
+@@ -1334,18 +1334,6 @@ p, li { white-space: pre-wrap; }
+     <string>F1</string>
+    </property>
+   </action>
+-  <action name="actionDonatePaypal">
+-   <property name="icon">
+-    <iconset resource="../resources.qrc">
+-     <normaloff>:/Images/res/paypal_mini.png</normaloff>:/Images/res/paypal_mini.png</iconset>
+-   </property>
+-   <property name="text">
+-    <string>&amp;Donate via Paypal</string>
+-   </property>
+-   <property name="toolTip">
+-    <string>Donate via Paypal</string>
+-   </property>
+-  </action>
+   <action name="actionReportBug">
+    <property name="text">
+     <string>&amp;Report bug...</string>
diff --git a/gnu/packages/patches/converseen-hide-updates-checks.patch b/gnu/packages/patches/converseen-hide-updates-checks.patch
new file mode 100644
index 0000000000..044836b36f
--- /dev/null
+++ b/gnu/packages/patches/converseen-hide-updates-checks.patch
@@ -0,0 +1,110 @@
+Remove Check updates button and Auto check uptades option.
+Upstream status: Guix-specific, not forwarded upstream.
+
+diff --git a/src/dialogoptions.cpp b/src/dialogoptions.cpp
+index 704e75c..bb3f9b0 100755
+--- a/src/dialogoptions.cpp
++++ b/src/dialogoptions.cpp
+@@ -71,23 +71,10 @@ void DialogOptions::setOverwriteMode()
+         IniSettings::setOverwriteMode(true);
+ }
+ 
+-void DialogOptions::setAutoUpdates()
+-{
+-    bool enabled;
+-
+-    if (checkCheckUpdates->isChecked())
+-        enabled = true;
+-    else
+-        enabled = false;
+-
+-    IniSettings::setAutoChechUpdates(enabled);
+-}
+-
+ void DialogOptions::saveOptions()
+ {
+     setLanguage();
+     setOverwriteMode();
+-    setAutoUpdates();
+ 
+     IniSettings::settings->sync();
+     accept();
+@@ -102,12 +89,6 @@ void DialogOptions::loadSettings()
+     else
+         radioAskFirst->setChecked(true);
+ 
+-    bool autoUpdates = IniSettings::isAutoChechUpdates();
+-    if (autoUpdates)
+-        checkCheckUpdates->setCheckState(Qt::Checked);
+-    else
+-        checkCheckUpdates->setCheckState(Qt::Unchecked);
+-
+     Translator t;
+     
+     int idx = comboLangs->findText(t.currentLanguage(), Qt::MatchExactly);
+diff --git a/src/mainwindowimpl.cpp b/src/mainwindowimpl.cpp
+index 2b6d68d..83a365f 100755
+--- a/src/mainwindowimpl.cpp
++++ b/src/mainwindowimpl.cpp
+@@ -164,7 +164,6 @@ void MainWindowImpl::createActions()
+     connect(actionInfo, SIGNAL(triggered()), this, SLOT(about()));
+     connect(actionDonatePaypal, SIGNAL(triggered()), this, SLOT(openPaypalLink()));
+     connect(actionReportBug, SIGNAL(triggered()), this, SLOT(bugReport()));
+-    connect(actionCheckForUpdates, SIGNAL(triggered()), this, SLOT(checkForUpdates()));
+ }
+ 
+ void MainWindowImpl::setupMenu()
+diff --git a/ui/dialogoptions.ui b/ui/dialogoptions.ui
+index e59148d..6cb23f5 100755
+--- a/ui/dialogoptions.ui
++++ b/ui/dialogoptions.ui
+@@ -66,22 +66,6 @@
+      </layout>
+     </widget>
+    </item>
+-   <item>
+-    <widget class="QGroupBox" name="groupBox_3">
+-     <property name="title">
+-      <string>Updates</string>
+-     </property>
+-     <layout class="QVBoxLayout" name="verticalLayout_3">
+-      <item>
+-       <widget class="QCheckBox" name="checkCheckUpdates">
+-        <property name="text">
+-         <string>Checks for updates automatically</string>
+-        </property>
+-       </widget>
+-      </item>
+-     </layout>
+-    </widget>
+-   </item>
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <item>
+diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui
+index a5f55f0..28df8cc 100755
+--- a/ui/mainwindow.ui
++++ b/ui/mainwindow.ui
+@@ -190,7 +190,6 @@
+     </property>
+     <addaction name="actionDonatePaypal"/>
+     <addaction name="separator"/>
+-    <addaction name="actionCheckForUpdates"/>
+     <addaction name="actionReportBug"/>
+     <addaction name="separator"/>
+    </widget>
+@@ -1365,14 +1364,6 @@ p, li { white-space: pre-wrap; }
+     <string>Import windows icon (*.ico *.icon)</string>
+    </property>
+   </action>
+-  <action name="actionCheckForUpdates">
+-   <property name="text">
+-    <string>&amp;Check for updates</string>
+-   </property>
+-   <property name="toolTip">
+-    <string>Check if a new version of Converseen is available</string>
+-   </property>
+-  </action>
+  </widget>
+  <customwidgets>
+   <customwidget>

base-commit: 3893758dac76fc30b23d4715e849e262306f268d
-- 
2.39.2