gtkconv.h
Go to the documentation of this file.
1 
7 /* pidgin
8  *
9  * Pidgin is the legal property of its developers, whose names are too numerous
10  * to list here. Please refer to the COPYRIGHT file distributed with this
11  * source distribution.
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 2 of the License, or
16  * (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software
25  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
26  */
27 #ifndef _PIDGIN_CONVERSATION_H_
28 #define _PIDGIN_CONVERSATION_H_
29 
30 typedef struct _PidginImPane PidginImPane;
31 typedef struct _PidginChatPane PidginChatPane;
33 
37 typedef enum
38 {
45 
46 enum {
47  CHAT_USERS_ICON_COLUMN,
48  CHAT_USERS_ALIAS_COLUMN,
49  CHAT_USERS_ALIAS_KEY_COLUMN,
50  CHAT_USERS_NAME_COLUMN,
51  CHAT_USERS_FLAGS_COLUMN,
52  CHAT_USERS_COLOR_COLUMN,
53  CHAT_USERS_WEIGHT_COLUMN,
54  CHAT_USERS_ICON_STOCK_COLUMN,
56 };
57 
58 #define PIDGIN_CONVERSATION(conv) \
59  ((PidginConversation *)(conv)->ui_data)
60 
61 #define PIDGIN_IS_PIDGIN_CONVERSATION(conv) \
62  (purple_conversation_get_ui_ops(conv) == \
63  pidgin_conversations_get_conv_ui_ops())
64 
65 #include "pidgin.h"
66 #include "conversation.h"
67 #include "gtkconvwin.h"
68 
69 /**************************************************************************
70  * @name Structures
71  **************************************************************************/
83 {
84  GtkWidget *block;
85  GtkWidget *send_file;
86  GtkWidget *sep1;
87  GtkWidget *sep2;
88  GtkWidget *check;
89  GtkWidget *progress;
90  guint32 typing_timer;
91 
92  /* Buddy icon stuff */
93  GtkWidget *icon_container;
94  GtkWidget *icon;
95  gboolean show_icon;
96  gboolean animate;
97  GdkPixbufAnimation *anim;
98  GdkPixbufAnimationIter *iter;
99  guint32 icon_timer;
100 };
101 
106 {
107  GtkWidget *count;
108  GtkWidget *list;
109  GtkWidget *topic_text;
110 };
111 
116 {
117  PurpleConversation *active_conv;
118  GList *convs;
119  GList *send_history;
120 
121  PidginWindow *win;
122 
123  gboolean make_sound;
124 
125  GtkTooltips *tooltips;
126 
127  GtkWidget *tab_cont;
128  GtkWidget *tabby;
129  GtkWidget *menu_tabby;
130 
131  GtkWidget *imhtml;
132  GtkTextBuffer *entry_buffer;
133  GtkWidget *entry;
134  gboolean auto_resize; /* this is set to TRUE if the conversation
135  * is being resized by a non-user-initiated
136  * event, such as the buddy icon appearing
137  */
138  gboolean entry_growing; /* True if the size of the entry was set
139  * automatically by typing too much to fit
140  * in one line */
141 
142  GtkWidget *close; /* "x" on the tab */
143  GtkWidget *icon;
144  GtkWidget *tab_label;
145  GtkWidget *menu_icon;
146  GtkWidget *menu_label;
147 #if !(defined PIDGIN_DISABLE_DEPRECATED) || (defined _PIDGIN_GTKCONV_C_)
148 
149  GtkSizeGroup *sg;
150 #else
151  gpointer depr1;
152 #endif
153 
154  GtkWidget *lower_hbox;
155 
156  GtkWidget *toolbar;
157 
158  PidginUnseenState unseen_state;
159  guint unseen_count;
160 
161  union
162  {
163  PidginImPane *im;
164  PidginChatPane *chat;
165 
166  } u;
167 
168  time_t newday;
169  GtkWidget *infopane_hbox;
170  GtkWidget *infopane;
171  GtkListStore *infopane_model;
172  GtkTreeIter infopane_iter;
173 
174  /* Used when attaching a PidginConversation to a PurpleConversation
175  * with message history */
176  struct {
177  int timer;
178  GList *current;
179  } attach;
180 
186  struct {
187  GtkWidget *entry;
188  GtkWidget *container;
189  } quickfind;
190 };
191 
194 /**************************************************************************
195  * @name GTK+ Conversation API
196  **************************************************************************/
205 
212 
219 
226 
242 GList *
244  PidginUnseenState min_state,
245  gboolean hidden_only,
246  guint max_count);
247 
256 guint
257 pidgin_conversations_fill_menu(GtkWidget *menu, GList *convs);
258 
265 
276 
277 PidginWindow *pidgin_conv_get_window(PidginConversation *gtkconv);
278 GdkPixbuf *pidgin_conv_get_tab_icon(PurpleConversation *conv, gboolean small_icon);
279 void pidgin_conv_new(PurpleConversation *conv);
280 int pidgin_conv_get_tab_at_xy(PidginWindow *win, int x, int y, gboolean *to_right);
281 gboolean pidgin_conv_is_hidden(PidginConversation *gtkconv);
284 /**************************************************************************/
286 /**************************************************************************/
295 
299 void pidgin_conversations_init(void);
300 
304 void pidgin_conversations_uninit(void);
305 
308 #endif /* _PIDGIN_CONVERSATION_H_ */
GTK+ Chat panes.
Definition: gtkconv.h:105
No unseen text in the conversation.
Definition: gtkconv.h:39
A GTK+ representation of a graphical window containing one or more conversations. ...
Definition: gtkconvwin.h:41
Conversation API.
GList * pidgin_conversations_find_unseen_list(PurpleConversationType type, PidginUnseenState min_state, gboolean hidden_only, guint max_count)
Returns a list of conversations of the given type which have an unseen state greater than or equal to...
A GTK+ representation of a graphical window containing one or more conversations. ...
Definition: gtkconv.h:82
void pidgin_conv_update_buttons_by_protocol(PurpleConversation *conv)
Updates conversation buttons by protocol.
Unseen text in the conversation.
Definition: gtkconv.h:42
void pidgin_conv_update_buddy_icon(PurpleConversation *conv)
Updates the buddy icon on a conversation.
Unseen text and the nick was said.
Definition: gtkconv.h:43
UI definitions and includes.
A GTK+ conversation pane.
Definition: gtkconv.h:115
Conversation operations and events.
Definition: conversation.h:158
Unseen events in the conversation.
Definition: gtkconv.h:40
void pidgin_conv_switch_active_conversation(PurpleConversation *conv)
Sets the active conversation within a GTK-conversation.
void pidgin_conversations_init(void)
Initializes the GTK+ conversations subsystem.
void * pidgin_conversations_get_handle(void)
Returns the gtk conversations subsystem handle.
GTK+ Conversation Window API.
PurpleConversationType
A type of conversation.
Definition: conversation.h:51
gboolean pidgin_conv_attach_to_conversation(PurpleConversation *conv)
Reattach Pidgin UI to a conversation.
Unseen text with NO_LOG flag.
Definition: gtkconv.h:41
guint pidgin_conversations_fill_menu(GtkWidget *menu, GList *convs)
Fill a menu with a list of conversations.
PidginUnseenState
Unseen text states.
Definition: gtkconv.h:37
GtkSizeGroup * sg
Definition: gtkconv.h:149
void pidgin_conv_present_conversation(PurpleConversation *conv)
Presents a purple conversation to the user.
PurpleConversationUiOps * pidgin_conversations_get_conv_ui_ops(void)
Returns the UI operations structure for GTK+ conversations.
A core representation of a conversation between two or more people.
Definition: conversation.h:335
void pidgin_conversations_uninit(void)
Uninitialized the GTK+ conversation subsystem.