Development/Architecture/KDE3/Icon Loader/gl: Difference between revisions
(Importing a new version from external source) |
(Importing a new version from external source) |
||
Line 39: | Line 39: | ||
Por exemplo, un usuario pode escoller iconos de 32×32 píxeles cunha desaturación de 0,2 para as barras de ferramentas principais. | Por exemplo, un usuario pode escoller iconos de 32×32 píxeles cunha desaturación de 0,2 para as barras de ferramentas principais. | ||
A continuación lístanse os grupos dispoñíbeis. Todos eles están definidos na clase [http://api.kde.org/3.5-api/kdelibs-apidocs/kdecore/html/classKIcon.html KIcon], polo que deben ir prefixados con ''KIcon::'' (por exemplo, <code>KIcon::Desktop</code>). | |||
[http://api.kde.org/3.5-api/kdelibs-apidocs/kdecore/html/classKIcon.html KIcon] | |||
* '''Desktop''' - Icons for use on the desktop, in the filemanager and similar places. | * '''Desktop''' - Icons for use on the desktop, in the filemanager and similar places. |
Revision as of 09:43, 22 December 2012
Cargar e instalar iconas en KDE
As iconas son un elemento importante da interface de usuario de calquera ambiente de escritorio. Ben por escolla do usuario, ben polas propias limitacións do hardware, unha mesma icona pode fornecerse en diferentes resolucións e profundidades de cor. Para xestionar a situación dunha maneira fácil, desenvolveuse un xeito estándar de almacenar e acceder ás iconas.
Cargar iconas
Acceder ao cargador de iconas
As iconas cárganse mediante a clase KIconLoader. Todo aplicativo de KDe conta cun obxecto de carga de iconas global. Pode acceder ao obxecto co seguinte código:
#include <kglobal.h>
#include <kiconloader.h>
KIconLoader *cargador = KGlobal::iconLoader();
Cargar iconas con loadIcon()
O cargador de iconas non se limita só a iso; tamén garda as iconas na caché e aplícalles efectos. Para cargar unha icona, empregue o método loadIcon(); a súa declaración é a seguinte:
QPixmap loadIcon( QString nome, int grupo, int tamano=0,
int estado=KIcon::DefaultState,
QString *ruta_almacenamento=0L, bool podeDevolverNulo=false);
Como pode observar, son moitos os parámtros que pode recibir o método. Os máis importantes son os dous primeiros:
- nome. O nome da icona a cargar. Debe indicar o nome a secas, sen extensión.
- grupo. O grupo ao que pertence a icona. O concepto de grupo explícase máis adiante.
Grupos de iconas
O concepto de «grupo de icona» ten grande importancia dentro do esquema de iconas de KDE. O grupo denota en que parte da pantalla vai empregarse a icona. Esta información é relevante porque os usuarios de KDe poden asociar resolucións de iconas e efectos visuais a cada grupo. Ao pasarlle o grupo ao cargador de iconas, está a indicar que versión da icona cargar. E que o parámetro sexa obrigatorio axuda a conseguir unha aparencia consistente e personalizábel no conxunto do ambiente de escritorio KDE.
Por exemplo, un usuario pode escoller iconos de 32×32 píxeles cunha desaturación de 0,2 para as barras de ferramentas principais.
A continuación lístanse os grupos dispoñíbeis. Todos eles están definidos na clase KIcon, polo que deben ir prefixados con KIcon:: (por exemplo, KIcon::Desktop
).
- Desktop - Icons for use on the desktop, in the filemanager and similar places.
- Toolbar - Icon for in normal toolbars.
- MainToolbar - Icons for in the main toolbar. An application can have multiple toolbars, of which one is allways the main toolbar. This typically has entries like "Save" and "Open" and contains larger icons than the other toolbars.
- Small - Various small icons, like the ones in popup menus, listviews and treelists.
- User - Special group for loading application specific icons. This is explained in section 3: Installing icons.
So, to load the icon "kfind" for use in the Desktop group, you'd use:
QPixmap icon;
icon = loader->loadIcon("kfind", KIcon::Desktop);
loadIcon continued
Now lets discuss the other parameters of loadIcon.
- size - Override the globally configured size for the specified icon group. Effects bound to the group are still applied.
- state - The icon state. The icon state is one of KIcon::DefaultState, KIcon::ActiveState or KIcon::DisabledState. The icon state denotes in which state the icon is. Toolbar buttons, for example, are in state active if the mouse pointer is above them, in state disabled when they are not available, and default otherwise. Each icon state can have different effects assigned to it to give the user visual feedback.
- path_store - If you want to know where the icon you just loaded is in the filesystem, you can pass a pointer to a QString here and the icon path is stored there.
- canReturnNull - If the requested icon is not found, the result of loadIcon depends on this parameter. If canReturnNull is true, a null pixmap will be returned, if not, the "unknown" icon is returned.
Installing icons
Icons may come in different sizes and display depths. I shall refer to these icons as themed icons. Icons that come in just one form are referred to as unthemed icons.
Default icon sizes
Themed icons come in different sizes and display depths. The standard sizes are:
- 40 Colors
- 16x16 pixels
- 22x22 pixels
- 32x32 pixels
- Truecolor
- 22x22 pixels
- 32x32 pixels
- 48x48 pixels
Please refer to the KDE icon factory for information on which icon sizes are mandatory and more. Remember that each of these sizes can be bound to an icon group.
Icon context
Themed icons are stored in a directory hierarchy according to their 1. depth, 2. size and 3. context. The term context is new concept introduced by the KDE icon scheme. The context of an icon is what the icon means. The standard contexts are given below:
- action - The icon represents an action in a toolbar, for example "Open" or "Save".
- application - The icon represents an application, for example "kfind".
- device - The icon represents something related to a device, for example "floppy" or "mount".
- filesystem - The icon represents something in the filesystem, for example "directory", "socket" or "trashcan".
- mimetype - The icon represents an mimetype, for example "text/html".
Contexts are important in one case: selecting an icon. When an application wants the user to select an icon for, say, a toolbar, it would be very user unfriendly to show every single icon installed in KDE. Instead, it is much better to let the user select an icon from the "action" icons only. These all represent some action and therefore are suitable for in toolbars.
Directory hierarchy
The directory hierarchy in which themed icons are stored follows. The directory names are self explanatory.
hicolor/ 22x22/ actions/ apps/ devices/ filesystems/ mimetypes/ 32x32/ ... 48x48/ ... locolor/ 16x16/ ... 22x22/ ... 32x32/ ...
Directory roots
Themed icons can be installed either globally with respect to KDE, or in application specific place. In the global case, the icon theme hierarchy resides under $KDEDIR/share/icons while in the application specific case, it is under $KDEDIR/share/apps/$APPNAME/icons.
Installing themed icons
The KDE source configuration system (specifically, am_edit) has support for installing themed icons. First, you have to name your icons in a way that it is clear where it must be installed. The naming convention is explained in the table below:
depth | size | - | context | - | name | .png |
---|---|---|---|---|---|---|
hi | 16 | action | ||||
lo | 22 | app | ||||
32 | device | |||||
48 | filesys | |||||
mime |
Examples:
lo22-action-open.png hi48-app-kfind.png
To install these icons globally, add this line to your Makefile.am.
KDE_ICON = open kfind
and to install them in an application specific directory, use this:
icondir = $(kde_datadir)/myapp/icons icon_ICON = open kfind
Loading themed icons
Themed icons are loaded with the iconloader, using the standard icon groups. For example:
QPixmap pm;
pm = loader->loadIcon("kfind", KIcon::Desktop);
This will load the "kfind" icon, of depth and size specified for the Desktop group.
Unthemed icons
Unthemed icons are installed in $KDEDIR/share/apps/$APPNAME/pics. To install them, use this in you Makefile.am.
icondir = $(kde_datadir)/myapp/pics icon_DATA = open kfind
You must not give the icons special names. Also, no further processing is done on them: no effects and size,depth selection is done.
Unthemed icons can be loaded with the iconloader using the User group. This will load a user icon:
QPixmap pm;
pm = loader->loadIcon("myicon", KIcon::User);
Conclusion
There are 3 ways to install icons: global themed, application specific themed and unthemed. All types of icons can be loaded with the iconloader. You should choose a specific installation depending on your needs.
Initial Author: Geert Jansen <[email protected]>