annotate src/gtkconv.h @ 12116:e75ef7aa913e

[gaim-migrate @ 14416] " This patch implements a replacement for the queuing system from 1.x. It also obsoletes a previous patch [#1338873] I submitted to prioritize the unseen states in gtk conversations. The attached envelope.png is ripped from the msgunread.png already included in gaim. It should be dropped in the pixmaps directory (Makefile.am is updated accordingly in this patch). The two separate queuing preferences from 1.x, queuing messages while away and queuing all new messages (from docklet), are replaced with a single 3-way preference for conversations. The new preference is "Hide new IM conversations". This preference can be set to never, away and always. When a gtk conversation is created, it may be placed in a hidden conversation window instead of being placed normally. This decision is based upon the preference and possibly the away state of the account the conversation is being created for. This *will* effect conversations the user explicitly requests to be created, so in these cases the caller must be sure to present the conversation to the user, using gaim_gtkconv_present_conversation(). This is done already in gtkdialogs.c which handles creating conversations requested by the user from gaim proper (menus, double-clicking on budy in blist, etc.). The main advantage to not queuing messages is that the conversations exist, the message is written to the conversation (and logged if appropriate) and the unseen state is set on the conversation. This means no additional features are needed to track whether there are queued messages or not, just use the unseen state on conversations. Since conversations may not be visible (messages "queued"), gaim proper needs some notification that there are messages waiting. I opted for a menutray icon that shows up when an im conversation has an unseen message. Clicking this icon will focus (and show if hidden) the first conversation with an unseen message. This is essentially the same behavior of the docklet in cvs right now, except that the icon is only visible when there is a conversation with an unread message. The api that is added is flexible enough to allow either the docklet or the new blist menutray icon to be visible for conversations of any/all types and for unseen messages >= any state. Currently they are set to only IM conversations and only unseen states >= TEXT (system messages and no log messages will not trigger blinking the docklet or showing the blist tray icon), but these could be made preferences relatively easily in the future. Other plugins could probably benefit as well: gaim_gtk_conversations_get_first_unseen(). There is probably some limit to comment size, so I'll stop rambling now. If anyone has more questions/comments, catch me in #gaim, here or on gaim-devel." committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Wed, 16 Nov 2005 18:17:01 +0000
parents 1a86417abfc8
children cb77957d644c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file gtkconv.h GTK+ Conversation API
5034
4691c5936c01 [gaim-migrate @ 5377]
Christian Hammond <chipx86@chipx86.com>
parents: 4736
diff changeset
3 * @ingroup gtkui
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 * gaim
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 *
8046
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7996
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7996
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7996
diff changeset
9 * source distribution.
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7295
diff changeset
10 *
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * (at your option) any later version.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * GNU General Public License for more details.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 */
9713
db62420a53a2 [gaim-migrate @ 10574]
Mark Doliner <mark@kingant.net>
parents: 9709
diff changeset
25 #ifndef _GAIM_GTKCONVERSATION_H_
db62420a53a2 [gaim-migrate @ 10574]
Mark Doliner <mark@kingant.net>
parents: 9709
diff changeset
26 #define _GAIM_GTKCONVERSATION_H_
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
27
10008
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
28 typedef struct _GaimGtkImPane GaimGtkImPane;
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
29 typedef struct _GaimGtkChatPane GaimGtkChatPane;
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
30 typedef struct _GaimGtkConversation GaimGtkConversation;
9709
4d05b6e9e9cd [gaim-migrate @ 10570]
Mark Doliner <mark@kingant.net>
parents: 9687
diff changeset
31
11664
38bbb0f15453 [gaim-migrate @ 13949]
Luke Schierer <lschiere@pidgin.im>
parents: 11614
diff changeset
32 /**
38bbb0f15453 [gaim-migrate @ 13949]
Luke Schierer <lschiere@pidgin.im>
parents: 11614
diff changeset
33 * Unseen text states.
38bbb0f15453 [gaim-migrate @ 13949]
Luke Schierer <lschiere@pidgin.im>
parents: 11614
diff changeset
34 */
38bbb0f15453 [gaim-migrate @ 13949]
Luke Schierer <lschiere@pidgin.im>
parents: 11614
diff changeset
35 typedef enum
38bbb0f15453 [gaim-migrate @ 13949]
Luke Schierer <lschiere@pidgin.im>
parents: 11614
diff changeset
36 {
12021
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
37 GAIM_UNSEEN_NONE = 0, /**< No unseen text in the conversation. */
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
38 GAIM_UNSEEN_EVENT = 1, /**< Unseen events in the conversation. */
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
39 GAIM_UNSEEN_NOLOG = 2, /**< Unseen text with NO_LOG flag. */
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
40 GAIM_UNSEEN_TEXT = 3, /**< Unseen text in the conversation. */
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
41 GAIM_UNSEEN_NICK = 4 /**< Unseen text and the nick was said. */
11664
38bbb0f15453 [gaim-migrate @ 13949]
Luke Schierer <lschiere@pidgin.im>
parents: 11614
diff changeset
42 } GaimUnseenState;
38bbb0f15453 [gaim-migrate @ 13949]
Luke Schierer <lschiere@pidgin.im>
parents: 11614
diff changeset
43
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
44 enum {
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
45 CHAT_USERS_ICON_COLUMN,
11454
201617d49573 [gaim-migrate @ 13693]
Richard Laager <rlaager@wiktel.com>
parents: 11280
diff changeset
46 CHAT_USERS_ALIAS_COLUMN,
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
47 CHAT_USERS_NAME_COLUMN,
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9508
diff changeset
48 CHAT_USERS_FLAGS_COLUMN,
11454
201617d49573 [gaim-migrate @ 13693]
Richard Laager <rlaager@wiktel.com>
parents: 11280
diff changeset
49 CHAT_USERS_COLOR_COLUMN,
201617d49573 [gaim-migrate @ 13693]
Richard Laager <rlaager@wiktel.com>
parents: 11280
diff changeset
50 CHAT_USERS_BUDDY_COLUMN,
9498
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
51 CHAT_USERS_COLUMNS
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
52 };
6f9bedacac3b [gaim-migrate @ 10324]
Luke Schierer <lschiere@pidgin.im>
parents: 9497
diff changeset
53
10008
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
54 #define GAIM_GTK_CONVERSATION(conv) \
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
55 ((GaimGtkConversation *)(conv)->ui_data)
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
56
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
57 #define GAIM_IS_GTK_CONVERSATION(conv) \
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
58 (gaim_conversation_get_ui_ops(conv) == \
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
59 gaim_gtk_conversations_get_conv_ui_ops())
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
60
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
61 #include "gtkgaim.h"
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
62 #include "conversation.h"
11581
9b3833da6840 [gaim-migrate @ 13851]
Tim Ringenbach <marv@pidgin.im>
parents: 11554
diff changeset
63 #include "gtkconvwin.h"
10008
50c1724d5e59 [gaim-migrate @ 10925]
Mark Doliner <mark@kingant.net>
parents: 9885
diff changeset
64
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66 * @name Structures
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
67 **************************************************************************/
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
68 /*@{*/
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
69
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
70 /**
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
71 * A GTK+ representation of a graphical window containing one or more
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 * conversations.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
74
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75 /**
7820
8e60ddc28a22 [gaim-migrate @ 8472]
Mark Doliner <mark@kingant.net>
parents: 7650
diff changeset
76 * A GTK+ Instant Message pane.
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77 */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
78 struct _GaimGtkImPane
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
79 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
80 GtkWidget *block;
9468
4d0b0d5485e6 [gaim-migrate @ 10293]
Luke Schierer <lschiere@pidgin.im>
parents: 9339
diff changeset
81 GtkWidget *send_file;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
82 GtkWidget *sep1;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
83 GtkWidget *sep2;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
84 GtkWidget *check;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
85 GtkWidget *progress;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
86
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
87 /* Buddy icon stuff */
9885
4d3a61dcb942 [gaim-migrate @ 10767]
Nathan Walp <nwalp@pidgin.im>
parents: 9791
diff changeset
88 GtkWidget *icon_container;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
89 GtkWidget *icon;
9687
1769cb1261be [gaim-migrate @ 10539]
Sean Egan <seanegan@gmail.com>
parents: 9554
diff changeset
90 gboolean show_icon;
8189
b75fa309b2c6 [gaim-migrate @ 8910]
Mark Doliner <mark@kingant.net>
parents: 8046
diff changeset
91 gboolean animate;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 GdkPixbufAnimation *anim;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 GdkPixbufAnimationIter *iter;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
94 guint32 icon_timer;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97 /**
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 * GTK+ Chat panes.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99 */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
100 struct _GaimGtkChatPane
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
101 {
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102 GtkWidget *count;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
103 GtkWidget *list;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
104 GtkWidget *topic_text;
10500
6ec5da82ef41 [gaim-migrate @ 11792]
Mark Doliner <mark@kingant.net>
parents: 10456
diff changeset
105 GtkWidget *userlist_im;
6ec5da82ef41 [gaim-migrate @ 11792]
Mark Doliner <mark@kingant.net>
parents: 10456
diff changeset
106 GtkWidget *userlist_ignore;
6ec5da82ef41 [gaim-migrate @ 11792]
Mark Doliner <mark@kingant.net>
parents: 10456
diff changeset
107 GtkWidget *userlist_info;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
109
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
110 /**
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111 * A GTK+ conversation pane.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112 */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
113 struct _GaimGtkConversation
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114 {
10810
9a1ced2bc585 [gaim-migrate @ 12463]
Tim Ringenbach <marv@pidgin.im>
parents: 10500
diff changeset
115 GaimConversation *active_conv;
9a1ced2bc585 [gaim-migrate @ 12463]
Tim Ringenbach <marv@pidgin.im>
parents: 10500
diff changeset
116 GList *convs;
11581
9b3833da6840 [gaim-migrate @ 13851]
Tim Ringenbach <marv@pidgin.im>
parents: 11554
diff changeset
117
9b3833da6840 [gaim-migrate @ 13851]
Tim Ringenbach <marv@pidgin.im>
parents: 11554
diff changeset
118 GaimGtkWindow *win;
9b3833da6840 [gaim-migrate @ 13851]
Tim Ringenbach <marv@pidgin.im>
parents: 11554
diff changeset
119
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
120 gboolean make_sound;
7326
00a9ab26d607 [gaim-migrate @ 7912]
Christian Hammond <chipx86@chipx86.com>
parents: 7295
diff changeset
121 gboolean show_formatting_toolbar;
9188
b6e3dcb23de0 [gaim-migrate @ 9983]
Luke Schierer <lschiere@pidgin.im>
parents: 9025
diff changeset
122 gboolean show_timestamps;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
123
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
124 GtkTooltips *tooltips;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
125
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
126 GtkWidget *tab_cont;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
127 GtkWidget *tabby;
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6392
diff changeset
128 GtkWidget *menu_tabby;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
129
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
130 GtkWidget *imhtml;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
131 GtkTextBuffer *entry_buffer;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
132 GtkWidget *entry;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
133
7930
68f70cf074d0 [gaim-migrate @ 8601]
Mark Doliner <mark@kingant.net>
parents: 7887
diff changeset
134 GtkWidget *close; /* "x" on the tab */
6392
e9974608b319 [gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents: 5908
diff changeset
135 GtkWidget *icon;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
136 GtkWidget *tab_label;
6771
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6392
diff changeset
137 GtkWidget *menu_icon;
8eebba08b44b [gaim-migrate @ 7308]
Christian Hammond <chipx86@chipx86.com>
parents: 6392
diff changeset
138 GtkWidget *menu_label;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139 GtkSizeGroup *sg;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
140
9332
222eb83af4d3 [gaim-migrate @ 10140]
Nathan Walp <nwalp@pidgin.im>
parents: 9188
diff changeset
141 GtkWidget *lower_hbox;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
142
8317
6f549c1d0829 [gaim-migrate @ 9041]
Sean Egan <seanegan@gmail.com>
parents: 8290
diff changeset
143 GtkWidget *toolbar;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
144
11664
38bbb0f15453 [gaim-migrate @ 13949]
Luke Schierer <lschiere@pidgin.im>
parents: 11614
diff changeset
145 GaimUnseenState unseen_state;
38bbb0f15453 [gaim-migrate @ 13949]
Luke Schierer <lschiere@pidgin.im>
parents: 11614
diff changeset
146
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
147 struct
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
148 {
5106
7b218dde1d73 [gaim-migrate @ 5469]
Mark Doliner <mark@kingant.net>
parents: 5049
diff changeset
149 GtkWidget *image;
7295
c7f0a4397d9e [gaim-migrate @ 7879]
Sean Egan <seanegan@gmail.com>
parents: 7118
diff changeset
150 GtkWidget *search;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
151
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
152 } dialogs;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
153
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
154 union
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
155 {
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
156 GaimGtkImPane *im;
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
157 GaimGtkChatPane *chat;
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
158
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
159 } u;
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
160 };
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
161
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
162 /*@}*/
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
163
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
164 /**************************************************************************
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
165 * @name GTK+ Conversation API
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
166 **************************************************************************/
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5167
diff changeset
167 /*@{*/
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5167
diff changeset
168
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5167
diff changeset
169 /**
10814
364a2ef907ae [gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents: 10810
diff changeset
170 * Returns the UI operations structure for GTK+ conversations.
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
171 *
10814
364a2ef907ae [gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents: 10810
diff changeset
172 * @return The GTK+ conversation operations structure.
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
173 */
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 6771
diff changeset
174 GaimConversationUiOps *gaim_gtk_conversations_get_conv_ui_ops(void);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
175
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
176 /**
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
177 * Updates the buddy icon on a conversation.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
178 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
179 * @param conv The conversation.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
180 */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
181 void gaim_gtkconv_update_buddy_icon(GaimConversation *conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
182
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
183 /**
11911
fe12abd6b879 [gaim-migrate @ 14202]
Richard Laager <rlaager@wiktel.com>
parents: 11690
diff changeset
184 * Sets the active conversation within a GTK-conversation.
fe12abd6b879 [gaim-migrate @ 14202]
Richard Laager <rlaager@wiktel.com>
parents: 11690
diff changeset
185 *
fe12abd6b879 [gaim-migrate @ 14202]
Richard Laager <rlaager@wiktel.com>
parents: 11690
diff changeset
186 * @param conv The conversation
fe12abd6b879 [gaim-migrate @ 14202]
Richard Laager <rlaager@wiktel.com>
parents: 11690
diff changeset
187 */
fe12abd6b879 [gaim-migrate @ 14202]
Richard Laager <rlaager@wiktel.com>
parents: 11690
diff changeset
188 void gaim_gtkconv_switch_active_conversation(GaimConversation *conv);
fe12abd6b879 [gaim-migrate @ 14202]
Richard Laager <rlaager@wiktel.com>
parents: 11690
diff changeset
189
fe12abd6b879 [gaim-migrate @ 14202]
Richard Laager <rlaager@wiktel.com>
parents: 11690
diff changeset
190 /**
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
191 * Updates the tab positions on all conversation windows to reflect any
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
192 * changed preferences.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
193 */
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
194 void gaim_gtkconv_update_tabs(void);
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
195
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
196 /**
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
197 * Updates conversation buttons by protocol.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
198 *
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
199 * @param conv The conversation.
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
200 */
5676
dae79aefac8d [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5674
diff changeset
201 void gaim_gtkconv_update_buttons_by_protocol(GaimConversation *conv);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
202
12021
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
203 /**
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
204 * Finds the first conversation of the given type which has an unseen
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
205 * state greater than or equal to the specified minimum state.
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
206 *
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
207 * @param type The type of conversation.
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
208 * @param min_state The minimum unseen state.
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
209 * @return First conversation matching criteria, or NULL.
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
210 */
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
211 GaimConversation *
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
212 gaim_gtk_conversations_get_first_unseen(GaimConversationType type,
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
213 GaimUnseenState min_state);
1a86417abfc8 [gaim-migrate @ 14314]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11911
diff changeset
214
12116
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
215 /**
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
216 * Presents a gaim conversation to the user.
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
217 *
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
218 * @param conv The conversation.
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
219 */
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
220 void gaim_gtkconv_present_conversation(GaimConversation *conv);
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
221
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
222 /**
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
223 * Finds the first conversations of the given type which has an
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
224 * unseen state greater than or equal to the given minimum
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
225 * state.
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
226 *
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
227 * @param type The type of conversation.
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
228 * @param min_state The minimum unseen state.
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
229 * @return First conversation matching critera, or NULL.
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
230 */
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
231 GaimConversation * gaim_gtk_conversations_get_first_unseen(
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
232 GaimConversationType type, GaimUnseenState min_state);
e75ef7aa913e [gaim-migrate @ 14416]
Luke Schierer <lschiere@pidgin.im>
parents: 12021
diff changeset
233
11581
9b3833da6840 [gaim-migrate @ 13851]
Tim Ringenbach <marv@pidgin.im>
parents: 11554
diff changeset
234 GaimGtkWindow *gaim_gtkconv_get_window(GaimGtkConversation *gtkconv);
9b3833da6840 [gaim-migrate @ 13851]
Tim Ringenbach <marv@pidgin.im>
parents: 11554
diff changeset
235 GdkPixbuf *gaim_gtkconv_get_tab_icon(GaimConversation *conv, gboolean small_icon);
9b3833da6840 [gaim-migrate @ 13851]
Tim Ringenbach <marv@pidgin.im>
parents: 11554
diff changeset
236 void gaim_gtkconv_new(GaimConversation *conv);
11614
f72607814e4a [gaim-migrate @ 13888]
Tim Ringenbach <marv@pidgin.im>
parents: 11581
diff changeset
237 int gaim_gtkconv_get_tab_at_xy(GaimGtkWindow *win, int x, int y, gboolean *to_right);
5673
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5167
diff changeset
238 /*@}*/
62f57ec16f29 [gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents: 5167
diff changeset
239
8582
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
240 /**************************************************************************/
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
241 /** @name GTK+ Conversations Subsystem */
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
242 /**************************************************************************/
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
243 /*@{*/
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
244
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
245 /**
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
246 * Returns the gtk conversations subsystem handle.
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
247 *
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
248 * @return The conversations subsystem handle.
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
249 */
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
250 void *gaim_gtk_conversations_get_handle(void);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
251
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
252 /**
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
253 * Initializes the GTK+ conversations subsystem.
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
254 */
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
255 void gaim_gtk_conversations_init(void);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
256
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
257 /**
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
258 * Uninitialized the GTK+ conversation subsystem.
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
259 */
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
260 void gaim_gtk_conversations_uninit(void);
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
261
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
262 /*@}*/
d7c85220c685 [gaim-migrate @ 9332]
Christian Hammond <chipx86@chipx86.com>
parents: 8317
diff changeset
263
9713
db62420a53a2 [gaim-migrate @ 10574]
Mark Doliner <mark@kingant.net>
parents: 9709
diff changeset
264 #endif /* _GAIM_GTKCONVERSATION_H_ */