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

This commit is contained in:
Charles Kerr 2007-07-16 18:45:51 +00:00
parent 7befa196a1
commit daf44d5073
3 changed files with 57 additions and 32 deletions

View File

@ -31,6 +31,7 @@
#include "conf.h"
#include "dialogs.h"
#include "hig.h"
#include "tr_cell_renderer_progress.h"
#include "tr_core.h"
#include "tr_icon.h"
@ -67,12 +68,6 @@ struct dirdata
gboolean paused;
};
struct quitdata
{
callbackfunc_t func;
void * cbdata;
};
struct infowind
{
GtkWidget * widget;
@ -115,8 +110,6 @@ static void
promptdirnocore( gpointer gdata, GObject * core );
static void
promptresp( GtkWidget * widget, gint resp, gpointer data );
static void
quitresp( GtkWidget * widget, gint resp, gpointer data );
void
makeaddwind( GtkWindow * parent, TrCore * core )
@ -363,11 +356,45 @@ promptresp( GtkWidget * widget, gint resp, gpointer data )
gtk_widget_destroy( widget );
}
/***
****
***/
struct quitdata
{
TrCore * core;
callbackfunc_t func;
void * cbdata;
GtkWidget * dontask;
};
static void
quitresp( GtkWidget * widget, int response, gpointer data )
{
struct quitdata * stuff;
gboolean doask;
stuff = data;
doask = !gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(stuff->dontask) );
tr_core_set_pref_bool( stuff->core, PREF_ID_ASKQUIT, doask );
if( response == GTK_RESPONSE_ACCEPT )
stuff->func( stuff->cbdata );
g_free( stuff );
gtk_widget_destroy( widget );
}
void
askquit( GtkWindow * parent, callbackfunc_t func, void * cbdata )
askquit( TrCore * core,
GtkWindow * parent,
callbackfunc_t func,
void * cbdata )
{
struct quitdata * stuff;
GtkWidget * wind;
GtkWidget * dontask;
if( !tr_prefs_get_bool_with_default( PREF_ID_ASKQUIT ) )
{
@ -378,30 +405,28 @@ askquit( GtkWindow * parent, callbackfunc_t func, void * cbdata )
stuff = g_new( struct quitdata, 1 );
stuff->func = func;
stuff->cbdata = cbdata;
stuff->core = core;
wind = gtk_message_dialog_new( parent, GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
_("Are you sure you want to quit %s?"),
wind = gtk_message_dialog_new( parent,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_NONE,
_("Really exit %s?"),
g_get_application_name() );
gtk_dialog_set_default_response( GTK_DIALOG( wind ), GTK_RESPONSE_YES );
gtk_dialog_add_buttons( GTK_DIALOG(wind),
GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
GTK_STOCK_QUIT, GTK_RESPONSE_ACCEPT,
NULL );
gtk_dialog_set_default_response( GTK_DIALOG( wind ), GTK_RESPONSE_ACCEPT );
dontask = gtk_check_button_new_with_mnemonic( _("_Don't Ask Me This Again") );
stuff->dontask = dontask;
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(wind)->vbox), dontask, FALSE, FALSE, GUI_PAD );
g_signal_connect( G_OBJECT( wind ), "response",
G_CALLBACK( quitresp ), stuff );
gtk_widget_show_all( wind );
}
static void
quitresp( GtkWidget * widget, gint resp, gpointer data )
{
struct quitdata * stuff;
stuff = data;
if( GTK_RESPONSE_YES == resp )
{
stuff->func( stuff->cbdata );
}
g_free( stuff );
gtk_widget_destroy( widget );
}

View File

@ -40,6 +40,6 @@ promptfordir( GtkWindow * parent, TrCore * core, GList * files, uint8_t * data,
/* prompt if the user wants to quit, calls func with cbdata if they do */
void
askquit( GtkWindow * parent, callbackfunc_t func, void * cbdata );
askquit( TrCore*, GtkWindow* parent, callbackfunc_t func, void * cbdata );
#endif /* TG_PREFS_H */

View File

@ -445,7 +445,7 @@ winclose( GtkWidget * widget UNUSED, GdkEvent * event UNUSED, gpointer gdata )
if( cbdata->icon != NULL )
gtk_widget_hide( GTK_WIDGET( cbdata->wind ) );
else
askquit( cbdata->wind, wannaquit, cbdata );
askquit( cbdata->core, cbdata->wind, wannaquit, cbdata );
return TRUE; /* don't propagate event further */
}
@ -1021,7 +1021,7 @@ doAction ( const char * action_name, gpointer user_data )
}
else if (!strcmp (action_name, "quit"))
{
askquit( data->wind, wannaquit, data );
askquit( data->core, data->wind, wannaquit, data );
}
else if (!strcmp (action_name, "edit-preferences"))
{