mirror of
https://github.com/transmission/transmission
synced 2025-03-03 10:15:45 +00:00
accept patch from Infernux to add toggles to the tray menu. (#339)
This commit is contained in:
parent
4b46430731
commit
7f91ca4bfc
4 changed files with 35 additions and 23 deletions
|
@ -52,6 +52,13 @@ priority_changed_cb (GtkAction *action UNUSED, GtkRadioAction *current)
|
|||
set_selected_file_priority ( priority );
|
||||
}
|
||||
|
||||
static GtkToggleActionEntry show_toggle_entries[] =
|
||||
{
|
||||
{ "toggle-main-window", NULL,
|
||||
N_("Show _Main Window"), NULL, NULL, G_CALLBACK(action_cb), TRUE },
|
||||
{ "toggle-debug-window", NULL,
|
||||
N_("Show _Debug Window"), NULL, NULL, G_CALLBACK(action_cb), FALSE }
|
||||
};
|
||||
|
||||
static GtkActionEntry entries[] =
|
||||
{
|
||||
|
@ -84,10 +91,6 @@ static GtkActionEntry entries[] =
|
|||
N_("_Torrent Info"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "show-about-dialog", GTK_STOCK_ABOUT,
|
||||
N_("_About Transmission"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "show-debug-window", NULL,
|
||||
N_("Show _Debug Window"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "toggle-main-window", "ICON_TRANSMISSION",
|
||||
N_("Show / Hide _Transmission"), NULL, NULL, G_CALLBACK(action_cb) },
|
||||
{ "update-tracker", GTK_STOCK_REFRESH,
|
||||
N_("Update Tracker"), NULL, NULL, G_CALLBACK(action_cb) }
|
||||
};
|
||||
|
@ -174,6 +177,11 @@ actions_init( GtkUIManager * ui_manager, gpointer callback_user_data )
|
|||
TR_PRI_NORMAL,
|
||||
G_CALLBACK(priority_changed_cb), NULL);
|
||||
|
||||
gtk_action_group_add_toggle_actions ( action_group,
|
||||
show_toggle_entries,
|
||||
G_N_ELEMENTS(show_toggle_entries),
|
||||
callback_user_data );
|
||||
|
||||
gtk_action_group_add_actions( action_group,
|
||||
entries, n_entries,
|
||||
callback_user_data );
|
||||
|
|
36
gtk/main.c
36
gtk/main.c
|
@ -104,9 +104,9 @@ struct cbdata {
|
|||
GtkWindow * wind;
|
||||
TrCore * core;
|
||||
GtkWidget * icon;
|
||||
GtkWidget * msgwin;
|
||||
TrPrefs * prefs;
|
||||
guint timer;
|
||||
gboolean msgwinopen;
|
||||
gboolean closing;
|
||||
GList * errqueue;
|
||||
};
|
||||
|
@ -161,8 +161,6 @@ static void
|
|||
setpex( tr_torrent * tor, void * arg );
|
||||
static gboolean
|
||||
updatemodel(gpointer gdata);
|
||||
static void
|
||||
boolwindclosed(GtkWidget *widget, gpointer gdata);
|
||||
static GList *
|
||||
getselection( struct cbdata * cbdata );
|
||||
|
||||
|
@ -405,9 +403,9 @@ appsetup( TrWindow * wind, GList * args,
|
|||
cbdata->wind = NULL;
|
||||
cbdata->core = tr_core_new();
|
||||
cbdata->icon = NULL;
|
||||
cbdata->msgwin = NULL;
|
||||
cbdata->prefs = NULL;
|
||||
cbdata->timer = 0;
|
||||
cbdata->msgwinopen = FALSE;
|
||||
cbdata->closing = FALSE;
|
||||
cbdata->errqueue = NULL;
|
||||
|
||||
|
@ -864,13 +862,6 @@ updatemodel(gpointer gdata) {
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
boolwindclosed(GtkWidget *widget SHUTUP, gpointer gdata) {
|
||||
gboolean *preachy_gcc = gdata;
|
||||
|
||||
*preachy_gcc = FALSE;
|
||||
}
|
||||
|
||||
/* returns a GList containing a GtkTreeRowReference to each selected row */
|
||||
static GList *
|
||||
getselection( struct cbdata * cbdata )
|
||||
|
@ -981,6 +972,13 @@ recheckTorrentForeach (GtkTreeModel * model,
|
|||
g_object_unref( G_OBJECT( gtor ) );
|
||||
}
|
||||
|
||||
static gboolean
|
||||
msgwinclosed()
|
||||
{
|
||||
action_toggle( "toggle-debug-window", FALSE );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
doAction ( const char * action_name, gpointer user_data )
|
||||
{
|
||||
|
@ -1071,14 +1069,20 @@ doAction ( const char * action_name, gpointer user_data )
|
|||
gtk_widget_show( GTK_WIDGET( data->prefs ) );
|
||||
}
|
||||
}
|
||||
else if (!strcmp (action_name, "show-debug-window"))
|
||||
else if (!strcmp (action_name, "toggle-debug-window"))
|
||||
{
|
||||
if( !data->msgwinopen )
|
||||
if( !data->msgwin )
|
||||
{
|
||||
GtkWidget * win = msgwin_create( data->core );
|
||||
g_signal_connect( win, "destroy", G_CALLBACK( boolwindclosed ),
|
||||
&data->msgwinopen );
|
||||
data->msgwinopen = TRUE;
|
||||
g_signal_connect( win, "destroy", G_CALLBACK( msgwinclosed ),
|
||||
NULL );
|
||||
data->msgwin = win;
|
||||
}
|
||||
else
|
||||
{
|
||||
action_toggle("toggle-debug-window", FALSE);
|
||||
gtk_widget_destroy( data->msgwin );
|
||||
data->msgwin = NULL;
|
||||
}
|
||||
}
|
||||
else if (!strcmp (action_name, "show-about-dialog"))
|
||||
|
|
|
@ -229,6 +229,7 @@ msgwin_create( TrCore * core )
|
|||
int ii, curlevel;
|
||||
|
||||
win = gtk_window_new( GTK_WINDOW_TOPLEVEL );
|
||||
gtk_window_set_title( GTK_WINDOW( win ), "Transmission Debug Window" );
|
||||
gtk_window_set_default_size( GTK_WINDOW( win ), 600, 400 );
|
||||
gtk_window_set_role( GTK_WINDOW( win ), "debug-window" );
|
||||
vbox = gtk_vbox_new( FALSE, 0 );
|
||||
|
@ -299,7 +300,6 @@ msgwin_create( TrCore * core )
|
|||
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), scroll, TRUE, TRUE, 0 );
|
||||
|
||||
|
||||
msgwin_update( );
|
||||
gtk_container_add( GTK_CONTAINER( win ), vbox );
|
||||
gtk_widget_show_all( win );
|
||||
|
|
4
gtk/ui.h
4
gtk/ui.h
|
@ -22,7 +22,7 @@ const char * fallback_ui_file =
|
|||
" <menuitem action='edit-preferences'/>\n"
|
||||
" </menu>\n"
|
||||
" <menu action='help-menu'>\n"
|
||||
" <menuitem action='show-debug-window'/>\n"
|
||||
" <menuitem action='toggle-debug-window'/>\n"
|
||||
" <separator/>\n"
|
||||
" <menuitem action='show-about-dialog'/>\n"
|
||||
" </menu>\n"
|
||||
|
@ -51,7 +51,7 @@ const char * fallback_ui_file =
|
|||
" <menuitem action='add-torrent'/>\n"
|
||||
" <separator/>\n"
|
||||
" <menuitem action='toggle-main-window'/>\n"
|
||||
" <menuitem action='show-debug-window'/>\n"
|
||||
" <menuitem action='toggle-debug-window'/>\n"
|
||||
" <menuitem action='show-about-dialog'/>\n"
|
||||
" <separator/>\n"
|
||||
" <menuitem action='quit'/>\n"
|
||||
|
|
Loading…
Reference in a new issue