Thu, 25 Aug 2022 23:25:12 -0500
Replace the style-updated signal with GtkIconTheme:changed
Testing Done:
Ran and make sure the `GWarning` went away.
Reviewed at https://reviews.imfreedom.org/r/1653/
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
1 | /* purple |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
2 | * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
3 | * Purple is the legal property of its developers, whose names are too numerous |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
5 | * source distribution. |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
6 | * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
7 | * This program is free software; you can redistribute it and/or modify |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
8 | * it under the terms of the GNU General Public License as published by |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
9 | * the Free Software Foundation; either version 2 of the License, or |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
10 | * (at your option) any later version. |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
11 | * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
12 | * This program is distributed in the hope that it will be useful, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
15 | * GNU General Public License for more details. |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
16 | * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
17 | * You should have received a copy of the GNU General Public License |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
18 | * along with this program; if not, write to the Free Software |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
20 | */ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
21 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
22 | #include "request-datasheet.h" |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
23 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
24 | #include "debug.h" |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
25 | #include "signals.h" |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
26 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
27 | struct _PurpleRequestDatasheet |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
28 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
29 | guint col_count; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
30 | GArray *col_types; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
31 | GArray *col_titles; |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
32 | GList *actions; |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
33 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
34 | GList *record_list; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
35 | GHashTable *record_li_by_key; |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
36 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
37 | GHashTable *marked_for_rem; |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
38 | }; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
39 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
40 | struct _PurpleRequestDatasheetRecord |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
41 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
42 | PurpleRequestDatasheet *sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
43 | gpointer key; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
44 | gchar **data; /* at this point, there is only string data possible */ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
45 | }; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
46 | |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
47 | struct _PurpleRequestDatasheetAction |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
48 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
49 | gchar *label; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
50 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
51 | PurpleRequestDatasheetActionCb cb; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
52 | gpointer cb_data; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
53 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
54 | PurpleRequestDatasheetActionCheckCb sens_cb; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
55 | gpointer sens_data; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
56 | }; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
57 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
58 | static void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
59 | purple_request_datasheet_record_free(PurpleRequestDatasheetRecord *rec); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
60 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
61 | /***** Datasheet API **********************************************************/ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
62 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
63 | PurpleRequestDatasheet * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
64 | purple_request_datasheet_new(void) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
65 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
66 | PurpleRequestDatasheet *sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
67 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
68 | sheet = g_new0(PurpleRequestDatasheet, 1); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
69 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
70 | sheet->col_types = g_array_new(FALSE, FALSE, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
71 | sizeof(PurpleRequestDatasheetColumnType)); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
72 | sheet->col_titles = g_array_new(FALSE, FALSE, sizeof(gchar *)); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
73 | /* XXX: use g_array_set_clear_func when we depend on Glib 2.32 */ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
74 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
75 | sheet->record_li_by_key = g_hash_table_new(g_direct_hash, g_direct_equal); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
76 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
77 | purple_signal_register(sheet, "record-changed", |
|
35051
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
78 | purple_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2, |
|
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
79 | G_TYPE_POINTER, /* (PurpleRequestDatasheet *) */ |
|
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
80 | G_TYPE_POINTER); /* NULL for all */ |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
81 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
82 | purple_signal_register(sheet, "destroy", |
|
35051
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
83 | purple_marshal_VOID__POINTER, G_TYPE_NONE, 1, |
|
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
84 | G_TYPE_POINTER); /* (PurpleRequestDatasheet *) */ |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
85 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
86 | return sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
87 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
88 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
89 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
90 | purple_request_datasheet_free(PurpleRequestDatasheet *sheet) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
91 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
92 | guint i; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
93 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
94 | g_return_if_fail(sheet != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
95 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
96 | purple_signal_emit(sheet, "destroy", sheet); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
97 | purple_signals_unregister_by_instance(sheet); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
98 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
99 | for (i = 0; i < sheet->col_titles->len; i++) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
100 | g_free(g_array_index(sheet->col_titles, gchar *, i)); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
101 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
102 | g_array_free(sheet->col_titles, TRUE); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
103 | g_array_free(sheet->col_types, TRUE); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
104 | |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
105 | g_list_free_full(sheet->actions, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
106 | (GDestroyNotify)purple_request_datasheet_action_free); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
107 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
108 | g_hash_table_destroy(sheet->record_li_by_key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
109 | g_list_free_full(sheet->record_list, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
110 | (GDestroyNotify)purple_request_datasheet_record_free); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
111 | |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
112 | if (sheet->marked_for_rem != NULL) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
113 | g_hash_table_destroy(sheet->marked_for_rem); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
114 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
115 | g_free(sheet); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
116 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
117 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
118 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
119 | purple_request_datasheet_add_column(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
120 | PurpleRequestDatasheetColumnType type, const gchar *title) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
121 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
122 | gchar *title_clone; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
123 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
124 | g_return_if_fail(sheet != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
125 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
126 | if (sheet->record_list != NULL) { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
127 | purple_debug_error("request-datasheet", "Cannot modify model " |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
128 | "when there is already some data"); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
129 | return; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
130 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
131 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
132 | title_clone = g_strdup(title); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
133 | sheet->col_count++; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
134 | g_array_append_val(sheet->col_types, type); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
135 | g_array_append_val(sheet->col_titles, title_clone); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
136 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
137 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
138 | guint |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
139 | purple_request_datasheet_get_column_count(PurpleRequestDatasheet *sheet) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
140 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
141 | g_return_val_if_fail(sheet != NULL, 0); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
142 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
143 | return sheet->col_count; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
144 | /*return sheet->col_types->len;*/ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
145 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
146 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
147 | PurpleRequestDatasheetColumnType |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
148 | purple_request_datasheet_get_column_type(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
149 | guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
150 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
151 | g_return_val_if_fail(sheet != NULL, 0); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
152 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
153 | return g_array_index(sheet->col_types, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
154 | PurpleRequestDatasheetColumnType, col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
155 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
156 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
157 | const gchar * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
158 | purple_request_datasheet_get_column_title(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
159 | guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
160 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
161 | g_return_val_if_fail(sheet != NULL, 0); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
162 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
163 | return g_array_index(sheet->col_titles, gchar *, col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
164 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
165 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
166 | const GList * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
167 | purple_request_datasheet_get_records(PurpleRequestDatasheet *sheet) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
168 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
169 | g_return_val_if_fail(sheet != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
170 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
171 | return sheet->record_list; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
172 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
173 | |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
174 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
175 | purple_request_datasheet_add_action(PurpleRequestDatasheet *sheet, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
176 | PurpleRequestDatasheetAction *action) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
177 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
178 | g_return_if_fail(sheet != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
179 | g_return_if_fail(action != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
180 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
181 | sheet->actions = g_list_append(sheet->actions, action); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
182 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
183 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
184 | const GList * |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
185 | purple_request_datasheet_get_actions(PurpleRequestDatasheet *sheet) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
186 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
187 | g_return_val_if_fail(sheet != NULL, NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
188 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
189 | return sheet->actions; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
190 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
191 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
192 | /***** Datasheet actions API **************************************************/ |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
193 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
194 | PurpleRequestDatasheetAction * |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
195 | purple_request_datasheet_action_new(void) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
196 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
197 | return g_new0(PurpleRequestDatasheetAction, 1); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
198 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
199 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
200 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
201 | purple_request_datasheet_action_free(PurpleRequestDatasheetAction *act) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
202 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
203 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
204 | g_free(act->label); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
205 | g_free(act); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
206 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
207 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
208 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
209 | purple_request_datasheet_action_set_label(PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
210 | const gchar *label) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
211 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
212 | gchar *new_label; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
213 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
214 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
215 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
216 | new_label = g_strdup(label); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
217 | g_free(act->label); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
218 | act->label = new_label; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
219 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
220 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
221 | const gchar* |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
222 | purple_request_datasheet_action_get_label(PurpleRequestDatasheetAction *act) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
223 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
224 | g_return_val_if_fail(act != NULL, NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
225 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
226 | return act->label; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
227 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
228 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
229 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
230 | purple_request_datasheet_action_set_cb(PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
231 | PurpleRequestDatasheetActionCb cb, gpointer user_data) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
232 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
233 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
234 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
235 | act->cb = cb; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
236 | act->cb_data = user_data; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
237 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
238 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
239 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
240 | purple_request_datasheet_action_call(PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
241 | PurpleRequestDatasheetRecord *rec) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
242 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
243 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
244 | |
|
34509
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
245 | if (!act->cb) |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
246 | return; |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
247 | |
| 34512 | 248 | if (!purple_request_datasheet_action_is_sensitive(act, rec)) { |
|
34509
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
249 | purple_debug_warning("request-datasheet", |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
250 | "Action is disabled for this record"); |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
251 | return; |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
252 | } |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
253 | |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
254 | act->cb(rec, act->cb_data); |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
255 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
256 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
257 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
258 | purple_request_datasheet_action_set_sens_cb( |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
259 | PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
260 | PurpleRequestDatasheetActionCheckCb cb, gpointer user_data) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
261 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
262 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
263 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
264 | act->sens_cb = cb; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
265 | act->sens_data = user_data; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
266 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
267 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
268 | gboolean |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
269 | purple_request_datasheet_action_is_sensitive(PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
270 | PurpleRequestDatasheetRecord *rec) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
271 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
272 | g_return_val_if_fail(act != NULL, FALSE); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
273 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
274 | if (!act->sens_cb) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
275 | return (rec != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
276 | |
|
34509
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
277 | return act->sens_cb(rec, act->sens_data); |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
278 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
279 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
280 | /***** Datasheet record API ***************************************************/ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
281 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
282 | static PurpleRequestDatasheetRecord * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
283 | purple_request_datasheet_record_new(void) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
284 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
285 | return g_new0(PurpleRequestDatasheetRecord, 1); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
286 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
287 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
288 | static void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
289 | purple_request_datasheet_record_free(PurpleRequestDatasheetRecord *rec) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
290 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
291 | g_strfreev(rec->data); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
292 | g_free(rec); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
293 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
294 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
295 | gpointer |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
296 | purple_request_datasheet_record_get_key(const PurpleRequestDatasheetRecord *rec) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
297 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
298 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
299 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
300 | return rec->key; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
301 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
302 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
303 | PurpleRequestDatasheet * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
304 | purple_request_datasheet_record_get_datasheet( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
305 | PurpleRequestDatasheetRecord *rec) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
306 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
307 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
308 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
309 | return rec->sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
310 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
311 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
312 | PurpleRequestDatasheetRecord * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
313 | purple_request_datasheet_record_find(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
314 | gpointer key) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
315 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
316 | GList *it; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
317 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
318 | g_return_val_if_fail(sheet != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
319 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
320 | it = g_hash_table_lookup(sheet->record_li_by_key, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
321 | if (!it) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
322 | return NULL; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
323 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
324 | return it->data; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
325 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
326 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
327 | PurpleRequestDatasheetRecord * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
328 | purple_request_datasheet_record_add(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
329 | gpointer key) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
330 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
331 | PurpleRequestDatasheetRecord *rec; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
332 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
333 | g_return_val_if_fail(sheet != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
334 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
335 | rec = purple_request_datasheet_record_find(sheet, key); |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
336 | if (rec != NULL) { |
|
35636
0fcbcc3b45eb
Fix a NULL pointer misuse
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35454
diff
changeset
|
337 | if (sheet->marked_for_rem != NULL) |
|
0fcbcc3b45eb
Fix a NULL pointer misuse
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35454
diff
changeset
|
338 | g_hash_table_remove(sheet->marked_for_rem, key); |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
339 | return rec; |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
340 | } |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
341 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
342 | rec = purple_request_datasheet_record_new(); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
343 | rec->sheet = sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
344 | rec->key = key; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
345 | |
|
41083
590d533cf290
Fix several typos in libpurple
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40195
diff
changeset
|
346 | /* We don't allow modifying column count when datasheet contains any |
|
590d533cf290
Fix several typos in libpurple
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40195
diff
changeset
|
347 | * records. */ |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
348 | rec->data = g_new0(gchar*, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
349 | purple_request_datasheet_get_column_count(sheet) + 1); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
350 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
351 | sheet->record_list = g_list_append(sheet->record_list, rec); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
352 | g_hash_table_insert(sheet->record_li_by_key, key, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
353 | g_list_find(sheet->record_list, rec)); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
354 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
355 | purple_signal_emit(sheet, "record-changed", sheet, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
356 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
357 | return rec; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
358 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
359 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
360 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
361 | purple_request_datasheet_record_remove(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
362 | gpointer key) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
363 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
364 | GList *it; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
365 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
366 | g_return_if_fail(sheet != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
367 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
368 | it = g_hash_table_lookup(sheet->record_li_by_key, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
369 | if (it == NULL) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
370 | return; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
371 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
372 | purple_request_datasheet_record_free(it->data); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
373 | sheet->record_list = g_list_delete_link(sheet->record_list, it); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
374 | g_hash_table_remove(sheet->record_li_by_key, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
375 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
376 | purple_signal_emit(sheet, "record-changed", sheet, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
377 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
378 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
379 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
380 | purple_request_datasheet_record_remove_all(PurpleRequestDatasheet *sheet) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
381 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
382 | g_return_if_fail(sheet != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
383 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
384 | g_list_free_full(sheet->record_list, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
385 | (GDestroyNotify)purple_request_datasheet_record_free); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
386 | sheet->record_list = NULL; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
387 | g_hash_table_remove_all(sheet->record_li_by_key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
388 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
389 | purple_signal_emit(sheet, "record-changed", sheet, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
390 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
391 | |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
392 | void |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
393 | purple_request_datasheet_record_mark_all_for_rem(PurpleRequestDatasheet *sheet) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
394 | { |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
395 | const GList *it; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
396 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
397 | if (sheet->marked_for_rem != NULL) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
398 | g_hash_table_destroy(sheet->marked_for_rem); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
399 | sheet->marked_for_rem = g_hash_table_new(g_direct_hash, g_direct_equal); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
400 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
401 | it = purple_request_datasheet_get_records(sheet); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
402 | for (; it != NULL; it = g_list_next(it)) { |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
403 | PurpleRequestDatasheetRecord *rec = it->data; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
404 | gpointer key = purple_request_datasheet_record_get_key(rec); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
405 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
406 | g_hash_table_insert(sheet->marked_for_rem, key, key); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
407 | } |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
408 | } |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
409 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
410 | void |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
411 | purple_request_datasheet_record_remove_marked(PurpleRequestDatasheet *sheet) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
412 | { |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
413 | GHashTableIter it; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
414 | gpointer key; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
415 | GHashTable *rem; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
416 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
417 | if (sheet->marked_for_rem == NULL) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
418 | return; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
419 | rem = sheet->marked_for_rem; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
420 | sheet->marked_for_rem = NULL; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
421 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
422 | g_hash_table_iter_init(&it, rem); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
423 | while (g_hash_table_iter_next(&it, &key, NULL)) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
424 | purple_request_datasheet_record_remove(sheet, key); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
425 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
426 | g_hash_table_destroy(rem); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
427 | } |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
428 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
429 | static void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
430 | purple_request_datasheet_record_set_common_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
431 | PurpleRequestDatasheetRecord *rec, guint col_no, const gchar *data) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
432 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
433 | g_return_if_fail(rec != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
434 | g_return_if_fail( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
435 | purple_request_datasheet_get_column_count(rec->sheet) > col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
436 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
437 | if (g_strcmp0(rec->data[col_no], data) == 0) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
438 | return; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
439 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
440 | /* we assume, model hasn't changed */ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
441 | g_free(rec->data[col_no]); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
442 | rec->data[col_no] = g_strdup(data); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
443 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
444 | purple_signal_emit(rec->sheet, "record-changed", rec->sheet, rec->key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
445 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
446 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
447 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
448 | purple_request_datasheet_record_set_string_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
449 | PurpleRequestDatasheetRecord *rec, guint col_no, const gchar *data) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
450 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
451 | g_return_if_fail(rec != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
452 | g_return_if_fail(purple_request_datasheet_get_column_type(rec->sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
453 | col_no) == PURPLE_REQUEST_DATASHEET_COLUMN_STRING); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
454 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
455 | purple_request_datasheet_record_set_common_data(rec, col_no, data); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
456 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
457 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
458 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
459 | purple_request_datasheet_record_set_image_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
460 | PurpleRequestDatasheetRecord *rec, guint col_no, const gchar *stock_id) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
461 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
462 | g_return_if_fail(rec != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
463 | g_return_if_fail(purple_request_datasheet_get_column_type(rec->sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
464 | col_no) == PURPLE_REQUEST_DATASHEET_COLUMN_IMAGE); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
465 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
466 | purple_request_datasheet_record_set_common_data(rec, col_no, stock_id); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
467 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
468 | |
| 35067 | 469 | static const gchar * |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
470 | purple_request_datasheet_record_get_common_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
471 | const PurpleRequestDatasheetRecord *rec, guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
472 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
473 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
474 | g_return_val_if_fail( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
475 | purple_request_datasheet_get_column_count(rec->sheet) > col_no, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
476 | NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
477 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
478 | return rec->data[col_no]; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
479 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
480 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
481 | const gchar * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
482 | purple_request_datasheet_record_get_string_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
483 | const PurpleRequestDatasheetRecord *rec, guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
484 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
485 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
486 | g_return_val_if_fail(purple_request_datasheet_get_column_type( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
487 | rec->sheet, col_no) == PURPLE_REQUEST_DATASHEET_COLUMN_STRING, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
488 | NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
489 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
490 | return purple_request_datasheet_record_get_common_data(rec, col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
491 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
492 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
493 | const gchar * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
494 | purple_request_datasheet_record_get_image_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
495 | const PurpleRequestDatasheetRecord *rec, guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
496 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
497 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
498 | g_return_val_if_fail(purple_request_datasheet_get_column_type( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
499 | rec->sheet, col_no) == PURPLE_REQUEST_DATASHEET_COLUMN_IMAGE, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
500 | NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
501 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
502 | return purple_request_datasheet_record_get_common_data(rec, col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
503 | } |