Mon, 03 Apr 2023 23:09:36 -0500
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 | } |