annotate src/main.c @ 9772:5f7c81eeebd2

[gaim-migrate @ 10640] Another ft patch from Dave West. This one makes transfers appear in the ft dialog earlier. I'm a bit concerned that transfers might not be removed correctly when canceled early on. Or that they won't show up with the right status between the time they're initiated and the time the file actually begins being transferred. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Wed, 18 Aug 2004 04:22:31 +0000
parents 4d05b6e9e9cd
children 4a15962c344a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 /*
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
2 * gaim
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3 *
8046
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7966
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7966
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
fa6395637e2c [gaim-migrate @ 8730]
Sean Egan <seanegan@gmail.com>
parents: 7966
diff changeset
6 * source distribution.
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 *
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11 * (at your option) any later version.
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 *
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16 * GNU General Public License for more details.
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 *
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21 *
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
22 */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
23
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6313
diff changeset
24 #include "gtkinternal.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
25
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
26 #include "account.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
27 #include "conversation.h"
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
28 #include "core.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
29 #include "debug.h"
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8241
diff changeset
30 #include "eventloop.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
31 #include "ft.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
32 #include "log.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
33 #include "notify.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
34 #include "prefs.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
35 #include "prpl.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
36 #include "pounce.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
37 #include "sound.h"
6106
99f4bbeb27bc [gaim-migrate @ 6567]
Mark Doliner <mark@kingant.net>
parents: 6065
diff changeset
38 #include "status.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
39 #include "util.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
40
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
41 #include "gtkaccount.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
42 #include "gtkblist.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
43 #include "gtkconn.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
44 #include "gtkconv.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
45 #include "gtkdebug.h"
9709
4d05b6e9e9cd [gaim-migrate @ 10570]
Mark Doliner <mark@kingant.net>
parents: 9609
diff changeset
46 #include "gtkdialogs.h"
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8241
diff changeset
47 #include "gtkeventloop.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
48 #include "gtkft.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
49 #include "gtknotify.h"
7966
7d25d4e50343 [gaim-migrate @ 8643]
Christian Hammond <chipx86@chipx86.com>
parents: 7956
diff changeset
50 #include "gtkplugin.h"
5875
448f2f4ca3ec [gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents: 5874
diff changeset
51 #include "gtkpounce.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
52 #include "gtkprefs.h"
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6313
diff changeset
53 #include "gtkprivacy.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
54 #include "gtkrequest.h"
8113
d60272410bd5 [gaim-migrate @ 8817]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
55 #include "gtkroomlist.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
56 #include "gtksound.h"
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5909
diff changeset
57 #include "gtkutils.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
58 #include "stock.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
59
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
60 #if HAVE_SIGNAL_H
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
61 # include <signal.h>
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
62 #endif
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
63
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
64 #include <getopt.h>
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
65
7168
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
66 #ifdef HAVE_STARTUP_NOTIFICATION
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
67 # define SN_API_NOT_YET_FROZEN
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
68 # include <libsn/sn-launchee.h>
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
69 # include <gdk/gdkx.h>
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
70 #endif
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
71
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
72 static GtkWidget *name;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
73 static GtkWidget *pass;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
74
7168
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
75 #ifdef HAVE_STARTUP_NOTIFICATION
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
76 static SnLauncheeContext *sn_context = NULL;
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
77 static SnDisplay *sn_display = NULL;
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
78 #endif
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
79
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
80 GtkWidget *mainwindow = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
81
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
82 int opt_away = 0;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4635
diff changeset
83 int docklet_count = 0;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
84 char *opt_away_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
85 int opt_debug = 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
86
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
87 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
88 /*
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
89 * Lists of signals we wish to catch and those we wish to ignore.
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
90 * Each list terminated with -1
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
91 */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
92 static int catch_sig_list[] = {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
93 SIGSEGV,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
94 SIGHUP,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
95 SIGINT,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
96 SIGTERM,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
97 SIGQUIT,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
98 SIGCHLD,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
99 -1
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
100 };
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
101
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
102 static int ignore_sig_list[] = {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
103 SIGPIPE,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
104 -1
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
105 };
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
106 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
107
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4514
diff changeset
108 static guint snd_tmout = 0;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
109 static gboolean sound_timeout(gpointer data)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
110 {
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5683
diff changeset
111 gaim_gtk_sound_set_login_mute(FALSE);
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4514
diff changeset
112 snd_tmout = 0;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
113 return FALSE;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
114 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
115
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
116 /* we need to do this for Oscar because serv_login only starts the login
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
117 * process, it doesn't end there. gaim_setup will be called later from
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
118 * oscar.c, after the buddy list is made and serv_finish_login is called */
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
119 void gaim_setup(GaimConnection *gc)
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
120 {
8947
fa6c2d893c51 [gaim-migrate @ 9719]
Mark Doliner <mark@kingant.net>
parents: 8905
diff changeset
121 if (gaim_prefs_get_bool("/gaim/gtk/sound/enabled/login")) {
fa6c2d893c51 [gaim-migrate @ 9719]
Mark Doliner <mark@kingant.net>
parents: 8905
diff changeset
122 if (snd_tmout)
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4514
diff changeset
123 g_source_remove(snd_tmout);
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5683
diff changeset
124 gaim_gtk_sound_set_login_mute(TRUE);
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8241
diff changeset
125 snd_tmout = gaim_timeout_add(10000, sound_timeout, NULL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
126 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
127 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
128
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
129 static gboolean domiddleclick(GtkWidget *w, GdkEventButton *event, gpointer null)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
130 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
131 if (event->button != 2)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
132 return FALSE;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
133
5780
a9029bed0479 [gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents: 5766
diff changeset
134 gaim_accounts_auto_login(GAIM_GTK_UI);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
135
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
136 return TRUE;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
137 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
138
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
139 static void dologin(GtkWidget *widget, GtkWidget *w)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
140 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
141 GaimAccount *account;
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
142 GtkWidget *item;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
143 const char *password = gtk_entry_get_text(GTK_ENTRY(pass));
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
144
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
145 item = gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(name))));
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
146 account = g_object_get_data(G_OBJECT(item), "account");
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
147
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
148 if (!account) {
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
149 gaim_notify_error(NULL, NULL, _("Please create an account."), NULL);
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
150 return;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
151 }
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
152
6036
547ba881bc7e [gaim-migrate @ 6486]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
153 gaim_account_set_password(account, (*password != '\0') ? password : NULL);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
154
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
155 gaim_account_connect(account);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
156 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
157
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
158 /* <name> is a comma-separated list of names, or NULL
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
159 if NULL and there is at least one user defined in .gaimrc, try to login.
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
160 if not NULL, parse <name> into separate strings, look up each one in
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
161 .gaimrc and, if it's there, try to login.
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
162 returns: 0 if successful
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
163 -1 if no user was found that had a saved password
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
164 */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
165 static int dologin_named(char *name)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
166 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
167 GaimAccount *account;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
168 char **names, **n;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
169 int retval = -1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
170
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
171 if (name !=NULL) { /* list of names given */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
172 names = g_strsplit(name, ",", 32);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
173 for (n = names; *n != NULL; n++) {
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7107
diff changeset
174 account = gaim_accounts_find(*n, NULL);
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4489
diff changeset
175 if (account) { /* found a user */
6231
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
176 retval = 0;
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
177 gaim_account_connect(account);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
178 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
179 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
180 g_strfreev(names);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
181 } else { /* no name given, use default */
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
182 account = (GaimAccount *)gaim_accounts_get_all()->data;
6231
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
183 retval = 0;
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
184 gaim_account_connect(account);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
185 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
186
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
187 return retval;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
188 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
189
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
190
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
191 static void combo_changed(GtkWidget *menu, GaimAccount *account, gpointer data)
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
192 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
193 if (account && gaim_account_get_remember_password(account)) {
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4489
diff changeset
194 gtk_entry_set_text(GTK_ENTRY(pass), account->password);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
195 } else {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
196 gtk_entry_set_text(GTK_ENTRY(pass), "");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
197 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
198 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
199
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
200
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
201 static void login_window_closed(GtkWidget *w, GdkEvent *ev, gpointer d)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
202 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
203 if(docklet_count) {
4880
9b51c090236a [gaim-migrate @ 5210]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4800
diff changeset
204 #ifdef _WIN32
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
205 wgaim_systray_minimize(mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
206 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
207 gtk_widget_hide(mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
208 } else
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
209 gaim_core_quit();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
210 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
211
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
212 void show_login()
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
213 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
214 GtkWidget *image;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
215 GtkWidget *vbox;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
216 GtkWidget *button;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
217 GtkWidget *hbox;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
218 GtkWidget *label;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
219 GtkWidget *vbox2;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
220
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
221 /* Do we already have a main window opened? If so, bring it back, baby... ribs... yeah */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
222 if (mainwindow) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
223 gtk_window_present(GTK_WINDOW(mainwindow));
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
224 return;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
225 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
226
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
227 mainwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
228
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
229 gtk_window_set_role(GTK_WINDOW(mainwindow), "login");
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4589
diff changeset
230 gtk_window_set_resizable(GTK_WINDOW(mainwindow), FALSE);
4703
e4dda06a3143 [gaim-migrate @ 5014]
Sean Egan <seanegan@gmail.com>
parents: 4695
diff changeset
231 gtk_window_set_title(GTK_WINDOW(mainwindow), _("Login"));
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
232 gtk_container_set_border_width(GTK_CONTAINER(mainwindow), 5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
233 g_signal_connect(G_OBJECT(mainwindow), "delete_event",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
234 G_CALLBACK(login_window_closed), mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
235
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
236 vbox = gtk_vbox_new(FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
237 gtk_container_add(GTK_CONTAINER(mainwindow), vbox);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
238
5024
8e55a4d362a3 [gaim-migrate @ 5361]
Sean Egan <seanegan@gmail.com>
parents: 4978
diff changeset
239 image = gtk_image_new_from_stock(GAIM_STOCK_LOGO, gtk_icon_size_from_name(GAIM_ICON_SIZE_LOGO));
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
240 gtk_box_pack_start(GTK_BOX(vbox), image, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
241
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
242 vbox2 = gtk_vbox_new(FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
243 gtk_container_set_border_width(GTK_CONTAINER(vbox2), 5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
244
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
245 /* why isn't there a gtk_label_new_with_markup? */
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
246 label = gtk_label_new(NULL);
8878
949107b156fd [gaim-migrate @ 9647]
Nathan Walp <nwalp@pidgin.im>
parents: 8839
diff changeset
247 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("<b>_Account:</b>"));
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
248 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
249 gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
250
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
251 name = gaim_gtk_account_option_menu_new(NULL, TRUE, G_CALLBACK(combo_changed), NULL, NULL);
8241
1d68a254237b [gaim-migrate @ 8964]
Mark Doliner <mark@kingant.net>
parents: 8136
diff changeset
252 gtk_label_set_mnemonic_widget(GTK_LABEL(label), name);
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
253
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
254 gtk_box_pack_start(GTK_BOX(vbox2), name, FALSE, TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
255 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
256
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
257 vbox2 = gtk_vbox_new(FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
258 gtk_container_set_border_width(GTK_CONTAINER(vbox2), 5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
259
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
260 label = gtk_label_new(NULL);
8878
949107b156fd [gaim-migrate @ 9647]
Nathan Walp <nwalp@pidgin.im>
parents: 8839
diff changeset
261 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("<b>_Password:</b>"));
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
262 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
263 gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
264
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
265 pass = gtk_entry_new();
8241
1d68a254237b [gaim-migrate @ 8964]
Mark Doliner <mark@kingant.net>
parents: 8136
diff changeset
266 gtk_label_set_mnemonic_widget(GTK_LABEL(label), pass);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
267 gtk_entry_set_visibility(GTK_ENTRY(pass), FALSE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
268 g_signal_connect(G_OBJECT(pass), "activate",
6109
0922bb7a7bbc [gaim-migrate @ 6571]
Mark Doliner <mark@kingant.net>
parents: 6106
diff changeset
269 G_CALLBACK(dologin), mainwindow);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
270 gtk_box_pack_start(GTK_BOX(vbox2), pass, FALSE, TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
271 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
272
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
273 /* Now for the button box */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
274 hbox = gtk_hbox_new(TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
275 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
276
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
277 /* And now for the buttons */
8878
949107b156fd [gaim-migrate @ 9647]
Nathan Walp <nwalp@pidgin.im>
parents: 8839
diff changeset
278 button = gaim_pixbuf_button_from_stock(_("_Accounts"), GAIM_STOCK_ACCOUNTS, GAIM_BUTTON_VERTICAL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
279 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
280 g_signal_connect(G_OBJECT(button), "clicked",
6119
0d2bd49c611e [gaim-migrate @ 6588]
Christian Hammond <chipx86@chipx86.com>
parents: 6109
diff changeset
281 G_CALLBACK(gaim_gtk_accounts_window_show), mainwindow);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
282 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
283
8878
949107b156fd [gaim-migrate @ 9647]
Nathan Walp <nwalp@pidgin.im>
parents: 8839
diff changeset
284 button = gaim_pixbuf_button_from_stock(_("_Preferences"), GTK_STOCK_PREFERENCES, GAIM_BUTTON_VERTICAL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
285 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
286 g_signal_connect(G_OBJECT(button), "clicked",
5530
2c4c975620f0 [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5492
diff changeset
287 G_CALLBACK(gaim_gtk_prefs_show), mainwindow);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
288 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
289
8878
949107b156fd [gaim-migrate @ 9647]
Nathan Walp <nwalp@pidgin.im>
parents: 8839
diff changeset
290 button = gaim_pixbuf_button_from_stock(_("_Sign on"), GAIM_STOCK_SIGN_ON, GAIM_BUTTON_VERTICAL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
291 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
292 g_signal_connect(G_OBJECT(button), "clicked",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
293 G_CALLBACK(dologin), mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
294 g_signal_connect(G_OBJECT(button), "button-press-event", G_CALLBACK(domiddleclick), NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
295 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
296
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
297 /* Now grab the focus that we need */
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
298 if (gaim_accounts_get_all()) {
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
299 GaimAccount *account = gaim_accounts_get_all()->data;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
300
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
301 if (gaim_account_get_remember_password(account)) {
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
302 combo_changed(NULL, account, NULL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
303 gtk_widget_grab_focus(button);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
304 } else {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
305 gtk_widget_grab_focus(pass);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
306 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
307 } else {
8136
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
308 gaim_gtk_accounts_window_show();
fab67640b59f [gaim-migrate @ 8841]
Nathan Walp <nwalp@pidgin.im>
parents: 8113
diff changeset
309 gtk_widget_grab_focus(button);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
310 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
311
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
312 /* And raise the curtain! */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
313 gtk_widget_show_all(mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
314
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
315 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
316
7107
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
317 static void
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
318 clean_pid(void)
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
319 {
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
320 #ifndef _WIN32
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
321 int status;
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
322 pid_t pid;
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
323
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
324 do {
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
325 pid = waitpid(-1, &status, WNOHANG);
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
326 } while (pid != 0 && pid != (pid_t)-1);
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
327 if(pid == (pid_t)-1 && errno != ECHILD) {
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
328 char errmsg[BUFSIZ];
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
329 snprintf(errmsg, BUFSIZ, "Warning: waitpid() returned %d", pid);
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
330 perror(errmsg);
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
331 }
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
332 #endif
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
333 }
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
334
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
335 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
336 void sighandler(int sig)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
337 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
338 switch (sig) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
339 case SIGHUP:
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
340 gaim_debug(GAIM_DEBUG_WARNING, "sighandler",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
341 "Caught signal %d\n", sig);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
342 gaim_connections_disconnect_all();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
343 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
344 case SIGSEGV:
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
345 #ifndef DEBUG
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
346 fprintf(stderr, "Gaim has segfaulted and attempted to dump a core file.\n"
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
347 "This is a bug in the software and has happened through\n"
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
348 "no fault of your own.\n\n"
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
349 "It is possible that this bug is already fixed in CVS.\n"
5747
7ec0cd751e6b [gaim-migrate @ 6172]
Luke Schierer <lschiere@pidgin.im>
parents: 5734
diff changeset
350 "If you can reproduce the crash, please notify the gaim\n"
7ec0cd751e6b [gaim-migrate @ 6172]
Luke Schierer <lschiere@pidgin.im>
parents: 5734
diff changeset
351 "maintainers by reporting a bug at\n"
6383
d6777fa16645 [gaim-migrate @ 6888]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
352 GAIM_WEBSITE "bug.php\n\n"
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
353 "Please make sure to specify what you were doing at the time,\n"
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
354 "and post the backtrace from the core file. If you do not know\n"
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
355 "how to get the backtrace, please get instructions at\n"
6383
d6777fa16645 [gaim-migrate @ 6888]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
356 GAIM_WEBSITE "gdb.php. If you need further\n"
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
357 "assistance, please IM either RobFlynn or SeanEgn and\n"
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
358 "they can help you.\n");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
359 #else
8452
e38c127ec2d4 [gaim-migrate @ 9182]
Sean Egan <seanegan@gmail.com>
parents: 8273
diff changeset
360 fprintf(stderr, "Hi, user. We need to talk.\n"
e38c127ec2d4 [gaim-migrate @ 9182]
Sean Egan <seanegan@gmail.com>
parents: 8273
diff changeset
361 "I think something's gone wrong here. It's probably my fault.\n"
e38c127ec2d4 [gaim-migrate @ 9182]
Sean Egan <seanegan@gmail.com>
parents: 8273
diff changeset
362 "No, really, it's not you... it's me... no no no, I think we get along well\n"
e38c127ec2d4 [gaim-migrate @ 9182]
Sean Egan <seanegan@gmail.com>
parents: 8273
diff changeset
363 "it's just that.... well, I want to see other people. I... what?!? NO! I haven't\n"
e38c127ec2d4 [gaim-migrate @ 9182]
Sean Egan <seanegan@gmail.com>
parents: 8273
diff changeset
364 "been cheating on you!! How many times do you want me to tell you?! And for the\n"
e38c127ec2d4 [gaim-migrate @ 9182]
Sean Egan <seanegan@gmail.com>
parents: 8273
diff changeset
365 "last time, it's just a rash!\n");
4703
e4dda06a3143 [gaim-migrate @ 5014]
Sean Egan <seanegan@gmail.com>
parents: 4695
diff changeset
366 /*g_on_error_query (g_get_prgname());*/
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
367 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
368 abort();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
369 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
370 case SIGCHLD:
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
371 clean_pid();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
372 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
373 signal(SIGCHLD, sighandler); /* restore signal catching on this one! */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
374 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
375 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
376 default:
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
377 gaim_debug(GAIM_DEBUG_WARNING, "sighandler",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
378 "Caught signal %d\n", sig);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
379 gaim_connections_disconnect_all();
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
380
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
381 gaim_plugins_unload_all();
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
382
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
383 if (gtk_main_level())
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
384 gtk_main_quit();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
385 exit(0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
386 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
387 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
388 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
389
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
390 static int ui_main()
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
391 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
392 #ifndef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
393 GList *icons = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
394 GdkPixbuf *icon = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
395 char *icon_path;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
396 #endif
4978
307c16c4b57e [gaim-migrate @ 5313]
Luke Schierer <lschiere@pidgin.im>
parents: 4957
diff changeset
397
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
398 if (current_smiley_theme == NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
399 smiley_theme_probe();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
400 if (smiley_themes) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
401 struct smiley_theme *smile = smiley_themes->data;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
402 load_smiley_theme(smile->path, TRUE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
403 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
404 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
405
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5242
diff changeset
406 gaim_gtk_blist_setup_sort_methods();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
407
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
408 #ifndef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
409 /* use the nice PNG icon for all the windows */
5024
8e55a4d362a3 [gaim-migrate @ 5361]
Sean Egan <seanegan@gmail.com>
parents: 4978
diff changeset
410 icon_path = g_build_filename(DATADIR, "pixmaps", "gaim", "icons", "online.png", NULL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
411 icon = gdk_pixbuf_new_from_file(icon_path, NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
412 g_free(icon_path);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
413 if (icon) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
414 icons = g_list_append(icons,icon);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
415 gtk_window_set_default_icon_list(icons);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
416 g_object_unref(G_OBJECT(icon));
4978
307c16c4b57e [gaim-migrate @ 5313]
Luke Schierer <lschiere@pidgin.im>
parents: 4957
diff changeset
417 g_list_free(icons);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
418 } else {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
419 gaim_debug(GAIM_DEBUG_ERROR, "ui_main",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
420 "Failed to load the default window icon!\n");
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
421 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
422 #endif
4978
307c16c4b57e [gaim-migrate @ 5313]
Luke Schierer <lschiere@pidgin.im>
parents: 4957
diff changeset
423
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
424 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
425 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
426
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
427 static void set_first_user(char *name)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
428 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
429 GaimAccount *account;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
430
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7107
diff changeset
431 account = gaim_accounts_find(name, NULL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
432
6231
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
433 if (account == NULL) { /* new user */
7956
1b8261f374ea [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7810
diff changeset
434 account = gaim_account_new(name, GAIM_PROTO_DEFAULT);
6231
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
435 gaim_accounts_add(account);
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
436 }
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
437
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
438 /* Place it as the first user. */
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
439 gaim_accounts_reorder(account, 0);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
440 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
441
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
442 static void
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
443 debug_init(void)
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
444 {
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
445 gaim_debug_set_ui_ops(gaim_gtk_debug_get_ui_ops());
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
446 gaim_gtk_debug_init();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
447 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
448
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
449 static void
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
450 gaim_gtk_ui_init(void)
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
451 {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
452 /* Set the UI operation structures. */
7015
dece74f05509 [gaim-migrate @ 7578]
Christian Hammond <chipx86@chipx86.com>
parents: 6890
diff changeset
453 gaim_accounts_set_ui_ops(gaim_gtk_accounts_get_ui_ops());
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
454 gaim_conversations_set_win_ui_ops(gaim_gtk_conversations_get_win_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
455 gaim_xfers_set_ui_ops(gaim_gtk_xfers_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
456 gaim_blist_set_ui_ops(gaim_gtk_blist_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
457 gaim_notify_set_ui_ops(gaim_gtk_notify_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
458 gaim_privacy_set_ui_ops(gaim_gtk_privacy_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
459 gaim_request_set_ui_ops(gaim_gtk_request_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
460 gaim_sound_set_ui_ops(gaim_gtk_sound_get_ui_ops());
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
461 gaim_connections_set_ui_ops(gaim_gtk_connections_get_ui_ops());
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
462
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
463 gaim_gtk_stock_init();
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
464 gaim_gtk_prefs_init();
9609
93211b7538d6 [gaim-migrate @ 10452]
Luke Schierer <lschiere@pidgin.im>
parents: 9606
diff changeset
465 gaim_gtk_account_init();
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
466 gaim_gtk_blist_init();
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
467 gaim_gtk_conversations_init();
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
468 gaim_gtk_pounces_init();
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6313
diff changeset
469 gaim_gtk_privacy_init();
6263
3565ee7a5dd3 [gaim-migrate @ 6760]
Christian Hammond <chipx86@chipx86.com>
parents: 6231
diff changeset
470 gaim_gtk_xfers_init();
8113
d60272410bd5 [gaim-migrate @ 8817]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
471 gaim_gtk_roomlist_init();
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
472 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
473
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
474 static void
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
475 gaim_gtk_quit(void)
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
476 {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
477 /* XXX? */
9594
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
478 /* YYY is there an XXX here? */
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
479
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
480 /* captain's log, stardate... */
7475
08ce2a94d9c7 [gaim-migrate @ 8088]
Mark Doliner <mark@kingant.net>
parents: 7438
diff changeset
481 /* LOG system_log(log_quit, NULL, NULL, OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); */
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
482
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
483 #ifdef USE_SM
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
484 /* unplug */
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
485 session_end();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
486 #endif
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
487
7966
7d25d4e50343 [gaim-migrate @ 8643]
Christian Hammond <chipx86@chipx86.com>
parents: 7956
diff changeset
488 /* Save the plugins we have loaded for next time. */
7d25d4e50343 [gaim-migrate @ 8643]
Christian Hammond <chipx86@chipx86.com>
parents: 7956
diff changeset
489 gaim_gtk_plugins_save();
7d25d4e50343 [gaim-migrate @ 8643]
Christian Hammond <chipx86@chipx86.com>
parents: 7956
diff changeset
490
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
491 /* and end it all... */
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
492 gtk_main_quit();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
493 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
494
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
495 static GaimCoreUiOps core_ops =
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
496 {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
497 gaim_gtk_prefs_init,
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
498 debug_init,
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
499 gaim_gtk_ui_init,
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
500 gaim_gtk_quit
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
501 };
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
502
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
503 static GaimCoreUiOps *
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
504 gaim_gtk_core_get_ui_ops(void)
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
505 {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
506 return &core_ops;
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
507 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
508
7102
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
509 static void
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
510 show_usage(int mode, const char *name)
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
511 {
7724
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
512 char *text=NULL;
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
513
7102
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
514 switch (mode) {
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
515 case 0: /* full help text */
7724
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
516 text=g_strdup_printf(_("Gaim %s\n"
7102
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
517 "Usage: %s [OPTION]...\n\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
518 " -a, --acct display account editor window\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
519 " -w, --away[=MESG] make away on signon (optional argument MESG specifies\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
520 " name of away message to use)\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
521 " -l, --login[=NAME] automatically login (optional argument NAME specifies\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
522 " account(s) to use, seperated by commas)\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
523 " -n, --loginwin don't automatically login; show login window\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
524 " -u, --user=NAME use account NAME\n"
8596
56360561af5e [gaim-migrate @ 9347]
Luke Schierer <lschiere@pidgin.im>
parents: 8452
diff changeset
525 " -c, --config=DIR use DIR for config files\n"
7102
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
526 " -d, --debug print debugging messages to stdout\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
527 " -v, --version display the current version and exit\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
528 " -h, --help display this help and exit\n"), VERSION, name);
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
529 break;
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
530 case 1: /* short message */
7724
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
531 text=g_strdup_printf(_("Gaim %s. Try `%s -h' for more information.\n"), VERSION, name);
7102
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
532 break;
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
533 }
7724
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
534
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
535 if(text) {
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
536 char *text_conv;
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
537 GError *error=NULL;
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
538
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
539 /* tries to convert 'text' to users locale */
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
540 text_conv=g_locale_from_utf8(text,-1,NULL,NULL,&error);
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
541 if(text_conv) {
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
542 puts(text_conv);
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
543 g_free(text_conv);
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
544 }
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
545 /* use 'text' as a fallback */
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
546 else {
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
547 g_warning("%s\n", error->message);
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
548 g_error_free(error);
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
549 puts(text);
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
550 }
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
551 g_free(text);
613b20c69d2c [gaim-migrate @ 8369]
Luke Schierer <lschiere@pidgin.im>
parents: 7600
diff changeset
552 }
7102
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
553 }
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
554
7168
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
555 #ifdef HAVE_STARTUP_NOTIFICATION
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
556 static void
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
557 sn_error_trap_push(SnDisplay *display, Display *xdisplay)
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
558 {
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
559 gdk_error_trap_push();
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
560 }
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
561
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
562 static void
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
563 sn_error_trap_pop(SnDisplay *display, Display *xdisplay)
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
564 {
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
565 gdk_error_trap_pop();
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
566 }
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
567
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
568 static void
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
569 startup_notification_complete(void)
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
570 {
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
571 Display *xdisplay;
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
572
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
573 xdisplay = GDK_DISPLAY();
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
574 sn_display = sn_display_new(xdisplay,
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
575 sn_error_trap_push,
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
576 sn_error_trap_pop);
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
577 sn_context =
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
578 sn_launchee_context_new_from_environment(sn_display,
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
579 DefaultScreen(xdisplay));
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
580
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
581 if (sn_context != NULL)
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
582 {
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
583 sn_launchee_context_complete(sn_context);
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
584 sn_launchee_context_unref(sn_context);
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
585
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
586 sn_display_unref(sn_display);
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
587 }
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
588 }
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
589 #endif /* HAVE_STARTUP_NOTIFICATION */
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
590
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
591 /* FUCKING GET ME A TOWEL! */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
592 #ifdef _WIN32
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
593 int gaim_main(HINSTANCE hint, int argc, char *argv[])
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
594 #else
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
595 int main(int argc, char *argv[])
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
596 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
597 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
598 int opt_acct = 0, opt_help = 0, opt_version = 0, opt_login = 0, opt_nologin = 0, dologin_ret = -1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
599 char *opt_user_arg = NULL, *opt_login_arg = NULL;
8601
cfb11d9a46fd [gaim-migrate @ 9352]
Luke Schierer <lschiere@pidgin.im>
parents: 8596
diff changeset
600 char *opt_session_arg = NULL, *opt_config_dir_arg = NULL;
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
601 char *plugin_search_paths[3];
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
602 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
603 int sig_indx; /* for setting up signal catching */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
604 sigset_t sigset;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
605 void (*prev_sig_disp)();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
606 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
607 int opt, opt_user = 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
608 int i;
7438
d3400dadc594 [gaim-migrate @ 8043]
Luke Schierer <lschiere@pidgin.im>
parents: 7431
diff changeset
609 gboolean gui_check;
9594
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
610 gchar *gaimrc, *accountsxml;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
611
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
612 struct option long_options[] = {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
613 {"acct", no_argument, NULL, 'a'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
614 /*{"away", optional_argument, NULL, 'w'}, */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
615 {"help", no_argument, NULL, 'h'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
616 /*{"login", optional_argument, NULL, 'l'}, */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
617 {"loginwin", no_argument, NULL, 'n'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
618 {"user", required_argument, NULL, 'u'},
8596
56360561af5e [gaim-migrate @ 9347]
Luke Schierer <lschiere@pidgin.im>
parents: 8452
diff changeset
619 {"config", required_argument, NULL, 'c'},
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
620 {"debug", no_argument, NULL, 'd'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
621 {"version", no_argument, NULL, 'v'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
622 {"session", required_argument, NULL, 's'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
623 {0, 0, 0, 0}
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
624 };
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
625
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
626 #ifdef DEBUG
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
627 opt_debug = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
628 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
629 #ifdef ENABLE_NLS
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
630 bindtextdomain(PACKAGE, LOCALEDIR);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
631 bind_textdomain_codeset(PACKAGE, "UTF-8");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
632 textdomain(PACKAGE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
633 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
634
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
635 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
636 /* Let's not violate any PLA's!!!! */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
637 /* jseymour: whatever the fsck that means */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
638 /* Robot101: for some reason things like gdm like to block *
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
639 * useful signals like SIGCHLD, so we unblock all the ones we *
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
640 * declare a handler for. thanks JSeymour and Vann. */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
641 if (sigemptyset(&sigset)) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
642 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
643 snprintf(errmsg, BUFSIZ, "Warning: couldn't initialise empty signal set");
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
644 perror(errmsg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
645 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
646 for(sig_indx = 0; catch_sig_list[sig_indx] != -1; ++sig_indx) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
647 if((prev_sig_disp = signal(catch_sig_list[sig_indx], sighandler)) == SIG_ERR) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
648 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
649 snprintf(errmsg, BUFSIZ, "Warning: couldn't set signal %d for catching",
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
650 catch_sig_list[sig_indx]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
651 perror(errmsg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
652 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
653 if(sigaddset(&sigset, catch_sig_list[sig_indx])) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
654 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
655 snprintf(errmsg, BUFSIZ, "Warning: couldn't include signal %d for unblocking",
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
656 catch_sig_list[sig_indx]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
657 perror(errmsg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
658 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
659 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
660 for(sig_indx = 0; ignore_sig_list[sig_indx] != -1; ++sig_indx) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
661 if((prev_sig_disp = signal(ignore_sig_list[sig_indx], SIG_IGN)) == SIG_ERR) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
662 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
663 snprintf(errmsg, BUFSIZ, "Warning: couldn't set signal %d to ignore",
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
664 ignore_sig_list[sig_indx]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
665 perror(errmsg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
666 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
667 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
668
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
669 if (sigprocmask(SIG_UNBLOCK, &sigset, NULL)) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
670 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
671 snprintf(errmsg, BUFSIZ, "Warning: couldn't unblock signals");
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
672 perror(errmsg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
673 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
674 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
675
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
676 for (i = 0; i < argc; i++) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
677 /* --login option */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
678 if (strstr(argv[i], "--l") == argv[i]) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
679 char *equals;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
680 opt_login = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
681 if ((equals = strchr(argv[i], '=')) != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
682 /* --login=NAME */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
683 opt_login_arg = g_strdup(equals + 1);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
684 if (strlen(opt_login_arg) == 0) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
685 g_free(opt_login_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
686 opt_login_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
687 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
688 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
689 /* --login NAME */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
690 opt_login_arg = g_strdup(argv[i + 1]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
691 strcpy(argv[i + 1], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
692 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
693 strcpy(argv[i], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
694 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
695 /* -l option */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
696 else if (strstr(argv[i], "-l") == argv[i]) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
697 opt_login = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
698 if (strlen(argv[i]) > 2) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
699 /* -lNAME */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
700 opt_login_arg = g_strdup(argv[i] + 2);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
701 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
702 /* -l NAME */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
703 opt_login_arg = g_strdup(argv[i + 1]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
704 strcpy(argv[i + 1], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
705 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
706 strcpy(argv[i], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
707 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
708 /* --away option */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
709 else if (strstr(argv[i], "--aw") == argv[i]) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
710 char *equals;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
711 opt_away = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
712 if ((equals = strchr(argv[i], '=')) != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
713 /* --away=MESG */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
714 opt_away_arg = g_strdup(equals + 1);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
715 if (strlen(opt_away_arg) == 0) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
716 g_free(opt_away_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
717 opt_away_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
718 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
719 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
720 /* --away MESG */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
721 opt_away_arg = g_strdup(argv[i + 1]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
722 strcpy(argv[i + 1], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
723 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
724 strcpy(argv[i], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
725 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
726 /* -w option */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
727 else if (strstr(argv[i], "-w") == argv[i]) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
728 opt_away = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
729 if (strlen(argv[i]) > 2) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
730 /* -wMESG */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
731 opt_away_arg = g_strdup(argv[i] + 2);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
732 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
733 /* -w MESG */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
734 opt_away_arg = g_strdup(argv[i + 1]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
735 strcpy(argv[i + 1], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
736 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
737 strcpy(argv[i], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
738 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
739 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
740 /*
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
741 if (opt_login) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
742 printf ("--login given with arg %s\n",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
743 opt_login_arg ? opt_login_arg : "NULL");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
744 exit(0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
745 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
746 */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
747
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
748 gui_check = gtk_init_check(&argc, &argv);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
749
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
750 /* scan command-line options */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
751 opterr = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
752 while ((opt = getopt_long(argc, argv,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
753 #ifndef _WIN32
8596
56360561af5e [gaim-migrate @ 9347]
Luke Schierer <lschiere@pidgin.im>
parents: 8452
diff changeset
754 "adhu:c:vns:",
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
755 #else
8596
56360561af5e [gaim-migrate @ 9347]
Luke Schierer <lschiere@pidgin.im>
parents: 8452
diff changeset
756 "adhu:c:vn",
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
757 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
758 long_options, NULL)) != -1) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
759 switch (opt) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
760 case 'u': /* set user */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
761 opt_user = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
762 opt_user_arg = g_strdup(optarg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
763 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
764 case 'a': /* account editor */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
765 opt_acct = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
766 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
767 case 'd': /* debug */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
768 opt_debug = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
769 break;
8596
56360561af5e [gaim-migrate @ 9347]
Luke Schierer <lschiere@pidgin.im>
parents: 8452
diff changeset
770 case 'c': /* use specified config dir */
56360561af5e [gaim-migrate @ 9347]
Luke Schierer <lschiere@pidgin.im>
parents: 8452
diff changeset
771 set_gaim_user_dir(optarg);
8601
cfb11d9a46fd [gaim-migrate @ 9352]
Luke Schierer <lschiere@pidgin.im>
parents: 8596
diff changeset
772 opt_config_dir_arg = g_strdup(optarg);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
773 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
774 case 's': /* use existing session ID */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
775 opt_session_arg = g_strdup(optarg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
776 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
777 case 'v': /* version */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
778 opt_version = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
779 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
780 case 'h': /* help */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
781 opt_help = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
782 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
783 case 'n': /* don't autologin */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
784 opt_nologin = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
785 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
786 case '?':
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
787 default:
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
788 show_usage(1, argv[0]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
789 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
790 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
791 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
792 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
793
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
794 /* show help message */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
795 if (opt_help) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
796 show_usage(0, argv[0]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
797 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
798 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
799 /* show version message */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
800 if (opt_version) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
801 printf("Gaim %s\n",VERSION);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
802 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
803 }
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
804
7538
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
805 if (!gui_check) {
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
806 char *display = gdk_get_display();
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
807
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
808 g_warning("cannot open display: %s", display ? display : "unset");
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
809 g_free(display);
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
810
357eb1c39b72 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7521
diff changeset
811 return 1;
7438
d3400dadc594 [gaim-migrate @ 8043]
Luke Schierer <lschiere@pidgin.im>
parents: 7431
diff changeset
812 }
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
813
7521
8beec54d1855 [gaim-migrate @ 8134]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7501
diff changeset
814 #ifdef _WIN32
8beec54d1855 [gaim-migrate @ 8134]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7501
diff changeset
815 wgaim_init(hint);
8beec54d1855 [gaim-migrate @ 8134]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7501
diff changeset
816 #endif
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
817 gaim_core_set_ui_ops(gaim_gtk_core_get_ui_ops());
8273
f24172f53650 [gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents: 8241
diff changeset
818 gaim_eventloop_set_ui_ops(gaim_gtk_eventloop_get_ui_ops());
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
819
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
820 if (!gaim_core_init(GAIM_GTK_UI)) {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
821 fprintf(stderr,
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
822 "Initialization of the Gaim core failed. Dumping core.\n"
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
823 "Please report this!\n");
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
824 abort();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
825 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
826
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
827 plugin_search_paths[0] = LIBDIR;
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
828 plugin_search_paths[1] = gaim_user_dir();
7600
f48c6e4db102 [gaim-migrate @ 8222]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7538
diff changeset
829 plugin_search_paths[2] = g_build_filename(gaim_user_dir(), "plugins", NULL);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
830
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
831 gaim_plugins_set_search_paths(sizeof(plugin_search_paths) /
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
832 sizeof(*plugin_search_paths),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
833 plugin_search_paths);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
834
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
835 g_free(plugin_search_paths[2]);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
836
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
837 gaim_plugins_probe(NULL);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
838
9594
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
839 /* XXX - Remove this check. Maybe in 2005. --KingAnt, 25 Jul 2004 */
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
840 gaimrc = g_build_filename(gaim_home_dir(), ".gaimrc", NULL);
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
841 accountsxml = g_build_filename(gaim_user_dir(), "accounts.xml", NULL);
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
842 if (g_file_test(gaimrc, G_FILE_TEST_EXISTS) &&
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
843 !g_file_test(accountsxml, G_FILE_TEST_EXISTS)) {
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
844 gaim_notify_error(NULL, NULL, _("Unable to load preferences"), _("Gaim was not able to load your preferences because they are stored in an old format that is no longer used. Please reconfigure your settings using the Preferences window."));
5665
132a30783c3d [gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents: 5642
diff changeset
845 }
9594
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
846 g_free(gaimrc);
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
847 g_free(accountsxml);
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
848
15d09e546cee [gaim-migrate @ 10437]
Mark Doliner <mark@kingant.net>
parents: 9300
diff changeset
849 gaim_accounts_load();
5665
132a30783c3d [gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents: 5642
diff changeset
850
8839
ebbc39e0050d [gaim-migrate @ 9605]
Nathan Walp <nwalp@pidgin.im>
parents: 8825
diff changeset
851 gaim_set_blist(gaim_blist_new());
ebbc39e0050d [gaim-migrate @ 9605]
Nathan Walp <nwalp@pidgin.im>
parents: 8825
diff changeset
852 gaim_blist_load();
ebbc39e0050d [gaim-migrate @ 9605]
Nathan Walp <nwalp@pidgin.im>
parents: 8825
diff changeset
853
ebbc39e0050d [gaim-migrate @ 9605]
Nathan Walp <nwalp@pidgin.im>
parents: 8825
diff changeset
854 gaim_prefs_load();
ebbc39e0050d [gaim-migrate @ 9605]
Nathan Walp <nwalp@pidgin.im>
parents: 8825
diff changeset
855
8900
7a67c459ab8f [gaim-migrate @ 9669]
Mark Doliner <mark@kingant.net>
parents: 8878
diff changeset
856 gaim_prefs_update_old();
8905
438e8d857554 [gaim-migrate @ 9674]
Mark Doliner <mark@kingant.net>
parents: 8900
diff changeset
857 gaim_gtk_prefs_update_old();
6693
8c1b5dd87fbf [gaim-migrate @ 7219]
Nathan Walp <nwalp@pidgin.im>
parents: 6623
diff changeset
858
5838
6aa7651c7c15 [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5826
diff changeset
859 /* load plugins we had when we quit */
5949
90d0849abd3c [gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents: 5943
diff changeset
860 gaim_plugins_load_saved("/gaim/gtk/plugins/loaded");
5665
132a30783c3d [gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents: 5642
diff changeset
861
5866
d6b5cab288bb [gaim-migrate @ 6297]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
862 gaim_pounces_load();
6065
3a40666c08b4 [gaim-migrate @ 6515]
Sean Egan <seanegan@gmail.com>
parents: 6036
diff changeset
863 gaim_status_load();
5581
3a9b54f260e3 [gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
864
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
865 ui_main();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
866
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
867 #ifdef USE_SM
8601
cfb11d9a46fd [gaim-migrate @ 9352]
Luke Schierer <lschiere@pidgin.im>
parents: 8596
diff changeset
868 session_init(argv[0], opt_session_arg, opt_config_dir_arg);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
869 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
870 if (opt_session_arg != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
871 g_free(opt_session_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
872 opt_session_arg = NULL;
8601
cfb11d9a46fd [gaim-migrate @ 9352]
Luke Schierer <lschiere@pidgin.im>
parents: 8596
diff changeset
873 }
cfb11d9a46fd [gaim-migrate @ 9352]
Luke Schierer <lschiere@pidgin.im>
parents: 8596
diff changeset
874
cfb11d9a46fd [gaim-migrate @ 9352]
Luke Schierer <lschiere@pidgin.im>
parents: 8596
diff changeset
875 if (opt_config_dir_arg != NULL) {
cfb11d9a46fd [gaim-migrate @ 9352]
Luke Schierer <lschiere@pidgin.im>
parents: 8596
diff changeset
876 g_free(opt_config_dir_arg);
cfb11d9a46fd [gaim-migrate @ 9352]
Luke Schierer <lschiere@pidgin.im>
parents: 8596
diff changeset
877 opt_config_dir_arg = NULL;
cfb11d9a46fd [gaim-migrate @ 9352]
Luke Schierer <lschiere@pidgin.im>
parents: 8596
diff changeset
878 }
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
879
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
880 /* set the default username */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
881 if (opt_user_arg != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
882 set_first_user(opt_user_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
883 g_free(opt_user_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
884 opt_user_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
885 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
886
5535
933739f789f9 [gaim-migrate @ 5935]
Nathan Walp <nwalp@pidgin.im>
parents: 5534
diff changeset
887 if (gaim_prefs_get_bool("/gaim/gtk/debug/enabled"))
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
888 gaim_gtk_debug_window_show();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
889
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
890 /* deal with --login */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
891 if (opt_login) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
892 dologin_ret = dologin_named(opt_login_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
893 if (opt_login_arg != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
894 g_free(opt_login_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
895 opt_login_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
896 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
897 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
898
5859
022786c7ab53 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
899 if (!opt_acct && !opt_nologin)
5780
a9029bed0479 [gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents: 5766
diff changeset
900 gaim_accounts_auto_login(GAIM_GTK_UI);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
901
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
902 if (opt_acct) {
6119
0d2bd49c611e [gaim-migrate @ 6588]
Christian Hammond <chipx86@chipx86.com>
parents: 6109
diff changeset
903 gaim_gtk_accounts_window_show();
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
904 } else if ((dologin_ret == -1) && !gaim_connections_get_all())
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
905 show_login();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
906
7168
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
907 #ifdef HAVE_STARTUP_NOTIFICATION
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
908 startup_notification_complete();
282887c9e3dc [gaim-migrate @ 7735]
Christian Hammond <chipx86@chipx86.com>
parents: 7150
diff changeset
909 #endif
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
910 gtk_main();
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5683
diff changeset
911 gaim_sound_shutdown();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
912 #ifdef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
913 wgaim_cleanup();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
914 #endif
9300
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 8947
diff changeset
915
98f01c233a40 [gaim-migrate @ 10104]
Sean Egan <seanegan@gmail.com>
parents: 8947
diff changeset
916
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
917 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
918
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
919 }