~helene-verhaeghe27/cairo-dock-core/bugfix

« back to all changes in this revision

Viewing changes to src/cairo-dock-icons2.h

  • Committer: fabounet
  • Date: 2008-11-14 01:51:17 UTC
  • Revision ID: vcs-imports@canonical.com-20081114015117-854dznkw3lfva52x
The commit of the year \!

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#ifndef __CAIRO_DOCK_ICONS__
 
3
#define  __CAIRO_DOCK_ICONS__
 
4
 
 
5
#include <glib.h>
 
6
 
 
7
#include "cairo-dock-struct.h"
 
8
G_BEGIN_DECLS
 
9
 
 
10
/**
 
11
*TRUE ssi l'icone est une icone de lanceur.
 
12
*@param icon une icone.
 
13
*/
 
14
#define CAIRO_DOCK_IS_LAUNCHER(icon) (icon != NULL && (icon->acCommand != NULL || (icon->pSubDock != NULL && icon->pModuleInstance == NULL && icon->Xid == 0)))
 
15
/**
 
16
*TRUE ssi l'icone est une icone d'appli.
 
17
*@param icon une icone.
 
18
*/
 
19
#define CAIRO_DOCK_IS_APPLI(icon) (icon != NULL && icon->Xid != 0)
 
20
/**
 
21
*TRUE ssi l'icone est une icone d'applet.
 
22
*@param icon une icone.
 
23
*/
 
24
#define CAIRO_DOCK_IS_APPLET(icon) (icon != NULL && icon->pModuleInstance != NULL)
 
25
/**
 
26
*TRUE ssi l'icone est une icone de separateur.
 
27
*@param icon une icone.
 
28
*/
 
29
#define CAIRO_DOCK_IS_SEPARATOR(icon) (icon != NULL && (icon->acName == NULL && icon->pModuleInstance == NULL && icon->Xid == 0))  /* (icon->iType & 1) || */
 
30
 
 
31
/**
 
32
*TRUE ssi l'icone est une icone de lanceur defini par un fichier .desktop.
 
33
*@param icon une icone.
 
34
*/
 
35
#define CAIRO_DOCK_IS_NORMAL_LAUNCHER(icon) (CAIRO_DOCK_IS_LAUNCHER (icon) && icon->acDesktopFileName != NULL)
 
36
/**
 
37
*TRUE ssi l'icone est une icone de lanceur representant une URI.
 
38
*@param icon une icone.
 
39
*/
 
40
#define CAIRO_DOCK_IS_URI_LAUNCHER(icon) (CAIRO_DOCK_IS_LAUNCHER (icon) && icon->cBaseURI != NULL)
 
41
/**
 
42
*TRUE ssi l'icone est une icone de separateur ajoutee automatiquement.
 
43
*@param icon une icone.
 
44
*/
 
45
#define CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR(icon) (CAIRO_DOCK_IS_SEPARATOR (icon) && icon->acDesktopFileName == NULL)
 
46
/**
 
47
*TRUE ssi l'icone est une icone de separateur ajoutee par l'utilisateur.
 
48
*@param icon une icone.
 
49
*/
 
50
#define CAIRO_DOCK_IS_USER_SEPARATOR(icon) (CAIRO_DOCK_IS_SEPARATOR (icon) && icon->acDesktopFileName != NULL)
 
51
/**
 
52
*TRUE ssi l'icone est une icone d'appli seulement.
 
53
*@param icon une icone.
 
54
*/
 
55
#define CAIRO_DOCK_IS_NORMAL_APPLI(icon) (CAIRO_DOCK_IS_APPLI (icon) && icon->acDesktopFileName == NULL && icon->pModuleInstance == NULL)
 
56
/**
 
57
*TRUE ssi l'icone est une icone d'applet detachable en desklet.
 
58
*@param icon une icone.
 
59
*/
 
60
#define CAIRO_DOCK_IS_DETACHABLE_APPLET(icon) (CAIRO_DOCK_IS_APPLET (icon) && icon->pModuleInstance->bCanDetach)
 
