Note: Due to technical difficulties, the Archives are currently not up to date.
GMANE provides an alternative service for most mailing lists. c.f. bug 424647
List Archive: gentoo-dev
I want support for installing icons into the appropriate directories
which are under /usr/share/icons/... and not just pixmaps.
proposal attached + diff
This should not break existing ebuilds. Tested a bit and open for review
now.
|
# @FUNCTION: doicon
# @USAGE: doicon [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
# @CODE
#
# 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.svg
# results in: insinto /usr/share/icons/hicolor/48x48/apps ; doins foobar.png fuqbar.svg
#
doicon() {
(
# wrap the env here so that the 'insinto' call
# doesn't corrupt the env of the caller
local size dir i ret
local context=apps
local theme=hicolor
while [[ $# -gt 0 ]] ; do
case ${1} in
-s|--size)
case ${2} in
16|22|24|32|36|48|64|72|96|128|192|256)
size=${2}x${2};;
16x16|22x22|24x24|32x32|36x36|48x48|64x64|72x72|96x96|128x128|192x192|256x256)
size=${2};;
scalable)
size=scalable;;
*)
eqawarn "${2} is an unsupported icon size!"
((++ret));;
esac
shift 2;;
-t|--theme)
theme=${2}
shift 2;;
-c|--context)
context=${2}
shift 2;;
*)
if [[ -z ${size} ]] ; then
dir=/usr/share/pixmaps
else
dir=/usr/share/icons/${theme}/${size}/${context}
fi
insinto "${dir}"
if [[ -f ${1} ]] ; then
doins "${1}"
((ret+=$?))
elif [[ -d ${1} ]] ; then
for i in "${1}"/*.{png,svg} ; do
doins "${i}"
((ret+=$?))
done
else
eqawarn "${1} is not a valid file/directory!"
((++ret))
fi
shift 1 ;;
esac
done
exit ${ret}
)
}
# @FUNCTION: newicon
# @USAGE: newicon [options] <icon> <newname>
# @DESCRIPTION:
# Like doicon, install the specified icon as newname.
#
# 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
#
newicon() {
(
# wrap the env here so that the 'insinto' call
# doesn't corrupt the env of the caller
local size dir ret
local context=apps
local theme=hicolor
while [[ $# -gt 0 ]] ; do
case ${1} in
-s|--size)
case ${2} in
16|22|24|32|36|48|64|72|96|128|192|256)
size=${2}x${2};;
16x16|22x22|24x24|32x32|36x36|48x48|64x64|72x72|96x96|128x128|192x192|256x256)
size=${2};;
scalable)
size=scalable;;
*)
eqawarn "${2} is an unsupported icon size!"
((++ret));;
esac
shift 2;;
-t|--theme)
theme=${2}
shift 2;;
-c|--context)
context=${2}
shift 2;;
*)
break ;;
esac
done
if [[ -z ${size} ]] ; then
dir=/usr/share/pixmaps
else
dir=/usr/share/icons/${theme}/${size}/${context}
fi
insinto "${dir}"
newins "$@"
((ret+=$?))
exit ${ret}
)
}
|
|