00001
00025 #ifndef _GAIM_GTKBLIST_H_
00026 #define _GAIM_GTKBLIST_H_
00027
00028 #include "gtkgaim.h"
00029 #include "blist.h"
00030
00031 enum {
00032 STATUS_ICON_COLUMN,
00033 STATUS_ICON_VISIBLE_COLUMN,
00034 NAME_COLUMN,
00035 WARNING_COLUMN,
00036 IDLE_COLUMN,
00037 BUDDY_ICON_COLUMN,
00038 NODE_COLUMN,
00039 BLIST_COLUMNS
00040 };
00041
00042 typedef enum {
00043 GAIM_STATUS_ICON_LARGE,
00044 GAIM_STATUS_ICON_SMALL
00045
00046 } GaimStatusIconSize;
00047
00048
00049
00050
00054 typedef struct {
00055 GtkWidget *window;
00056 GtkWidget *vbox;
00059 GtkWidget *treeview;
00060 GtkTreeStore *treemodel;
00061 GtkTreeViewColumn *idle_column,
00062 *warning_column,
00063 *buddy_icon_column;
00064
00065 GtkItemFactory *ift;
00066 GtkWidget *bpmenu;
00068 GtkWidget *bbox;
00069 GtkTooltips *tooltips;
00071 guint refresh_timer;
00073 guint timeout;
00074 GdkRectangle tip_rect;
00077 GdkRectangle contact_rect;
00080 GaimBlistNode *mouseover_contact;
00082 GtkWidget *tipwindow;
00084 GaimBlistNode *selected_node;
00086 GdkPixbuf *east, *south;
00087 GdkWindow *east_shadow, *south_shadow;
00089 } GaimGtkBuddyList;
00090
00091 #define GAIM_GTK_BLIST(list) ((GaimGtkBuddyList *)(list)->ui_data)
00092 #define GAIM_IS_GTK_BLIST(list) \
00093 ((list)->ui_ops == gaim_gtk_blist_get_ui_ops())
00094
00095
00096
00097
00098
00104 void *gaim_gtk_blist_get_handle();
00105
00109 void gaim_gtk_blist_init(void);
00110
00114 void gaim_gtk_blist_uninit(void);
00115
00121 GaimBlistUiOps *gaim_gtk_blist_get_ui_ops(void);
00122
00130 GdkPixbuf *create_prpl_icon(GaimAccount *account);
00131
00138 void gaim_gtk_blist_make_buddy_menu(GtkWidget *menu, GaimBuddy *buddy);
00139
00146 void gaim_gtk_blist_refresh(GaimBuddyList *list);
00147
00152 void gaim_gtk_blist_update_toolbar();
00153
00159 void gaim_gtk_blist_docklet_toggle();
00160 void gaim_gtk_blist_docklet_add();
00161 void gaim_gtk_blist_docklet_remove();
00162 void gaim_gtk_blist_update_columns();
00163 void gaim_gtk_blist_update_refresh_timeout();
00164
00168 GdkPixbuf *gaim_gtk_blist_get_status_icon(GaimBlistNode *node,
00169 GaimStatusIconSize size);
00170
00171
00172
00173
00174
00175 typedef GtkTreeIter (*gaim_gtk_blist_sort_function)(GaimBlistNode *new, GaimBuddyList *blist, GtkTreeIter group, GtkTreeIter *cur);
00176
00177 extern GSList *gaim_gtk_blist_sort_methods;
00178
00179 struct gaim_gtk_blist_sort_method {
00180 char *id;
00181 char *name;
00182 gaim_gtk_blist_sort_function func;
00183 };
00184
00193 void gaim_gtk_blist_sort_method_reg(const char *id, const char *name, gaim_gtk_blist_sort_function func);
00194
00200 void gaim_gtk_blist_sort_method_unreg(const char *id);
00201
00207 void gaim_gtk_blist_sort_method_set(const char *id);
00208
00212 void gaim_gtk_blist_setup_sort_methods();
00213
00217 void gaim_gtk_blist_update_protocol_actions();
00218
00222 void gaim_gtk_blist_update_plugin_actions();
00223
00230 gboolean gaim_gtk_blist_joinchat_is_showable(void);
00231
00235 void gaim_gtk_blist_joinchat_show(void);
00236
00240 void gaim_gtk_append_blist_node_proto_menu (GtkWidget *menu, GaimConnection *gc, GaimBlistNode *node);
00241
00245 void gaim_gtk_append_blist_node_extended_menu(GtkWidget *menu, GaimBlistNode *node);
00246
00247 #endif