Changeset 7271
- Timestamp:
- Dec 4, 2008, 5:02:37 PM (12 years ago)
- Location:
- trunk/gtk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gtk/tr-window.c
r7261 r7271 84 84 GtkWidget * stats_lb; 85 85 GtkWidget * gutter_lb; 86 GSList * toggles; 86 87 GtkTreeSelection * selection; 87 88 GtkCellRenderer * renderer; … … 257 258 }; 258 259 260 const char * filter_names[FILTER_MODE_QTY] = { 261 /* show all torrents */ 262 N_( "A_ll" ), 263 /* show only torrents that have connected peers */ 264 N_( "_Active" ), 265 /* show only torrents that are trying to download */ 266 N_( "_Downloading" ), 267 /* show only torrents that are trying to upload */ 268 N_( "_Seeding" ), 269 /* show only torrents that are paused */ 270 N_( "_Paused" ) 271 }; 272 259 273 static void 260 274 status_menu_toggled_cb( GtkCheckMenuItem * menu_item, … … 380 394 refilter( p ); 381 395 } 396 } 397 398 static void 399 update_toggle( GtkToggleButton * toggle, 400 gpointer vprivate ) 401 { 402 PrivateData * p = vprivate; 403 GtkWidget * l; 404 const filter_mode_t mode = 405 GPOINTER_TO_UINT( g_object_get_data( G_OBJECT( toggle ), 406 FILTER_MODE_KEY ) ); 407 const char * mnemonic = (char *) g_object_get_data( G_OBJECT( toggle ), "title"); 408 409 char buf[128]; 410 int filtercount = 0; 411 412 tr_session * session = tr_core_session(p->core); 413 tr_torrent * torrent = tr_torrentNext(session, 0); 414 415 while (torrent) { 416 if (checkFilterMode(mode, torrent)) 417 filtercount++; 418 torrent = tr_torrentNext(session, torrent); 419 } 420 421 l = gtk_bin_get_child( GTK_BIN( toggle ) ); 422 if( filtercount ) 423 g_snprintf( buf, sizeof( buf ), "%s (%d)", mnemonic, filtercount ); 424 else 425 g_snprintf( buf, sizeof( buf ), "%s", mnemonic ); 426 gtk_label_set_markup_with_mnemonic( GTK_LABEL( l ), buf ); 427 428 //ccc 429 // gtk_button_set_label( GTK_BUTTON( toggle ), buf); 382 430 } 383 431 … … 395 443 GPOINTER_TO_UINT( g_object_get_data( G_OBJECT( toggle ), 396 444 FILTER_MODE_KEY ) ); 397 445 398 446 /* update the filter */ 399 447 if( isActive ) … … 407 455 { 408 456 GtkToggleButton * walk = GTK_TOGGLE_BUTTON( l->data ); 457 update_toggle(walk, vprivate); 409 458 if( isActive && ( toggle != walk ) ) 410 459 gtk_toggle_button_set_active( walk, FALSE ); … … 509 558 GSList * l; 510 559 GSList * toggles; 511 const char * filter_names[FILTER_MODE_QTY] = { 512 /* show all torrents */ 513 N_( "A_ll" ), 514 /* show only torrents that have connected peers */ 515 N_( "_Active" ), 516 /* show only torrents that are trying to download */ 517 N_( "_Downloading" ), 518 /* show only torrents that are trying to upload */ 519 N_( "_Seeding" ), 520 /* show only torrents that are paused */ 521 N_( "_Paused" ) 522 }; 560 523 561 const char * filter_text_names[FILTER_TEXT_MODE_QTY] = { 524 562 N_( "Name" ), N_( "Files" ), N_( "Tracker" ) … … 564 602 /* filter */ 565 603 toggles = NULL; 566 h = p->filter = gtk_hbox_new( FALSE, 0);604 h = p->filter = gtk_hbox_new( FALSE, GUI_PAD ); 567 605 gtk_container_set_border_width( GTK_CONTAINER( h ), GUI_PAD_SMALL ); 568 606 for( i = 0; i < FILTER_MODE_QTY; ++i ) 569 607 { 570 608 const char * mnemonic = _( filter_names[i] ); 571 w = gtk_toggle_button_new_with_mnemonic( mnemonic ); 572 g_object_set_data( G_OBJECT( w ), FILTER_MODE_KEY, 573 GINT_TO_POINTER( i ) ); 609 GtkWidget * label; 610 w = gtk_toggle_button_new( ); 611 label = gtk_label_new_with_mnemonic( mnemonic ); 612 gtk_container_add( GTK_CONTAINER( w ), label ); 613 g_object_set_data( G_OBJECT( w ), FILTER_MODE_KEY, GINT_TO_POINTER( i ) ); 574 614 gtk_button_set_relief( GTK_BUTTON( w ), GTK_RELIEF_NONE ); 575 gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( 576 w ), i == FILTER_MODE_ALL ); 615 gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), i == FILTER_MODE_ALL ); 577 616 toggles = g_slist_prepend( toggles, w ); 578 617 g_signal_connect( w, "toggled", G_CALLBACK( filter_toggled_cb ), p ); 579 618 gtk_box_pack_start( GTK_BOX( h ), w, FALSE, FALSE, 0 ); 619 g_object_set_data( G_OBJECT( w ), "title", mnemonic); 580 620 } 581 621 for( l = toggles; l != NULL; l = l->next ) 582 622 g_object_set_data( G_OBJECT( l->data ), FILTER_TOGGLES_KEY, toggles ); 623 p->toggles = toggles; 583 624 s = sexy_icon_entry_new( ); 584 625 sexy_icon_entry_add_clear_button( SEXY_ICON_ENTRY( s ) ); … … 687 728 688 729 filter_entry_changed( GTK_EDITABLE( s ), p ); 730 731 for( l = toggles; l != NULL; l = l->next ) { 732 update_toggle(GTK_TOGGLE_BUTTON( l->data ), p); 733 } 689 734 return self; 690 735 } … … 787 832 { 788 833 PrivateData * p = get_private_data( self ); 834 GSList * l; 789 835 790 836 if( p && p->core && tr_core_session( p->core ) ) … … 794 840 updateStats( p ); 795 841 refilter( p ); 842 for( l = p->toggles; l != NULL; l = l->next ) { 843 update_toggle(GTK_TOGGLE_BUTTON( l->data ), p); 844 } 796 845 } 797 846 } -
trunk/gtk/util.h
r6807 r7271 42 42 /* return a human-readable string for the size given in bytes. */ 43 43 char* tr_strlsize( char * buf, 44 uint64_tsize,44 guint64 size, 45 45 size_t buflen ); 46 46
Note: See TracChangeset
for help on using the changeset viewer.