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