diff options
author | 2012-06-05 17:40:12 +0000 | |
---|---|---|
committer | 2012-06-05 17:40:12 +0000 | |
commit | fc69e8f075980001926494283c97fc7e6efd3229 (patch) | |
tree | fdd88e5136f0a503f90a97258f85cb9ec96169ac /eclass | |
parent | Added 5.4 RC 2 for testing (diff) | |
download | historical-fc69e8f075980001926494283c97fc7e6efd3229.tar.gz historical-fc69e8f075980001926494283c97fc7e6efd3229.tar.bz2 historical-fc69e8f075980001926494283c97fc7e6efd3229.zip |
enhanced functionality of doicon/newicon in eutils.eclass
Diffstat (limited to 'eclass')
-rw-r--r-- | eclass/ChangeLog | 5 | ||||
-rw-r--r-- | eclass/eutils.eclass | 137 |
2 files changed, 111 insertions, 31 deletions
diff --git a/eclass/ChangeLog b/eclass/ChangeLog index be4242ae55b0..87c9ebce4d4a 100644 --- a/eclass/ChangeLog +++ b/eclass/ChangeLog @@ -1,6 +1,9 @@ # ChangeLog for eclass directory # Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.288 2012/06/05 10:21:35 pacho Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.289 2012/06/05 17:40:12 hasufell Exp $ + + 05 Jun 2012; Julian Ospald <hasufell@gentoo.org> eutils.eclass: + enhanced functionality of doicon/newicon in eutils.eclass 05 Jun 2012; Pacho Ramos <pacho@gentoo.org> stardict.eclass: Allow more providers for stardict, bug #413093 by tot-to and qt team. diff --git a/eclass/eutils.eclass b/eclass/eutils.eclass index 8348fc8860b6..2c645c7290d2 100644 --- a/eclass/eutils.eclass +++ b/eclass/eutils.eclass @@ -1,6 +1,6 @@ # Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.393 2012/05/28 16:45:57 phajdan.jr Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.394 2012/06/05 17:40:12 hasufell Exp $ # @ECLASS: eutils.eclass # @MAINTAINER: @@ -944,45 +944,122 @@ newmenu() { ) } -# @FUNCTION: doicon -# @USAGE: <list of icons> +# @FUNCTION: _iconins +# @INTERNAL # @DESCRIPTION: -# Install the list of icons into the icon directory (/usr/share/pixmaps). -# This is useful in conjunction with creating desktop/menu files. -doicon() { +# function for use in doicon and newicon +_iconins() { ( # wrap the env here so that the 'insinto' call # doesn't corrupt the env of the caller - local i j ret - insinto /usr/share/pixmaps - for i in "$@" ; do - if [[ -f ${i} ]] ; then - doins "${i}" - ((ret+=$?)) - elif [[ -d ${i} ]] ; then - for j in "${i}"/*.png ; do - doins "${j}" - ((ret+=$?)) - done - else - ((++ret)) - fi + local funcname=$1; shift + local size dir + local context=apps + local theme=hicolor + + while [[ $# -gt 0 ]] ; do + case $1 in + -s|--size) + if [[ ${2%%x*}x${2%%x*} == "$2" ]] ; then + size=${2%%x*} + else + size=${2} + fi + case ${size} in + 16|22|24|32|36|48|64|72|96|128|192|256) + size=${size}x${size};; + scalable) + ;; + *) + eerror "${size} is an unsupported icon size!" + exit 1;; + esac + shift 2;; + -t|--theme) + theme=${2} + shift 2;; + -c|--context) + context=${2} + shift 2;; + *) + if [[ -z ${size} ]] ; then + insinto /usr/share/pixmaps + else + insinto /usr/share/icons/${theme}/${size}/${context} + fi + + if [[ ${funcname} == doicon ]] ; then + if [[ -f $1 ]] ; then + doins "${1}" + elif [[ -d $1 ]] ; then + shopt -s nullglob + doins "${1}"/*.{png,svg} + shopt -u nullglob + else + eerror "${1} is not a valid file/directory!" + exit 1 + fi + else + break + fi + shift 1;; + esac done - exit ${ret} - ) + if [[ ${funcname} == newicon ]] ; then + newins "$@" + fi + ) || die +} + +# @FUNCTION: doicon +# @USAGE: [options] <icons> +# @DESCRIPTION: +# Install icon into the icon directory /usr/share/icons or into +# /usr/share/pixmaps if "--size" is not set. +# This is useful in conjunction with creating desktop/menu files. +# +# @CODE +# options: +# -s, --size +# !!! must specify to install into /usr/share/icons/... !!! +# size of the icon, like 48 or 48x48 +# supported icon sizes are: +# 16 22 24 32 36 48 64 72 96 128 192 256 scalable +# -c, --context +# defaults to "apps" +# -t, --theme +# defaults to "hicolor" +# +# icons: list of icons +# +# example 1: doicon foobar.png fuqbar.svg +# results in: insinto /usr/share/pixmaps +# doins foobar.png fuqbar.svg +# +# example 2: doicon -s 48 foobar.png fuqbar.png +# results in: insinto /usr/share/icons/hicolor/48x48/apps +# doins foobar.png fuqbar.png +# @CODE +doicon() { + _iconins ${FUNCNAME} "$@" } # @FUNCTION: newicon -# @USAGE: <icon> <newname> +# @USAGE: [options] <icon> <newname> # @DESCRIPTION: -# Like all other new* functions, install the specified icon as newname. +# Like doicon, install the specified icon as newname. +# +# @CODE +# example 1: newicon foobar.png NEWNAME.png +# results in: insinto /usr/share/pixmaps +# newins foobar.png NEWNAME.png +# +# example 2: newicon -s 48 foobar.png NEWNAME.png +# results in: insinto /usr/share/icons/hicolor/48x48/apps +# newins foobar.png NEWNAME.png +# @CODE newicon() { - ( - # wrap the env here so that the 'insinto' call - # doesn't corrupt the env of the caller - insinto /usr/share/pixmaps - newins "$@" - ) + _iconins ${FUNCNAME} "$@" } # @FUNCTION: strip-linguas |