Changeset 6007


Ignore:
Timestamp:
Jun 2, 2008, 9:02:38 PM (14 years ago)
Author:
charles
Message:

(gtk) rough draft of the preferences dialog's "Remote Access" tab: enable/disable RPC, port, ACL, password, and password toggle

Location:
trunk/gtk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/makemeta-ui.c

    r5996 r6007  
    9999        {
    100100            case TR_MAKEMETA_OK:
    101                 txt = g_strdup( _( "Torrent created" ) );
     101                txt = g_strdup( _( "Torrent created!" ) );
    102102                break;
    103103
  • trunk/gtk/tr-prefs.c

    r5928 r6007  
    3232tr_prefs_init_global( void )
    3333{
     34    int i;
     35    char pw[12];
    3436    const char * str;
    3537
     
    9799    pref_string_set_default ( PREF_KEY_RPC_ACL, TR_DEFAULT_RPC_ACL );
    98100
     101    for( i=0; i<8; ++i )
     102        pw[i] = 'a' + tr_rand(26);
     103    pw[8] = '\0';
     104    pref_string_set_default( PREF_KEY_RPC_PASSWORD, pw );
     105    pref_flag_set_default  ( PREF_KEY_RPC_PASSWORD_ENABLED, FALSE );
     106
     107
    99108    pref_save( NULL );
    100109}
     
    155164    gtk_spin_button_set_value( GTK_SPIN_BUTTON(w), pref_int_get(key) );
    156165    g_signal_connect( w, "value-changed", G_CALLBACK(spun_cb), core );
     166    return w;
     167}
     168
     169static void
     170entry_changed_cb( GtkEntry * w, gpointer core )
     171{
     172    const char * key = g_object_get_data( G_OBJECT( w ), PREF_KEY );
     173    const char * value = gtk_entry_get_text( w );
     174    tr_core_set_pref( TR_CORE( core ), key, value );
     175}
     176
     177static GtkWidget*
     178new_entry( const char * key, gpointer core )
     179{
     180    GtkWidget * w = gtk_entry_new( );
     181    char * value = pref_string_get( key );
     182    gtk_entry_set_text( GTK_ENTRY( w ), value );
     183    g_object_set_data_full( G_OBJECT(w), PREF_KEY, g_strdup(key), g_free );
     184    g_signal_connect( w, "changed", G_CALLBACK(entry_changed_cb), core );
     185    g_free( value );
    157186    return w;
    158187}
     
    185214    const gboolean b = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( tb ) );
    186215    gtk_widget_set_sensitive( GTK_WIDGET(target), b );
     216}
     217
     218static void
     219toggle_sets_sensitivity( GtkWidget * t, GtkWidget * w)
     220{
     221    target_cb( t, w );
     222    g_signal_connect( t, "toggled", G_CALLBACK( target_cb ), w );
    187223}
    188224
     
    531567
    532568static GtkWidget*
     569remotePage( GObject * core )
     570{
     571    const char  * s;
     572    int row = 0;
     573    GtkWidget * t;
     574    GtkWidget * w;
     575    GtkWidget * w2;
     576    GtkWidget * enabled_toggle;
     577    const gboolean rpc_enabled = pref_flag_get( PREF_KEY_RPC_ENABLED );
     578    const gboolean pw_enabled = pref_flag_get( PREF_KEY_RPC_PASSWORD_ENABLED );
     579
     580    t = hig_workarea_create( );
     581
     582    hig_workarea_add_section_title( t, &row, _( "Remote Access" ) );
     583
     584        /* "enabled" checkbutton */
     585        s = _( "_Allow requests from transmission-remote, Clutch, etc." );
     586        w = new_check_button( s, PREF_KEY_RPC_ENABLED, core );
     587        hig_workarea_add_wide_control( t, &row, w );
     588        enabled_toggle = w;
     589
     590        /* port */
     591        w = new_spin_button( PREF_KEY_RPC_PORT, core, 0, 65535, 1 );
     592        toggle_sets_sensitivity( enabled_toggle, w );
     593        w = hig_workarea_add_row( t, &row, _( "Listen for requests on _port:" ), w, NULL );
     594        toggle_sets_sensitivity( enabled_toggle, w );
     595
     596        /* password protection */
     597        s = _( "Require _password:" );
     598        w = new_check_button( s, PREF_KEY_RPC_PASSWORD_ENABLED, core );
     599        toggle_sets_sensitivity( enabled_toggle, w );
     600        w2 = new_entry( PREF_KEY_RPC_PASSWORD, core );
     601        gtk_widget_set_sensitive( GTK_WIDGET( w2 ), rpc_enabled && pw_enabled );
     602        g_signal_connect( w, "toggled", G_CALLBACK( target_cb ), w2 );
     603        g_signal_connect( enabled_toggle, "toggled", G_CALLBACK( target_cb ), w );
     604        hig_workarea_add_row_w( t, &row, w, w2, NULL );
     605
     606        /* access control list */
     607        s = _( "Access control list:" );
     608        w = new_entry( PREF_KEY_RPC_ACL, core );
     609        toggle_sets_sensitivity( enabled_toggle, w );
     610        w = hig_workarea_add_row( t, &row, s, w, NULL );
     611        toggle_sets_sensitivity( enabled_toggle, w );
     612
     613    hig_workarea_finish( t, &row );
     614    return t;
     615}
     616
     617static GtkWidget*
    533618networkPage( GObject * core, gpointer alive )
    534619{
     
    573658        testing_port_cb( NULL, l );
    574659
    575         s = _( "Listen for _RPC requests on port:" );
    576         w = new_check_button( s, PREF_KEY_RPC_ENABLED, core );
    577         w2 = new_spin_button( PREF_KEY_RPC_PORT, core, 0, 65535, 1 );
    578         gtk_widget_set_sensitive( GTK_WIDGET(w2), pref_flag_get( PREF_KEY_RPC_ENABLED ) );
    579         g_signal_connect( w, "toggled", G_CALLBACK(target_cb), w2 );
    580         hig_workarea_add_row_w( t, &row, w, w2, NULL );
    581        
    582660        s = _("Use port _forwarding from my router" );
    583661        w = new_check_button( s, PREF_KEY_NAT, core );
     
    626704                              desktopPage( core ),
    627705                              gtk_label_new (_("Desktop")) );
     706    gtk_notebook_append_page( GTK_NOTEBOOK( n ),
     707                              remotePage( core ),
     708                              gtk_label_new (_("Remote")) );
    628709
    629710    g_signal_connect( d, "response", G_CALLBACK(response_cb), core );
  • trunk/gtk/tr-prefs.h

    r5928 r6007  
    5858#define PREF_KEY_RPC_ENABLED            "rpc-enabled"
    5959#define PREF_KEY_RPC_ACL                "rpc-access-control-list"
     60#define PREF_KEY_RPC_PASSWORD_ENABLED   "rpc-password-required"
     61#define PREF_KEY_RPC_PASSWORD           "rpc-password"
    6062
    6163
Note: See TracChangeset for help on using the changeset viewer.