61
 
 
62
/**
 
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.
 
65
*/
 
66
void cairo_dock_free_icon (Icon *icon);
 
67
/**
 
68
* Libere tous les buffers d'une incone.
 
69
*@param icon l'icone.
 
70
*/
 
71
void cairo_dock_free_icon_buffers (Icon *icon);
 
72
 
 
73
 
 
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)
 
76
 
 
77
/**
 
78
*Donne le type d'une icone relativement a son contenu.
 
79
*@param icon l'icone.
 
80
*/
 
81
CairoDockIconType cairo_dock_get_icon_type (Icon *icon);
 
82
/**
 
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).
 
87
*/
 
88
int cairo_dock_compare_icons_order (Icon *icon1, Icon *icon2);
 
89
/**
 
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).
 
94
*/
 
95
int cairo_dock_compare_icons_name (Icon *icon1, Icon *icon2);
 
96
/**
 
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).
 
101
*/
 
102
int cairo_dock_compare_icons_extension (Icon *icon1, Icon *icon2);
 
103
 
 
104
/**
 
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.
 
108
*/
 
109
GList *cairo_dock_sort_icons_by_order (GList *pIconList);
 
110
/**
 
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.
 
114
*/
 
115
GList *cairo_dock_sort_icons_by_name (GList *pIconList);
 
116
 
 
117
/**
 
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.
 
121
*/
 
122
 
 
123
Icon *cairo_dock_get_first_icon (GList *pIconList);
 
124
/**
 
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.
 
128
*/
 
129
Icon *cairo_dock_get_last_icon (GList *pIconList);
 
130
/**
 
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.
 
134
*/
 
135
Icon *cairo_dock_get_first_drawn_icon (CairoDock *pDock);
 
136
/**
 
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.
 
140
*/
 
141
Icon *cairo_dock_get_last_drawn_icon (CairoDock *pDock);
 
142
/**
 
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.
 
147
*/
 
148
Icon *cairo_dock_get_first_icon_of_type (GList *pIconList, CairoDockIconType iType);
 
149
/**
 
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.
 
154
*/
 
155
Icon *cairo_dock_get_last_icon_of_type (GList *pIconList, CairoDockIconType iType);
 
156
/**
 
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.
 
161
*/
 
162
Icon* cairo_dock_get_first_icon_of_order (GList *pIconList, CairoDockIconType iType);
 
163
/**
 
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.
 
168
*/
 
169
Icon* cairo_dock_get_last_icon_of_order (GList *pIconList, CairoDockIconType iType);
 
170
/**
 
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.
 
174
*/
 
175
Icon *cairo_dock_get_pointed_icon (GList *pIconList);
 
176
/**
 
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.
 
180
*/
 
181
Icon *cairo_dock_get_bouncing_icon (GList *pIconList);
 
182
/**
 
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.
 
186
*/
 
187
Icon *cairo_dock_get_removing_or_inserting_icon (GList *pIconList);
 
188
/**
 
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.
 
192
*/
 
193
Icon *cairo_dock_get_animated_icon (GList *pIconList);
 
194
/**
 
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.
 
199
*/
 
200
Icon *cairo_dock_get_next_icon (GList *pIconList, Icon *pIcon);
 
201
/**
 
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.
 
206
*/
 
207
Icon *cairo_dock_get_previous_icon (GList *pIconList, Icon *pIcon);
 
208
/**
 
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.
 
213
*/
 
214
#define cairo_dock_get_next_element(ic, list) (ic->next == NULL ? list : ic->next)
 
215
/**
 
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.
 
220
*/
 
221
#define cairo_dock_get_previous_element(ic, list) (ic->prev == NULL ? g_list_last (list) : ic->prev)
 
222
/**
 
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.
 
227
*/
 
228
Icon *cairo_dock_get_icon_with_command (GList *pIconList, gchar *cCommand);
 
229
/**
 
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.
 
234
*/
 
235
Icon *cairo_dock_get_icon_with_base_uri (GList *pIconList, const gchar *cBaseURI);
 
