pidgin/pidginstatusmanager.c

Mon, 03 Apr 2023 23:09:36 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Mon, 03 Apr 2023 23:09:36 -0500
changeset 42198
4df23def5fe0
parent 42106
eafcc5051015
child 42202
2273647d24b0
permissions
-rw-r--r--

Add a widget for displaying statuses

It can display either primitives or saved statuses.

Then use the widget in the status manager and the status editor.

Testing Done:
Edited a status, and confirmed that the list of status primitives were all shown
Opened the status manager, and confirmed that the saved status' primitive in the manager changed as expected after editing the status.

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

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
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
87 gtk_widget_show(editor);
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));
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41314
diff changeset
193 gtk_widget_show(editor);
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