00001
00025 #ifndef _GAIM_GTKCONVERSATION_H_
00026 #define _GAIM_GTKCONVERSATION_H_
00027
00028 #include "gtkgaim.h"
00029
00030 #include "conversation.h"
00031
00032 enum {
00033 CHAT_USERS_ICON_COLUMN,
00034 CHAT_USERS_NAME_COLUMN,
00035 CHAT_USERS_FLAGS_COLUMN,
00036 CHAT_USERS_COLUMNS
00037 };
00038
00039
00040
00041
00044 typedef struct _GaimGtkWindow GaimGtkWindow;
00045 typedef struct _GaimGtkImPane GaimGtkImPane;
00046 typedef struct _GaimGtkChatPane GaimGtkChatPane;
00047 typedef struct _GaimGtkConversation GaimGtkConversation;
00048
00053 struct _GaimGtkWindow
00054 {
00055 GtkWidget *window;
00056 GtkWidget *notebook;
00058 struct
00059 {
00060 GtkWidget *menubar;
00061
00062 GtkWidget *view_log;
00063
00064 GtkWidget *send_file;
00065 GtkWidget *add_pounce;
00066 GtkWidget *get_info;
00067 GtkWidget *warn;
00068 GtkWidget *invite;
00069
00070 GtkWidget *alias;
00071 GtkWidget *block;
00072 GtkWidget *add;
00073 GtkWidget *remove;
00074
00075 GtkWidget *insert_link;
00076 GtkWidget *insert_image;
00077
00078 GtkWidget *logging;
00079 GtkWidget *sounds;
00080 GtkWidget *show_formatting_toolbar;
00081 GtkWidget *show_timestamps;
00082
00083 GtkWidget *send_as;
00084
00085 GtkWidget *typing_icon;
00086
00087 GtkItemFactory *item_factory;
00088
00089 } menu;
00090
00091
00092 gboolean in_drag;
00093 gboolean in_predrag;
00094
00095 gint drag_min_x, drag_max_x, drag_min_y, drag_max_y;
00096
00097 gint drag_motion_signal;
00098 gint drag_leave_signal;
00099 };
00100
00104 struct _GaimGtkImPane
00105 {
00106 GtkWidget *warn;
00107 GtkWidget *block;
00108 GtkWidget *send_file;
00109 GtkWidget *sep1;
00110 GtkWidget *sep2;
00111 GtkWidget *check;
00112 GtkWidget *progress;
00113
00114 gboolean a_virgin;
00115
00116
00117 GtkWidget *icon_container;
00118 GtkWidget *icon;
00119 gboolean show_icon;
00120 gboolean animate;
00121 GdkPixbufAnimation *anim;
00122 GdkPixbufAnimationIter *iter;
00123 guint32 icon_timer;
00124 };
00125
00129 struct _GaimGtkChatPane
00130 {
00131 GtkWidget *count;
00132 GtkWidget *list;
00133 GtkWidget *invite;
00134 GtkWidget *topic_text;
00135 GtkWidget *sep;
00136 };
00137
00141 struct _GaimGtkConversation
00142 {
00143 gboolean make_sound;
00144 gboolean show_formatting_toolbar;
00145 gboolean show_timestamps;
00146
00147 GtkTooltips *tooltips;
00148
00149 GtkWidget *tab_cont;
00150 GtkWidget *tabby;
00151 GtkWidget *menu_tabby;
00152
00153 GtkWidget *imhtml;
00154 GtkTextBuffer *entry_buffer;
00155 GtkWidget *entry;
00156
00157 GtkWidget *add;
00158 GtkWidget *remove;
00159 GtkWidget *info;
00160 GtkWidget *send;
00161 GtkWidget *close;
00162 GtkWidget *icon;
00163 GtkWidget *tab_label;
00164 GtkWidget *menu_icon;
00165 GtkWidget *menu_label;
00166 GtkSizeGroup *sg;
00167
00168 GtkWidget *bbox;
00169 GtkWidget *sw;
00170 GtkWidget *lower_hbox;
00171
00172 GtkWidget *toolbar;
00173
00174 struct
00175 {
00176 GtkWidget *image;
00177 GtkWidget *search;
00178
00179 } dialogs;
00180
00181 union
00182 {
00183 GaimGtkImPane *im;
00184 GaimGtkChatPane *chat;
00185
00186 } u;
00187 };
00188
00189 #define GAIM_GTK_WINDOW(win) \
00190 ((GaimGtkWindow *)(win)->ui_data)
00191
00192 #define GAIM_GTK_CONVERSATION(conv) \
00193 ((GaimGtkConversation *)(conv)->ui_data)
00194
00195 #define GAIM_IS_GTK_WINDOW(win) \
00196 (gaim_conv_window_get_ui_ops(win) == gaim_gtk_conversations_get_win_ui_ops())
00197
00198 #define GAIM_IS_GTK_CONVERSATION(conv) \
00199 (gaim_conversation_get_ui_ops(conv) == \
00200 gaim_gtk_conversations_get_conv_ui_ops())
00201
00204
00205
00206
00214 GaimConvWindowUiOps *gaim_gtk_conversations_get_win_ui_ops(void);
00215
00221 GaimConversationUiOps *gaim_gtk_conversations_get_conv_ui_ops(void);
00222
00228 void gaim_gtkconv_update_buddy_icon(GaimConversation *conv);
00229
00234 void gaim_gtkconv_update_tabs(void);
00235
00240 void gaim_gtkconv_update_chat_button_style();
00241
00246 void gaim_gtkconv_update_im_button_style();
00247
00253 void gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv);
00254
00267 GtkWidget *gaim_gtkconv_button_new(const char *icon, const char *text,
00268 const char *tooltip, GtkTooltips *tooltips,
00269 void *callback, void *data);
00270
00281 GaimConvWindow *gaim_gtkwin_get_at_xy(int x, int y);
00282
00292 int gaim_gtkconv_get_tab_at_xy(GaimConvWindow *win, int x, int y);
00293
00307 int gaim_gtkconv_get_dest_tab_at_xy(GaimConvWindow *win, int x, int y);
00308
00311
00313
00321 void *gaim_gtk_conversations_get_handle(void);
00322
00326 void gaim_gtk_conversations_init(void);
00327
00331 void gaim_gtk_conversations_uninit(void);
00332
00335 #endif