(trunk gtk) #996: make status location configurable; default to bottom of window as per Gnome HiG
This commit is contained in:
parent
c7bcae2272
commit
25550f03e4
|
@ -70,6 +70,7 @@ tr_prefs_init_global( void )
|
||||||
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_WIDTH, 300 );
|
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_WIDTH, 300 );
|
||||||
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_X, 50 );
|
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_X, 50 );
|
||||||
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_Y, 50 );
|
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_Y, 50 );
|
||||||
|
pref_string_set_default ( PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER, "menu,toolbar,filter,list,statusbar" );
|
||||||
|
|
||||||
str = NULL;
|
str = NULL;
|
||||||
#if GLIB_CHECK_VERSION( 2, 14, 0 )
|
#if GLIB_CHECK_VERSION( 2, 14, 0 )
|
||||||
|
|
|
@ -21,33 +21,33 @@ GtkWidget * tr_prefs_dialog_new( GObject * core,
|
||||||
/* if you add a key here, you /must/ add its
|
/* if you add a key here, you /must/ add its
|
||||||
* default in tr_prefs_init_global( void ) */
|
* default in tr_prefs_init_global( void ) */
|
||||||
|
|
||||||
#define PREF_KEY_SCHED_LIMIT_ENABLED "sched-limit-enabled"
|
#define PREF_KEY_SCHED_LIMIT_ENABLED "sched-limit-enabled"
|
||||||
#define PREF_KEY_SCHED_BEGIN "sched-begin"
|
#define PREF_KEY_SCHED_BEGIN "sched-begin"
|
||||||
#define PREF_KEY_SCHED_END "sched-end"
|
#define PREF_KEY_SCHED_END "sched-end"
|
||||||
#define PREF_KEY_SCHED_DL_LIMIT "sched-download-limit"
|
#define PREF_KEY_SCHED_DL_LIMIT "sched-download-limit"
|
||||||
#define PREF_KEY_SCHED_UL_LIMIT "sched-upload-limit"
|
#define PREF_KEY_SCHED_UL_LIMIT "sched-upload-limit"
|
||||||
#define PREF_KEY_OPTIONS_PROMPT "show-options-window"
|
#define PREF_KEY_OPTIONS_PROMPT "show-options-window"
|
||||||
#define PREF_KEY_OPEN_DIALOG_FOLDER "open-dialog-dir"
|
#define PREF_KEY_OPEN_DIALOG_FOLDER "open-dialog-dir"
|
||||||
#define PREF_KEY_INHIBIT_HIBERNATION "inhibit-desktop-hibernation"
|
#define PREF_KEY_INHIBIT_HIBERNATION "inhibit-desktop-hibernation"
|
||||||
#define PREF_KEY_DIR_WATCH "watch-dir"
|
#define PREF_KEY_DIR_WATCH "watch-dir"
|
||||||
#define PREF_KEY_DIR_WATCH_ENABLED "watch-dir-enabled"
|
#define PREF_KEY_DIR_WATCH_ENABLED "watch-dir-enabled"
|
||||||
#define PREF_KEY_SHOW_TRAY_ICON "show-notification-area-icon"
|
#define PREF_KEY_SHOW_TRAY_ICON "show-notification-area-icon"
|
||||||
#define PREF_KEY_START "start-added-torrents"
|
#define PREF_KEY_START "start-added-torrents"
|
||||||
#define PREF_KEY_TRASH_ORIGINAL "trash-original-torrent-files"
|
#define PREF_KEY_TRASH_ORIGINAL "trash-original-torrent-files"
|
||||||
#define PREF_KEY_ASKQUIT "prompt-before-exit"
|
#define PREF_KEY_ASKQUIT "prompt-before-exit"
|
||||||
#define PREF_KEY_SORT_MODE "sort-mode"
|
#define PREF_KEY_SORT_MODE "sort-mode"
|
||||||
#define PREF_KEY_SORT_REVERSED "sort-reversed"
|
#define PREF_KEY_SORT_REVERSED "sort-reversed"
|
||||||
#define PREF_KEY_MINIMAL_VIEW "minimal-view"
|
#define PREF_KEY_MINIMAL_VIEW "minimal-view"
|
||||||
#define PREF_KEY_FILTERBAR "show-filterbar"
|
#define PREF_KEY_FILTERBAR "show-filterbar"
|
||||||
#define PREF_KEY_STATUSBAR "show-statusbar"
|
#define PREF_KEY_STATUSBAR "show-statusbar"
|
||||||
#define PREF_KEY_STATUSBAR_STATS "statusbar-stats"
|
#define PREF_KEY_STATUSBAR_STATS "statusbar-stats"
|
||||||
#define PREF_KEY_TOOLBAR "show-toolbar"
|
#define PREF_KEY_TOOLBAR "show-toolbar"
|
||||||
#define PREF_KEY_BLOCKLIST_UPDATES_ENABLED "blocklist-updates-enabled"
|
#define PREF_KEY_BLOCKLIST_UPDATES_ENABLED "blocklist-updates-enabled"
|
||||||
#define PREF_KEY_MAIN_WINDOW_HEIGHT "main-window-height"
|
#define PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER "main-window-layout-order"
|
||||||
#define PREF_KEY_MAIN_WINDOW_WIDTH "main-window-width"
|
#define PREF_KEY_MAIN_WINDOW_HEIGHT "main-window-height"
|
||||||
#define PREF_KEY_MAIN_WINDOW_X "main-window-x"
|
#define PREF_KEY_MAIN_WINDOW_WIDTH "main-window-width"
|
||||||
#define PREF_KEY_MAIN_WINDOW_Y "main-window-y"
|
#define PREF_KEY_MAIN_WINDOW_X "main-window-x"
|
||||||
|
#define PREF_KEY_MAIN_WINDOW_Y "main-window-y"
|
||||||
|
|
||||||
void tr_prefs_init_global( void );
|
void tr_prefs_init_global( void );
|
||||||
|
|
||||||
|
|
|
@ -498,16 +498,17 @@ onAskTrackerQueryTooltip( GtkWidget * widget UNUSED,
|
||||||
***/
|
***/
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
tr_window_new( GtkUIManager * ui_manager,
|
tr_window_new( GtkUIManager * ui_mgr, TrCore * core )
|
||||||
TrCore * core )
|
|
||||||
{
|
{
|
||||||
int i, n;
|
int i, n;
|
||||||
const char * pch;
|
const char * pch;
|
||||||
PrivateData * p;
|
PrivateData * p;
|
||||||
|
GtkWidget *mainmenu, *toolbar, *filter, *list, *status;
|
||||||
GtkWidget * vbox, *w, *self, *h, *c, *s, *image, *menu;
|
GtkWidget * vbox, *w, *self, *h, *c, *s, *image, *menu;
|
||||||
GtkWindow * win;
|
GtkWindow * win;
|
||||||
GSList * l;
|
GSList * l;
|
||||||
GSList * toggles;
|
GSList * toggles;
|
||||||
|
|
||||||
const char * filter_names[FILTER_MODE_QTY] = {
|
const char * filter_names[FILTER_MODE_QTY] = {
|
||||||
/* show all torrents */
|
/* show all torrents */
|
||||||
N_( "A_ll" ),
|
N_( "A_ll" ),
|
||||||
|
@ -537,20 +538,18 @@ tr_window_new( GtkUIManager * ui_manager,
|
||||||
gtk_window_set_title( win, g_get_application_name( ) );
|
gtk_window_set_title( win, g_get_application_name( ) );
|
||||||
gtk_window_set_role( win, "tr-main" );
|
gtk_window_set_role( win, "tr-main" );
|
||||||
gtk_window_set_default_size( win,
|
gtk_window_set_default_size( win,
|
||||||
pref_int_get( PREF_KEY_MAIN_WINDOW_WIDTH ),
|
pref_int_get( PREF_KEY_MAIN_WINDOW_WIDTH ),
|
||||||
pref_int_get( PREF_KEY_MAIN_WINDOW_HEIGHT ) );
|
pref_int_get( PREF_KEY_MAIN_WINDOW_HEIGHT ) );
|
||||||
gtk_window_move( win, pref_int_get( PREF_KEY_MAIN_WINDOW_X ),
|
gtk_window_move( win, pref_int_get( PREF_KEY_MAIN_WINDOW_X ),
|
||||||
pref_int_get( PREF_KEY_MAIN_WINDOW_Y ) );
|
pref_int_get( PREF_KEY_MAIN_WINDOW_Y ) );
|
||||||
gtk_window_add_accel_group( win,
|
gtk_window_add_accel_group( win, gtk_ui_manager_get_accel_group( ui_mgr ) );
|
||||||
gtk_ui_manager_get_accel_group( ui_manager ) );
|
|
||||||
|
|
||||||
/* window's main container */
|
/* window's main container */
|
||||||
vbox = gtk_vbox_new ( FALSE, 0 );
|
vbox = gtk_vbox_new ( FALSE, 0 );
|
||||||
gtk_container_add ( GTK_CONTAINER( self ), vbox );
|
gtk_container_add ( GTK_CONTAINER( self ), vbox );
|
||||||
|
|
||||||
/* main menu */
|
/* main menu */
|
||||||
w = action_get_widget( "/main-window-menu" );
|
w = mainmenu = action_get_widget( "/main-window-menu" );
|
||||||
gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
|
|
||||||
w = action_get_widget( "/main-window-menu/torrent-menu/update-tracker" );
|
w = action_get_widget( "/main-window-menu/torrent-menu/update-tracker" );
|
||||||
#if GTK_CHECK_VERSION( 2, 12, 0 )
|
#if GTK_CHECK_VERSION( 2, 12, 0 )
|
||||||
g_signal_connect( w, "query-tooltip",
|
g_signal_connect( w, "query-tooltip",
|
||||||
|
@ -558,12 +557,11 @@ tr_window_new( GtkUIManager * ui_manager,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* toolbar */
|
/* toolbar */
|
||||||
w = p->toolbar = action_get_widget( "/main-window-toolbar" );
|
w = toolbar = p->toolbar = action_get_widget( "/main-window-toolbar" );
|
||||||
gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
|
|
||||||
|
|
||||||
/* filter */
|
/* filter */
|
||||||
toggles = NULL;
|
toggles = NULL;
|
||||||
h = p->filter = gtk_hbox_new( FALSE, 0 );
|
h = filter = p->filter = gtk_hbox_new( FALSE, 0 );
|
||||||
gtk_container_set_border_width( GTK_CONTAINER( h ), GUI_PAD_SMALL );
|
gtk_container_set_border_width( GTK_CONTAINER( h ), GUI_PAD_SMALL );
|
||||||
for( i = 0; i < FILTER_MODE_QTY; ++i )
|
for( i = 0; i < FILTER_MODE_QTY; ++i )
|
||||||
{
|
{
|
||||||
|
@ -590,7 +588,6 @@ tr_window_new( GtkUIManager * ui_manager,
|
||||||
s ), SEXY_ICON_ENTRY_PRIMARY,
|
s ), SEXY_ICON_ENTRY_PRIMARY,
|
||||||
TRUE );
|
TRUE );
|
||||||
gtk_box_pack_end( GTK_BOX( h ), s, FALSE, FALSE, 0 );
|
gtk_box_pack_end( GTK_BOX( h ), s, FALSE, FALSE, 0 );
|
||||||
gtk_box_pack_start( GTK_BOX( vbox ), h, FALSE, FALSE, 0 );
|
|
||||||
g_signal_connect( s, "changed", G_CALLBACK( filter_entry_changed ), p );
|
g_signal_connect( s, "changed", G_CALLBACK( filter_entry_changed ), p );
|
||||||
|
|
||||||
/* status menu */
|
/* status menu */
|
||||||
|
@ -614,7 +611,7 @@ tr_window_new( GtkUIManager * ui_manager,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* status */
|
/* status */
|
||||||
h = p->status = gtk_hbox_new( FALSE, GUI_PAD );
|
h = status = p->status = gtk_hbox_new( FALSE, GUI_PAD );
|
||||||
gtk_container_set_border_width( GTK_CONTAINER( h ), GUI_PAD );
|
gtk_container_set_border_width( GTK_CONTAINER( h ), GUI_PAD );
|
||||||
w = p->gutter_lb = gtk_label_new( "N Torrents" );
|
w = p->gutter_lb = gtk_label_new( "N Torrents" );
|
||||||
gtk_box_pack_start( GTK_BOX( h ), w, 0, 0, 0 );
|
gtk_box_pack_start( GTK_BOX( h ), w, 0, 0, 0 );
|
||||||
|
@ -641,7 +638,6 @@ tr_window_new( GtkUIManager * ui_manager,
|
||||||
gtk_box_pack_end( GTK_BOX( h ), w, FALSE, FALSE, 0 );
|
gtk_box_pack_end( GTK_BOX( h ), w, FALSE, FALSE, 0 );
|
||||||
g_signal_connect( w, "button-release-event",
|
g_signal_connect( w, "button-release-event",
|
||||||
G_CALLBACK( onYinYangReleased ), p );
|
G_CALLBACK( onYinYangReleased ), p );
|
||||||
gtk_box_pack_start( GTK_BOX( vbox ), h, FALSE, FALSE, 0 );
|
|
||||||
|
|
||||||
menu = gtk_menu_new( );
|
menu = gtk_menu_new( );
|
||||||
l = NULL;
|
l = NULL;
|
||||||
|
@ -650,27 +646,46 @@ tr_window_new( GtkUIManager * ui_manager,
|
||||||
const char * name = _( filter_text_names[i] );
|
const char * name = _( filter_text_names[i] );
|
||||||
GtkWidget * w = gtk_radio_menu_item_new_with_label ( l, name );
|
GtkWidget * w = gtk_radio_menu_item_new_with_label ( l, name );
|
||||||
l = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM( w ) );
|
l = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM( w ) );
|
||||||
g_object_set_data( G_OBJECT(
|
g_object_set_data( G_OBJECT( w ), FILTER_TEXT_MODE_KEY,
|
||||||
w ), FILTER_TEXT_MODE_KEY, GINT_TO_POINTER( i ) );
|
GINT_TO_POINTER( i ) );
|
||||||
g_signal_connect( w, "toggled", G_CALLBACK(
|
g_signal_connect( w, "toggled",
|
||||||
filter_text_toggled_cb ), p );
|
G_CALLBACK( filter_text_toggled_cb ), p );
|
||||||
gtk_menu_shell_append( GTK_MENU_SHELL( menu ), w );
|
gtk_menu_shell_append( GTK_MENU_SHELL( menu ), w );
|
||||||
gtk_widget_show( w );
|
gtk_widget_show( w );
|
||||||
}
|
}
|
||||||
g_signal_connect( s, "icon-released", G_CALLBACK(
|
g_signal_connect( s, "icon-released",
|
||||||
entry_icon_released ), menu );
|
G_CALLBACK( entry_icon_released ), menu );
|
||||||
|
|
||||||
/* workarea */
|
/* workarea */
|
||||||
p->view = makeview( p, core );
|
p->view = makeview( p, core );
|
||||||
w = p->scroll = gtk_scrolled_window_new( NULL, NULL );
|
w = list = p->scroll = gtk_scrolled_window_new( NULL, NULL );
|
||||||
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( w ),
|
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( w ),
|
||||||
GTK_POLICY_NEVER,
|
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC );
|
||||||
GTK_POLICY_AUTOMATIC );
|
|
||||||
gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( w ),
|
gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( w ),
|
||||||
GTK_SHADOW_IN );
|
GTK_SHADOW_IN );
|
||||||
gtk_container_add( GTK_CONTAINER( w ), p->view );
|
gtk_container_add( GTK_CONTAINER( w ), p->view );
|
||||||
gtk_box_pack_start( GTK_BOX( vbox ), w, TRUE, TRUE, 0 );
|
|
||||||
gtk_container_set_focus_child( GTK_CONTAINER( vbox ), w );
|
/* layout the widgets */
|
||||||
|
{
|
||||||
|
const char * str = pref_string_get( PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER );
|
||||||
|
char ** tokens = g_strsplit( str, ",", -1 );
|
||||||
|
for( i=0; tokens && tokens[i]; ++i )
|
||||||
|
{
|
||||||
|
const char * key = tokens[i];
|
||||||
|
|
||||||
|
if( !strcmp( key, "menu" ) )
|
||||||
|
gtk_box_pack_start( GTK_BOX( vbox ), mainmenu, FALSE, FALSE, 0 );
|
||||||
|
else if( !strcmp( key, "toolbar" ) )
|
||||||
|
gtk_box_pack_start( GTK_BOX( vbox ), toolbar, FALSE, FALSE, 0 );
|
||||||
|
else if( !strcmp( key, "filter" ) )
|
||||||
|
gtk_box_pack_start( GTK_BOX( vbox ), filter, FALSE, FALSE, 0 );
|
||||||
|
else if( !strcmp( key, "list" ) )
|
||||||
|
gtk_box_pack_start( GTK_BOX( vbox ), list, TRUE, TRUE, 0 );
|
||||||
|
else if( !strcmp( key, "statusbar" ) )
|
||||||
|
gtk_box_pack_start( GTK_BOX( vbox ), status, FALSE, FALSE, 0 );
|
||||||
|
}
|
||||||
|
g_strfreev( tokens );
|
||||||
|
}
|
||||||
|
|
||||||
/* show all but the window */
|
/* show all but the window */
|
||||||
gtk_widget_show_all( vbox );
|
gtk_widget_show_all( vbox );
|
||||||
|
|
Loading…
Reference in New Issue