pidgin/pidgininfopane.c

Sun, 03 Nov 2024 00:05:44 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sun, 03 Nov 2024 00:05:44 -0500
changeset 43045
308e8d0ce68c
parent 43041
ea212a081e9c
child 43072
a59a119b74f5
permissions
-rw-r--r--

remove purple3-url-handler.desktop.in.in

The application that did the launching was removed long ago. Also this should
be implemented by the user interfaces and they might provide separate files to
groups schemas as well.

Testing Done:
Called in the turtles.

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

40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include "pidgin/pidgininfopane.h"
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 struct _PidginInfoPane {
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 GtkBox parent;
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
28 char *title;
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
29 char *subtitle;
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
31 GtkWidget *child;
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 };
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 enum {
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 PROP_0,
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
36 PROP_TITLE,
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
37 PROP_SUBTITLE,
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
38 PROP_CHILD,
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 N_PROPERTIES,
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 };
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42566
diff changeset
43 G_DEFINE_FINAL_TYPE(PidginInfoPane, pidgin_info_pane, GTK_TYPE_BOX)
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 /******************************************************************************
42521
a8e758b503eb Simplify PidginInfoPane by using bindings everywhere
Gary Kramlich <grim@reaperworld.com>
parents: 42367
diff changeset
46 * Callbacks
42367
12b865212d37 Rework the info pane a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42296
diff changeset
47 *****************************************************************************/
42521
a8e758b503eb Simplify PidginInfoPane by using bindings everywhere
Gary Kramlich <grim@reaperworld.com>
parents: 42367
diff changeset
48 static char *
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
49 pidgin_info_pane_linkify_text_cb(GObject *self, const char *subtitle,
42521
a8e758b503eb Simplify PidginInfoPane by using bindings everywhere
Gary Kramlich <grim@reaperworld.com>
parents: 42367
diff changeset
50 G_GNUC_UNUSED gpointer data)
42367
12b865212d37 Rework the info pane a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42296
diff changeset
51 {
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
52 GtkWidget *label = GTK_WIDGET(self);
42521
a8e758b503eb Simplify PidginInfoPane by using bindings everywhere
Gary Kramlich <grim@reaperworld.com>
parents: 42367
diff changeset
53 char *ret = NULL;
42367
12b865212d37 Rework the info pane a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42296
diff changeset
54
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
55 ret = purple_markup_linkify(subtitle);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
56
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
57 gtk_widget_set_visible(label, !purple_strempty(ret));
42367
12b865212d37 Rework the info pane a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42296
diff changeset
58
42521
a8e758b503eb Simplify PidginInfoPane by using bindings everywhere
Gary Kramlich <grim@reaperworld.com>
parents: 42367
diff changeset
59 return ret;
42367
12b865212d37 Rework the info pane a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42296
diff changeset
60 }
12b865212d37 Rework the info pane a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42296
diff changeset
61
43041
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
62 static void
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
63 pidgin_info_pane_subtitle_enter_cb(GtkEventControllerMotion *self,
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
64 G_GNUC_UNUSED gdouble x,
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
65 G_GNUC_UNUSED gdouble y,
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
66 G_GNUC_UNUSED gpointer data)
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
67 {
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
68 GtkWidget *label = NULL;
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
69
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
70 label = gtk_event_controller_get_widget(GTK_EVENT_CONTROLLER(self));
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
71 gtk_label_set_lines(GTK_LABEL(label), 10);
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
72 }
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
73
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
74 static void
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
75 pidgin_info_pane_subtitle_leave_cb(GtkEventControllerMotion *self,
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
76 G_GNUC_UNUSED gdouble x,
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
77 G_GNUC_UNUSED gdouble y,
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
78 G_GNUC_UNUSED gpointer data)
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
79 {
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
80 GtkWidget *label = NULL;
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
81
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
82 label = gtk_event_controller_get_widget(GTK_EVENT_CONTROLLER(self));
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
83 gtk_label_set_lines(GTK_LABEL(label), 2);
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
84 }
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
85
42367
12b865212d37 Rework the info pane a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42296
diff changeset
86 /******************************************************************************
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 * GObject Implementation
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 *****************************************************************************/
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 static void
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 pidgin_info_pane_get_property(GObject *obj, guint param_id, GValue *value,
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 GParamSpec *pspec)
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 {
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 PidginInfoPane *pane = PIDGIN_INFO_PANE(obj);
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 switch(param_id) {
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
96 case PROP_TITLE:
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
97 g_value_set_string(value, pidgin_info_pane_get_title(pane));
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
98 break;
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
99 case PROP_SUBTITLE:
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
100 g_value_set_string(value, pidgin_info_pane_get_subtitle(pane));
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
101 break;
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
102 case PROP_CHILD:
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
103 g_value_set_object(value, pidgin_info_pane_get_child(pane));
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 break;
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 default:
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 break;
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 }
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 }
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 static void
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 pidgin_info_pane_set_property(GObject *obj, guint param_id, const GValue *value,
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 GParamSpec *pspec)
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 {
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 PidginInfoPane *pane = PIDGIN_INFO_PANE(obj);
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 switch(param_id) {
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
118 case PROP_TITLE:
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
119 pidgin_info_pane_set_title(pane, g_value_get_string(value));
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
120 break;
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
121 case PROP_SUBTITLE:
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
122 pidgin_info_pane_set_subtitle(pane, g_value_get_string(value));
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
123 break;
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
124 case PROP_CHILD:
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
125 pidgin_info_pane_set_child(pane, g_value_get_object(value));
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 break;
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 default:
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 break;
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 }
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 }
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 static void
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
134 pidgin_info_pane_finalize(GObject *obj) {
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 PidginInfoPane *pane = PIDGIN_INFO_PANE(obj);
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
137 g_clear_pointer(&pane->title, g_free);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
138 g_clear_pointer(&pane->subtitle, g_free);
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
140 G_OBJECT_CLASS(pidgin_info_pane_parent_class)->finalize(obj);
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 }
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 static void
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 pidgin_info_pane_init(PidginInfoPane *pane) {
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 gtk_widget_init_template(GTK_WIDGET(pane));
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 }
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 static void
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 pidgin_info_pane_class_init(PidginInfoPaneClass *klass) {
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
153 obj_class->finalize = pidgin_info_pane_finalize;
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 obj_class->get_property = pidgin_info_pane_get_property;
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 obj_class->set_property = pidgin_info_pane_set_property;
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
156
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
157 /**
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
158 * PidginInfoPane:title:
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
159 *
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
160 * The title to display.
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
161 *
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
162 * Since: 3.0
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
163 */
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
164 properties[PROP_TITLE] = g_param_spec_string(
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
165 "title", "title",
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
166 "The title for the info pane.",
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
167 NULL,
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
168 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 /**
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
171 * PidginInfoPane:subtitle:
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 *
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
173 * The sub title to display.
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
174 *
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
175 * Since: 3.0
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 */
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
177 properties[PROP_SUBTITLE] = g_param_spec_string(
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
178 "subtitle", "subtitle",
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
179 "The subtitle for the info pane.",
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
180 NULL,
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
181 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
182
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
183 /**
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
184 * PidginInfoPane:child:
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
185 *
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
186 * The child widget to display at the end of the info pane.
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
187 *
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
188 * Since: 3.0
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
189 */
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
190 properties[PROP_CHILD] = g_param_spec_object(
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
191 "child", "child",
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
192 "A child widget to display at the end of the info pane.",
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
193 GTK_TYPE_WIDGET,
42296
1707a28b1258 Allow the conversation property of PidginInfoPane to be changed
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
194 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
198 gtk_widget_class_set_template_from_resource(widget_class,
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
199 "/im/pidgin/Pidgin3/infopane.ui");
42521
a8e758b503eb Simplify PidginInfoPane by using bindings everywhere
Gary Kramlich <grim@reaperworld.com>
parents: 42367
diff changeset
200
a8e758b503eb Simplify PidginInfoPane by using bindings everywhere
Gary Kramlich <grim@reaperworld.com>
parents: 42367
diff changeset
201 gtk_widget_class_bind_template_callback(widget_class,
a8e758b503eb Simplify PidginInfoPane by using bindings everywhere
Gary Kramlich <grim@reaperworld.com>
parents: 42367
diff changeset
202 pidgin_info_pane_linkify_text_cb);
43041
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
203 gtk_widget_class_bind_template_callback(widget_class,
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
204 pidgin_info_pane_subtitle_enter_cb);
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
205 gtk_widget_class_bind_template_callback(widget_class,
ea212a081e9c Make the text in the infopanes selectable
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
206 pidgin_info_pane_subtitle_leave_cb);
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 }
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 /******************************************************************************
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 * API
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 *****************************************************************************/
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 GtkWidget *
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
213 pidgin_info_pane_new(void) {
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
214 return g_object_new(PIDGIN_TYPE_INFO_PANE, NULL);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
215 }
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
216
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
217 const char *
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
218 pidgin_info_pane_get_title(PidginInfoPane *pane) {
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
219 g_return_val_if_fail(PIDGIN_IS_INFO_PANE(pane), NULL);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
220
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
221 return pane->title;
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 }
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
224 void
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
225 pidgin_info_pane_set_title(PidginInfoPane *pane, const char *title) {
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
226 g_return_if_fail(PIDGIN_IS_INFO_PANE(pane));
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
227
42767
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
228 if(g_set_str(&pane->title, title)) {
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
229 g_object_notify_by_pspec(G_OBJECT(pane), properties[PROP_TITLE]);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
230 }
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
231 }
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
232
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
233 const char *
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
234 pidgin_info_pane_get_subtitle(PidginInfoPane *pane) {
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 g_return_val_if_fail(PIDGIN_IS_INFO_PANE(pane), NULL);
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
237 return pane->subtitle;
40858
2bd48c93678a Create a new standalone info pane widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 }
42296
1707a28b1258 Allow the conversation property of PidginInfoPane to be changed
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
239
1707a28b1258 Allow the conversation property of PidginInfoPane to be changed
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
240 void
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
241 pidgin_info_pane_set_subtitle(PidginInfoPane *pane, const char *subtitle) {
42296
1707a28b1258 Allow the conversation property of PidginInfoPane to be changed
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
242 g_return_if_fail(PIDGIN_IS_INFO_PANE(pane));
1707a28b1258 Allow the conversation property of PidginInfoPane to be changed
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
243
42767
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
244 if(g_set_str(&pane->subtitle, subtitle)) {
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
245 g_object_notify_by_pspec(G_OBJECT(pane), properties[PROP_SUBTITLE]);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
246 }
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
247 }
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
248
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
249 GtkWidget *
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
250 pidgin_info_pane_get_child(PidginInfoPane *pane) {
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
251 g_return_val_if_fail(PIDGIN_IS_INFO_PANE(pane), NULL);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
252
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
253 return pane->child;
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
254 }
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
255
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
256 void
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
257 pidgin_info_pane_set_child(PidginInfoPane *pane, GtkWidget *widget) {
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
258 g_return_if_fail(PIDGIN_IS_INFO_PANE(pane));
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
259 g_return_if_fail(widget == NULL || gtk_widget_get_parent(widget) == NULL);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
260
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
261 if(pane->child == widget) {
42296
1707a28b1258 Allow the conversation property of PidginInfoPane to be changed
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
262 return;
1707a28b1258 Allow the conversation property of PidginInfoPane to be changed
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
263 }
1707a28b1258 Allow the conversation property of PidginInfoPane to be changed
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
264
42566
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
265 g_clear_object(&pane->child);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
266
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
267 if(GTK_IS_WIDGET(widget)) {
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
268 pane->child = g_object_ref_sink(widget);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
269 gtk_box_append(GTK_BOX(pane), pane->child);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
270
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
271 /* This might not be the best place for this, but this helps keep the
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
272 * user interface consistent and doesn't force users to do it.
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
273 */
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
274 gtk_widget_set_margin_end(pane->child, 6);
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
275 }
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
276
ddaa27826ccc Make PidginInfoPane generic
Gary Kramlich <grim@reaperworld.com>
parents: 42521
diff changeset
277 g_object_notify_by_pspec(G_OBJECT(pane), properties[PROP_CHILD]);
42296
1707a28b1258 Allow the conversation property of PidginInfoPane to be changed
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
278 }

mercurial