diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-08-15 22:37:19 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-08-15 22:37:19 +0000 |
commit | 4bd2dd5f82dceecd597b5829bf43b2dda9ebb505 (patch) | |
tree | eefec7343dcafac33c1f5bd36cef628229211741 | |
parent | 91e7c712a11e09ad4849f6272fd79abe3505dec2 (diff) | |
download | gnunet-gtk-4bd2dd5f82dceecd597b5829bf43b2dda9ebb505.tar.gz gnunet-gtk-4bd2dd5f82dceecd597b5829bf43b2dda9ebb505.zip |
indent
38 files changed, 5707 insertions, 5873 deletions
diff --git a/.indent.pro b/.indent.pro new file mode 100644 index 00000000..7009a914 --- /dev/null +++ b/.indent.pro | |||
@@ -0,0 +1,632 @@ | |||
1 | //GNU (default) style: | ||
2 | // | ||
3 | //-nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2 | ||
4 | //-ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -nprs -psl -saf -sai | ||
5 | //-saw -nsc -nsob | ||
6 | // | ||
7 | // ------- | ||
8 | // int foo; | ||
9 | // char *bar; | ||
10 | // bar = strdup ("whe-e-e"); | ||
11 | // ------- | ||
12 | // int foo; | ||
13 | // char *bar; | ||
14 | // | ||
15 | // bar = strdup ("whe-e-e"); | ||
16 | // ------- | ||
17 | // Broken in indent-2.2.10 | ||
18 | --blank-lines-after-declarations | ||
19 | //--no-blank-lines-after-declarations | ||
20 | // | ||
21 | // ------- | ||
22 | // int foo (...) { | ||
23 | // ... | ||
24 | // } | ||
25 | // void bar (...) { | ||
26 | // ... | ||
27 | // } | ||
28 | // ------- | ||
29 | // int foo (...) { | ||
30 | // ... | ||
31 | // } | ||
32 | // | ||
33 | // void bar (...) { | ||
34 | // ... | ||
35 | // } | ||
36 | // ------- | ||
37 | --blank-lines-after-procedures | ||
38 | // | ||
39 | // ------- | ||
40 | // /* | ||
41 | // blah | ||
42 | // */ | ||
43 | // ------- | ||
44 | // /* | ||
45 | // * blah | ||
46 | // */ | ||
47 | // ------- | ||
48 | // WARNING: tends to turn commented-out code chunks into star-walled comment blocks | ||
49 | --start-left-side-of-comments | ||
50 | // | ||
51 | // ------- | ||
52 | // if (foo) { bar } | ||
53 | // ------- | ||
54 | // if (foo) | ||
55 | // { | ||
56 | // bar | ||
57 | // } | ||
58 | // ------- | ||
59 | --braces-after-if-line | ||
60 | // | ||
61 | // ------- | ||
62 | // if (foo) | ||
63 | // { | ||
64 | // bar | ||
65 | // } else { | ||
66 | // baz | ||
67 | // } | ||
68 | // ------- | ||
69 | // if (foo) | ||
70 | // { | ||
71 | // bar | ||
72 | // } | ||
73 | // else | ||
74 | // { | ||
75 | // baz | ||
76 | // } | ||
77 | // ------- | ||
78 | --dont-cuddle-else | ||
79 | // | ||
80 | // ------- | ||
81 | // do | ||
82 | // { | ||
83 | // foo | ||
84 | // } | ||
85 | // while (bar) | ||
86 | // ------- | ||
87 | // do | ||
88 | // { | ||
89 | // foo | ||
90 | // } while (bar) | ||
91 | // ------- | ||
92 | --dont-cuddle-do-while | ||
93 | // | ||
94 | // ------- | ||
95 | // switch (foo) | ||
96 | // { | ||
97 | // case bar: | ||
98 | // baz | ||
99 | // } | ||
100 | // ------- | ||
101 | // switch (foo) | ||
102 | // { | ||
103 | // case bar: | ||
104 | // baz | ||
105 | // } | ||
106 | // ------- | ||
107 | --case-indentation0 | ||
108 | // | ||
109 | // ------- | ||
110 | // switch (foo) | ||
111 | // { | ||
112 | // case bar: | ||
113 | // { | ||
114 | // baz | ||
115 | // } | ||
116 | // } | ||
117 | // ------- | ||
118 | // switch (foo) | ||
119 | // { | ||
120 | // case bar: | ||
121 | // { | ||
122 | // baz | ||
123 | // } | ||
124 | // } | ||
125 | // ------- | ||
126 | // Yes, it looks wrong. However, braces inside cases should not be used like this anyway. | ||
127 | --case-brace-indentation0 | ||
128 | // | ||
129 | // ------- | ||
130 | // for (i = 0; foobar(i); i++); | ||
131 | // ------- | ||
132 | // for (i = 0; foobar(i); i++) ; | ||
133 | // ------- | ||
134 | --space-special-semicolon | ||
135 | // | ||
136 | // ------- | ||
137 | // foo(bar) | ||
138 | // ------- | ||
139 | // foo (bar) | ||
140 | // ------- | ||
141 | --space-after-procedure-calls | ||
142 | // | ||
143 | // ------- | ||
144 | // (int *)foo; | ||
145 | // (my_custom_type_that_was_not_passed_with_T_argument_see_below *)bar; | ||
146 | // ------- | ||
147 | // (int *) foo; | ||
148 | // (my_custom_type_that_was_not_passed_with_T_argument_see_below *)bar; | ||
149 | // ------- | ||
150 | --space-after-cast | ||
151 | // | ||
152 | // ------- | ||
153 | // sizeof(foobar) | ||
154 | // ------- | ||
155 | // sizeof (foobar) | ||
156 | // ------- | ||
157 | -bs | ||
158 | // | ||
159 | // ------- | ||
160 | // for(foo;bar;baz) | ||
161 | // ------- | ||
162 | // for (foo;bar;baz) | ||
163 | // ------- | ||
164 | --space-after-for | ||
165 | // | ||
166 | // ------- | ||
167 | // if(foo) | ||
168 | // ------- | ||
169 | // if (foo) | ||
170 | // ------- | ||
171 | --space-after-if | ||
172 | // | ||
173 | // ------- | ||
174 | // while(foo) | ||
175 | // ------- | ||
176 | // while (foo) | ||
177 | // ------- | ||
178 | --space-after-while | ||
179 | // | ||
180 | // ------- | ||
181 | // if ( foo ( a > b ) | ( bar ( baz ) ) ) | ||
182 | // ------- | ||
183 | // if (foo (a > b) | (bar (baz))) | ||
184 | // ------- | ||
185 | --no-space-after-parentheses | ||
186 | // | ||
187 | // ------- | ||
188 | // int a; | ||
189 | // char b; | ||
190 | // ------- | ||
191 | // int a; | ||
192 | // char b; | ||
193 | // ------- | ||
194 | --declaration-indentation0 | ||
195 | // | ||
196 | // ------- | ||
197 | // int a, | ||
198 | // b, | ||
199 | // c; | ||
200 | // ------- | ||
201 | // int a, b, c; | ||
202 | // ------- | ||
203 | --no-blank-lines-after-commas | ||
204 | // | ||
205 | // ------- | ||
206 | // int foo (int bar, char *baz, long wheee, intptr_t zool); | ||
207 | // ------- | ||
208 | // int foo ( | ||
209 | // int bar, | ||
210 | // char *baz, | ||
211 | // long wheee, | ||
212 | // intptr_t zool); | ||
213 | // ------- | ||
214 | --break-function-decl-args | ||
215 | // | ||
216 | // ------- | ||
217 | // int foo ( | ||
218 | // int bar, | ||
219 | // char *baz, | ||
220 | // long wheee, | ||
221 | // intptr_t zool | ||
222 | // ); | ||
223 | // ------- | ||
224 | // int foo ( | ||
225 | // int bar, | ||
226 | // char *baz, | ||
227 | // long wheee, | ||
228 | // intptr_t zool); | ||
229 | // ------- | ||
230 | --dont-break-function-decl-args-end | ||
231 | // | ||
232 | // ------- | ||
233 | // int foo (bar); | ||
234 | // ------- | ||
235 | // int | ||
236 | // foo (bar); | ||
237 | // ------- | ||
238 | --procnames-start-lines | ||
239 | // | ||
240 | // ------- | ||
241 | // struct foo { int a; }; | ||
242 | // ------- | ||
243 | // struct foo | ||
244 | // { | ||
245 | // int a; | ||
246 | // }; | ||
247 | // ------- | ||
248 | --braces-after-struct-decl-line | ||
249 | // | ||
250 | // ------- | ||
251 | // int foo (bar) { | ||
252 | // baz | ||
253 | // } | ||
254 | // ------- | ||
255 | // int foo (bar) | ||
256 | // { | ||
257 | // baz | ||
258 | // } | ||
259 | // ------- | ||
260 | --braces-after-func-def-line | ||
261 | // | ||
262 | // ------- | ||
263 | // if (foo) | ||
264 | // { | ||
265 | // while (bar) | ||
266 | // { | ||
267 | // baz; | ||
268 | // } | ||
269 | // } | ||
270 | // ------- | ||
271 | // if (foo) | ||
272 | // { | ||
273 | // while (bar) | ||
274 | // { | ||
275 | // baz; | ||
276 | // } | ||
277 | // } | ||
278 | // ------- | ||
279 | --indent-level2 | ||
280 | // | ||
281 | // ------- | ||
282 | // if (foo) | ||
283 | // { | ||
284 | // bar; | ||
285 | // } | ||
286 | // ------- | ||
287 | // if (foo) | ||
288 | // { | ||
289 | // bar; | ||
290 | // } | ||
291 | // ------- | ||
292 | --brace-indent0 | ||
293 | // | ||
294 | // ------- | ||
295 | // boom = foo (bar) - baz + | ||
296 | // whee (zool); | ||
297 | // rules = power (mono, mwahahahahahahahaahahahahahahahahahahhahahahahaha, | ||
298 | // stereo); | ||
299 | // ------- | ||
300 | // boom = foo (bar) - baz + | ||
301 | // whee (zool); | ||
302 | // rules = power (mono, mwahahahahahahahaahahahahahahahahahahhahahahahaha, | ||
303 | // stereo); | ||
304 | // ------- | ||
305 | --continuation-indentation4 | ||
306 | // | ||
307 | // ------- | ||
308 | // rules = power (mono, mwahahahahahahahaahahahahahahahahahahhahahahahaha, | ||
309 | // stereo); | ||
310 | // ------- | ||
311 | // rules = power (mono, mwahahahahahahahaahahahahahahahahahahhahahahahaha, | ||
312 | // stereo); | ||
313 | // ------- | ||
314 | --continue-at-parentheses | ||
315 | //--dont-line-up-parentheses | ||
316 | // | ||
317 | // ------- | ||
318 | // while ((((i < 2 && | ||
319 | // k > 0) || p == 0) && | ||
320 | // q == 1) || | ||
321 | // n = 0) | ||
322 | // ------- | ||
323 | // while ((((i < 2 && | ||
324 | // k > 0) || p == 0) && | ||
325 | // q == 1) || | ||
326 | // n = 0) | ||
327 | // ------- | ||
328 | --paren-indentation2 | ||
329 | // | ||
330 | // ------- | ||
331 | // char * | ||
332 | // create_world (x, y, scale) | ||
333 | // int x; | ||
334 | // int y; | ||
335 | // float scale; | ||
336 | // { | ||
337 | // ... | ||
338 | // } | ||
339 | // ------- | ||
340 | // char * | ||
341 | // create_world (x, y, scale) | ||
342 | // int x; | ||
343 | // int y; | ||
344 | // float scale; | ||
345 | // { | ||
346 | // ... | ||
347 | // } | ||
348 | // ------- | ||
349 | --parameter-indentation2 | ||
350 | // | ||
351 | // ------- | ||
352 | // if (longlonglonglonglonglonglong | ||
353 | // <tab character>short) | ||
354 | // ------- | ||
355 | // if (longlonglonglonglonglonglong | ||
356 | // short) | ||
357 | // ------- | ||
358 | --no-tabs | ||
359 | // | ||
360 | // ------- | ||
361 | // #if WINDOWS | ||
362 | // #if ZOOL | ||
363 | // #define WHEE GNUNET_NO | ||
364 | // #else | ||
365 | // #define WHEE GNUNET_YES | ||
366 | // #endif | ||
367 | // #endif | ||
368 | // ------- | ||
369 | // #if WINDOWS | ||
370 | // # if ZOOL | ||
371 | // # define WHEE GNUNET_NO | ||
372 | // # else | ||
373 | // # define WHEE GNUNET_YES | ||
374 | // # endif | ||
375 | // #endif | ||
376 | // ------- | ||
377 | --preprocessor-indentation0 | ||
378 | // | ||
379 | // ------- | ||
380 | // int foo (bar) | ||
381 | // { | ||
382 | // if (c) | ||
383 | // goto end; | ||
384 | // if (a > 0) | ||
385 | // { | ||
386 | // begin: | ||
387 | // a = 0; | ||
388 | // if (b != 0) | ||
389 | // goto begin; | ||
390 | // } | ||
391 | // end: | ||
392 | // return 0; | ||
393 | // } | ||
394 | // ------- | ||
395 | // int foo (bar) | ||
396 | // { | ||
397 | // if (c) | ||
398 | // goto end; | ||
399 | // if (a > 0) | ||
400 | // { | ||
401 | // begin: | ||
402 | // a = 0; | ||
403 | // if (b != 0) | ||
404 | // goto begin; | ||
405 | // } | ||
406 | // end: | ||
407 | // return 0; | ||
408 | // } | ||
409 | // ------- | ||
410 | --indent-label0 | ||
411 | // | ||
412 | // ------- | ||
413 | // line-longer-than-80-chars /* some comment, not counted */ | ||
414 | // ------- | ||
415 | // 80-chars-long-line /* some comment, not counted */ | ||
416 | // rest-of-the-line | ||
417 | // ------- | ||
418 | --line-length80 | ||
419 | // | ||
420 | // ------- | ||
421 | // /* comment-line-longer-than-80-chars */ | ||
422 | // ------- | ||
423 | // /* 80-chars-long-comment-line | ||
424 | // rest-of-the-line */ | ||
425 | // ------- | ||
426 | --comment-line-length80 | ||
427 | // | ||
428 | // ------- | ||
429 | // if (mask | ||
430 | // && ((mask[0] == '\0') | ||
431 | // || (mask[1] == '\0' | ||
432 | // && ((mask[0] == '0') || (mask[0] == '*'))))) | ||
433 | // ------- | ||
434 | // if (mask && | ||
435 | // ((mask[0] == '\0') || | ||
436 | // (mask[1] == '\0' && | ||
437 | // ((mask[0] == '0') || (mask[0] == '*'))))) | ||
438 | // ------- | ||
439 | --break-after-boolean-operator | ||
440 | // | ||
441 | // ------- | ||
442 | // if (mask | ||
443 | // && ((mask[0] == '\0') | ||
444 | // || (mask[1] == '\0' && ((mask[0] == '0') || (mask[0] == '*'))))) | ||
445 | // ------- | ||
446 | // if (mask /* this newline is preserved, override it with --ignore-newlines */ | ||
447 | // && ((mask[0] == '\0') | ||
448 | // || (mask[1] == '\0' && | ||
449 | // ((mask[0] == '0') || (mask[0] == '*'))))) | ||
450 | // ------- | ||
451 | // For now just keep ignoring. After everything settles down, we might want to start putting custom newlines where it is appropriate | ||
452 | // --honour-newlines | ||
453 | --ignore-newlines | ||
454 | // | ||
455 | // | ||
456 | // | ||
457 | // Also add a list of typedefed types here, like this: | ||
458 | // -T <typedefedtype1> | ||
459 | // -T <typedefedtype2> | ||
460 | // for this: | ||
461 | // typedef int typedefedtype1; | ||
462 | // typedef char *typedefedtype2; | ||
463 | // The following is obtained by running a Python script i wrote on src subdir: | ||
464 | -T GNUNET_MysqlDataProcessor | ||
465 | -T GNUNET_DHT_MessageReceivedHandler | ||
466 | -T DHTLOG_MESSAGE_TYPES | ||
467 | -T GNUNET_MysqlDataProcessor | ||
468 | -T GNUNET_DV_MessageReceivedHandler | ||
469 | -T p2p_dv_MESSAGE_NeighborInfo | ||
470 | -T p2p_dv_MESSAGE_Data | ||
471 | -T p2p_dv_MESSAGE_Disconnect | ||
472 | -T GNUNET_FS_QueueStart | ||
473 | -T GNUNET_FS_QueueStop | ||
474 | -T SuspendSignalFunction | ||
475 | -T GNUNET_FS_TEST_UriContinuation | ||
476 | -T GNUNET_FS_TreeBlockProcessor | ||
477 | -T GNUNET_FS_TreeProgressCallback | ||
478 | -T GSF_ConnectedPeerIterator | ||
479 | -T GSF_GetMessageCallback | ||
480 | -T GSF_PeerReserveCallback | ||
481 | -T GSF_PendingRequestReplyHandler | ||
482 | -T GSF_PendingRequestIterator | ||
483 | -T GSF_LocalLookupContinuation | ||
484 | -T GNUNET_ARM_Callback | ||
485 | -T GNUNET_TRANSPORT_ATS_AllocationNotification | ||
486 | -T GNUNET_ATS_AddressSuggestionCallback | ||
487 | -T GNUNET_BLOCK_GetKeyFunction | ||
488 | -T GNUNET_CHAT_JoinCallback | ||
489 | -T GNUNET_CHAT_MessageCallback | ||
490 | -T GNUNET_CHAT_MemberListCallback | ||
491 | -T GNUNET_CHAT_MessageConfirmation | ||
492 | -T GNUNET_CHAT_RoomIterator | ||
493 | -T GNUNET_CLIENT_MessageHandler | ||
494 | -T GNUNET_CLIENT_ShutdownTask | ||
495 | -T GNUNET_FileNameCallback | ||
496 | -T GNUNET_CONFIGURATION_Iterator | ||
497 | -T GNUNET_CONFIGURATION_Section_Iterator | ||
498 | -T GNUNET_CONNECTION_AccessCheck | ||
499 | -T GNUNET_CONNECTION_Receiver | ||
500 | -T GNUNET_CONNECTION_TransmitReadyNotify | ||
501 | -T GNUNET_HashCodeIterator | ||
502 | -T GNUNET_CONTAINER_HashMapIterator | ||
503 | -T GNUNET_CONTAINER_HeapCostType | ||
504 | -T GNUNET_CONTAINER_HeapIterator | ||
505 | -T GNUNET_CORE_ConnectEventHandler | ||
506 | -T GNUNET_CORE_PeerStatusEventHandler | ||
507 | -T GNUNET_CORE_DisconnectEventHandler | ||
508 | -T GNUNET_CORE_MessageCallback | ||
509 | -T GNUNET_CORE_StartupCallback | ||
510 | -T GNUNET_CORE_ControlContinuation | ||
511 | -T GNUNET_CORE_PeerConfigurationInfoCallback | ||
512 | -T GNUNET_CRYPTO_HashCompletedCallback | ||
513 | -T GNUNET_DATACACHE_Iterator | ||
514 | -T GNUNET_DATACACHE_DeleteNotifyCallback | ||
515 | -T DiskUtilizationChange | ||
516 | -T PluginDatumProcessor | ||
517 | -T PluginGetRandom | ||
518 | -T GNUNET_DATASTORE_ContinuationWithStatus | ||
519 | -T GNUNET_DATASTORE_DatumProcessor | ||
520 | -T GNUNET_DHT_GetIterator | ||
521 | -T GNUNET_DHT_FindPeerProcessor | ||
522 | -T GNUNET_DHT_ReplyProcessor | ||
523 | -T GNUNET_DISK_DirectoryIteratorCallback | ||
524 | -T GNUNET_FRAGMENT_MessageProcessor | ||
525 | -T GNUNET_DEFRAGMENT_AckProcessor | ||
526 | -T GNUNET_FS_KeywordIterator | ||
527 | -T GNUNET_FS_ProgressCallback | ||
528 | -T GNUNET_FS_FileInformationProcessor | ||
529 | -T GNUNET_FS_DataReader | ||
530 | -T GNUNET_FS_FileProcessor | ||
531 | -T GNUNET_FS_DirectoryScanner | ||
532 | -T GNUNET_FS_PublishContinuation | ||
533 | -T GNUNET_FS_IndexedFileProcessor | ||
534 | -T GNUNET_FS_NamespaceInfoProcessor | ||
535 | -T GNUNET_FS_IdentifierProcessor | ||
536 | -T GNUNET_FS_DirectoryEntryProcessor | ||
537 | -T GNUNET_HELLO_GenerateAddressListCallback | ||
538 | -T GNUNET_HELLO_AddressIterator | ||
539 | -T GNUNET_MESH_MessageCallback | ||
540 | -T GNUNET_MESH_TunnelEndHandler | ||
541 | -T GNUNET_MESH_ApplicationType | ||
542 | -T GNUNET_MESH_TunnelDisconnectHandler | ||
543 | -T GNUNET_MESH_TunnelConnectHandler | ||
544 | -T GNUNET_MESH_MessageCallback | ||
545 | -T GNUNET_MESH_TunnelEndHandler | ||
546 | -T GNUNET_MESH_ApplicationType | ||
547 | -T GNUNET_MESH_TunnelDisconnectHandler | ||
548 | -T GNUNET_MESH_TunnelConnectHandler | ||
549 | -T GNUNET_NAT_AddressCallback | ||
550 | -T GNUNET_NAT_ReversalCallback | ||
551 | -T GNUNET_NAT_TestCallback | ||
552 | -T GNUNET_NSE_Callback | ||
553 | -T GNUNET_OS_NetworkInterfaceProcessor | ||
554 | -T GNUNET_OS_LineProcessor | ||
555 | -T GNUNET_PEERINFO_Processor | ||
556 | -T GNUNET_PEER_Id | ||
557 | -T GNUNET_PLUGIN_Callback | ||
558 | -T GNUNET_PROGRAM_Main | ||
559 | -T GNUNET_PSEUDONYM_Iterator | ||
560 | -T GNUNET_RESOLVER_AddressCallback | ||
561 | -T GNUNET_RESOLVER_HostnameCallback | ||
562 | -T GNUNET_SCHEDULER_TaskIdentifier | ||
563 | -T GNUNET_SCHEDULER_Task | ||
564 | -T GNUNET_SCHEDULER_select | ||
565 | -T GNUNET_SERVER_MessageCallback | ||
566 | -T GNUNET_SERVER_DisconnectCallback | ||
567 | -T GNUNET_SERVER_MessageTokenizerCallback | ||
568 | -T GNUNET_SERVICE_Main | ||
569 | -T GNUNET_SIGNAL_Handler | ||
570 | -T GNUNET_STATISTICS_Iterator | ||
571 | -T GNUNET_STATISTICS_Callback | ||
572 | -T GNUNET_TESTING_NotifyHostkeyCreated | ||
573 | -T GNUNET_TESTING_NotifyDaemonRunning | ||
574 | -T GNUNET_TESTING_NotifyCompletion | ||
575 | -T GNUNET_TESTING_NotifyConnections | ||
576 | -T GNUNET_TESTING_NotifyConnection | ||
577 | -T GNUNET_TESTING_NotifyTopology | ||
578 | -T GNUNET_TESTING_STATISTICS_Iterator | ||
579 | -T GNUNET_TRANSPORT_SessionEnd | ||
580 | -T GNUNET_TRANSPORT_AddressNotification | ||
581 | -T GNUNET_TRANSPORT_TransmitContinuation | ||
582 | -T GNUNET_TRANSPORT_TransmitFunction | ||
583 | -T GNUNET_TRANSPORT_DisconnectFunction | ||
584 | -T GNUNET_TRANSPORT_AddressStringCallback | ||
585 | -T GNUNET_TRANSPORT_AddressPrettyPrinter | ||
586 | -T GNUNET_TRANSPORT_CheckAddress | ||
587 | -T GNUNET_TRANSPORT_AddressToString | ||
588 | -T GNUNET_TRANSPORT_ReceiveCallback | ||
589 | -T GNUNET_TRANSPORT_NotifyConnect | ||
590 | -T GNUNET_TRANSPORT_NotifyDisconnect | ||
591 | -T GNUNET_TRANSPORT_AddressLookUpCallback | ||
592 | -T GNUNET_TRANSPORT_HelloUpdateCallback | ||
593 | -T GNUNET_TRANSPORT_BlacklistCallback | ||
594 | -T sa_family_t | ||
595 | -T SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION | ||
596 | -T PLIBC_SEARCH__compar_fn_t | ||
597 | -T _win_comparison_fn_t | ||
598 | -T PLIBC_SEARCH_ACTION | ||
599 | -T PLIBC_SEARCH_VISIT | ||
600 | -T PLIBC_SEARCH__action_fn_t | ||
601 | -T PLIBC_SEARCH__free_fn_t | ||
602 | -T MESH_TunnelNumber | ||
603 | -T TransmissionContinuation | ||
604 | -T GNUNET_TESTING_ConnectionProcessor | ||
605 | -T SetupContinuation | ||
606 | -T glp_prob | ||
607 | -T glp_iocp | ||
608 | -T glp_smcp | ||
609 | -T GNUNET_TRANSPORT_ATS_AddressNotification | ||
610 | -T GNUNET_TRANSPORT_ATS_ResultCallback | ||
611 | -T GST_BlacklistTestContinuation | ||
612 | -T GST_HelloCallback | ||
613 | -T GST_NeighbourSendContinuation | ||
614 | -T GST_NeighbourIterator | ||
615 | -T GST_ValidationAddressCallback | ||
616 | -T u32 | ||
617 | -T u16 | ||
618 | -T u8 | ||
619 | -T __le32 | ||
620 | -T EmailAddress | ||
621 | -T SMTPMessage | ||
622 | -T GNUNET_TRANSPORT_TESTING_connect_cb | ||
623 | -T ieee80211_mgt_beacon_t | ||
624 | -T ieee80211_mgt_auth_t | ||
625 | -T u64 | ||
626 | -T u32 | ||
627 | -T u16 | ||
628 | -T u8 | ||
629 | -T uLong | ||
630 | -T uLong | ||
631 | -T KBlock_secret_key | ||
632 | -T MyNSGetExecutablePathProto | ||
diff --git a/pre-commit b/pre-commit new file mode 100755 index 00000000..2fc55423 --- /dev/null +++ b/pre-commit | |||
@@ -0,0 +1,8 @@ | |||
1 | #!/bin/sh | ||
2 | find src/ -name "*.c" -exec indent {} \; | ||
3 | find src/ -name "*.c" -exec indent {} \; | ||
4 | if test -x "`which 'dos2unix'`" | ||
5 | then | ||
6 | find src/ -name "*.c" -exec dos2unix {} \; | ||
7 | find src/ -name "*.c" -exec dos2unix {} \; | ||
8 | fi | ||
diff --git a/src/fs/gnunet-fs-gtk-about.c b/src/fs/gnunet-fs-gtk-about.c index 297ce718..4829db47 100644 --- a/src/fs/gnunet-fs-gtk-about.c +++ b/src/fs/gnunet-fs-gtk-about.c | |||
@@ -35,7 +35,7 @@ void | |||
35 | GNUNET_GTK_main_menu_help_about_activate_cb (GtkWidget * dummy, gpointer data) | 35 | GNUNET_GTK_main_menu_help_about_activate_cb (GtkWidget * dummy, gpointer data) |
36 | { | 36 | { |
37 | GNUNET_GTK_display_about ("gnunet_fs_gtk_about_dialog.glade", | 37 | GNUNET_GTK_display_about ("gnunet_fs_gtk_about_dialog.glade", |
38 | "GNUNET_GKT_about_dialog"); | 38 | "GNUNET_GKT_about_dialog"); |
39 | } | 39 | } |
40 | 40 | ||
41 | 41 | ||
diff --git a/src/fs/gnunet-fs-gtk-anonymity_spin_buttons.c b/src/fs/gnunet-fs-gtk-anonymity_spin_buttons.c index a8dd7b04..7a658f3f 100644 --- a/src/fs/gnunet-fs-gtk-anonymity_spin_buttons.c +++ b/src/fs/gnunet-fs-gtk-anonymity_spin_buttons.c | |||
@@ -32,8 +32,7 @@ | |||
32 | * Spin button is changed, update its colour. | 32 | * Spin button is changed, update its colour. |
33 | */ | 33 | */ |
34 | void | 34 | void |
35 | GNUNET_GTK_anonymity_spin_button_value_changed_cb (GtkWidget *w, | 35 | GNUNET_GTK_anonymity_spin_button_value_changed_cb (GtkWidget * w, gpointer data) |
36 | gpointer data) | ||
37 | { | 36 | { |
38 | GtkSpinButton *spin; | 37 | GtkSpinButton *spin; |
39 | gint val; | 38 | gint val; |
@@ -42,31 +41,31 @@ GNUNET_GTK_anonymity_spin_button_value_changed_cb (GtkWidget *w, | |||
42 | 41 | ||
43 | spin = GTK_SPIN_BUTTON (w); | 42 | spin = GTK_SPIN_BUTTON (w); |
44 | if (spin == NULL) | 43 | if (spin == NULL) |
45 | { | 44 | { |
46 | GNUNET_break (0); | 45 | GNUNET_break (0); |
47 | return; | 46 | return; |
48 | } | 47 | } |
49 | val = gtk_spin_button_get_value_as_int (spin); | 48 | val = gtk_spin_button_get_value_as_int (spin); |
50 | if (val == 0) | 49 | if (val == 0) |
50 | { | ||
51 | if ((TRUE == gdk_color_parse ("red", &bcolor)) && | ||
52 | (TRUE == | ||
53 | gdk_colormap_alloc_color (gdk_colormap_get_system (), &bcolor, FALSE, | ||
54 | TRUE)) && | ||
55 | (TRUE == gdk_color_parse ("black", &fcolor)) && | ||
56 | (TRUE == | ||
57 | gdk_colormap_alloc_color (gdk_colormap_get_system (), &fcolor, FALSE, | ||
58 | TRUE))) | ||
51 | { | 59 | { |
52 | if ((TRUE == gdk_color_parse ("red", | 60 | gtk_widget_modify_base (w, GTK_STATE_NORMAL, &bcolor); |
53 | &bcolor)) && | 61 | gtk_widget_modify_text (w, GTK_STATE_NORMAL, &fcolor); |
54 | (TRUE == gdk_colormap_alloc_color (gdk_colormap_get_system (), | ||
55 | &bcolor, FALSE, TRUE)) && | ||
56 | (TRUE == gdk_color_parse ("black", | ||
57 | &fcolor)) && | ||
58 | (TRUE == gdk_colormap_alloc_color (gdk_colormap_get_system (), | ||
59 | &fcolor, FALSE, TRUE))) | ||
60 | { | ||
61 | gtk_widget_modify_base (w, GTK_STATE_NORMAL, &bcolor); | ||
62 | gtk_widget_modify_text (w, GTK_STATE_NORMAL, &fcolor); | ||
63 | } | ||
64 | } | 62 | } |
63 | } | ||
65 | else | 64 | else |
66 | { | 65 | { |
67 | gtk_widget_modify_base (w, GTK_STATE_NORMAL, NULL); | 66 | gtk_widget_modify_base (w, GTK_STATE_NORMAL, NULL); |
68 | gtk_widget_modify_text (w, GTK_STATE_NORMAL, NULL); | 67 | gtk_widget_modify_text (w, GTK_STATE_NORMAL, NULL); |
69 | } | 68 | } |
70 | } | 69 | } |
71 | 70 | ||
72 | 71 | ||
diff --git a/src/fs/gnunet-fs-gtk-common.c b/src/fs/gnunet-fs-gtk-common.c index 55318f01..4f7b0112 100644 --- a/src/fs/gnunet-fs-gtk-common.c +++ b/src/fs/gnunet-fs-gtk-common.c | |||
@@ -40,28 +40,21 @@ | |||
40 | * @param data actual meta-data found | 40 | * @param data actual meta-data found |
41 | * @param data_len number of bytes in data | 41 | * @param data_len number of bytes in data |
42 | * @return 0 to continue (always) | 42 | * @return 0 to continue (always) |
43 | */ | 43 | */ |
44 | int | 44 | int |
45 | GNUNET_FS_GTK_add_meta_data_to_list_store (void *cls, | 45 | GNUNET_FS_GTK_add_meta_data_to_list_store (void *cls, const char *plugin_name, |
46 | const char *plugin_name, | 46 | enum EXTRACTOR_MetaType type, |
47 | enum EXTRACTOR_MetaType type, | 47 | enum EXTRACTOR_MetaFormat format, |
48 | enum EXTRACTOR_MetaFormat format, | 48 | const char *data_mime_type, |
49 | const char *data_mime_type, | 49 | const char *data, size_t data_len) |
50 | const char *data, | ||
51 | size_t data_len) | ||
52 | { | 50 | { |
53 | GtkListStore *ls = GTK_LIST_STORE (cls); | 51 | GtkListStore *ls = GTK_LIST_STORE (cls); |
54 | 52 | ||
55 | if ( (format == EXTRACTOR_METAFORMAT_UTF8) || | 53 | if ((format == EXTRACTOR_METAFORMAT_UTF8) || |
56 | (format == EXTRACTOR_METAFORMAT_C_STRING) ) | 54 | (format == EXTRACTOR_METAFORMAT_C_STRING)) |
57 | gtk_list_store_insert_with_values (ls, | 55 | gtk_list_store_insert_with_values (ls, NULL, G_MAXINT, 0, type, 1, format, |
58 | NULL, | 56 | 2, EXTRACTOR_metatype_to_string (type), |
59 | G_MAXINT, | 57 | 3, data, -1); |
60 | 0, type, | ||
61 | 1, format, | ||
62 | 2, EXTRACTOR_metatype_to_string (type), | ||
63 | 3, data, | ||
64 | -1); | ||
65 | return 0; | 58 | return 0; |
66 | } | 59 | } |
67 | 60 | ||
@@ -70,36 +63,37 @@ GNUNET_FS_GTK_add_meta_data_to_list_store (void *cls, | |||
70 | * Convert the year from the spin button to an expiration | 63 | * Convert the year from the spin button to an expiration |
71 | * time (on midnight, January 1st of that year). | 64 | * time (on midnight, January 1st of that year). |
72 | */ | 65 | */ |
73 | struct GNUNET_TIME_Absolute | 66 | struct GNUNET_TIME_Absolute |
74 | GNUNET_FS_GTK_get_expiration_time (GtkSpinButton *spin) | 67 | GNUNET_FS_GTK_get_expiration_time (GtkSpinButton * spin) |
75 | { | 68 | { |
76 | struct GNUNET_TIME_Absolute ret; | 69 | struct GNUNET_TIME_Absolute ret; |
77 | int year; | 70 | int year; |
78 | 71 | ||
79 | year = gtk_spin_button_get_value_as_int (spin); | 72 | year = gtk_spin_button_get_value_as_int (spin); |
80 | GNUNET_assert (year >= 0); | 73 | GNUNET_assert (year >= 0); |
81 | ret = GNUNET_FS_year_to_time ( (unsigned int) year); | 74 | ret = GNUNET_FS_year_to_time ((unsigned int) year); |
82 | GNUNET_break (GNUNET_TIME_absolute_get ().abs_value < ret.abs_value); | 75 | GNUNET_break (GNUNET_TIME_absolute_get ().abs_value < ret.abs_value); |
83 | return ret; | 76 | return ret; |
84 | } | 77 | } |
85 | 78 | ||
86 | 79 | ||
87 | void | 80 | void |
88 | GNUNET_FS_GTK_setup_expiration_year_adjustment (GtkBuilder *builder) | 81 | GNUNET_FS_GTK_setup_expiration_year_adjustment (GtkBuilder * builder) |
89 | { | 82 | { |
90 | GtkAdjustment *aj; | 83 | GtkAdjustment *aj; |
91 | unsigned int year; | 84 | unsigned int year; |
92 | 85 | ||
93 | year = GNUNET_FS_get_current_year (); | 86 | year = GNUNET_FS_get_current_year (); |
94 | aj = GTK_ADJUSTMENT (gtk_builder_get_object (builder, | 87 | aj = GTK_ADJUSTMENT (gtk_builder_get_object |
95 | "expiration_year_adjustment")); | 88 | (builder, "expiration_year_adjustment")); |
96 | gtk_adjustment_set_value (aj, year + 2); | 89 | gtk_adjustment_set_value (aj, year + 2); |
97 | gtk_adjustment_set_lower (aj, year + 1); | 90 | gtk_adjustment_set_lower (aj, year + 1); |
98 | } | 91 | } |
99 | 92 | ||
100 | 93 | ||
101 | GdkPixbuf * | 94 | GdkPixbuf * |
102 | GNUNET_FS_GTK_get_thumbnail_from_meta_data (const struct GNUNET_CONTAINER_MetaData *meta) | 95 | GNUNET_FS_GTK_get_thumbnail_from_meta_data (const struct |
96 | GNUNET_CONTAINER_MetaData *meta) | ||
103 | { | 97 | { |
104 | GdkPixbuf *pixbuf; | 98 | GdkPixbuf *pixbuf; |
105 | GdkPixbufLoader *loader; | 99 | GdkPixbufLoader *loader; |
@@ -128,55 +122,43 @@ GNUNET_FS_GTK_get_thumbnail_from_meta_data (const struct GNUNET_CONTAINER_MetaDa | |||
128 | */ | 122 | */ |
129 | void | 123 | void |
130 | GNUNET_FS_GTK_mmap_and_scan (const char *filename, | 124 | GNUNET_FS_GTK_mmap_and_scan (const char *filename, |
131 | GNUNET_FS_DirectoryEntryProcessor dep, | 125 | GNUNET_FS_DirectoryEntryProcessor dep, |
132 | void *dep_cls) | 126 | void *dep_cls) |
133 | { | 127 | { |
134 | struct GNUNET_DISK_FileHandle *fh; | 128 | struct GNUNET_DISK_FileHandle *fh; |
135 | struct GNUNET_DISK_MapHandle *mh; | 129 | struct GNUNET_DISK_MapHandle *mh; |
136 | uint64_t fsize; | 130 | uint64_t fsize; |
137 | void * ddata; | 131 | void *ddata; |
138 | 132 | ||
139 | if (GNUNET_OK != | 133 | if (GNUNET_OK != GNUNET_DISK_file_size (filename, &fsize, GNUNET_YES)) |
140 | GNUNET_DISK_file_size (filename, | 134 | { |
141 | &fsize, | 135 | GNUNET_break (0); |
142 | GNUNET_YES)) | 136 | return; |
143 | { | 137 | } |
144 | GNUNET_break (0); | 138 | fh = GNUNET_DISK_file_open (filename, GNUNET_DISK_OPEN_READ, |
145 | return; | 139 | GNUNET_DISK_PERM_NONE); |
146 | } | ||
147 | fh = GNUNET_DISK_file_open (filename, | ||
148 | GNUNET_DISK_OPEN_READ, | ||
149 | GNUNET_DISK_PERM_NONE); | ||
150 | if (fh == NULL) | 140 | if (fh == NULL) |
151 | { | 141 | { |
152 | GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "open", filename); | 142 | GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "open", filename); |
153 | return; | 143 | return; |
154 | } | 144 | } |
155 | ddata = GNUNET_DISK_file_map (fh, | 145 | ddata = |
156 | &mh, | 146 | GNUNET_DISK_file_map (fh, &mh, GNUNET_DISK_MAP_TYPE_READ, (size_t) fsize); |
157 | GNUNET_DISK_MAP_TYPE_READ, | ||
158 | (size_t) fsize); | ||
159 | if (ddata == NULL) | 147 | if (ddata == NULL) |
160 | { | 148 | { |
161 | GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "mmap", filename); | 149 | GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "mmap", filename); |
162 | GNUNET_break (GNUNET_OK == | 150 | GNUNET_break (GNUNET_OK == GNUNET_DISK_file_close (fh)); |
163 | GNUNET_DISK_file_close (fh)); | 151 | return; |
164 | return; | 152 | } |
165 | } | ||
166 | if (GNUNET_SYSERR == | 153 | if (GNUNET_SYSERR == |
167 | GNUNET_FS_directory_list_contents ((size_t) fsize, | 154 | GNUNET_FS_directory_list_contents ((size_t) fsize, ddata, 0, dep, |
168 | ddata, | 155 | dep_cls)) |
169 | 0, | 156 | { |
170 | dep, dep_cls)) | 157 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
171 | { | 158 | _("Selected file `%s' is not a GNUnet directory!\n"), filename); |
172 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 159 | } |
173 | _("Selected file `%s' is not a GNUnet directory!\n"), | 160 | GNUNET_break (GNUNET_OK == GNUNET_DISK_file_unmap (mh)); |
174 | filename); | 161 | GNUNET_break (GNUNET_OK == GNUNET_DISK_file_close (fh)); |
175 | } | ||
176 | GNUNET_break (GNUNET_OK == | ||
177 | GNUNET_DISK_file_unmap (mh)); | ||
178 | GNUNET_break (GNUNET_OK == | ||
179 | GNUNET_DISK_file_close (fh)); | ||
180 | } | 162 | } |
181 | 163 | ||
182 | 164 | ||
diff --git a/src/fs/gnunet-fs-gtk-download.c b/src/fs/gnunet-fs-gtk-download.c index 180a48ec..fe239e5a 100644 --- a/src/fs/gnunet-fs-gtk-download.c +++ b/src/fs/gnunet-fs-gtk-download.c | |||
@@ -40,58 +40,65 @@ GNUNET_FS_GTK_open_download_as_dialog (struct DownloadContext *dc) | |||
40 | struct DownloadEntry *de; | 40 | struct DownloadEntry *de; |
41 | GtkWidget *cb; | 41 | GtkWidget *cb; |
42 | 42 | ||
43 | builder = GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_download_as_dialog.glade"); | 43 | builder = |
44 | GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_download_as_dialog.glade"); | ||
44 | if (builder == NULL) | 45 | if (builder == NULL) |
45 | { | 46 | { |
46 | if (dc->rr != NULL) | 47 | if (dc->rr != NULL) |
47 | gtk_tree_row_reference_free (dc->rr); | 48 | gtk_tree_row_reference_free (dc->rr); |
48 | GNUNET_free_non_null (dc->mime); | 49 | GNUNET_free_non_null (dc->mime); |
49 | GNUNET_free_non_null (dc->filename); | 50 | GNUNET_free_non_null (dc->filename); |
50 | GNUNET_FS_uri_destroy (dc->uri); | 51 | GNUNET_FS_uri_destroy (dc->uri); |
51 | GNUNET_free (dc); | 52 | GNUNET_free (dc); |
52 | return; | 53 | return; |
53 | } | 54 | } |
54 | cb = GTK_WIDGET (gtk_builder_get_object (builder, | 55 | cb = GTK_WIDGET (gtk_builder_get_object |
55 | "GNUNET_GTK_save_as_recursive_check_button")); | 56 | (builder, "GNUNET_GTK_save_as_recursive_check_button")); |
56 | if (GNUNET_FS_meta_data_test_for_directory (dc->meta)) | 57 | if (GNUNET_FS_meta_data_test_for_directory (dc->meta)) |
57 | gtk_widget_set_sensitive (cb, TRUE); | 58 | gtk_widget_set_sensitive (cb, TRUE); |
58 | ad = GTK_WIDGET (gtk_builder_get_object (builder, | 59 | ad = GTK_WIDGET (gtk_builder_get_object |
59 | "GNUNET_GTK_save_as_dialog")); | 60 | (builder, "GNUNET_GTK_save_as_dialog")); |
60 | if (dc->filename != NULL) | 61 | if (dc->filename != NULL) |
62 | { | ||
63 | char buf[1024]; | ||
64 | |||
65 | if (NULL != getcwd (buf, sizeof (buf))) | ||
61 | { | 66 | { |
62 | char buf[1024]; | 67 | if (strlen (buf) + strlen (dc->filename) + 2 < sizeof (buf)) |
63 | if (NULL != getcwd (buf, sizeof(buf))) | 68 | { |
64 | { | 69 | strcat (buf, DIR_SEPARATOR_STR); |
65 | if (strlen (buf) + strlen (dc->filename) + 2 < sizeof(buf)) | 70 | strcat (buf, dc->filename); |
66 | { | 71 | } |
67 | strcat (buf, DIR_SEPARATOR_STR); | 72 | gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (ad), buf); |
68 | strcat (buf, dc->filename); | ||
69 | } | ||
70 | gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (ad), | ||
71 | buf); | ||
72 | } | ||
73 | } | 73 | } |
74 | } | ||
74 | if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad))) | 75 | if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad))) |
75 | { | 76 | { |
76 | gtk_widget_destroy (ad); | 77 | gtk_widget_destroy (ad); |
77 | g_object_unref (G_OBJECT (builder)); | 78 | g_object_unref (G_OBJECT (builder)); |
78 | if (dc->rr != NULL) | 79 | if (dc->rr != NULL) |
79 | gtk_tree_row_reference_free (dc->rr); | 80 | gtk_tree_row_reference_free (dc->rr); |
80 | GNUNET_free_non_null (dc->mime); | 81 | GNUNET_free_non_null (dc->mime); |
81 | GNUNET_free_non_null (dc->filename); | 82 | GNUNET_free_non_null (dc->filename); |
82 | GNUNET_FS_uri_destroy (dc->uri); | 83 | GNUNET_FS_uri_destroy (dc->uri); |
83 | GNUNET_free (dc); | 84 | GNUNET_free (dc); |
84 | return; | 85 | return; |
85 | } | 86 | } |
86 | GNUNET_free_non_null (dc->filename); | 87 | GNUNET_free_non_null (dc->filename); |
87 | dc->filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(ad)); | 88 | dc->filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (ad)); |
88 | dc->is_recursive = (TRUE == gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cb))) ? GNUNET_YES : GNUNET_NO; | 89 | dc->is_recursive = |
90 | (TRUE == | ||
91 | gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cb))) ? GNUNET_YES : | ||
92 | GNUNET_NO; | ||
89 | fs = GNUNET_FS_GTK_get_fs_handle (); | 93 | fs = GNUNET_FS_GTK_get_fs_handle (); |
90 | opt = GNUNET_FS_DOWNLOAD_OPTION_NONE; | 94 | opt = GNUNET_FS_DOWNLOAD_OPTION_NONE; |
91 | if (dc->is_recursive) | 95 | if (dc->is_recursive) |
92 | opt |= GNUNET_FS_DOWNLOAD_OPTION_RECURSIVE; | 96 | opt |= GNUNET_FS_DOWNLOAD_OPTION_RECURSIVE; |
93 | anonymity = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 97 | anonymity = |
94 | "GNUNET_GTK_save_as_dialog_anonymity_spin_button"))); | 98 | gtk_spin_button_get_value (GTK_SPIN_BUTTON |
99 | (gtk_builder_get_object | ||
100 | (builder, | ||
101 | "GNUNET_GTK_save_as_dialog_anonymity_spin_button"))); | ||
95 | len = GNUNET_FS_uri_chk_get_file_size (dc->uri); | 102 | len = GNUNET_FS_uri_chk_get_file_size (dc->uri); |
96 | gtk_widget_destroy (ad); | 103 | gtk_widget_destroy (ad); |
97 | g_object_unref (G_OBJECT (builder)); | 104 | g_object_unref (G_OBJECT (builder)); |
@@ -99,38 +106,29 @@ GNUNET_FS_GTK_open_download_as_dialog (struct DownloadContext *dc) | |||
99 | de->uri = dc->uri; | 106 | de->uri = dc->uri; |
100 | de->meta = dc->meta; | 107 | de->meta = dc->meta; |
101 | if (dc->rr != NULL) | 108 | if (dc->rr != NULL) |
102 | { | 109 | { |
103 | de->rr = dc->rr; | 110 | de->rr = dc->rr; |
104 | de->ts = GTK_TREE_STORE (gtk_tree_row_reference_get_model (dc->rr)); | 111 | de->ts = GTK_TREE_STORE (gtk_tree_row_reference_get_model (dc->rr)); |
105 | } | 112 | } |
106 | if (dc->sr != NULL) | 113 | if (dc->sr != NULL) |
107 | { | 114 | { |
108 | GNUNET_break (NULL != | 115 | GNUNET_break (NULL != |
109 | GNUNET_FS_download_start_from_search (fs, | 116 | GNUNET_FS_download_start_from_search (fs, dc->sr, |
110 | dc->sr, | 117 | dc->filename, |
111 | dc->filename, | 118 | NULL /* tempname */ , |
112 | NULL /* tempname */, | 119 | 0 /* offset */ , |
113 | 0 /* offset */, | 120 | len, anonymity, opt, |
114 | len, | 121 | de)); |
115 | anonymity, | 122 | } |
116 | opt, | ||
117 | de)); | ||
118 | } | ||
119 | else | 123 | else |
120 | { | 124 | { |
121 | GNUNET_break (NULL != | 125 | GNUNET_break (NULL != |
122 | GNUNET_FS_download_start (fs, | 126 | GNUNET_FS_download_start (fs, dc->uri, NULL /* meta */ , |
123 | dc->uri, | 127 | dc->filename, NULL /* tempname */ , |
124 | NULL /* meta */, | 128 | 0 /* offset */ , |
125 | dc->filename, | 129 | len, anonymity, opt, de, |
126 | NULL /* tempname */, | 130 | NULL /* parent download ctx */ )); |
127 | 0 /* offset */, | 131 | } |
128 | len, | ||
129 | anonymity, | ||
130 | opt, | ||
131 | de, | ||
132 | NULL /* parent download ctx */)); | ||
133 | } | ||
134 | GNUNET_free (dc); | 132 | GNUNET_free (dc); |
135 | } | 133 | } |
136 | 134 | ||
diff --git a/src/fs/gnunet-fs-gtk-edit_publish_dialog.c b/src/fs/gnunet-fs-gtk-edit_publish_dialog.c index 3e960cf4..e6cbd105 100644 --- a/src/fs/gnunet-fs-gtk-edit_publish_dialog.c +++ b/src/fs/gnunet-fs-gtk-edit_publish_dialog.c | |||
@@ -55,16 +55,16 @@ GNUNET_GTK_edit_file_information_keyword_list_del_button_clicked_cb () | |||
55 | GtkTreeModel *tm; | 55 | GtkTreeModel *tm; |
56 | GtkTreeIter iter; | 56 | GtkTreeIter iter; |
57 | 57 | ||
58 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 58 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
59 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | 59 | (builder, |
60 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | ||
60 | sel = gtk_tree_view_get_selection (tv); | 61 | sel = gtk_tree_view_get_selection (tv); |
61 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) | 62 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) |
62 | { | 63 | { |
63 | GNUNET_break (0); | 64 | GNUNET_break (0); |
64 | return; | 65 | return; |
65 | } | 66 | } |
66 | gtk_list_store_remove (GTK_LIST_STORE (tm), | 67 | gtk_list_store_remove (GTK_LIST_STORE (tm), &iter); |
67 | &iter); | ||
68 | } | 68 | } |
69 | 69 | ||
70 | void | 70 | void |
@@ -75,10 +75,11 @@ GNUNET_GTK_edit_file_information_keyword_list_add_button_clicked_cb () | |||
75 | GtkListStore *ls; | 75 | GtkListStore *ls; |
76 | GtkTreeIter iter; | 76 | GtkTreeIter iter; |
77 | 77 | ||
78 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | 78 | ls = GTK_LIST_STORE (gtk_builder_get_object |
79 | "GNUNET_GTK_keyword_list_store")); | 79 | (builder, "GNUNET_GTK_keyword_list_store")); |
80 | entry = GTK_ENTRY (gtk_builder_get_object (builder, | 80 | entry = |
81 | "GNUNET_GTK_edit_file_information_keyword_entry")); | 81 | GTK_ENTRY (gtk_builder_get_object |
82 | (builder, "GNUNET_GTK_edit_file_information_keyword_entry")); | ||
82 | keyword = gtk_entry_get_text (entry); | 83 | keyword = gtk_entry_get_text (entry); |
83 | if (strlen (keyword) > 0) | 84 | if (strlen (keyword) > 0) |
84 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, -1); | 85 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, -1); |
@@ -93,78 +94,92 @@ GNUNET_GTK_edit_file_information_keyword_entry_changed_cb () | |||
93 | GtkEntry *entry; | 94 | GtkEntry *entry; |
94 | GtkWidget *button; | 95 | GtkWidget *button; |
95 | 96 | ||
96 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 97 | button = |
97 | "GNUNET_GTK_edit_file_information_keyword_list_add_button")); | 98 | GTK_WIDGET (gtk_builder_get_object |
98 | entry = GTK_ENTRY (gtk_builder_get_object (builder, | 99 | (builder, |
99 | "GNUNET_GTK_edit_file_information_keyword_entry")); | 100 | "GNUNET_GTK_edit_file_information_keyword_list_add_button")); |
101 | entry = | ||
102 | GTK_ENTRY (gtk_builder_get_object | ||
103 | (builder, "GNUNET_GTK_edit_file_information_keyword_entry")); | ||
100 | keyword = gtk_entry_get_text (entry); | 104 | keyword = gtk_entry_get_text (entry); |
101 | gtk_widget_set_sensitive (button, | 105 | gtk_widget_set_sensitive (button, (strlen (keyword) > 0) ? TRUE : FALSE); |
102 | (strlen (keyword) > 0) ? TRUE : FALSE); | ||
103 | } | 106 | } |
104 | 107 | ||
105 | 108 | ||
106 | static void | 109 | static void |
107 | metadata_selection_changed_cb (GtkTreeSelection *ts, | 110 | metadata_selection_changed_cb (GtkTreeSelection * ts, gpointer user_data) |
108 | gpointer user_data) | ||
109 | { | 111 | { |
110 | GtkTreeView *tv; | 112 | GtkTreeView *tv; |
111 | GtkTreeSelection *sel; | 113 | GtkTreeSelection *sel; |
112 | GtkWidget *button; | 114 | GtkWidget *button; |
113 | 115 | ||
114 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 116 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
115 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | 117 | (builder, |
118 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | ||
116 | sel = gtk_tree_view_get_selection (tv); | 119 | sel = gtk_tree_view_get_selection (tv); |
117 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 120 | button = |
118 | "GNUNET_GTK_edit_file_information_metadata_delete_button")); | 121 | GTK_WIDGET (gtk_builder_get_object |
122 | (builder, | ||
123 | "GNUNET_GTK_edit_file_information_metadata_delete_button")); | ||
119 | gtk_widget_set_sensitive (button, | 124 | gtk_widget_set_sensitive (button, |
120 | gtk_tree_selection_get_selected (sel, NULL, NULL)); | 125 | gtk_tree_selection_get_selected (sel, NULL, NULL)); |
121 | } | 126 | } |
122 | 127 | ||
123 | 128 | ||
124 | static void | 129 | static void |
125 | keyword_selection_changed_cb (GtkTreeSelection *ts, | 130 | keyword_selection_changed_cb (GtkTreeSelection * ts, gpointer user_data) |
126 | gpointer user_data) | ||
127 | { | 131 | { |
128 | GtkTreeView *tv; | 132 | GtkTreeView *tv; |
129 | GtkTreeSelection *sel; | 133 | GtkTreeSelection *sel; |
130 | GtkWidget *button; | 134 | GtkWidget *button; |
131 | 135 | ||
132 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 136 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
133 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | 137 | (builder, |
138 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | ||
134 | sel = gtk_tree_view_get_selection (tv); | 139 | sel = gtk_tree_view_get_selection (tv); |
135 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 140 | button = |
136 | "GNUNET_GTK_edit_file_information_keyword_list_del_button")); | 141 | GTK_WIDGET (gtk_builder_get_object |
142 | (builder, | ||
143 | "GNUNET_GTK_edit_file_information_keyword_list_del_button")); | ||
137 | 144 | ||
138 | gtk_widget_set_sensitive (button, | 145 | gtk_widget_set_sensitive (button, |
139 | gtk_tree_selection_get_selected (sel, NULL, NULL)); | 146 | gtk_tree_selection_get_selected (sel, NULL, NULL)); |
140 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 147 | button = |
141 | "GNUNET_GTK_edit_file_information_keyword_list_normalize_button")); | 148 | GTK_WIDGET (gtk_builder_get_object |
149 | (builder, | ||
150 | "GNUNET_GTK_edit_file_information_keyword_list_normalize_button")); | ||
142 | gtk_widget_set_sensitive (button, | 151 | gtk_widget_set_sensitive (button, |
143 | gtk_tree_selection_get_selected (sel, NULL, NULL)); | 152 | gtk_tree_selection_get_selected (sel, NULL, NULL)); |
144 | } | 153 | } |
145 | 154 | ||
146 | 155 | ||
147 | void | 156 | void |
148 | GNUNET_GTK_edit_file_information_metadata_value_entry_changed_cb () | 157 | GNUNET_GTK_edit_file_information_metadata_value_entry_changed_cb () |
149 | { | 158 | { |
150 | GtkTreeView *tv; | 159 | GtkTreeView *tv; |
151 | GtkTreeSelection *sel; | 160 | GtkTreeSelection *sel; |
152 | const char *value; | 161 | const char *value; |
153 | GtkEntry *entry; | 162 | GtkEntry *entry; |
154 | GtkWidget *button; | 163 | GtkWidget *button; |
155 | 164 | ||
156 | entry = GTK_ENTRY (gtk_builder_get_object (builder, | 165 | entry = |
157 | "GNUNET_GTK_edit_file_information_metadata_value_entry")); | 166 | GTK_ENTRY (gtk_builder_get_object |
167 | (builder, | ||
168 | "GNUNET_GTK_edit_file_information_metadata_value_entry")); | ||
158 | value = gtk_entry_get_text (entry); | 169 | value = gtk_entry_get_text (entry); |
159 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 170 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
160 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | 171 | (builder, |
172 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | ||
161 | sel = gtk_tree_view_get_selection (tv); | 173 | sel = gtk_tree_view_get_selection (tv); |
162 | button = GTK_WIDGET (gtk_builder_get_object (builder, | 174 | button = |
163 | "GNUNET_GTK_edit_file_information_metadata_add_button")); | 175 | GTK_WIDGET (gtk_builder_get_object |
176 | (builder, | ||
177 | "GNUNET_GTK_edit_file_information_metadata_add_button")); | ||
164 | gtk_widget_set_sensitive (button, | 178 | gtk_widget_set_sensitive (button, |
165 | (strlen (value) > 0) | 179 | (strlen (value) > |
166 | ? gtk_tree_selection_get_selected (sel, NULL, NULL) | 180 | 0) ? gtk_tree_selection_get_selected (sel, NULL, |
167 | : FALSE); | 181 | NULL) : |
182 | FALSE); | ||
168 | } | 183 | } |
169 | 184 | ||
170 | 185 | ||
@@ -175,39 +190,39 @@ GNUNET_GTK_edit_file_information_keyword_entry_activate_cb () | |||
175 | } | 190 | } |
176 | 191 | ||
177 | 192 | ||
178 | void | 193 | void GNUNET_GTK_edit_file_information_metadata_preview_file_chooser_button_file_set_cb (GtkFileChooserButton * widget, gpointer user_data) |
179 | GNUNET_GTK_edit_file_information_metadata_preview_file_chooser_button_file_set_cb (GtkFileChooserButton *widget, | ||
180 | gpointer user_data) | ||
181 | { | 194 | { |
182 | gchar *fn; | 195 | gchar *fn; |
183 | GtkImage *image; | 196 | GtkImage *image; |
184 | 197 | ||
185 | fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget)); | 198 | fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget)); |
186 | image = GTK_IMAGE (gtk_builder_get_object (builder, | 199 | image = |
187 | "GNUNET_GTK_edit_file_information_metadata_preview_image")); | 200 | GTK_IMAGE (gtk_builder_get_object |
201 | (builder, | ||
202 | "GNUNET_GTK_edit_file_information_metadata_preview_image")); | ||
188 | gtk_image_set_from_file (image, fn); | 203 | gtk_image_set_from_file (image, fn); |
189 | preview_changed = GNUNET_YES; | 204 | preview_changed = GNUNET_YES; |
190 | } | 205 | } |
191 | 206 | ||
192 | 207 | ||
193 | void | 208 | void |
194 | GNUNET_GTK_edit_file_information_metadata_delete_button_clicked_cb() | 209 | GNUNET_GTK_edit_file_information_metadata_delete_button_clicked_cb () |
195 | { | 210 | { |
196 | GtkTreeView *tv; | 211 | GtkTreeView *tv; |
197 | GtkTreeSelection *sel; | 212 | GtkTreeSelection *sel; |
198 | GtkTreeModel *tm; | 213 | GtkTreeModel *tm; |
199 | GtkTreeIter iter; | 214 | GtkTreeIter iter; |
200 | 215 | ||
201 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 216 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
202 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | 217 | (builder, |
218 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | ||
203 | sel = gtk_tree_view_get_selection (tv); | 219 | sel = gtk_tree_view_get_selection (tv); |
204 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) | 220 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) |
205 | { | 221 | { |
206 | GNUNET_break (0); | 222 | GNUNET_break (0); |
207 | return; | 223 | return; |
208 | } | 224 | } |
209 | gtk_list_store_remove (GTK_LIST_STORE (tm), | 225 | gtk_list_store_remove (GTK_LIST_STORE (tm), &iter); |
210 | &iter); | ||
211 | } | 226 | } |
212 | 227 | ||
213 | 228 | ||
@@ -227,70 +242,63 @@ GNUNET_GTK_edit_file_information_metadata_add_button_clicked_cb () | |||
227 | size_t slen; | 242 | size_t slen; |
228 | char *pos; | 243 | char *pos; |
229 | 244 | ||
230 | entry = GTK_ENTRY (gtk_builder_get_object (builder, | 245 | entry = |
231 | "GNUNET_GTK_edit_file_information_metadata_value_entry")); | 246 | GTK_ENTRY (gtk_builder_get_object |
247 | (builder, | ||
248 | "GNUNET_GTK_edit_file_information_metadata_value_entry")); | ||
232 | value = gtk_entry_get_text (entry); | 249 | value = gtk_entry_get_text (entry); |
233 | if ((value == NULL) || (strlen (value) == 0)) | 250 | if ((value == NULL) || (strlen (value) == 0)) |
234 | { | 251 | { |
235 | GNUNET_break (0); | 252 | GNUNET_break (0); |
236 | return; | 253 | return; |
237 | } | 254 | } |
238 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 255 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
239 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | 256 | (builder, |
257 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | ||
240 | tm = gtk_tree_view_get_model (tv); | 258 | tm = gtk_tree_view_get_model (tv); |
241 | sel = gtk_tree_view_get_selection (tv); | 259 | sel = gtk_tree_view_get_selection (tv); |
242 | if (TRUE != gtk_tree_selection_get_selected (sel, | 260 | if (TRUE != gtk_tree_selection_get_selected (sel, &tm, &iter)) |
243 | &tm, | 261 | { |
244 | &iter)) | 262 | GNUNET_break (0); |
263 | return; | ||
264 | } | ||
265 | gtk_tree_model_get (tm, &iter, 1, &type, -1); | ||
266 | ls = GTK_LIST_STORE (gtk_builder_get_object | ||
267 | (builder, "GNUNET_GTK_meta_data_list_store")); | ||
268 | if ((type == EXTRACTOR_METATYPE_FILENAME) && | ||
269 | (value[strlen (value) - 1] != '/') && (is_directory)) | ||
270 | { | ||
271 | GNUNET_asprintf (&avalue, "%s/", value); | ||
272 | /* if user typed '\' instead of '/', change it! */ | ||
273 | slen = strlen (avalue); | ||
274 | while ((slen > 1) && (avalue[slen - 2] == '\\')) | ||
245 | { | 275 | { |
246 | GNUNET_break (0); | 276 | avalue[slen - 2] = '/'; |
247 | return; | 277 | avalue[slen - 1] = '\0'; |
248 | } | 278 | slen--; |
249 | gtk_tree_model_get (tm, | ||
250 | &iter, | ||
251 | 1, &type, -1); | ||
252 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | ||
253 | "GNUNET_GTK_meta_data_list_store")); | ||
254 | if ( (type == EXTRACTOR_METATYPE_FILENAME) && | ||
255 | (value[strlen(value)-1] != '/') && | ||
256 | (is_directory) ) | ||
257 | { | ||
258 | GNUNET_asprintf (&avalue, | ||
259 | "%s/", | ||
260 | value); | ||
261 | /* if user typed '\' instead of '/', change it! */ | ||
262 | slen = strlen (avalue); | ||
263 | while ( (slen > 1) && | ||
264 | (avalue[slen-2] == '\\') ) | ||
265 | { | ||
266 | avalue[slen-2] = '/'; | ||
267 | avalue[slen-1] = '\0'; | ||
268 | slen--; | ||
269 | } | ||
270 | while (NULL != (pos = strstr (avalue, "\\"))) | ||
271 | *pos = '/'; | ||
272 | /* remove '../' everywhere */ | ||
273 | while (NULL != (pos = strstr (avalue, "../"))) | ||
274 | { | ||
275 | pos[0] = '_'; | ||
276 | pos[1] = '_'; | ||
277 | pos[2] = '_'; | ||
278 | } | ||
279 | ivalue = avalue; | ||
280 | } | 279 | } |
281 | else | 280 | while (NULL != (pos = strstr (avalue, "\\"))) |
281 | *pos = '/'; | ||
282 | /* remove '../' everywhere */ | ||
283 | while (NULL != (pos = strstr (avalue, "../"))) | ||
282 | { | 284 | { |
283 | ivalue = value; | 285 | pos[0] = '_'; |
284 | avalue = NULL; | 286 | pos[1] = '_'; |
287 | pos[2] = '_'; | ||
285 | } | 288 | } |
286 | 289 | ivalue = avalue; | |
287 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, | 290 | } |
288 | 0, type, | 291 | else |
289 | 1, (guint) EXTRACTOR_METAFORMAT_UTF8, | 292 | { |
290 | 2, EXTRACTOR_metatype_to_string (type), | 293 | ivalue = value; |
291 | 3, ivalue, | 294 | avalue = NULL; |
292 | -1); | 295 | } |
293 | GNUNET_free_non_null (avalue); | 296 | |
297 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, type, 1, | ||
298 | (guint) EXTRACTOR_METAFORMAT_UTF8, 2, | ||
299 | EXTRACTOR_metatype_to_string (type), 3, | ||
300 | ivalue, -1); | ||
301 | GNUNET_free_non_null (avalue); | ||
294 | gtk_entry_set_text (GTK_ENTRY (entry), ""); | 302 | gtk_entry_set_text (GTK_ENTRY (entry), ""); |
295 | } | 303 | } |
296 | 304 | ||
@@ -304,19 +312,14 @@ GNUNET_GTK_edit_file_information_metadata_add_button_clicked_cb () | |||
304 | * @return GNUNET_OK to continue to iterate | 312 | * @return GNUNET_OK to continue to iterate |
305 | */ | 313 | */ |
306 | static int | 314 | static int |
307 | add_keyword (void *cls, | 315 | add_keyword (void *cls, const char *keyword, int is_mandatory) |
308 | const char *keyword, | ||
309 | int is_mandatory) | ||
310 | { | 316 | { |
311 | GtkListStore *ls; | 317 | GtkListStore *ls; |
312 | GtkTreeIter iter; | 318 | GtkTreeIter iter; |
313 | 319 | ||
314 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | 320 | ls = GTK_LIST_STORE (gtk_builder_get_object |
315 | "GNUNET_GTK_keyword_list_store")); | 321 | (builder, "GNUNET_GTK_keyword_list_store")); |
316 | gtk_list_store_insert_with_values (ls, &iter, | 322 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, keyword, -1); |
317 | G_MAXINT, | ||
318 | 0, keyword, | ||
319 | -1); | ||
320 | return GNUNET_OK; | 323 | return GNUNET_OK; |
321 | } | 324 | } |
322 | 325 | ||
@@ -337,40 +340,33 @@ add_keyword (void *cls, | |||
337 | * @param data actual meta-data found | 340 | * @param data actual meta-data found |
338 | * @param data_len number of bytes in data | 341 | * @param data_len number of bytes in data |
339 | * @return 0 to continue extracting | 342 | * @return 0 to continue extracting |
340 | */ | 343 | */ |
341 | static int | 344 | static int |
342 | add_meta_item (void *cls, | 345 | add_meta_item (void *cls, const char *plugin_name, enum EXTRACTOR_MetaType type, |
343 | const char *plugin_name, | 346 | enum EXTRACTOR_MetaFormat format, const char *data_mime_type, |
344 | enum EXTRACTOR_MetaType type, | 347 | const char *data, size_t data_len) |
345 | enum EXTRACTOR_MetaFormat format, | ||
346 | const char *data_mime_type, | ||
347 | const char *data, | ||
348 | size_t data_len) | ||
349 | { | 348 | { |
350 | GtkListStore *ls; | 349 | GtkListStore *ls; |
351 | GtkTreeIter iter; | 350 | GtkTreeIter iter; |
352 | 351 | ||
353 | switch (format) | 352 | switch (format) |
354 | { | 353 | { |
355 | case EXTRACTOR_METAFORMAT_UTF8: | 354 | case EXTRACTOR_METAFORMAT_UTF8: |
356 | case EXTRACTOR_METAFORMAT_C_STRING: | 355 | case EXTRACTOR_METAFORMAT_C_STRING: |
357 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | 356 | ls = GTK_LIST_STORE (gtk_builder_get_object |
358 | "GNUNET_GTK_meta_data_list_store")); | 357 | (builder, "GNUNET_GTK_meta_data_list_store")); |
359 | gtk_list_store_insert_with_values (ls, &iter, | 358 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, (guint) type, 1, |
360 | G_MAXINT, | 359 | (guint) format, 2, |
361 | 0, (guint) type, | 360 | EXTRACTOR_metatype_to_string (type), 3, |
362 | 1, (guint) format, | 361 | data, -1); |
363 | 2, EXTRACTOR_metatype_to_string (type), | 362 | break; |
364 | 3, data, | 363 | case EXTRACTOR_METAFORMAT_UNKNOWN: |
365 | -1); | 364 | break; |
366 | break; | 365 | case EXTRACTOR_METAFORMAT_BINARY: |
367 | case EXTRACTOR_METAFORMAT_UNKNOWN: | 366 | break; |
368 | break; | 367 | default: |
369 | case EXTRACTOR_METAFORMAT_BINARY: | 368 | GNUNET_break (0); |
370 | break; | 369 | } |
371 | default: | ||
372 | GNUNET_break (0); | ||
373 | } | ||
374 | return 0; | 370 | return 0; |
375 | } | 371 | } |
376 | 372 | ||
@@ -388,15 +384,13 @@ add_meta_item (void *cls, | |||
388 | * @param client_info pointer to client context set upon creation (can be modified) | 384 | * @param client_info pointer to client context set upon creation (can be modified) |
389 | * @return GNUNET_SYSERR (aborts after first call) | 385 | * @return GNUNET_SYSERR (aborts after first call) |
390 | */ | 386 | */ |
391 | static int | 387 | static int |
392 | file_information_extract (void *cls, | 388 | file_information_extract (void *cls, struct GNUNET_FS_FileInformation *fi, |
393 | struct GNUNET_FS_FileInformation *fi, | 389 | uint64_t length, |
394 | uint64_t length, | 390 | struct GNUNET_CONTAINER_MetaData *meta, |
395 | struct GNUNET_CONTAINER_MetaData *meta, | 391 | struct GNUNET_FS_Uri **uri, |
396 | struct GNUNET_FS_Uri **uri, | 392 | struct GNUNET_FS_BlockOptions *bo, int *do_index, |
397 | struct GNUNET_FS_BlockOptions *bo, | 393 | void **client_info) |
398 | int *do_index, | ||
399 | void **client_info) | ||
400 | { | 394 | { |
401 | GtkImage *img; | 395 | GtkImage *img; |
402 | GdkPixbuf *pixbuf; | 396 | GdkPixbuf *pixbuf; |
@@ -407,38 +401,45 @@ file_information_extract (void *cls, | |||
407 | if (NULL != *uri) | 401 | if (NULL != *uri) |
408 | GNUNET_FS_uri_ksk_get_keywords (*uri, &add_keyword, NULL); | 402 | GNUNET_FS_uri_ksk_get_keywords (*uri, &add_keyword, NULL); |
409 | if (NULL != meta) | 403 | if (NULL != meta) |
404 | { | ||
405 | GNUNET_CONTAINER_meta_data_iterate (meta, &add_meta_item, NULL); | ||
406 | pixbuf = GNUNET_FS_GTK_get_thumbnail_from_meta_data (meta); | ||
407 | if (pixbuf != NULL) | ||
410 | { | 408 | { |
411 | GNUNET_CONTAINER_meta_data_iterate (meta, | 409 | img = |
412 | &add_meta_item, | 410 | GTK_IMAGE (gtk_builder_get_object |
413 | NULL); | 411 | (builder, |
414 | pixbuf = GNUNET_FS_GTK_get_thumbnail_from_meta_data (meta); | 412 | "GNUNET_GTK_edit_file_information_metadata_preview_image")); |
415 | if (pixbuf != NULL) | 413 | gtk_image_set_from_pixbuf (img, pixbuf); |
416 | { | ||
417 | img = GTK_IMAGE (gtk_builder_get_object (builder, | ||
418 | "GNUNET_GTK_edit_file_information_metadata_preview_image")); | ||
419 | gtk_image_set_from_pixbuf (img, | ||
420 | pixbuf); | ||
421 | } | ||
422 | } | 414 | } |
423 | tp = bo->expiration_time.abs_value / 1000; /* ms to seconds */ | 415 | } |
416 | tp = bo->expiration_time.abs_value / 1000; /* ms to seconds */ | ||
424 | t = gmtime (&tp); | 417 | t = gmtime (&tp); |
425 | if (t == NULL) | 418 | if (t == NULL) |
426 | year = 0; | 419 | year = 0; |
427 | else | 420 | else |
428 | year = t->tm_year + 1900; | 421 | year = t->tm_year + 1900; |
429 | gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 422 | gtk_spin_button_set_value (GTK_SPIN_BUTTON |
430 | "GNUNET_GTK_edit_file_information_expiration_year_spin_button")), | 423 | (gtk_builder_get_object |
431 | year); | 424 | (builder, |
432 | gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 425 | "GNUNET_GTK_edit_file_information_expiration_year_spin_button")), |
433 | "GNUNET_GTK_edit_file_information_anonymity_spin_button")), | 426 | year); |
434 | bo->anonymity_level); | 427 | gtk_spin_button_set_value (GTK_SPIN_BUTTON |
435 | gtk_spin_button_set_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 428 | (gtk_builder_get_object |
436 | "GNUNET_GTK_edit_file_information_priority_spin_button")), | 429 | (builder, |
437 | bo->content_priority); | 430 | "GNUNET_GTK_edit_file_information_anonymity_spin_button")), |
438 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, | 431 | bo->anonymity_level); |
439 | "GNUNET_GTK_edit_file_information_index_check_button")), | 432 | gtk_spin_button_set_value (GTK_SPIN_BUTTON |
440 | *do_index); | 433 | (gtk_builder_get_object |
441 | return GNUNET_SYSERR; /* only visit top-level item */ | 434 | (builder, |
435 | "GNUNET_GTK_edit_file_information_priority_spin_button")), | ||
436 | bo->content_priority); | ||
437 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON | ||
438 | (gtk_builder_get_object | ||
439 | (builder, | ||
440 | "GNUNET_GTK_edit_file_information_index_check_button")), | ||
441 | *do_index); | ||
442 | return GNUNET_SYSERR; /* only visit top-level item */ | ||
442 | } | 443 | } |
443 | 444 | ||
444 | 445 | ||
@@ -458,70 +459,62 @@ file_information_extract (void *cls, | |||
458 | * @param data actual meta-data found | 459 | * @param data actual meta-data found |
459 | * @param data_len number of bytes in data | 460 | * @param data_len number of bytes in data |
460 | * @return 0 to continue extracting | 461 | * @return 0 to continue extracting |
461 | */ | 462 | */ |
462 | static int | 463 | static int |
463 | preserve_meta_items (void *cls, | 464 | preserve_meta_items (void *cls, const char *plugin_name, |
464 | const char *plugin_name, | 465 | enum EXTRACTOR_MetaType type, |
465 | enum EXTRACTOR_MetaType type, | 466 | enum EXTRACTOR_MetaFormat format, |
466 | enum EXTRACTOR_MetaFormat format, | 467 | const char *data_mime_type, const char *data, |
467 | const char *data_mime_type, | 468 | size_t data_len) |
468 | const char *data, | ||
469 | size_t data_len) | ||
470 | { | 469 | { |
471 | struct GNUNET_CONTAINER_MetaData *md = cls; | 470 | struct GNUNET_CONTAINER_MetaData *md = cls; |
472 | GtkTreeModel *tm; | 471 | GtkTreeModel *tm; |
473 | GtkTreeIter iter; | 472 | GtkTreeIter iter; |
474 | gchar *value; | 473 | gchar *value; |
475 | guint ntype; | 474 | guint ntype; |
476 | guint nformat; | 475 | guint nformat; |
477 | int keep; | 476 | int keep; |
478 | 477 | ||
479 | keep = GNUNET_NO; | 478 | keep = GNUNET_NO; |
480 | switch (format) | 479 | switch (format) |
480 | { | ||
481 | case EXTRACTOR_METAFORMAT_UTF8: | ||
482 | case EXTRACTOR_METAFORMAT_C_STRING: | ||
483 | tm = GTK_TREE_MODEL (gtk_builder_get_object | ||
484 | (builder, "GNUNET_GTK_meta_data_list_store")); | ||
485 | if (TRUE == gtk_tree_model_get_iter_first (tm, &iter)) | ||
481 | { | 486 | { |
482 | case EXTRACTOR_METAFORMAT_UTF8: | 487 | do |
483 | case EXTRACTOR_METAFORMAT_C_STRING: | 488 | { |
484 | tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, | 489 | gtk_tree_model_get (tm, &iter, 0, &ntype, 1, &nformat, 3, &value, -1); |
485 | "GNUNET_GTK_meta_data_list_store")); | 490 | if ((ntype == type) && (nformat == format) && |
486 | if (TRUE == | 491 | (0 == strcmp (value, data))) |
487 | gtk_tree_model_get_iter_first (tm, &iter)) | 492 | { |
488 | { | 493 | gtk_list_store_remove (GTK_LIST_STORE (tm), &iter); |
489 | do | 494 | keep = GNUNET_YES; |
490 | { | 495 | g_free (value); |
491 | gtk_tree_model_get (tm, &iter, | 496 | break; |
492 | 0, &ntype, | 497 | } |
493 | 1, &nformat, | 498 | g_free (value); |
494 | 3, &value, | 499 | } |
495 | -1); | 500 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); |
496 | if ( (ntype == type) && | ||
497 | (nformat == format) && | ||
498 | (0 == strcmp (value, data)) ) | ||
499 | { | ||
500 | gtk_list_store_remove (GTK_LIST_STORE (tm), &iter); | ||
501 | keep = GNUNET_YES; | ||
502 | g_free (value); | ||
503 | break; | ||
504 | } | ||
505 | g_free (value); | ||
506 | } | ||
507 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
508 | } | ||
509 | break; | ||
510 | case EXTRACTOR_METAFORMAT_UNKNOWN: | ||
511 | break; | ||
512 | case EXTRACTOR_METAFORMAT_BINARY: | ||
513 | if (preview_changed == GNUNET_NO) | ||
514 | keep = GNUNET_YES; | ||
515 | break; | ||
516 | default: | ||
517 | GNUNET_break (0); | ||
518 | break; | ||
519 | } | 501 | } |
502 | break; | ||
503 | case EXTRACTOR_METAFORMAT_UNKNOWN: | ||
504 | break; | ||
505 | case EXTRACTOR_METAFORMAT_BINARY: | ||
506 | if (preview_changed == GNUNET_NO) | ||
507 | keep = GNUNET_YES; | ||
508 | break; | ||
509 | default: | ||
510 | GNUNET_break (0); | ||
511 | break; | ||
512 | } | ||
520 | if (GNUNET_YES == keep) | 513 | if (GNUNET_YES == keep) |
521 | GNUNET_break (GNUNET_OK == | 514 | GNUNET_break (GNUNET_OK == |
522 | GNUNET_CONTAINER_meta_data_insert (md, | 515 | GNUNET_CONTAINER_meta_data_insert (md, plugin_name, type, |
523 | plugin_name, type, format, | 516 | format, data_mime_type, |
524 | data_mime_type, data, data_len)); | 517 | data, data_len)); |
525 | return 0; | 518 | return 0; |
526 | } | 519 | } |
527 | 520 | ||
@@ -539,15 +532,13 @@ preserve_meta_items (void *cls, | |||
539 | * @param client_info pointer to client context set upon creation (can be modified) | 532 | * @param client_info pointer to client context set upon creation (can be modified) |
540 | * @return GNUNET_SYSERR (aborts after first call) | 533 | * @return GNUNET_SYSERR (aborts after first call) |
541 | */ | 534 | */ |
542 | static int | 535 | static int |
543 | file_information_update (void *cls, | 536 | file_information_update (void *cls, struct GNUNET_FS_FileInformation *fi, |
544 | struct GNUNET_FS_FileInformation *fi, | 537 | uint64_t length, |
545 | uint64_t length, | 538 | struct GNUNET_CONTAINER_MetaData *meta, |
546 | struct GNUNET_CONTAINER_MetaData *meta, | 539 | struct GNUNET_FS_Uri **uri, |
547 | struct GNUNET_FS_Uri **uri, | 540 | struct GNUNET_FS_BlockOptions *bo, int *do_index, |
548 | struct GNUNET_FS_BlockOptions *bo, | 541 | void **client_info) |
549 | int *do_index, | ||
550 | void **client_info) | ||
551 | { | 542 | { |
552 | char **short_fn = cls; | 543 | char **short_fn = cls; |
553 | struct GNUNET_CONTAINER_MetaData *nm; | 544 | struct GNUNET_CONTAINER_MetaData *nm; |
@@ -556,7 +547,7 @@ file_information_update (void *cls, | |||
556 | struct GNUNET_FS_Uri *nxt; | 547 | struct GNUNET_FS_Uri *nxt; |
557 | struct GNUNET_FS_Uri *mrg; | 548 | struct GNUNET_FS_Uri *mrg; |
558 | gchar *value; | 549 | gchar *value; |
559 | guint ntype; | 550 | guint ntype; |
560 | guint nformat; | 551 | guint nformat; |
561 | GtkSpinButton *sb; | 552 | GtkSpinButton *sb; |
562 | gchar *fn; | 553 | gchar *fn; |
@@ -565,15 +556,25 @@ file_information_update (void *cls, | |||
565 | const char *mime; | 556 | const char *mime; |
566 | GFile *f; | 557 | GFile *f; |
567 | GFileInfo *finfo; | 558 | GFileInfo *finfo; |
568 | 559 | ||
569 | bo->anonymity_level = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 560 | bo->anonymity_level = |
570 | "GNUNET_GTK_edit_file_information_anonymity_spin_button"))); | 561 | gtk_spin_button_get_value (GTK_SPIN_BUTTON |
571 | bo->content_priority = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 562 | (gtk_builder_get_object |
572 | "GNUNET_GTK_edit_file_information_priority_spin_button"))); | 563 | (builder, |
573 | *do_index = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, | 564 | "GNUNET_GTK_edit_file_information_anonymity_spin_button"))); |
574 | "GNUNET_GTK_edit_file_information_index_check_button"))); | 565 | bo->content_priority = |
575 | sb =GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 566 | gtk_spin_button_get_value (GTK_SPIN_BUTTON |
576 | "GNUNET_GTK_edit_file_information_expiration_year_spin_button")); | 567 | (gtk_builder_get_object |
568 | (builder, | ||
569 | "GNUNET_GTK_edit_file_information_priority_spin_button"))); | ||
570 | *do_index = | ||
571 | gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON | ||
572 | (gtk_builder_get_object | ||
573 | (builder, | ||
574 | "GNUNET_GTK_edit_file_information_index_check_button"))); | ||
575 | sb = GTK_SPIN_BUTTON (gtk_builder_get_object | ||
576 | (builder, | ||
577 | "GNUNET_GTK_edit_file_information_expiration_year_spin_button")); | ||
577 | bo->expiration_time = GNUNET_FS_GTK_get_expiration_time (sb); | 578 | bo->expiration_time = GNUNET_FS_GTK_get_expiration_time (sb); |
578 | /* update URI */ | 579 | /* update URI */ |
579 | if (NULL != (*uri)) | 580 | if (NULL != (*uri)) |
@@ -581,95 +582,83 @@ file_information_update (void *cls, | |||
581 | *uri = NULL; | 582 | *uri = NULL; |
582 | nxt = NULL; | 583 | nxt = NULL; |
583 | mrg = NULL; | 584 | mrg = NULL; |
584 | 585 | ||
585 | tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, | 586 | tm = GTK_TREE_MODEL (gtk_builder_get_object |
586 | "GNUNET_GTK_keyword_list_store")); | 587 | (builder, "GNUNET_GTK_keyword_list_store")); |
587 | if (TRUE == | 588 | if (TRUE == gtk_tree_model_get_iter_first (tm, &iter)) |
588 | gtk_tree_model_get_iter_first (tm, &iter)) | 589 | { |
590 | do | ||
589 | { | 591 | { |
590 | do | 592 | gtk_tree_model_get (tm, &iter, 0, &value, -1); |
591 | { | 593 | nxt = GNUNET_FS_uri_ksk_create_from_args (1, (const char **) &value); |
592 | gtk_tree_model_get (tm, &iter, | 594 | mrg = GNUNET_FS_uri_ksk_merge (nxt, *uri); |
593 | 0, &value, | 595 | GNUNET_FS_uri_destroy (nxt); |
594 | -1); | 596 | if (NULL != *uri) |
595 | nxt = GNUNET_FS_uri_ksk_create_from_args (1, (const char**) &value); | 597 | GNUNET_FS_uri_destroy (*uri); |
596 | mrg = GNUNET_FS_uri_ksk_merge (nxt, *uri); | 598 | *uri = mrg; |
597 | GNUNET_FS_uri_destroy (nxt); | 599 | g_free (value); |
598 | if (NULL != *uri) | ||
599 | GNUNET_FS_uri_destroy (*uri); | ||
600 | *uri = mrg; | ||
601 | g_free (value); | ||
602 | } | ||
603 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
604 | } | 600 | } |
601 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
602 | } | ||
605 | 603 | ||
606 | /* update meta */ | 604 | /* update meta */ |
607 | nm = GNUNET_CONTAINER_meta_data_create (); | 605 | nm = GNUNET_CONTAINER_meta_data_create (); |
608 | GNUNET_CONTAINER_meta_data_iterate (meta, | 606 | GNUNET_CONTAINER_meta_data_iterate (meta, &preserve_meta_items, nm); |
609 | &preserve_meta_items, | ||
610 | nm); | ||
611 | 607 | ||
612 | GNUNET_CONTAINER_meta_data_clear (meta); | 608 | GNUNET_CONTAINER_meta_data_clear (meta); |
613 | tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, | 609 | tm = GTK_TREE_MODEL (gtk_builder_get_object |
614 | "GNUNET_GTK_meta_data_list_store")); | 610 | (builder, "GNUNET_GTK_meta_data_list_store")); |
615 | if (TRUE == | 611 | if (TRUE == gtk_tree_model_get_iter_first (tm, &iter)) |
616 | gtk_tree_model_get_iter_first (tm, &iter)) | 612 | { |
613 | do | ||
617 | { | 614 | { |
618 | do | 615 | gtk_tree_model_get (tm, &iter, 0, &ntype, 1, &nformat, 3, &value, -1); |
619 | { | 616 | GNUNET_CONTAINER_meta_data_insert (nm, "<user>", ntype, nformat, |
620 | gtk_tree_model_get (tm, &iter, | 617 | "text/plain", value, |
621 | 0, &ntype, | 618 | strlen (value) + 1); |
622 | 1, &nformat, | 619 | g_free (value); |
623 | 3, &value, | ||
624 | -1); | ||
625 | GNUNET_CONTAINER_meta_data_insert (nm, | ||
626 | "<user>", | ||
627 | ntype, | ||
628 | nformat, | ||
629 | "text/plain", | ||
630 | value, | ||
631 | strlen (value)+1); | ||
632 | g_free (value); | ||
633 | } | ||
634 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
635 | } | 620 | } |
621 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
622 | } | ||
636 | GNUNET_CONTAINER_meta_data_merge (meta, nm); | 623 | GNUNET_CONTAINER_meta_data_merge (meta, nm); |
637 | if (preview_changed == GNUNET_YES) | 624 | if (preview_changed == GNUNET_YES) |
625 | { | ||
626 | fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER | ||
627 | (gtk_builder_get_object | ||
628 | (builder, | ||
629 | "GNUNET_GTK_edit_file_information_metadata_preview_file_chooser_button"))); | ||
630 | f = g_file_new_for_path (fn); | ||
631 | finfo = | ||
632 | g_file_query_info (f, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, 0, NULL, | ||
633 | NULL); | ||
634 | if (FALSE == g_file_load_contents (f, NULL, &data, &data_size, NULL, NULL)) | ||
638 | { | 635 | { |
639 | fn = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (gtk_builder_get_object (builder, | 636 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, |
640 | "GNUNET_GTK_edit_file_information_metadata_preview_file_chooser_button"))); | 637 | _("Could not load preview `%s' into memory\n"), fn); |
641 | f = g_file_new_for_path (fn); | ||
642 | finfo = g_file_query_info (f, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, 0, NULL, NULL); | ||
643 | if (FALSE == g_file_load_contents (f, NULL, &data, &data_size, NULL, NULL)) | ||
644 | { | ||
645 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
646 | _("Could not load preview `%s' into memory\n"), | ||
647 | fn); | ||
648 | } | ||
649 | else | ||
650 | { | ||
651 | mime = g_file_info_get_attribute_string (finfo, | ||
652 | G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE); | ||
653 | GNUNET_CONTAINER_meta_data_insert (meta, | ||
654 | "<user>", | ||
655 | EXTRACTOR_METATYPE_THUMBNAIL, | ||
656 | EXTRACTOR_METAFORMAT_BINARY, | ||
657 | mime, | ||
658 | data, | ||
659 | data_size); | ||
660 | } | ||
661 | g_object_unref (finfo); | ||
662 | g_object_unref (f); | ||
663 | } | 638 | } |
639 | else | ||
640 | { | ||
641 | mime = | ||
642 | g_file_info_get_attribute_string (finfo, | ||
643 | G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE); | ||
644 | GNUNET_CONTAINER_meta_data_insert (meta, "<user>", | ||
645 | EXTRACTOR_METATYPE_THUMBNAIL, | ||
646 | EXTRACTOR_METAFORMAT_BINARY, mime, | ||
647 | data, data_size); | ||
648 | } | ||
649 | g_object_unref (finfo); | ||
650 | g_object_unref (f); | ||
651 | } | ||
664 | GNUNET_CONTAINER_meta_data_destroy (nm); | 652 | GNUNET_CONTAINER_meta_data_destroy (nm); |
665 | 653 | ||
666 | /* update short_fn */ | 654 | /* update short_fn */ |
667 | GNUNET_free_non_null (*short_fn); | 655 | GNUNET_free_non_null (*short_fn); |
668 | *short_fn = GNUNET_CONTAINER_meta_data_get_first_by_types (meta, | 656 | *short_fn = |
669 | EXTRACTOR_METATYPE_FILENAME, | 657 | GNUNET_CONTAINER_meta_data_get_first_by_types (meta, |
670 | -1); | 658 | EXTRACTOR_METATYPE_FILENAME, |
659 | -1); | ||
671 | /* FIXME: update expiration time? (not yet in dialog!) */ | 660 | /* FIXME: update expiration time? (not yet in dialog!) */ |
672 | return GNUNET_SYSERR; /* only visit top-level item */ | 661 | return GNUNET_SYSERR; /* only visit top-level item */ |
673 | } | 662 | } |
674 | 663 | ||
675 | 664 | ||
@@ -677,11 +666,9 @@ file_information_update (void *cls, | |||
677 | * Open the dialog to edit file information data. | 666 | * Open the dialog to edit file information data. |
678 | */ | 667 | */ |
679 | void | 668 | void |
680 | GNUNET_FS_GTK_edit_publish_dialog (int *do_index, | 669 | GNUNET_FS_GTK_edit_publish_dialog (int *do_index, char **short_fn, |
681 | char **short_fn, | 670 | guint * anonymity_level, guint * priority, |
682 | guint *anonymity_level, | 671 | struct GNUNET_FS_FileInformation *fip) |
683 | guint *priority, | ||
684 | struct GNUNET_FS_FileInformation *fip) | ||
685 | { | 672 | { |
686 | GtkWidget *ad; | 673 | GtkWidget *ad; |
687 | GtkListStore *ls; | 674 | GtkListStore *ls; |
@@ -692,77 +679,92 @@ GNUNET_FS_GTK_edit_publish_dialog (int *do_index, | |||
692 | GtkTreeSelection *sel; | 679 | GtkTreeSelection *sel; |
693 | 680 | ||
694 | GNUNET_assert (builder == NULL); | 681 | GNUNET_assert (builder == NULL); |
695 | builder = GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_publish_edit_dialog.glade"); | 682 | builder = |
683 | GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_publish_edit_dialog.glade"); | ||
696 | if (builder == NULL) | 684 | if (builder == NULL) |
697 | { | 685 | { |
698 | GNUNET_break (0); | 686 | GNUNET_break (0); |
699 | return; | 687 | return; |
700 | } | 688 | } |
701 | preview_changed = GNUNET_NO; | 689 | preview_changed = GNUNET_NO; |
702 | GNUNET_FS_GTK_setup_expiration_year_adjustment (builder); | 690 | GNUNET_FS_GTK_setup_expiration_year_adjustment (builder); |
703 | if (GNUNET_FS_file_information_is_directory (fip)) | 691 | if (GNUNET_FS_file_information_is_directory (fip)) |
704 | { | 692 | { |
705 | /* indexing does not apply to directories */ | 693 | /* indexing does not apply to directories */ |
706 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, | 694 | gtk_widget_hide (GTK_WIDGET |
707 | "GNUNET_GTK_edit_file_information_index_check_button"))); | 695 | (gtk_builder_get_object |
708 | gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, | 696 | (builder, |
709 | "GNUNET_GTK_edit_file_information_index_label"))); | 697 | "GNUNET_GTK_edit_file_information_index_check_button"))); |
710 | 698 | gtk_widget_hide (GTK_WIDGET | |
711 | } | 699 | (gtk_builder_get_object |
712 | 700 | (builder, | |
713 | ad = GTK_WIDGET (gtk_builder_get_object (builder, | 701 | "GNUNET_GTK_edit_file_information_index_label"))); |
714 | "GNUNET_GTK_edit_file_information_dialog")); | 702 | |
715 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | 703 | } |
716 | "GNUNET_GTK_metatype_list_store")); | 704 | |
705 | ad = GTK_WIDGET (gtk_builder_get_object | ||
706 | (builder, "GNUNET_GTK_edit_file_information_dialog")); | ||
707 | ls = GTK_LIST_STORE (gtk_builder_get_object | ||
708 | (builder, "GNUNET_GTK_metatype_list_store")); | ||
717 | max_type = EXTRACTOR_metatype_get_max (); | 709 | max_type = EXTRACTOR_metatype_get_max (); |
718 | type = 1; | 710 | type = 1; |
719 | while (type < max_type - 1) | 711 | while (type < max_type - 1) |
720 | { | 712 | { |
721 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, | 713 | gtk_list_store_insert_with_values (ls, &iter, G_MAXINT, 0, |
722 | 0, EXTRACTOR_metatype_to_string (type), | 714 | EXTRACTOR_metatype_to_string (type), 1, |
723 | 1, type, | 715 | type, 2, |
724 | 2, EXTRACTOR_metatype_to_description (type), | 716 | EXTRACTOR_metatype_to_description (type), |
725 | -1); | 717 | -1); |
726 | type++; | 718 | type++; |
727 | } | 719 | } |
728 | 720 | ||
729 | GNUNET_FS_file_information_inspect (fip, | 721 | GNUNET_FS_file_information_inspect (fip, &file_information_extract, NULL); |
730 | &file_information_extract, | 722 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
731 | NULL); | 723 | (builder, |
732 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 724 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); |
733 | "GNUNET_GTK_edit_file_information_metadata_type_tree_view")); | ||
734 | sel = gtk_tree_view_get_selection (tv); | 725 | sel = gtk_tree_view_get_selection (tv); |
735 | g_signal_connect(G_OBJECT(sel), "changed", | 726 | g_signal_connect (G_OBJECT (sel), "changed", |
736 | G_CALLBACK(GNUNET_GTK_edit_file_information_metadata_value_entry_changed_cb), NULL); | 727 | G_CALLBACK |
737 | 728 | (GNUNET_GTK_edit_file_information_metadata_value_entry_changed_cb), | |
738 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 729 | NULL); |
739 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | 730 | |
731 | tv = GTK_TREE_VIEW (gtk_builder_get_object | ||
732 | (builder, | ||
733 | "GNUNET_GTK_edit_file_information_metadata_tree_view")); | ||
740 | sel = gtk_tree_view_get_selection (tv); | 734 | sel = gtk_tree_view_get_selection (tv); |
741 | g_signal_connect(G_OBJECT(sel), "changed", | 735 | g_signal_connect (G_OBJECT (sel), "changed", |
742 | G_CALLBACK(metadata_selection_changed_cb), NULL); | 736 | G_CALLBACK (metadata_selection_changed_cb), NULL); |
743 | 737 | ||
744 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 738 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
745 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | 739 | (builder, |
740 | "GNUNET_GTK_edit_file_information_keyword_list_tree_view")); | ||
746 | sel = gtk_tree_view_get_selection (tv); | 741 | sel = gtk_tree_view_get_selection (tv); |
747 | g_signal_connect(G_OBJECT(sel), "changed", | 742 | g_signal_connect (G_OBJECT (sel), "changed", |
748 | G_CALLBACK(keyword_selection_changed_cb), NULL); | 743 | G_CALLBACK (keyword_selection_changed_cb), NULL); |
749 | gtk_window_set_title (GTK_WINDOW (ad), *short_fn); | 744 | gtk_window_set_title (GTK_WINDOW (ad), *short_fn); |
750 | if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad))) | 745 | if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad))) |
751 | { | 746 | { |
752 | gtk_widget_destroy (ad); | 747 | gtk_widget_destroy (ad); |
753 | g_object_unref (G_OBJECT (builder)); | 748 | g_object_unref (G_OBJECT (builder)); |
754 | builder = NULL; | 749 | builder = NULL; |
755 | return; | 750 | return; |
756 | } | 751 | } |
757 | GNUNET_FS_file_information_inspect (fip, | 752 | GNUNET_FS_file_information_inspect (fip, &file_information_update, short_fn); |
758 | &file_information_update, | 753 | *anonymity_level = |
759 | short_fn); | 754 | gtk_spin_button_get_value (GTK_SPIN_BUTTON |
760 | *anonymity_level = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 755 | (gtk_builder_get_object |
761 | "GNUNET_GTK_edit_file_information_anonymity_spin_button"))); | 756 | (builder, |
762 | *priority = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder, | 757 | "GNUNET_GTK_edit_file_information_anonymity_spin_button"))); |
763 | "GNUNET_GTK_edit_file_information_priority_spin_button"))); | 758 | *priority = |
764 | *do_index = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, | 759 | gtk_spin_button_get_value (GTK_SPIN_BUTTON |
765 | "GNUNET_GTK_edit_file_information_index_check_button"))); | 760 | (gtk_builder_get_object |
761 | (builder, | ||
762 | "GNUNET_GTK_edit_file_information_priority_spin_button"))); | ||
763 | *do_index = | ||
764 | gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON | ||
765 | (gtk_builder_get_object | ||
766 | (builder, | ||
767 | "GNUNET_GTK_edit_file_information_index_check_button"))); | ||
766 | gtk_widget_destroy (ad); | 768 | gtk_widget_destroy (ad); |
767 | g_object_unref (G_OBJECT (builder)); | 769 | g_object_unref (G_OBJECT (builder)); |
768 | builder = NULL; | 770 | builder = NULL; |
diff --git a/src/fs/gnunet-fs-gtk-event_handler.c b/src/fs/gnunet-fs-gtk-event_handler.c index 3b53fca5..569462ed 100644 --- a/src/fs/gnunet-fs-gtk-event_handler.c +++ b/src/fs/gnunet-fs-gtk-event_handler.c | |||
@@ -66,19 +66,19 @@ struct PublishEntry | |||
66 | 66 | ||
67 | /** | 67 | /** |
68 | * Tab storing this entry. | 68 | * Tab storing this entry. |
69 | */ | 69 | */ |
70 | struct PublishTab *tab; | 70 | struct PublishTab *tab; |
71 | 71 | ||
72 | /** | 72 | /** |
73 | * Where in the tab is this entry? | 73 | * Where in the tab is this entry? |
74 | */ | 74 | */ |
75 | GtkTreeRowReference *rr; | 75 | GtkTreeRowReference *rr; |
76 | 76 | ||
77 | /** | 77 | /** |
78 | * URI of the file (set after completion). | 78 | * URI of the file (set after completion). |
79 | */ | 79 | */ |
80 | struct GNUNET_FS_Uri *uri; | 80 | struct GNUNET_FS_Uri *uri; |
81 | 81 | ||
82 | int is_top; | 82 | int is_top; |
83 | }; | 83 | }; |
84 | 84 | ||
@@ -87,12 +87,12 @@ struct SearchResult | |||
87 | { | 87 | { |
88 | /** | 88 | /** |
89 | * Where in the tab is this result? | 89 | * Where in the tab is this result? |
90 | */ | 90 | */ |
91 | GtkTreeRowReference *rr; | 91 | GtkTreeRowReference *rr; |
92 | 92 | ||
93 | /** | 93 | /** |
94 | * Tab storing this result. | 94 | * Tab storing this result. |
95 | */ | 95 | */ |
96 | struct SearchTab *tab; | 96 | struct SearchTab *tab; |
97 | 97 | ||
98 | /** | 98 | /** |
@@ -115,59 +115,51 @@ static struct PublishTab *publish_tab_tail; | |||
115 | 115 | ||
116 | 116 | ||
117 | static struct DownloadEntry * | 117 | static struct DownloadEntry * |
118 | change_download_colour (struct DownloadEntry *de, | 118 | change_download_colour (struct DownloadEntry *de, const char *colour) |
119 | const char *colour) | ||
120 | { | 119 | { |
121 | GtkTreeIter iter; | 120 | GtkTreeIter iter; |
122 | GtkTreePath *path; | 121 | GtkTreePath *path; |
123 | 122 | ||
124 | path = gtk_tree_row_reference_get_path (de->rr); | 123 | path = gtk_tree_row_reference_get_path (de->rr); |
125 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), | 124 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), &iter, path)) |
126 | &iter, path)) | 125 | { |
127 | { | 126 | GNUNET_break (0); |
128 | GNUNET_break (0); | 127 | gtk_tree_path_free (path); |
129 | gtk_tree_path_free (path); | 128 | return de; |
130 | return de; | 129 | } |
131 | } | ||
132 | gtk_tree_path_free (path); | 130 | gtk_tree_path_free (path); |
133 | gtk_tree_store_set (de->ts, &iter, | 131 | gtk_tree_store_set (de->ts, &iter, 8, colour, -1); |
134 | 8, colour, | ||
135 | -1); | ||
136 | return de; | 132 | return de; |
137 | } | 133 | } |
138 | 134 | ||
139 | 135 | ||
140 | static struct PublishEntry * | 136 | static struct PublishEntry * |
141 | change_publish_colour (struct PublishEntry *pe, | 137 | change_publish_colour (struct PublishEntry *pe, const char *colour) |
142 | const char *colour) | ||
143 | { | 138 | { |
144 | GtkTreeIter iter; | 139 | GtkTreeIter iter; |
145 | GtkTreePath *path; | 140 | GtkTreePath *path; |
146 | 141 | ||
147 | if (pe == NULL) | 142 | if (pe == NULL) |
148 | { | 143 | { |
149 | GNUNET_break (0); | 144 | GNUNET_break (0); |
150 | return NULL; | 145 | return NULL; |
151 | } | 146 | } |
152 | path = gtk_tree_row_reference_get_path (pe->rr); | 147 | path = gtk_tree_row_reference_get_path (pe->rr); |
153 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (pe->tab->ts), | 148 | if (TRUE != |
154 | &iter, path)) | 149 | gtk_tree_model_get_iter (GTK_TREE_MODEL (pe->tab->ts), &iter, path)) |
155 | { | 150 | { |
156 | GNUNET_break (0); | 151 | GNUNET_break (0); |
157 | gtk_tree_path_free (path); | 152 | gtk_tree_path_free (path); |
158 | return pe; | 153 | return pe; |
159 | } | 154 | } |
160 | gtk_tree_path_free (path); | 155 | gtk_tree_path_free (path); |
161 | gtk_tree_store_set (pe->tab->ts, &iter, | 156 | gtk_tree_store_set (pe->tab->ts, &iter, 2, colour, -1); |
162 | 2, colour, | ||
163 | -1); | ||
164 | return pe; | 157 | return pe; |
165 | } | 158 | } |
166 | 159 | ||
167 | 160 | ||
168 | static void | 161 | static void |
169 | stop_download (struct DownloadEntry *de, | 162 | stop_download (struct DownloadEntry *de, int is_suspend) |
170 | int is_suspend) | ||
171 | { | 163 | { |
172 | change_download_colour (de, "white"); | 164 | change_download_colour (de, "white"); |
173 | gtk_tree_row_reference_free (de->rr); | 165 | gtk_tree_row_reference_free (de->rr); |
@@ -187,7 +179,7 @@ struct AddDirectoryEntryContext | |||
187 | 179 | ||
188 | /** | 180 | /** |
189 | * Row reference of parent (the directory). | 181 | * Row reference of parent (the directory). |
190 | */ | 182 | */ |
191 | GtkTreeRowReference *prr; | 183 | GtkTreeRowReference *prr; |
192 | 184 | ||
193 | int check_duplicates; | 185 | int check_duplicates; |
@@ -210,13 +202,11 @@ struct AddDirectoryEntryContext | |||
210 | * embedded with the directory itself). | 202 | * embedded with the directory itself). |
211 | * @param data data available for the file (length bytes) | 203 | * @param data data available for the file (length bytes) |
212 | */ | 204 | */ |
213 | static void | 205 | static void |
214 | add_directory_entry (void *cls, | 206 | add_directory_entry (void *cls, const char *filename, |
215 | const char *filename, | 207 | const struct GNUNET_FS_Uri *uri, |
216 | const struct GNUNET_FS_Uri *uri, | 208 | const struct GNUNET_CONTAINER_MetaData *meta, |
217 | const struct GNUNET_CONTAINER_MetaData *meta, | 209 | size_t length, const void *data) |
218 | size_t length, | ||
219 | const void *data) | ||
220 | { | 210 | { |
221 | struct AddDirectoryEntryContext *ade = cls; | 211 | struct AddDirectoryEntryContext *ade = cls; |
222 | GtkTreeIter iter; | 212 | GtkTreeIter iter; |
@@ -226,168 +216,144 @@ add_directory_entry (void *cls, | |||
226 | struct GNUNET_FS_Uri *xuri; | 216 | struct GNUNET_FS_Uri *xuri; |
227 | 217 | ||
228 | if (uri == NULL) | 218 | if (uri == NULL) |
219 | { | ||
220 | /* directory meta data itself */ | ||
221 | /* FIXME: consider merging it in... */ | ||
222 | return; | ||
223 | } | ||
224 | if (ade->check_duplicates == GNUNET_YES) | ||
225 | { | ||
226 | path = gtk_tree_row_reference_get_path (ade->prr); | ||
227 | tm = gtk_tree_row_reference_get_model (ade->prr); | ||
228 | if (TRUE != gtk_tree_model_get_iter (tm, &piter, path)) | ||
229 | { | 229 | { |
230 | /* directory meta data itself */ | 230 | GNUNET_break (0); |
231 | /* FIXME: consider merging it in... */ | 231 | gtk_tree_path_free (path); |
232 | return; | 232 | return; |
233 | } | 233 | } |
234 | if (ade->check_duplicates == GNUNET_YES) | 234 | gtk_tree_path_free (path); |
235 | if (TRUE == gtk_tree_model_iter_children (tm, &iter, &piter)) | ||
235 | { | 236 | { |
236 | path = gtk_tree_row_reference_get_path (ade->prr); | 237 | do |
237 | tm = gtk_tree_row_reference_get_model (ade->prr); | 238 | { |
238 | if (TRUE != gtk_tree_model_get_iter (tm, | 239 | gtk_tree_model_get (tm, &iter, 1, &xuri, -1); |
239 | &piter, path)) | 240 | if (GNUNET_YES == GNUNET_FS_uri_test_equal (xuri, uri)) |
240 | { | 241 | return; /* already present */ |
241 | GNUNET_break (0); | 242 | } |
242 | gtk_tree_path_free (path); | 243 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); |
243 | return; | ||
244 | } | ||
245 | gtk_tree_path_free (path); | ||
246 | if (TRUE == gtk_tree_model_iter_children (tm, | ||
247 | &iter, | ||
248 | &piter)) | ||
249 | { | ||
250 | do | ||
251 | { | ||
252 | gtk_tree_model_get (tm, | ||
253 | &iter, | ||
254 | 1, &xuri, | ||
255 | -1); | ||
256 | if (GNUNET_YES == | ||
257 | GNUNET_FS_uri_test_equal (xuri, uri)) | ||
258 | return; /* already present */ | ||
259 | } | ||
260 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | ||
261 | } | ||
262 | } | 244 | } |
263 | GNUNET_GTK_add_search_result (ade->de->tab, | 245 | } |
264 | &iter, | 246 | GNUNET_GTK_add_search_result (ade->de->tab, &iter, ade->prr, uri, meta, NULL, |
265 | ade->prr, | 247 | 0); |
266 | uri, | ||
267 | meta, | ||
268 | NULL, | ||
269 | 0); | ||
270 | } | 248 | } |
271 | 249 | ||
272 | 250 | ||
273 | static struct DownloadEntry * | 251 | static struct DownloadEntry * |
274 | mark_download_progress (struct DownloadEntry *de, | 252 | mark_download_progress (struct DownloadEntry *de, uint64_t size, |
275 | uint64_t size, | 253 | uint64_t completed, const void *block_data, |
276 | uint64_t completed, | 254 | uint64_t offset, uint64_t block_size, |
277 | const void *block_data, | 255 | unsigned int depth) |
278 | uint64_t offset, | ||
279 | uint64_t block_size, | ||
280 | unsigned int depth) | ||
281 | { | 256 | { |
282 | struct AddDirectoryEntryContext ade; | 257 | struct AddDirectoryEntryContext ade; |
283 | GtkTreeIter iter; | 258 | GtkTreeIter iter; |
284 | GtkTreePath *path; | 259 | GtkTreePath *path; |
285 | 260 | ||
286 | path = gtk_tree_row_reference_get_path (de->rr); | 261 | path = gtk_tree_row_reference_get_path (de->rr); |
287 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), | 262 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), &iter, path)) |
288 | &iter, path)) | 263 | { |
289 | { | 264 | GNUNET_break (0); |
290 | GNUNET_break (0); | 265 | gtk_tree_path_free (path); |
291 | gtk_tree_path_free (path); | 266 | return de; |
292 | return de; | 267 | } |
293 | } | ||
294 | gtk_tree_path_free (path); | 268 | gtk_tree_path_free (path); |
295 | gtk_tree_store_set (de->ts, &iter, | 269 | gtk_tree_store_set (de->ts, &iter, 4, |
296 | 4, (guint) ((size > 0) ? (100 * completed / size) : 100) /* progress */, | 270 | (guint) ((size > |
297 | -1); | 271 | 0) ? (100 * completed / |
298 | if ( (depth == 0) && | 272 | size) : 100) /* progress */ , |
299 | (block_size > 0) && | 273 | -1); |
300 | (GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta)) ) | 274 | if ((depth == 0) && (block_size > 0) && |
275 | (GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta))) | ||
276 | { | ||
277 | ade.de = de; | ||
278 | ade.prr = de->rr; | ||
279 | ade.check_duplicates = GNUNET_NO; | ||
280 | if (GNUNET_SYSERR == | ||
281 | GNUNET_FS_directory_list_contents ((size_t) block_size, block_data, | ||
282 | offset, &add_directory_entry, &ade)) | ||
301 | { | 283 | { |
302 | ade.de = de; | 284 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
303 | ade.prr = de->rr; | 285 | _ |
304 | ade.check_duplicates = GNUNET_NO; | 286 | ("Metadata wrongly claims that this is a GNUnet directory!\n")); |
305 | if (GNUNET_SYSERR == | ||
306 | GNUNET_FS_directory_list_contents ((size_t) block_size, | ||
307 | block_data, | ||
308 | offset, | ||
309 | &add_directory_entry, | ||
310 | &ade)) | ||
311 | { | ||
312 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
313 | _("Metadata wrongly claims that this is a GNUnet directory!\n")); | ||
314 | } | ||
315 | } | 287 | } |
288 | } | ||
316 | return de; | 289 | return de; |
317 | } | 290 | } |
318 | 291 | ||
319 | 292 | ||
320 | static struct DownloadEntry * | 293 | static struct DownloadEntry * |
321 | mark_download_error (struct DownloadEntry *de, | 294 | mark_download_error (struct DownloadEntry *de, const char *emsg) |
322 | const char *emsg) | ||
323 | { | 295 | { |
324 | GtkTreeIter iter; | 296 | GtkTreeIter iter; |
325 | GtkTreePath *path; | 297 | GtkTreePath *path; |
326 | 298 | ||
327 | de = change_download_colour (de, | 299 | de = change_download_colour (de, "red"); |
328 | "red"); | 300 | de->is_done = GNUNET_YES; |
329 | de->is_done = GNUNET_YES; | ||
330 | path = gtk_tree_row_reference_get_path (de->rr); | 301 | path = gtk_tree_row_reference_get_path (de->rr); |
331 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->tab->ts), | 302 | if (TRUE != |
332 | &iter, path)) | 303 | gtk_tree_model_get_iter (GTK_TREE_MODEL (de->tab->ts), &iter, path)) |
333 | { | 304 | { |
334 | GNUNET_break (0); | 305 | GNUNET_break (0); |
335 | gtk_tree_path_free (path); | 306 | gtk_tree_path_free (path); |
336 | return de; | 307 | return de; |
337 | } | 308 | } |
338 | gtk_tree_path_free (path); | 309 | gtk_tree_path_free (path); |
339 | gtk_tree_store_set (de->tab->ts, &iter, | 310 | gtk_tree_store_set (de->tab->ts, &iter, 4, 0, 7, emsg, -1); |
340 | 4, 0, | ||
341 | 7, emsg, | ||
342 | -1); | ||
343 | return de; | 311 | return de; |
344 | } | 312 | } |
345 | 313 | ||
346 | 314 | ||
347 | static struct DownloadEntry * | 315 | static struct DownloadEntry * |
348 | mark_download_completed (struct DownloadEntry *de, | 316 | mark_download_completed (struct DownloadEntry *de, uint64_t size, |
349 | uint64_t size, | 317 | const char *filename) |
350 | const char *filename) | ||
351 | { | 318 | { |
352 | struct AddDirectoryEntryContext ade; | 319 | struct AddDirectoryEntryContext ade; |
353 | 320 | ||
354 | de->is_done = GNUNET_YES; | 321 | de->is_done = GNUNET_YES; |
355 | (void) mark_download_progress (de, size, size, NULL, 0, 0, 0); | 322 | (void) mark_download_progress (de, size, size, NULL, 0, 0, 0); |
356 | if ( (GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta)) && | 323 | if ((GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (de->meta)) && |
357 | (filename != NULL) ) | 324 | (filename != NULL)) |
358 | { | 325 | { |
359 | ade.de = de; | 326 | ade.de = de; |
360 | ade.prr = de->rr; | 327 | ade.prr = de->rr; |
361 | ade.check_duplicates = GNUNET_NO; | 328 | ade.check_duplicates = GNUNET_NO; |
362 | GNUNET_FS_GTK_mmap_and_scan (filename, | 329 | GNUNET_FS_GTK_mmap_and_scan (filename, &add_directory_entry, &ade); |
363 | &add_directory_entry, | 330 | } |
364 | &ade); | ||
365 | } | ||
366 | (void) change_download_colour (de, "green"); | 331 | (void) change_download_colour (de, "green"); |
367 | return de; | 332 | return de; |
368 | } | 333 | } |
369 | 334 | ||
370 | 335 | ||
371 | static struct PublishEntry * | 336 | static struct PublishEntry * |
372 | mark_publish_progress (struct PublishEntry *pe, | 337 | mark_publish_progress (struct PublishEntry *pe, uint64_t size, |
373 | uint64_t size, | 338 | uint64_t completed) |
374 | uint64_t completed) | ||
375 | { | 339 | { |
376 | GtkTreeIter iter; | 340 | GtkTreeIter iter; |
377 | GtkTreePath *path; | 341 | GtkTreePath *path; |
378 | 342 | ||
379 | path = gtk_tree_row_reference_get_path (pe->rr); | 343 | path = gtk_tree_row_reference_get_path (pe->rr); |
380 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (pe->tab->ts), | 344 | if (TRUE != |
381 | &iter, path)) | 345 | gtk_tree_model_get_iter (GTK_TREE_MODEL (pe->tab->ts), &iter, path)) |
382 | { | 346 | { |
383 | GNUNET_break (0); | 347 | GNUNET_break (0); |
384 | gtk_tree_path_free (path); | 348 | gtk_tree_path_free (path); |
385 | return pe; | 349 | return pe; |
386 | } | 350 | } |
387 | gtk_tree_path_free (path); | 351 | gtk_tree_path_free (path); |
388 | gtk_tree_store_set (pe->tab->ts, &iter, | 352 | gtk_tree_store_set (pe->tab->ts, &iter, 3, |
389 | 3, (guint) ((size > 0) ? (100 * completed / size) : 100) /* progress */, | 353 | (guint) ((size > |
390 | -1); | 354 | 0) ? (100 * completed / |
355 | size) : 100) /* progress */ , | ||
356 | -1); | ||
391 | return pe; | 357 | return pe; |
392 | } | 358 | } |
393 | 359 | ||
@@ -403,10 +369,8 @@ mark_publish_progress (struct PublishEntry *pe, | |||
403 | * to refer to the new model. | 369 | * to refer to the new model. |
404 | */ | 370 | */ |
405 | static void | 371 | static void |
406 | move_children (GtkTreeModel *src_model, | 372 | move_children (GtkTreeModel * src_model, GtkTreeIter * src_iter, |
407 | GtkTreeIter *src_iter, | 373 | GtkTreeModel * dst_model, GtkTreeIter * dst_iter) |
408 | GtkTreeModel *dst_model, | ||
409 | GtkTreeIter *dst_iter) | ||
410 | { | 374 | { |
411 | GtkTreeIter src_child; | 375 | GtkTreeIter src_child; |
412 | GtkTreeIter dst_child; | 376 | GtkTreeIter dst_child; |
@@ -424,76 +388,49 @@ move_children (GtkTreeModel *src_model, | |||
424 | gchar *mimetype; | 388 | gchar *mimetype; |
425 | guint applicability_rank; | 389 | guint applicability_rank; |
426 | guint availability_certainty; | 390 | guint availability_certainty; |
427 | gint availability_rank; | 391 | gint availability_rank; |
428 | 392 | ||
429 | if (TRUE == gtk_tree_model_iter_children (src_model, | 393 | if (TRUE == gtk_tree_model_iter_children (src_model, &src_child, src_iter)) |
430 | &src_child, | 394 | { |
431 | src_iter)) | 395 | do |
432 | { | 396 | { |
433 | do | 397 | gtk_tree_model_get (src_model, &src_child, 0, &meta, 1, &uri, 2, |
434 | { | 398 | &filesize, 3, &preview, 4, &percent_progress, 5, |
435 | gtk_tree_model_get (src_model, | 399 | &percent_availability, 6, &filename, 7, |
436 | &src_child, | 400 | &uri_as_string, 8, &status_colour, 9, &search_result, |
437 | 0, &meta, | 401 | 10, &mimetype, 11, &applicability_rank, 12, |
438 | 1, &uri, | 402 | &availability_certainty, 13, &availability_rank, -1); |
439 | 2, &filesize, | 403 | gtk_tree_store_insert_with_values (GTK_TREE_STORE (dst_model), &dst_child, |
440 | 3, &preview, | 404 | dst_iter, G_MAXINT, 0, meta, 1, uri, 2, |
441 | 4, &percent_progress, | 405 | filesize, 3, preview, 4, |
442 | 5, &percent_availability, | 406 | percent_progress, 5, |
443 | 6, &filename, | 407 | percent_availability, 6, filename, 7, |
444 | 7, &uri_as_string, | 408 | uri_as_string, 8, status_colour, 9, |
445 | 8, &status_colour, | 409 | search_result, 10, mimetype, 11, |
446 | 9, &search_result, | 410 | applicability_rank, 12, |
447 | 10, &mimetype, | 411 | availability_certainty, 13, |
448 | 11, &applicability_rank, | 412 | availability_rank, -1); |
449 | 12, &availability_certainty, | 413 | g_free (filename); |
450 | 13, &availability_rank, | 414 | g_free (uri_as_string); |
451 | -1); | 415 | g_free (status_colour); |
452 | gtk_tree_store_insert_with_values (GTK_TREE_STORE (dst_model), | 416 | g_free (mimetype); |
453 | &dst_child, | 417 | if (preview != NULL) |
454 | dst_iter, | 418 | g_object_unref (preview); |
455 | G_MAXINT, | 419 | gtk_tree_row_reference_free (search_result->rr); |
456 | 0, meta, | 420 | path = gtk_tree_model_get_path (dst_model, &dst_child); |
457 | 1, uri, | 421 | search_result->rr = gtk_tree_row_reference_new (dst_model, path); |
458 | 2, filesize, | 422 | gtk_tree_path_free (path); |
459 | 3, preview, | 423 | if (search_result->download != NULL) |
460 | 4, percent_progress, | 424 | { |
461 | 5, percent_availability, | 425 | search_result->download->ts = GTK_TREE_STORE (dst_model); |
462 | 6, filename, | 426 | gtk_tree_row_reference_free (search_result->download->rr); |
463 | 7, uri_as_string, | 427 | search_result->download->rr = |
464 | 8, status_colour, | 428 | gtk_tree_row_reference_copy (search_result->rr); |
465 | 9, search_result, | 429 | } |
466 | 10, mimetype, | 430 | move_children (src_model, &src_child, dst_model, &dst_child); |
467 | 11, applicability_rank, | ||
468 | 12, availability_certainty, | ||
469 | 13, availability_rank, | ||
470 | -1); | ||
471 | g_free (filename); | ||
472 | g_free (uri_as_string); | ||
473 | g_free (status_colour); | ||
474 | g_free (mimetype); | ||
475 | if (preview != NULL) | ||
476 | g_object_unref (preview); | ||
477 | gtk_tree_row_reference_free (search_result->rr); | ||
478 | path = gtk_tree_model_get_path (dst_model, | ||
479 | &dst_child); | ||
480 | search_result->rr = gtk_tree_row_reference_new (dst_model, | ||
481 | path); | ||
482 | gtk_tree_path_free (path); | ||
483 | if (search_result->download != NULL) | ||
484 | { | ||
485 | search_result->download->ts = GTK_TREE_STORE (dst_model); | ||
486 | gtk_tree_row_reference_free (search_result->download->rr); | ||
487 | search_result->download->rr = gtk_tree_row_reference_copy (search_result->rr); | ||
488 | } | ||
489 | move_children (src_model, | ||
490 | &src_child, | ||
491 | dst_model, | ||
492 | &dst_child); | ||
493 | } | ||
494 | while (TRUE == gtk_tree_model_iter_next (src_model, | ||
495 | &src_child)); | ||
496 | } | 431 | } |
432 | while (TRUE == gtk_tree_model_iter_next (src_model, &src_child)); | ||
433 | } | ||
497 | } | 434 | } |
498 | 435 | ||
499 | 436 | ||
@@ -503,17 +440,13 @@ move_children (GtkTreeModel *src_model, | |||
503 | * model's fields (since they have been moved). | 440 | * model's fields (since they have been moved). |
504 | */ | 441 | */ |
505 | static void | 442 | static void |
506 | delete_stale_subtree (GtkTreeModel *model, | 443 | delete_stale_subtree (GtkTreeModel * model, GtkTreeIter * iter) |
507 | GtkTreeIter *iter) | ||
508 | { | 444 | { |
509 | GtkTreeIter child; | 445 | GtkTreeIter child; |
510 | 446 | ||
511 | while (TRUE == gtk_tree_model_iter_children (model, | 447 | while (TRUE == gtk_tree_model_iter_children (model, &child, iter)) |
512 | &child, | ||
513 | iter)) | ||
514 | delete_stale_subtree (model, &child); | 448 | delete_stale_subtree (model, &child); |
515 | gtk_tree_store_remove (GTK_TREE_STORE (model), | 449 | gtk_tree_store_remove (GTK_TREE_STORE (model), iter); |
516 | iter); | ||
517 | } | 450 | } |
518 | 451 | ||
519 | 452 | ||
@@ -522,10 +455,8 @@ delete_stale_subtree (GtkTreeModel *model, | |||
522 | * search parent by moving it to the URI tab. | 455 | * search parent by moving it to the URI tab. |
523 | */ | 456 | */ |
524 | static struct DownloadEntry * | 457 | static struct DownloadEntry * |
525 | download_lost_parent (struct DownloadEntry *de, | 458 | download_lost_parent (struct DownloadEntry *de, uint64_t size, |
526 | uint64_t size, | 459 | uint64_t completed, int is_active) |
527 | uint64_t completed, | ||
528 | int is_active) | ||
529 | { | 460 | { |
530 | GtkTreeIter iter; | 461 | GtkTreeIter iter; |
531 | GtkTreePath *path; | 462 | GtkTreePath *path; |
@@ -536,42 +467,30 @@ download_lost_parent (struct DownloadEntry *de, | |||
536 | 467 | ||
537 | rr_old = de->rr; | 468 | rr_old = de->rr; |
538 | de->sr = NULL; | 469 | de->sr = NULL; |
539 | tab = GNUNET_GTK_add_to_uri_tab (&iter, | 470 | tab = GNUNET_GTK_add_to_uri_tab (&iter, NULL, de->meta, de->uri); |
540 | NULL, | ||
541 | de->meta, | ||
542 | de->uri); | ||
543 | de->ts = tab->ts; | 471 | de->ts = tab->ts; |
544 | path = gtk_tree_model_get_path (GTK_TREE_MODEL (de->ts), | 472 | path = gtk_tree_model_get_path (GTK_TREE_MODEL (de->ts), &iter); |
545 | &iter); | 473 | de->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (de->ts), path); |
546 | de->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (de->ts), | ||
547 | path); | ||
548 | gtk_tree_path_free (path); | 474 | gtk_tree_path_free (path); |
549 | mark_download_progress (de, size, completed, | 475 | mark_download_progress (de, size, completed, NULL, 0, 0, 0); |
550 | NULL, 0, 0, 0); | ||
551 | tm_old = gtk_tree_row_reference_get_model (rr_old); | 476 | tm_old = gtk_tree_row_reference_get_model (rr_old); |
552 | path = gtk_tree_row_reference_get_path (rr_old); | 477 | path = gtk_tree_row_reference_get_path (rr_old); |
553 | gtk_tree_row_reference_free (rr_old); | 478 | gtk_tree_row_reference_free (rr_old); |
554 | gtk_tree_model_get_iter (tm_old, | 479 | gtk_tree_model_get_iter (tm_old, &iter_old, path); |
555 | &iter_old, | ||
556 | path); | ||
557 | gtk_tree_path_free (path); | 480 | gtk_tree_path_free (path); |
558 | move_children (tm_old, | 481 | move_children (tm_old, &iter_old, GTK_TREE_MODEL (de->ts), &iter); |
559 | &iter_old, | 482 | delete_stale_subtree (tm_old, &iter_old); |
560 | GTK_TREE_MODEL (de->ts), | ||
561 | &iter); | ||
562 | delete_stale_subtree (tm_old, | ||
563 | &iter_old); | ||
564 | if (size > completed) | 483 | if (size > completed) |
565 | { | 484 | { |
566 | if (is_active) | 485 | if (is_active) |
567 | change_download_colour (de, "yellow"); | 486 | change_download_colour (de, "yellow"); |
568 | else | 487 | else |
569 | change_download_colour (de, "blue"); | 488 | change_download_colour (de, "blue"); |
570 | } | 489 | } |
571 | else | 490 | else |
572 | { | 491 | { |
573 | change_download_colour (de, "green"); | 492 | change_download_colour (de, "green"); |
574 | } | 493 | } |
575 | return de; | 494 | return de; |
576 | } | 495 | } |
577 | 496 | ||
@@ -589,63 +508,55 @@ download_lost_parent (struct DownloadEntry *de, | |||
589 | * @param completed current progress | 508 | * @param completed current progress |
590 | */ | 509 | */ |
591 | static struct DownloadEntry * | 510 | static struct DownloadEntry * |
592 | setup_download (struct DownloadEntry *de, | 511 | setup_download (struct DownloadEntry *de, struct DownloadEntry *pde, |
593 | struct DownloadEntry *pde, | 512 | struct SearchResult *sr, struct GNUNET_FS_DownloadContext *dc, |
594 | struct SearchResult *sr, | 513 | const struct GNUNET_FS_Uri *uri, |
595 | struct GNUNET_FS_DownloadContext *dc, | 514 | const struct GNUNET_CONTAINER_MetaData *meta, uint64_t size, |
596 | const struct GNUNET_FS_Uri *uri, | 515 | uint64_t completed) |
597 | const struct GNUNET_CONTAINER_MetaData *meta, | ||
598 | uint64_t size, | ||
599 | uint64_t completed) | ||
600 | { | 516 | { |
601 | GtkTreeIter iter; | 517 | GtkTreeIter iter; |
602 | GtkTreePath *path; | 518 | GtkTreePath *path; |
603 | 519 | ||
604 | if (de == NULL) | 520 | if (de == NULL) |
605 | { | 521 | { |
606 | de = GNUNET_malloc (sizeof (struct DownloadEntry)); | 522 | de = GNUNET_malloc (sizeof (struct DownloadEntry)); |
607 | GNUNET_assert (sr->download == NULL); | 523 | GNUNET_assert (sr->download == NULL); |
608 | sr->download = de; | 524 | sr->download = de; |
609 | de->sr = sr; | 525 | de->sr = sr; |
610 | de->dc = dc; | 526 | de->dc = dc; |
611 | de->uri = GNUNET_FS_uri_dup (uri); | 527 | de->uri = GNUNET_FS_uri_dup (uri); |
612 | } | 528 | } |
613 | de->pde = pde; | 529 | de->pde = pde; |
614 | if ( (meta != NULL) && | 530 | if ((meta != NULL) && (de->meta == NULL)) |
615 | (de->meta == NULL) ) | ||
616 | de->meta = GNUNET_CONTAINER_meta_data_duplicate (meta); | 531 | de->meta = GNUNET_CONTAINER_meta_data_duplicate (meta); |
617 | if (sr != NULL) | 532 | if (sr != NULL) |
618 | { | 533 | { |
619 | de->rr = gtk_tree_row_reference_copy (sr->rr); | 534 | de->rr = gtk_tree_row_reference_copy (sr->rr); |
620 | de->ts = sr->tab->ts; | 535 | de->ts = sr->tab->ts; |
621 | de->tab = sr->tab; | 536 | de->tab = sr->tab; |
622 | } | 537 | } |
623 | else if (de->rr == NULL) | 538 | else if (de->rr == NULL) |
624 | { | 539 | { |
625 | de->tab = GNUNET_GTK_add_to_uri_tab (&iter, | 540 | de->tab = GNUNET_GTK_add_to_uri_tab (&iter, NULL, meta, uri); |
626 | NULL, | 541 | de->ts = de->tab->ts; |
627 | meta, | 542 | path = gtk_tree_model_get_path (GTK_TREE_MODEL (de->ts), &iter); |
628 | uri); | 543 | de->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (de->ts), path); |
629 | de->ts = de->tab->ts; | 544 | gtk_tree_path_free (path); |
630 | path = gtk_tree_model_get_path (GTK_TREE_MODEL (de->ts), | 545 | } |
631 | &iter); | ||
632 | de->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (de->ts), | ||
633 | path); | ||
634 | gtk_tree_path_free (path); | ||
635 | } | ||
636 | path = gtk_tree_row_reference_get_path (de->rr); | 546 | path = gtk_tree_row_reference_get_path (de->rr); |
637 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), | 547 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), &iter, path)) |
638 | &iter, path)) | 548 | { |
639 | { | 549 | GNUNET_break (0); |
640 | GNUNET_break (0); | 550 | gtk_tree_path_free (path); |
641 | gtk_tree_path_free (path); | 551 | return de; |
642 | return de; | 552 | } |
643 | } | ||
644 | gtk_tree_path_free (path); | 553 | gtk_tree_path_free (path); |
645 | gtk_tree_store_set (de->ts, &iter, | 554 | gtk_tree_store_set (de->ts, &iter, 4, |
646 | 4, (guint) ((size > 0) ? (100 * completed / size) : 100) /* progress */, | 555 | (guint) ((size > |
647 | 8, "blue" /* status colour: pending */, | 556 | 0) ? (100 * completed / |
648 | -1); | 557 | size) : 100) /* progress */ , |
558 | 8, "blue" /* status colour: pending */ , | ||
559 | -1); | ||
649 | return de; | 560 | return de; |
650 | } | 561 | } |
651 | 562 | ||
@@ -655,10 +566,8 @@ setup_download (struct DownloadEntry *de, | |||
655 | * "save as" window. | 566 | * "save as" window. |
656 | */ | 567 | */ |
657 | static void | 568 | static void |
658 | start_download (GtkTreeView *tree_view, | 569 | start_download (GtkTreeView * tree_view, GtkTreePath * path, |
659 | GtkTreePath *path, | 570 | GtkTreeViewColumn * column, gpointer user_data) |
660 | GtkTreeViewColumn *column, | ||
661 | gpointer user_data) | ||
662 | { | 571 | { |
663 | struct SearchTab *tab = user_data; | 572 | struct SearchTab *tab = user_data; |
664 | GtkTreeModel *tm; | 573 | GtkTreeModel *tm; |
@@ -672,16 +581,11 @@ start_download (GtkTreeView *tree_view, | |||
672 | GNUNET_assert (tab != NULL); | 581 | GNUNET_assert (tab != NULL); |
673 | tm = gtk_tree_view_get_model (tree_view); | 582 | tm = gtk_tree_view_get_model (tree_view); |
674 | if (TRUE != gtk_tree_model_get_iter (tm, &iter, path)) | 583 | if (TRUE != gtk_tree_model_get_iter (tm, &iter, path)) |
675 | { | 584 | { |
676 | GNUNET_break (0); | 585 | GNUNET_break (0); |
677 | return; | 586 | return; |
678 | } | 587 | } |
679 | gtk_tree_model_get (tm, &iter, | 588 | gtk_tree_model_get (tm, &iter, 0, &meta, 1, &uri, 9, &sr, 10, &mime, -1); |
680 | 0, &meta, | ||
681 | 1, &uri, | ||
682 | 9, &sr, | ||
683 | 10, &mime, | ||
684 | -1); | ||
685 | dlc = GNUNET_malloc (sizeof (struct DownloadContext)); | 589 | dlc = GNUNET_malloc (sizeof (struct DownloadContext)); |
686 | dlc->uri = GNUNET_FS_uri_dup (uri); | 590 | dlc->uri = GNUNET_FS_uri_dup (uri); |
687 | dlc->mime = (NULL != mime) ? GNUNET_strdup (mime) : NULL; | 591 | dlc->mime = (NULL != mime) ? GNUNET_strdup (mime) : NULL; |
@@ -710,23 +614,22 @@ static struct SearchTab *current_context_search_tab; | |||
710 | * Download was selected in the current search context menu. | 614 | * Download was selected in the current search context menu. |
711 | */ | 615 | */ |
712 | static void | 616 | static void |
713 | start_download_ctx_menu (gpointer user_data, | 617 | start_download_ctx_menu (gpointer user_data, guint unused, GtkWidget * widget) |
714 | guint unused, | ||
715 | GtkWidget *widget) | ||
716 | { | 618 | { |
717 | GtkTreePath *path; | 619 | GtkTreePath *path; |
718 | GtkTreeView *tv; | 620 | GtkTreeView *tv; |
719 | 621 | ||
720 | if (current_context_row_reference == NULL) | 622 | if (current_context_row_reference == NULL) |
721 | { | 623 | { |
722 | GNUNET_break (0); | 624 | GNUNET_break (0); |
723 | return; | 625 | return; |
724 | } | 626 | } |
725 | path = gtk_tree_row_reference_get_path (current_context_row_reference); | 627 | path = gtk_tree_row_reference_get_path (current_context_row_reference); |
726 | gtk_tree_row_reference_free (current_context_row_reference); | 628 | gtk_tree_row_reference_free (current_context_row_reference); |
727 | current_context_row_reference = NULL; | 629 | current_context_row_reference = NULL; |
728 | tv = GTK_TREE_VIEW (gtk_builder_get_object (current_context_search_tab->builder, | 630 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
729 | "_search_result_frame")); | 631 | (current_context_search_tab->builder, |
632 | "_search_result_frame")); | ||
730 | start_download (tv, path, NULL, current_context_search_tab); | 633 | start_download (tv, path, NULL, current_context_search_tab); |
731 | gtk_tree_path_free (path); | 634 | gtk_tree_path_free (path); |
732 | current_context_search_tab = NULL; | 635 | current_context_search_tab = NULL; |
@@ -737,15 +640,12 @@ start_download_ctx_menu (gpointer user_data, | |||
737 | * Download was selected in the current search context menu. | 640 | * Download was selected in the current search context menu. |
738 | */ | 641 | */ |
739 | static void | 642 | static void |
740 | abort_download_ctx_menu (gpointer user_data, | 643 | abort_download_ctx_menu (gpointer user_data, guint unused, GtkWidget * widget) |
741 | guint unused, | ||
742 | GtkWidget *widget) | ||
743 | { | 644 | { |
744 | struct DownloadEntry *de = user_data; | 645 | struct DownloadEntry *de = user_data; |
745 | 646 | ||
746 | GNUNET_assert (de->dc != NULL); | 647 | GNUNET_assert (de->dc != NULL); |
747 | GNUNET_FS_download_stop (de->dc, | 648 | GNUNET_FS_download_stop (de->dc, GNUNET_YES); |
748 | GNUNET_YES); | ||
749 | current_context_search_tab = NULL; | 649 | current_context_search_tab = NULL; |
750 | } | 650 | } |
751 | 651 | ||
@@ -754,9 +654,8 @@ abort_download_ctx_menu (gpointer user_data, | |||
754 | * Copy current URI to clipboard. | 654 | * Copy current URI to clipboard. |
755 | */ | 655 | */ |
756 | static void | 656 | static void |
757 | copy_uri_to_clipboard_ctx_menu (gpointer user_data, | 657 | copy_uri_to_clipboard_ctx_menu (gpointer user_data, guint unused, |
758 | guint unused, | 658 | GtkWidget * widget) |
759 | GtkWidget *widget) | ||
760 | { | 659 | { |
761 | GtkTreePath *path; | 660 | GtkTreePath *path; |
762 | GtkTreeView *tv; | 661 | GtkTreeView *tv; |
@@ -767,36 +666,34 @@ copy_uri_to_clipboard_ctx_menu (gpointer user_data, | |||
767 | GtkClipboard *cb; | 666 | GtkClipboard *cb; |
768 | 667 | ||
769 | if (current_context_row_reference == NULL) | 668 | if (current_context_row_reference == NULL) |
770 | { | 669 | { |
771 | GNUNET_break (0); | 670 | GNUNET_break (0); |
772 | return; | 671 | return; |
773 | } | 672 | } |
774 | path = gtk_tree_row_reference_get_path (current_context_row_reference); | 673 | path = gtk_tree_row_reference_get_path (current_context_row_reference); |
775 | gtk_tree_row_reference_free (current_context_row_reference); | 674 | gtk_tree_row_reference_free (current_context_row_reference); |
776 | current_context_row_reference = NULL; | 675 | current_context_row_reference = NULL; |
777 | tv = GTK_TREE_VIEW (gtk_builder_get_object (current_context_search_tab->builder, | 676 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
778 | "_search_result_frame")); | 677 | (current_context_search_tab->builder, |
678 | "_search_result_frame")); | ||
779 | tm = gtk_tree_view_get_model (tv); | 679 | tm = gtk_tree_view_get_model (tv); |
780 | if (TRUE != gtk_tree_model_get_iter (tm, &iter, path)) | 680 | if (TRUE != gtk_tree_model_get_iter (tm, &iter, path)) |
781 | { | 681 | { |
782 | GNUNET_break (0); | 682 | GNUNET_break (0); |
783 | gtk_tree_path_free (path); | 683 | gtk_tree_path_free (path); |
784 | return; | 684 | return; |
785 | } | 685 | } |
786 | gtk_tree_model_get (tm, &iter, | 686 | gtk_tree_model_get (tm, &iter, 1, &uri, -1); |
787 | 1, &uri, -1); | ||
788 | gtk_tree_path_free (path); | 687 | gtk_tree_path_free (path); |
789 | current_context_search_tab = NULL; | 688 | current_context_search_tab = NULL; |
790 | if (uri == NULL) | 689 | if (uri == NULL) |
791 | { | 690 | { |
792 | GNUNET_break (0); | 691 | GNUNET_break (0); |
793 | return; | 692 | return; |
794 | } | 693 | } |
795 | uris = GNUNET_FS_uri_to_string (uri); | 694 | uris = GNUNET_FS_uri_to_string (uri); |
796 | cb = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); | 695 | cb = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); |
797 | gtk_clipboard_set_text (cb, | 696 | gtk_clipboard_set_text (cb, uris, -1); |
798 | uris, | ||
799 | -1); | ||
800 | gtk_clipboard_store (cb); | 697 | gtk_clipboard_store (cb); |
801 | GNUNET_free (uris); | 698 | GNUNET_free (uris); |
802 | } | 699 | } |
@@ -806,10 +703,8 @@ copy_uri_to_clipboard_ctx_menu (gpointer user_data, | |||
806 | * We got a right-click on the search result list. Display the context | 703 | * We got a right-click on the search result list. Display the context |
807 | * menu. | 704 | * menu. |
808 | */ | 705 | */ |
809 | static int | 706 | static int |
810 | search_list_on_menu(GtkWidget *widget, | 707 | search_list_on_menu (GtkWidget * widget, GdkEvent * event, gpointer user_data) |
811 | GdkEvent *event, | ||
812 | gpointer user_data) | ||
813 | { | 708 | { |
814 | GdkEventButton *event_button; | 709 | GdkEventButton *event_button; |
815 | struct SearchTab *tab = user_data; | 710 | struct SearchTab *tab = user_data; |
@@ -820,91 +715,79 @@ search_list_on_menu(GtkWidget *widget, | |||
820 | GtkTreeModel *tm; | 715 | GtkTreeModel *tm; |
821 | GtkTreeIter iter; | 716 | GtkTreeIter iter; |
822 | struct SearchResult *sr; | 717 | struct SearchResult *sr; |
823 | 718 | ||
824 | tv = GTK_TREE_VIEW (widget); | 719 | tv = GTK_TREE_VIEW (widget); |
825 | if (event->type == GDK_BUTTON_PRESS) | 720 | if (event->type == GDK_BUTTON_PRESS) |
721 | { | ||
722 | event_button = (GdkEventButton *) event; | ||
723 | if (event_button->button == 3) | ||
826 | { | 724 | { |
827 | event_button = (GdkEventButton *) event; | 725 | current_context_search_tab = tab; |
828 | if (event_button->button == 3) | 726 | if (current_context_row_reference != NULL) |
829 | { | 727 | { |
830 | current_context_search_tab = tab; | 728 | gtk_tree_row_reference_free (current_context_row_reference); |
831 | if (current_context_row_reference != NULL) | 729 | current_context_row_reference = NULL; |
832 | { | 730 | } |
833 | gtk_tree_row_reference_free (current_context_row_reference); | 731 | path = NULL; |
834 | current_context_row_reference = NULL; | 732 | if (FALSE == |
835 | } | 733 | gtk_tree_view_get_path_at_pos (tv, event_button->x, event_button->y, |
836 | path = NULL; | 734 | &path, NULL, NULL, NULL)) |
837 | if (FALSE == gtk_tree_view_get_path_at_pos (tv, | 735 | { |
838 | event_button->x, | 736 | /* nothing selected */ |
839 | event_button->y, | 737 | current_context_search_tab = NULL; |
840 | &path, NULL, NULL, NULL)) | 738 | return FALSE; |
841 | { | 739 | } |
842 | /* nothing selected */ | 740 | tm = gtk_tree_view_get_model (tv); |
843 | current_context_search_tab = NULL; | 741 | gtk_tree_model_get_iter (tm, &iter, path); |
844 | return FALSE; | 742 | gtk_tree_model_get (tm, &iter, 9, &sr, -1); |
845 | } | 743 | current_context_row_reference = gtk_tree_row_reference_new (tm, path); |
846 | tm = gtk_tree_view_get_model (tv); | 744 | gtk_tree_path_free (path); |
847 | gtk_tree_model_get_iter (tm, &iter, path); | 745 | |
848 | gtk_tree_model_get (tm, &iter, | 746 | /* |
849 | 9, &sr, | 747 | * FIXME: have additional options, depending on status: |
850 | -1); | 748 | * - view full meta data (in new window) |
851 | current_context_row_reference = gtk_tree_row_reference_new (tm, | 749 | * - copy URI to clipboard |
852 | path); | 750 | * - start recursive download |
853 | gtk_tree_path_free (path); | 751 | * - abort active download (!) |
854 | 752 | * => need to know download status before creating menu! | |
855 | /* | 753 | */ |
856 | FIXME: have additional options, depending on status: | 754 | menu = GTK_MENU (gtk_menu_new ()); |
857 | - view full meta data (in new window) | 755 | if (sr->download == NULL) |
858 | - copy URI to clipboard | 756 | { |
859 | - start recursive download | 757 | child = gtk_menu_item_new_with_label (_("_Download")); |
860 | - abort active download (!) | 758 | g_signal_connect (child, "activate", |
861 | => need to know download status before creating menu! | 759 | G_CALLBACK (start_download_ctx_menu), NULL); |
862 | */ | 760 | gtk_label_set_use_underline (GTK_LABEL |
863 | menu = GTK_MENU (gtk_menu_new ()); | 761 | (gtk_bin_get_child (GTK_BIN (child))), |
864 | if (sr->download == NULL) | 762 | TRUE); |
865 | { | 763 | gtk_widget_show (child); |
866 | child = gtk_menu_item_new_with_label (_("_Download")); | 764 | } |
867 | g_signal_connect (child, | 765 | else |
868 | "activate", | 766 | { |
869 | G_CALLBACK (start_download_ctx_menu), | 767 | child = gtk_menu_item_new_with_label (_("_Abort download")); |
870 | NULL); | 768 | g_signal_connect (child, "activate", |
871 | gtk_label_set_use_underline (GTK_LABEL | 769 | G_CALLBACK (abort_download_ctx_menu), sr->download); |
872 | (gtk_bin_get_child (GTK_BIN (child))), | 770 | gtk_label_set_use_underline (GTK_LABEL |
873 | TRUE); | 771 | (gtk_bin_get_child (GTK_BIN (child))), |
874 | gtk_widget_show (child); | 772 | TRUE); |
875 | } | 773 | gtk_widget_show (child); |
876 | else | 774 | |
877 | { | 775 | } |
878 | child = gtk_menu_item_new_with_label (_("_Abort download")); | 776 | |
879 | g_signal_connect (child, | 777 | child = gtk_menu_item_new_with_label (_("_Copy URI to Clipboard")); |
880 | "activate", | 778 | g_signal_connect (child, "activate", |
881 | G_CALLBACK (abort_download_ctx_menu), | 779 | G_CALLBACK (copy_uri_to_clipboard_ctx_menu), NULL); |
882 | sr->download); | 780 | gtk_label_set_use_underline (GTK_LABEL |
883 | gtk_label_set_use_underline (GTK_LABEL | 781 | (gtk_bin_get_child (GTK_BIN (child))), TRUE); |
884 | (gtk_bin_get_child (GTK_BIN (child))), | 782 | gtk_widget_show (child); |
885 | TRUE); | 783 | |
886 | gtk_widget_show (child); | 784 | |
887 | 785 | ||
888 | } | 786 | gtk_menu_shell_append (GTK_MENU_SHELL (menu), child); |
889 | 787 | gtk_menu_popup (menu, NULL, NULL, NULL, NULL, event_button->button, | |
890 | child = gtk_menu_item_new_with_label (_("_Copy URI to Clipboard")); | 788 | event_button->time); |
891 | g_signal_connect (child, | ||
892 | "activate", | ||
893 | G_CALLBACK (copy_uri_to_clipboard_ctx_menu), | ||
894 | NULL); | ||
895 | gtk_label_set_use_underline (GTK_LABEL | ||
896 | (gtk_bin_get_child (GTK_BIN (child))), | ||
897 | TRUE); | ||
898 | gtk_widget_show (child); | ||
899 | |||
900 | |||
901 | |||
902 | gtk_menu_shell_append (GTK_MENU_SHELL (menu), child); | ||
903 | gtk_menu_popup (menu, NULL, NULL, NULL, NULL, | ||
904 | event_button->button, | ||
905 | event_button->time); | ||
906 | } | ||
907 | } | 789 | } |
790 | } | ||
908 | return FALSE; | 791 | return FALSE; |
909 | } | 792 | } |
910 | 793 | ||
@@ -914,8 +797,7 @@ search_list_on_menu(GtkWidget *widget, | |||
914 | * areas. | 797 | * areas. |
915 | */ | 798 | */ |
916 | static void | 799 | static void |
917 | update_meta_data_views (GtkTreeView *tv, | 800 | update_meta_data_views (GtkTreeView * tv, gpointer user_data) |
918 | gpointer user_data) | ||
919 | { | 801 | { |
920 | struct SearchTab *tab = user_data; | 802 | struct SearchTab *tab = user_data; |
921 | GtkImage *image; | 803 | GtkImage *image; |
@@ -927,36 +809,33 @@ update_meta_data_views (GtkTreeView *tv, | |||
927 | GdkPixbuf *pixbuf; | 809 | GdkPixbuf *pixbuf; |
928 | 810 | ||
929 | GNUNET_assert (tab->query_txt != NULL); | 811 | GNUNET_assert (tab->query_txt != NULL); |
930 | image = GTK_IMAGE (GNUNET_FS_GTK_get_main_window_object ("GNUNET_GTK_main_window_preview_image")); | 812 | image = |
931 | ms = GTK_LIST_STORE (GNUNET_FS_GTK_get_main_window_object ("GNUNET_GTK_meta_data_list_store")); | 813 | GTK_IMAGE (GNUNET_FS_GTK_get_main_window_object |
814 | ("GNUNET_GTK_main_window_preview_image")); | ||
815 | ms = GTK_LIST_STORE (GNUNET_FS_GTK_get_main_window_object | ||
816 | ("GNUNET_GTK_meta_data_list_store")); | ||
932 | 817 | ||
933 | sel = gtk_tree_view_get_selection (tv); | 818 | sel = gtk_tree_view_get_selection (tv); |
934 | gtk_list_store_clear (ms); | 819 | gtk_list_store_clear (ms); |
935 | if (TRUE != gtk_tree_selection_get_selected (sel, | 820 | if (TRUE != gtk_tree_selection_get_selected (sel, &model, &iter)) |
936 | &model, | 821 | { |
937 | &iter)) | 822 | gtk_image_clear (image); |
938 | { | 823 | return; |
939 | gtk_image_clear (image); | 824 | } |
940 | return; | ||
941 | } | ||
942 | meta = NULL; | 825 | meta = NULL; |
943 | pixbuf = NULL; | 826 | pixbuf = NULL; |
944 | gtk_tree_model_get (model, | 827 | gtk_tree_model_get (model, &iter, 0, &meta, 3, &pixbuf, -1); |
945 | &iter, | ||
946 | 0, &meta, | ||
947 | 3, &pixbuf, | ||
948 | -1); | ||
949 | if (pixbuf != NULL) | 828 | if (pixbuf != NULL) |
950 | { | 829 | { |
951 | gtk_image_set_from_pixbuf (image, pixbuf); | 830 | gtk_image_set_from_pixbuf (image, pixbuf); |
952 | g_object_unref (G_OBJECT (pixbuf)); | 831 | g_object_unref (G_OBJECT (pixbuf)); |
953 | } | 832 | } |
954 | if (meta != NULL) | 833 | if (meta != NULL) |
955 | { | 834 | { |
956 | GNUNET_CONTAINER_meta_data_iterate (meta, | 835 | GNUNET_CONTAINER_meta_data_iterate (meta, |
957 | &GNUNET_FS_GTK_add_meta_data_to_list_store, | 836 | &GNUNET_FS_GTK_add_meta_data_to_list_store, |
958 | ms); | 837 | ms); |
959 | } | 838 | } |
960 | } | 839 | } |
961 | 840 | ||
962 | 841 | ||
@@ -967,22 +846,16 @@ static void | |||
967 | update_search_label (struct SearchTab *tab) | 846 | update_search_label (struct SearchTab *tab) |
968 | { | 847 | { |
969 | char *name; | 848 | char *name; |
970 | 849 | ||
971 | while (tab->parent != NULL) | 850 | while (tab->parent != NULL) |
972 | tab = tab->parent->tab; | 851 | tab = tab->parent->tab; |
973 | if (tab->num_results > 0) | 852 | if (tab->num_results > 0) |
974 | GNUNET_asprintf (&name, | 853 | GNUNET_asprintf (&name, "%.*s%s (%u)", 20, tab->query_txt, |
975 | "%.*s%s (%u)", | 854 | strlen (tab->query_txt) > 20 ? "..." : "", |
976 | 20, | 855 | tab->num_results); |
977 | tab->query_txt, | ||
978 | strlen (tab->query_txt) > 20 ? "..." : "", | ||
979 | tab->num_results); | ||
980 | else | 856 | else |
981 | GNUNET_asprintf (&name, | 857 | GNUNET_asprintf (&name, "%.*s%s", 20, tab->query_txt, |
982 | "%.*s%s", | 858 | strlen (tab->query_txt) > 20 ? "..." : ""); |
983 | 20, | ||
984 | tab->query_txt, | ||
985 | strlen (tab->query_txt) > 20 ? "..." : ""); | ||
986 | gtk_label_set_text (tab->label, name); | 859 | gtk_label_set_text (tab->label, name); |
987 | GNUNET_free (name); | 860 | GNUNET_free (name); |
988 | } | 861 | } |
@@ -997,15 +870,17 @@ close_search_tab (struct SearchTab *tab) | |||
997 | GtkNotebook *notebook; | 870 | GtkNotebook *notebook; |
998 | int index; | 871 | int index; |
999 | int i; | 872 | int i; |
1000 | 873 | ||
1001 | if (tab->parent != NULL) | 874 | if (tab->parent != NULL) |
1002 | { | 875 | { |
1003 | /* not a top-level search, do not close tab here! */ | 876 | /* not a top-level search, do not close tab here! */ |
1004 | GNUNET_free (tab); | 877 | GNUNET_free (tab); |
1005 | return; | 878 | return; |
1006 | } | 879 | } |
1007 | 880 | ||
1008 | notebook = GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object ("GNUNET_GTK_main_window_notebook")); | 881 | notebook = |
882 | GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object | ||
883 | ("GNUNET_GTK_main_window_notebook")); | ||
1009 | index = -1; | 884 | index = -1; |
1010 | for (i = gtk_notebook_get_n_pages (notebook) - 1; i >= 0; i--) | 885 | for (i = gtk_notebook_get_n_pages (notebook) - 1; i >= 0; i--) |
1011 | if (tab->frame == gtk_notebook_get_nth_page (notebook, i)) | 886 | if (tab->frame == gtk_notebook_get_nth_page (notebook, i)) |
@@ -1013,9 +888,7 @@ close_search_tab (struct SearchTab *tab) | |||
1013 | gtk_notebook_remove_page (notebook, index); | 888 | gtk_notebook_remove_page (notebook, index); |
1014 | g_object_unref (tab->builder); | 889 | g_object_unref (tab->builder); |
1015 | GNUNET_free (tab->query_txt); | 890 | GNUNET_free (tab->query_txt); |
1016 | GNUNET_CONTAINER_DLL_remove (search_tab_head, | 891 | GNUNET_CONTAINER_DLL_remove (search_tab_head, search_tab_tail, tab); |
1017 | search_tab_tail, | ||
1018 | tab); | ||
1019 | GNUNET_free (tab); | 892 | GNUNET_free (tab); |
1020 | } | 893 | } |
1021 | 894 | ||
@@ -1025,11 +898,10 @@ close_search_tab (struct SearchTab *tab) | |||
1025 | */ | 898 | */ |
1026 | static struct PublishEntry * | 899 | static struct PublishEntry * |
1027 | handle_publish_completed (struct PublishEntry *ent, | 900 | handle_publish_completed (struct PublishEntry *ent, |
1028 | const struct GNUNET_FS_Uri *uri) | 901 | const struct GNUNET_FS_Uri *uri) |
1029 | { | 902 | { |
1030 | ent->uri = GNUNET_FS_uri_dup (uri); | 903 | ent->uri = GNUNET_FS_uri_dup (uri); |
1031 | return change_publish_colour (ent, | 904 | return change_publish_colour (ent, "green"); |
1032 | "green"); | ||
1033 | } | 905 | } |
1034 | 906 | ||
1035 | 907 | ||
@@ -1038,12 +910,10 @@ handle_publish_completed (struct PublishEntry *ent, | |||
1038 | * Handle error. | 910 | * Handle error. |
1039 | */ | 911 | */ |
1040 | static struct PublishEntry * | 912 | static struct PublishEntry * |
1041 | handle_publish_error (struct PublishEntry *ent, | 913 | handle_publish_error (struct PublishEntry *ent, const char *emsg) |
1042 | const char *emsg) | ||
1043 | { | 914 | { |
1044 | GNUNET_break (0); | 915 | GNUNET_break (0); |
1045 | return change_publish_colour (ent, | 916 | return change_publish_colour (ent, "red"); |
1046 | "red"); | ||
1047 | } | 917 | } |
1048 | 918 | ||
1049 | 919 | ||
@@ -1059,30 +929,30 @@ close_publish_tab (struct PublishEntry *ent) | |||
1059 | int i; | 929 | int i; |
1060 | 930 | ||
1061 | if (ent == NULL) | 931 | if (ent == NULL) |
1062 | { | 932 | { |
1063 | GNUNET_break (0); | 933 | GNUNET_break (0); |
1064 | return; | 934 | return; |
1065 | } | 935 | } |
1066 | gtk_tree_row_reference_free (ent->rr); | 936 | gtk_tree_row_reference_free (ent->rr); |
1067 | if (GNUNET_YES != ent->is_top) | 937 | if (GNUNET_YES != ent->is_top) |
1068 | { | 938 | { |
1069 | GNUNET_free (ent); | 939 | GNUNET_free (ent); |
1070 | return; | 940 | return; |
1071 | } | 941 | } |
1072 | tab = ent->tab; | 942 | tab = ent->tab; |
1073 | if (ent->uri != NULL) | 943 | if (ent->uri != NULL) |
1074 | GNUNET_FS_uri_destroy (ent->uri); | 944 | GNUNET_FS_uri_destroy (ent->uri); |
1075 | GNUNET_free (ent); | 945 | GNUNET_free (ent); |
1076 | notebook = GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object ("GNUNET_GTK_main_window_notebook")); | 946 | notebook = |
947 | GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object | ||
948 | ("GNUNET_GTK_main_window_notebook")); | ||
1077 | index = -1; | 949 | index = -1; |
1078 | for (i = gtk_notebook_get_n_pages (notebook) - 1; i >= 0; i--) | 950 | for (i = gtk_notebook_get_n_pages (notebook) - 1; i >= 0; i--) |
1079 | if (tab->frame == gtk_notebook_get_nth_page (notebook, i)) | 951 | if (tab->frame == gtk_notebook_get_nth_page (notebook, i)) |
1080 | index = i; | 952 | index = i; |
1081 | gtk_notebook_remove_page (notebook, index); | 953 | gtk_notebook_remove_page (notebook, index); |
1082 | g_object_unref (tab->builder); | 954 | g_object_unref (tab->builder); |
1083 | GNUNET_CONTAINER_DLL_remove (publish_tab_head, | 955 | GNUNET_CONTAINER_DLL_remove (publish_tab_head, publish_tab_tail, tab); |
1084 | publish_tab_tail, | ||
1085 | tab); | ||
1086 | GNUNET_free (tab); | 956 | GNUNET_free (tab); |
1087 | } | 957 | } |
1088 | 958 | ||
@@ -1091,15 +961,15 @@ close_publish_tab (struct PublishEntry *ent) | |||
1091 | * Tell FS to stop a search. | 961 | * Tell FS to stop a search. |
1092 | */ | 962 | */ |
1093 | static void | 963 | static void |
1094 | stop_search (GtkButton *button, | 964 | stop_search (GtkButton * button, gpointer user_data) |
1095 | gpointer user_data) | ||
1096 | { | 965 | { |
1097 | struct SearchTab *tab = user_data; | 966 | struct SearchTab *tab = user_data; |
967 | |||
1098 | if (tab->sc != NULL) | 968 | if (tab->sc != NULL) |
1099 | { | 969 | { |
1100 | GNUNET_FS_search_stop (tab->sc); | 970 | GNUNET_FS_search_stop (tab->sc); |
1101 | tab->sc = NULL; | 971 | tab->sc = NULL; |
1102 | } | 972 | } |
1103 | } | 973 | } |
1104 | 974 | ||
1105 | 975 | ||
@@ -1111,8 +981,7 @@ stop_search (GtkButton *button, | |||
1111 | * the tab should be closed. | 981 | * the tab should be closed. |
1112 | */ | 982 | */ |
1113 | static void | 983 | static void |
1114 | clear_downloads (GtkButton *button, | 984 | clear_downloads (GtkButton * button, gpointer user_data) |
1115 | gpointer user_data) | ||
1116 | { | 985 | { |
1117 | struct SearchTab *tab = user_data; | 986 | struct SearchTab *tab = user_data; |
1118 | struct SearchResult *sr; | 987 | struct SearchResult *sr; |
@@ -1123,15 +992,11 @@ clear_downloads (GtkButton *button, | |||
1123 | if (TRUE != gtk_tree_model_get_iter_first (tm, &iter)) | 992 | if (TRUE != gtk_tree_model_get_iter_first (tm, &iter)) |
1124 | return; | 993 | return; |
1125 | do | 994 | do |
1126 | { | 995 | { |
1127 | gtk_tree_model_get (tm, &iter, | 996 | gtk_tree_model_get (tm, &iter, 9, &sr, -1); |
1128 | 9, &sr, | 997 | if ((sr->download != NULL) && (sr->download->is_done == GNUNET_YES)) |
1129 | -1); | 998 | GNUNET_FS_download_stop (sr->download->dc, GNUNET_YES); |
1130 | if ( (sr->download != NULL) && | 999 | } |
1131 | (sr->download->is_done == GNUNET_YES) ) | ||
1132 | GNUNET_FS_download_stop (sr->download->dc, | ||
1133 | GNUNET_YES); | ||
1134 | } | ||
1135 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); | 1000 | while (TRUE == gtk_tree_model_iter_next (tm, &iter)); |
1136 | } | 1001 | } |
1137 | 1002 | ||
@@ -1141,16 +1006,16 @@ clear_downloads (GtkButton *button, | |||
1141 | * Tell FS to pause a search. | 1006 | * Tell FS to pause a search. |
1142 | */ | 1007 | */ |
1143 | static void | 1008 | static void |
1144 | pause_search (GtkButton *button, | 1009 | pause_search (GtkButton * button, gpointer user_data) |
1145 | gpointer user_data) | ||
1146 | { | 1010 | { |
1147 | struct SearchTab *tab = user_data; | 1011 | struct SearchTab *tab = user_data; |
1012 | |||
1148 | if (tab->sc != NULL) | 1013 | if (tab->sc != NULL) |
1149 | { | 1014 | { |
1150 | GNUNET_FS_search_pause (tab->sc); | 1015 | GNUNET_FS_search_pause (tab->sc); |
1151 | gtk_widget_show (tab->play_button); | 1016 | gtk_widget_show (tab->play_button); |
1152 | gtk_widget_hide (tab->pause_button); | 1017 | gtk_widget_hide (tab->pause_button); |
1153 | } | 1018 | } |
1154 | } | 1019 | } |
1155 | 1020 | ||
1156 | 1021 | ||
@@ -1158,16 +1023,16 @@ pause_search (GtkButton *button, | |||
1158 | * Tell FS to resume a search. | 1023 | * Tell FS to resume a search. |
1159 | */ | 1024 | */ |
1160 | static void | 1025 | static void |
1161 | continue_search (GtkButton *button, | 1026 | continue_search (GtkButton * button, gpointer user_data) |
1162 | gpointer user_data) | ||
1163 | { | 1027 | { |
1164 | struct SearchTab *tab = user_data; | 1028 | struct SearchTab *tab = user_data; |
1029 | |||
1165 | if (tab->sc != NULL) | 1030 | if (tab->sc != NULL) |
1166 | { | 1031 | { |
1167 | GNUNET_FS_search_continue (tab->sc); | 1032 | GNUNET_FS_search_continue (tab->sc); |
1168 | gtk_widget_show (tab->pause_button); | 1033 | gtk_widget_show (tab->pause_button); |
1169 | gtk_widget_hide (tab->play_button); | 1034 | gtk_widget_hide (tab->play_button); |
1170 | } | 1035 | } |
1171 | } | 1036 | } |
1172 | 1037 | ||
1173 | 1038 | ||
@@ -1180,7 +1045,7 @@ continue_search (GtkButton *button, | |||
1180 | */ | 1045 | */ |
1181 | static struct SearchTab * | 1046 | static struct SearchTab * |
1182 | setup_search (struct GNUNET_FS_SearchContext *sc, | 1047 | setup_search (struct GNUNET_FS_SearchContext *sc, |
1183 | const struct GNUNET_FS_Uri *query) | 1048 | const struct GNUNET_FS_Uri *query) |
1184 | { | 1049 | { |
1185 | struct SearchTab *tab; | 1050 | struct SearchTab *tab; |
1186 | GtkTreeView *tv; | 1051 | GtkTreeView *tv; |
@@ -1189,86 +1054,87 @@ setup_search (struct GNUNET_FS_SearchContext *sc, | |||
1189 | gint pages; | 1054 | gint pages; |
1190 | 1055 | ||
1191 | tab = GNUNET_malloc (sizeof (struct SearchTab)); | 1056 | tab = GNUNET_malloc (sizeof (struct SearchTab)); |
1192 | GNUNET_CONTAINER_DLL_insert (search_tab_head, | 1057 | GNUNET_CONTAINER_DLL_insert (search_tab_head, search_tab_tail, tab); |
1193 | search_tab_tail, | ||
1194 | tab); | ||
1195 | tab->sc = sc; | 1058 | tab->sc = sc; |
1196 | if (query == NULL) | 1059 | if (query == NULL) |
1197 | { | 1060 | { |
1198 | tab->query_txt = GNUNET_strdup ("*"); | 1061 | tab->query_txt = GNUNET_strdup ("*"); |
1199 | } | 1062 | } |
1200 | else | 1063 | else |
1201 | { | 1064 | { |
1202 | if (GNUNET_FS_uri_test_ksk (query)) | 1065 | if (GNUNET_FS_uri_test_ksk (query)) |
1203 | tab->query_txt = GNUNET_FS_uri_ksk_to_string_fancy (query); | 1066 | tab->query_txt = GNUNET_FS_uri_ksk_to_string_fancy (query); |
1204 | else | 1067 | else |
1205 | tab->query_txt = GNUNET_FS_uri_to_string (query); | 1068 | tab->query_txt = GNUNET_FS_uri_to_string (query); |
1206 | } | 1069 | } |
1207 | tab->builder = GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_search_tab.glade"); | 1070 | tab->builder = GNUNET_GTK_get_new_builder ("gnunet_fs_gtk_search_tab.glade"); |
1208 | tab->ts = GTK_TREE_STORE (gtk_builder_get_object (tab->builder, | 1071 | tab->ts = |
1209 | "GNUNET_GTK_file_sharing_result_tree_store")); | 1072 | GTK_TREE_STORE (gtk_builder_get_object |
1073 | (tab->builder, | ||
1074 | "GNUNET_GTK_file_sharing_result_tree_store")); | ||
1210 | /* load frame */ | 1075 | /* load frame */ |
1211 | sf = GTK_WINDOW (gtk_builder_get_object (tab->builder, | 1076 | sf = GTK_WINDOW (gtk_builder_get_object |
1212 | "_search_result_frame_window")); | 1077 | (tab->builder, "_search_result_frame_window")); |
1213 | tab->frame = gtk_bin_get_child (GTK_BIN (sf)); | 1078 | tab->frame = gtk_bin_get_child (GTK_BIN (sf)); |
1214 | gtk_widget_ref (tab->frame); | 1079 | gtk_widget_ref (tab->frame); |
1215 | gtk_container_remove (GTK_CONTAINER (sf), tab->frame); | 1080 | gtk_container_remove (GTK_CONTAINER (sf), tab->frame); |
1216 | gtk_widget_destroy (GTK_WIDGET (sf)); | 1081 | gtk_widget_destroy (GTK_WIDGET (sf)); |
1217 | 1082 | ||
1218 | /* load tab_label */ | 1083 | /* load tab_label */ |
1219 | sf = GTK_WINDOW (gtk_builder_get_object (tab->builder, | 1084 | sf = GTK_WINDOW (gtk_builder_get_object |
1220 | "_search_result_label_window")); | 1085 | (tab->builder, "_search_result_label_window")); |
1221 | tab->tab_label = gtk_bin_get_child (GTK_BIN (sf)); | 1086 | tab->tab_label = gtk_bin_get_child (GTK_BIN (sf)); |
1222 | gtk_widget_ref (tab->tab_label); | 1087 | gtk_widget_ref (tab->tab_label); |
1223 | gtk_container_remove (GTK_CONTAINER (sf), tab->tab_label); | 1088 | gtk_container_remove (GTK_CONTAINER (sf), tab->tab_label); |
1224 | gtk_widget_destroy (GTK_WIDGET (sf)); | 1089 | gtk_widget_destroy (GTK_WIDGET (sf)); |
1225 | 1090 | ||
1226 | /* get refs to widgets */ | 1091 | /* get refs to widgets */ |
1227 | tab->label = GTK_LABEL (gtk_builder_get_object (tab->builder, | 1092 | tab->label = |
1228 | "_search_result_label_window_label")); | 1093 | GTK_LABEL (gtk_builder_get_object |
1229 | 1094 | (tab->builder, "_search_result_label_window_label")); | |
1230 | tab->close_button = GTK_WIDGET (gtk_builder_get_object (tab->builder, | 1095 | |
1231 | "_search_result_label_close_button")); | 1096 | tab->close_button = |
1232 | g_signal_connect(G_OBJECT(tab->close_button), "clicked", | 1097 | GTK_WIDGET (gtk_builder_get_object |
1233 | G_CALLBACK(stop_search), tab); | 1098 | (tab->builder, "_search_result_label_close_button")); |
1234 | tab->clear_button = GTK_WIDGET (gtk_builder_get_object (tab->builder, | 1099 | g_signal_connect (G_OBJECT (tab->close_button), "clicked", |
1235 | "_search_result_label_clear_button")); | 1100 | G_CALLBACK (stop_search), tab); |
1236 | g_signal_connect(G_OBJECT(tab->clear_button), "clicked", | 1101 | tab->clear_button = |
1237 | G_CALLBACK(clear_downloads), tab); | 1102 | GTK_WIDGET (gtk_builder_get_object |
1238 | tab->play_button = GTK_WIDGET (gtk_builder_get_object (tab->builder, | 1103 | (tab->builder, "_search_result_label_clear_button")); |
1239 | "_search_result_label_play_button")); | 1104 | g_signal_connect (G_OBJECT (tab->clear_button), "clicked", |
1240 | g_signal_connect(G_OBJECT(tab->play_button), "clicked", | 1105 | G_CALLBACK (clear_downloads), tab); |
1241 | G_CALLBACK(continue_search), tab); | 1106 | tab->play_button = |
1242 | tab->pause_button = GTK_WIDGET (gtk_builder_get_object (tab->builder, | 1107 | GTK_WIDGET (gtk_builder_get_object |
1243 | "_search_result_label_pause_button")); | 1108 | (tab->builder, "_search_result_label_play_button")); |
1244 | g_signal_connect(G_OBJECT(tab->pause_button), "clicked", | 1109 | g_signal_connect (G_OBJECT (tab->play_button), "clicked", |
1245 | G_CALLBACK(pause_search), tab); | 1110 | G_CALLBACK (continue_search), tab); |
1111 | tab->pause_button = | ||
1112 | GTK_WIDGET (gtk_builder_get_object | ||
1113 | (tab->builder, "_search_result_label_pause_button")); | ||
1114 | g_signal_connect (G_OBJECT (tab->pause_button), "clicked", | ||
1115 | G_CALLBACK (pause_search), tab); | ||
1246 | /* patch text */ | 1116 | /* patch text */ |
1247 | update_search_label (tab); | 1117 | update_search_label (tab); |
1248 | 1118 | ||
1249 | /* add signal handlers */ | 1119 | /* add signal handlers */ |
1250 | tv = GTK_TREE_VIEW (gtk_builder_get_object (tab->builder, | 1120 | tv = GTK_TREE_VIEW (gtk_builder_get_object |
1251 | "_search_result_frame")); | 1121 | (tab->builder, "_search_result_frame")); |
1252 | g_signal_connect(G_OBJECT(tv), "row-activated", | 1122 | g_signal_connect (G_OBJECT (tv), "row-activated", G_CALLBACK (start_download), |
1253 | G_CALLBACK(start_download), tab); | 1123 | tab); |
1254 | g_signal_connect(G_OBJECT(tv), "cursor-changed", | 1124 | g_signal_connect (G_OBJECT (tv), "cursor-changed", |
1255 | G_CALLBACK(update_meta_data_views), tab); | 1125 | G_CALLBACK (update_meta_data_views), tab); |
1256 | g_signal_connect (G_OBJECT(tv), | 1126 | g_signal_connect (G_OBJECT (tv), "button_press_event", |
1257 | "button_press_event", | 1127 | G_CALLBACK (search_list_on_menu), tab); |
1258 | G_CALLBACK(search_list_on_menu), | 1128 | |
1259 | tab); | ||
1260 | |||
1261 | 1129 | ||
1262 | /* make visible */ | 1130 | /* make visible */ |
1263 | notebook = GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object ("GNUNET_GTK_main_window_notebook")); | 1131 | notebook = |
1132 | GTK_NOTEBOOK (GNUNET_FS_GTK_get_main_window_object | ||
1133 | ("GNUNET_GTK_main_window_notebook")); | ||
1264 | pages = gtk_notebook_get_n_pages (notebook); | 1134 | pages = gtk_notebook_get_n_pages (notebook); |
1265 | gtk_notebook_insert_page (notebook, | 1135 | gtk_notebook_insert_page (notebook, tab->frame, tab->tab_label, pages - 1); |
1266 | tab->frame, | 1136 | gtk_notebook_set_current_page (notebook, pages - 1); |
1267 | tab->tab_label, | 1137 | gtk_widget_show (GTK_WIDGET (notebook)); |
1268 | pages - 1); | ||
1269 | gtk_notebook_set_current_page (notebook, | ||
1270 | pages - 1); | ||
1271 | gtk_widget_show (GTK_WIDGET (notebook)); | ||
1272 | return tab; | 1138 | return tab; |
1273 | } | 1139 | } |
1274 | 1140 | ||
@@ -1282,7 +1148,7 @@ setup_search (struct GNUNET_FS_SearchContext *sc, | |||
1282 | */ | 1148 | */ |
1283 | static struct SearchTab * | 1149 | static struct SearchTab * |
1284 | setup_inner_search (struct GNUNET_FS_SearchContext *sc, | 1150 | setup_inner_search (struct GNUNET_FS_SearchContext *sc, |
1285 | struct SearchResult *parent) | 1151 | struct SearchResult *parent) |
1286 | { | 1152 | { |
1287 | struct SearchTab *ret; | 1153 | struct SearchTab *ret; |
1288 | 1154 | ||
@@ -1316,13 +1182,12 @@ setup_inner_search (struct GNUNET_FS_SearchContext *sc, | |||
1316 | * @return entry for the search result | 1182 | * @return entry for the search result |
1317 | */ | 1183 | */ |
1318 | struct SearchResult * | 1184 | struct SearchResult * |
1319 | GNUNET_GTK_add_search_result (struct SearchTab *tab, | 1185 | GNUNET_GTK_add_search_result (struct SearchTab *tab, GtkTreeIter * iter, |
1320 | GtkTreeIter *iter, | 1186 | GtkTreeRowReference * parent_rr, |
1321 | GtkTreeRowReference *parent_rr, | 1187 | const struct GNUNET_FS_Uri *uri, |
1322 | const struct GNUNET_FS_Uri *uri, | 1188 | const struct GNUNET_CONTAINER_MetaData *meta, |
1323 | const struct GNUNET_CONTAINER_MetaData *meta, | 1189 | struct GNUNET_FS_SearchResult *result, |
1324 | struct GNUNET_FS_SearchResult *result, | 1190 | uint32_t applicability_rank) |
1325 | uint32_t applicability_rank) | ||
1326 | { | 1191 | { |
1327 | struct SearchResult *sr; | 1192 | struct SearchResult *sr; |
1328 | GtkTreePath *tp; | 1193 | GtkTreePath *tp; |
@@ -1334,45 +1199,46 @@ GNUNET_GTK_add_search_result (struct SearchTab *tab, | |||
1334 | GtkTreeIter *pitr; | 1199 | GtkTreeIter *pitr; |
1335 | GtkTreeIter pmem; | 1200 | GtkTreeIter pmem; |
1336 | GtkTreePath *path; | 1201 | GtkTreePath *path; |
1337 | GtkTreeModel *tm; | 1202 | GtkTreeModel *tm; |
1338 | GtkTreeStore *ts; | 1203 | GtkTreeStore *ts; |
1339 | uint64_t fsize; | 1204 | uint64_t fsize; |
1340 | 1205 | ||
1341 | if ( (uri != NULL) && | 1206 | if ((uri != NULL) && (!GNUNET_FS_uri_test_loc (uri)) && |
1342 | (!GNUNET_FS_uri_test_loc (uri)) && | 1207 | (!GNUNET_FS_uri_test_chk (uri))) |
1343 | (!GNUNET_FS_uri_test_chk (uri)) ) | 1208 | { |
1344 | { | 1209 | fsize = 0; |
1345 | fsize = 0; | 1210 | mime = GNUNET_strdup ("GNUnet namespace"); |
1346 | mime = GNUNET_strdup ("GNUnet namespace"); | 1211 | status_colour = "lightgreen"; |
1347 | status_colour = "lightgreen"; | 1212 | } |
1348 | } | ||
1349 | else if (uri != NULL) | 1213 | else if (uri != NULL) |
1350 | { | 1214 | { |
1351 | fsize = GNUNET_FS_uri_chk_get_file_size (uri); | 1215 | fsize = GNUNET_FS_uri_chk_get_file_size (uri); |
1352 | mime = GNUNET_CONTAINER_meta_data_get_first_by_types (meta, | 1216 | mime = |
1353 | EXTRACTOR_METATYPE_MIMETYPE, | 1217 | GNUNET_CONTAINER_meta_data_get_first_by_types (meta, |
1354 | EXTRACTOR_METATYPE_FORMAT, | 1218 | EXTRACTOR_METATYPE_MIMETYPE, |
1355 | -1); | 1219 | EXTRACTOR_METATYPE_FORMAT, |
1356 | status_colour = "white"; | 1220 | -1); |
1357 | } | 1221 | status_colour = "white"; |
1222 | } | ||
1358 | else | 1223 | else |
1359 | { | 1224 | { |
1360 | fsize = 0; | 1225 | fsize = 0; |
1361 | status_colour = "gray"; | 1226 | status_colour = "gray"; |
1362 | mime = NULL; | 1227 | mime = NULL; |
1363 | } | 1228 | } |
1364 | desc = GNUNET_CONTAINER_meta_data_get_first_by_types (meta, | 1229 | desc = |
1365 | EXTRACTOR_METATYPE_PACKAGE_NAME, | 1230 | GNUNET_CONTAINER_meta_data_get_first_by_types (meta, |
1366 | EXTRACTOR_METATYPE_TITLE, | 1231 | EXTRACTOR_METATYPE_PACKAGE_NAME, |
1367 | EXTRACTOR_METATYPE_BOOK_TITLE, | 1232 | EXTRACTOR_METATYPE_TITLE, |
1368 | EXTRACTOR_METATYPE_FILENAME, | 1233 | EXTRACTOR_METATYPE_BOOK_TITLE, |
1369 | EXTRACTOR_METATYPE_DESCRIPTION, | 1234 | EXTRACTOR_METATYPE_FILENAME, |
1370 | EXTRACTOR_METATYPE_SUMMARY, | 1235 | EXTRACTOR_METATYPE_DESCRIPTION, |
1371 | EXTRACTOR_METATYPE_ALBUM, | 1236 | EXTRACTOR_METATYPE_SUMMARY, |
1372 | EXTRACTOR_METATYPE_COMMENT, | 1237 | EXTRACTOR_METATYPE_ALBUM, |
1373 | EXTRACTOR_METATYPE_SUBJECT, | 1238 | EXTRACTOR_METATYPE_COMMENT, |
1374 | EXTRACTOR_METATYPE_KEYWORDS, | 1239 | EXTRACTOR_METATYPE_SUBJECT, |
1375 | -1); | 1240 | EXTRACTOR_METATYPE_KEYWORDS, |
1241 | -1); | ||
1376 | if (desc == NULL) | 1242 | if (desc == NULL) |
1377 | desc = GNUNET_strdup (_("no description supplied")); | 1243 | desc = GNUNET_strdup (_("no description supplied")); |
1378 | if (uri == NULL) | 1244 | if (uri == NULL) |
@@ -1385,85 +1251,76 @@ GNUNET_GTK_add_search_result (struct SearchTab *tab, | |||
1385 | sr->result = result; | 1251 | sr->result = result; |
1386 | sr->tab = tab; | 1252 | sr->tab = tab; |
1387 | if (parent_rr != NULL) | 1253 | if (parent_rr != NULL) |
1254 | { | ||
1255 | /* get piter from parent */ | ||
1256 | path = gtk_tree_row_reference_get_path (parent_rr); | ||
1257 | tm = gtk_tree_row_reference_get_model (parent_rr); | ||
1258 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (tm), &pmem, path)) | ||
1388 | { | 1259 | { |
1389 | /* get piter from parent */ | 1260 | GNUNET_break (0); |
1390 | path = gtk_tree_row_reference_get_path (parent_rr); | 1261 | gtk_tree_path_free (path); |
1391 | tm = gtk_tree_row_reference_get_model (parent_rr); | 1262 | /* desperate measure: make top-level entry */ |
1392 | if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (tm), | ||
1393 | &pmem, path)) | ||
1394 | { | ||
1395 | GNUNET_break (0); | ||
1396 | gtk_tree_path_free (path); | ||
1397 | /* desperate measure: make top-level entry */ | ||
1398 | pitr = NULL; | ||
1399 | } | ||
1400 | else | ||
1401 | { | ||
1402 | pitr = &pmem; | ||
1403 | } | ||
1404 | ts = GTK_TREE_STORE (tm); | ||
1405 | } | ||
1406 | else | ||
1407 | { | ||
1408 | /* top-level result */ | ||
1409 | pitr = NULL; | 1263 | pitr = NULL; |
1410 | ts = tab->ts; | ||
1411 | } | 1264 | } |
1412 | gtk_tree_store_insert_with_values (ts, | 1265 | else |
1413 | iter, | ||
1414 | pitr, | ||
1415 | G_MAXINT, | ||
1416 | 0, GNUNET_CONTAINER_meta_data_duplicate (meta), | ||
1417 | 1, (uri == NULL) ? NULL : GNUNET_FS_uri_dup (uri), | ||
1418 | 2, (uri == NULL) ? 0 : fsize, | ||
1419 | 3, pixbuf /* preview */, | ||
1420 | 4, 0 /* percent progress */, | ||
1421 | 5, 0 /* percent availability */, | ||
1422 | 6, desc /* filename/description */, | ||
1423 | 7, uris, | ||
1424 | 8, status_colour, | ||
1425 | 9, sr, | ||
1426 | 10, mime, | ||
1427 | 11, applicability_rank, | ||
1428 | 12, 0 /* avail-cert */, | ||
1429 | 13, 0 /* avail-rank */, | ||
1430 | -1); | ||
1431 | if (tab != NULL) | ||
1432 | { | 1266 | { |
1433 | while (tab->parent != NULL) | 1267 | pitr = &pmem; |
1434 | tab = tab->parent->tab; | ||
1435 | tab->num_results++; | ||
1436 | } | 1268 | } |
1269 | ts = GTK_TREE_STORE (tm); | ||
1270 | } | ||
1271 | else | ||
1272 | { | ||
1273 | /* top-level result */ | ||
1274 | pitr = NULL; | ||
1275 | ts = tab->ts; | ||
1276 | } | ||
1277 | gtk_tree_store_insert_with_values (ts, iter, pitr, G_MAXINT, 0, | ||
1278 | GNUNET_CONTAINER_meta_data_duplicate | ||
1279 | (meta), 1, | ||
1280 | (uri == | ||
1281 | NULL) ? NULL : GNUNET_FS_uri_dup (uri), 2, | ||
1282 | (uri == NULL) ? 0 : fsize, 3, | ||
1283 | pixbuf /* preview */ , | ||
1284 | 4, 0 /* percent progress */ , | ||
1285 | 5, 0 /* percent availability */ , | ||
1286 | 6, desc /* filename/description */ , | ||
1287 | 7, uris, 8, status_colour, 9, sr, 10, mime, | ||
1288 | 11, applicability_rank, 12, | ||
1289 | 0 /* avail-cert */ , | ||
1290 | 13, 0 /* avail-rank */ , | ||
1291 | -1); | ||
1292 | if (tab != NULL) | ||
1293 | { | ||
1294 | while (tab->parent != NULL) | ||
1295 | tab = tab->parent->tab; | ||
1296 | tab->num_results++; | ||
1297 | } | ||
1437 | if (pixbuf != NULL) | 1298 | if (pixbuf != NULL) |
1438 | g_object_unref (pixbuf); | 1299 | g_object_unref (pixbuf); |
1439 | GNUNET_free (uris); | 1300 | GNUNET_free (uris); |
1440 | GNUNET_free (desc); | 1301 | GNUNET_free (desc); |
1441 | GNUNET_free_non_null (mime); | 1302 | GNUNET_free_non_null (mime); |
1442 | tp = gtk_tree_model_get_path (GTK_TREE_MODEL (ts), | 1303 | tp = gtk_tree_model_get_path (GTK_TREE_MODEL (ts), iter); |
1443 | iter); | 1304 | sr->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (ts), tp); |
1444 | sr->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (ts), | ||
1445 | tp); | ||
1446 | gtk_tree_path_free (tp); | 1305 | gtk_tree_path_free (tp); |
1447 | return sr; | 1306 | return sr; |
1448 | } | 1307 | } |
1449 | 1308 | ||
1450 | 1309 | ||
1451 | static struct SearchResult * | 1310 | static struct SearchResult * |
1452 | process_search_result (void *cls, | 1311 | process_search_result (void *cls, struct SearchResult *parent, |
1453 | struct SearchResult *parent, | 1312 | const struct GNUNET_FS_Uri *uri, |
1454 | const struct GNUNET_FS_Uri *uri, | 1313 | const struct GNUNET_CONTAINER_MetaData *meta, |
1455 | const struct GNUNET_CONTAINER_MetaData *meta, | 1314 | struct GNUNET_FS_SearchResult *result, |
1456 | struct GNUNET_FS_SearchResult *result, | 1315 | uint32_t applicability_rank) |
1457 | uint32_t applicability_rank) | ||
1458 | { | 1316 | { |
1459 | struct SearchTab *tab = cls; | 1317 | struct SearchTab *tab = cls; |
1460 | struct SearchResult *sr; | 1318 | struct SearchResult *sr; |
1461 | GtkTreeIter iter; | 1319 | GtkTreeIter iter; |
1462 | 1320 | ||
1463 | sr = GNUNET_GTK_add_search_result (tab, &iter, | 1321 | sr = GNUNET_GTK_add_search_result (tab, &iter, |
1464 | (parent != NULL) ? parent->rr : NULL, | 1322 | (parent != NULL) ? parent->rr : NULL, uri, |
1465 | uri, | 1323 | meta, result, applicability_rank); |
1466 | meta, result, applicability_rank); | ||
1467 | update_search_label (tab); | 1324 | update_search_label (tab); |
1468 | return sr; | 1325 | return sr; |
1469 | } | 1326 | } |
@@ -1480,10 +1337,9 @@ process_search_result (void *cls, | |||
1480 | * @return NULL on error, otherwise tree store matching iter | <