2
#ifndef __CAIRO_DOCK_ICONS__
3
#define __CAIRO_DOCK_ICONS__
7
#include "cairo-dock-struct.h"
11
*TRUE ssi l'icone est une icone de lanceur.
12
*@param icon une icone.
14
#define CAIRO_DOCK_IS_LAUNCHER(icon) (icon != NULL && (icon->acCommand != NULL || (icon->pSubDock != NULL && icon->pModuleInstance == NULL && icon->Xid == 0)))
16
*TRUE ssi l'icone est une icone d'appli.
17
*@param icon une icone.
19
#define CAIRO_DOCK_IS_APPLI(icon) (icon != NULL && icon->Xid != 0)
21
*TRUE ssi l'icone est une icone d'applet.
22
*@param icon une icone.
24
#define CAIRO_DOCK_IS_APPLET(icon) (icon != NULL && icon->pModuleInstance != NULL)
26
*TRUE ssi l'icone est une icone de separateur.
27
*@param icon une icone.
29
#define CAIRO_DOCK_IS_SEPARATOR(icon) (icon != NULL && (icon->acName == NULL && icon->pModuleInstance == NULL && icon->Xid == 0)) /* (icon->iType & 1) || */
32
*TRUE ssi l'icone est une icone de lanceur defini par un fichier .desktop.
33
*@param icon une icone.
35
#define CAIRO_DOCK_IS_NORMAL_LAUNCHER(icon) (CAIRO_DOCK_IS_LAUNCHER (icon) && icon->acDesktopFileName != NULL)
37
*TRUE ssi l'icone est une icone de lanceur representant une URI.
38
*@param icon une icone.
40
#define CAIRO_DOCK_IS_URI_LAUNCHER(icon) (CAIRO_DOCK_IS_LAUNCHER (icon) && icon->cBaseURI != NULL)
42
*TRUE ssi l'icone est une icone de separateur ajoutee automatiquement.
43
*@param icon une icone.
45
#define CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR(icon) (CAIRO_DOCK_IS_SEPARATOR (icon) && icon->acDesktopFileName == NULL)
47
*TRUE ssi l'icone est une icone de separateur ajoutee par l'utilisateur.
48
*@param icon une icone.
50
#define CAIRO_DOCK_IS_USER_SEPARATOR(icon) (CAIRO_DOCK_IS_SEPARATOR (icon) && icon->acDesktopFileName != NULL)
52
*TRUE ssi l'icone est une icone d'appli seulement.
53
*@param icon une icone.
55
#define CAIRO_DOCK_IS_NORMAL_APPLI(icon) (CAIRO_DOCK_IS_APPLI (icon) && icon->acDesktopFileName == NULL && icon->pModuleInstance == NULL)
57
*TRUE ssi l'icone est une icone d'applet detachable en desklet.
58
*@param icon une icone.
60
#define CAIRO_DOCK_IS_DETACHABLE_APPLET(icon) (CAIRO_DOCK_IS_APPLET (icon) && icon->pModuleInstance->bCanDetach)
63
* Desactive une icone, et libere tous ses buffers, ainsi qu'elle-meme. Le sous-dock pointee par elle n'est pas dereferencee, cela doit etre fait au prealable. Gere egalement la classe.
64
*@param icon l'icone a liberer.
66
void cairo_dock_free_icon (Icon *icon);
68
* Libere tous les buffers d'une incone.
71
void cairo_dock_free_icon_buffers (Icon *icon);
74
#define cairo_dock_get_group_order(iType) (iType < CAIRO_DOCK_NB_TYPES ? g_tIconTypeOrder[iType] : iType)
75
#define cairo_dock_get_icon_order(icon) cairo_dock_get_group_order (icon->iType)
78
*Donne le type d'une icone relativement a son contenu.
81
CairoDockIconType cairo_dock_get_icon_type (Icon *icon);
83
*Compare 2 icones grace a la relation d'ordre sur le couple (position du type , ordre).
84
*@param icon1 une icone.
85
*@param icon2 une autre icone.
86
*@return -1 si icone1 < icone2, 1 si icone1 > icone2, 0 si icone1 = icone2 (au sens de la relation d'ordre).
88
int cairo_dock_compare_icons_order (Icon *icon1, Icon *icon2);
90
*Compare 2 icones grace a la relation d'ordre sur le nom (ordre alphabetique sur les noms passes en minuscules).
91
*@param icon1 une icone.
92
*@param icon2 une autre icone.
93
*@return -1 si icone1 < icone2, 1 si icone1 > icone2, 0 si icone1 = icone2 (au sens de la relation d'ordre).
95
int cairo_dock_compare_icons_name (Icon *icon1, Icon *icon2);
97
*Compare 2 icones grace a la relation d'ordre sur l'extension des URIs (ordre alphabetique compte en passant en minuscules).
98
*@param icon1 une icone.
99
*@param icon2 une autre icone.
100
*@return -1 si icone1 < icone2, 1 si icone1 > icone2, 0 si icone1 = icone2 (au sens de la relation d'ordre).
102
int cairo_dock_compare_icons_extension (Icon *icon1, Icon *icon2);
105
*Trie une liste en se basant sur la relation d'ordre sur le couple (position du type , ordre).
106
*@param pIconList la liste d'icones.
107
*@return la liste triee. Les elements sont les memes que ceux de la liste initiale, seul leur ordre a change.
109
GList *cairo_dock_sort_icons_by_order (GList *pIconList);
111
*Trie une liste en se basant sur la relation d'ordre alphanumerique sur le nom des icones.
112
*@param pIconList la liste d'icones.
113
*@return la liste triee. Les elements sont les memes que ceux de la liste initiale, seul leur ordre a change. Les ordres des icones sont mis a jour pour refleter le nouvel ordre global.
115
GList *cairo_dock_sort_icons_by_name (GList *pIconList);
118
*Renvoie la 1ere icone d'une liste d'icones.
119
*@param pIconList la liste d'icones.
120
*@return la 1ere icone, ou NULL si la liste est vide.
123
Icon *cairo_dock_get_first_icon (GList *pIconList);
125
*Renvoie la derniere icone d'une liste d'icones.
126
*@param pIconList la liste d'icones.
127
*@return la derniere icone, ou NULL si la liste est vide.
129
Icon *cairo_dock_get_last_icon (GList *pIconList);
131
*Renvoie la 1ere icone a etre dessinee dans un dock (qui n'est pas forcement la 1ere icone de la liste, si l'utilisateur a scrolle).
132
*@param pDock le dock.
133
*@return la 1ere icone a etre dessinee, ou NULL si la liste est vide.
135
Icon *cairo_dock_get_first_drawn_icon (CairoDock *pDock);
137
*Renvoie la derniere icone a etre dessinee dans un dock (qui n'est pas forcement la derniere icone de la liste, si l'utilisateur a scrolle).
138
*@param pDock le dock.
139
*@return la derniere icone a etre dessinee, ou NULL si la liste est vide.
141
Icon *cairo_dock_get_last_drawn_icon (CairoDock *pDock);
143
*Renvoie la 1ere icone du type donne.
144
*@param pIconList la liste d'icones.
145
*@param iType le type d'icone recherche.
146
*@return la 1ere icone trouvee ayant ce type, ou NULL si aucune icone n'est trouvee.
148
Icon *cairo_dock_get_first_icon_of_type (GList *pIconList, CairoDockIconType iType);
150
*Renvoie la derniere icone du type donne.
151
*@param pIconList la liste d'icones.
152
*@param iType le type d'icone recherche.
153
*@return la derniere icone trouvee ayant ce type, ou NULL si aucune icone n'est trouvee.
155
Icon *cairo_dock_get_last_icon_of_type (GList *pIconList, CairoDockIconType iType);
157
*Renvoie la 1ere icone dont le groupe correspond.
158
*@param pIconList la liste d'icones.
159
*@param iType le type/groupe dont on recherche l'ordre.
160
*@return la 1ere icone trouvee ayant cet ordre, ou NULL si aucune icone n'est trouvee.
162
Icon* cairo_dock_get_first_icon_of_order (GList *pIconList, CairoDockIconType iType);
164
*Renvoie la derniere icone dont le groupe correspond.
165
*@param pIconList la liste d'icones.
166
*@param iType le type/groupe d'icone recherche.
167
*@return la derniere icone trouvee ayant cet ordre, ou NULL si aucune icone n'est trouvee.
169
Icon* cairo_dock_get_last_icon_of_order (GList *pIconList, CairoDockIconType iType);
171
*Renvoie l'icone actuellement pointee parmi une liste d'icones.
172
*@param pIconList la liste d'icones.
173
*@return l'icone dont le champ bPointed a TRUE, ou NULL si aucune icone n'est pointee.
175
Icon *cairo_dock_get_pointed_icon (GList *pIconList);
177
*Renvoie l'icone actuellement en cours d'animation due a un clique parmi une liste d'icones.
178
*@param pIconList la liste d'icones.
179
*@return la 1ere icone dont le champ iCount est > 0 ou NULL si aucune icone n'est en cours d'animation.
181
Icon *cairo_dock_get_bouncing_icon (GList *pIconList);
183
*Renvoie l'icone actuellement en cours d'insertion ou de suppression parmi une liste d'icones.
184
*@param pIconList la liste d'icones.
185
*@return la 1ere icone dont le champ fPersonnalScale est non nul ou NULL si aucune icone n'est en cours d'insertion / suppression.
187
Icon *cairo_dock_get_removing_or_inserting_icon (GList *pIconList);
189
*Renvoie l'icone actuellement en cours d'animation (due a un clique ou a une insertion / suppression) parmi une liste d'icones.
190
*@param pIconList la liste d'icones.
191
*@return la 1ere icone dont le champ iCount est > 0 ou le champ fPersonnalScale est non nul, ou NULL si aucune icone n'est en cours d'animation.
193
Icon *cairo_dock_get_animated_icon (GList *pIconList);
195
*Renvoie l'icone suivante dans la liste d'icones. Cout en O(n).
196
*@param pIconList la liste d'icones.
197
*@param pIcon l'icone dont on veut le voisin.
198
*@return l'icone dont le voisin de gauche est pIcon, ou NULL si pIcon est la derniere icone de la liste.
200
Icon *cairo_dock_get_next_icon (GList *pIconList, Icon *pIcon);
202
*Renvoie l'icone precedente dans la liste d'icones. Cout en O(n).
203
*@param pIconList la liste d'icones.
204
*@param pIcon l'icone dont on veut le voisin.
205
*@return l'icone dont le voisin de droite est pIcon, ou NULL si pIcon est la 1ere icone de la liste.
207
Icon *cairo_dock_get_previous_icon (GList *pIconList, Icon *pIcon);
209
*Renvoie le prochain element dans la liste, en bouclant si necessaire.
210
*@param ic l'element courant.
211
*@param list la liste d'icones.
212
*@return l'element suivant de la liste bouclee.
214
#define cairo_dock_get_next_element(ic, list) (ic->next == NULL ? list : ic->next)
216
*Renvoie l'element precedent dans la liste, en bouclant si necessaire.
217
*@param ic l'element courant.
218
*@param list la liste d'icones.
219
*@return l'element precedent de la liste bouclee.
221
#define cairo_dock_get_previous_element(ic, list) (ic->prev == NULL ? g_list_last (list) : ic->prev)
223
*Cherche l'icone ayant une commande donnee parmi une liste d'icones.
224
*@param pIconList la liste d'icones.
225
*@param cCommand la chaine de commande.
226
*@return la 1ere icone ayant le champ 'acExec' identique a la commande fournie, ou NULL si aucune icone ne correspond.
228
Icon *cairo_dock_get_icon_with_command (GList *pIconList, gchar *cCommand);
230
*Cherche l'icone ayant une URI de base donnee parmi une liste d'icones.
231
*@param pIconList la liste d'icones.
232
*@param cBaseURI l'URI.
233
*@return la 1ere icone ayant le champ 'cBaseURI' identique a l'URI fournie, ou NULL si aucune icone ne correspond.
235
Icon *cairo_dock_get_icon_with_base_uri (GList *pIconList, const gchar *cBaseURI);
237
Icon *cairo_dock_get_icon_with_name (GList *pIconList, const gchar *cName);
240
*Cherche l'icone pointant sur un sous-dock donne parmi une liste d'icones.
241
*@param pIconList la liste d'icones.
242
*@param pSubDock le sous-dock.
243
*@return la 1ere icone ayant le champ 'pSubDock' identique au sous-dock fourni, ou NULL si aucune icone ne correspond.
245
Icon *cairo_dock_get_icon_with_subdock (GList *pIconList, CairoDock *pSubDock);
247
*Cherche l'icone correspondante a un module donne parmi une liste d'icones.
248
*@param pIconList la liste d'icones.
249
*@param pModule le module.
250
*@return la 1ere icone ayant le champ 'pModule' identique au module fourni, ou NULL si aucune icone ne correspond.
252
Icon *cairo_dock_get_icon_with_module (GList *pIconList, CairoDockModule *pModule);
254
*Cherche l'icone d'une application de classe donnee parmi une liste d'icones.
255
*@param pIconList la liste d'icones.
256
*@param cClass la classe d'application.
257
*@return la 1ere icone ayant le champ 'cClass' identique a la classe fournie, ou NULL si aucune icone ne correspond.
259
Icon *cairo_dock_get_icon_with_class (GList *pIconList, gchar *cClass);
261
#define cairo_dock_none_clicked(pIconList) (cairo_dock_get_bouncing_icon (pIconList) == NULL)
262
#define cairo_dock_none_removed_or_inserted(pIconList) (cairo_dock_get_removing_or_inserting_icon (pIconList) == NULL)
263
#define cairo_dock_none_animated(pIconList) (cairo_dock_get_animated_icon (pIconList) == NULL)
265
#define cairo_dock_get_first_launcher(pIconList) cairo_dock_get_first_icon_of_type (pIconList, CAIRO_DOCK_LAUNCHER)
266
#define cairo_dock_get_last_launcher(pIconList) cairo_dock_get_last_icon_of_type (pIconList, CAIRO_DOCK_LAUNCHER)
267
#define cairo_dock_get_first_appli(pIconList) cairo_dock_get_first_icon_of_type (pIconList, CAIRO_DOCK_APPLI)
268
#define cairo_dock_get_last_appli(pIconList) cairo_dock_get_last_icon_of_type (pIconList, CAIRO_DOCK_APPLI)
271
void cairo_dock_normalize_icons_order (GList *pIconList, CairoDockIconType iType);
272
void cairo_dock_swap_icons (CairoDock *pDock, Icon *icon1, Icon *icon2);
273
void cairo_dock_move_icon_after_icon (CairoDock *pDock, Icon *icon1, Icon *icon2);
276
*Detache une icone de son dock, en enlevant les separateurs superflus si necessaires. L'icone n'est pas detruite, et peut etre re-inseree autre part telle qu'elle; elle garde son sous-dock, mais perd son dialogue.
277
*@param icon l'icone a detacher.
278
*@param pDock le dock contenant l'icone.
279
*@param bCheckUnusedSeparator si TRUE, alors teste si des separateurs sont devenus superflus, et les enleve le cas echeant.
280
*@return TRUE ssi l'icone a effectivement ete enlevee, FALSE si elle l'etait deja.
282
gboolean cairo_dock_detach_icon_from_dock (Icon *icon, CairoDock *pDock, gboolean bCheckUnusedSeparator);
284
*Detache une icone de son dock, sans verifier la presence de separateurs superflus. L'icone n'est pas detruite, et garde son sous-dock, mais perd son dialogue et est fermee (son .desktop est detruit, son module est desactive, et son Xid est effacee du registre (la classe est geree aussi)).
285
*@param pDock le dock contenant l'icone.
286
*@param icon l'icone a detacher.
288
void cairo_dock_remove_one_icon_from_dock (CairoDock *pDock, Icon *icon);
290
*Detache une icone de son dock, en enlevant les separateurs superflus si necessaires. L'icone n'est pas detruite, et garde son sous-dock, mais perd son dialogue et est fermee (son .desktop est detruit, son module est desactive, et son Xid est effacee du registre (la classe est geree aussi)).
291
*@param pDock le dock contenant l'icone.
292
*@param icon l'icone a detacher.
294
void cairo_dock_remove_icon_from_dock (CairoDock *pDock, Icon *icon);
296
*Enleve et detruit toutes les icones dont le type est celui fourni.
297
*@param pDock le dock contenant l'icone.
298
*@param iType le type d'icones a supprimer.
300
void cairo_dock_remove_icons_of_type (CairoDock *pDock, CairoDockIconType iType);
302
*Enleve et detruit toutes les icones d'applications.
303
*@param pDock le dock duquel supprimer les icones.
305
#define cairo_dock_remove_all_applis(pDock) cairo_dock_remove_icons_of_type (pDock, CAIRO_DOCK_APPLI)
307
*Enleve et detruit toutes les icones d'applets.
308
*@param pDock le dock duquel supprimer les icones.
310
#define cairo_dock_remove_all_applets(pDock) cairo_dock_remove_icons_of_type (pDock, CAIRO_DOCK_APPLET)
312
*Effectue une action sur toutes les icones d'un type donne. L'action peut meme detruire et enlever de la liste l'icone courante.
313
*@param pIconList la liste d'icones a parcourir.
314
*@param iType le type d'icone.
315
*@param pFuntion l'action a effectuer sur chaque icone.
316
*@param data un pointeur qui sera passe en entree de l'action.
317
*@return le separateur avec le type a gauche si il y'en a, NULL sinon.
319
Icon *cairo_dock_foreach_icons_of_type (GList *pIconList, CairoDockIconType iType, CairoDockForeachIconFunc pFuntion, gpointer data);
321
*Enleve et detruit toutes les icones de separateurs automatiques.
322
*@param pDock le dock duquel supprimer les icones.
324
void cairo_dock_remove_all_separators (CairoDock *pDock);
327
*Ajoute des separateurs automatiques entre les differents types d'icones.
328
*@param pDock le dock auquel rajouter les separateurs.
330
void cairo_dock_insert_separators_in_dock (CairoDock *pDock);
333
GList * cairo_dock_calculate_icons_positions_at_rest_linear (GList *pIconList, double fFlatDockWidth, int iXOffset);
335
inline void cairo_dock_update_removing_inserting_icon (Icon *icon);
337
Icon * cairo_dock_calculate_wave_with_position_linear (GList *pIconList, GList *pFirstDrawnElement, int x_abs, gdouble fMagnitude, double fFlatDockWidth, int iWidth, int iHeight, double fAlign, double fLateralFactor, gboolean bDirectionUp);
339
Icon *cairo_dock_apply_wave_effect (CairoDock *pDock);
341
CairoDockMousePositionType cairo_dock_check_if_mouse_inside_linear (CairoDock *pDock);
343
void cairo_dock_manage_mouse_position (CairoDock *pDock, CairoDockMousePositionType iMousePositionType);
346
double cairo_dock_calculate_max_dock_width (CairoDock *pDock, GList *pFirstDrawnElement, double fFlatDockWidth, double fWidthConstraintFactor, double fExtraWidth);
349
void cairo_dock_mark_icons_as_avoiding_mouse (CairoDock *pDock, CairoDockIconType iType, double fMargin);
350
void cairo_dock_mark_avoiding_mouse_icons_linear (CairoDock *pDock);
351
void cairo_dock_stop_marking_icons (CairoDock *pDock);
354
*Met a jour le fichier .desktop d'un lanceur avec le nom de son nouveau conteneur.
355
*@param icon l'icone du lanceur.
356
*@param cNewParentDockName le nom de son nouveau conteneur.
358
void cairo_dock_update_icon_s_container_name (Icon *icon, const gchar *cNewParentDockName);