pidgin/pidginstock.c

branch
next.minor
changeset 29641
e54552cf87d8
parent 29514
7b39d4c94f2e
child 29653
5492cf7eb5b7
equal deleted inserted replaced
29640:e97688dcc88a 29641:e54552cf87d8
196 { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I }, 196 { PIDGIN_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I },
197 { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL }, 197 { PIDGIN_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
198 { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL }, 198 { PIDGIN_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
199 { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I }, 199 { PIDGIN_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I },
200 { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, 200 { PIDGIN_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
201 { PIDGIN_STOCK_STATUS_MESSAGE, "toolbar", "message-new.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }, 201 { PIDGIN_STOCK_STATUS_MESSAGE, "toolbar", "message-new.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL }
202 };
203
204 const SizedStockIcon sized_tray_icons [] = {
202 205
203 { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, 206 { PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
204 { PIDGIN_STOCK_TRAY_INVISIBLE, "tray", "tray-invisible.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, 207 { PIDGIN_STOCK_TRAY_INVISIBLE, "tray", "tray-invisible.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
205 { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, 208 { PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
206 { PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL }, 209 { PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
330 return file_full; 333 return file_full;
331 } 334 }
332 335
333 static void 336 static void
334 add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, PidginIconTheme *theme, 337 add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, PidginIconTheme *theme,
335 const char *size, SizedStockIcon sized_icon, gboolean translucent) 338 const char *size, SizedStockIcon sized_icon, gboolean translucent,
339 gboolean size_wildcarded)
336 { 340 {
337 char *filename; 341 char *filename;
338 GtkIconSource *source; 342 GtkIconSource *source;
339 GdkPixbuf *pixbuf; 343 GdkPixbuf *pixbuf;
340 344
347 source = gtk_icon_source_new(); 351 source = gtk_icon_source_new();
348 gtk_icon_source_set_pixbuf(source, pixbuf); 352 gtk_icon_source_set_pixbuf(source, pixbuf);
349 gtk_icon_source_set_direction(source, GTK_TEXT_DIR_LTR); 353 gtk_icon_source_set_direction(source, GTK_TEXT_DIR_LTR);
350 gtk_icon_source_set_direction_wildcarded(source, !sized_icon.rtl); 354 gtk_icon_source_set_direction_wildcarded(source, !sized_icon.rtl);
351 gtk_icon_source_set_size(source, sizeid); 355 gtk_icon_source_set_size(source, sizeid);
352 gtk_icon_source_set_size_wildcarded(source, FALSE); 356 gtk_icon_source_set_size_wildcarded(source, size_wildcarded);
353 gtk_icon_source_set_state_wildcarded(source, TRUE); 357 gtk_icon_source_set_state_wildcarded(source, TRUE);
354 gtk_icon_set_add_source(iconset, source); 358 gtk_icon_set_add_source(iconset, source);
355 gtk_icon_source_free(source); 359 gtk_icon_source_free(source);
356 360
357 if (sizeid == gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)) { 361 if (sizeid == gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)) {
358 source = gtk_icon_source_new(); 362 source = gtk_icon_source_new();
359 gtk_icon_source_set_pixbuf(source, pixbuf); 363 gtk_icon_source_set_pixbuf(source, pixbuf);
360 gtk_icon_source_set_direction_wildcarded(source, TRUE); 364 gtk_icon_source_set_direction_wildcarded(source, TRUE);
361 gtk_icon_source_set_size(source, GTK_ICON_SIZE_MENU); 365 gtk_icon_source_set_size(source, GTK_ICON_SIZE_MENU);
362 gtk_icon_source_set_size_wildcarded(source, FALSE); 366 gtk_icon_source_set_size_wildcarded(source, size_wildcarded);
363 gtk_icon_source_set_state_wildcarded(source, TRUE); 367 gtk_icon_source_set_state_wildcarded(source, TRUE);
364 gtk_icon_set_add_source(iconset, source); 368 gtk_icon_set_add_source(iconset, source);
365 gtk_icon_source_free(source); 369 gtk_icon_source_free(source);
366 } 370 }
367 g_free(filename); 371 g_free(filename);
377 source = gtk_icon_source_new(); 381 source = gtk_icon_source_new();
378 gtk_icon_source_set_pixbuf(source, pixbuf); 382 gtk_icon_source_set_pixbuf(source, pixbuf);
379 gtk_icon_source_set_filename(source, filename); 383 gtk_icon_source_set_filename(source, filename);
380 gtk_icon_source_set_direction(source, GTK_TEXT_DIR_RTL); 384 gtk_icon_source_set_direction(source, GTK_TEXT_DIR_RTL);
381 gtk_icon_source_set_size(source, sizeid); 385 gtk_icon_source_set_size(source, sizeid);
382 gtk_icon_source_set_size_wildcarded(source, FALSE); 386 gtk_icon_source_set_size_wildcarded(source, size_wildcarded);
383 gtk_icon_source_set_state_wildcarded(source, TRUE); 387 gtk_icon_source_set_state_wildcarded(source, TRUE);
384 gtk_icon_set_add_source(iconset, source); 388 gtk_icon_set_add_source(iconset, source);
385 g_free(filename); 389 g_free(filename);
386 g_object_unref(pixbuf); 390 g_object_unref(pixbuf);
387 gtk_icon_source_free(source); 391 gtk_icon_source_free(source);
433 if (sized_status_icons[i].translucent_name) 437 if (sized_status_icons[i].translucent_name)
434 translucent = gtk_icon_set_new(); 438 translucent = gtk_icon_set_new();
435 439
436 #define ADD_SIZED_ICON(name, size) \ 440 #define ADD_SIZED_ICON(name, size) \
437 if (sized_status_icons[i].name) { \ 441 if (sized_status_icons[i].name) { \
438 add_sized_icon(normal, name, PIDGIN_ICON_THEME(theme), size, sized_status_icons[i], FALSE); \ 442 add_sized_icon(normal, name, PIDGIN_ICON_THEME(theme), size, sized_status_icons[i], FALSE, FALSE); \
439 if (sized_status_icons[i].translucent_name) \ 443 if (sized_status_icons[i].translucent_name) \
440 add_sized_icon(translucent, name, PIDGIN_ICON_THEME(theme), size, sized_status_icons[i], TRUE); \ 444 add_sized_icon(translucent, name, PIDGIN_ICON_THEME(theme), size, sized_status_icons[i], TRUE, FALSE); \
441 } 445 }
442 ADD_SIZED_ICON(microscopic, "11"); 446 ADD_SIZED_ICON(microscopic, "11");
443 ADD_SIZED_ICON(extra_small, "16"); 447 ADD_SIZED_ICON(extra_small, "16");
444 ADD_SIZED_ICON(small, "22"); 448 ADD_SIZED_ICON(small, "22");
445 ADD_SIZED_ICON(medium, "32"); 449 ADD_SIZED_ICON(medium, "32");
454 gtk_icon_factory_add(icon_factory, sized_status_icons[i].translucent_name, translucent); 458 gtk_icon_factory_add(icon_factory, sized_status_icons[i].translucent_name, translucent);
455 gtk_icon_set_unref(translucent); 459 gtk_icon_set_unref(translucent);
456 } 460 }
457 } 461 }
458 462
463 for (i = 0; i < G_N_ELEMENTS(sized_tray_icons); i++)
464 {
465 normal = gtk_icon_set_new();
466 if (sized_tray_icons[i].translucent_name)
467 translucent = gtk_icon_set_new();
468
469 #define ADD_SIZED_ICON(name, size) \
470 if (sized_tray_icons[i].name) { \
471 add_sized_icon(normal, name, PIDGIN_ICON_THEME(theme), size, sized_tray_icons[i], FALSE, TRUE); \
472 if (sized_tray_icons[i].translucent_name) \
473 add_sized_icon(translucent, name, PIDGIN_ICON_THEME(theme), size, sized_tray_icons[i], TRUE, TRUE); \
474 }
475 ADD_SIZED_ICON(microscopic, "11");
476 ADD_SIZED_ICON(extra_small, "16");
477 ADD_SIZED_ICON(small, "22");
478 ADD_SIZED_ICON(medium, "32");
479 ADD_SIZED_ICON(large, "48");
480 ADD_SIZED_ICON(huge, "64");
481 #undef ADD_SIZED_ICON
482
483 gtk_icon_factory_add(icon_factory, sized_tray_icons[i].name, normal);
484 gtk_icon_set_unref(normal);
485
486 if (sized_tray_icons[i].translucent_name) {
487 gtk_icon_factory_add(icon_factory, sized_tray_icons[i].translucent_name, translucent);
488 gtk_icon_set_unref(translucent);
489 }
490 }
491
459 gtk_widget_destroy(win); 492 gtk_widget_destroy(win);
460 g_object_unref(G_OBJECT(icon_factory)); 493 g_object_unref(G_OBJECT(icon_factory));
461 reload_settings(); 494 reload_settings();
462 } 495 }
463 496
525 { 558 {
526 GtkIconSet *iconset = gtk_icon_set_new(); 559 GtkIconSet *iconset = gtk_icon_set_new();
527 560
528 #define ADD_SIZED_ICON(name, size) \ 561 #define ADD_SIZED_ICON(name, size) \
529 if (sized_stock_icons[i].name) \ 562 if (sized_stock_icons[i].name) \
530 add_sized_icon(iconset, name, PIDGIN_ICON_THEME(theme), size, sized_stock_icons[i], FALSE); 563 add_sized_icon(iconset, name, PIDGIN_ICON_THEME(theme), size, sized_stock_icons[i], FALSE, FALSE);
531 ADD_SIZED_ICON(microscopic, "11"); 564 ADD_SIZED_ICON(microscopic, "11");
532 ADD_SIZED_ICON(extra_small, "16"); 565 ADD_SIZED_ICON(extra_small, "16");
533 ADD_SIZED_ICON(small, "22"); 566 ADD_SIZED_ICON(small, "22");
534 ADD_SIZED_ICON(medium, "32"); 567 ADD_SIZED_ICON(medium, "32");
535 ADD_SIZED_ICON(large, "48"); 568 ADD_SIZED_ICON(large, "48");

mercurial