diff options
Diffstat (limited to 'src/plugins/fs/namespace.c')
-rw-r--r-- | src/plugins/fs/namespace.c | 1586 |
1 files changed, 747 insertions, 839 deletions
diff --git a/src/plugins/fs/namespace.c b/src/plugins/fs/namespace.c index b9145a9b..425efefe 100644 --- a/src/plugins/fs/namespace.c +++ b/src/plugins/fs/namespace.c | |||
@@ -40,259 +40,245 @@ | |||
40 | /** | 40 | /** |
41 | * @brief linked list of pages in the namespace notebook | 41 | * @brief linked list of pages in the namespace notebook |
42 | */ | 42 | */ |
43 | typedef struct NL { | 43 | typedef struct NL |
44 | struct NL * next; | 44 | { |
45 | GtkWidget * treeview; | 45 | struct NL *next; |
46 | GtkWidget * namespacepage; | 46 | GtkWidget *treeview; |
47 | GtkWidget * addButton; | 47 | GtkWidget *namespacepage; |
48 | GtkWidget * updateButton; | 48 | GtkWidget *addButton; |
49 | GtkTreeModel * model; | 49 | GtkWidget *updateButton; |
50 | char * name; | 50 | GtkTreeModel *model; |
51 | char *name; | ||
51 | HashCode512 id; | 52 | HashCode512 id; |
52 | struct ECRS_MetaData * meta; | 53 | struct ECRS_MetaData *meta; |
53 | } NamespaceList; | 54 | } NamespaceList; |
54 | 55 | ||
55 | /** | 56 | /** |
56 | * Content selection in main list of available content. | 57 | * Content selection in main list of available content. |
57 | */ | 58 | */ |
58 | static GtkTreeSelection * content_selection; | 59 | static GtkTreeSelection *content_selection; |
59 | 60 | ||
60 | static NamespaceList * head; | 61 | static NamespaceList *head; |
61 | 62 | ||
62 | static GladeXML * metaXML; | 63 | static GladeXML *metaXML; |
63 | 64 | ||
64 | /** | 65 | /** |
65 | * The user has changed the selection either in the | 66 | * The user has changed the selection either in the |
66 | * namespace content list or the global content list. | 67 | * namespace content list or the global content list. |
67 | * Update search button status values (add/change). | 68 | * Update search button status values (add/change). |
68 | */ | 69 | */ |
69 | static void on_namespaceContentSelectionChanged(gpointer signal, | 70 | static void |
70 | gpointer cls) { | 71 | on_namespaceContentSelectionChanged (gpointer signal, gpointer cls) |
71 | NamespaceList * list = head; | 72 | { |
73 | NamespaceList *list = head; | ||
72 | int count; | 74 | int count; |
73 | int ncount; | 75 | int ncount; |
74 | GtkTreeSelection * ns; | 76 | GtkTreeSelection *ns; |
75 | GtkTreeIter iter; | 77 | GtkTreeIter iter; |
76 | char * freq; | 78 | char *freq; |
77 | int ok; | 79 | int ok; |
78 | 80 | ||
79 | count = gtk_tree_selection_count_selected_rows(content_selection); | 81 | count = gtk_tree_selection_count_selected_rows (content_selection); |
80 | while (list != NULL) { | 82 | while (list != NULL) |
81 | ns = gtk_tree_view_get_selection(GTK_TREE_VIEW(list->treeview)); | 83 | { |
82 | ncount = gtk_tree_selection_count_selected_rows(ns); | 84 | ns = gtk_tree_view_get_selection (GTK_TREE_VIEW (list->treeview)); |
83 | gtk_widget_set_sensitive(list->addButton, | 85 | ncount = gtk_tree_selection_count_selected_rows (ns); |
84 | count > 0); | 86 | gtk_widget_set_sensitive (list->addButton, count > 0); |
85 | /* now check if update is legal */ | 87 | /* now check if update is legal */ |
86 | ok = 0; | 88 | ok = 0; |
87 | if ( (count == 1) && | 89 | if ((count == 1) && |
88 | (ncount == 1) && | 90 | (ncount == 1) && |
89 | (TRUE == gtk_tree_selection_get_selected(ns, | 91 | (TRUE == gtk_tree_selection_get_selected (ns, NULL, &iter))) |
90 | NULL, | 92 | { |
91 | &iter)) ) { | 93 | freq = NULL; |
92 | freq = NULL; | 94 | gtk_tree_model_get (list->model, |
93 | gtk_tree_model_get(list->model, | 95 | &iter, IN_NAMESPACE_PUB_DATE_STRING, &freq, -1); |
94 | &iter, | 96 | if ((freq != NULL) && (0 != strcmp (freq, _("never")))) |
95 | IN_NAMESPACE_PUB_DATE_STRING, &freq, | 97 | ok = 1; |
96 | -1); | 98 | FREENONNULL (freq); |
97 | if ( (freq != NULL) && | 99 | } |
98 | (0 != strcmp(freq, _("never"))) ) | 100 | gtk_widget_set_sensitive (list->updateButton, ok); |
99 | ok = 1; | 101 | list = list->next; |
100 | FREENONNULL(freq); | ||
101 | } | 102 | } |
102 | gtk_widget_set_sensitive(list->updateButton, | ||
103 | ok); | ||
104 | list = list->next; | ||
105 | } | ||
106 | } | 103 | } |
107 | 104 | ||
108 | 105 | ||
109 | static void makeNamespaceFrame(NamespaceList * entry) { | 106 | static void |
110 | GtkWidget * child; | 107 | makeNamespaceFrame (NamespaceList * entry) |
111 | GtkWidget * resultList; | 108 | { |
112 | GtkCellRenderer * renderer; | 109 | GtkWidget *child; |
113 | GtkListStore * model; | 110 | GtkWidget *resultList; |
114 | GladeXML * namespaceXML; | 111 | GtkCellRenderer *renderer; |
115 | GtkTreeViewColumn * column; | 112 | GtkListStore *model; |
113 | GladeXML *namespaceXML; | ||
114 | GtkTreeViewColumn *column; | ||
116 | int col; | 115 | int col; |
117 | 116 | ||
118 | DEBUG_BEGIN(); | 117 | DEBUG_BEGIN (); |
119 | namespaceXML | 118 | namespaceXML |
120 | = glade_xml_new(getGladeFileName(), | 119 | = glade_xml_new (getGladeFileName (), |
121 | "namespaceContentFrame", | 120 | "namespaceContentFrame", PACKAGE_NAME); |
122 | PACKAGE_NAME); | 121 | connectGladeWithPlugins (namespaceXML); |
123 | connectGladeWithPlugins(namespaceXML); | 122 | child = extractMainWidgetFromWindow (namespaceXML, "namespaceContentFrame"); |
124 | child = extractMainWidgetFromWindow(namespaceXML, | 123 | resultList = glade_xml_get_widget (namespaceXML, |
125 | "namespaceContentFrame"); | 124 | "namespaceContentFrameTreeView"); |
126 | resultList = glade_xml_get_widget(namespaceXML, | 125 | entry->addButton = glade_xml_get_widget (namespaceXML, "addButton"); |
127 | "namespaceContentFrameTreeView"); | 126 | entry->updateButton = glade_xml_get_widget (namespaceXML, |
128 | entry->addButton = glade_xml_get_widget(namespaceXML, | 127 | "namespaceUpdateButton"); |
129 | "addButton"); | 128 | entry->treeview = GTK_WIDGET (GTK_TREE_VIEW (resultList)); |
130 | entry->updateButton = glade_xml_get_widget(namespaceXML, | 129 | model = gtk_list_store_new (IN_NAMESPACE_NUM, G_TYPE_STRING, /* (file)name */ |
131 | "namespaceUpdateButton"); | 130 | G_TYPE_UINT64, /* size */ |
132 | entry->treeview = GTK_WIDGET(GTK_TREE_VIEW(resultList)); | 131 | G_TYPE_STRING, /* human-readable size */ |
133 | model = | 132 | G_TYPE_STRING, /* description */ |
134 | gtk_list_store_new(IN_NAMESPACE_NUM, | 133 | G_TYPE_STRING, /* mime-type */ |
135 | G_TYPE_STRING, /* (file)name */ | 134 | G_TYPE_STRING, /* last-ID */ |
136 | G_TYPE_UINT64, /* size */ | 135 | G_TYPE_STRING, /* next-ID */ |
137 | G_TYPE_STRING, /* human-readable size */ | 136 | G_TYPE_STRING, /* pub-freq */ |
138 | G_TYPE_STRING, /* description */ | 137 | G_TYPE_STRING, /* next pub date */ |
139 | G_TYPE_STRING, /* mime-type */ | 138 | G_TYPE_POINTER, /* URI */ |
140 | G_TYPE_STRING, /* last-ID */ | 139 | G_TYPE_POINTER); /* META */ |
141 | G_TYPE_STRING, /* next-ID */ | 140 | entry->model = GTK_TREE_MODEL (model); |
142 | G_TYPE_STRING, /* pub-freq */ | 141 | gtk_tree_view_set_model (GTK_TREE_VIEW (resultList), |
143 | G_TYPE_STRING, /* next pub date */ | 142 | GTK_TREE_MODEL (model)); |
144 | G_TYPE_POINTER, /* URI */ | 143 | gtk_tree_selection_set_mode (gtk_tree_view_get_selection |
145 | G_TYPE_POINTER); /* META */ | 144 | (GTK_TREE_VIEW (resultList)), |
146 | entry->model = GTK_TREE_MODEL(model); | 145 | GTK_SELECTION_SINGLE); |
147 | gtk_tree_view_set_model(GTK_TREE_VIEW(resultList), | 146 | g_signal_connect_data (gtk_tree_view_get_selection |
148 | GTK_TREE_MODEL(model)); | 147 | (GTK_TREE_VIEW (resultList)), "changed", |
149 | gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(resultList)), | 148 | G_CALLBACK (&on_namespaceContentSelectionChanged), |
150 | GTK_SELECTION_SINGLE); | 149 | NULL, NULL, 0); |
151 | g_signal_connect_data(gtk_tree_view_get_selection(GTK_TREE_VIEW(resultList)), | 150 | |
152 | "changed", | 151 | |
153 | G_CALLBACK(&on_namespaceContentSelectionChanged), | 152 | |
154 | NULL, | 153 | renderer = gtk_cell_renderer_text_new (); |
155 | NULL, | 154 | col = |
156 | 0); | 155 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (resultList), |
157 | 156 | -1, _("Filename"), renderer, | |
158 | 157 | "text", | |
159 | 158 | IN_NAMESPACE_FILENAME, NULL); | |
160 | renderer = gtk_cell_renderer_text_new(); | 159 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (resultList), col - 1); |
161 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(resultList), | 160 | gtk_tree_view_column_set_resizable (column, TRUE); |
162 | -1, | 161 | gtk_tree_view_column_set_clickable (column, TRUE); |
163 | _("Filename"), | 162 | gtk_tree_view_column_set_reorderable (column, TRUE); |
164 | renderer, | 163 | gtk_tree_view_column_set_sort_column_id (column, IN_NAMESPACE_FILENAME); |
165 | "text", IN_NAMESPACE_FILENAME, | 164 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE); */ |
166 | NULL); | 165 | |
167 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 166 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
168 | col - 1); | 167 | (GTK_TREE_VIEW (resultList), col - 1), |
169 | gtk_tree_view_column_set_resizable(column, TRUE); | 168 | TRUE); |
170 | gtk_tree_view_column_set_clickable(column, TRUE); | 169 | renderer = gtk_cell_renderer_text_new (); |
171 | gtk_tree_view_column_set_reorderable(column, TRUE); | ||
172 | gtk_tree_view_column_set_sort_column_id(column, IN_NAMESPACE_FILENAME); | ||
173 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/ | ||
174 | |||
175 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | ||
176 | col - 1), | ||
177 | TRUE); | ||
178 | renderer = gtk_cell_renderer_text_new(); | ||
179 | g_object_set (renderer, "xalign", 1.00, NULL); | 170 | g_object_set (renderer, "xalign", 1.00, NULL); |
180 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(resultList), | 171 | col = |
181 | -1, | 172 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (resultList), |
182 | _("Filesize"), | 173 | -1, _("Filesize"), renderer, |
183 | renderer, | 174 | "text", IN_NAMESPACE_HSIZE, |
184 | "text", IN_NAMESPACE_HSIZE, | 175 | NULL); |
185 | NULL); | 176 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (resultList), col - 1); |
186 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 177 | gtk_tree_view_column_set_resizable (column, TRUE); |
187 | col - 1); | 178 | gtk_tree_view_column_set_clickable (column, TRUE); |
188 | gtk_tree_view_column_set_resizable(column, TRUE); | 179 | gtk_tree_view_column_set_reorderable (column, TRUE); |
189 | gtk_tree_view_column_set_clickable(column, TRUE); | 180 | gtk_tree_view_column_set_sort_column_id (column, IN_NAMESPACE_SIZE); |
190 | gtk_tree_view_column_set_reorderable(column, TRUE); | 181 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE); */ |
191 | gtk_tree_view_column_set_sort_column_id(column, IN_NAMESPACE_SIZE); | 182 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
192 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/ | 183 | (GTK_TREE_VIEW (resultList), col - 1), |
193 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 184 | TRUE); |
194 | col - 1), | 185 | renderer = gtk_cell_renderer_text_new (); |
195 | TRUE); | 186 | col = |
196 | renderer = gtk_cell_renderer_text_new(); | 187 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (resultList), |
197 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(resultList), | 188 | -1, _("Description"), |
198 | -1, | 189 | renderer, "text", |
199 | _("Description"), | 190 | IN_NAMESPACE_DESCRIPTION, |
200 | renderer, | 191 | NULL); |
201 | "text", IN_NAMESPACE_DESCRIPTION, | 192 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (resultList), col - 1); |
202 | NULL); | 193 | gtk_tree_view_column_set_resizable (column, TRUE); |
203 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 194 | gtk_tree_view_column_set_clickable (column, TRUE); |
204 | col - 1); | 195 | gtk_tree_view_column_set_reorderable (column, TRUE); |
205 | gtk_tree_view_column_set_resizable(column, TRUE); | 196 | gtk_tree_view_column_set_sort_column_id (column, IN_NAMESPACE_DESCRIPTION); |
206 | gtk_tree_view_column_set_clickable(column, TRUE); | 197 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE); */ |
207 | gtk_tree_view_column_set_reorderable(column, TRUE); | 198 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
208 | gtk_tree_view_column_set_sort_column_id(column, IN_NAMESPACE_DESCRIPTION); | 199 | (GTK_TREE_VIEW (resultList), col - 1), |
209 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/ | 200 | TRUE); |
210 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 201 | renderer = gtk_cell_renderer_text_new (); |
211 | col - 1), | 202 | col = |
212 | TRUE); | 203 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (resultList), |
213 | renderer = gtk_cell_renderer_text_new(); | 204 | -1, _("Mime-type"), renderer, |
214 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(resultList), | 205 | "text", |
215 | -1, | 206 | IN_NAMESPACE_MIMETYPE, NULL); |
216 | _("Mime-type"), | 207 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (resultList), col - 1); |
217 | renderer, | 208 | gtk_tree_view_column_set_resizable (column, TRUE); |
218 | "text", IN_NAMESPACE_MIMETYPE, | 209 | gtk_tree_view_column_set_clickable (column, TRUE); |
219 | NULL); | 210 | gtk_tree_view_column_set_reorderable (column, TRUE); |
220 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 211 | gtk_tree_view_column_set_sort_column_id (column, IN_NAMESPACE_MIMETYPE); |
221 | col - 1); | 212 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE); */ |
222 | gtk_tree_view_column_set_resizable(column, TRUE); | 213 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
223 | gtk_tree_view_column_set_clickable(column, TRUE); | 214 | (GTK_TREE_VIEW (resultList), col - 1), |
224 | gtk_tree_view_column_set_reorderable(column, TRUE); | 215 | TRUE); |
225 | gtk_tree_view_column_set_sort_column_id(column, IN_NAMESPACE_MIMETYPE); | 216 | renderer = gtk_cell_renderer_text_new (); |
226 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/ | 217 | col = |
227 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 218 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (resultList), |
228 | col - 1), | 219 | -1, |
229 | TRUE); | 220 | _("Publication Frequency"), |
230 | renderer = gtk_cell_renderer_text_new(); | 221 | renderer, "text", |
231 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(resultList), | 222 | IN_NAMESPACE_PUB_FREQ_STRING, |
232 | -1, | 223 | NULL); |
233 | _("Publication Frequency"), | 224 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (resultList), col - 1); |
234 | renderer, | 225 | gtk_tree_view_column_set_resizable (column, TRUE); |
235 | "text", IN_NAMESPACE_PUB_FREQ_STRING, | 226 | gtk_tree_view_column_set_clickable (column, TRUE); |
236 | NULL); | 227 | gtk_tree_view_column_set_reorderable (column, TRUE); |
237 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 228 | gtk_tree_view_column_set_sort_column_id (column, |
238 | col - 1); | 229 | IN_NAMESPACE_PUB_FREQ_STRING); |
239 | gtk_tree_view_column_set_resizable(column, TRUE); | 230 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE); */ |
240 | gtk_tree_view_column_set_clickable(column, TRUE); | 231 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
241 | gtk_tree_view_column_set_reorderable(column, TRUE); | 232 | (GTK_TREE_VIEW (resultList), col - 1), |
242 | gtk_tree_view_column_set_sort_column_id(column, IN_NAMESPACE_PUB_FREQ_STRING); | 233 | TRUE); |
243 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/ | 234 | renderer = gtk_cell_renderer_text_new (); |
244 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 235 | col = |
245 | col - 1), | 236 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (resultList), |
246 | TRUE); | 237 | -1, |
247 | renderer = gtk_cell_renderer_text_new(); | 238 | _("Next Publication Date"), |
248 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(resultList), | 239 | renderer, "text", |
249 | -1, | 240 | IN_NAMESPACE_PUB_DATE_STRING, |
250 | _("Next Publication Date"), | 241 | NULL); |
251 | renderer, | 242 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (resultList), col - 1); |
252 | "text", IN_NAMESPACE_PUB_DATE_STRING, | 243 | gtk_tree_view_column_set_reorderable (column, TRUE); |
253 | NULL); | 244 | gtk_tree_view_column_set_resizable (column, TRUE); |
254 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 245 | gtk_tree_view_column_set_clickable (column, TRUE); |
255 | col - 1); | 246 | gtk_tree_view_column_set_sort_column_id (column, |
256 | gtk_tree_view_column_set_reorderable(column, TRUE); | 247 | IN_NAMESPACE_PUB_DATE_STRING); |
257 | gtk_tree_view_column_set_resizable(column, TRUE); | 248 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE); */ |
258 | gtk_tree_view_column_set_clickable(column, TRUE); | 249 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
259 | gtk_tree_view_column_set_sort_column_id(column, IN_NAMESPACE_PUB_DATE_STRING); | 250 | (GTK_TREE_VIEW (resultList), col - 1), |
260 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/ | 251 | TRUE); |
261 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 252 | renderer = gtk_cell_renderer_text_new (); |
262 | col - 1), | 253 | col = |
263 | TRUE); | 254 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (resultList), |
264 | renderer = gtk_cell_renderer_text_new(); | 255 | -1, _("Last ID"), renderer, |
265 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(resultList), | 256 | "text", |
266 | -1, | 257 | IN_NAMESPACE_LAST_STRING, |
267 | _("Last ID"), | 258 | NULL); |
268 | renderer, | 259 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (resultList), col - 1); |
269 | "text", IN_NAMESPACE_LAST_STRING, | 260 | gtk_tree_view_column_set_reorderable (column, TRUE); |
270 | NULL); | 261 | gtk_tree_view_column_set_resizable (column, TRUE); |
271 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 262 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
272 | col - 1); | 263 | (GTK_TREE_VIEW (resultList), col - 1), |
273 | gtk_tree_view_column_set_reorderable(column, TRUE); | 264 | TRUE); |
274 | gtk_tree_view_column_set_resizable(column, TRUE); | 265 | renderer = gtk_cell_renderer_text_new (); |
275 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 266 | col = |
276 | col - 1), | 267 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (resultList), |
277 | TRUE); | 268 | -1, _("Next ID"), renderer, |
278 | renderer = gtk_cell_renderer_text_new(); | 269 | "text", |
279 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(resultList), | 270 | IN_NAMESPACE_NEXT_STRING, |
280 | -1, | 271 | NULL); |
281 | _("Next ID"), | 272 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (resultList), col - 1); |
282 | renderer, | 273 | gtk_tree_view_column_set_reorderable (column, TRUE); |
283 | "text", IN_NAMESPACE_NEXT_STRING, | 274 | gtk_tree_view_column_set_resizable (column, TRUE); |
284 | NULL); | 275 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
285 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 276 | (GTK_TREE_VIEW (resultList), col - 1), |
286 | col - 1); | 277 | TRUE); |
287 | gtk_tree_view_column_set_reorderable(column, TRUE); | 278 | |
288 | gtk_tree_view_column_set_resizable(column, TRUE); | 279 | |
289 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(resultList), | 280 | UNREF (namespaceXML); |
290 | col - 1), | 281 | DEBUG_END (); |
291 | TRUE); | ||
292 | |||
293 | |||
294 | UNREF(namespaceXML); | ||
295 | DEBUG_END(); | ||
296 | 282 | ||
297 | entry->namespacepage = child; | 283 | entry->namespacepage = child; |
298 | } | 284 | } |
@@ -311,263 +297,245 @@ static void makeNamespaceFrame(NamespaceList * entry) { | |||
311 | * next update (0 for sporadic updates) | 297 | * next update (0 for sporadic updates) |
312 | * @return OK to continue iteration, SYSERR to abort | 298 | * @return OK to continue iteration, SYSERR to abort |
313 | */ | 299 | */ |
314 | static int addNamespaceContentToModel(void * cls, | 300 | static int |
315 | const ECRS_FileInfo * fi, | 301 | addNamespaceContentToModel (void *cls, |
316 | const HashCode512 * lastId, | 302 | const ECRS_FileInfo * fi, |
317 | const HashCode512 * nextId, | 303 | const HashCode512 * lastId, |
318 | TIME_T publicationFrequency, | 304 | const HashCode512 * nextId, |
319 | TIME_T nextPublicationTime) { | 305 | TIME_T publicationFrequency, |
320 | GtkListStore * model = GTK_LIST_STORE(cls); | 306 | TIME_T nextPublicationTime) |
307 | { | ||
308 | GtkListStore *model = GTK_LIST_STORE (cls); | ||
321 | GtkTreeIter iter; | 309 | GtkTreeIter iter; |
322 | char * filename; | 310 | char *filename; |
323 | char * desc; | 311 | char *desc; |
324 | char * mime; | 312 | char *mime; |
325 | char * uriString; | 313 | char *uriString; |
326 | EncName last; | 314 | EncName last; |
327 | EncName next; | 315 | EncName next; |
328 | char * freq; | 316 | char *freq; |
329 | char * date; | 317 | char *date; |
330 | unsigned long long size; | 318 | unsigned long long size; |
331 | char * size_h; | 319 | char *size_h; |
332 | 320 | ||
333 | DEBUG_BEGIN(); | 321 | DEBUG_BEGIN (); |
334 | filename = ECRS_getFirstFromMetaData(fi->meta, | 322 | filename = ECRS_getFirstFromMetaData (fi->meta, |
335 | EXTRACTOR_FILENAME, | 323 | EXTRACTOR_FILENAME, |
336 | EXTRACTOR_TITLE, | 324 | EXTRACTOR_TITLE, |
337 | EXTRACTOR_ARTIST, | 325 | EXTRACTOR_ARTIST, |
338 | EXTRACTOR_AUTHOR, | 326 | EXTRACTOR_AUTHOR, |
339 | EXTRACTOR_PUBLISHER, | 327 | EXTRACTOR_PUBLISHER, |
340 | EXTRACTOR_CREATOR, | 328 | EXTRACTOR_CREATOR, |
341 | EXTRACTOR_PRODUCER, | 329 | EXTRACTOR_PRODUCER, |
342 | EXTRACTOR_UNKNOWN, | 330 | EXTRACTOR_UNKNOWN, -1); |
343 | -1); | ||
344 | if (filename == NULL) | 331 | if (filename == NULL) |
345 | filename = STRDUP(_("no name given")); | 332 | filename = STRDUP (_("no name given")); |
346 | else { | 333 | else |
347 | char *dotdot; | 334 | { |
348 | 335 | char *dotdot; | |
349 | while (NULL != (dotdot = strstr(filename, ".."))) | 336 | |
350 | dotdot[0] = dotdot[1] = '_'; | 337 | while (NULL != (dotdot = strstr (filename, ".."))) |
351 | } | 338 | dotdot[0] = dotdot[1] = '_'; |
352 | desc = ECRS_getFirstFromMetaData(fi->meta, | 339 | } |
353 | EXTRACTOR_DESCRIPTION, | 340 | desc = ECRS_getFirstFromMetaData (fi->meta, |
354 | EXTRACTOR_GENRE, | 341 | EXTRACTOR_DESCRIPTION, |
355 | EXTRACTOR_ALBUM, | 342 | EXTRACTOR_GENRE, |
356 | EXTRACTOR_COMMENT, | 343 | EXTRACTOR_ALBUM, |
357 | EXTRACTOR_SUBJECT, | 344 | EXTRACTOR_COMMENT, |
358 | EXTRACTOR_FORMAT, | 345 | EXTRACTOR_SUBJECT, |
359 | EXTRACTOR_SIZE, | 346 | EXTRACTOR_FORMAT, |
360 | EXTRACTOR_KEYWORDS, | 347 | EXTRACTOR_SIZE, EXTRACTOR_KEYWORDS, -1); |
361 | -1); | ||
362 | if (desc == NULL) | 348 | if (desc == NULL) |
363 | desc = STRDUP(""); | 349 | desc = STRDUP (""); |
364 | mime = ECRS_getFromMetaData(fi->meta, | 350 | mime = ECRS_getFromMetaData (fi->meta, EXTRACTOR_MIMETYPE); |
365 | EXTRACTOR_MIMETYPE); | ||
366 | if (mime == NULL) | 351 | if (mime == NULL) |
367 | mime = STRDUP(_("unknown")); | 352 | mime = STRDUP (_("unknown")); |
368 | if (ECRS_isFileUri(fi->uri)) | 353 | if (ECRS_isFileUri (fi->uri)) |
369 | size = ECRS_fileSize(fi->uri); | 354 | size = ECRS_fileSize (fi->uri); |
370 | else | 355 | else |
371 | size = 0; | 356 | size = 0; |
372 | uriString = ECRS_uriToString(fi->uri); | 357 | uriString = ECRS_uriToString (fi->uri); |
373 | hash2enc(lastId, &last); | 358 | hash2enc (lastId, &last); |
374 | if (nextId != NULL) | 359 | if (nextId != NULL) |
375 | hash2enc(nextId, &next); | 360 | hash2enc (nextId, &next); |
376 | else | 361 | else |
377 | memset(&next, 0, sizeof(EncName)); | 362 | memset (&next, 0, sizeof (EncName)); |
378 | if (publicationFrequency == ECRS_SBLOCK_UPDATE_SPORADIC) | 363 | if (publicationFrequency == ECRS_SBLOCK_UPDATE_SPORADIC) |
379 | date = STRDUP(_("unspecified")); | 364 | date = STRDUP (_("unspecified")); |
380 | else if (publicationFrequency == ECRS_SBLOCK_UPDATE_NONE) | 365 | else if (publicationFrequency == ECRS_SBLOCK_UPDATE_NONE) |
381 | date = STRDUP(_("never")); | 366 | date = STRDUP (_("never")); |
382 | else | 367 | else |
383 | date = GN_CTIME(&nextPublicationTime); | 368 | date = GN_CTIME (&nextPublicationTime); |
384 | if (date[strlen(date)-1] == '\n') | 369 | if (date[strlen (date) - 1] == '\n') |
385 | date[strlen(date)-1] = '\0'; | 370 | date[strlen (date) - 1] = '\0'; |
386 | 371 | ||
387 | freq = updateIntervalToString(publicationFrequency); | 372 | freq = updateIntervalToString (publicationFrequency); |
388 | size_h = string_get_fancy_byte_size(size); | 373 | size_h = string_get_fancy_byte_size (size); |
389 | gtk_list_store_append(model, | 374 | gtk_list_store_append (model, &iter); |
390 | &iter); | 375 | gtk_list_store_set (model, |
391 | gtk_list_store_set(model, | 376 | &iter, |
392 | &iter, | 377 | IN_NAMESPACE_FILENAME, filename, |
393 | IN_NAMESPACE_FILENAME, filename, | 378 | IN_NAMESPACE_SIZE, size, |
394 | IN_NAMESPACE_SIZE, size, | 379 | IN_NAMESPACE_HSIZE, size_h, |
395 | IN_NAMESPACE_HSIZE, size_h, | 380 | IN_NAMESPACE_DESCRIPTION, desc, |
396 | IN_NAMESPACE_DESCRIPTION, desc, | 381 | IN_NAMESPACE_MIMETYPE, mime, |
397 | IN_NAMESPACE_MIMETYPE, mime, | 382 | IN_NAMESPACE_LAST_STRING, &last, |
398 | IN_NAMESPACE_LAST_STRING, &last, | 383 | IN_NAMESPACE_NEXT_STRING, &next, |
399 | IN_NAMESPACE_NEXT_STRING, &next, | 384 | IN_NAMESPACE_PUB_FREQ_STRING, freq, |
400 | IN_NAMESPACE_PUB_FREQ_STRING, freq, | 385 | IN_NAMESPACE_PUB_DATE_STRING, date, |
401 | IN_NAMESPACE_PUB_DATE_STRING, date, | 386 | IN_NAMESPACE_URI, ECRS_dupUri (fi->uri), |
402 | IN_NAMESPACE_URI, ECRS_dupUri(fi->uri), | 387 | IN_NAMESPACE_META, ECRS_dupMetaData (fi->meta), -1); |
403 | IN_NAMESPACE_META, ECRS_dupMetaData(fi->meta), | 388 | FREE (size_h); |
404 | -1); | 389 | FREE (filename); |
405 | FREE(size_h); | 390 | FREE (uriString); |
406 | FREE(filename); | 391 | FREE (freq); |
407 | FREE(uriString); | 392 | FREE (date); |
408 | FREE(freq); | 393 | FREE (mime); |
409 | FREE(date); | 394 | DEBUG_END (); |
410 | FREE(mime); | ||
411 | DEBUG_END(); | ||
412 | return OK; | 395 | return OK; |
413 | } | 396 | } |
414 | 397 | ||
415 | /** | 398 | /** |
416 | * Add a tab for the given namespace. | 399 | * Add a tab for the given namespace. |
417 | */ | 400 | */ |
418 | int addTabForNamespace(void * unused, | 401 | int |
419 | const char * namespaceName, | 402 | addTabForNamespace (void *unused, |
420 | const HashCode512 * namespaceId, | 403 | const char *namespaceName, |
421 | const struct ECRS_MetaData * md, | 404 | const HashCode512 * namespaceId, |
422 | int rating) { | 405 | const struct ECRS_MetaData *md, int rating) |
423 | NamespaceList * list; | 406 | { |
424 | GtkWidget * label; | 407 | NamespaceList *list; |
425 | GtkWidget * notebook; | 408 | GtkWidget *label; |
426 | GtkWidget * del_menu; | 409 | GtkWidget *notebook; |
427 | 410 | GtkWidget *del_menu; | |
428 | if (OK != ECRS_testNamespaceExists(NULL, | 411 | |
429 | cfg, | 412 | if (OK != ECRS_testNamespaceExists (NULL, cfg, namespaceName, namespaceId)) |
430 | namespaceName, | ||
431 | namespaceId)) | ||
432 | return OK; | 413 | return OK; |
433 | DEBUG_BEGIN(); | 414 | DEBUG_BEGIN (); |
434 | label = gtk_label_new(namespaceName); | 415 | label = gtk_label_new (namespaceName); |
435 | list = MALLOC(sizeof(NamespaceList)); | 416 | list = MALLOC (sizeof (NamespaceList)); |
436 | list->name = STRDUP(namespaceName); | 417 | list->name = STRDUP (namespaceName); |
437 | list->id = *namespaceId; | 418 | list->id = *namespaceId; |
438 | list->meta = ECRS_dupMetaData(md); | 419 | list->meta = ECRS_dupMetaData (md); |
439 | makeNamespaceFrame(list); | 420 | makeNamespaceFrame (list); |
440 | list->next | 421 | list->next = head; |
441 | = head; | ||
442 | head = list; | 422 | head = list; |
443 | /* update sensitivity of add button */ | 423 | /* update sensitivity of add button */ |
444 | on_namespaceContentSelectionChanged(NULL, NULL); | 424 | on_namespaceContentSelectionChanged (NULL, NULL); |
445 | notebook | 425 | notebook = glade_xml_get_widget (getMainXML (), "localNamespacesNotebook"); |
446 | = glade_xml_get_widget(getMainXML(), | 426 | gtk_notebook_append_page (GTK_NOTEBOOK (notebook), |
447 | "localNamespacesNotebook"); | 427 | list->namespacepage, label); |
448 | gtk_notebook_append_page(GTK_NOTEBOOK(notebook), | 428 | gtk_widget_show (notebook); |
449 | list->namespacepage, | ||
450 | label); | ||
451 | gtk_widget_show(notebook); | ||
452 | NS_listNamespaceContent | 429 | NS_listNamespaceContent |
453 | (ectx, | 430 | (ectx, cfg, namespaceName, &addNamespaceContentToModel, list->model); |
454 | cfg, | 431 | DEBUG_END (); |
455 | namespaceName, | ||
456 | &addNamespaceContentToModel, | ||
457 | list->model); | ||
458 | DEBUG_END(); | ||
459 | /* enable "delete" menu entry */ | 432 | /* enable "delete" menu entry */ |
460 | 433 | ||
461 | del_menu = glade_xml_get_widget(getMainXML(), | 434 | del_menu = glade_xml_get_widget (getMainXML (), "namespaceDelete"); |
462 | "namespaceDelete"); | 435 | gtk_widget_set_sensitive (del_menu, TRUE); |
463 | gtk_widget_set_sensitive(del_menu, | ||
464 | TRUE); | ||
465 | return OK; | 436 | return OK; |
466 | } | 437 | } |
467 | 438 | ||
468 | 439 | ||
469 | static void frame_destroy(GtkWidget * tree) { | 440 | static void |
441 | frame_destroy (GtkWidget * tree) | ||
442 | { | ||
470 | GtkTreeIter iter; | 443 | GtkTreeIter iter; |
471 | struct ECRS_URI * u; | 444 | struct ECRS_URI *u; |
472 | struct ECRS_MetaData * m; | 445 | struct ECRS_MetaData *m; |
473 | NamespaceList * prev; | 446 | NamespaceList *prev; |
474 | NamespaceList * pos; | 447 | NamespaceList *pos; |
475 | NamespaceList * next; | 448 | NamespaceList *next; |
476 | GtkWidget * del_menu; | 449 | GtkWidget *del_menu; |
477 | 450 | ||
478 | pos = head; | 451 | pos = head; |
479 | prev = NULL; | 452 | prev = NULL; |
480 | while (pos != NULL) { | 453 | while (pos != NULL) |
481 | next = pos->next; | 454 | { |
482 | if (pos->treeview == tree) | 455 | next = pos->next; |
483 | break; | 456 | if (pos->treeview == tree) |
484 | prev = pos; | 457 | break; |
485 | pos = next; | 458 | prev = pos; |
486 | } | 459 | pos = next; |
487 | if (pos == NULL) { | 460 | } |
488 | GE_BREAK(NULL, 0); | 461 | if (pos == NULL) |
489 | return; | 462 | { |
490 | } | 463 | GE_BREAK (NULL, 0); |
464 | return; | ||
465 | } | ||
491 | if (prev == NULL) | 466 | if (prev == NULL) |
492 | head = pos->next; | 467 | head = pos->next; |
493 | else | 468 | else |
494 | prev->next = pos->next; | 469 | prev->next = pos->next; |
495 | FREE(pos->name); | 470 | FREE (pos->name); |
496 | ECRS_freeMetaData(pos->meta); | 471 | ECRS_freeMetaData (pos->meta); |
497 | if (gtk_tree_model_get_iter_first(pos->model, | 472 | if (gtk_tree_model_get_iter_first (pos->model, &iter)) |
498 | &iter)) { | 473 | { |
499 | do { | 474 | do |
500 | gtk_tree_model_get(pos->model, | 475 | { |
501 | &iter, | 476 | gtk_tree_model_get (pos->model, |
502 | IN_NAMESPACE_URI, &u, | 477 | &iter, |
503 | IN_NAMESPACE_META, &m, | 478 | IN_NAMESPACE_URI, &u, |
504 | -1); | 479 | IN_NAMESPACE_META, &m, -1); |
505 | gtk_list_store_set(GTK_LIST_STORE(pos->model), | 480 | gtk_list_store_set (GTK_LIST_STORE (pos->model), |
506 | &iter, | 481 | &iter, |
507 | IN_NAMESPACE_URI, NULL, | 482 | IN_NAMESPACE_URI, NULL, |
508 | IN_NAMESPACE_META, NULL, | 483 | IN_NAMESPACE_META, NULL, -1); |
509 | -1); | 484 | if (u != NULL) |
510 | if (u != NULL) | 485 | ECRS_freeUri (u); |
511 | ECRS_freeUri(u); | 486 | if (m != NULL) |
512 | if (m != NULL) | 487 | ECRS_freeMetaData (m); |
513 | ECRS_freeMetaData(m); | 488 | } |
514 | } while (gtk_tree_model_iter_next(pos->model, | 489 | while (gtk_tree_model_iter_next (pos->model, &iter)); |
515 | &iter)); | 490 | } |
516 | } | 491 | FREE (pos); |
517 | FREE(pos); | 492 | del_menu = glade_xml_get_widget (getMainXML (), "namespaceDelete"); |
518 | del_menu = glade_xml_get_widget(getMainXML(), | 493 | gtk_widget_set_sensitive (del_menu, head != NULL); |
519 | "namespaceDelete"); | ||
520 | gtk_widget_set_sensitive(del_menu, | ||
521 | head != NULL); | ||
522 | } | 494 | } |
523 | 495 | ||
524 | 496 | ||
525 | 497 | ||
526 | void namespaceDelete_clicked_fs(GtkWidget * dummy1, | 498 | void |
527 | GtkWidget * dummy2) { | 499 | namespaceDelete_clicked_fs (GtkWidget * dummy1, GtkWidget * dummy2) |
528 | GtkWidget * notebook; | 500 | { |
529 | NamespaceList * list; | 501 | GtkWidget *notebook; |
530 | NamespaceList * prev; | 502 | NamespaceList *list; |
503 | NamespaceList *prev; | ||
531 | gint num; | 504 | gint num; |
532 | GtkWidget * page; | 505 | GtkWidget *page; |
533 | GtkWidget * dialog; | 506 | GtkWidget *dialog; |
534 | gint ret; | 507 | gint ret; |
535 | 508 | ||
536 | DEBUG_BEGIN(); | 509 | DEBUG_BEGIN (); |
537 | notebook | 510 | notebook = glade_xml_get_widget (getMainXML (), "localNamespacesNotebook"); |
538 | = glade_xml_get_widget(getMainXML(), | 511 | num = gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)); |
539 | "localNamespacesNotebook"); | 512 | if (num == -1) |
540 | num | 513 | { |
541 | = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)); | 514 | /* IMPROVE-ME: disable the menu item |
542 | if (num == -1) { | 515 | as long as this may happen! */ |
543 | /* IMPROVE-ME: disable the menu item | 516 | dialog = gtk_message_dialog_new |
544 | as long as this may happen! */ | 517 | (NULL, |
545 | dialog = gtk_message_dialog_new | 518 | GTK_DIALOG_MODAL, |
546 | (NULL, | 519 | GTK_MESSAGE_ERROR, |
547 | GTK_DIALOG_MODAL, | 520 | GTK_BUTTONS_CLOSE, |
548 | GTK_MESSAGE_ERROR, | 521 | _("No local namespaces available that could be deleted!")); |
549 | GTK_BUTTONS_CLOSE, | 522 | gtk_dialog_run (GTK_DIALOG (dialog)); |
550 | _("No local namespaces available that could be deleted!")); | 523 | gtk_widget_destroy (dialog); |
551 | gtk_dialog_run(GTK_DIALOG(dialog)); | 524 | return; |
552 | gtk_widget_destroy(dialog); | 525 | } |
553 | return; | 526 | page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), num); |
554 | } | 527 | list = head; |
555 | page | 528 | prev = NULL; |
556 | = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), | 529 | while ((list != NULL) && (list->namespacepage != page)) |
557 | num); | 530 | { |
558 | list | 531 | prev = list; |
559 | = head; | 532 | list = list->next; |
560 | prev | 533 | } |
561 | = NULL; | 534 | if (list == NULL) |
562 | while ( (list != NULL) && | 535 | { |
563 | (list->namespacepage != page) ) { | 536 | GE_BREAK (ectx, 0); |
564 | prev = list; | 537 | return; |
565 | list = list->next; | 538 | } |
566 | } | ||
567 | if (list == NULL) { | ||
568 | GE_BREAK(ectx, 0); | ||
569 | return; | ||
570 | } | ||
571 | /* open window to ask for confirmation, | 539 | /* open window to ask for confirmation, |
572 | only then delete */ | 540 | only then delete */ |
573 | 541 | ||
@@ -576,102 +544,98 @@ void namespaceDelete_clicked_fs(GtkWidget * dummy1, | |||
576 | GTK_DIALOG_MODAL, | 544 | GTK_DIALOG_MODAL, |
577 | GTK_MESSAGE_ERROR, | 545 | GTK_MESSAGE_ERROR, |
578 | GTK_BUTTONS_YES_NO, | 546 | GTK_BUTTONS_YES_NO, |
579 | _("Should the namespace `%s' really be deleted?"), | 547 | _("Should the namespace `%s' really be deleted?"), list->name); |
580 | list->name); | 548 | ret = gtk_dialog_run (GTK_DIALOG (dialog)); |
581 | ret = gtk_dialog_run(GTK_DIALOG(dialog)); | 549 | gtk_widget_destroy (dialog); |
582 | gtk_widget_destroy(dialog); | ||
583 | if (GTK_RESPONSE_YES != ret) | 550 | if (GTK_RESPONSE_YES != ret) |
584 | return; | 551 | return; |
585 | gtk_notebook_remove_page(GTK_NOTEBOOK(notebook), | 552 | gtk_notebook_remove_page (GTK_NOTEBOOK (notebook), num); |
586 | num); | 553 | NS_deleteNamespace (ectx, cfg, list->name); |
587 | NS_deleteNamespace(ectx, | 554 | frame_destroy (list->treeview); |
588 | cfg, | 555 | DEBUG_END (); |
589 | list->name); | ||
590 | frame_destroy(list->treeview); | ||
591 | DEBUG_END(); | ||
592 | } | 556 | } |
593 | 557 | ||
594 | typedef struct { | 558 | typedef struct |
559 | { | ||
595 | unsigned int anonymityLevel; | 560 | unsigned int anonymityLevel; |
596 | char * namespaceName; | 561 | char *namespaceName; |
597 | TIME_T updateInterval; | 562 | TIME_T updateInterval; |
598 | HashCode512 * lastId; | 563 | HashCode512 *lastId; |
599 | HashCode512 thisId; | 564 | HashCode512 thisId; |
600 | HashCode512 * nextId; | 565 | HashCode512 *nextId; |
601 | } IUC; | 566 | } IUC; |
602 | 567 | ||
603 | /** | 568 | /** |
604 | * Publish the selected file in the | 569 | * Publish the selected file in the |
605 | * selected namespace. | 570 | * selected namespace. |
606 | */ | 571 | */ |
607 | static void addToNamespaceCB(GtkTreeModel * model, | 572 | static void |
608 | GtkTreePath * path, | 573 | addToNamespaceCB (GtkTreeModel * model, |
609 | GtkTreeIter * iter, | 574 | GtkTreePath * path, GtkTreeIter * iter, gpointer data) |
610 | gpointer data) { | 575 | { |
611 | IUC * cls = data; | 576 | IUC *cls = data; |
612 | struct ECRS_URI * resultURI; | 577 | struct ECRS_URI *resultURI; |
613 | struct ECRS_URI * dst; | 578 | struct ECRS_URI *dst; |
614 | struct ECRS_MetaData * meta; | 579 | struct ECRS_MetaData *meta; |
615 | NamespaceList * list; | 580 | NamespaceList *list; |
616 | ECRS_FileInfo fi; | 581 | ECRS_FileInfo fi; |
617 | 582 | ||
618 | DEBUG_BEGIN(); | 583 | DEBUG_BEGIN (); |
619 | dst = NULL; | 584 | dst = NULL; |
620 | gtk_tree_model_get(model, | 585 | gtk_tree_model_get (model, |
621 | iter, | 586 | iter, NAMESPACE_URI, &dst, NAMESPACE_META, &meta, -1); |
622 | NAMESPACE_URI, &dst, | 587 | if (dst == NULL) |
623 | NAMESPACE_META, &meta, | 588 | { |
624 | -1); | 589 | GE_BREAK (ectx, 0); |
625 | if (dst == NULL) { | 590 | return; |
626 | GE_BREAK(ectx, 0); | 591 | } |
627 | return; | 592 | resultURI = NS_addToNamespace (ectx, cfg, cls->anonymityLevel, 1000, /* FIXME: priority */ |
628 | } | 593 | get_time () + 2 * cronYEARS, /* FIXME: expiration */ |
629 | resultURI = NS_addToNamespace(ectx, | 594 | cls->namespaceName, |
630 | cfg, | 595 | cls->updateInterval, |
631 | cls->anonymityLevel, | 596 | cls->lastId, |
632 | 1000, /* FIXME: priority */ | 597 | &cls->thisId, cls->nextId, dst, meta); |
633 | get_time() + 2 * cronYEARS, /* FIXME: expiration */ | 598 | if (resultURI != NULL) |
634 | cls->namespaceName, | 599 | { |
635 | cls->updateInterval, | 600 | list = head; |
636 | cls->lastId, | 601 | while ((list != NULL) && (0 != strcmp (cls->namespaceName, list->name))) |
637 | &cls->thisId, | 602 | list = list->next; |
638 | cls->nextId, | 603 | if (list == NULL) |
639 | dst, | 604 | { |
640 | meta); | 605 | GE_BREAK (ectx, 0); |
641 | if (resultURI != NULL) { | 606 | } |
642 | list = head; | 607 | else |
643 | while ( (list != NULL) && | 608 | { |
644 | (0 != strcmp(cls->namespaceName, | 609 | /* update namespace content list! */ |
645 | list->name)) ) | 610 | fi.uri = dst; |
646 | list = list->next; | 611 | fi.meta = meta; |
647 | if (list == NULL) { | 612 | addNamespaceContentToModel (list->model, |
648 | GE_BREAK(ectx, 0); | 613 | &fi, |
649 | } else { | 614 | &cls->thisId, |
650 | /* update namespace content list! */ | 615 | cls->nextId, |
651 | fi.uri = dst; | 616 | cls->updateInterval, |
652 | fi.meta = meta; | 617 | cls->updateInterval + TIME (NULL)); |
653 | addNamespaceContentToModel(list->model, | 618 | } |
654 | &fi, | 619 | ECRS_freeUri (resultURI); |
655 | &cls->thisId, | 620 | } |
656 | cls->nextId, | 621 | else |
657 | cls->updateInterval, | 622 | { |
658 | cls->updateInterval + TIME(NULL)); | 623 | infoMessage (YES, |
624 | _("Failed to insert content into namespace " | ||
625 | "(consult logs).\n")); | ||
659 | } | 626 | } |
660 | ECRS_freeUri(resultURI); | 627 | DEBUG_END (); |
661 | } else { | ||
662 | infoMessage(YES, | ||
663 | _("Failed to insert content into namespace " | ||
664 | "(consult logs).\n")); | ||
665 | } | ||
666 | DEBUG_END(); | ||
667 | } | 628 | } |
668 | 629 | ||
669 | void on_namespaceInsertMetaDataDialogMetaDataAddButton_clicked_fs(GtkWidget * dummy1, | 630 | void |
670 | GtkWidget * dummy2) { | 631 | on_namespaceInsertMetaDataDialogMetaDataAddButton_clicked_fs (GtkWidget * |
671 | handleMetaDataListUpdate(metaXML, | 632 | dummy1, |
672 | "namespaceInsertMetaTypeComboBox", | 633 | GtkWidget * |
673 | "metaDataValueEntry", | 634 | dummy2) |
674 | "metaDataTreeView"); | 635 | { |
636 | handleMetaDataListUpdate (metaXML, | ||
637 | "namespaceInsertMetaTypeComboBox", | ||
638 | "metaDataValueEntry", "metaDataTreeView"); | ||
675 | } | 639 | } |
676 | 640 | ||
677 | /** | 641 | /** |
@@ -679,104 +643,93 @@ void on_namespaceInsertMetaDataDialogMetaDataAddButton_clicked_fs(GtkWidget * du | |||
679 | * available content list to the currently selected | 643 | * available content list to the currently selected |
680 | * namespace. | 644 | * namespace. |
681 | */ | 645 | */ |
682 | void on_namespaceInsertButton_clicked_fs(GtkWidget * dummy1, | 646 | void |
683 | GtkWidget * dummy2) { | 647 | on_namespaceInsertButton_clicked_fs (GtkWidget * dummy1, GtkWidget * dummy2) |
684 | 648 | { | |
685 | const char * identifierName; | 649 | |
686 | NamespaceList * list; | 650 | const char *identifierName; |
687 | GtkWidget * nameLine; | 651 | NamespaceList *list; |
688 | GtkWidget * page; | 652 | GtkWidget *nameLine; |
689 | GtkWidget * notebook; | 653 | GtkWidget *page; |
690 | GtkWidget * dialog; | 654 | GtkWidget *notebook; |
691 | GtkWidget * updateIntervalComboBox; | 655 | GtkWidget *dialog; |
656 | GtkWidget *updateIntervalComboBox; | ||
692 | HashCode512 nextId; | 657 | HashCode512 nextId; |
693 | IUC cls; | 658 | IUC cls; |
694 | gint num; | 659 | gint num; |
695 | 660 | ||
696 | notebook | 661 | notebook = glade_xml_get_widget (getMainXML (), "localNamespacesNotebook"); |
697 | = glade_xml_get_widget(getMainXML(), | 662 | num = gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)); |
698 | "localNamespacesNotebook"); | 663 | GE_ASSERT (ectx, num != -1); |
699 | num = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)); | 664 | page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), num); |
700 | GE_ASSERT(ectx, num != -1); | ||
701 | page =gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), | ||
702 | num); | ||
703 | list = head; | 665 | list = head; |
704 | while ( (list != NULL) && | 666 | while ((list != NULL) && (list->namespacepage != page)) |
705 | (list->namespacepage != page) ) | ||
706 | list = list->next; | 667 | list = list->next; |
707 | if (list == NULL) { | 668 | if (list == NULL) |
708 | GE_BREAK(ectx, 0); | 669 | { |
709 | return; | 670 | GE_BREAK (ectx, 0); |
710 | } | 671 | return; |
672 | } | ||
711 | cls.namespaceName = list->name; | 673 | cls.namespaceName = list->name; |
712 | 674 | ||
713 | metaXML | 675 | metaXML |
714 | = glade_xml_new(getGladeFileName(), | 676 | = glade_xml_new (getGladeFileName (), |
715 | "namespaceInsertDialog", | 677 | "namespaceInsertDialog", PACKAGE_NAME); |
716 | PACKAGE_NAME); | 678 | connectGladeWithPlugins (metaXML); |
717 | connectGladeWithPlugins(metaXML); | 679 | dialog = glade_xml_get_widget (metaXML, "namespaceInsertDialog"); |
718 | dialog = glade_xml_get_widget(metaXML, | 680 | gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); |
719 | "namespaceInsertDialog"); | 681 | |
720 | gtk_dialog_set_default_response(GTK_DIALOG(dialog), | 682 | updateIntervalComboBox = glade_xml_get_widget (metaXML, |
721 | GTK_RESPONSE_OK); | 683 | "updateIntervalComboBoxEntry"); |
722 | 684 | gtk_combo_box_set_active (GTK_COMBO_BOX (updateIntervalComboBox), 0); | |
723 | updateIntervalComboBox = glade_xml_get_widget(metaXML, | 685 | |
724 | "updateIntervalComboBoxEntry"); | 686 | |
725 | gtk_combo_box_set_active(GTK_COMBO_BOX(updateIntervalComboBox), | 687 | if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) |
726 | 0); | 688 | { |
727 | 689 | if (OK != tryParseTimeInterval (metaXML, | |
728 | 690 | "updateIntervalComboBoxEntry", | |
729 | if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { | 691 | &cls.updateInterval)) |
730 | if (OK != tryParseTimeInterval(metaXML, | 692 | { |
731 | "updateIntervalComboBoxEntry", | 693 | /* this should be impossible - OK button is |
732 | &cls.updateInterval)) { | 694 | deactivated while parse errors are there */ |
733 | /* this should be impossible - OK button is | 695 | gtk_widget_destroy (dialog); |
734 | deactivated while parse errors are there */ | 696 | UNREF (metaXML); |
735 | gtk_widget_destroy(dialog); | 697 | metaXML = NULL; |
736 | UNREF(metaXML); | 698 | dialog = gtk_message_dialog_new |
737 | metaXML = NULL; | 699 | (NULL, |
738 | dialog = gtk_message_dialog_new | 700 | GTK_DIALOG_MODAL, |
739 | (NULL, | 701 | GTK_MESSAGE_ERROR, |
740 | GTK_DIALOG_MODAL, | 702 | GTK_BUTTONS_CLOSE, _("Failed to parse given time interval!")); |
741 | GTK_MESSAGE_ERROR, | 703 | gtk_dialog_run (GTK_DIALOG (dialog)); |
742 | GTK_BUTTONS_CLOSE, | 704 | gtk_widget_destroy (dialog); |
743 | _("Failed to parse given time interval!")); | 705 | return; |
744 | gtk_dialog_run(GTK_DIALOG(dialog)); | 706 | } |
745 | gtk_widget_destroy(dialog); | 707 | cls.anonymityLevel |
746 | return; | 708 | = getSpinButtonValue (metaXML, "anonymitySpinButton"); |
709 | nameLine = glade_xml_get_widget (metaXML, | ||
710 | "namespaceContentIdentifierEntry"); | ||
711 | identifierName = gtk_entry_get_text (GTK_ENTRY (nameLine)); | ||
712 | if (identifierName == NULL) | ||
713 | identifierName = ""; | ||
714 | hash (identifierName, strlen (identifierName), &cls.thisId); | ||
715 | cls.lastId = NULL; | ||
716 | |||
717 | nameLine = glade_xml_get_widget (metaXML, "nextIdentifierEntry"); | ||
718 | identifierName = gtk_entry_get_text (GTK_ENTRY (nameLine)); | ||
719 | if ((identifierName == NULL) || (strlen (identifierName) == 0)) | ||
720 | { | ||
721 | cls.nextId = NULL; | ||
722 | } | ||
723 | else | ||
724 | { | ||
725 | hash (identifierName, strlen (identifierName), &nextId); | ||
726 | cls.nextId = &nextId; | ||
727 | } | ||
728 | ggc_tree_selection_selected_foreach | ||
729 | (content_selection, &addToNamespaceCB, &cls); | ||
747 | } | 730 | } |
748 | cls.anonymityLevel | 731 | gtk_widget_destroy (dialog); |
749 | = getSpinButtonValue(metaXML, | 732 | UNREF (metaXML); |
750 | "anonymitySpinButton"); | ||
751 | nameLine = glade_xml_get_widget(metaXML, | ||
752 | "namespaceContentIdentifierEntry"); | ||
753 | identifierName = gtk_entry_get_text(GTK_ENTRY(nameLine)); | ||
754 | if (identifierName == NULL) | ||
755 | identifierName = ""; | ||
756 | hash(identifierName, | ||
757 | strlen(identifierName), | ||
758 | &cls.thisId); | ||
759 | cls.lastId = NULL; | ||
760 | |||
761 | nameLine = glade_xml_get_widget(metaXML, | ||
762 | "nextIdentifierEntry"); | ||
763 | identifierName = gtk_entry_get_text(GTK_ENTRY(nameLine)); | ||
764 | if ( (identifierName == NULL) || | ||
765 | (strlen(identifierName) == 0)) { | ||
766 | cls.nextId = NULL; | ||
767 | } else { | ||
768 | hash(identifierName, | ||
769 | strlen(identifierName), | ||
770 | &nextId); | ||
771 | cls.nextId = &nextId; | ||
772 | } | ||
773 | ggc_tree_selection_selected_foreach | ||
774 | (content_selection, | ||
775 | &addToNamespaceCB, | ||
776 | &cls); | ||
777 | } | ||
778 | gtk_widget_destroy(dialog); | ||
779 | UNREF(metaXML); | ||
780 | metaXML = NULL; | 733 | metaXML = NULL; |
781 | } | 734 | } |
782 | 735 | ||
@@ -785,288 +738,243 @@ void on_namespaceInsertButton_clicked_fs(GtkWidget * dummy1, | |||
785 | * User clicked on update; launch update dialog | 738 | * User clicked on update; launch update dialog |
786 | * and perform namespace content update. | 739 | * and perform namespace content update. |
787 | */ | 740 | */ |
788 | void on_namespaceUpdateButton_clicked_fs(GtkWidget * dummy1, | 741 | void |
789 | GtkWidget * dummy2) { | 742 | on_namespaceUpdateButton_clicked_fs (GtkWidget * dummy1, GtkWidget * dummy2) |
790 | NamespaceList * list; | 743 | { |
744 | NamespaceList *list; | ||
791 | GtkTreeIter iter; | 745 | GtkTreeIter iter; |
792 | HashCode512 nextId; | 746 | HashCode512 nextId; |
793 | HashCode512 lastId; | 747 | HashCode512 lastId; |
794 | GtkTreeSelection * selection; | 748 | GtkTreeSelection *selection; |
795 | IUC cls; | 749 | IUC cls; |
796 | char * last; | 750 | char *last; |
797 | char * next; | 751 | char *next; |
798 | char * freq; | 752 | char *freq; |
799 | EncName nextnext; | 753 | EncName nextnext; |
800 | GtkWidget * nextEntryLine; | 754 | GtkWidget *nextEntryLine; |
801 | GtkWidget * identifierLabel; | 755 | GtkWidget *identifierLabel; |
802 | GtkWidget * updateIntervalComboBox; | 756 | GtkWidget *updateIntervalComboBox; |
803 | GtkWidget * dialog; | 757 | GtkWidget *dialog; |
804 | GtkWidget * mdialog; | 758 | GtkWidget *mdialog; |
805 | GtkWidget * notebook; | 759 | GtkWidget *notebook; |
806 | GtkWidget * page; | 760 | GtkWidget *page; |
807 | GtkTreeModel * model; | 761 | GtkTreeModel *model; |
808 | gint num; | 762 | gint num; |
809 | const char * nn_str; | 763 | const char *nn_str; |
810 | 764 | ||
811 | DEBUG_BEGIN(); | 765 | DEBUG_BEGIN (); |
812 | /* find out which namespace this is about */ | 766 | /* find out which namespace this is about */ |
813 | notebook | 767 | notebook = glade_xml_get_widget (getMainXML (), "localNamespacesNotebook"); |
814 | = glade_xml_get_widget(getMainXML(), | 768 | num = gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)); |
815 | "localNamespacesNotebook"); | 769 | GE_ASSERT (ectx, num != -1); |
816 | num = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)); | 770 | page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), num); |
817 | GE_ASSERT(ectx, num != -1); | ||
818 | page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), | ||
819 | num); | ||
820 | list = head; | 771 | list = head; |
821 | while ( (list != NULL) && | 772 | while ((list != NULL) && (list->namespacepage != page)) |
822 | (list->namespacepage != page) ) | ||
823 | list = list->next; | 773 | list = list->next; |
824 | if (list == NULL) { | 774 | if (list == NULL) |
825 | GE_BREAK(ectx, 0); | 775 | { |
826 | return; | 776 | GE_BREAK (ectx, 0); |
827 | } | 777 | return; |
778 | } | ||
828 | cls.namespaceName = list->name; | 779 | cls.namespaceName = list->name; |
829 | 780 | ||
830 | /* find out what we are updating */ | 781 | /* find out what we are updating */ |
831 | selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list->treeview)); | 782 | selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (list->treeview)); |
832 | if (TRUE != gtk_tree_selection_get_selected(selection, | 783 | if (TRUE != gtk_tree_selection_get_selected (selection, NULL, &iter)) |
833 | NULL, | 784 | { |
834 | &iter)) { | 785 | GE_BREAK (ectx, 0); |
835 | GE_BREAK(ectx, 0); | 786 | return; |
836 | return; | 787 | } |
837 | } | 788 | gtk_tree_model_get (list->model, |
838 | gtk_tree_model_get(list->model, | 789 | &iter, |
839 | &iter, | 790 | IN_NAMESPACE_LAST_STRING, &last, |
840 | IN_NAMESPACE_LAST_STRING, &last, | 791 | IN_NAMESPACE_NEXT_STRING, &next, |
841 | IN_NAMESPACE_NEXT_STRING, &next, | 792 | IN_NAMESPACE_PUB_FREQ_STRING, &freq, -1); |
842 | IN_NAMESPACE_PUB_FREQ_STRING, &freq, | 793 | if ((last == NULL) || (next == NULL) || (freq == NULL)) |
843 | -1); | 794 | { |
844 | if ( (last == NULL) || | 795 | GE_BREAK (NULL, 0); |
845 | (next == NULL) || | 796 | return; |
846 | (freq == NULL) ) { | 797 | } |
847 | GE_BREAK(NULL, 0); | 798 | if (OK != parseTimeInterval (freq, &cls.updateInterval)) |
848 | return; | 799 | { |
849 | } | 800 | GE_BREAK (ectx, 0); |
850 | if (OK != parseTimeInterval(freq, | 801 | cls.updateInterval = ECRS_SBLOCK_UPDATE_SPORADIC; |
851 | &cls.updateInterval)) { | 802 | } |
852 | GE_BREAK(ectx, 0); | ||
853 | cls.updateInterval = ECRS_SBLOCK_UPDATE_SPORADIC; | ||
854 | } | ||
855 | 803 | ||
856 | /* create update dialog */ | 804 | /* create update dialog */ |
857 | metaXML | 805 | metaXML |
858 | = glade_xml_new(getGladeFileName(), | 806 | = glade_xml_new (getGladeFileName (), |
859 | "namespaceUpdateDialog", | 807 | "namespaceUpdateDialog", PACKAGE_NAME); |
860 | PACKAGE_NAME); | 808 | connectGladeWithPlugins (metaXML); |
861 | connectGladeWithPlugins(metaXML); | 809 | dialog = glade_xml_get_widget (metaXML, "namespaceUpdateDialog"); |
862 | dialog = glade_xml_get_widget(metaXML, | 810 | gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); |
863 | "namespaceUpdateDialog"); | 811 | identifierLabel = glade_xml_get_widget (metaXML, "identifierLabel"); |
864 | gtk_dialog_set_default_response(GTK_DIALOG(dialog), | 812 | gtk_label_set_text (GTK_LABEL (identifierLabel), next); |
865 | GTK_RESPONSE_OK); | 813 | enc2hash (last, &lastId); |
866 | identifierLabel = glade_xml_get_widget(metaXML, | ||
867 | "identifierLabel"); | ||
868 | gtk_label_set_text(GTK_LABEL(identifierLabel), | ||
869 | next); | ||
870 | enc2hash(last, &lastId); | ||
871 | cls.lastId = &lastId; | 814 | cls.lastId = &lastId; |
872 | enc2hash(next, &cls.thisId); | 815 | enc2hash (next, &cls.thisId); |
873 | 816 | ||
874 | nextEntryLine = glade_xml_get_widget(metaXML, | 817 | nextEntryLine = glade_xml_get_widget (metaXML, "nextIdentifierEntry"); |
875 | "nextIdentifierEntry"); | 818 | if ((cls.updateInterval != ECRS_SBLOCK_UPDATE_SPORADIC) && |
876 | if ( (cls.updateInterval != ECRS_SBLOCK_UPDATE_SPORADIC) && | 819 | (OK == NS_computeNextId (NULL, |
877 | (OK == NS_computeNextId(NULL, | 820 | cfg, |
878 | cfg, | 821 | cls.namespaceName, |
879 | cls.namespaceName, | 822 | &lastId, |
880 | &lastId, | 823 | &cls.thisId, cls.updateInterval, &nextId))) |
881 | &cls.thisId, | 824 | { |
882 | cls.updateInterval, | 825 | hash2enc (&nextId, &nextnext); |
883 | &nextId)) ) { | 826 | gtk_entry_set_text (GTK_ENTRY (nextEntryLine), (char *) &nextnext); |
884 | hash2enc(&nextId, | 827 | gtk_widget_set_sensitive (nextEntryLine, FALSE); |
885 | &nextnext); | 828 | } |
886 | gtk_entry_set_text(GTK_ENTRY(nextEntryLine), | ||
887 | (char*) &nextnext); | ||
888 | gtk_widget_set_sensitive(nextEntryLine, | ||
889 | FALSE); | ||
890 | } | ||
891 | /* set update interval in dialog to | 829 | /* set update interval in dialog to |
892 | the existing update interval */ | 830 | the existing update interval */ |
893 | updateIntervalComboBox = glade_xml_get_widget(metaXML, | 831 | updateIntervalComboBox = glade_xml_get_widget (metaXML, |
894 | "namespaceUpdateIntervalComboBoxEntry"); | 832 | "namespaceUpdateIntervalComboBoxEntry"); |
895 | model = gtk_combo_box_get_model(GTK_COMBO_BOX(updateIntervalComboBox)); | 833 | model = gtk_combo_box_get_model (GTK_COMBO_BOX (updateIntervalComboBox)); |
896 | gtk_list_store_insert(GTK_LIST_STORE(model), | 834 | gtk_list_store_insert (GTK_LIST_STORE (model), &iter, 0); |
897 | &iter, | 835 | gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, freq, -1); |
898 | 0); | 836 | gtk_combo_box_set_active (GTK_COMBO_BOX (updateIntervalComboBox), 0); |
899 | gtk_list_store_set(GTK_LIST_STORE(model), | ||
900 | &iter, | ||
901 | 0, freq, | ||
902 | -1); | ||
903 | gtk_combo_box_set_active(GTK_COMBO_BOX(updateIntervalComboBox), | ||
904 | 0); | ||
905 | 837 | ||
906 | /* run update dialog */ | 838 | /* run update dialog */ |
907 | if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) | 839 | if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK) |
908 | goto CLEANUP; | 840 | goto CLEANUP; |
909 | gtk_widget_hide(dialog); | 841 | gtk_widget_hide (dialog); |
910 | 842 | ||
911 | /* get data from update dialog */ | 843 | /* get data from update dialog */ |
912 | nn_str = gtk_entry_get_text(GTK_ENTRY(nextEntryLine)); | 844 | nn_str = gtk_entry_get_text (GTK_ENTRY (nextEntryLine)); |
913 | if (nn_str == NULL) | 845 | if (nn_str == NULL) |
914 | nn_str = ""; | 846 | nn_str = ""; |
915 | hash(nn_str, | 847 | hash (nn_str, strlen (nn_str), &nextId); |
916 | strlen(nn_str), | ||
917 | &nextId); | ||
918 | cls.nextId = &nextId; | 848 | cls.nextId = &nextId; |
919 | 849 | ||
920 | if (OK != tryParseTimeInterval(metaXML, | 850 | if (OK != tryParseTimeInterval (metaXML, |
921 | "namespaceUpdateIntervalComboBoxEntry", | 851 | "namespaceUpdateIntervalComboBoxEntry", |
922 | &cls.updateInterval)) { | 852 | &cls.updateInterval)) |
923 | /* This should be impossible since the | 853 | { |
924 | the OK button is deactivated while parse errors are present */ | 854 | /* This should be impossible since the |
925 | mdialog = gtk_message_dialog_new | 855 | the OK button is deactivated while parse errors are present */ |
926 | (NULL, | 856 | mdialog = gtk_message_dialog_new |
927 | GTK_DIALOG_MODAL, | 857 | (NULL, |
928 | GTK_MESSAGE_ERROR, | 858 | GTK_DIALOG_MODAL, |
929 | GTK_BUTTONS_CLOSE, | 859 | GTK_MESSAGE_ERROR, |
930 | _("Failed to parse given time interval!")); | 860 | GTK_BUTTONS_CLOSE, _("Failed to parse given time interval!")); |
931 | gtk_dialog_run(GTK_DIALOG(mdialog)); | 861 | gtk_dialog_run (GTK_DIALOG (mdialog)); |
932 | gtk_widget_destroy(mdialog); | 862 | gtk_widget_destroy (mdialog); |
933 | goto CLEANUP; | 863 | goto CLEANUP; |
934 | } | 864 | } |
935 | cls.anonymityLevel | 865 | cls.anonymityLevel |
936 | = getSpinButtonValue(metaXML, | 866 | = getSpinButtonValue (metaXML, "namespaceUpdateAnonymitySpinButton"); |
937 | "namespaceUpdateAnonymitySpinButton"); | ||
938 | 867 | ||
939 | /* run actual update */ | 868 | /* run actual update */ |
940 | ggc_tree_selection_selected_foreach | 869 | ggc_tree_selection_selected_foreach |
941 | (content_selection, | 870 | (content_selection, &addToNamespaceCB, &cls); |
942 | &addToNamespaceCB, | 871 | CLEANUP: |
943 | &cls); | 872 | gtk_widget_destroy (dialog); |
944 | CLEANUP: | 873 | UNREF (metaXML); |
945 | gtk_widget_destroy(dialog); | ||
946 | UNREF(metaXML); | ||
947 | metaXML = NULL; | 874 | metaXML = NULL; |
948 | free(last); | 875 | free (last); |
949 | free(next); | 876 | free (next); |
950 | free(freq); | 877 | free (freq); |
951 | DEBUG_END(); | 878 | DEBUG_END (); |
952 | } | 879 | } |
953 | 880 | ||
954 | 881 | ||
955 | 882 | ||
956 | void fs_namespace_start() { | 883 | void |
957 | GtkWidget * contentList; | 884 | fs_namespace_start () |
958 | GtkListStore * model; | 885 | { |
959 | GtkCellRenderer * renderer; | 886 | GtkWidget *contentList; |
960 | GtkWidget * trackCheckButton; | 887 | GtkListStore *model; |
961 | GtkTreeViewColumn * column; | 888 | GtkCellRenderer *renderer; |
889 | GtkWidget *trackCheckButton; | ||
890 | GtkTreeViewColumn *column; | ||
962 | int col; | 891 | int col; |
963 | 892 | ||
964 | DEBUG_BEGIN(); | 893 | DEBUG_BEGIN (); |
965 | trackCheckButton | 894 | trackCheckButton |
966 | = glade_xml_get_widget(getMainXML(), | 895 | = glade_xml_get_widget (getMainXML (), "trackingCheckButton"); |
967 | "trackingCheckButton"); | 896 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (trackCheckButton), |
968 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(trackCheckButton), | 897 | URITRACK_trackStatus (ectx, |
969 | URITRACK_trackStatus(ectx, | 898 | cfg) == |
970 | cfg) == YES ? TRUE : FALSE); | 899 | YES ? TRUE : FALSE); |
971 | 900 | ||
972 | contentList | 901 | contentList = glade_xml_get_widget (getMainXML (), "availableContentList"); |
973 | = glade_xml_get_widget(getMainXML(), | 902 | |
974 | "availableContentList"); | 903 | model = gtk_list_store_new (NAMESPACE_NUM, G_TYPE_STRING, /* name */ |
975 | 904 | G_TYPE_UINT64, /* size */ | |
976 | model = gtk_list_store_new(NAMESPACE_NUM, | 905 | G_TYPE_STRING, /* human-readable size */ |
977 | G_TYPE_STRING, /* name */ | 906 | G_TYPE_STRING, /* uri-string */ |
978 | G_TYPE_UINT64, /* size */ | 907 | G_TYPE_POINTER, G_TYPE_POINTER); /* uri */ |
979 | G_TYPE_STRING, /* human-readable size */ | 908 | gtk_tree_view_set_model (GTK_TREE_VIEW (contentList), |
980 | G_TYPE_STRING, /* uri-string */ | 909 | GTK_TREE_MODEL (model)); |
981 | G_TYPE_POINTER, | 910 | content_selection = |
982 | G_TYPE_POINTER); /* uri */ | 911 | gtk_tree_view_get_selection (GTK_TREE_VIEW (contentList)); |
983 | gtk_tree_view_set_model(GTK_TREE_VIEW(contentList), | 912 | gtk_tree_selection_set_mode (content_selection, GTK_SELECTION_MULTIPLE); |
984 | GTK_TREE_MODEL(model)); | 913 | |
985 | content_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(contentList)); | 914 | g_signal_connect_data (content_selection, |
986 | gtk_tree_selection_set_mode(content_selection, | 915 | "changed", |
987 | GTK_SELECTION_MULTIPLE); | 916 | G_CALLBACK (&on_namespaceContentSelectionChanged), |
988 | 917 | NULL, NULL, 0); | |
989 | g_signal_connect_data(content_selection, | 918 | |
990 | "changed", | 919 | |
991 | G_CALLBACK(&on_namespaceContentSelectionChanged), | 920 | renderer = gtk_cell_renderer_text_new (); |
992 | NULL, | 921 | col = |
993 | NULL, | 922 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (contentList), |
994 | 0); | 923 | -1, _("Filename"), renderer, |
995 | 924 | "text", NAMESPACE_FILENAME, | |
996 | 925 | NULL); | |
997 | renderer = gtk_cell_renderer_text_new(); | 926 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (contentList), col - 1); |
998 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(contentList), | 927 | gtk_tree_view_column_set_resizable (column, TRUE); |
999 | -1, | 928 | gtk_tree_view_column_set_clickable (column, TRUE); |
1000 | _("Filename"), | 929 | gtk_tree_view_column_set_reorderable (column, TRUE); |
1001 | renderer, | 930 | gtk_tree_view_column_set_sort_column_id (column, NAMESPACE_FILENAME); |
1002 | "text", NAMESPACE_FILENAME, | 931 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE); */ |
1003 | NULL); | 932 | |
1004 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(contentList), | 933 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
1005 | col - 1); | 934 | (GTK_TREE_VIEW (contentList), col - 1), |
1006 | gtk_tree_view_column_set_resizable(column, TRUE); | 935 | TRUE); |
1007 | gtk_tree_view_column_set_clickable(column, TRUE); | 936 | renderer = gtk_cell_renderer_text_new (); |
1008 | gtk_tree_view_column_set_reorderable(column, TRUE); | ||
1009 | gtk_tree_view_column_set_sort_column_id(column, NAMESPACE_FILENAME); | ||
1010 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/ | ||
1011 | |||
1012 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(contentList), | ||
1013 | col - 1), | ||
1014 | TRUE); | ||
1015 | renderer = gtk_cell_renderer_text_new(); | ||
1016 | g_object_set (renderer, "xalign", 1.00, NULL); | 937 | g_object_set (renderer, "xalign", 1.00, NULL); |
1017 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(contentList), | 938 | col = |
1018 | -1, | 939 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (contentList), |
1019 | _("Filesize"), | 940 | -1, _("Filesize"), renderer, |
1020 | renderer, | 941 | "text", NAMESPACE_HSIZE, |
1021 | "text", NAMESPACE_HSIZE, | 942 | NULL); |
1022 | NULL); | 943 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (contentList), col - 1); |
1023 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(contentList), | 944 | gtk_tree_view_column_set_resizable (column, TRUE); |
1024 | col - 1); | 945 | gtk_tree_view_column_set_clickable (column, TRUE); |
1025 | gtk_tree_view_column_set_resizable(column, TRUE); | 946 | gtk_tree_view_column_set_reorderable (column, TRUE); |
1026 | gtk_tree_view_column_set_clickable(column, TRUE); | 947 | gtk_tree_view_column_set_sort_column_id (column, NAMESPACE_SIZE); |
1027 | gtk_tree_view_column_set_reorderable(column, TRUE); | 948 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE); */ |
1028 | gtk_tree_view_column_set_sort_column_id(column, NAMESPACE_SIZE); | 949 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
1029 | /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/ | 950 | (GTK_TREE_VIEW (contentList), col - 1), |
1030 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(contentList), | 951 | TRUE); |
1031 | col - 1), | 952 | renderer = gtk_cell_renderer_text_new (); |
1032 | TRUE); | 953 | col = |
1033 | renderer = gtk_cell_renderer_text_new(); | 954 | gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (contentList), |
1034 | col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(contentList), | 955 | -1, _("URI"), renderer, |
1035 | -1, | 956 | "text", NAMESPACE_URISTRING, |
1036 | _("URI"), | 957 | NULL); |
1037 | renderer, | 958 | column = gtk_tree_view_get_column (GTK_TREE_VIEW (contentList), col - 1); |
1038 | "text", NAMESPACE_URISTRING, | 959 | gtk_tree_view_column_set_reorderable (column, TRUE); |
1039 | NULL); | 960 | gtk_tree_view_column_set_resizable (column, TRUE); |
1040 | column = gtk_tree_view_get_column(GTK_TREE_VIEW(contentList), | 961 | gtk_tree_view_column_set_resizable (gtk_tree_view_get_column |
1041 | col - 1); | 962 | (GTK_TREE_VIEW (contentList), col - 1), |
1042 | gtk_tree_view_column_set_reorderable(column, TRUE); | 963 | TRUE); |
1043 | gtk_tree_view_column_set_resizable(column, TRUE); | 964 | URITRACK_registerTrackCallback (ectx, cfg, &updateViewSave, NULL); |
1044 | gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(contentList), | 965 | NS_listNamespaces (ectx, cfg, &addTabForNamespace, NULL); |
1045 | col - 1), | 966 | NS_registerDiscoveryCallback (ectx, cfg, &namespace_discovered_cb, NULL); |
1046 | TRUE); | 967 | DEBUG_END (); |
1047 | URITRACK_registerTrackCallback(ectx, | ||
1048 | cfg, | ||
1049 | &updateViewSave, | ||
1050 | NULL); | ||
1051 | NS_listNamespaces(ectx, | ||
1052 | cfg, | ||
1053 | &addTabForNamespace, | ||
1054 | NULL); | ||
1055 | NS_registerDiscoveryCallback(ectx, | ||
1056 | cfg, | ||
1057 | &namespace_discovered_cb, | ||
1058 | NULL); | ||
1059 | DEBUG_END(); | ||
1060 | } | 968 | } |
1061 | 969 | ||
1062 | 970 | ||
1063 | void fs_namespace_stop() { | 971 | void |
1064 | NS_unregisterDiscoveryCallback(&namespace_discovered_cb, | 972 | fs_namespace_stop () |
1065 | NULL); | 973 | { |
974 | NS_unregisterDiscoveryCallback (&namespace_discovered_cb, NULL); | ||
1066 | while (head != NULL) | 975 | while (head != NULL) |
1067 | frame_destroy(head->treeview); | 976 | frame_destroy (head->treeview); |
1068 | URITRACK_unregisterTrackCallback(&updateViewSave, | 977 | URITRACK_unregisterTrackCallback (&updateViewSave, NULL); |
1069 | NULL); | ||
1070 | } | 978 | } |
1071 | 979 | ||
1072 | /* end of namespace.c */ | 980 | /* end of namespace.c */ |