00001 00002 #ifndef __CAIRO_DOCK_ICONS__ 00003 #define __CAIRO_DOCK_ICONS__ 00004 00005 #include <glib.h> 00006 00007 #include "cairo-dock-struct.h" 00008 00013 #define CAIRO_DOCK_IS_LAUNCHER(icon) (icon != NULL && (icon->acCommand != NULL || (icon->pSubDock != NULL && icon->pModule == NULL && icon->Xid == 0))) 00014 00018 #define CAIRO_DOCK_IS_APPLI(icon) (icon != NULL && icon->Xid != 0) 00019 00023 #define CAIRO_DOCK_IS_APPLET(icon) (icon != NULL && icon->pModule != NULL) 00024 00028 #define CAIRO_DOCK_IS_SEPARATOR(icon) (icon != NULL && ((icon->iType & 1) || (icon->pModule == NULL && icon->Xid == 0 && icon->acName == NULL))) 00029 00034 #define CAIRO_DOCK_IS_NORMAL_LAUNCHER(icon) (CAIRO_DOCK_IS_LAUNCHER (icon) && icon->acDesktopFileName != NULL) 00035 00039 #define CAIRO_DOCK_IS_URI_LAUNCHER(icon) (CAIRO_DOCK_IS_LAUNCHER (icon) && icon->cBaseURI != NULL) 00040 00044 #define CAIRO_DOCK_IS_AUTOMATIC_SEPARATOR(icon) (CAIRO_DOCK_IS_SEPARATOR (icon) && icon->acDesktopFileName == NULL) 00045 00049 #define CAIRO_DOCK_IS_USER_SEPARATOR(icon) (CAIRO_DOCK_IS_SEPARATOR (icon) && icon->acDesktopFileName != NULL) 00050 00054 #define CAIRO_DOCK_IS_NORMAL_APPLI(icon) (CAIRO_DOCK_IS_APPLI (icon) && icon->acDesktopFileName == NULL && icon->pModule == NULL) 00055 00060 void cairo_dock_free_icon (Icon *icon); 00065 void cairo_dock_free_icon_buffers (Icon *icon); 00066 00067 00068 #define cairo_dock_get_group_order(icon) (icon->iType < CAIRO_DOCK_NB_TYPES ? g_tIconTypeOrder[icon->iType] : icon->iType) 00069 00074 CairoDockIconType cairo_dock_get_icon_type (Icon *icon); 00081 int cairo_dock_compare_icons_order (Icon *icon1, Icon *icon2); 00087 GList *cairo_dock_sort_icons_by_order (GList *pIconList); 00093 GList *cairo_dock_sort_icons_by_name (GList *pIconList); 00094 00101 Icon *cairo_dock_get_first_icon (GList *pIconList); 00107 Icon *cairo_dock_get_last_icon (GList *pIconList); 00113 Icon *cairo_dock_get_first_drawn_icon (CairoDock *pDock); 00119 Icon *cairo_dock_get_last_drawn_icon (CairoDock *pDock); 00126 Icon *cairo_dock_get_first_icon_of_type (GList *pIconList, CairoDockIconType iType); 00133 Icon *cairo_dock_get_last_icon_of_type (GList *pIconList, CairoDockIconType iType); 00139 Icon *cairo_dock_get_pointed_icon (GList *pIconList); 00145 Icon *cairo_dock_get_bouncing_icon (GList *pIconList); 00151 Icon *cairo_dock_get_removing_or_inserting_icon (GList *pIconList); 00157 Icon *cairo_dock_get_animated_icon (GList *pIconList); 00164 Icon *cairo_dock_get_next_icon (GList *pIconList, Icon *pIcon); 00171 Icon *cairo_dock_get_previous_icon (GList *pIconList, Icon *pIcon); 00178 #define cairo_dock_get_next_element(ic, list) (ic->next == NULL ? list : ic->next) 00179 00185 #define cairo_dock_get_previous_element(ic, list) (ic->prev == NULL ? g_list_last (list) : ic->prev) 00186 00192 Icon *cairo_dock_get_icon_with_command (GList *pIconList, gchar *cCommand); 00199 Icon *cairo_dock_get_icon_with_base_uri (GList *pIconList, const gchar *cBaseURI); 00200 00201 Icon *cairo_dock_get_icon_with_name (GList *pIconList, const gchar *cName); 00202 00209 Icon *cairo_dock_get_icon_with_subdock (GList *pIconList, CairoDock *pSubDock); 00216 Icon *cairo_dock_get_icon_with_module (GList *pIconList, CairoDockModule *pModule); 00223 Icon *cairo_dock_get_icon_with_class (GList *pIconList, gchar *cClass); 00224 00225 #define cairo_dock_none_clicked(pIconList) (cairo_dock_get_bouncing_icon (pIconList) == NULL) 00226 #define cairo_dock_none_removed_or_inserted(pIconList) (cairo_dock_get_removing_or_inserting_icon (pIconList) == NULL) 00227 #define cairo_dock_none_animated(pIconList) (cairo_dock_get_animated_icon (pIconList) == NULL) 00228 00229 #define cairo_dock_get_first_launcher(pIconList) cairo_dock_get_first_icon_of_type (pIconList, CAIRO_DOCK_LAUNCHER) 00230 #define cairo_dock_get_last_launcher(pIconList) cairo_dock_get_last_icon_of_type (pIconList, CAIRO_DOCK_LAUNCHER) 00231 #define cairo_dock_get_first_appli(pIconList) cairo_dock_get_first_icon_of_type (pIconList, CAIRO_DOCK_APPLI) 00232 #define cairo_dock_get_last_appli(pIconList) cairo_dock_get_last_icon_of_type (pIconList, CAIRO_DOCK_APPLI) 00233 00234 00235 void cairo_dock_swap_icons (CairoDock *pDock, Icon *icon1, Icon *icon2); 00236 void cairo_dock_move_icon_after_icon (CairoDock *pDock, Icon *icon1, Icon *icon2); 00237 00245 gboolean cairo_dock_detach_icon_from_dock (Icon *icon, CairoDock *pDock, gboolean bCheckUnusedSeparator); 00251 void cairo_dock_remove_one_icon_from_dock (CairoDock *pDock, Icon *icon); 00257 void cairo_dock_remove_icon_from_dock (CairoDock *pDock, Icon *icon); 00263 void cairo_dock_remove_icons_of_type (CairoDock *pDock, CairoDockIconType iType); 00268 #define cairo_dock_remove_all_applis(pDock) cairo_dock_remove_icons_of_type (pDock, CAIRO_DOCK_APPLI) 00269 00273 #define cairo_dock_remove_all_applets(pDock) cairo_dock_remove_icons_of_type (pDock, CAIRO_DOCK_APPLET) 00274 00282 Icon *cairo_dock_foreach_icons_of_type (GList *pIconList, CairoDockIconType iType, CairoDockForeachIconFunc pFuntion, gpointer data); 00287 void cairo_dock_remove_all_separators (CairoDock *pDock); 00288 00293 void cairo_dock_insert_separators_in_dock (CairoDock *pDock); 00294 00295 00296 GList * cairo_dock_calculate_icons_positions_at_rest_linear (GList *pIconList, double fFlatDockWidth, int iXOffset); 00297 00298 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); 00299 00300 Icon *cairo_dock_apply_wave_effect (CairoDock *pDock); 00301 00302 CairoDockMousePositionType cairo_dock_check_if_mouse_inside_linear (CairoDock *pDock); 00303 00304 void cairo_dock_manage_mouse_position (CairoDock *pDock, CairoDockMousePositionType iMousePositionType); 00305 00306 00307 double cairo_dock_calculate_max_dock_width (CairoDock *pDock, GList *pFirstDrawnElement, double fFlatDockWidth, double fWidthConstraintFactor, double fExtraWidth); 00308 00309 00310 void cairo_dock_mark_icons_as_avoiding_mouse (CairoDock *pDock, CairoDockIconType iType, double fMargin); 00311 void cairo_dock_mark_avoiding_mouse_icons_linear (CairoDock *pDock); 00312 void cairo_dock_stop_marking_icons (CairoDock *pDock); 00313 00319 void cairo_dock_update_icon_s_container_name (Icon *icon, const gchar *cNewParentDockName); 00320 00321 #endif 00322