annotate libpurple/example/nullclient.c @ 18603:5610c2ea0d94

revert 'no visible tabs when only one conversation' as it proved unpopular. Made tabs only fill the entire width of the notebook when there's only one tab to avoid http://pidgin.im/~deryni/that_just_looks_dumb.png
author Sean Egan <seanegan@gmail.com>
date Sun, 22 Jul 2007 08:14:16 +0000
parents b8572b937c09
children 2115910c5746
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1 /*
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
2 * pidgin
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
3 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
4 * Pidgin is the legal property of its developers, whose names are too numerous
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
6 * source distribution.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
7 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
11 * (at your option) any later version.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
12 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
16 * GNU General Public License for more details.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
17 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
21 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
22 */
18210
b8572b937c09 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents: 18013
diff changeset
23
b8572b937c09 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents: 18013
diff changeset
24 /* XXX: we probably shouldn't include internal.h in examples */
b8572b937c09 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents: 18013
diff changeset
25 #include "internal.h"
b8572b937c09 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents: 18013
diff changeset
26
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
27 #include "account.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
28 #include "conversation.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
29 #include "core.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
30 #include "debug.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
31 #include "eventloop.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
32 #include "ft.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
33 #include "log.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
34 #include "notify.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
35 #include "prefs.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
36 #include "prpl.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
37 #include "pounce.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
38 #include "savedstatuses.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
39 #include "sound.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
40 #include "status.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
41 #include "util.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
42 #include "whiteboard.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
43
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
44 #include <glib.h>
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
45
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
46 #include <string.h>
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
47 #include <unistd.h>
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
48
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
49 #include "defines.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
50
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
51 /**
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
52 * The following eventloop functions are used in both pidgin and purple-text. If your
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
53 * application uses glib mainloop, you can safely use this verbatim.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
54 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
55 #define PURPLE_GLIB_READ_COND (G_IO_IN | G_IO_HUP | G_IO_ERR)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
56 #define PURPLE_GLIB_WRITE_COND (G_IO_OUT | G_IO_HUP | G_IO_ERR | G_IO_NVAL)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
57
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
58 typedef struct _PurpleGLibIOClosure {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
59 PurpleInputFunction function;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
60 guint result;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
61 gpointer data;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
62 } PurpleGLibIOClosure;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
63
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
64 static void purple_glib_io_destroy(gpointer data)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
65 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
66 g_free(data);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
67 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
68
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
69 static gboolean purple_glib_io_invoke(GIOChannel *source, GIOCondition condition, gpointer data)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
70 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
71 PurpleGLibIOClosure *closure = data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
72 PurpleInputCondition purple_cond = 0;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
73
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
74 if (condition & PURPLE_GLIB_READ_COND)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
75 purple_cond |= PURPLE_INPUT_READ;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
76 if (condition & PURPLE_GLIB_WRITE_COND)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
77 purple_cond |= PURPLE_INPUT_WRITE;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
78
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
79 closure->function(closure->data, g_io_channel_unix_get_fd(source),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
80 purple_cond);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
81
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
82 return TRUE;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
83 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
84
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
85 static guint glib_input_add(gint fd, PurpleInputCondition condition, PurpleInputFunction function,
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
86 gpointer data)
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
87 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
88 PurpleGLibIOClosure *closure = g_new0(PurpleGLibIOClosure, 1);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
89 GIOChannel *channel;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
90 GIOCondition cond = 0;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
91
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
92 closure->function = function;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
93 closure->data = data;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
94
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
95 if (condition & PURPLE_INPUT_READ)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
96 cond |= PURPLE_GLIB_READ_COND;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
97 if (condition & PURPLE_INPUT_WRITE)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
98 cond |= PURPLE_GLIB_WRITE_COND;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
99
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
100 channel = g_io_channel_unix_new(fd);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
101 closure->result = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
102 purple_glib_io_invoke, closure, purple_glib_io_destroy);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
103
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
104 g_io_channel_unref(channel);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
105 return closure->result;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
106 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
107
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
108 static PurpleEventLoopUiOps glib_eventloops =
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
109 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
110 g_timeout_add,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
111 g_source_remove,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
112 glib_input_add,
15693
cd02b303b81f Fix the following compiler warning:
Mark Doliner <mark@kingant.net>
parents: 15617
diff changeset
113 g_source_remove,
16668
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
114 NULL,
18013
58e82c3b697e It's GLIB_CHECK_VERSION, not GLIB_VERSION_CHECK.
Richard Laager <rlaager@wiktel.com>
parents: 18009
diff changeset
115 #if GLIB_CHECK_VERSION(2,14,0)
18009
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17080
diff changeset
116 g_timeout_add_seconds,
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17080
diff changeset
117 #else
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17080
diff changeset
118 NULL,
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17080
diff changeset
119 #endif
16668
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
120
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
121 /* padding */
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
122 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
123 NULL,
15693
cd02b303b81f Fix the following compiler warning:
Mark Doliner <mark@kingant.net>
parents: 15617
diff changeset
124 NULL
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
125 };
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
126 /*** End of the eventloop functions. ***/
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
127
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
128 /*** Conversation uiops ***/
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
129 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
130 null_write_conv(PurpleConversation *conv, const char *who, const char *alias,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
131 const char *message, PurpleMessageFlags flags, time_t mtime)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
132 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
133 const char *name;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
134 if (alias && *alias)
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
135 name = alias;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
136 else if (who && *who)
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
137 name = who;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
138 else
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
139 name = NULL;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
140
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
141 printf("(%s) %s %s: %s\n", purple_conversation_get_name(conv),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
142 purple_utf8_strftime("(%H:%M:%S)", localtime(&mtime)),
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
143 name, message);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
144 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
145
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
146 static PurpleConversationUiOps null_conv_uiops =
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
147 {
17080
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
148 NULL, /* create_conversation */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
149 NULL, /* destroy_conversation */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
150 NULL, /* write_chat */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
151 NULL, /* write_im */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
152 null_write_conv, /* write_conv */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
153 NULL, /* chat_add_users */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
154 NULL, /* chat_rename_user */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
155 NULL, /* chat_remove_users */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
156 NULL, /* chat_update_user */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
157 NULL, /* present */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
158 NULL, /* has_focus */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
159 NULL, /* custom_smiley_add */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
160 NULL, /* custom_smiley_write */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
161 NULL, /* custom_smiley_close */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
162 NULL, /* send_confirm */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
163 NULL,
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
164 NULL,
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
165 NULL,
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
166 NULL
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
167 };
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
168
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
169 static void
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
170 null_ui_init()
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
171 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
172 /**
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
173 * This should initialize the UI components for all the modules. Here we
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
174 * just initialize the UI for conversations.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
175 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
176 purple_conversations_set_ui_ops(&null_conv_uiops);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
177 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
178
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
179 static PurpleCoreUiOps null_core_uiops =
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
180 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
181 NULL,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
182 NULL,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
183 null_ui_init,
16668
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
184 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
185
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
186 /* padding */
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
187 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
188 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
189 NULL,
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
190 NULL
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
191 };
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
192
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
193 static void
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
194 init_libpurple()
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
195 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
196 /* Set a custom user directory (optional) */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
197 purple_util_set_user_dir(CUSTOM_USER_DIRECTORY);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
198
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
199 /* We do not want any debugging for now to keep the noise to a minimum. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
200 purple_debug_set_enabled(FALSE);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
201
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
202 /* Set the core-uiops, which is used to
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
203 * - initialize the ui specific preferences.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
204 * - initialize the debug ui.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
205 * - initialize the ui components for all the modules.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
206 * - uninitialize the ui components for all the modules when the core terminates.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
207 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
208 purple_core_set_ui_ops(&null_core_uiops);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
209
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
210 /* Set the uiops for the eventloop. If your client is glib-based, you can safely
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
211 * copy this verbatim. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
212 purple_eventloop_set_ui_ops(&glib_eventloops);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
213
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
214 /* Set path to search for plugins. The core (libpurple) takes care of loading the
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
215 * core-plugins, which includes the protocol-plugins. So it is not essential to add
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
216 * any path here, but it might be desired, especially for ui-specific plugins. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
217 purple_plugins_add_search_path(CUSTOM_PLUGIN_PATH);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
218
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
219 /* Now that all the essential stuff has been set, let's try to init the core. It's
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
220 * necessary to provide a non-NULL name for the current ui to the core. This name
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
221 * is used by stuff that depends on this ui, for example the ui-specific plugins. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
222 if (!purple_core_init(UI_ID)) {
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
223 /* Initializing the core failed. Terminate. */
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
224 fprintf(stderr,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
225 "libpurple initialization failed. Dumping core.\n"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
226 "Please report this!\n");
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
227 abort();
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
228 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
229
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
230 /* Create and load the buddylist. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
231 purple_set_blist(purple_blist_new());
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
232 purple_blist_load();
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
233
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
234 /* Load the preferences. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
235 purple_prefs_load();
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
236
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
237 /* Load the desired plugins. The client should save the list of loaded plugins in
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
238 * the preferences using purple_plugins_save_loaded(PLUGIN_SAVE_PREF) */
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
239 purple_plugins_load_saved(PLUGIN_SAVE_PREF);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
240
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
241 /* Load the pounces. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
242 purple_pounces_load();
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
243 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
244
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
245 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
246 signed_on(PurpleConnection *gc, gpointer null)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
247 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
248 PurpleAccount *account = purple_connection_get_account(gc);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
249 printf("Account connected: %s %s\n", account->username, account->protocol_id);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
250 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
251
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
252 static void
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
253 connect_to_signals_for_demonstration_purposes_only()
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
254 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
255 static int handle;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
256 purple_signal_connect(purple_connections_get_handle(), "signed-on", &handle,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
257 PURPLE_CALLBACK(signed_on), NULL);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
258 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
259
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
260 int main()
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
261 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
262 GList *iter;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
263 int i, num;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
264 GList *names = NULL;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
265 const char *prpl;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
266 char name[128];
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
267 char *password;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
268 GMainLoop *loop = g_main_loop_new(NULL, FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
269 PurpleAccount *account;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
270 PurpleSavedStatus *status;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
271
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
272 init_libpurple();
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
273
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
274 printf("libpurple initialized.\n");
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
275
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
276 iter = purple_plugins_get_protocols();
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
277 for (i = 0; iter; iter = iter->next) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
278 PurplePlugin *plugin = iter->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
279 PurplePluginInfo *info = plugin->info;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
280 if (info && info->name) {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
281 printf("\t%d: %s\n", i++, info->name);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
282 names = g_list_append(names, info->id);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
283 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
284 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
285 printf("Select the protocol [0-%d]: ", i-1);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
286 fgets(name, sizeof(name), stdin);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
287 sscanf(name, "%d", &num);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
288 prpl = g_list_nth_data(names, num);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
289
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
290 printf("Username: ");
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
291 fgets(name, sizeof(name), stdin);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
292 name[strlen(name) - 1] = 0; /* strip the \n at the end */
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
293
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
294 /* Create the account */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
295 account = purple_account_new(name, prpl);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
296
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
297 /* Get the password for the account */
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
298 password = getpass("Password: ");
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
299 purple_account_set_password(account, password);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
300
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
301 /* It's necessary to enable the account first. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
302 purple_account_set_enabled(account, UI_ID, TRUE);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
303
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
304 /* Now, to connect the account(s), create a status and activate it. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
305 status = purple_savedstatus_new(NULL, PURPLE_STATUS_AVAILABLE);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
306 purple_savedstatus_activate(status);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
307
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
308 connect_to_signals_for_demonstration_purposes_only();
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
309
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
310 g_main_loop_run(loop);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
311
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
312 return 0;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
313 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
314