[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
26/285: gnu: Add grantleetheme.
From: |
guix-commits |
Subject: |
26/285: gnu: Add grantleetheme. |
Date: |
Sun, 29 Dec 2019 20:43:53 -0500 (EST) |
kkebreau pushed a commit to branch wip-gnome3.34
in repository guix.
commit 07befe813a715d5f16fc744c641e5ed97f628479
Author: Hartmut Goebel <address@hidden>
Date: Fri Dec 6 09:56:48 2019 +0100
gnu: Add grantleetheme.
* gnu/packages/kde.scm (grantleetheme): New variable.
* gnu/packages/patches/grantlee-merge-theme-dirs.patch: New file.
* gnu:lokal.mk (DATA): Add it.
---
gnu/local.mk | 1 +
gnu/packages/kde.scm | 36 +++++
.../patches/grantlee-merge-theme-dirs.patch | 163 +++++++++++++++++++++
3 files changed, 200 insertions(+)
diff --git a/gnu/local.mk b/gnu/local.mk
index eaa7112..74ca6ac 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -940,6 +940,7 @@ dist_patch_DATA =
\
%D%/packages/patches/gpm-glibc-2.26.patch \
%D%/packages/patches/gpsbabel-minizip.patch \
%D%/packages/patches/gpsbabel-qstring.patch \
+ %D%/packages/patches/grantlee-merge-theme-dirs.patch \
%D%/packages/patches/grep-timing-sensitive-test.patch \
%D%/packages/patches/groovy-add-exceptionutilsgenerator.patch \
%D%/packages/patches/grub-efi-fat-serial-number.patch \
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 8211661..31b917d 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -64,8 +64,44 @@
#:use-module (gnu packages version-control)
#:use-module (gnu packages video)
#:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xml)
#:use-module (gnu packages xorg))
+(define-public grantleetheme
+ (package
+ (name "grantleetheme")
+ (version "19.08.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://kde/stable/applications/" version
+ "/src/grantleetheme-" version ".tar.xz"))
+ (sha256
+ (base32 "0j77q1yyfmggzgkqgcw2xr0v9xg3h5cdhh8jry8h2llw75ahy6xb"))
+ (patches (search-patches "grantlee-merge-theme-dirs.patch"))))
+ (build-system qt-build-system)
+ (native-inputs
+ `(("extra-cmake-modules" ,extra-cmake-modules)
+ ("libxml2" ,libxml2))) ;; xmllint required for tests
+ (inputs
+ `(("grantlee" ,grantlee)
+ ("ki18n" ,ki18n)
+ ("kiconthemes" ,kiconthemes)
+ ("knewstuff" ,knewstuff)
+ ("qtbase" ,qtbase)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'check-setup
+ (lambda _
+ (setenv "QT_QPA_PLATFORM" "offscreen")
+ #t)))))
+ (home-page "https://cgit.kde.org/grantleetheme.git")
+ (synopsis "Library providing Grantlee theme support")
+ (description "This library provides Grantlee theme support.")
+ (license ;; LGPL for libraries, FDL for documentation
+ (list license:lgpl2.0+ license:fdl1.2+))))
+
(define-public kdenlive
(let ((version "18.08.1"))
(package
diff --git a/gnu/packages/patches/grantlee-merge-theme-dirs.patch
b/gnu/packages/patches/grantlee-merge-theme-dirs.patch
new file mode 100644
index 0000000..96a15a3
--- /dev/null
+++ b/gnu/packages/patches/grantlee-merge-theme-dirs.patch
@@ -0,0 +1,163 @@
+Taken from nixpkgs, see
+grantleetheme: merge themes across multiple prefixes
+<https://github.com/NixOS/nixpkgs/commits/master/pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch>
+
+
+diff --git a/src/grantleetheme.cpp b/src/grantleetheme.cpp
+index 27d5bc8..8d43140 100644
+--- a/src/grantleetheme.cpp
++++ b/src/grantleetheme.cpp
+@@ -46,7 +46,7 @@ ThemePrivate::ThemePrivate(const ThemePrivate &other)
+ , description(other.description)
+ , name(other.name)
+ , dirName(other.dirName)
+- , absolutePath(other.absolutePath)
++ , absolutePaths(other.absolutePaths)
+ , author(other.author)
+ , email(other.email)
+ , loader(other.loader)
+@@ -64,12 +64,15 @@ void ThemePrivate::setupEngine()
+
+ void ThemePrivate::setupLoader()
+ {
+- // Get the parent dir with themes, we set the theme directory separately
+- QDir dir(absolutePath);
+- dir.cdUp();
++ QStringList templateDirs;
++ for (const QString& path : absolutePaths) {
++ QDir dir(path);
++ dir.cdUp();
++ templateDirs << dir.absolutePath();
++ }
+
+ loader =
QSharedPointer<GrantleeTheme::QtResourceTemplateLoader>::create();
+- loader->setTemplateDirs({ dir.absolutePath() });
++ loader->setTemplateDirs(templateDirs);
+ loader->setTheme(dirName);
+
+ if (!sEngine) {
+@@ -121,7 +124,7 @@ Theme::Theme(const QString &themePath, const QString
&dirName, const QString &de
+ KConfigGroup group(&config, QStringLiteral("Desktop Entry"));
+ if (group.isValid()) {
+ d->dirName = dirName;
+- d->absolutePath = themePath;
++ d->absolutePaths = QStringList(themePath);
+ d->name = group.readEntry("Name", QString());
+ d->description = group.readEntry("Description", QString());
+ d->themeFileName = group.readEntry("FileName", QString());
+@@ -140,7 +143,7 @@ Theme::~Theme()
+
+ bool Theme::operator==(const Theme &other) const
+ {
+- return isValid() && other.isValid() && d->absolutePath ==
other.absolutePath();
++ return isValid() && other.isValid() && d->absolutePaths ==
other.absolutePaths();
+ }
+
+ Theme &Theme::operator=(const Theme &other)
+@@ -184,7 +187,15 @@ QString Theme::dirName() const
+
+ QString Theme::absolutePath() const
+ {
+- return d->absolutePath;
++ if (! d->absolutePaths.isEmpty()) {
++ return d->absolutePaths.first();
++ };
++ return QString();
++}
++
++QStringList Theme::absolutePaths() const
++{
++ return d->absolutePaths;
+ }
+
+ QString Theme::author() const
+@@ -223,6 +231,13 @@ QString Theme::render(const QString &templateName, const
QVariantHash &data, con
+ return result;
+ }
+
++void Theme::addThemeDir(const QString& path)
++{
++ QDir dir(path);
++ dir.cdUp();
++ d->absolutePaths << dir.absolutePath();
++}
++
+ void Theme::addPluginPath(const QString &path)
+ {
+ if (!ThemePrivate::sEngine) {
+diff --git a/src/grantleetheme.h b/src/grantleetheme.h
+index a25c27b..be38299 100644
+--- a/src/grantleetheme.h
++++ b/src/grantleetheme.h
+@@ -48,11 +48,14 @@ public:
+ Q_REQUIRED_RESULT QStringList displayExtraVariables() const;
+ Q_REQUIRED_RESULT QString dirName() const;
+ Q_REQUIRED_RESULT QString absolutePath() const;
++ Q_REQUIRED_RESULT QStringList absolutePaths() const;
+ Q_REQUIRED_RESULT QString author() const;
+ Q_REQUIRED_RESULT QString authorEmail() const;
+
+ Q_REQUIRED_RESULT QString render(const QString &templateName, const
QVariantHash &data, const QByteArray &applicationDomain = QByteArray());
+
++ void addThemeDir(const QString&);
++
+ static void addPluginPath(const QString &path);
+
+ private:
+diff --git a/src/grantleetheme_p.h b/src/grantleetheme_p.h
+index eb73dcb..00510e9 100644
+--- a/src/grantleetheme_p.h
++++ b/src/grantleetheme_p.h
+@@ -43,7 +43,7 @@ public:
+ QString description;
+ QString name;
+ QString dirName;
+- QString absolutePath;
++ QStringList absolutePaths;
+ QString author;
+ QString email;
+
+diff --git a/src/grantleethememanager.cpp b/src/grantleethememanager.cpp
+index 606d717..dc99041 100644
+--- a/src/grantleethememanager.cpp
++++ b/src/grantleethememanager.cpp
+@@ -125,25 +125,18 @@ public:
+
+ for (const QString &directory : qAsConst(themesDirectories)) {
+ QDirIterator dirIt(directory, QStringList(), QDir::AllDirs |
QDir::NoDotAndDotDot);
+- QStringList alreadyLoadedThemeName;
+ while (dirIt.hasNext()) {
+ dirIt.next();
+ const QString dirName = dirIt.fileName();
+ GrantleeTheme::Theme theme = q->loadTheme(dirIt.filePath(),
dirName, defaultDesktopFileName);
+ if (theme.isValid()) {
+ QString themeName = theme.name();
+- if (alreadyLoadedThemeName.contains(themeName)) {
+- int i = 2;
+- const QString originalName(theme.name());
+- while (alreadyLoadedThemeName.contains(themeName)) {
+- themeName = originalName + QStringLiteral("
(%1)").arg(i);
+- ++i;
+- }
+- theme.d->name = themeName;
++ QMap<QString, GrantleeTheme::Theme>::iterator i =
themes.find(dirName);
++ if (i != themes.end()) {
++ i.value().addThemeDir(dirIt.filePath());
++ } else {
++ themes.insert(dirName, theme);
+ }
+- alreadyLoadedThemeName << themeName;
+- themes.insert(dirName, theme);
+- //qDebug()<<" theme.name()"<<theme.name();
+ }
+ }
+ watch->addDir(directory);
+@@ -366,7 +359,7 @@ QString ThemeManager::pathFromThemes(const QString
&themesRelativePath, const QS
+ GrantleeTheme::Theme theme = loadTheme(dirIt.filePath(),
dirName, defaultDesktopFileName);
+ if (theme.isValid()) {
+ if (dirName == themeName) {
+- return theme.absolutePath();
++ return theme.absolutePaths().first();
+ }
+ }
+ }
- 23/285: gnu: kdevelop: Use fixed qt-build-system., (continued)
- 23/285: gnu: kdevelop: Use fixed qt-build-system., guix-commits, 2019/12/29
- 16/285: bootloader: grub: Add firmware setup entry., guix-commits, 2019/12/29
- 18/285: gnu: nano: Update to 4.7., guix-commits, 2019/12/29
- 17/285: gnu: icecat: Fix linking with ffmpeg., guix-commits, 2019/12/29
- 19/285: build-system: qt: Actually use qt-build-system, not cmake-build-system., guix-commits, 2019/12/29
- 22/285: gnu: sddm: Use fixed qt-build-system., guix-commits, 2019/12/29
- 21/285: Revert "gnu: mumble: Actually modify qt-build-system.", guix-commits, 2019/12/29
- 20/285: build-system: qt: Adjust indentation., guix-commits, 2019/12/29
- 27/285: gnu: Add zeroconf-ioslave., guix-commits, 2019/12/29
- 30/285: gnu: Add kmousetool., guix-commits, 2019/12/29
- 26/285: gnu: Add grantleetheme.,
guix-commits <=
- 40/285: gnu: acpica: Update to 20191213., guix-commits, 2019/12/29
- 42/285: gnu: thermald: Update to 1.9.1., guix-commits, 2019/12/29
- 41/285: gnu: fio: Update to 3.17., guix-commits, 2019/12/29
- 24/285: gnu: kdeconnect: Use fixed qt-build-system., guix-commits, 2019/12/29
- 33/285: gnu: Add krusader., guix-commits, 2019/12/29
- 34/285: gnu: Add okteta., guix-commits, 2019/12/29
- 36/285: gnu: Add smb4k., guix-commits, 2019/12/29
- 43/285: gnu: nnn: Update to 2.8.1., guix-commits, 2019/12/29
- 44/285: gnu: screenfetch: Update to 3.9.1., guix-commits, 2019/12/29
- 45/285: gnu: igt-gpu-tools: Fetch from upstream git repository., guix-commits, 2019/12/29