Thu, 30 Nov 2023 21:35:10 -0600
Implement the member list in PidginConversation
Testing Done:
Joined my twitch channel to get some names in the members list and verified the context menu worked for everyone.
However, the account that's automatically added has some issues, but that's a different problem we need to tackle.
Reviewed at https://reviews.imfreedom.org/r/2842/
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
1 | /* |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
2 | * Pidgin - Internet Messenger |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
3 | * Copyright (C) Pidgin Developers <devel@pidgin.im> |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
4 | * |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
5 | * Pidgin is the legal property of its developers, whose names are too numerous |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
6 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
7 | * source distribution. |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
8 | * |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
9 | * This program is free software; you can redistribute it and/or modify |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
10 | * it under the terms of the GNU General Public License as published by |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
11 | * the Free Software Foundation; either version 2 of the License, or |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
12 | * (at your option) any later version. |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
13 | * |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
14 | * This program is distributed in the hope that it will be useful, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
17 | * GNU General Public License for more details. |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
18 | * |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
19 | * You should have received a copy of the GNU General Public License |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
20 | * along with this program; if not, see <https://www.gnu.org/licenses/>. |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
21 | */ |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
22 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
23 | #include <glib/gi18n-lib.h> |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
24 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
25 | #include <purple.h> |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
26 | |
|
42447
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
27 | #include "pidginautoadjustment.h" |
|
42346
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
28 | #include "pidgincolor.h" |
|
42527
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
29 | #include "pidgincontactinfomenu.h" |
|
42346
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
30 | #include "pidginconversation.h" |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
31 | #include "pidgininfopane.h" |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
32 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
33 | #define PIDGIN_CONVERSATION_DATA ("pidgin-conversation") |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
34 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
35 | enum { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
36 | PROP_0, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
37 | PROP_CONVERSATION, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
38 | N_PROPERTIES, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
39 | }; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
40 | static GParamSpec *properties[N_PROPERTIES] = {NULL,}; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
41 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
42 | struct _PidginConversation { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
43 | GtkBox parent; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
44 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
45 | PurpleConversation *conversation; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
46 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
47 | GtkWidget *info_pane; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
48 | GtkWidget *history; |
|
42447
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
49 | GtkAdjustment *history_adjustment; |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
50 | |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
51 | GtkWidget *input; |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
52 | }; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
53 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
54 | G_DEFINE_TYPE(PidginConversation, pidgin_conversation, GTK_TYPE_BOX) |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
55 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
56 | /****************************************************************************** |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
57 | * Helpers |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
58 | *****************************************************************************/ |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
59 | static void |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
60 | pidgin_conversation_set_conversation(PidginConversation *conversation, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
61 | PurpleConversation *purple_conversation) |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
62 | { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
63 | if(g_set_object(&conversation->conversation, purple_conversation)) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
64 | if(PURPLE_IS_CONVERSATION(purple_conversation)) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
65 | g_object_set_data(G_OBJECT(purple_conversation), |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
66 | PIDGIN_CONVERSATION_DATA, conversation); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
67 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
68 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
69 | g_object_notify_by_pspec(G_OBJECT(conversation), |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
70 | properties[PROP_CONVERSATION]); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
71 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
72 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
73 | |
|
42350
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
74 | /** |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
75 | * pidgin_conversation_set_tooltip_for_timestamp: (skip) |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
76 | * @tooltip: The tooltip to update. |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
77 | * @timestamp: The timestamp to set. |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
78 | * |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
79 | * Updates @tooltip to display @timestamp. This is meant to be called from |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
80 | * a GtkWidget::query-tooltip signal and its return value should be returned |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
81 | * from that handler. |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
82 | * |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
83 | * Returns: %TRUE if a tooltip was set, otherwise %FALSE. |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
84 | * |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
85 | * Since: 3.0.0 |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
86 | */ |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
87 | static gboolean |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
88 | pidgin_conversation_set_tooltip_for_timestamp(GtkTooltip *tooltip, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
89 | GDateTime *timestamp) |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
90 | { |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
91 | GDateTime *local = NULL; |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
92 | char *text = NULL; |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
93 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
94 | if(timestamp == NULL) { |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
95 | return FALSE; |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
96 | } |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
97 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
98 | local = g_date_time_to_local(timestamp); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
99 | text = g_date_time_format(local, "%c"); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
100 | g_clear_pointer(&local, g_date_time_unref); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
101 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
102 | gtk_tooltip_set_text(tooltip, text); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
103 | g_clear_pointer(&text, g_free); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
104 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
105 | return TRUE; |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
106 | } |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
107 | |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
108 | /****************************************************************************** |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
109 | * Callbacks |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
110 | *****************************************************************************/ |
|
42447
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
111 | static gboolean |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
112 | pidgin_conversation_input_key_pressed_cb(G_GNUC_UNUSED GtkEventControllerKey *self, |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
113 | guint keyval, |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
114 | G_GNUC_UNUSED guint keycode, |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
115 | GdkModifierType state, |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
116 | gpointer data) |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
117 | { |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
118 | PidginConversation *conversation = data; |
|
42447
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
119 | gboolean handled = TRUE; |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
120 | |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
121 | if(keyval == GDK_KEY_Return || keyval == GDK_KEY_KP_Enter) { |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
122 | GtkTextBuffer *buffer = NULL; |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
123 | GtkTextIter start; |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
124 | GtkTextIter end; |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
125 | char *contents = NULL; |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
126 | |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
127 | if(state == GDK_SHIFT_MASK || state == GDK_CONTROL_MASK) { |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
128 | return FALSE; |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
129 | } |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
130 | |
|
42447
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
131 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(conversation->input)); |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
132 | gtk_text_buffer_get_start_iter(buffer, &start); |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
133 | gtk_text_buffer_get_end_iter(buffer, &end); |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
134 | |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
135 | contents = gtk_text_buffer_get_text(buffer, &start, &end, TRUE); |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
136 | |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
137 | purple_conversation_send(conversation->conversation, contents); |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
138 | |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
139 | g_clear_pointer(&contents, g_free); |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
140 | |
|
42447
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
141 | gtk_text_buffer_set_text(buffer, "", -1); |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
142 | } else if(keyval == GDK_KEY_Page_Up) { |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
143 | pidgin_auto_adjustment_decrement(PIDGIN_AUTO_ADJUSTMENT(conversation->history_adjustment)); |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
144 | } else if(keyval == GDK_KEY_Page_Down) { |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
145 | pidgin_auto_adjustment_increment(PIDGIN_AUTO_ADJUSTMENT(conversation->history_adjustment)); |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
146 | } else { |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
147 | handled = FALSE; |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
148 | } |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
149 | |
|
42447
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
150 | return handled; |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
151 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
152 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
153 | static void |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
154 | pidgin_conversation_detach(PidginConversation *conversation) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
155 | if(PURPLE_IS_CONVERSATION(conversation->conversation)) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
156 | gpointer us = NULL; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
157 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
158 | us = g_object_get_data(G_OBJECT(conversation->conversation), |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
159 | PIDGIN_CONVERSATION_DATA); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
160 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
161 | if(conversation == us) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
162 | g_object_set_data(G_OBJECT(conversation->conversation), |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
163 | PIDGIN_CONVERSATION_DATA, NULL); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
164 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
165 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
166 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
167 | |
|
42346
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
168 | static PangoAttrList * |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
169 | pidgin_conversation_get_author_attributes(G_GNUC_UNUSED GObject *self, |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
170 | PurpleMessage *message, |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
171 | G_GNUC_UNUSED gpointer data) |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
172 | { |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
173 | const char *author = NULL; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
174 | const char *custom_color = NULL; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
175 | GdkRGBA rgba; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
176 | PangoAttrList *attrs = NULL; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
177 | gboolean color_valid = FALSE; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
178 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
179 | if(!PURPLE_IS_MESSAGE(message)) { |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
180 | return NULL; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
181 | } |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
182 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
183 | author = purple_message_get_author_alias(message); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
184 | if(purple_strempty(author)) { |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
185 | author = purple_message_get_author(message); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
186 | } |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
187 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
188 | custom_color = purple_message_get_author_name_color(message); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
189 | if(!purple_strempty(custom_color)) { |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
190 | color_valid = gdk_rgba_parse(&rgba, custom_color); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
191 | } |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
192 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
193 | if(!color_valid) { |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
194 | pidgin_color_calculate_for_text(author, &rgba); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
195 | color_valid = TRUE; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
196 | } |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
197 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
198 | attrs = pango_attr_list_new(); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
199 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
200 | if(color_valid) { |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
201 | PangoAttribute *attr = NULL; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
202 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
203 | attr = pango_attr_foreground_new(0xFFFF * rgba.red, |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
204 | 0xFFFF * rgba.green, |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
205 | 0xFFFF * rgba.blue); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
206 | pango_attr_list_insert(attrs, attr); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
207 | } |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
208 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
209 | return attrs; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
210 | } |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
211 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
212 | static char * |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
213 | pidgin_converation_get_timestamp_string(G_GNUC_UNUSED GObject *self, |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
214 | PurpleMessage *message, |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
215 | G_GNUC_UNUSED gpointer data) |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
216 | { |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
217 | GDateTime *timestamp = NULL; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
218 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
219 | if(!PURPLE_IS_MESSAGE(message)) { |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
220 | return NULL; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
221 | } |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
222 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
223 | timestamp = purple_message_get_timestamp(message); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
224 | if(timestamp != NULL) { |
|
42490
f864332b13ef
Make sure the timestamp shown on messages is in the user's local time
Gary Kramlich <grim@reaperworld.com>
parents:
42447
diff
changeset
|
225 | GDateTime *local = NULL; |
|
f864332b13ef
Make sure the timestamp shown on messages is in the user's local time
Gary Kramlich <grim@reaperworld.com>
parents:
42447
diff
changeset
|
226 | char *ret = NULL; |
|
f864332b13ef
Make sure the timestamp shown on messages is in the user's local time
Gary Kramlich <grim@reaperworld.com>
parents:
42447
diff
changeset
|
227 | |
|
f864332b13ef
Make sure the timestamp shown on messages is in the user's local time
Gary Kramlich <grim@reaperworld.com>
parents:
42447
diff
changeset
|
228 | local = g_date_time_to_local(timestamp); |
|
f864332b13ef
Make sure the timestamp shown on messages is in the user's local time
Gary Kramlich <grim@reaperworld.com>
parents:
42447
diff
changeset
|
229 | ret = g_date_time_format(local, "%I:%M %p"); |
|
f864332b13ef
Make sure the timestamp shown on messages is in the user's local time
Gary Kramlich <grim@reaperworld.com>
parents:
42447
diff
changeset
|
230 | g_date_time_unref(local); |
|
f864332b13ef
Make sure the timestamp shown on messages is in the user's local time
Gary Kramlich <grim@reaperworld.com>
parents:
42447
diff
changeset
|
231 | |
|
f864332b13ef
Make sure the timestamp shown on messages is in the user's local time
Gary Kramlich <grim@reaperworld.com>
parents:
42447
diff
changeset
|
232 | return ret; |
|
42346
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
233 | } |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
234 | |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
235 | return NULL; |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
236 | } |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
237 | |
|
42350
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
238 | static gboolean |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
239 | pidgin_conversation_query_tooltip_timestamp_cb(G_GNUC_UNUSED GtkWidget *self, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
240 | G_GNUC_UNUSED gint x, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
241 | G_GNUC_UNUSED gint y, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
242 | G_GNUC_UNUSED gboolean keyboard_mode, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
243 | GtkTooltip *tooltip, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
244 | gpointer data) |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
245 | { |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
246 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
247 | PurpleMessage *message = gtk_list_item_get_item(data); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
248 | GDateTime *timestamp = NULL; |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
249 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
250 | if(!PURPLE_IS_MESSAGE(message)) { |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
251 | return FALSE; |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
252 | } |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
253 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
254 | timestamp = purple_message_get_timestamp(message); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
255 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
256 | return pidgin_conversation_set_tooltip_for_timestamp(tooltip, timestamp); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
257 | } |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
258 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
259 | static gboolean |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
260 | pidgin_conversation_query_tooltip_edited_cb(G_GNUC_UNUSED GtkWidget *self, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
261 | G_GNUC_UNUSED gint x, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
262 | G_GNUC_UNUSED gint y, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
263 | G_GNUC_UNUSED gboolean keyboard_mode, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
264 | GtkTooltip *tooltip, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
265 | gpointer data) |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
266 | { |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
267 | PurpleMessage *message = gtk_list_item_get_item(data); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
268 | GDateTime *timestamp = NULL; |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
269 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
270 | if(!PURPLE_IS_MESSAGE(message)) { |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
271 | return FALSE; |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
272 | } |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
273 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
274 | timestamp = purple_message_get_edited_at(message); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
275 | |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
276 | return pidgin_conversation_set_tooltip_for_timestamp(tooltip, timestamp); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
277 | } |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
278 | |
|
42380
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
279 | static char * |
|
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
280 | pidgin_conversation_process_message_contents_cb(G_GNUC_UNUSED GObject *self, |
|
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
281 | const char *contents, |
|
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
282 | G_GNUC_UNUSED gpointer data) |
|
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
283 | { |
|
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
284 | return g_markup_escape_text(contents, -1); |
|
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
285 | } |
|
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
286 | |
|
42527
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
287 | static void |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
288 | pidgin_conversation_member_list_context_cb(GtkGestureSingle *self, |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
289 | G_GNUC_UNUSED gint n_press, |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
290 | gdouble x, |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
291 | gdouble y, |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
292 | gpointer data) |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
293 | { |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
294 | PurpleAccount *account = NULL; |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
295 | PurpleContactInfo *info = NULL; |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
296 | PurpleConversationMember *member = NULL; |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
297 | GtkWidget *parent = NULL; |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
298 | GtkListItem *item = data; |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
299 | |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
300 | parent = gtk_event_controller_get_widget(GTK_EVENT_CONTROLLER(self)); |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
301 | |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
302 | member = gtk_list_item_get_item(item); |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
303 | info = purple_conversation_member_get_contact_info(member); |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
304 | |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
305 | /* ConversationMembers are a PurpleAccount for the libpurple user, or in |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
306 | * most cases are PurpleContact for all the other users. Because of this, |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
307 | * we have to do a runtime check to determine which one they are. |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
308 | */ |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
309 | if(PURPLE_IS_ACCOUNT(info)) { |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
310 | account = PURPLE_ACCOUNT(info); |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
311 | } else if(PURPLE_IS_CONTACT(info)) { |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
312 | account = purple_contact_get_account(PURPLE_CONTACT(info)); |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
313 | } |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
314 | |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
315 | pidgin_contact_info_menu_popup(info, account, parent, x, y); |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
316 | } |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
317 | |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
318 | /****************************************************************************** |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
319 | * GObject Implementation |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
320 | *****************************************************************************/ |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
321 | static void |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
322 | pidgin_conversation_dispose(GObject *obj) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
323 | PidginConversation *conversation = PIDGIN_CONVERSATION(obj); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
324 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
325 | pidgin_conversation_detach(conversation); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
326 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
327 | g_clear_object(&conversation->conversation); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
328 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
329 | G_OBJECT_CLASS(pidgin_conversation_parent_class)->dispose(obj); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
330 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
331 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
332 | static void |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
333 | pidgin_conversation_get_property(GObject *obj, guint param_id, GValue *value, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
334 | GParamSpec *pspec) |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
335 | { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
336 | PidginConversation *conversation = PIDGIN_CONVERSATION(obj); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
337 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
338 | switch(param_id) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
339 | case PROP_CONVERSATION: |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
340 | g_value_set_object(value, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
341 | pidgin_conversation_get_conversation(conversation)); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
342 | break; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
343 | default: |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
344 | G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
345 | break; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
346 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
347 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
348 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
349 | static void |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
350 | pidgin_conversation_set_property(GObject *obj, guint param_id, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
351 | const GValue *value, GParamSpec *pspec) |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
352 | { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
353 | PidginConversation *conversation = PIDGIN_CONVERSATION(obj); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
354 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
355 | switch(param_id) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
356 | case PROP_CONVERSATION: |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
357 | pidgin_conversation_set_conversation(conversation, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
358 | g_value_get_object(value)); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
359 | break; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
360 | default: |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
361 | G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
362 | break; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
363 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
364 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
365 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
366 | static void |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
367 | pidgin_conversation_init(PidginConversation *conversation) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
368 | gtk_widget_init_template(GTK_WIDGET(conversation)); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
369 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
370 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
371 | static void |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
372 | pidgin_conversation_class_init(PidginConversationClass *klass) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
373 | GObjectClass *obj_class = G_OBJECT_CLASS(klass); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
374 | GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
375 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
376 | obj_class->dispose = pidgin_conversation_dispose; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
377 | obj_class->get_property = pidgin_conversation_get_property; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
378 | obj_class->set_property = pidgin_conversation_set_property; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
379 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
380 | /** |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
381 | * PidginConversation:conversation: |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
382 | * |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
383 | * The [class@Purple.Conversation] that this conversation is displaying. |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
384 | * |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
385 | * Since: 3.0.0 |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
386 | */ |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
387 | properties[PROP_CONVERSATION] = g_param_spec_object( |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
388 | "conversation", "conversation", |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
389 | "The purple conversation this widget is for.", |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
390 | PURPLE_TYPE_CONVERSATION, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
391 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
392 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
393 | g_object_class_install_properties(obj_class, N_PROPERTIES, properties); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
394 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
395 | /* Template stuff. */ |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
396 | gtk_widget_class_set_template_from_resource( |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
397 | widget_class, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
398 | "/im/pidgin/Pidgin3/Conversations/conversation.ui" |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
399 | ); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
400 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
401 | gtk_widget_class_bind_template_child(widget_class, PidginConversation, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
402 | info_pane); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
403 | gtk_widget_class_bind_template_child(widget_class, PidginConversation, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
404 | history); |
|
42346
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
405 | gtk_widget_class_bind_template_child(widget_class, PidginConversation, |
|
42447
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
406 | history_adjustment); |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
407 | gtk_widget_class_bind_template_child(widget_class, PidginConversation, |
|
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
408 | input); |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
409 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
410 | gtk_widget_class_bind_template_callback(widget_class, |
|
42447
3f1004d7772a
Replace TalkatuEditor in PidginConversation with a basic GtkTextView
Gary Kramlich <grim@reaperworld.com>
parents:
42380
diff
changeset
|
411 | pidgin_conversation_input_key_pressed_cb); |
|
42346
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
412 | gtk_widget_class_bind_template_callback(widget_class, |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
413 | pidgin_conversation_get_author_attributes); |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
414 | gtk_widget_class_bind_template_callback(widget_class, |
|
45d2756d2a14
Replace TalkatuHistory with our own implementation
Gary Kramlich <grim@reaperworld.com>
parents:
42301
diff
changeset
|
415 | pidgin_converation_get_timestamp_string); |
|
42350
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
416 | gtk_widget_class_bind_template_callback(widget_class, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
417 | pidgin_conversation_query_tooltip_timestamp_cb); |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
418 | gtk_widget_class_bind_template_callback(widget_class, |
|
0d5319e4b836
Add tooltips to timestamps in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42346
diff
changeset
|
419 | pidgin_conversation_query_tooltip_edited_cb); |
|
42380
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
420 | gtk_widget_class_bind_template_callback(widget_class, |
|
165c0b7f3860
Escape message content in Pidgin before displaying it
Gary Kramlich <grim@reaperworld.com>
parents:
42350
diff
changeset
|
421 | pidgin_conversation_process_message_contents_cb); |
|
42527
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
422 | gtk_widget_class_bind_template_callback(widget_class, |
|
1954265c38f0
Implement the member list in PidginConversation
Gary Kramlich <grim@reaperworld.com>
parents:
42519
diff
changeset
|
423 | pidgin_conversation_member_list_context_cb); |
|
42301
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
424 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
425 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
426 | /****************************************************************************** |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
427 | * API |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
428 | *****************************************************************************/ |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
429 | GtkWidget * |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
430 | pidgin_conversation_new(PurpleConversation *conversation) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
431 | g_return_val_if_fail(PURPLE_IS_CONVERSATION(conversation), NULL); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
432 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
433 | return g_object_new( |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
434 | PIDGIN_TYPE_CONVERSATION, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
435 | "conversation", conversation, |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
436 | NULL); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
437 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
438 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
439 | GtkWidget * |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
440 | pidgin_conversation_from_purple_conversation(PurpleConversation *conversation) |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
441 | { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
442 | g_return_val_if_fail(PURPLE_IS_CONVERSATION(conversation), NULL); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
443 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
444 | return g_object_get_data(G_OBJECT(conversation), PIDGIN_CONVERSATION_DATA); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
445 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
446 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
447 | PurpleConversation * |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
448 | pidgin_conversation_get_conversation(PidginConversation *conversation) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
449 | g_return_val_if_fail(PIDGIN_IS_CONVERSATION(conversation), NULL); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
450 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
451 | return conversation->conversation; |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
452 | } |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
453 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
454 | void |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
455 | pidgin_conversation_close(PidginConversation *conversation) { |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
456 | g_return_if_fail(PIDGIN_IS_CONVERSATION(conversation)); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
457 | |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
458 | pidgin_conversation_detach(conversation); |
|
d3930fe5505c
The start of the new conversation window
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
459 | } |