pidgin/pidginapplication.c

Thu, 05 Sep 2024 04:19:48 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 05 Sep 2024 04:19:48 -0500
changeset 42921
a595e51a5bfa
parent 42913
3da85f0c0ee6
child 42923
09fb857fb48c
permissions
-rw-r--r--

Add a badges property to Purple.ConversationMember

Testing Done:
Ran the tests under valgrind and called in the turtles for the rest.

Bugs closed: PIDGIN-17914

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

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 "pidginabout.h"
41689
e1d3677c844b Replace calls to the old account editor with the new editor.
Gary Kramlich <grim@reaperworld.com>
parents: 41656
diff changeset
37 #include "pidginaccounteditor.h"
41310
53e4815ef254 Create a new PidginAccountManager that replaces the manually built one.
Gary Kramlich <grim@reaperworld.com>
parents: 41307
diff changeset
38 #include "pidginaccountmanager.h"
41450
ce81f2bc04ca Rename PidginInactiveAccountsMenu to PidginAccountsDisabledMenu to match PidginAccountsEnabledMenu
Gary Kramlich <grim@reaperworld.com>
parents: 41441
diff changeset
39 #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
40 #include "pidginaccountsenabledmenu.h"
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
41 #include "pidginchanneljoindialog.h"
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 #include "pidgincore.h"
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 #include "pidgindebug.h"
41702
4289b30044ed Rename pidginconversationwindow.[ch] to pidgindisplaywindow.[ch]
Gary Kramlich <grim@reaperworld.com>
parents: 41696
diff changeset
44 #include "pidgindisplaywindow.h"
41414
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
45 #include "pidginpluginsmenu.h"
41867
5375c1d58c50 Create PurpleUi that merges PurpleCoreUiOps and PurpleUiInfo
Gary Kramlich <grim@reaperworld.com>
parents: 41853
diff changeset
46 #include "pidginprefs.h"
5375c1d58c50 Create PurpleUi that merges PurpleCoreUiOps and PurpleUiInfo
Gary Kramlich <grim@reaperworld.com>
parents: 41853
diff changeset
47 #include "pidginui.h"
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 struct _PidginApplication {
42361
59f54c17c61f Make PidginApplication subclass AdwApplication
Gary Kramlich <grim@reaperworld.com>
parents: 42291
diff changeset
50 AdwApplication parent;
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
51
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
52 GHashTable *action_groups;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 };
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 /******************************************************************************
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 * Globals
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 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
59 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
60 static gboolean opt_nologin = FALSE;
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 GOptionEntry option_entries[] = {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 "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
65 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
66 }, {
41336
844484fb31aa The debug command line option does not actually take an argument.
Stu Tomlinson <stu@nosnilmot.com>
parents: 41320
diff changeset
67 "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
68 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
69 }, {
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 "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
71 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
72 },
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 "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
75 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
76 }, {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 NULL
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 };
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42562
diff changeset
81 G_DEFINE_FINAL_TYPE(PidginApplication, pidgin_application,
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42562
diff changeset
82 ADW_TYPE_APPLICATION)
40553
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 /******************************************************************************
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
85 * Helpers
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
86 *****************************************************************************/
41634
f73f2b9c75b4 Do our best to set a transient parent for all of our dialogs
Gary Kramlich <grim@reaperworld.com>
parents: 41630
diff changeset
87
f73f2b9c75b4 Do our best to set a transient parent for all of our dialogs
Gary Kramlich <grim@reaperworld.com>
parents: 41630
diff changeset
88 /*
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
89 * pidgin_application_get_account_manager:
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
90 *
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
91 * 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
92 * helper manages the singleton.
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
93 *
42620
72178a341eb8 Remove minor versions from Since tags in Pidgin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
94 * Since: 3.0
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
95 */
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
96 static GtkWidget *
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
97 pidgin_application_get_account_manager(void) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
98 static GtkWidget *manager = NULL;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
99
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
100 if(!PIDGIN_IS_ACCOUNT_MANAGER(manager)) {
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
101 manager = pidgin_account_manager_new();
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
102 g_object_add_weak_pointer(G_OBJECT(manager), (gpointer)&manager);
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
103 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
104
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
105 return 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 /*
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
109 * 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
110 * @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
111 * @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
112 *
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 * 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
114 * 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
115 *
42620
72178a341eb8 Remove minor versions from Since tags in Pidgin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
116 * Since: 3.0
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
117 */
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 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
119 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
120 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
121 {
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 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
123
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 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
125 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
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 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
128
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 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
130
42858
a227c1f6c299 Use gtk_window_present instead of gtk_window_present_with_time
Gary Kramlich <grim@reaperworld.com>
parents: 42746
diff changeset
131 gtk_window_present(window);
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
132 }
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
41651
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
134 static void
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
135 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
136 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
137 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
138 {
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
139 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
140 }
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
141
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
142 static void
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
143 pidgin_application_init_plugins(void) {
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
144 GPluginManager *manager = gplugin_manager_get_default();
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
145
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
146 gplugin_manager_append_paths_from_environment(manager,
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
147 "PIDGIN_PLUGIN_PATH");
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 if(g_getenv("PURPLE_PLUGINS_SKIP")) {
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
150 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
151 "normal Pidgin plugin paths");
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
152 } else {
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
153 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
154
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
155 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
156 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
157 }
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
158
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
159 gplugin_manager_append_path(manager, path);
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
160 g_free(path);
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, PIDGIN_LIBDIR);
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
163 }
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
164
41651
eba22f6af173 Save loaded plugin state when they are loaded/unloaded
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41634
diff changeset
165 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
166 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
167 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
168 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
169 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
170 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
171 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
172 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
173
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
174 purple_plugins_refresh();
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
175 }
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
176
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
177 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
178 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
179 GMenu *target = NULL;
41315
1c9f47bbc031 Replace PidginAccountsDisabledMenu with PidginInactiveAccountsMenu which is a GMenuModel subclass.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
180 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
181
41450
ce81f2bc04ca Rename PidginInactiveAccountsMenu to PidginAccountsDisabledMenu to match PidginAccountsEnabledMenu
Gary Kramlich <grim@reaperworld.com>
parents: 41441
diff changeset
182 /* Link the AccountsDisabledMenu into its proper location. */
ce81f2bc04ca Rename PidginInactiveAccountsMenu to PidginAccountsDisabledMenu to match PidginAccountsEnabledMenu
Gary Kramlich <grim@reaperworld.com>
parents: 41441
diff changeset
183 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
184 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
185 "disabled-accounts");
41315
1c9f47bbc031 Replace PidginAccountsDisabledMenu with PidginInactiveAccountsMenu which is a GMenuModel subclass.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
186 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
187
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
188 /* 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
189 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
190 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
191 "enabled-accounts");
41457
f0e7534a555d Convert PidginAccountsEnabledMenu from a menu controller to a GMenuModel
Gary Kramlich <grim@reaperworld.com>
parents: 41454
diff changeset
192 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
193
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
194 /* Link the PluginsMenu into its proper location. */
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
195 model = pidgin_plugins_menu_new();
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
196 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
197 "plugins-menu");
b76bc2b4d7cc Convert plugin actions to GMenu and GAction
Gary Kramlich <grim@reaperworld.com>
parents: 41396
diff changeset
198 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
199 }
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
200
42886
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
201 static void
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
202 pidgin_application_setup_debug(G_GNUC_UNUSED PidginApplication *application) {
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
203 pidgin_debug_init_handler();
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
204
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
205 if(purple_strequal(PURPLE_BUILD_BUILDTYPE, "debug") ||
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
206 purple_strequal(PURPLE_BUILD_BUILDTYPE, "debugoptimized"))
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
207 {
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
208 pidgin_debug_set_print_enabled(TRUE);
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
209 } else {
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
210 pidgin_debug_set_print_enabled(opt_debug);
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
211 }
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
212 }
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
213
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
214 /******************************************************************************
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
215 * Actions
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
216 *****************************************************************************/
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41457
diff changeset
217 /*< private >
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
218 * pidgin_application_online_actions:
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
219 *
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
220 * 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
221 */
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
222 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
223 };
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
224
42377
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 * pidgin_application_channel_actions: (skip)
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
227 *
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
228 * 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
229 * supporting channels is connected.
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
230 */
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
231 static const gchar *pidgin_application_channel_actions[] = {
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
232 "join-channel",
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
233 };
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
234
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
235 /**
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
236 * 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
237 * @group: The #PidginActionGroup instance.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
238 * @actions: The action names.
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
239 * @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
240 * @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
241 *
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
242 * 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
243 */
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
244 static void
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
245 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
246 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
247 guint n_actions,
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
248 gboolean enabled)
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
249 {
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
250 guint i = 0;
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
251
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
252 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
253 GAction *action = NULL;
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
254 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
255
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
256 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
257
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
258 if(action != NULL) {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
259 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
260 } else {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
261 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
262 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
263 }
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 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
267 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
268 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
269 {
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
270 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
271 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
272
41307
685bab46fad2 Move the singleton handling of the about dialog to the action handler.
Gary Kramlich <grim@reaperworld.com>
parents: 41306
diff changeset
273 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
274 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
275 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
276 }
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
277
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
278 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
279 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
280
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
281 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
282 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
283 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
284 {
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
285 PidginApplication *application = data;
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
286 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
287
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
288 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
289
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
290 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
291 GTK_WINDOW(manager));
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
292 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
293
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
294 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
295 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
296 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
297 G_GNUC_UNUSED gpointer data)
41441
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
298 {
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
299 PurpleAccount *account = NULL;
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
300 PurpleAccountManager *manager = NULL;
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
301 const gchar *id = NULL;
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
302
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
303 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
304
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
305 manager = purple_account_manager_get_default();
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 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
308 if(PURPLE_IS_ACCOUNT(account)) {
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
309 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
310 g_clear_object(&account);
41441
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
311 }
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
312 }
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 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
315 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
316 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
317 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
318 {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
319 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
320 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
321 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
322
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
323
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
324 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
325 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
326 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
327 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
328 {
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
329 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
330 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
331 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
332
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
333 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
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 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
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 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
338 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
339 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
340 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
341 }
42291
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
342
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
343 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
344 }
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
345 }
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 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
348 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
349 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
350 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
351 {
42746
bd2da74b9201 Use GtkUriLauncher directly in Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42739
diff changeset
352 GtkUriLauncher *launcher = NULL;
bd2da74b9201 Use GtkUriLauncher directly in Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42739
diff changeset
353
bd2da74b9201 Use GtkUriLauncher directly in Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42739
diff changeset
354 launcher = gtk_uri_launcher_new("https://www.imfreedom.org/donate/");
bd2da74b9201 Use GtkUriLauncher directly in Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42739
diff changeset
355 gtk_uri_launcher_launch(launcher, NULL, NULL, NULL, NULL);
bd2da74b9201 Use GtkUriLauncher directly in Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42739
diff changeset
356 g_clear_object(&launcher);
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
357 }
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
358
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
359 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
360 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
361 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
362 {
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
363 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
364 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
365 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
366 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
367
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
368 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
369 g_warning("parameter is of type %s, expected %s",
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
370 g_variant_get_type_string(parameter),
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
371 (char *)G_VARIANT_TYPE_STRING);
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 return;
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
374 }
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
375
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
376 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
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 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
379
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
380 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
381 if(PURPLE_IS_ACCOUNT(account)) {
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
382 GtkWidget *account_manager = pidgin_application_get_account_manager();
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
383
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
384 pidgin_account_manager_edit_account(PIDGIN_ACCOUNT_MANAGER(account_manager),
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
385 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
386
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
387 pidgin_application_present_transient_window(application,
42151
41b9c5be8965 Embed PidginAccountEditor into PidginAccountManager
Gary Kramlich <grim@reaperworld.com>
parents: 42072
diff changeset
388 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
389
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
390 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
391 }
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
392 }
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
393
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
394 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
395 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
396 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
397 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
398 {
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 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
400 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
401 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
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 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
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 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
406
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
407 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
408 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
409 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
410 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
411 }
42291
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
412
a86b7bcbb471 Make the purple_account_manager_find functions return transfer full.
Gary Kramlich <grim@reaperworld.com>
parents: 42163
diff changeset
413 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
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 }
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
416
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
417 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
418 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
419 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
420 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
421 {
42517
9d1bf2e19825 Remove the old gtk file transfer stuff
Gary Kramlich <grim@reaperworld.com>
parents: 42512
diff changeset
422 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
423 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
424
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
425 static void
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
426 pidgin_application_join_channel(G_GNUC_UNUSED GSimpleAction *simple,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
427 G_GNUC_UNUSED GVariant *parameter,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
428 gpointer data)
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
429 {
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
430 PidginApplication *application = data;
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
431 static GtkWidget *dialog = NULL;
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
432
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
433 if(!GTK_IS_WIDGET(dialog)) {
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
434 dialog = pidgin_channel_join_dialog_new();
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
435 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
436 }
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
437
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
438 pidgin_application_present_transient_window(application,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
439 GTK_WINDOW(dialog));
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
440 }
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
441
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
442 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
443 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
444 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
445 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
446 {
42913
3da85f0c0ee6 Implement Purple.Ui.open_uri_async in Pidgin.Ui
Gary Kramlich <grim@reaperworld.com>
parents: 42886
diff changeset
447 PurpleUi *ui = NULL;
42746
bd2da74b9201 Use GtkUriLauncher directly in Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42739
diff changeset
448
42913
3da85f0c0ee6 Implement Purple.Ui.open_uri_async in Pidgin.Ui
Gary Kramlich <grim@reaperworld.com>
parents: 42886
diff changeset
449 ui = purple_core_get_ui();
3da85f0c0ee6 Implement Purple.Ui.open_uri_async in Pidgin.Ui
Gary Kramlich <grim@reaperworld.com>
parents: 42886
diff changeset
450 purple_ui_open_uri(ui, PURPLE_WEBSITE "help", NULL, NULL, NULL);
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
451 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
452
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
453 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
454 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
455 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
456 gpointer data)
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
457 {
42072
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
458 PidginApplication *application = data;
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
459 static GtkWidget *preferences = NULL;
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
460
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
461 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
462 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
463 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
464 }
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
465
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
466 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
467 GTK_WINDOW(preferences));
606edc665dc2 Display the preferences window as a singleton from the application
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
468
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
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
471 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
472 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
473 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
474 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
475 {
41853
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
476 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
477
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
478 /* 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
479 * update preferences.
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
480 */
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
481 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
482 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
483 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
484 NULL);
d5fe1ee0efae Disconnect the plugin state signals before we tell the core to shutdown
Gary Kramlich <grim@reaperworld.com>
parents: 41748
diff changeset
485
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
486 purple_core_quit();
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 GActionEntry app_entries[] = {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
490 {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
491 .name = "about",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
492 .activate = pidgin_application_about,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
493 }, {
41441
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
494 .name = "connect-account",
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
495 .activate = pidgin_application_connect_account,
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
496 .parameter_type = "s",
e114ed471a1e Implement the UI for the new Notifications API.
Gary Kramlich <grim@reaperworld.com>
parents: 41416
diff changeset
497 }, {
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
498 .name = "debug",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
499 .activate = pidgin_application_debug,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
500 }, {
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
501 .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
502 .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
503 .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
504 }, {
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
505 .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
506 .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
507 }, {
41304
25830cad9bfc Add a menu controller for the accounts enabled section of the accounts menu
Gary Kramlich <grim@reaperworld.com>
parents: 41303
diff changeset
508 .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
509 .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
510 .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
511 }, {
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
512 .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
513 .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
514 .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
515 }, {
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
516 .name = "file-transfers",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
517 .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
518 }, {
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
519 .name = "join-channel",
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
520 .activate = pidgin_application_join_channel,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
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 .name = "manage-accounts",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
523 .activate = pidgin_application_accounts,
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 .name = "online-help",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
526 .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
527 }, {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
528 .name = "preferences",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
529 .activate = pidgin_application_preferences,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
530 }, {
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
531 .name = "quit",
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
532 .activate = pidgin_application_quit,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
533 }
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
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
536 /******************************************************************************
42561
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
537 * Shortcuts
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
538 *****************************************************************************/
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
539 static inline void
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
540 pidgin_application_add_shortcut(PidginApplication *application,
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
541 const char *action,
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
542 const char *accelerator)
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
543 {
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
544 const char *accels[] = {accelerator, NULL};
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
545
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
546 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
547 action, accels);
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
548 }
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
549
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
550 static void
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
551 pidgin_application_add_shortcuts(PidginApplication *application) {
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
552 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
553 "<Primary>T");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
554 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
555 "<Primary>I");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
556 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
557 "<Primary>S");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
558 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
559 "<Primary>U");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
560 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
561 "<Primary>M");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
562 pidgin_application_add_shortcut(application, "app.preferences",
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
563 "<Primary>comma");
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
564 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
565 }
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
566
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
567 /******************************************************************************
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
568 * Purple Signal Callbacks
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
569 *****************************************************************************/
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
570 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
571 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
572 PurpleAccount *account,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
573 gpointer data)
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
574 {
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
575 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
576 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
577 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
578 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
579
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
580 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
581 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
582 pidgin_application_online_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
583 n_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
584 TRUE);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
585
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
586 /* 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
587 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
588
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
589 /* 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
590 * 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
591 * 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
592 */
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
593 should_enable_channel = PURPLE_PROTOCOL_IMPLEMENTS(protocol, CONVERSATION,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
594 get_channel_join_details);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
595 if(should_enable_channel) {
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
596 n_actions = G_N_ELEMENTS(pidgin_application_channel_actions);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
597 pidgin_application_actions_set_enabled(application,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
598 pidgin_application_channel_actions,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
599 n_actions,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
600 TRUE);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
601 }
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
602 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
603
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
604 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
605 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
606 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
607 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
608 {
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
609 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
610 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
611 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
612 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
613 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
614
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
615 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
616
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
617 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
618 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
619 PurpleProtocol *protocol = NULL;
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
620
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
621 /* 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
622 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
623
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
624 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
625
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
626 /* 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
627 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
628 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
629 {
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
630 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
631 }
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
632
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
633 /* If we can't disable anything we can exit the loop early. */
42718
b87a01be99af Remove the roomlist from Pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 42712
diff changeset
634 if(!should_disable_channel) {
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
635 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
636
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
637 break;
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
638 }
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
639
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
640 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
641 }
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
642
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
643 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
644 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
645 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
646 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
647 n_actions,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
648 FALSE);
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
649 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
650
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
651 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
652 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
653 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
654 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
655 n_actions,
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
656 FALSE);
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
657 }
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
658 }
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
659
41872
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
660 static void
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
661 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
662 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
663 gpointer data)
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
664 {
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
665 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
666 }
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
667
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
668 /******************************************************************************
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
669 * GtkApplication Implementation
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
670 *****************************************************************************/
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
671 static void
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
672 pidgin_application_window_added(GtkApplication *application,
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
673 GtkWindow *window)
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
674 {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
675 PidginApplication *pidgin_application = PIDGIN_APPLICATION(application);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
676 GHashTableIter iter;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
677 gpointer key, value;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
678
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
679 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
680 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
681
41695
6032b86cb76b Add devel CSS to application windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41689
diff changeset
682 if(strstr(VERSION, "-devel")) {
6032b86cb76b Add devel CSS to application windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41689
diff changeset
683 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
684 }
6032b86cb76b Add devel CSS to application windows
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41689
diff changeset
685
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
686 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
687 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
688 GActionGroup *action_group = value;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
689 gchar *prefix = key;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
690
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
691 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
692 action_group);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
693 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
694 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
695
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
696 /******************************************************************************
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
697 * GApplication Implementation
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
698 *****************************************************************************/
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
699 static void
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
700 pidgin_application_startup(GApplication *application) {
41209
909561f42b1f port Pidgin to the new PurpleAccountManager api
Gary Kramlich <grim@reaperworld.com>
parents: 41169
diff changeset
701 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
702 GError *error = NULL;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
703 GList *active_accounts = NULL;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
704
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
705 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
706
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
707 /* 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
708 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
709 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
710 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
711 } else {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
712 /* 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
713 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
714 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
715
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
716 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
717
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
718 g_free(cwd);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
719 g_free(path);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
720 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
721 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
722
42886
d9d26508be61 Automatically turn on print debugging in debug builds
Gary Kramlich <grim@reaperworld.com>
parents: 42873
diff changeset
723 pidgin_application_setup_debug(PIDGIN_APPLICATION(application));
41117
6dc7e403f8f2 Initialize Pidgin GLib logging handler earlier
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41106
diff changeset
724
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
725 #ifdef _WIN32
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
726 winpidgin_init();
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
727 #endif
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
728
41868
e69cbf7921ec Add an out parameter for an error to purple_core_init
Gary Kramlich <grim@reaperworld.com>
parents: 41867
diff changeset
729 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
730 GtkWidget *message = NULL;
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
731 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
732
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
733 if(error != NULL) {
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
734 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
735 }
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
736
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
737 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
738 _("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
739 error_message);
41868
e69cbf7921ec Add an out parameter for an error to purple_core_init
Gary Kramlich <grim@reaperworld.com>
parents: 41867
diff changeset
740 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
741
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
742 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
743 "close", _("Close"), NULL);
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
744 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
745 "close");
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
746
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
747 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
748 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
749 application);
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
750
42858
a227c1f6c299 Use gtk_window_present instead of gtk_window_present_with_time
Gary Kramlich <grim@reaperworld.com>
parents: 42746
diff changeset
751 gtk_window_present(GTK_WINDOW(message));
41872
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
752
b405b4eb38fa Display a dialog in Pidgin if purple_core_init returned FALSE
Gary Kramlich <grim@reaperworld.com>
parents: 41868
diff changeset
753 return;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
754 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
755
41169
4103b3869912 Upgrade to gplugin 0.37.0
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
756 pidgin_application_init_plugins();
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
757
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
758 /* 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
759 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
760
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
761 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
762
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
763 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
764 opt_config_dir_arg = NULL;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
765
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
766 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
767 pidgin_debug_window_show();
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
768 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
769
42647
b6c3acaddc83 Replace purple_accounts_restore_statuses with purple_account_manager_set_online
Gary Kramlich <grim@reaperworld.com>
parents: 42620
diff changeset
770 manager = purple_account_manager_get_default();
b6c3acaddc83 Replace purple_accounts_restore_statuses with purple_account_manager_set_online
Gary Kramlich <grim@reaperworld.com>
parents: 42620
diff changeset
771
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
772 if(opt_nologin) {
42704
ffc82edcdbfe Don't set saved statuses during startup
Gary Kramlich <grim@reaperworld.com>
parents: 42647
diff changeset
773 purple_account_manager_set_online(manager, FALSE);
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
774 } else {
42647
b6c3acaddc83 Replace purple_accounts_restore_statuses with purple_account_manager_set_online
Gary Kramlich <grim@reaperworld.com>
parents: 42620
diff changeset
775 purple_account_manager_set_online(manager, TRUE);
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
776 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
777
41454
7cc69bde919d Update pidgin for the purple_account_manager_get_(in)active deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41450
diff changeset
778 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
779 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
780 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
781 "manage-accounts", NULL);
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
782 } else {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
783 g_list_free(active_accounts);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
784 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
785
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
786 /* 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
787 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
788
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
789 /* 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
790 * are active.
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
791 */
42512
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
792 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
793 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
794 application, 0);
0f4010978378 Use the AccountManager's signals to control the sensitivity of the menus
Gary Kramlich <grim@reaperworld.com>
parents: 42508
diff changeset
795 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
796 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
797 application, 0);
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
798 }
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 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
801 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
802 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
803
41246
d2a2cc448987 Stop reaching into the PidginBuddyList struct from other files
Gary Kramlich <grim@reaperworld.com>
parents: 41234
diff changeset
804 if(GTK_IS_WINDOW(convwin)) {
d2a2cc448987 Stop reaching into the PidginBuddyList struct from other files
Gary Kramlich <grim@reaperworld.com>
parents: 41234
diff changeset
805 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
806 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
807 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
808
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
809 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
810 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
811 GVariantDict *options)
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
812 {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
813 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
814 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
815 purple_core_get_version());
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
816
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
817 return 0;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
818 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
819
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
820 return -1;
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
821 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
822
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
823 /******************************************************************************
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
824 * GObject Implementation
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
825 *****************************************************************************/
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
826 static void
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
827 pidgin_application_dispose(GObject *obj) {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
828 PidginApplication *application = PIDGIN_APPLICATION(obj);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
829
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
830 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
831
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
832 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
833 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
834
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
835 static void
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
836 pidgin_application_init(PidginApplication *application) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
837 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
838 gboolean online = FALSE;
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
839 gint n_actions = 0;
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
840
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
841 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
842 g_free, g_object_unref);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
843
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
844 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
845 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
846 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
847
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
848 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
849 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
850
42561
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
851 pidgin_application_add_shortcuts(application);
998b44b2c5f1 Make the application wide shortcuts work again
Gary Kramlich <grim@reaperworld.com>
parents: 42558
diff changeset
852
40600
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
853 /* 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
854 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
855
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
856 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
857 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
858 pidgin_application_online_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
859 n_actions,
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
860 online);
46d10c72c137 Create a new ContactList that will eventually fully replace PidginBuddyList
Gary Kramlich <grim@reaperworld.com>
parents: 40555
diff changeset
861
42377
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
862 n_actions = G_N_ELEMENTS(pidgin_application_channel_actions);
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
863 pidgin_application_actions_set_enabled(application,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
864 pidgin_application_channel_actions,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
865 n_actions,
6e3f1f8709b5 Create a new PidginChannelJoinDialog widget
Gary Kramlich <grim@reaperworld.com>
parents: 42366
diff changeset
866 online);
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
867 }
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 static void
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
870 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
871 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
872 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
873 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
874
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
875 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
876
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
877 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
878 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
879 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
880
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
881 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
882 }
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
883
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 * Public API
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
886 *****************************************************************************/
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
887 GApplication *
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
888 pidgin_application_new(void) {
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
889 return g_object_new(
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
890 PIDGIN_TYPE_APPLICATION,
40607
807f0b114d36 Add an application ID to Pidgin.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40600
diff changeset
891 "application-id", "im.pidgin.Pidgin3",
42873
429a2aeb803f Stop trying to handle protocols uris
Gary Kramlich <grim@reaperworld.com>
parents: 42858
diff changeset
892 "flags", G_APPLICATION_CAN_OVERRIDE_APP_ID,
40553
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
893 "register-session", TRUE,
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
894 NULL);
892459990bb7 Create a proper GtkApplication subclass for Pidgin and use it.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
895 }
41353
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
896
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
897 void
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
898 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
899 const gchar *prefix,
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
900 GActionGroup *action_group)
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
901 {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
902 GList *windows = NULL;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
903
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
904 g_return_if_fail(prefix != NULL);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
905
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
906 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
907 /* 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
908 * 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
909 */
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
910 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
911 g_object_ref(action_group));
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
912 } else {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
913 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
914 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
915
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
916 /* 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
917 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
918 while(windows != NULL) {
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
919 GtkWidget *window = GTK_WIDGET(windows->data);
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
920
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
921 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
922
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
923 windows = windows->next;
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
924 }
2b364a6512cc Make PidginApplication manage action groups for all windows
Gary Kramlich <grim@reaperworld.com>
parents: 41336
diff changeset
925 }
41748
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
926
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
927 GtkWindow *
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
928 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
929 GtkApplication *gtk_application = NULL;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
930 GtkWindow *window = NULL;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
931
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
932 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
933
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
934 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
935
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
936 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
937 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
938 GList *windows = NULL;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
939
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
940 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
941 if(windows != NULL) {
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
942 window = windows->data;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
943 }
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
944 }
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
945
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
946 return window;
fb13b6986266 Make the debug window transient for whatever window created it.
Gary Kramlich <grim@reaperworld.com>
parents: 41730
diff changeset
947 }

mercurial