pidgin/pidginstatusmanager.c

Fri, 03 Nov 2023 00:50:51 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 03 Nov 2023 00:50:51 -0500
changeset 42475
ce06ca18db9b
parent 42202
2273647d24b0
permissions
-rw-r--r--

Integrate PurplePresenceManager with the core and uis

The original implemenation was just the API and wasn't yet tied into the core
or ui. This fixes that.

Testing Done:
Temporarily added code to add a saved status in the `PurpleUi->get_presence_manager` implementation and verified it was saved to the correct file.

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

41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include "pidginstatusmanager.h"
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include "pidginiconname.h"
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
26 #include "pidginstatuseditor.h"
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 enum {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 RESPONSE_USE,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 RESPONSE_ADD,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 RESPONSE_MODIFY,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 RESPONSE_REMOVE
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 };
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 enum {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 COLUMN_TITLE,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 COLUMN_ICON_NAME,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 COLUMN_TYPE,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 COLUMN_MESSAGE,
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
40 COLUMN_STATUS,
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
41 COLUMN_EDITOR
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 };
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 struct _PidginStatusManager {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 GtkDialog parent;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
47 GListStore *model;
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
48 GtkSingleSelection *selection;
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 GtkWidget *use_button;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 GtkWidget *modify_button;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 GtkWidget *remove_button;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 };
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 G_DEFINE_TYPE(PidginStatusManager, pidgin_status_manager, GTK_TYPE_DIALOG)
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
57 /* Ugh, prototypes :,( */
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
58 static void pidgin_status_editor_destroy_cb(GtkWidget *widget, gpointer data);
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
59
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 /******************************************************************************
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 * Helpers
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 *****************************************************************************/
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
63 static void
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
64 pidgin_status_manager_show_editor(PidginStatusManager *manager) {
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
65 GObject *wrapper = NULL;
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
66 PurpleSavedStatus *status = NULL;
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
67 GtkWidget *editor = NULL;
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
68
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
69 wrapper = gtk_single_selection_get_selected_item(manager->selection);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
70 status = g_object_get_data(wrapper, "savedstatus");
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
71 editor = g_object_get_data(wrapper, "editor");
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
72
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
73 if(status == NULL) {
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
74 return;
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
75 }
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
76
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
77 if(!PIDGIN_IS_STATUS_EDITOR(editor)) {
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
78 editor = pidgin_status_editor_new(status);
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
79
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
80 gtk_window_set_transient_for(GTK_WINDOW(editor), GTK_WINDOW(manager));
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
81
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
82 g_object_set_data(wrapper, "editor", editor);
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
83 g_signal_connect_object(editor, "destroy",
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
84 G_CALLBACK(pidgin_status_editor_destroy_cb),
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
85 manager, 0);
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
86
42202
2273647d24b0 Use gtk_widget_set_visible for everything
Gary Kramlich <grim@reaperworld.com>
parents: 42198
diff changeset
87 gtk_widget_set_visible(editor, TRUE);
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
88 } else {
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
89 gtk_window_present_with_time(GTK_WINDOW(editor), GDK_CURRENT_TIME);
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
90 }
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
91 }
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
92
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
93 static void
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
94 pidgin_status_manager_remove_selected(PidginStatusManager *manager) {
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
95 GObject *wrapper = NULL;
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
96 PurpleSavedStatus *status = NULL;
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
97 GtkWidget *editor = NULL;
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
98
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
99 wrapper = gtk_single_selection_get_selected_item(manager->selection);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
100 status = g_object_get_data(wrapper, "savedstatus");
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
101 editor = g_object_get_data(wrapper, "editor");
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
102
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
103 if(GTK_IS_WIDGET(editor)) {
41542
e0ff7bea9eb3 Port PidginStatusManager to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
104 gtk_window_destroy(GTK_WINDOW(editor));
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
105 }
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
106
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
107 purple_savedstatus_delete_by_status(status);
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
108 }
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
109
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 static PurpleSavedStatus *
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 pidgin_status_manager_get_selected_status(PidginStatusManager *manager) {
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
112 GObject *wrapper = NULL;
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 PurpleSavedStatus *status = NULL;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
115 wrapper = gtk_single_selection_get_selected_item(manager->selection);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
116 status = g_object_get_data(wrapper, "savedstatus");
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 return status;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 static void
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 pidgin_status_manager_add(PidginStatusManager *manager,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 PurpleSavedStatus *status)
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 {
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
125 GObject *wrapper = NULL;
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 PurpleStatusPrimitive primitive;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 gchar *message = NULL;
42198
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
128 const char *type = NULL;
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 message = purple_markup_strip_html(purple_savedstatus_get_message(status));
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 primitive = purple_savedstatus_get_primitive_type(status);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 type = purple_primitive_get_name_from_type(primitive);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
135 /* PurpleSavedStatus is a boxed type, so it can't be put in a GListModel;
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
136 * instead create a wrapper GObject instance to hold its information. */
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
137 wrapper = g_object_new(G_TYPE_OBJECT, NULL);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
138 g_object_set_data(wrapper, "savedstatus", status);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
139 g_object_set_data_full(wrapper, "title",
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
140 g_strdup(purple_savedstatus_get_title(status)),
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
141 g_free);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
142 g_object_set_data_full(wrapper, "type", g_strdup(type), g_free);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
143 g_object_set_data_full(wrapper, "message", g_strdup(message), g_free);
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144
42106
eafcc5051015 Fix leak in Status Manager dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42026
diff changeset
145 g_list_store_append(manager->model, wrapper);
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
146
42106
eafcc5051015 Fix leak in Status Manager dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42026
diff changeset
147 g_free(message);
eafcc5051015 Fix leak in Status Manager dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42026
diff changeset
148 g_object_unref(wrapper);
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 static void
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 pidgin_status_manager_populate_helper(gpointer data, gpointer user_data) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 PidginStatusManager *manager = user_data;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 PurpleSavedStatus *status = data;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 if(!purple_savedstatus_is_transient(status)) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 pidgin_status_manager_add(manager, status);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 static void
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 pidgin_status_manager_refresh(PidginStatusManager *manager) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 GList *statuses = NULL;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
165 g_list_store_remove_all(manager->model);
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 statuses = purple_savedstatuses_get_all();
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 g_list_foreach(statuses, pidgin_status_manager_populate_helper, manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 /******************************************************************************
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 * Callbacks
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 *****************************************************************************/
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 static void
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 pidgin_status_manager_response_cb(GtkDialog *dialog, gint response_id,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 gpointer data)
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 PidginStatusManager *manager = data;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 PurpleSavedStatus *status = NULL;
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
180 GtkWidget *editor = NULL;
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 switch(response_id) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 case RESPONSE_USE:
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 status = pidgin_status_manager_get_selected_status(manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 purple_savedstatus_activate(status);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 break;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 case RESPONSE_ADD:
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
190 editor = pidgin_status_editor_new(NULL);
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
191 gtk_window_set_transient_for(GTK_WINDOW(editor),
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
192 GTK_WINDOW(manager));
42202
2273647d24b0 Use gtk_widget_set_visible for everything
Gary Kramlich <grim@reaperworld.com>
parents: 42198
diff changeset
193 gtk_widget_set_visible(editor, TRUE);
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 break;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 case RESPONSE_MODIFY:
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
196 pidgin_status_manager_show_editor(manager);
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 break;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 case RESPONSE_REMOVE:
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
200 pidgin_status_manager_remove_selected(manager);
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 break;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 case GTK_RESPONSE_CLOSE:
41596
2f0fec76cfbc Handle delete event in more dialogs (probably all, but can't be too sure.)
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41542
diff changeset
203 case GTK_RESPONSE_DELETE_EVENT:
41542
e0ff7bea9eb3 Port PidginStatusManager to GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
204 gtk_window_destroy(GTK_WINDOW(dialog));
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 break;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208
42198
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
209 static PurpleStatusPrimitive
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
210 pidgin_status_manager_lookup_primitive_cb(G_GNUC_UNUSED GObject *self,
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
211 GObject *wrapper,
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
212 G_GNUC_UNUSED gpointer data)
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
213 {
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
214 PurpleStatusPrimitive primitive = PURPLE_STATUS_UNSET;
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
215
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
216 if(G_IS_OBJECT(wrapper)) {
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
217 PurpleSavedStatus *status = g_object_get_data(wrapper, "savedstatus");
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
218 primitive = purple_savedstatus_get_primitive_type(status);
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
219 }
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
220
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
221 return primitive;
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
222 }
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
223
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
224 static char *
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
225 pidgin_status_manager_sort_data_cb(GObject *wrapper, const char *name,
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
226 G_GNUC_UNUSED gpointer data)
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 {
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
228 const char *value = NULL;
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
229
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
230 if(G_IS_OBJECT(wrapper)) {
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
231 value = g_object_get_data(wrapper, name);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
232 }
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
234 /* NOTE: Most GTK widget properties don't care if you return NULL, but the
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
235 * GtkStringSorter does some string comparisons without checking for NULL,
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
236 * so we need to ensure that non-NULL is returned to prevent runtime
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
237 * warnings. */
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
238 return g_strdup(value ? value : "");
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
239 }
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
241 /* A closure from within a GtkBuilderListItemFactory passes an extra first
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
242 * argument, so we need to drop that to re-use the above callback. */
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
243 static char *
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
244 pidgin_status_manager_lookup_text_data_cb(G_GNUC_UNUSED GObject *self,
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
245 GObject *wrapper, const char *name,
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
246 gpointer data)
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
247 {
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
248 return pidgin_status_manager_sort_data_cb(wrapper, name, data);
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
249 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 static void
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
252 pidgin_status_manager_row_activated_cb(G_GNUC_UNUSED GtkColumnView *self,
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
253 guint position, gpointer data)
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
254 {
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
255 PidginStatusManager *manager = data;
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
256
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
257 gtk_single_selection_set_selected(manager->selection, position);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
258 pidgin_status_manager_show_editor(manager);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
259 }
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
260
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
261 static void
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
262 pidgin_status_manager_selection_changed_cb(G_GNUC_UNUSED GObject *object,
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
263 G_GNUC_UNUSED GParamSpec *pspec,
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
264 gpointer data)
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265 {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266 PidginStatusManager *manager = data;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
267 gboolean sensitive = TRUE;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
269 if(g_list_model_get_n_items(G_LIST_MODEL(manager->model)) == 0) {
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270 sensitive = FALSE;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273 gtk_widget_set_sensitive(manager->use_button, sensitive);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274 gtk_widget_set_sensitive(manager->modify_button, sensitive);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276 /* Only enable the remove button if the currently selected row is not the
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
277 * currently active status.
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 */
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279 if(sensitive) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280 PurpleSavedStatus *status = NULL;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 status = pidgin_status_manager_get_selected_status(manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
283
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284 sensitive = status != purple_savedstatus_get_current();
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287 gtk_widget_set_sensitive(manager->remove_button, sensitive);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
290 static void
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 pidgin_status_manager_savedstatus_changed_cb(PurpleSavedStatus *new_status,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
292 G_GNUC_UNUSED PurpleSavedStatus *old_status,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
293 gpointer data)
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
294 {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
295 PidginStatusManager *manager = data;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
296 PurpleSavedStatus *selected = NULL;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
297
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
298 /* Disable the remove button if the selected status is the currently active
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
299 * status.
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
300 */
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
301 selected = pidgin_status_manager_get_selected_status(manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
302 if(selected != NULL) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
303 gboolean sensitive = selected != new_status;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
304
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
305 gtk_widget_set_sensitive(manager->remove_button, sensitive);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
307 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
308
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309 static void
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
310 pidgin_status_manager_savedstatus_updated_cb(G_GNUC_UNUSED PurpleSavedStatus *status,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
311 gpointer data)
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312 {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
313 PidginStatusManager *manager = data;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
314
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315 pidgin_status_manager_refresh(manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
316 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
318 static void
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
319 pidgin_status_editor_destroy_cb(GtkWidget *widget, gpointer data) {
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
320 PidginStatusManager *manager = data;
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
321 GListModel *model = G_LIST_MODEL(manager->model);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
322 guint n_items = 0;
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
323
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
324 n_items = g_list_model_get_n_items(model);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
325 for(guint index = 0; index < n_items; index++) {
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
326 GObject *wrapper = NULL;
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
327 GtkWidget *editor = NULL;
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
328
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
329 wrapper = g_list_model_get_item(model, index);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
330 editor = g_object_get_data(wrapper, "editor");
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
331
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
332 /* Check if editor is the widget being destroyed. */
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
333 if(editor == widget) {
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
334 /* It is, so set it back to NULL to remove it from the wrapper. */
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
335 g_object_set_data(wrapper, "editor", NULL);
42106
eafcc5051015 Fix leak in Status Manager dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42026
diff changeset
336 g_object_unref(wrapper);
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
337
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
338 break;
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
339 }
42106
eafcc5051015 Fix leak in Status Manager dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42026
diff changeset
340
eafcc5051015 Fix leak in Status Manager dialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42026
diff changeset
341 g_object_unref(wrapper);
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
342 }
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
343 }
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
344
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
345 /******************************************************************************
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
346 * GObject Implementation
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
347 *****************************************************************************/
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
348 static void
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
349 pidgin_status_manager_finalize(GObject *obj) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
350 purple_signals_disconnect_by_handle(obj);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
351
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
352 G_OBJECT_CLASS(pidgin_status_manager_parent_class)->finalize(obj);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
353 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
354
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
355 static void
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
356 pidgin_status_manager_init(PidginStatusManager *manager) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
357 gpointer handle = NULL;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
358
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
359 gtk_widget_init_template(GTK_WIDGET(manager));
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
360
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
361 pidgin_status_manager_refresh(manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
362
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
363 handle = purple_savedstatuses_get_handle();
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
364 purple_signal_connect(handle, "savedstatus-changed", manager,
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41306
diff changeset
365 G_CALLBACK(pidgin_status_manager_savedstatus_changed_cb),
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
366 manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
367 purple_signal_connect(handle, "savedstatus-added", manager,
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41306
diff changeset
368 G_CALLBACK(pidgin_status_manager_savedstatus_updated_cb),
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
369 manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
370 purple_signal_connect(handle, "savedstatus-deleted", manager,
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41306
diff changeset
371 G_CALLBACK(pidgin_status_manager_savedstatus_updated_cb),
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
372 manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
373 purple_signal_connect(handle, "savedstatus-modified", manager,
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41306
diff changeset
374 G_CALLBACK(pidgin_status_manager_savedstatus_updated_cb),
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
375 manager);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
376 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
377
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
378 static void
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
379 pidgin_status_manager_class_init(PidginStatusManagerClass *klass) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
380 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
381 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
382
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
383 obj_class->finalize = pidgin_status_manager_finalize;
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
384
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
385 gtk_widget_class_set_template_from_resource(
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
386 widget_class,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
387 "/im/pidgin/Pidgin3/Status/manager.ui"
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
388 );
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
389
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
390 gtk_widget_class_bind_template_child(widget_class, PidginStatusManager,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
391 model);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
392 gtk_widget_class_bind_template_child(widget_class, PidginStatusManager,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
393 selection);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
394 gtk_widget_class_bind_template_child(widget_class, PidginStatusManager,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
395 use_button);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
396 gtk_widget_class_bind_template_child(widget_class, PidginStatusManager,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
397 modify_button);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
398 gtk_widget_class_bind_template_child(widget_class, PidginStatusManager,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
399 remove_button);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
400
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
401 gtk_widget_class_bind_template_callback(widget_class,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
402 pidgin_status_manager_response_cb);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
403 gtk_widget_class_bind_template_callback(widget_class,
42198
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
404 pidgin_status_manager_lookup_primitive_cb);
4df23def5fe0 Add a widget for displaying statuses
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42106
diff changeset
405 gtk_widget_class_bind_template_callback(widget_class,
42026
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
406 pidgin_status_manager_lookup_text_data_cb);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
407 gtk_widget_class_bind_template_callback(widget_class,
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
408 pidgin_status_manager_sort_data_cb);
14aae1aaeb98 Convert GtkTreeView in status editor to GtkColumnView
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41596
diff changeset
409 gtk_widget_class_bind_template_callback(widget_class,
41306
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
410 pidgin_status_manager_row_activated_cb);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
411 gtk_widget_class_bind_template_callback(widget_class,
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
412 pidgin_status_manager_selection_changed_cb);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
413 }
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
414
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
415 /******************************************************************************
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
416 * Public API
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
417 *****************************************************************************/
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
418 GtkWidget *
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
419 pidgin_status_manager_new(void) {
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
420 return g_object_new(PIDGIN_TYPE_STATUS_MANAGER, NULL);
8befd71928c2 Create a new status manager that's built in glade
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
421 }

mercurial