236
 
 
237
Icon *cairo_dock_get_icon_with_name (GList *pIconList, const gchar *cName);
 
238
 
 
239
/**
 
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.
 
244
*/
 
245
Icon *cairo_dock_get_icon_with_subdock (GList *pIconList, CairoDock *pSubDock);
 
246
/**
 
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.
 
251
*/
 
252
Icon *cairo_dock_get_icon_with_module (GList *pIconList, CairoDockModule *pModule);
 
253
/**
 
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.
 
258
*/
 
259
Icon *cairo_dock_get_icon_with_class (GList *pIconList, gchar *cClass);
 
260
 
 
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)
 
264
 
 
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)
 
269
 
 
270
 
 
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);
 
274
 
 
275
/**
 
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.
 
281
*/
 
282
gboolean cairo_dock_detach_icon_from_dock (Icon *icon, CairoDock *pDock, gboolean bCheckUnusedSeparator);
 
283
/**
 
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.
 
287
*/
 
288
void cairo_dock_remove_one_icon_from_dock (CairoDock *pDock, Icon *icon);
 
289
/**
 
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.
 
293
*/
 
294
void cairo_dock_remove_icon_from_dock (CairoDock *pDock, Icon *icon);
 
295
/**
 
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.
 
299
*/
 
300
void cairo_dock_remove_icons_of_type (CairoDock *pDock, CairoDockIconType iType);
 
301
/**
 
302
*Enleve et detruit toutes les icones d'applications.
 
303
*@param pDock le dock duquel supprimer les icones.
 
304
*/
 
305
#define cairo_dock_remove_all_applis(pDock) cairo_dock_remove_icons_of_type (pDock, CAIRO_DOCK_APPLI)
 
306
/**
 
307
*Enleve et detruit toutes les icones d'applets.
 
308
*@param pDock le dock duquel supprimer les icones.
 
309
*/
 
310
#define cairo_dock_remove_all_applets(pDock) cairo_dock_remove_icons_of_type (pDock, CAIRO_DOCK_APPLET)
 
311
/**
 
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.
 
318
*/
 
319
Icon *cairo_dock_foreach_icons_of_type (GList *pIconList, CairoDockIconType iType, CairoDockForeachIconFunc pFuntion, gpointer data);
 
320
/**
 
321
*Enleve et detruit toutes les icones de separateurs automatiques.
 
322
*@param pDock le dock duquel supprimer les icones.
 
323
*/
 
324
void cairo_dock_remove_all_separators (CairoDock *pDock);
 
325
 
 
326
/**
 
327
*Ajoute des separateurs automatiques entre les differents types d'icones.
 
328
*@param pDock le dock auquel rajouter les separateurs.
 
329
*/
 
330
void cairo_dock_insert_separators_in_dock (CairoDock *pDock);
 
331
 
 
332
 
 
333
GList * cairo_dock_calculate_icons_positions_at_rest_linear (GList *pIconList, double fFlatDockWidth, int iXOffset);
 
334
 
 
335
inline void cairo_dock_update_removing_inserting_icon (Icon *icon);
 
336
 
 
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);
 
338
 
 
339
Icon *cairo_dock_apply_wave_effect (CairoDock *pDock);
 
340
 
 
341
CairoDockMousePositionType cairo_dock_check_if_mouse_inside_linear (CairoDock *pDock);
 
342
 
 
343
void cairo_dock_manage_mouse_position (CairoDock *pDock, CairoDockMousePositionType iMousePositionType);
 
344
 
 
345
 
 
346
double cairo_dock_calculate_max_dock_width (CairoDock *pDock, GList *pFirstDrawnElement, double fFlatDockWidth, double fWidthConstraintFactor, double fExtraWidth);
 
347
 
 
348
 
 
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);
 
352
 
 
353
/**
 
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.
 
357
*/
 
358
void cairo_dock_update_icon_s_container_name (Icon *icon, const gchar *cNewParentDockName);
 
359
 
 
360
G_END_DECLS
 
361
#endif
 
362