Changeset 2376


Ignore:
Timestamp:
Jul 16, 2007, 6:45:51 PM (15 years ago)
Author:
charles
Message:

add "don't ask me this again" checkbox to "really quit Transmission?" dialog box

Location:
trunk/gtk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/dialogs.c

    r1998 r2376  
    3232#include "conf.h"
    3333#include "dialogs.h"
     34#include "hig.h"
    3435#include "tr_cell_renderer_progress.h"
    3536#include "tr_core.h"
     
    6667    enum tr_torrent_action  action;
    6768    gboolean                paused;
    68 };
    69 
    70 struct quitdata
    71 {
    72     callbackfunc_t func;
    73     void         * cbdata;
    7469};
    7570
     
    116111static void
    117112promptresp( GtkWidget * widget, gint resp, gpointer data );
    118 static void
    119 quitresp( GtkWidget * widget, gint resp, gpointer data );
    120113
    121114void
     
    364357}
    365358
    366 void
    367 askquit( GtkWindow * parent, callbackfunc_t func, void * cbdata )
     359/***
     360****
     361***/
     362
     363struct quitdata
     364{
     365    TrCore          * core;
     366    callbackfunc_t    func;
     367    void            * cbdata;
     368    GtkWidget       * dontask;
     369};
     370
     371static void
     372quitresp( GtkWidget * widget, int response, gpointer data )
     373{
     374    struct quitdata * stuff;
     375    gboolean doask;
     376
     377    stuff = data;
     378
     379    doask = !gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(stuff->dontask) );
     380    tr_core_set_pref_bool( stuff->core, PREF_ID_ASKQUIT, doask );
     381
     382    if( response == GTK_RESPONSE_ACCEPT )
     383        stuff->func( stuff->cbdata );
     384
     385    g_free( stuff );
     386    gtk_widget_destroy( widget );
     387}
     388
     389void
     390askquit( TrCore          * core,
     391         GtkWindow       * parent,
     392         callbackfunc_t    func,
     393         void            * cbdata )
    368394{
    369395    struct quitdata * stuff;
    370396    GtkWidget * wind;
     397    GtkWidget * dontask;
    371398
    372399    if( !tr_prefs_get_bool_with_default( PREF_ID_ASKQUIT ) )
     
    379406    stuff->func    = func;
    380407    stuff->cbdata  = cbdata;
    381 
    382     wind = gtk_message_dialog_new( parent, GTK_DIALOG_DESTROY_WITH_PARENT,
    383                                    GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
    384                                    _("Are you sure you want to quit %s?"),
     408    stuff->core    = core;
     409
     410    wind = gtk_message_dialog_new( parent,
     411                                   GTK_DIALOG_DESTROY_WITH_PARENT,
     412                                   GTK_MESSAGE_QUESTION,
     413                                   GTK_BUTTONS_NONE,
     414                                   _("Really exit %s?"),
    385415                                   g_get_application_name() );
    386     gtk_dialog_set_default_response( GTK_DIALOG( wind ), GTK_RESPONSE_YES );
     416    gtk_dialog_add_buttons( GTK_DIALOG(wind),
     417                            GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
     418                            GTK_STOCK_QUIT, GTK_RESPONSE_ACCEPT,
     419                            NULL );
     420   
     421    gtk_dialog_set_default_response( GTK_DIALOG( wind ), GTK_RESPONSE_ACCEPT );
     422
     423    dontask = gtk_check_button_new_with_mnemonic( _("_Don't Ask Me This Again") );
     424    stuff->dontask = dontask;
     425
     426    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(wind)->vbox), dontask, FALSE, FALSE, GUI_PAD );
     427
    387428    g_signal_connect( G_OBJECT( wind ), "response",
    388429                      G_CALLBACK( quitresp ), stuff );
     
    390431    gtk_widget_show_all( wind );
    391432}
    392 
    393 static void
    394 quitresp( GtkWidget * widget, gint resp, gpointer data )
    395 {
    396     struct quitdata * stuff;
    397 
    398     stuff = data;
    399 
    400     if( GTK_RESPONSE_YES == resp )
    401     {
    402         stuff->func( stuff->cbdata );
    403     }
    404 
    405     g_free( stuff );
    406     gtk_widget_destroy( widget );
    407 }
  • trunk/gtk/dialogs.h

    r1998 r2376  
    4141/* prompt if the user wants to quit, calls func with cbdata if they do */
    4242void
    43 askquit( GtkWindow * parent, callbackfunc_t func, void * cbdata );
     43askquit( TrCore*, GtkWindow* parent, callbackfunc_t func, void * cbdata );
    4444
    4545#endif /* TG_PREFS_H */
  • trunk/gtk/main.c

    r2325 r2376  
    446446        gtk_widget_hide( GTK_WIDGET( cbdata->wind ) );
    447447    else
    448         askquit( cbdata->wind, wannaquit, cbdata );
     448        askquit( cbdata->core, cbdata->wind, wannaquit, cbdata );
    449449
    450450    return TRUE; /* don't propagate event further */
     
    10221022    else if (!strcmp (action_name, "quit"))
    10231023    {
    1024         askquit( data->wind, wannaquit, data );
     1024        askquit( data->core, data->wind, wannaquit, data );
    10251025    }
    10261026    else if (!strcmp (action_name, "edit-preferences"))
Note: See TracChangeset for help on using the changeset viewer.