pidgin/pidginmessage.h

Tue, 13 May 2025 00:44:44 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 13 May 2025 00:44:44 -0500
changeset 43248
55ff17a82093
parent 43177
595a5f31003a
permissions
-rw-r--r--

Add a preference for toggling whether or not to show formatting

There is no user interface for this right now, but you can manually tweak the
setting in pidgin3.ini. This required turning off use-markup on the content
label because mixing attributes with that caused the label to never remove
attributes.

This means that we broke links which were being handled because
use-markup was true. To fix this, we're going to need to create a new widget
that can handle all of the link logic off of attributes intead.

Testing Done:
Joined an IRC channel and sent a message with formatting from Pidgin 2. Then toggled the setting via the file and verified that formatting was toggled correctly.

Also called in the turtles.

Bugs closed: PIDGIN-18081

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

43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 # error "only <pidgin.h> may be included directly"
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #endif
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #ifndef PIDGIN_MESSAGE_H
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 #define PIDGIN_MESSAGE_H
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 #include <glib.h>
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 #include <gtk/gtk.h>
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 #include <purple.h>
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 #include "pidginversion.h"
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 G_BEGIN_DECLS
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 /**
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 * PidginMessage:
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 * A widget for displaying a [class@Purple.Message].
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 * Since: 3.0
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 */
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 #define PIDGIN_TYPE_MESSAGE (pidgin_message_get_type())
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 PIDGIN_AVAILABLE_IN_3_0
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 G_DECLARE_FINAL_TYPE(PidginMessage, pidgin_message, PIDGIN, MESSAGE, GtkBox)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 /**
43248
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
54 * pidgin_message_get_message:
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
55 *
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
56 * Gets the [class@Purple.Message] that is being displayed.
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
57 *
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
58 * Returns: (transfer none) (nullable): The message.
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
59 *
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
60 * Since: 3.0
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
61 */
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
62 PIDGIN_AVAILABLE_IN_3_0
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
63 PurpleMessage *pidgin_message_get_message(PidginMessage *message);
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
64
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
65 /**
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
66 * pidgin_message_get_show_formatting:
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
67 *
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
68 * Gets whether or not formatting is being shown for this message.
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
69 *
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
70 * Returns: true if formatting is being shown.
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
71 *
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
72 * Since: 3.0
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
73 */
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
74 PIDGIN_AVAILABLE_IN_3_0
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
75 gboolean pidgin_message_get_show_formatting(PidginMessage *message);
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
76
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
77 /**
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 * pidgin_message_new:
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 * @message: (nullable): the message to display
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 * Creates a new widget that will display @message.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 *
43177
595a5f31003a Annotate Pidgin constructors that return base types
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 43093
diff changeset
83 * Returns: (transfer full) (type PidginMessage): The new instance.
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 * Since: 3.0
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 */
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 PIDGIN_AVAILABLE_IN_3_0
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 GtkWidget *pidgin_message_new(PurpleMessage *message);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 /**
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 * pidgin_message_set_message:
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 * @purple_message: (nullable): the new message to display
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 * Sets the message to be displayed to @message.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 * Since: 3.0
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 */
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 PIDGIN_AVAILABLE_IN_3_0
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 void pidgin_message_set_message(PidginMessage *pidgin_message, PurpleMessage *purple_message);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100
43248
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
101 /**
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
102 * pidgin_message_set_show_formatting:
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
103 * @show_formatting: the new value
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
104 *
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
105 * Sets whether or not formatting should be shown for the message.
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
106 *
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
107 * Since: 3.0
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
108 */
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
109 PIDGIN_AVAILABLE_IN_3_0
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
110 void pidgin_message_set_show_formatting(PidginMessage *message, gboolean show_formatting);
55ff17a82093 Add a preference for toggling whether or not to show formatting
Gary Kramlich <grim@reaperworld.com>
parents: 43177
diff changeset
111
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 G_END_DECLS
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 #endif /* PIDGIN_MESSAGE_H */

mercurial