Changeset 7502


Ignore:
Timestamp:
Dec 25, 2008, 4:17:08 PM (12 years ago)
Author:
charles
Message:

(trunk gtk) #996: make status location configurable; default to bottom of window as per Gnome HiG

Location:
trunk/gtk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/tr-prefs.c

    r7477 r7502  
    7171    pref_int_set_default    ( PREF_KEY_MAIN_WINDOW_X, 50 );
    7272    pref_int_set_default    ( PREF_KEY_MAIN_WINDOW_Y, 50 );
     73    pref_string_set_default ( PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER, "menu,toolbar,filter,list,statusbar" );
    7374
    7475    str = NULL;
  • trunk/gtk/tr-prefs.h

    r7404 r7502  
    2222 * default in tr_prefs_init_global( void ) */
    2323
    24 #define PREF_KEY_SCHED_LIMIT_ENABLED    "sched-limit-enabled"
    25 #define PREF_KEY_SCHED_BEGIN            "sched-begin"
    26 #define PREF_KEY_SCHED_END              "sched-end"
    27 #define PREF_KEY_SCHED_DL_LIMIT         "sched-download-limit"
    28 #define PREF_KEY_SCHED_UL_LIMIT         "sched-upload-limit"
    29 #define PREF_KEY_OPTIONS_PROMPT         "show-options-window"
    30 #define PREF_KEY_OPEN_DIALOG_FOLDER     "open-dialog-dir"
    31 #define PREF_KEY_INHIBIT_HIBERNATION    "inhibit-desktop-hibernation"
    32 #define PREF_KEY_DIR_WATCH              "watch-dir"
    33 #define PREF_KEY_DIR_WATCH_ENABLED      "watch-dir-enabled"
    34 #define PREF_KEY_SHOW_TRAY_ICON         "show-notification-area-icon"
    35 #define PREF_KEY_START                  "start-added-torrents"
    36 #define PREF_KEY_TRASH_ORIGINAL         "trash-original-torrent-files"
    37 #define PREF_KEY_ASKQUIT                "prompt-before-exit"
    38 #define PREF_KEY_SORT_MODE              "sort-mode"
    39 #define PREF_KEY_SORT_REVERSED          "sort-reversed"
    40 #define PREF_KEY_MINIMAL_VIEW           "minimal-view"
    41 #define PREF_KEY_FILTERBAR              "show-filterbar"
    42 #define PREF_KEY_STATUSBAR              "show-statusbar"
    43 #define PREF_KEY_STATUSBAR_STATS        "statusbar-stats"
    44 #define PREF_KEY_TOOLBAR                "show-toolbar"
     24#define PREF_KEY_SCHED_LIMIT_ENABLED        "sched-limit-enabled"
     25#define PREF_KEY_SCHED_BEGIN                "sched-begin"
     26#define PREF_KEY_SCHED_END                  "sched-end"
     27#define PREF_KEY_SCHED_DL_LIMIT             "sched-download-limit"
     28#define PREF_KEY_SCHED_UL_LIMIT             "sched-upload-limit"
     29#define PREF_KEY_OPTIONS_PROMPT             "show-options-window"
     30#define PREF_KEY_OPEN_DIALOG_FOLDER         "open-dialog-dir"
     31#define PREF_KEY_INHIBIT_HIBERNATION        "inhibit-desktop-hibernation"
     32#define PREF_KEY_DIR_WATCH                  "watch-dir"
     33#define PREF_KEY_DIR_WATCH_ENABLED          "watch-dir-enabled"
     34#define PREF_KEY_SHOW_TRAY_ICON             "show-notification-area-icon"
     35#define PREF_KEY_START                      "start-added-torrents"
     36#define PREF_KEY_TRASH_ORIGINAL             "trash-original-torrent-files"
     37#define PREF_KEY_ASKQUIT                    "prompt-before-exit"
     38#define PREF_KEY_SORT_MODE                  "sort-mode"
     39#define PREF_KEY_SORT_REVERSED              "sort-reversed"
     40#define PREF_KEY_MINIMAL_VIEW               "minimal-view"
     41#define PREF_KEY_FILTERBAR                  "show-filterbar"
     42#define PREF_KEY_STATUSBAR                  "show-statusbar"
     43#define PREF_KEY_STATUSBAR_STATS            "statusbar-stats"
     44#define PREF_KEY_TOOLBAR                    "show-toolbar"
    4545#define PREF_KEY_BLOCKLIST_UPDATES_ENABLED  "blocklist-updates-enabled"
    46 #define PREF_KEY_MAIN_WINDOW_HEIGHT     "main-window-height"
    47 #define PREF_KEY_MAIN_WINDOW_WIDTH      "main-window-width"
    48 #define PREF_KEY_MAIN_WINDOW_X          "main-window-x"
    49 #define PREF_KEY_MAIN_WINDOW_Y          "main-window-y"
    50 
     46#define PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER   "main-window-layout-order"
     47#define PREF_KEY_MAIN_WINDOW_HEIGHT         "main-window-height"
     48#define PREF_KEY_MAIN_WINDOW_WIDTH          "main-window-width"
     49#define PREF_KEY_MAIN_WINDOW_X              "main-window-x"
     50#define PREF_KEY_MAIN_WINDOW_Y              "main-window-y"
    5151
    5252void tr_prefs_init_global( void );
  • trunk/gtk/tr-window.c

    r7465 r7502  
    499499
    500500GtkWidget *
    501 tr_window_new( GtkUIManager * ui_manager,
    502                TrCore *       core )
     501tr_window_new( GtkUIManager * ui_mgr, TrCore * core )
    503502{
    504503    int           i, n;
    505504    const char *  pch;
    506505    PrivateData * p;
     506    GtkWidget   *mainmenu, *toolbar, *filter, *list, *status;
    507507    GtkWidget *   vbox, *w, *self, *h, *c, *s, *image, *menu;
    508508    GtkWindow *   win;
    509509    GSList *      l;
    510510    GSList *      toggles;
     511
    511512    const char *  filter_names[FILTER_MODE_QTY] = {
    512513        /* show all torrents */
     
    538539    gtk_window_set_role( win, "tr-main" );
    539540    gtk_window_set_default_size( win,
    540                                 pref_int_get( PREF_KEY_MAIN_WINDOW_WIDTH ),
    541                                 pref_int_get( PREF_KEY_MAIN_WINDOW_HEIGHT ) );
     541                                 pref_int_get( PREF_KEY_MAIN_WINDOW_WIDTH ),
     542                                 pref_int_get( PREF_KEY_MAIN_WINDOW_HEIGHT ) );
    542543    gtk_window_move( win, pref_int_get( PREF_KEY_MAIN_WINDOW_X ),
    543                     pref_int_get( PREF_KEY_MAIN_WINDOW_Y ) );
    544     gtk_window_add_accel_group( win,
    545                                gtk_ui_manager_get_accel_group( ui_manager ) );
     544                     pref_int_get( PREF_KEY_MAIN_WINDOW_Y ) );
     545    gtk_window_add_accel_group( win, gtk_ui_manager_get_accel_group( ui_mgr ) );
    546546
    547547    /* window's main container */
     
    550550
    551551    /* main menu */
    552     w = action_get_widget( "/main-window-menu" );
    553     gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
     552    w = mainmenu = action_get_widget( "/main-window-menu" );
    554553    w = action_get_widget( "/main-window-menu/torrent-menu/update-tracker" );
    555554#if GTK_CHECK_VERSION( 2, 12, 0 )
     
    559558
    560559    /* toolbar */
    561     w = p->toolbar = action_get_widget( "/main-window-toolbar" );
    562     gtk_box_pack_start( GTK_BOX( vbox ), w, FALSE, FALSE, 0 );
     560    w = toolbar = p->toolbar = action_get_widget( "/main-window-toolbar" );
    563561
    564562    /* filter */
    565563    toggles = NULL;
    566     h = p->filter = gtk_hbox_new( FALSE, 0 );
     564    h = filter = p->filter = gtk_hbox_new( FALSE, 0 );
    567565    gtk_container_set_border_width( GTK_CONTAINER( h ), GUI_PAD_SMALL );
    568566    for( i = 0; i < FILTER_MODE_QTY; ++i )
     
    591589                                        TRUE );
    592590    gtk_box_pack_end( GTK_BOX( h ), s, FALSE, FALSE, 0 );
    593     gtk_box_pack_start( GTK_BOX( vbox ), h, FALSE, FALSE, 0 );
    594591    g_signal_connect( s, "changed", G_CALLBACK( filter_entry_changed ), p );
    595592
     
    615612
    616613    /* status */
    617     h = p->status = gtk_hbox_new( FALSE, GUI_PAD );
     614    h = status = p->status = gtk_hbox_new( FALSE, GUI_PAD );
    618615    gtk_container_set_border_width( GTK_CONTAINER( h ), GUI_PAD );
    619616    w = p->gutter_lb = gtk_label_new( "N Torrents" );
     
    642639    g_signal_connect( w, "button-release-event",
    643640                      G_CALLBACK( onYinYangReleased ), p );
    644     gtk_box_pack_start( GTK_BOX( vbox ), h, FALSE, FALSE, 0 );
    645641
    646642    menu = gtk_menu_new( );
     
    651647        GtkWidget *  w = gtk_radio_menu_item_new_with_label ( l, name );
    652648        l = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM( w ) );
    653         g_object_set_data( G_OBJECT(
    654                               w ), FILTER_TEXT_MODE_KEY, GINT_TO_POINTER( i ) );
    655         g_signal_connect( w, "toggled", G_CALLBACK(
    656                               filter_text_toggled_cb ), p );
     649        g_object_set_data( G_OBJECT( w ), FILTER_TEXT_MODE_KEY,
     650                           GINT_TO_POINTER( i ) );
     651        g_signal_connect( w, "toggled",
     652                          G_CALLBACK( filter_text_toggled_cb ), p );
    657653        gtk_menu_shell_append( GTK_MENU_SHELL( menu ), w );
    658654        gtk_widget_show( w );
    659655    }
    660     g_signal_connect( s, "icon-released", G_CALLBACK(
    661                           entry_icon_released ), menu );
     656    g_signal_connect( s, "icon-released",
     657                      G_CALLBACK( entry_icon_released ), menu );
    662658
    663659    /* workarea */
    664660    p->view = makeview( p, core );
    665     w = p->scroll = gtk_scrolled_window_new( NULL, NULL );
     661    w = list = p->scroll = gtk_scrolled_window_new( NULL, NULL );
    666662    gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( w ),
    667                                     GTK_POLICY_NEVER,
    668                                     GTK_POLICY_AUTOMATIC );
     663                                    GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC );
    669664    gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( w ),
    670665                                         GTK_SHADOW_IN );
    671666    gtk_container_add( GTK_CONTAINER( w ), p->view );
    672     gtk_box_pack_start( GTK_BOX( vbox ), w, TRUE, TRUE, 0 );
    673     gtk_container_set_focus_child( GTK_CONTAINER( vbox ), w );
     667
     668    /* layout the widgets */
     669    {
     670        const char * str = pref_string_get( PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER );
     671        char ** tokens = g_strsplit( str, ",", -1 );
     672        for( i=0; tokens && tokens[i]; ++i )
     673        {
     674            const char * key = tokens[i];
     675
     676            if( !strcmp( key, "menu" ) )
     677                gtk_box_pack_start( GTK_BOX( vbox ), mainmenu, FALSE, FALSE, 0 );
     678            else if( !strcmp( key, "toolbar" ) )
     679                gtk_box_pack_start( GTK_BOX( vbox ), toolbar, FALSE, FALSE, 0 );
     680            else if( !strcmp( key, "filter" ) )
     681                gtk_box_pack_start( GTK_BOX( vbox ), filter, FALSE, FALSE, 0 );
     682            else if( !strcmp( key, "list" ) )
     683                gtk_box_pack_start( GTK_BOX( vbox ), list, TRUE, TRUE, 0 );
     684            else if( !strcmp( key, "statusbar" ) )
     685                gtk_box_pack_start( GTK_BOX( vbox ), status, FALSE, FALSE, 0 );
     686        }
     687        g_strfreev( tokens );
     688    }
    674689
    675690    /* show all but the window */
Note: See TracChangeset for help on using the changeset viewer.