Changeset 10079


Ignore:
Timestamp:
Feb 2, 2010, 7:51:45 AM (12 years ago)
Author:
charles
Message:

(trunk gtk) "Priority Selection in `Add' window" -- implemented for GTK+ client

Location:
trunk/gtk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/add-dialog.c

    r9969 r10079  
    8888    GtkWidget *  run_check;
    8989    GtkWidget *  trash_check;
     90    GtkWidget *  priority_combo;
    9091    char *       filename;
    9192    char *       downloadDir;
     
    121122        else
    122123        {
     124            tr_torrent * tor = tr_torrent_handle( data->gtor );
     125
     126            tr_torrentSetPriority( tor, gtr_priority_combo_get_value( data->priority_combo ) );
     127
    123128            if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( data->run_check ) ) )
    124                 tr_torrentStart( tr_torrent_handle( data->gtor ) );
     129                tr_torrentStart( tor );
    125130
    126131            tr_core_add_torrent( data->core, data->gtor, FALSE );
     
    204209
    205210static void
    206 verifyRequested( GtkButton * button UNUSED,
    207                  gpointer           gdata )
     211verifyRequested( GtkButton * button UNUSED, gpointer gdata )
    208212{
    209213    struct AddData * data = gdata;
     
    254258
    255259GtkWidget*
    256 addSingleTorrentDialog( GtkWindow * parent,
    257                         TrCore *    core,
    258                         tr_ctor *   ctor )
     260addSingleTorrentDialog( GtkWindow * parent, TrCore * core, tr_ctor * ctor )
    259261{
    260262    int              row;
     
    272274
    273275    /* make the dialog */
    274     d = gtk_dialog_new_with_buttons( _(
    275                                          "Torrent Options" ), parent,
     276    d = gtk_dialog_new_with_buttons( _( "Torrent Options" ), parent,
    276277                                     GTK_DIALOG_DESTROY_WITH_PARENT |
    277278                                     GTK_DIALOG_NO_SEPARATOR,
     
    301302    data->run_check = gtk_check_button_new_with_mnemonic( str );
    302303
     304    data->priority_combo = gtr_priority_combo_new( );
     305    gtr_priority_combo_set_value( data->priority_combo, TR_PRI_NORMAL );
     306
    303307    g_signal_connect( G_OBJECT( d ), "response",
    304308                      G_CALLBACK( addResponseCB ), data );
     
    312316    l = gtk_label_new_with_mnemonic( _( "_Torrent file:" ) );
    313317    gtk_misc_set_alignment( GTK_MISC( l ), 0.0f, 0.5f );
    314     gtk_table_attach( GTK_TABLE(
    315                           t ), l, col, col + 1, row, row + 1, GTK_FILL, 0,
    316                       0, 0 );
     318    gtk_table_attach( GTK_TABLE( t ), l, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0 );
    317319    ++col;
    318320    w = gtk_file_chooser_button_new( _( "Select Source File" ),
    319321                                     GTK_FILE_CHOOSER_ACTION_OPEN );
    320322    source_chooser = w;
    321     gtk_table_attach( GTK_TABLE(
    322                           t ), w, col, col + 1, row, row + 1, ~0, 0, 0, 0 );
     323    gtk_table_attach( GTK_TABLE( t ), w, col, col + 1, row, row + 1, ~0, 0, 0, 0 );
    323324    gtk_label_set_mnemonic_widget( GTK_LABEL( l ), w );
    324325    addTorrentFilters( GTK_FILE_CHOOSER( w ) );
     
    330331    l = gtk_label_new_with_mnemonic( _( "_Destination folder:" ) );
    331332    gtk_misc_set_alignment( GTK_MISC( l ), 0.0f, 0.5f );
    332     gtk_table_attach( GTK_TABLE(
    333                           t ), l, col, col + 1, row, row + 1, GTK_FILL, 0,
    334                       0, 0 );
     333    gtk_table_attach( GTK_TABLE( t ), l, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0 );
    335334    ++col;
    336     w = gtk_file_chooser_button_new( _(
    337                                          "Select Destination Folder" ),
     335    w = gtk_file_chooser_button_new( _( "Select Destination Folder" ),
    338336                                     GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER );
    339337    if( !gtk_file_chooser_set_filename( GTK_FILE_CHOOSER( w ),
     
    342340    list = get_recent_destinations( );
    343341    for( walk = list; walk; walk = walk->next )
    344         gtk_file_chooser_add_shortcut_folder( GTK_FILE_CHOOSER(
    345                                                   w ), walk->data, NULL );
     342        gtk_file_chooser_add_shortcut_folder( GTK_FILE_CHOOSER( w ), walk->data, NULL );
    346343    g_slist_free( list );
    347     gtk_table_attach( GTK_TABLE(
    348                           t ), w, col, col + 1, row, row + 1, ~0, 0, 0, 0 );
     344    gtk_table_attach( GTK_TABLE( t ), w, col, col + 1, row, row + 1, ~0, 0, 0, 0 );
    349345    gtk_label_set_mnemonic_widget( GTK_LABEL( l ), w );
    350346    g_signal_connect( w, "selection-changed",
     
    355351    w = data->list;
    356352    gtk_widget_set_size_request ( w, 466u, 300u );
    357     gtk_table_attach_defaults( GTK_TABLE(
    358                                    t ), w, col, col + 2, row, row + 1 );
     353    gtk_table_attach_defaults( GTK_TABLE( t ), w, col, col + 2, row, row + 1 );
    359354
    360355    ++row;
    361356    col = 0;
    362     w = gtk_button_new_with_mnemonic( _( "_Verify Local Data" ) );
    363     gtk_table_attach( GTK_TABLE(
    364                           t ), w, col, col + 1, row, row + 1, GTK_FILL, 0,
    365                       0, 0 );
    366     g_signal_connect( w, "clicked", G_CALLBACK( verifyRequested ), data );
     357    w = gtk_label_new_with_mnemonic( _( "Torrent _priority:" ) );
     358    gtk_misc_set_alignment( GTK_MISC( w ), 0.0f, 0.5f );
     359    gtk_table_attach_defaults( GTK_TABLE( t ), w, col, col + 1, row, row + 1 );
     360    ++col;
     361    gtk_table_attach_defaults( GTK_TABLE( t ), data->priority_combo, col, col + 1, row, row + 1 );
     362    gtk_label_set_mnemonic_widget( GTK_LABEL( w ), data->priority_combo );
    367363
    368364    ++row;
     
    372368        g_assert_not_reached( );
    373369    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), !flag );
    374     gtk_table_attach( GTK_TABLE(
    375                           t ), w, col, col + 2, row, row + 1, GTK_FILL, 0,
    376                       0, 0 );
     370    gtk_table_attach( GTK_TABLE( t ), w, col, col + 2, row, row + 1, GTK_FILL, 0, 0, 0 );
    377371
    378372    ++row;
     
    382376        g_assert_not_reached( );
    383377    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), flag );
    384     gtk_table_attach( GTK_TABLE(
    385                           t ), w, col, col + 2, row, row + 1, GTK_FILL, 0,
    386                       0, 0 );
     378    gtk_table_attach( GTK_TABLE( t ), w, col, col + 2, row, row + 1, GTK_FILL, 0, 0, 0 );
     379
     380    ++row;
     381    col = 0;
     382    w = data->priority_combo;
    387383
    388384    /* trigger sourceChanged, either directly or indirectly,
  • trunk/gtk/details.c

    r10077 r10079  
    177177
    178178static void
    179 set_int_combo_if_different( GtkWidget * w, guint tag, int column, int value )
    180 {
    181     int i;
    182     int currentValue;
    183     GtkTreeIter iter;
    184     GtkComboBox * combobox = GTK_COMBO_BOX( w );
    185     GtkTreeModel * model = gtk_combo_box_get_model( combobox );
    186 
    187     /* do the value and current value match? */
    188     if( gtk_combo_box_get_active_iter( combobox, &iter ) ) {
    189         gtk_tree_model_get( model, &iter, column, &currentValue, -1 );
    190         if( currentValue == value )
    191             return;
    192     }
    193 
    194     /* find the one to select */
    195     i = 0;
    196     while(( gtk_tree_model_iter_nth_child( model, &iter, NULL, i++ ))) {
    197         gtk_tree_model_get( model, &iter, column, &currentValue, -1 );
    198         if( currentValue == value ) {
    199             g_signal_handler_block( combobox, tag );
    200             gtk_combo_box_set_active_iter( combobox, &iter );
    201             g_signal_handler_unblock( combobox, tag );
    202             return;
    203         }
    204     }
    205 }
    206 
    207 static void
    208179unset_combo( GtkWidget * w, guint tag )
    209180{
     
    289260            if( baseline != tr_torrentGetPriority( torrents[i] ) )
    290261                break;
    291         if( i == n )
    292             set_int_combo_if_different( di->bandwidthCombo,
    293                                         di->bandwidthComboTag, 0, baseline );
     262        if( i == n ) {
     263            g_signal_handler_block( di->bandwidthCombo, di->bandwidthComboTag );
     264            gtr_priority_combo_set_value( di->bandwidthCombo, baseline );
     265            g_signal_handler_unblock( di->bandwidthCombo, di->bandwidthComboTag );
     266        }
    294267        else
    295268            unset_combo( di->bandwidthCombo, di->bandwidthComboTag );
     
    448421onPriorityChanged( GtkComboBox * w, struct DetailsImpl * di )
    449422{
    450     GtkTreeIter iter;
    451 
    452     if( gtk_combo_box_get_active_iter( w, &iter ) )
    453     {
    454         int val = 0;
    455         gtk_tree_model_get( gtk_combo_box_get_model( w ), &iter, 0, &val, -1 );
    456         torrent_set_int( di, "bandwidthPriority", val );
    457     }
     423    const tr_priority_t priority = gtr_priority_combo_get_value( GTK_WIDGET( w ) );
     424    torrent_set_int( di, "bandwidthPriority", priority );
    458425}
    459426
     
    461428new_priority_combo( struct DetailsImpl * di )
    462429{
    463     int i;
    464     guint tag;
    465     GtkWidget * w;
    466     GtkCellRenderer * r;
    467     GtkListStore * store;
    468     const struct {
    469         int value;
    470         const char * text;
    471     } items[] = {
    472         { TR_PRI_HIGH,   N_( "High" )  },
    473         { TR_PRI_NORMAL, N_( "Normal" ) },
    474         { TR_PRI_LOW,    N_( "Low" )  }
    475     };
    476 
    477     store = gtk_list_store_new( 2, G_TYPE_INT, G_TYPE_STRING );
    478     for( i=0; i<(int)G_N_ELEMENTS(items); ++i ) {
    479         GtkTreeIter iter;
    480         gtk_list_store_append( store, &iter );
    481         gtk_list_store_set( store, &iter, 0, items[i].value,
    482                                           1, _( items[i].text ),
    483                                          -1 );
    484     }
    485 
    486     w = gtk_combo_box_new_with_model( GTK_TREE_MODEL( store ) );
    487     r = gtk_cell_renderer_text_new( );
    488     gtk_cell_layout_pack_start( GTK_CELL_LAYOUT( w ), r, TRUE );
    489     gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT( w ), r, "text", 1, NULL );
    490     tag = g_signal_connect( w, "changed", G_CALLBACK( onPriorityChanged ), di );
    491     di->bandwidthComboTag = tag;
    492 
    493     /* cleanup */
    494     g_object_unref( store );
     430    GtkWidget * w = gtr_priority_combo_new( );
     431    di->bandwidthComboTag = g_signal_connect( w, "changed", G_CALLBACK( onPriorityChanged ), di );
    495432    return w;
    496433}
  • trunk/gtk/util.c

    r10031 r10079  
    628628
    629629void
     630gtr_priority_combo_set_value( GtkWidget * w, tr_priority_t value )
     631{
     632    int i;
     633    int currentValue;
     634    const int column = 0;
     635    GtkTreeIter iter;
     636    GtkComboBox * combobox = GTK_COMBO_BOX( w );
     637    GtkTreeModel * model = gtk_combo_box_get_model( combobox );
     638
     639    /* do the value and current value match? */
     640    if( gtk_combo_box_get_active_iter( combobox, &iter ) ) {
     641        gtk_tree_model_get( model, &iter, column, &currentValue, -1 );
     642        if( currentValue == value )
     643            return;
     644    }
     645
     646    /* find the one to select */
     647    i = 0;
     648    while(( gtk_tree_model_iter_nth_child( model, &iter, NULL, i++ ))) {
     649        gtk_tree_model_get( model, &iter, column, &currentValue, -1 );
     650        if( currentValue == value ) {
     651            gtk_combo_box_set_active_iter( combobox, &iter );
     652            return;
     653        }
     654    }
     655}
     656 
     657tr_priority_t
     658gtr_priority_combo_get_value( GtkWidget * w )
     659{
     660    int value = 0;
     661    GtkTreeIter iter;
     662    GtkComboBox * combo_box = GTK_COMBO_BOX( w );
     663
     664    if( gtk_combo_box_get_active_iter( combo_box, &iter ) )
     665        gtk_tree_model_get( gtk_combo_box_get_model( combo_box ), &iter, 0, &value, -1 );
     666
     667    return value;
     668}
     669
     670GtkWidget *
     671gtr_priority_combo_new( void )
     672{
     673    int i;
     674    GtkWidget * w;
     675    GtkCellRenderer * r;
     676    GtkListStore * store;
     677    const struct {
     678        int value;
     679        const char * text;
     680    } items[] = {
     681        { TR_PRI_HIGH,   N_( "High" )  },
     682        { TR_PRI_NORMAL, N_( "Normal" ) },
     683        { TR_PRI_LOW,    N_( "Low" )  }
     684    };
     685
     686    store = gtk_list_store_new( 2, G_TYPE_INT, G_TYPE_STRING );
     687    for( i=0; i<(int)G_N_ELEMENTS(items); ++i ) {
     688        GtkTreeIter iter;
     689        gtk_list_store_append( store, &iter );
     690        gtk_list_store_set( store, &iter, 0, items[i].value,
     691                                          1, _( items[i].text ),
     692                                         -1 );
     693    }
     694
     695    w = gtk_combo_box_new_with_model( GTK_TREE_MODEL( store ) );
     696    r = gtk_cell_renderer_text_new( );
     697    gtk_cell_layout_pack_start( GTK_CELL_LAYOUT( w ), r, TRUE );
     698    gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT( w ), r, "text", 1, NULL );
     699
     700    /* cleanup */
     701    g_object_unref( store );
     702    return w;
     703}
     704
     705/***
     706****
     707***/
     708
     709void
    630710gtr_widget_set_tooltip_text( GtkWidget * w, const char * tip )
    631711{
  • trunk/gtk/util.h

    r9868 r10079  
    119119                                       const char * mnemonic );
    120120
     121
     122/***
     123****
     124***/
     125
     126void gtr_priority_combo_set_value( GtkWidget * w, tr_priority_t );
     127
     128tr_priority_t gtr_priority_combo_get_value( GtkWidget * w );
     129
     130GtkWidget * gtr_priority_combo_new( void );
     131
     132/***
     133****
     134***/
     135
    121136void addTorrentErrorDialog( GtkWidget  * window_or_child,
    122137                            int          err,
Note: See TracChangeset for help on using the changeset viewer.