mirror of
https://github.com/transmission/transmission
synced 2025-03-03 10:15:45 +00:00
cleaner actions/prefs integration.
This commit is contained in:
parent
a2e7d74898
commit
b0e1a8b8cd
7 changed files with 55 additions and 59 deletions
|
@ -16,6 +16,7 @@
|
|||
#include <libtransmission/transmission.h>
|
||||
#include "conf.h"
|
||||
#include "torrent-inspector.h"
|
||||
#include "tr_core.h"
|
||||
#include "tr_prefs.h"
|
||||
#include "lock.h"
|
||||
#include "logo.h"
|
||||
|
@ -24,9 +25,12 @@
|
|||
|
||||
extern void doAction (const char * action_name, gpointer user_data );
|
||||
|
||||
static TrCore * myCore = 0;
|
||||
|
||||
static GtkActionGroup * myGroup = 0;
|
||||
|
||||
static void action_cb ( GtkAction * a, gpointer user_data )
|
||||
static void
|
||||
action_cb ( GtkAction * a, gpointer user_data )
|
||||
{
|
||||
doAction ( gtk_action_get_name(a), user_data );
|
||||
}
|
||||
|
@ -66,11 +70,14 @@ static GtkRadioActionEntry sort_radio_entries[] =
|
|||
};
|
||||
|
||||
static void
|
||||
sort_changed_cb( GtkAction * action UNUSED, GtkRadioAction * current, gpointer user_data )
|
||||
sort_changed_cb( GtkAction * action UNUSED,
|
||||
GtkRadioAction * current,
|
||||
gpointer user_data UNUSED )
|
||||
{
|
||||
const int i = gtk_radio_action_get_current_value( current );
|
||||
const char * name = sort_radio_entries[i].name;
|
||||
doAction ( name, user_data );
|
||||
const char * key = PREF_KEY_SORT_MODE;
|
||||
const int i = gtk_radio_action_get_current_value( current );
|
||||
const char * val = sort_radio_entries[i].name;
|
||||
tr_core_set_pref( myCore, key, val );
|
||||
}
|
||||
|
||||
static GtkToggleActionEntry show_toggle_entries[] =
|
||||
|
@ -81,12 +88,20 @@ static GtkToggleActionEntry show_toggle_entries[] =
|
|||
N_("Show Message _Log"), NULL, NULL, G_CALLBACK(action_cb), FALSE }
|
||||
};
|
||||
|
||||
static GtkToggleActionEntry persistent_toggle_entries[] =
|
||||
static void
|
||||
toggle_pref_cb ( GtkToggleAction * action, gpointer user_data UNUSED )
|
||||
{
|
||||
const char * key = gtk_action_get_name( GTK_ACTION( action ) );
|
||||
const gboolean val = gtk_toggle_action_get_active( action );
|
||||
tr_core_set_pref_bool( myCore, key, val );
|
||||
}
|
||||
|
||||
static GtkToggleActionEntry pref_toggle_entries[] =
|
||||
{
|
||||
{ "minimal-view", NULL,
|
||||
N_("_Minimal View"), "<control>M", NULL, G_CALLBACK(action_cb), FALSE },
|
||||
{ "reverse-sort-order", NULL,
|
||||
N_("_Reverse Sort Order"), NULL, NULL, G_CALLBACK(action_cb), FALSE }
|
||||
N_("_Minimal View"), "<control>M", NULL, G_CALLBACK(toggle_pref_cb), FALSE },
|
||||
{ "sort-reversed", NULL,
|
||||
N_("_Reverse Sort Order"), NULL, NULL, G_CALLBACK(toggle_pref_cb), FALSE }
|
||||
};
|
||||
|
||||
static GtkActionEntry entries[] =
|
||||
|
@ -187,6 +202,12 @@ register_my_icons ( void )
|
|||
|
||||
static GtkUIManager * myUIManager = NULL;
|
||||
|
||||
void
|
||||
actions_set_core( TrCore * core )
|
||||
{
|
||||
myCore = core;
|
||||
}
|
||||
|
||||
void
|
||||
actions_init( GtkUIManager * ui_manager, gpointer callback_user_data )
|
||||
{
|
||||
|
@ -226,19 +247,19 @@ actions_init( GtkUIManager * ui_manager, gpointer callback_user_data )
|
|||
G_N_ELEMENTS(sort_radio_entries),
|
||||
active,
|
||||
G_CALLBACK(sort_changed_cb),
|
||||
callback_user_data );
|
||||
NULL );
|
||||
|
||||
gtk_action_group_add_toggle_actions( action_group,
|
||||
show_toggle_entries,
|
||||
G_N_ELEMENTS(show_toggle_entries),
|
||||
callback_user_data );
|
||||
|
||||
for( i=0, n=G_N_ELEMENTS(persistent_toggle_entries); i<n; ++i )
|
||||
persistent_toggle_entries[i].is_active = pref_flag_get( persistent_toggle_entries[i].name );
|
||||
for( i=0, n=G_N_ELEMENTS(pref_toggle_entries); i<n; ++i )
|
||||
pref_toggle_entries[i].is_active = pref_flag_get( pref_toggle_entries[i].name );
|
||||
|
||||
gtk_action_group_add_toggle_actions( action_group,
|
||||
persistent_toggle_entries,
|
||||
G_N_ELEMENTS(persistent_toggle_entries),
|
||||
pref_toggle_entries,
|
||||
G_N_ELEMENTS(pref_toggle_entries),
|
||||
callback_user_data );
|
||||
|
||||
gtk_action_group_add_actions( action_group,
|
||||
|
|
|
@ -14,9 +14,12 @@
|
|||
#define TR_ACTIONS_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include "tr_core.h"
|
||||
|
||||
void actions_init ( GtkUIManager * ui_manager, gpointer callback_user_data );
|
||||
|
||||
void actions_set_core( TrCore * core );
|
||||
|
||||
void action_activate ( const char * name );
|
||||
|
||||
void action_sensitize ( const char * name, gboolean b );
|
||||
|
|
23
gtk/main.c
23
gtk/main.c
|
@ -317,6 +317,8 @@ appsetup( TrWindow * wind, GList * args,
|
|||
cbdata->closing = FALSE;
|
||||
cbdata->errqueue = NULL;
|
||||
|
||||
actions_set_core( cbdata->core );
|
||||
|
||||
/* set up core handlers */
|
||||
g_signal_connect( cbdata->core, "error", G_CALLBACK( coreerr ), cbdata );
|
||||
g_signal_connect( cbdata->core, "directory-prompt",
|
||||
|
@ -730,10 +732,6 @@ prefschanged( TrCore * core UNUSED, const char * key, gpointer data )
|
|||
cbdata->icon = NULL;
|
||||
}
|
||||
}
|
||||
else if( !strcmp( key, PREF_KEY_SORT_MODE ) || !strcmp( key, PREF_KEY_SORT_REVERSED ) )
|
||||
{
|
||||
tr_core_resort( cbdata->core );
|
||||
}
|
||||
else if( !strcmp( key, PREF_KEY_PEX ) )
|
||||
{
|
||||
gboolean enabled = pref_flag_get( key );
|
||||
|
@ -1024,23 +1022,6 @@ doAction ( const char * action_name, gpointer user_data )
|
|||
else
|
||||
gtk_window_present (GTK_WINDOW(w));
|
||||
}
|
||||
else if( !strcmp( action_name, "sort-by-activity" )
|
||||
|| !strcmp( action_name, "sort-by-date-added" )
|
||||
|| !strcmp( action_name, "sort-by-name" )
|
||||
|| !strcmp( action_name, "sort-by-progress" )
|
||||
|| !strcmp( action_name, "sort-by-state" )
|
||||
|| !strcmp( action_name, "sort-by-tracker" ) )
|
||||
{
|
||||
tr_core_set_pref( data->core, PREF_KEY_SORT_MODE, action_name );
|
||||
}
|
||||
else if( !strcmp( action_name, "reverse-sort-order" ) )
|
||||
{
|
||||
tr_core_toggle_pref_bool( data->core, PREF_KEY_SORT_REVERSED );
|
||||
}
|
||||
else if( !strcmp( action_name, "minimal-view" ) )
|
||||
{
|
||||
tr_core_toggle_pref_bool( data->core, PREF_KEY_MINIMAL_VIEW );
|
||||
}
|
||||
else g_error ("Unhandled action: %s", action_name );
|
||||
|
||||
if( changed )
|
||||
|
|
|
@ -318,13 +318,16 @@ setSort( TrCore * core, const char * mode, gboolean isReversed )
|
|||
gtk_tree_sortable_set_sort_column_id( sortable, col, type );
|
||||
}
|
||||
|
||||
void
|
||||
tr_core_resort( TrCore * core )
|
||||
static void
|
||||
prefsChanged( TrCore * core, const char * key, gpointer data UNUSED )
|
||||
{
|
||||
char * mode = pref_string_get( PREF_KEY_SORT_MODE );
|
||||
gboolean isReversed = pref_flag_get( PREF_KEY_SORT_REVERSED );
|
||||
setSort( core, mode, isReversed );
|
||||
g_free( mode );
|
||||
if( !strcmp( key, PREF_KEY_SORT_MODE ) || !strcmp( key, PREF_KEY_SORT_REVERSED ) )
|
||||
{
|
||||
char * mode = pref_string_get( PREF_KEY_SORT_MODE );
|
||||
gboolean isReversed = pref_flag_get( PREF_KEY_SORT_REVERSED );
|
||||
setSort( core, mode, isReversed );
|
||||
g_free( mode );
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -392,7 +395,9 @@ tr_core_get_type( void )
|
|||
TrCore *
|
||||
tr_core_new( void )
|
||||
{
|
||||
return g_object_new( TR_CORE_TYPE, NULL );
|
||||
TrCore * core = TR_CORE( g_object_new( TR_CORE_TYPE, NULL ) );
|
||||
g_signal_connect( core, "prefs-changed", G_CALLBACK(prefsChanged), NULL );
|
||||
return core;
|
||||
}
|
||||
|
||||
GtkTreeModel *
|
||||
|
@ -697,15 +702,6 @@ tr_core_set_pref_bool( TrCore * self, const char * key, gboolean newval )
|
|||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
tr_core_toggle_pref_bool( TrCore * core, const char * key )
|
||||
{
|
||||
const gboolean newval = !pref_flag_get( key );
|
||||
pref_flag_set( key, newval );
|
||||
commitPrefsChange( core, key );
|
||||
return newval;
|
||||
}
|
||||
|
||||
void
|
||||
tr_core_set_pref_int( TrCore * self, const char * key, int newval )
|
||||
{
|
||||
|
|
|
@ -162,8 +162,6 @@ tr_core_quit( TrCore * self );
|
|||
void
|
||||
tr_core_set_pref( TrCore * self, const char * key, const char * val );
|
||||
|
||||
gboolean
|
||||
tr_core_toggle_pref_bool( TrCore * core, const char * key );
|
||||
/* Set a boolean preference value, save the prefs file, and emit the
|
||||
"prefs-changed" signal */
|
||||
void
|
||||
|
@ -174,9 +172,6 @@ tr_core_set_pref_bool( TrCore * self, const char * key, gboolean val );
|
|||
void
|
||||
tr_core_set_pref_int( TrCore * self, const char * key, int val );
|
||||
|
||||
void
|
||||
tr_core_resort( TrCore * core );
|
||||
|
||||
/* column names for the model used to store torrent information */
|
||||
/* keep this in sync with the type array in tr_core_init() in tr_core.c */
|
||||
enum
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
#include "actions.h"
|
||||
#include "hig.h"
|
||||
#include "torrent-cell-renderer.h"
|
||||
#include "tr_core.h"
|
||||
#include "tr_torrent.h"
|
||||
#include "tr_window.h"
|
||||
#include "util.h"
|
||||
|
@ -45,6 +44,7 @@ typedef struct
|
|||
GtkWidget * ul_lb;
|
||||
GtkWidget * dl_lb;
|
||||
GtkTreeSelection * selection;
|
||||
GtkCellRenderer * renderer;
|
||||
}
|
||||
PrivateData;
|
||||
|
||||
|
@ -91,7 +91,7 @@ makeview( PrivateData * p )
|
|||
|
||||
p->selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(view) );
|
||||
|
||||
r = torrent_cell_renderer_new( );
|
||||
p->renderer = r = torrent_cell_renderer_new( );
|
||||
col = gtk_tree_view_column_new_with_attributes( _("Torrent"), r, "torrent", MC_TORRENT_RAW, NULL );
|
||||
gtk_tree_view_column_set_sizing( col, GTK_TREE_VIEW_COLUMN_AUTOSIZE );
|
||||
gtk_tree_view_append_column( GTK_TREE_VIEW( view ), col );
|
||||
|
|
2
gtk/ui.h
2
gtk/ui.h
|
@ -24,7 +24,7 @@ const char * fallback_ui_file =
|
|||
" <menuitem action='sort-by-progress'/>\n"
|
||||
" <menuitem action='sort-by-state'/>\n"
|
||||
" <menuitem action='sort-by-tracker'/>\n"
|
||||
" <menuitem action='reverse-sort-order'/>\n"
|
||||
" <menuitem action='sort-reversed'/>\n"
|
||||
" </menu>\n"
|
||||
" <menu action='edit-menu'>\n"
|
||||
" <menuitem action='select-all'/>\n"
|
||||
|
|
Loading…
Reference in a new issue