Gentoo Logo
Gentoo Spaceship




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
Navigation:
Lists: gentoo-dev: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: gentoo-dev@g.o
From: hasufell <hasufell@g.o>
Subject: enhancement for doicon/newicon in eutils.eclass
Date: Mon, 21 May 2012 01:24:13 +0200
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}
	)
}
Attachment:
eutils.eclass.diff (Text Data)
Replies:
Re: enhancement for doicon/newicon in eutils.eclass
-- hasufell
Re: enhancement for doicon/newicon in eutils.eclass
-- Michał Górny
Re: enhancement for doicon/newicon in eutils.eclass
-- Alexis Ballier
Navigation:
Lists: gentoo-dev: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
Do we need games group and all that game prefixes?
Next by thread:
Re: enhancement for doicon/newicon in eutils.eclass
Previous by date:
Re: Remove eclass/ChangeLog
Next by date:
Re: enhancement for doicon/newicon in eutils.eclass


Updated Jun 29, 2012

Summary: Archive of the gentoo-dev mailing list.

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.