FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Gentoo > Gentoo Development

 
 
LinkBack Thread Tools
 
Old 05-20-2012, 11:24 PM
hasufell
 
Default enhancement for doicon/newicon in eutils.eclass

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|96 x96|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|96 x96|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}
)
}
 

Thread Tools




All times are GMT. The time now is 03:57 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org