pidgin/pidginapplication.c

Sun, 14 Jan 2024 20:08:13 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Sun, 14 Jan 2024 20:08:13 -0600
changeset 42568
31e8c7c92e2f
parent 42562
f02878f30f91
child 42575
580339aa47cc
permissions
-rw-r--r--

Make sure all of the license headers for IRCv3 are GPLv2

Testing Done:
Ran `licensecheck` from debian in the following way.

```
$ licensecheck *.[ch] | cut -d: -f 2 | sort | uniq -c
27 GNU General Public License v2.0 or later
```

Reviewed at https://reviews.imfreedom.org/r/2913/

40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
42410
563e7a17c220 Fix possible clash of config headers
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42377
diff changeset
23 #include <purpleconfig.h>
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include <glib.h>
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 #include <glib/gi18n-lib.h>
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #include <glib/gstdio.h>
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 #include <gplugin.h>
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 #include <purple.h>
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31
41520
a5dd595361b4 Replace libhandy with libadwaita
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
32 #include <adwaita.h>
40873
68c7ef6c5320 Convert credentials page to use HdyPreferencesGroup and a list box.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40803
diff changeset
33
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 #include "pidginapplication.h"
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
36 #include "gtkdialogs.h"
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
37 #include "gtkroomlist.h"
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
38 #include "pidginabout.h"
41689
e1d3677c844b Replace calls to the old account editor with the new editor.
Gary Kramlich <grim@reaperworld.com>
parents: 41656
diff changeset
39 #include "pidginaccounteditor.h"
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents: 41307
diff changeset
40 #include "pidginaccountmanager.h"
41450
ce81f2bc04ca Rename PidginInactiveAccountsMenu to PidginAccountsDisabledMenu to match PidginAccountsEnabledMenu
Gary Kramlich <grim@reaperworld.com>
parents: 41441
diff changeset
41 #include "pidginaccountsdisabledmenu.h"
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
42 #include "pidginaccountsenabledmenu.h"
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
43 #include "pidginchanneljoindialog.h"
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 #include "pidgincore.h"
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 #include "pidgindebug.h"
41702
4289b30044ed Rename pidginconversationwindow.[ch] to pidgindisplaywindow.[ch]
Gary Kramlich <grim@reaperworld.com>
parents: 41696
diff changeset
46 #include "pidgindisplaywindow.h"
42562
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
47 #include "pidginimwindow.h"
41320
1695e758b590 Overhaul the status box
Gary Kramlich <grim@reaperworld.com>
parents: 41315
diff changeset
48 #include "pidginpluginsdialog.h"
41414
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
49 #include "pidginpluginsmenu.h"
41867
5375c1d58c50 Create PurpleUi that merges PurpleCoreUiOps and PurpleUiInfo
Gary Kramlich <grim@reaperworld.com>
parents: 41853
diff changeset
50 #include "pidginprefs.h"
5375c1d58c50 Create PurpleUi that merges PurpleCoreUiOps and PurpleUiInfo
Gary Kramlich <grim@reaperworld.com>
parents: 41853
diff changeset
51 #include "pidginui.h"
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 struct _PidginApplication {
42361
59f54c17c61f Make PidginApplication subclass AdwApplication
Gary Kramlich <grim@reaperworld.com>
parents: 42291
diff changeset
54 AdwApplication parent;
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
55
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
56 GHashTable *action_groups;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 };
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 /******************************************************************************
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 * Globals
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 *****************************************************************************/
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 static gchar *opt_config_dir_arg = NULL;
41336
844484fb31aa The debug command line option does not actually take an argument.
Stu Tomlinson <stu@nosnilmot.com>
parents: 41320
diff changeset
63 static gboolean opt_debug = FALSE;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 static gboolean opt_nologin = FALSE;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 static GOptionEntry option_entries[] = {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 "config", 'c', 0, G_OPTION_ARG_FILENAME, &opt_config_dir_arg,
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 N_("use DIR for config files"), N_("DIR")
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 }, {
41336
844484fb31aa The debug command line option does not actually take an argument.
Stu Tomlinson <stu@nosnilmot.com>
parents: 41320
diff changeset
71 "debug", 'd', 0, G_OPTION_ARG_NONE, &opt_debug,
41127
cd297cfc56f3 Move debug command-line option to the UIs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41117
diff changeset
72 N_("print debugging messages to stdout"), NULL
cd297cfc56f3 Move debug command-line option to the UIs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41117
diff changeset
73 }, {
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 "nologin", 'n', 0, G_OPTION_ARG_NONE, &opt_nologin,
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 N_("don't automatically login"), NULL
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 },
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 "version", 'v', 0, G_OPTION_ARG_NONE, NULL,
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 N_("display the current version and exit"), NULL
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 }, {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 NULL
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 };
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84
42366
05b4f31db369 Fix a parent type that was missed when PidginApplication was moved to AdwApplication
Gary Kramlich <grim@reaperworld.com>
parents: 42362
diff changeset
85 G_DEFINE_TYPE(PidginApplication, pidgin_application, ADW_TYPE_APPLICATION)
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 /******************************************************************************
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
88 * Helpers
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
89 *****************************************************************************/
41634
f73f2b9c75b4 Do our best to set a transient parent for all of our dialogs
Gary Kramlich <grim@reaperworld.com>
parents: 41630
diff changeset
90
f73f2b9c75b4 Do our best to set a transient parent for all of our dialogs
Gary Kramlich <grim@reaperworld.com>
parents: 41630
diff changeset
91 /*
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
92 * pidgin_application_get_account_manager:
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
93 *
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
94 * The Pidgin account manager can get opened from multiple actions, so this
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
95 * helper manages the singleton.
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
96 *
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
97 * Since: 3.0.0
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
98 */
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
99 static GtkWidget *
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
100 pidgin_application_get_account_manager(void) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
101 static GtkWidget *manager = NULL;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
102
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
103 if(!PIDGIN_IS_ACCOUNT_MANAGER(manager)) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
104 manager = pidgin_account_manager_new();
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
105 g_object_add_weak_pointer(G_OBJECT(manager), (gpointer)&manager);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
106 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
107
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
108 return manager;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
109 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
110
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
111 /*
41708
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
112 * pidgin_application_present_transient_window:
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
113 * @application: The application instance.
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
114 * @window: The [class@Gtk.Window] to present.
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
115 *
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
116 * Presents a window and makes sure its transient parent is set to the currently
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
117 * active window of @application.
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
118 *
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
119 * Since: 3.0.0
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
120 */
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
121 static void
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
122 pidgin_application_present_transient_window(PidginApplication *application,
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
123 GtkWindow *window)
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
124 {
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
125 GtkWindow *active_window = NULL;
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
126
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
127 g_return_if_fail(PIDGIN_IS_APPLICATION(application));
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
128 g_return_if_fail(GTK_IS_WINDOW(window));
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
129
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
130 active_window = pidgin_application_get_active_window(application);
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
131
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
132 gtk_window_set_transient_for(window, active_window);
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
133
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
134 gtk_window_present_with_time(window, GDK_CURRENT_TIME);
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
135 }
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
136
41651
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
137 static void
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
138 pidgin_application_plugin_state_changed(G_GNUC_UNUSED GPluginManager *manager,
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
139 G_GNUC_UNUSED GPluginPlugin *plugin,
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
140 G_GNUC_UNUSED gpointer data)
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
141 {
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
142 purple_plugins_save_loaded(PIDGIN_PREFS_ROOT "/plugins/loaded");
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
143 }
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
144
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
145 static void
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
146 pidgin_application_init_plugins(void) {
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
147 GPluginManager *manager = gplugin_manager_get_default();
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
148
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
149 gplugin_manager_append_paths_from_environment(manager,
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
150 "PIDGIN_PLUGIN_PATH");
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
151
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
152 if(g_getenv("PURPLE_PLUGINS_SKIP")) {
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
153 g_message("PURPLE_PLUGINS_SKIP environment variable set, skipping "
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
154 "normal Pidgin plugin paths");
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
155 } else {
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
156 gchar *path = g_build_filename(purple_data_dir(), "plugins", NULL);
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
157
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
158 if(!g_file_test(path, G_FILE_TEST_IS_DIR)) {
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
159 g_mkdir(path, S_IRUSR | S_IWUSR | S_IXUSR);
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
160 }
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
161
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
162 gplugin_manager_append_path(manager, path);
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
163 g_free(path);
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
164
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
165 gplugin_manager_append_path(manager, PIDGIN_LIBDIR);
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
166 }
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
167
41651
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
168 g_signal_connect(manager, "loaded-plugin",
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
169 G_CALLBACK(pidgin_application_plugin_state_changed), NULL);
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
170 g_signal_connect(manager, "load-plugin-failed",
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
171 G_CALLBACK(pidgin_application_plugin_state_changed), NULL);
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
172 g_signal_connect(manager, "unloaded-plugin",
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
173 G_CALLBACK(pidgin_application_plugin_state_changed), NULL);
41656
da54a3c1e468 Fix typo in signal name
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41651
diff changeset
174 g_signal_connect(manager, "unload-plugin-failed",
41651
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
175 G_CALLBACK(pidgin_application_plugin_state_changed), NULL);
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
176
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
177 purple_plugins_refresh();
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
178 }
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
179
41298
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
180 static void
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
181 pidgin_application_populate_dynamic_menus(PidginApplication *application) {
41457
f0e7534a555d Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents: 41454
diff changeset
182 GMenu *target = NULL;
41315
1c9f47bbc031 Replace PidginAccountsDisabledMenu with PidginInactiveAccountsMenu which is a GMenuModel subclass.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
183 GMenuModel *model = NULL;
41298
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
184
41450
ce81f2bc04ca Rename PidginInactiveAccountsMenu to PidginAccountsDisabledMenu to match PidginAccountsEnabledMenu
Gary Kramlich <grim@reaperworld.com>
parents: 41441
diff changeset
185 /* Link the AccountsDisabledMenu into its proper location. */
ce81f2bc04ca Rename PidginInactiveAccountsMenu to PidginAccountsDisabledMenu to match PidginAccountsEnabledMenu
Gary Kramlich <grim@reaperworld.com>
parents: 41441
diff changeset
186 model = pidgin_accounts_disabled_menu_new();
41298
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
187 target = gtk_application_get_menu_by_id(GTK_APPLICATION(application),
41450
ce81f2bc04ca Rename PidginInactiveAccountsMenu to PidginAccountsDisabledMenu to match PidginAccountsEnabledMenu
Gary Kramlich <grim@reaperworld.com>
parents: 41441
diff changeset
188 "disabled-accounts");
41315
1c9f47bbc031 Replace PidginAccountsDisabledMenu with PidginInactiveAccountsMenu which is a GMenuModel subclass.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
189 g_menu_append_section(target, NULL, model);
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
190
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
191 /* Link the AccountsEnabledMenu into its proper location. */
41457
f0e7534a555d Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents: 41454
diff changeset
192 model = pidgin_accounts_enabled_menu_new();
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
193 target = gtk_application_get_menu_by_id(GTK_APPLICATION(application),
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
194 "enabled-accounts");
41457
f0e7534a555d Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents: 41454
diff changeset
195 g_menu_append_section(target, NULL, model);
41414
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
196
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
197 /* Link the PluginsMenu into its proper location. */
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
198 model = pidgin_plugins_menu_new();
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
199 target = gtk_application_get_menu_by_id(GTK_APPLICATION(application),
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
200 "plugins-menu");
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
201 g_menu_append_section(target, NULL, model);
41298
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
202 }
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
203
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
204 /******************************************************************************
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
205 * Actions
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
206 *****************************************************************************/
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41457
diff changeset
207 /*< private >
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
208 * pidgin_application_online_actions:
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
209 *
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
210 * This list keeps track of which actions should only be enabled while online.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
211 */
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
212 static const gchar *pidgin_application_online_actions[] = {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
213 "get-user-info",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
214 "new-message",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
215 };
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
216
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
217 /**
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
218 * pidgin_application_channel_actions: (skip)
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
219 *
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
220 * This list keeps track of which actions should only be enabled if a protocol
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
221 * supporting channels is connected.
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
222 */
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
223 static const gchar *pidgin_application_channel_actions[] = {
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
224 "join-channel",
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
225 };
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
226
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41457
diff changeset
227 /*< private >
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
228 * pidgin_application_room_list_actions:
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
229 *
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
230 * This list keeps track of which actions should only be enabled if an online
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
231 * account supports room lists.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
232 */
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
233 static const gchar *pidgin_application_room_list_actions[] = {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
234 "room-list",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
235 };
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
236
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
237 /**
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
238 * pidgin_action_group_actions_set_enable: (skip)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
239 * @group: The #PidginActionGroup instance.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
240 * @actions: The action names.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
241 * @n_actions: The number of @actions.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
242 * @enabled: Whether or not to enable the actions.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
243 *
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
244 * Sets the enabled property of the named actions to @enabled.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
245 */
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
246 static void
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
247 pidgin_application_actions_set_enabled(PidginApplication *application,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
248 const gchar *const *actions,
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
249 guint n_actions,
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
250 gboolean enabled)
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
251 {
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
252 guint i = 0;
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
253
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
254 for(i = 0; i < n_actions; i++) {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
255 GAction *action = NULL;
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
256 const gchar *name = actions[i];
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
257
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
258 action = g_action_map_lookup_action(G_ACTION_MAP(application), name);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
259
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
260 if(action != NULL) {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
261 g_simple_action_set_enabled(G_SIMPLE_ACTION(action), enabled);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
262 } else {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
263 g_warning("Failed to find action named %s", name);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
264 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
265 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
266 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
267
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
268 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
269 pidgin_application_about(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
270 G_GNUC_UNUSED GVariant *parameter, gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
271 {
41708
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
272 PidginApplication *application = data;
41307
685bab46fad2 Move the singleton handling of the about dialog to the action handler.
Gary Kramlich <grim@reaperworld.com>
parents: 41306
diff changeset
273 static GtkWidget *about = NULL;
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
274
41307
685bab46fad2 Move the singleton handling of the about dialog to the action handler.
Gary Kramlich <grim@reaperworld.com>
parents: 41306
diff changeset
275 if(!GTK_IS_WIDGET(about)) {
685bab46fad2 Move the singleton handling of the about dialog to the action handler.
Gary Kramlich <grim@reaperworld.com>
parents: 41306
diff changeset
276 about = pidgin_about_dialog_new();
685bab46fad2 Move the singleton handling of the about dialog to the action handler.
Gary Kramlich <grim@reaperworld.com>
parents: 41306
diff changeset
277 g_object_add_weak_pointer(G_OBJECT(about), (gpointer)&about);
685bab46fad2 Move the singleton handling of the about dialog to the action handler.
Gary Kramlich <grim@reaperworld.com>
parents: 41306
diff changeset
278 }
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
279
41708
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
280 pidgin_application_present_transient_window(application, GTK_WINDOW(about));
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
281 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
282
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
283 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
284 pidgin_application_accounts(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
285 G_GNUC_UNUSED GVariant *parameter, gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
286 {
41708
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
287 PidginApplication *application = data;
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
288 GtkWidget *manager = pidgin_application_get_account_manager();
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents: 41307
diff changeset
289
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
290 pidgin_account_manager_show_overview(PIDGIN_ACCOUNT_MANAGER(manager));
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents: 41307
diff changeset
291
41708
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
292 pidgin_application_present_transient_window(application,
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
293 GTK_WINDOW(manager));
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
294 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
295
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
296 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
297 pidgin_application_connect_account(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
298 GVariant *parameter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
299 G_GNUC_UNUSED gpointer data)
41441
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
300 {
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
301 PurpleAccount *account = NULL;
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
302 PurpleAccountManager *manager = NULL;
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
303 const gchar *id = NULL;
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
304
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
305 id = g_variant_get_string(parameter, NULL);
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
306
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
307 manager = purple_account_manager_get_default();
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
308
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
309 account = purple_account_manager_find_by_id(manager, id);
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
310 if(PURPLE_IS_ACCOUNT(account)) {
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
311 purple_account_connect(account);
42291
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
312 g_clear_object(&account);
41441
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
313 }
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
314 }
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
315
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
316 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
317 pidgin_application_debug(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
318 G_GNUC_UNUSED GVariant *parameter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
319 G_GNUC_UNUSED gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
320 {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
321 gboolean old = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled");
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
322 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/debug/enabled", !old);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
323 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
324
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
325
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
326 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
327 pidgin_application_disable_account(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
328 GVariant *parameter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
329 G_GNUC_UNUSED gpointer data)
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
330 {
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
331 PurpleAccount *account = NULL;
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
332 PurpleAccountManager *manager = NULL;
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
333 const gchar *id = NULL;
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
334
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
335 id = g_variant_get_string(parameter, NULL);
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
336
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
337 manager = purple_account_manager_get_default();
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
338
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
339 account = purple_account_manager_find_by_id(manager, id);
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
340 if(PURPLE_IS_ACCOUNT(account)) {
41392
b5c84f55d5d2 Remove the ui parameter from purple_account_[gs]et_enabled
Gary Kramlich <grim@reaperworld.com>
parents: 41354
diff changeset
341 if(purple_account_get_enabled(account)) {
b5c84f55d5d2 Remove the ui parameter from purple_account_[gs]et_enabled
Gary Kramlich <grim@reaperworld.com>
parents: 41354
diff changeset
342 purple_account_set_enabled(account, FALSE);
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
343 }
42291
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
344
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
345 g_clear_object(&account);
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
346 }
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
347 }
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
348
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
349 static void
41932
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
350 pidgin_application_donate(G_GNUC_UNUSED GSimpleAction *simple,
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
351 G_GNUC_UNUSED GVariant *parameter,
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
352 G_GNUC_UNUSED gpointer data)
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
353 {
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
354 purple_notify_uri(NULL, "https://www.imfreedom.org/donate/");
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
355 }
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
356
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
357 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
358 pidgin_application_edit_account(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
359 GVariant *parameter, gpointer data)
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
360 {
41708
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
361 PidginApplication *application = data;
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
362 PurpleAccount *account = NULL;
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
363 PurpleAccountManager *manager = NULL;
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
364 const gchar *id = NULL;
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
365
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
366 if(!g_variant_is_of_type(parameter, G_VARIANT_TYPE_STRING)) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
367 g_warning("parameter is of type %s, expected %s",
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
368 g_variant_get_type_string(parameter),
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
369 (char *)G_VARIANT_TYPE_STRING);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
370
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
371 return;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
372 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
373
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
374 id = g_variant_get_string(parameter, NULL);
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
375
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
376 manager = purple_account_manager_get_default();
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
377
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
378 account = purple_account_manager_find_by_id(manager, id);
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
379 if(PURPLE_IS_ACCOUNT(account)) {
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
380 GtkWidget *account_manager = pidgin_application_get_account_manager();
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
381
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
382 pidgin_account_manager_edit_account(PIDGIN_ACCOUNT_MANAGER(account_manager),
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
383 account);
41708
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
384
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
385 pidgin_application_present_transient_window(application,
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
386 GTK_WINDOW(account_manager));
42291
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
387
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
388 g_clear_object(&account);
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
389 }
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
390 }
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
391
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
392 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
393 pidgin_application_enable_account(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
394 GVariant *parameter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
395 G_GNUC_UNUSED gpointer data)
41298
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
396 {
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
397 PurpleAccount *account = NULL;
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
398 PurpleAccountManager *manager = NULL;
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
399 const gchar *id = NULL;
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
400
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
401 id = g_variant_get_string(parameter, NULL);
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
402
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
403 manager = purple_account_manager_get_default();
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
404
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
405 account = purple_account_manager_find_by_id(manager, id);
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
406 if(PURPLE_IS_ACCOUNT(account)) {
41392
b5c84f55d5d2 Remove the ui parameter from purple_account_[gs]et_enabled
Gary Kramlich <grim@reaperworld.com>
parents: 41354
diff changeset
407 if(!purple_account_get_enabled(account)) {
b5c84f55d5d2 Remove the ui parameter from purple_account_[gs]et_enabled
Gary Kramlich <grim@reaperworld.com>
parents: 41354
diff changeset
408 purple_account_set_enabled(account, TRUE);
41298
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
409 }
42291
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
410
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
411 g_clear_object(&account);
41298
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
412 }
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
413 }
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
414
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
415 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
416 pidgin_application_file_transfers(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
417 G_GNUC_UNUSED GVariant *parameter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
418 G_GNUC_UNUSED gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
419 {
42517
9d1bf2e19825 Remove the old gtk file transfer stuff
Gary Kramlich <grim@reaperworld.com>
parents: 42512
diff changeset
420 g_warning("sorry not yet ported...");
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
421 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
422
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
423 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
424 pidgin_application_get_user_info(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
425 G_GNUC_UNUSED GVariant *parameter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
426 G_GNUC_UNUSED gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
427 {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
428 pidgin_dialogs_info();
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
429 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
430
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
431 static void
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
432 pidgin_application_join_channel(G_GNUC_UNUSED GSimpleAction *simple,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
433 G_GNUC_UNUSED GVariant *parameter,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
434 gpointer data)
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
435 {
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
436 PidginApplication *application = data;
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
437 static GtkWidget *dialog = NULL;
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
438
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
439 if(!GTK_IS_WIDGET(dialog)) {
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
440 dialog = pidgin_channel_join_dialog_new();
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
441 g_object_add_weak_pointer(G_OBJECT(dialog), (gpointer)&dialog);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
442 }
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
443
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
444 pidgin_application_present_transient_window(application,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
445 GTK_WINDOW(dialog));
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
446 }
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
447
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
448 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
449 pidgin_application_new_message(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
450 G_GNUC_UNUSED GVariant *parameter,
42562
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
451 gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
452 {
42562
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
453 PidginApplication *application = data;
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
454 static GtkWidget *dialog = NULL;
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
455
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
456 if(!PIDGIN_IS_IM_WINDOW(dialog)) {
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
457 dialog = pidgin_im_window_new();
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
458 g_object_add_weak_pointer(G_OBJECT(dialog), (gpointer)&dialog);
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
459 }
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
460
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
461 pidgin_application_present_transient_window(application,
f02878f30f91 Create a full widget for the new instant message window
Gary Kramlich <grim@reaperworld.com>
parents: 42561
diff changeset
462 GTK_WINDOW(dialog));
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
463 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
464
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
465 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
466 pidgin_application_online_help(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
467 G_GNUC_UNUSED GVariant *parameter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
468 G_GNUC_UNUSED gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
469 {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
470 purple_notify_uri(NULL, PURPLE_WEBSITE "help");
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
471 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
472
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
473 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
474 pidgin_application_plugins(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
475 G_GNUC_UNUSED GVariant *parameter, gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
476 {
41708
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
477 PidginApplication *application = data;
41630
8942038c4887 Make Plugin window a singleton
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41583
diff changeset
478 static GtkWidget *dialog = NULL;
8942038c4887 Make Plugin window a singleton
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41583
diff changeset
479
8942038c4887 Make Plugin window a singleton
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41583
diff changeset
480 if(!GTK_IS_WIDGET(dialog)) {
8942038c4887 Make Plugin window a singleton
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41583
diff changeset
481 dialog = pidgin_plugins_dialog_new();
8942038c4887 Make Plugin window a singleton
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41583
diff changeset
482 g_object_add_weak_pointer(G_OBJECT(dialog), (gpointer)&dialog);
8942038c4887 Make Plugin window a singleton
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41583
diff changeset
483 }
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
484
41708
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
485 pidgin_application_present_transient_window(application,
ab84e1ca8935 Make a bunch of windows transient and use gtk_window_present_with_time instead of just gtk_widget_show
Gary Kramlich <grim@reaperworld.com>
parents: 41702
diff changeset
486 GTK_WINDOW(dialog));
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
487 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
488
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
489 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
490 pidgin_application_preferences(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
491 G_GNUC_UNUSED GVariant *parameter,
42072
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
492 gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
493 {
42072
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
494 PidginApplication *application = data;
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
495 static GtkWidget *preferences = NULL;
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
496
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
497 if(!GTK_IS_WIDGET(preferences)) {
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
498 preferences = g_object_new(PIDGIN_TYPE_PREFS_WINDOW, NULL);
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
499 g_object_add_weak_pointer(G_OBJECT(preferences), (gpointer)&preferences);
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
500 }
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
501
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
502 pidgin_application_present_transient_window(application,
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
503 GTK_WINDOW(preferences));
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
504
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
505 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
506
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
507 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
508 pidgin_application_quit(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
509 G_GNUC_UNUSED GVariant *parameter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
510 G_GNUC_UNUSED gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
511 {
41853
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
512 GPluginManager *manager = NULL;
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
513
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
514 /* Remove the signal handlers for plugin state changing so we don't try to
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
515 * update preferences.
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
516 */
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
517 manager = gplugin_manager_get_default();
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
518 g_signal_handlers_disconnect_by_func(manager,
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
519 pidgin_application_plugin_state_changed,
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
520 NULL);
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
521
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
522 purple_core_quit();
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
523 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
524
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
525 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
526 pidgin_application_room_list(G_GNUC_UNUSED GSimpleAction *simple,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
527 G_GNUC_UNUSED GVariant *parameter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
528 G_GNUC_UNUSED gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
529 {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
530 pidgin_roomlist_dialog_show();
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
531 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
532
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
533 static GActionEntry app_entries[] = {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
534 {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
535 .name = "about",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
536 .activate = pidgin_application_about,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
537 }, {
41441
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
538 .name = "connect-account",
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
539 .activate = pidgin_application_connect_account,
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
540 .parameter_type = "s",
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
541 }, {
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
542 .name = "debug",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
543 .activate = pidgin_application_debug,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
544 }, {
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
545 .name = "disable-account",
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
546 .activate = pidgin_application_disable_account,
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
547 .parameter_type = "s",
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
548 }, {
41932
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
549 .name = "donate",
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
550 .activate = pidgin_application_donate,
0c3de459b1cc Add a donate link under the help menu and move the debug window item to the tools menu
Gary Kramlich <grim@reaperworld.com>
parents: 41872
diff changeset
551 }, {
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
552 .name = "edit-account",
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
553 .activate = pidgin_application_edit_account,
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
554 .parameter_type = "s",
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
555 }, {
41298
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
556 .name = "enable-account",
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
557 .activate = pidgin_application_enable_account,
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
558 .parameter_type = "s",
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
559 }, {
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
560 .name = "file-transfers",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
561 .activate = pidgin_application_file_transfers,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
562 }, {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
563 .name = "get-user-info",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
564 .activate = pidgin_application_get_user_info,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
565 }, {
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
566 .name = "join-channel",
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
567 .activate = pidgin_application_join_channel,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
568 }, {
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
569 .name = "manage-accounts",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
570 .activate = pidgin_application_accounts,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
571 }, {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
572 .name = "manage-plugins",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
573 .activate = pidgin_application_plugins,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
574 }, {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
575 .name = "new-message",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
576 .activate = pidgin_application_new_message,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
577 }, {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
578 .name = "online-help",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
579 .activate = pidgin_application_online_help,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
580 }, {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
581 .name = "preferences",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
582 .activate = pidgin_application_preferences,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
583 }, {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
584 .name = "quit",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
585 .activate = pidgin_application_quit,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
586 }, {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
587 .name = "room-list",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
588 .activate = pidgin_application_room_list,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
589 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
590 };
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
591
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
592 /******************************************************************************
42561
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
593 * Shortcuts
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
594 *****************************************************************************/
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
595 static inline void
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
596 pidgin_application_add_shortcut(PidginApplication *application,
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
597 const char *action,
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
598 const char *accelerator)
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
599 {
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
600 const char *accels[] = {accelerator, NULL};
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
601
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
602 gtk_application_set_accels_for_action(GTK_APPLICATION(application),
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
603 action, accels);
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
604 }
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
605
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
606 static void
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
607 pidgin_application_add_shortcuts(PidginApplication *application) {
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
608 pidgin_application_add_shortcut(application, "app.file-transfers",
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
609 "<Primary>T");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
610 pidgin_application_add_shortcut(application, "app.get-user-info",
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
611 "<Primary>I");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
612 pidgin_application_add_shortcut(application, "app.manage-accounts",
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
613 "<Primary>S");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
614 pidgin_application_add_shortcut(application, "app.manage-plugins",
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
615 "<Primary>U");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
616 pidgin_application_add_shortcut(application, "app.new-message",
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
617 "<Primary>M");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
618 pidgin_application_add_shortcut(application, "app.preferences",
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
619 "<Primary>comma");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
620 pidgin_application_add_shortcut(application, "app.quit", "<Primary>Q");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
621 }
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
622
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
623 /******************************************************************************
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
624 * Purple Signal Callbacks
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
625 *****************************************************************************/
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
626 static void
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
627 pidgin_application_connected_cb(G_GNUC_UNUSED PurpleAccountManager *manager,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
628 PurpleAccount *account,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
629 gpointer data)
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
630 {
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
631 PidginApplication *application = data;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
632 PurpleProtocol *protocol = NULL;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
633 gboolean should_enable_channel = FALSE;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
634 gboolean should_enable_room_list = FALSE;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
635 guint n_actions = 0;
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
636
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
637 n_actions = G_N_ELEMENTS(pidgin_application_online_actions);
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
638 pidgin_application_actions_set_enabled(PIDGIN_APPLICATION(data),
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
639 pidgin_application_online_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
640 n_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
641 TRUE);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
642
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
643 /* Now figure out what menus items should be enabled. */
40803
0e11ce1049b2 Port Pidgin from purple_protocols to PurpleProtocolManager
Gary Kramlich <grim@reaperworld.com>
parents: 40683
diff changeset
644 protocol = purple_account_get_protocol(account);
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
645
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
646 /* We assume that the current state is correct, so we don't bother changing
42558
05f7fd3db190 Remove some left over code for enabling and disabling actions that is no longer necessary
Gary Kramlich <grim@reaperworld.com>
parents: 42551
diff changeset
647 * state unless the newly connected account implements the channel virtual
05f7fd3db190 Remove some left over code for enabling and disabling actions that is no longer necessary
Gary Kramlich <grim@reaperworld.com>
parents: 42551
diff changeset
648 * functions, which would cause a state change.
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
649 */
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
650 should_enable_channel = PURPLE_PROTOCOL_IMPLEMENTS(protocol, CONVERSATION,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
651 get_channel_join_details);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
652 if(should_enable_channel) {
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
653 n_actions = G_N_ELEMENTS(pidgin_application_channel_actions);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
654 pidgin_application_actions_set_enabled(application,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
655 pidgin_application_channel_actions,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
656 n_actions,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
657 TRUE);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
658 }
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
659
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
660 /* likewise, for the room list, we only care about enabling in this
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
661 * handler.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
662 */
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
663 should_enable_room_list = PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
664 get_list);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
665 if(should_enable_room_list) {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
666 n_actions = G_N_ELEMENTS(pidgin_application_room_list_actions);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
667 pidgin_application_actions_set_enabled(application,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
668 pidgin_application_room_list_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
669 n_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
670 TRUE);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
671 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
672 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
673
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
674 static void
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
675 pidgin_application_disconnected_cb(PurpleAccountManager *manager,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
676 G_GNUC_UNUSED PurpleAccount *account,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
677 gpointer data)
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
678 {
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
679 PidginApplication *application = data;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
680 GList *connected = NULL;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
681 gboolean should_disable_actions = TRUE;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
682 gboolean should_disable_channel = TRUE;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
683 gboolean should_disable_room_list = TRUE;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
684 guint n_actions = 0;
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
685
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
686 connected = purple_account_manager_get_connected(manager);
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
687
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
688 while(connected != NULL) {
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
689 PurpleAccount *account = connected->data;
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
690 PurpleProtocol *protocol = NULL;
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
691
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
692 /* We have at least one account connected so we're online. */
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
693 should_disable_actions = FALSE;
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
694
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
695 protocol = purple_account_get_protocol(account);
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
696
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
697 /* Check if the protocol implements joining channels. */
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
698 if(PURPLE_PROTOCOL_IMPLEMENTS(protocol, CONVERSATION,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
699 get_channel_join_details))
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
700 {
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
701 should_disable_channel = FALSE;
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
702 }
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
703
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
704 /* Check if the protocol implements the room list interface. */
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
705 if(PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST, get_list)) {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
706 should_disable_room_list = FALSE;
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
707 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
708
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
709 /* If we can't disable anything we can exit the loop early. */
42558
05f7fd3db190 Remove some left over code for enabling and disabling actions that is no longer necessary
Gary Kramlich <grim@reaperworld.com>
parents: 42551
diff changeset
710 if(!should_disable_channel && !should_disable_room_list) {
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
711 g_clear_list(&connected, NULL);
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
712
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
713 break;
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
714 }
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
715
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
716 connected = g_list_delete_link(connected, connected);
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
717 }
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
718
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
719 if(should_disable_actions) {
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
720 n_actions = G_N_ELEMENTS(pidgin_application_online_actions);
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
721 pidgin_application_actions_set_enabled(PIDGIN_APPLICATION(data),
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
722 pidgin_application_online_actions,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
723 n_actions,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
724 FALSE);
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
725 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
726
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
727 if(should_disable_channel) {
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
728 n_actions = G_N_ELEMENTS(pidgin_application_channel_actions);
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
729 pidgin_application_actions_set_enabled(application,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
730 pidgin_application_channel_actions,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
731 n_actions,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
732 FALSE);
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
733 }
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
734
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
735 if(should_disable_room_list) {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
736 n_actions = G_N_ELEMENTS(pidgin_application_room_list_actions);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
737 pidgin_application_actions_set_enabled(application,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
738 pidgin_application_room_list_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
739 n_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
740 FALSE);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
741 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
742 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
743
41872
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
744 static void
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
745 pidgin_application_error_reponse_cb(G_GNUC_UNUSED AdwMessageDialog *self,
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
746 G_GNUC_UNUSED char *response,
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
747 gpointer data)
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
748 {
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
749 g_application_quit(data);
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
750 }
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
751
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
752 /******************************************************************************
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
753 * GtkApplication Implementation
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
754 *****************************************************************************/
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
755 static void
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
756 pidgin_application_window_added(GtkApplication *application,
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
757 GtkWindow *window)
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
758 {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
759 PidginApplication *pidgin_application = PIDGIN_APPLICATION(application);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
760 GHashTableIter iter;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
761 gpointer key, value;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
762
41354
ba08026458f4 Chain up to the parent class's implementation of the window_added default signal handler
Gary Kramlich <grim@reaperworld.com>
parents: 41353
diff changeset
763 GTK_APPLICATION_CLASS(pidgin_application_parent_class)->window_added(application,
ba08026458f4 Chain up to the parent class's implementation of the window_added default signal handler
Gary Kramlich <grim@reaperworld.com>
parents: 41353
diff changeset
764 window);
ba08026458f4 Chain up to the parent class's implementation of the window_added default signal handler
Gary Kramlich <grim@reaperworld.com>
parents: 41353
diff changeset
765
41695
6032b86cb76b Add devel CSS to application windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41689
diff changeset
766 if(strstr(VERSION, "-devel")) {
6032b86cb76b Add devel CSS to application windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41689
diff changeset
767 gtk_widget_add_css_class(GTK_WIDGET(window), "devel");
6032b86cb76b Add devel CSS to application windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41689
diff changeset
768 }
6032b86cb76b Add devel CSS to application windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41689
diff changeset
769
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
770 g_hash_table_iter_init(&iter, pidgin_application->action_groups);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
771 while(g_hash_table_iter_next(&iter, &key, &value)) {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
772 GActionGroup *action_group = value;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
773 gchar *prefix = key;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
774
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
775 gtk_widget_insert_action_group(GTK_WIDGET(window), prefix,
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
776 action_group);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
777 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
778 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
779
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
780 /******************************************************************************
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
781 * GApplication Implementation
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
782 *****************************************************************************/
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
783 static void
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
784 pidgin_application_startup(GApplication *application) {
41209
909561f42b1f port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents: 41169
diff changeset
785 PurpleAccountManager *manager = NULL;
41868
e69cbf7921ec Add an out parameter for an error to purple_core_init
Gary Kramlich <grim@reaperworld.com>
parents: 41867
diff changeset
786 GError *error = NULL;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
787 GList *active_accounts = NULL;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
788
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
789 G_APPLICATION_CLASS(pidgin_application_parent_class)->startup(application);
41524
f0a68067cff5 Update PidginApplication for the changes in GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41520
diff changeset
790
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
791 /* set a user-specified config directory */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
792 if (opt_config_dir_arg != NULL) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
793 if (g_path_is_absolute(opt_config_dir_arg)) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
794 purple_util_set_user_dir(opt_config_dir_arg);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
795 } else {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
796 /* Make an absolute (if not canonical) path */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
797 gchar *cwd = g_get_current_dir();
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
798 gchar *path = g_build_filename(cwd, opt_config_dir_arg, NULL);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
799
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
800 purple_util_set_user_dir(path);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
801
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
802 g_free(cwd);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
803 g_free(path);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
804 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
805 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
806
41117
6dc7e403f8f2 Initialize Pidgin GLib logging handler earlier
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41106
diff changeset
807 pidgin_debug_init_handler();
41127
cd297cfc56f3 Move debug command-line option to the UIs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41117
diff changeset
808 #ifdef DEBUG
cd297cfc56f3 Move debug command-line option to the UIs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41117
diff changeset
809 pidgin_debug_set_print_enabled(TRUE);
41336
844484fb31aa The debug command line option does not actually take an argument.
Stu Tomlinson <stu@nosnilmot.com>
parents: 41320
diff changeset
810 #else
844484fb31aa The debug command line option does not actually take an argument.
Stu Tomlinson <stu@nosnilmot.com>
parents: 41320
diff changeset
811 pidgin_debug_set_print_enabled(opt_debug);
41127
cd297cfc56f3 Move debug command-line option to the UIs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41117
diff changeset
812 #endif
41117
6dc7e403f8f2 Initialize Pidgin GLib logging handler earlier
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41106
diff changeset
813
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
814 #ifdef _WIN32
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
815 winpidgin_init();
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
816 #endif
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
817
41868
e69cbf7921ec Add an out parameter for an error to purple_core_init
Gary Kramlich <grim@reaperworld.com>
parents: 41867
diff changeset
818 if(!purple_core_init(pidgin_ui_new(), &error)) {
41872
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
819 GtkWidget *message = NULL;
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
820 const char *error_message = "unknown error";
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
821
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
822 if(error != NULL) {
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
823 error_message = error->message;
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
824 }
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
825
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
826 message = adw_message_dialog_new(NULL,
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
827 _("Pidgin 3 failed to initialize"),
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
828 error_message);
41868
e69cbf7921ec Add an out parameter for an error to purple_core_init
Gary Kramlich <grim@reaperworld.com>
parents: 41867
diff changeset
829 g_clear_error(&error);
41872
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
830
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
831 adw_message_dialog_add_responses(ADW_MESSAGE_DIALOG(message),
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
832 "close", _("Close"), NULL);
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
833 adw_message_dialog_set_close_response(ADW_MESSAGE_DIALOG(message),
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
834 "close");
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
835
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
836 g_signal_connect(message, "response",
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
837 G_CALLBACK(pidgin_application_error_reponse_cb),
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
838 application);
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
839
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
840 gtk_window_present_with_time(GTK_WINDOW(message), GDK_CURRENT_TIME);
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
841
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
842 return;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
843 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
844
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
845 pidgin_application_init_plugins();
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
846
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
847 /* load plugins we had when we quit */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
848 purple_plugins_load_saved(PIDGIN_PREFS_ROOT "/plugins/loaded");
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
849
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
850 gtk_window_set_default_icon_name("pidgin");
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
851
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
852 g_free(opt_config_dir_arg);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
853 opt_config_dir_arg = NULL;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
854
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
855 /*
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
856 * We want to show the blist early in the init process so the
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
857 * user feels warm and fuzzy.
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
858 */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
859 purple_blist_show();
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
860
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
861 if(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled")) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
862 pidgin_debug_window_show();
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
863 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
864
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
865 if(opt_nologin) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
866 /* Set all accounts to "offline" */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
867 PurpleSavedStatus *saved_status;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
868
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
869 /* If we've used this type+message before, lookup the transient status */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
870 saved_status = purple_savedstatus_find_transient_by_type_and_message(
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
871 PURPLE_STATUS_OFFLINE, NULL);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
872
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
873 /* If this type+message is unique then create a new transient saved status */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
874 if(saved_status == NULL) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
875 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_OFFLINE);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
876 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
877
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
878 /* Set the status for each account */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
879 purple_savedstatus_activate(saved_status);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
880 } else {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
881 /* Everything is good to go--sign on already */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
882 if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status")) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
883 purple_savedstatus_activate(purple_savedstatus_get_startup());
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
884 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
885
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
886 purple_accounts_restore_current_statuses();
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
887 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
888
41209
909561f42b1f port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents: 41169
diff changeset
889 manager = purple_account_manager_get_default();
41454
7cc69bde919d Update pidgin for the purple_account_manager_get_(in)active deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41450
diff changeset
890 active_accounts = purple_account_manager_get_enabled(manager);
41209
909561f42b1f port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents: 41169
diff changeset
891 if(active_accounts == NULL) {
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents: 41307
diff changeset
892 g_action_group_activate_action(G_ACTION_GROUP(application),
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents: 41307
diff changeset
893 "manage-accounts", NULL);
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
894 } else {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
895 g_list_free(active_accounts);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
896 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
897
41298
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
898 /* Populate our dynamic menus. */
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
899 pidgin_application_populate_dynamic_menus(PIDGIN_APPLICATION(application));
6d816e02fd76 Create a menu controller that will keep a GMenu in sync with the disabled accounts in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 41246
diff changeset
900
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
901 /* Connect to the connected and disconnected signals to manage which menus
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
902 * are active.
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
903 */
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
904 g_signal_connect_object(manager, "account-connected",
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
905 G_CALLBACK(pidgin_application_connected_cb),
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
906 application, 0);
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
907 g_signal_connect_object(manager, "account-disconnected",
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
908 G_CALLBACK(pidgin_application_disconnected_cb),
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
909 application, 0);
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
910 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
911
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
912 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
913 pidgin_application_activate(G_GNUC_UNUSED GApplication *application) {
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41695
diff changeset
914 GtkWidget *convwin = pidgin_display_window_get_default();
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
915
41246
d2a2cc448987 Stop reaching into the PidginBuddyList struct from other files
Gary Kramlich <grim@reaperworld.com>
parents: 41234
diff changeset
916 if(GTK_IS_WINDOW(convwin)) {
d2a2cc448987 Stop reaching into the PidginBuddyList struct from other files
Gary Kramlich <grim@reaperworld.com>
parents: 41234
diff changeset
917 gtk_window_present(GTK_WINDOW(convwin));
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
918 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
919 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
920
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
921 static gint
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
922 pidgin_application_command_line(GApplication *application,
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
923 GApplicationCommandLine *cmdline)
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
924 {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
925 gchar **argv = NULL;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
926 gint argc = 0, i = 0;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
927
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
928 argv = g_application_command_line_get_arguments(cmdline, &argc);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
929
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
930 if(argc == 1) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
931 /* No arguments, just activate */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
932 g_application_activate(application);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
933 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
934
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
935 /* Start at 1 to skip the executable name */
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
936 for (i = 1; i < argc; i++) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
937 purple_got_protocol_handler_uri(argv[i]);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
938 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
939
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
940 g_strfreev(argv);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
941
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
942 return 0;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
943 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
944
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
945 static gint
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41932
diff changeset
946 pidgin_application_handle_local_options(G_GNUC_UNUSED GApplication *application,
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
947 GVariantDict *options)
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
948 {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
949 if (g_variant_dict_contains(options, "version")) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
950 printf("%s %s (libpurple %s)\n", PIDGIN_NAME, DISPLAY_VERSION,
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
951 purple_core_get_version());
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
952
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
953 return 0;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
954 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
955
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
956 return -1;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
957 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
958
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
959 /******************************************************************************
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
960 * GObject Implementation
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
961 *****************************************************************************/
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
962 static void
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
963 pidgin_application_dispose(GObject *obj) {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
964 PidginApplication *application = PIDGIN_APPLICATION(obj);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
965
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
966 g_clear_pointer(&application->action_groups, g_hash_table_destroy);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
967
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
968 G_OBJECT_CLASS(pidgin_application_parent_class)->dispose(obj);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
969 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
970
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
971 static void
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
972 pidgin_application_init(PidginApplication *application) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
973 GApplication *gapp = G_APPLICATION(application);
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
974 gboolean online = FALSE;
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
975 gint n_actions = 0;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
976
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
977 application->action_groups = g_hash_table_new_full(g_str_hash, g_str_equal,
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
978 g_free, g_object_unref);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
979
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
980 g_application_add_main_option_entries(gapp, option_entries);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
981 g_application_add_option_group(gapp, purple_get_option_group());
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
982 g_application_add_option_group(gapp, gplugin_get_option_group());
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
983
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
984 g_action_map_add_action_entries(G_ACTION_MAP(application), app_entries,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
985 G_N_ELEMENTS(app_entries), application);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
986
42561
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
987 pidgin_application_add_shortcuts(application);
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
988
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
989 /* Set the default state for our actions to match our online state. */
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
990 online = purple_connections_is_online();
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
991
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
992 n_actions = G_N_ELEMENTS(pidgin_application_online_actions);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
993 pidgin_application_actions_set_enabled(application,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
994 pidgin_application_online_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
995 n_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
996 online);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
997
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
998 n_actions = G_N_ELEMENTS(pidgin_application_channel_actions);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
999 pidgin_application_actions_set_enabled(application,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
1000 pidgin_application_channel_actions,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
1001 n_actions,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
1002 online);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
1003
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
1004 n_actions = G_N_ELEMENTS(pidgin_application_room_list_actions);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
1005 pidgin_application_actions_set_enabled(application,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
1006 pidgin_application_room_list_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
1007 n_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
1008 online);
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1009 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1010
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1011 static void
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1012 pidgin_application_class_init(PidginApplicationClass *klass) {
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1013 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1014 GApplicationClass *app_class = G_APPLICATION_CLASS(klass);
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1015 GtkApplicationClass *gtk_app_class = GTK_APPLICATION_CLASS(klass);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1016
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1017 obj_class->dispose = pidgin_application_dispose;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1018
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1019 app_class->startup = pidgin_application_startup;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1020 app_class->activate = pidgin_application_activate;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1021 app_class->command_line = pidgin_application_command_line;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1022 app_class->handle_local_options = pidgin_application_handle_local_options;
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1023
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1024 gtk_app_class->window_added = pidgin_application_window_added;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1025 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1026
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1027 /******************************************************************************
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1028 * Public API
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1029 *****************************************************************************/
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1030 GApplication *
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1031 pidgin_application_new(void) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1032 return g_object_new(
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1033 PIDGIN_TYPE_APPLICATION,
40607
807f0b114d36 Add an application ID to Pidgin.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40600
diff changeset
1034 "application-id", "im.pidgin.Pidgin3",
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1035 "flags", G_APPLICATION_CAN_OVERRIDE_APP_ID |
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1036 G_APPLICATION_HANDLES_COMMAND_LINE,
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1037 "register-session", TRUE,
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1038 NULL);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1039 }
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1040
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1041 void
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1042 pidgin_application_add_action_group(PidginApplication *application,
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1043 const gchar *prefix,
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1044 GActionGroup *action_group)
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1045 {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1046 GList *windows = NULL;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1047
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1048 g_return_if_fail(prefix != NULL);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1049
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1050 if(G_IS_ACTION_GROUP(action_group)) {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1051 /* If action_group is valid, we need to create new references to the
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1052 * prefix and action_group when inserting them into the hash table.
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1053 */
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1054 g_hash_table_insert(application->action_groups, g_strdup(prefix),
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1055 g_object_ref(action_group));
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1056 } else {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1057 g_hash_table_remove(application->action_groups, prefix);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1058 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1059
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1060 /* Now walk through the windows and add/remove the action group. */
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1061 windows = gtk_application_get_windows(GTK_APPLICATION(application));
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1062 while(windows != NULL) {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1063 GtkWidget *window = GTK_WIDGET(windows->data);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1064
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1065 gtk_widget_insert_action_group(window, prefix, action_group);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1066
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1067 windows = windows->next;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1068 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
1069 }
41748
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1070
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1071 GtkWindow *
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1072 pidgin_application_get_active_window(PidginApplication *application) {
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1073 GtkApplication *gtk_application = NULL;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1074 GtkWindow *window = NULL;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1075
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1076 g_return_val_if_fail(PIDGIN_IS_APPLICATION(application), NULL);
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1077
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1078 gtk_application = GTK_APPLICATION(application);
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1079
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1080 window = gtk_application_get_active_window(gtk_application);
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1081 if(!GTK_IS_WINDOW(window)) {
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1082 GList *windows = NULL;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1083
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1084 windows = gtk_application_get_windows(gtk_application);
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1085 if(windows != NULL) {
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1086 window = windows->data;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1087 }
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1088 }
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1089
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1090 return window;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
1091 }

mercurial