Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

gtkconv.h

Go to the documentation of this file.
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  * @name Structures
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     /* Tab dragging stuff. */
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     /* Buddy icon stuff */
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; /* "x" on the tab */
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  * @name GTK+ Conversation API
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 /* _GAIM_GTKCONVERSATION_H_ */

Generated on Tue Aug 9 15:32:51 2005 for gaim by  doxygen 1.3.9.1