pidgin/pidginstatusprimitivechooser.c

Mon, 16 Jan 2023 22:08:46 -0600

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Mon, 16 Jan 2023 22:08:46 -0600
changeset 42022
b4747dfd7c34
parent 41925
103594fbcf6b
child 42189
4784cd60a1f8
permissions
-rw-r--r--

Add copy button to Build Information sections

These buttons on each group allow exporting the sections to the clipboard in a markdown format.
The Copy All button allows exporting everything.

Note that this information is purposely _not_ translated as I expect it to primarily be used for debugging by us in bug reports.

Testing Done:
Opened About dialog, clicked all the Copy buttons and confirmed their contents; clicked the Copy All button and confirmed everything was there.

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

41268
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include <pidgin/pidginstatusprimitivechooser.h>
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
25 #include <pidgin/pidginiconname.h>
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
26
41268
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 struct _PidginStatusPrimitiveChooser {
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
28 AdwBin parent;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
29
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
30 GtkDropDown *chooser;
41268
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 };
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 G_DEFINE_TYPE(PidginStatusPrimitiveChooser, pidgin_status_primitive_chooser,
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
34 ADW_TYPE_BIN)
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
35
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
36 /******************************************************************************
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
37 * Helpers
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
38 *****************************************************************************/
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
39 static PurpleStatusPrimitive
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
40 pidgin_status_primitive_chooser_primitive_from_string(const char *str) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
41 if(purple_strequal(str, "offline")) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
42 return PURPLE_STATUS_OFFLINE;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
43 } else if(purple_strequal(str, "available")) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
44 return PURPLE_STATUS_AVAILABLE;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
45 } else if(purple_strequal(str, "unavailable")) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
46 return PURPLE_STATUS_UNAVAILABLE;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
47 } else if(purple_strequal(str, "invisible")) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
48 return PURPLE_STATUS_INVISIBLE;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
49 } else if(purple_strequal(str, "away")) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
50 return PURPLE_STATUS_AWAY;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
51 } else if(purple_strequal(str, "extended-away")) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
52 return PURPLE_STATUS_EXTENDED_AWAY;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
53 }
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
54
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
55 return PURPLE_STATUS_UNSET;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
56 }
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
57
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
58 /******************************************************************************
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
59 * Callbacks
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
60 *****************************************************************************/
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
61 static char *
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
62 pidgin_status_primitive_chooser_icon_name_cb(G_GNUC_UNUSED GObject *self,
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
63 GtkStringObject *object,
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
64 G_GNUC_UNUSED gpointer data)
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
65 {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
66 PurpleStatusPrimitive primitive = PURPLE_STATUS_UNSET;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
67 const char *value = NULL;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
68
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
69 if(!GTK_IS_STRING_OBJECT(object)) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
70 return NULL;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
71 }
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
72
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
73 value = gtk_string_object_get_string(object);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
74 primitive = pidgin_status_primitive_chooser_primitive_from_string(value);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
75
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
76 return g_strdup(pidgin_icon_name_from_status_primitive(primitive, NULL));
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
77 }
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
78
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
79 static char *
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
80 pidgin_status_primitive_chooser_label_cb(G_GNUC_UNUSED GObject *self,
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
81 GtkStringObject *object,
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
82 G_GNUC_UNUSED gpointer data)
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
83 {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
84 PurpleStatusPrimitive primitive = PURPLE_STATUS_UNSET;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
85 const char *value = NULL;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
86
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
87 if(!GTK_IS_STRING_OBJECT(object)) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
88 return NULL;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
89 }
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
90
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
91 value = gtk_string_object_get_string(object);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
92 primitive = pidgin_status_primitive_chooser_primitive_from_string(value);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
93
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
94 return g_strdup(purple_primitive_get_name_from_type(primitive));
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
95 }
41268
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 /******************************************************************************
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 * GObject Implementation
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 *****************************************************************************/
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 static void
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 pidgin_status_primitive_chooser_init(PidginStatusPrimitiveChooser *chooser) {
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 gtk_widget_init_template(GTK_WIDGET(chooser));
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 }
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 static void
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 pidgin_status_primitive_chooser_class_init(PidginStatusPrimitiveChooserClass *klass) {
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 /* Widget template */
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 gtk_widget_class_set_template_from_resource(
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 widget_class, "/im/pidgin/Pidgin3/statusprimitivechooser.ui");
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
112
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
113 gtk_widget_class_bind_template_child(widget_class,
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
114 PidginStatusPrimitiveChooser,
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
115 chooser);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
116
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
117 gtk_widget_class_bind_template_callback(widget_class,
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
118 pidgin_status_primitive_chooser_icon_name_cb);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
119 gtk_widget_class_bind_template_callback(widget_class,
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
120 pidgin_status_primitive_chooser_label_cb);
41268
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 }
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 /******************************************************************************
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 * Public API
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 *****************************************************************************/
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 GtkWidget *
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 pidgin_status_primitive_chooser_new(void) {
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 return g_object_new(PIDGIN_TYPE_STATUS_PRIMITIVE_CHOOSER, NULL);
4adf517478fc Create new widget and store for choosing status primitives
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 }
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
130
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
131 PurpleStatusPrimitive
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
132 pidgin_status_primitive_chooser_get_selected(PidginStatusPrimitiveChooser *chooser) {
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
133 GtkStringObject *selected = NULL;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
134 const char *value = NULL;
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
135
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
136 g_return_val_if_fail(PIDGIN_IS_STATUS_PRIMITIVE_CHOOSER(chooser),
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
137 PURPLE_STATUS_UNSET);
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
138
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
139 selected = gtk_drop_down_get_selected_item(chooser->chooser);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
140 value = gtk_string_object_get_string(selected);
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
141
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
142 return pidgin_status_primitive_chooser_primitive_from_string(value);
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
143 }
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
144
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
145 void
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
146 pidgin_status_primitive_chooser_set_selected(PidginStatusPrimitiveChooser *chooser,
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
147 PurpleStatusPrimitive primitive)
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
148 {
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
149 GListModel *model = NULL;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
150
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
151 g_return_if_fail(PIDGIN_IS_STATUS_PRIMITIVE_CHOOSER(chooser));
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
152
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
153 model = gtk_drop_down_get_model(chooser->chooser);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
154 for(guint i = 0; i < g_list_model_get_n_items(model); i++) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
155 PurpleStatusPrimitive candidate = PURPLE_STATUS_UNSET;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
156 GtkStringObject *str = NULL;
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
157 const char *value = NULL;
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
158
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
159 str = g_list_model_get_item(model, i);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
160 value = gtk_string_object_get_string(str);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
161
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
162 candidate = pidgin_status_primitive_chooser_primitive_from_string(value);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
163 g_clear_object(&str);
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
164
41925
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
165 if(primitive == candidate) {
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
166 gtk_drop_down_set_selected(chooser->chooser, i);
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
167 }
103594fbcf6b Convert PidginStatusPrimitiveChooser to a GtkDropDown
Gary Kramlich <grim@reaperworld.com>
parents: 41356
diff changeset
168 }
41356
9753153c49fc Add a new templated PidginStatusEditor and wire it up.
Gary Kramlich <grim@reaperworld.com>
parents: 41268
diff changeset
169 }

mercurial