Changeset 11642


Ignore:
Timestamp:
Jan 6, 2011, 5:21:55 PM (12 years ago)
Author:
jordan
Message:

(trunk gtk) #3876 "Give filesize its own column in the Files tree" -- added.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/file-list.c

    r11628 r11642  
    4444    FC_INDEX,
    4545    FC_SIZE,
     46    FC_SIZE_STR,
    4647    FC_HAVE,
    4748    FC_PRIORITY,
     
    199200                             || (enabled!=old_enabled)
    200201                             || (prog!=old_prog) )
     202        {
     203            char size_str[64];
     204            tr_strlsize( size_str, sub_size, sizeof size_str );
    201205            gtk_tree_store_set( data->store, iter, FC_SIZE, sub_size,
     206                                                   FC_SIZE_STR, size_str,
    202207                                                   FC_HAVE, have,
    203208                                                   FC_PRIORITY, priority,
     
    205210                                                   FC_PROG, prog,
    206211                                                   -1 );
     212        }
    207213    }
    208214
     
    430436buildTree( GNode * node, gpointer gdata )
    431437{
     438    char size_str[64];
    432439    GtkTreeIter child_iter;
    433440    struct build_data * build = gdata;
     
    440447    const int priority = isLeaf ? inf->files[ child_data->index ].priority : 0;
    441448    const gboolean enabled = isLeaf ? !inf->files[ child_data->index ].dnd : TRUE;
     449
     450    tr_strlsize( size_str, child_data->length, sizeof size_str );
     451
    442452#if GTK_CHECK_VERSION(2,10,0)
    443453    gtk_tree_store_insert_with_values( build->store, &child_iter, build->iter, INT_MAX,
     
    445455                                       FC_LABEL, child_data->name,
    446456                                       FC_SIZE, child_data->length,
     457                                       FC_SIZE_STR, size_str,
    447458                                       FC_ICON, icon,
    448459                                       FC_PRIORITY, priority,
     
    455466                        FC_LABEL, child_data->name,
    456467                        FC_SIZE, child_data->length,
     468                        FC_SIZE_STR, size_str,
    457469                        FC_ICON, icon,
    458470                        FC_PRIORITY, priority,
     
    504516                                 G_TYPE_UINT,      /* index */
    505517                                 G_TYPE_UINT64,    /* size */
     518                                 G_TYPE_STRING,    /* size str */
    506519                                 G_TYPE_UINT64,    /* have */
    507520                                 G_TYPE_INT,       /* priority */
     
    579592
    580593static void
    581 renderFilename( GtkTreeViewColumn  * column UNUSED,
    582                 GtkCellRenderer    * renderer,
    583                 GtkTreeModel       * model,
    584                 GtkTreeIter        * iter,
    585                 gpointer             data UNUSED )
    586 {
    587     char *   filename;
    588     char *   str;
    589     int64_t  size;
    590     char     buf[64];
    591 
    592     gtk_tree_model_get( model, iter, FC_LABEL, &filename,
    593                                      FC_SIZE, &size,
    594                                      -1 );
    595     tr_strlsize( buf, size, sizeof( buf ) );
    596     str = g_markup_printf_escaped( "<small>%s (%s)</small>", filename, buf );
    597     g_object_set( renderer, "markup", str, NULL );
    598     g_free( str );
    599     g_free( filename );
    600 }
    601 
    602 static void
    603594renderDownload( GtkTreeViewColumn  * column UNUSED,
    604595                GtkCellRenderer    * renderer,
     
    912903gtr_file_list_new( TrCore * core, int torrentId )
    913904{
     905    int size;
    914906    int width;
    915907    GtkWidget * ret;
     
    922914    const char * title;
    923915    PangoLayout * pango_layout;
     916    PangoContext * pango_context;
     917    PangoFontDescription * pango_font_description;
    924918    FileData * data = g_new0( FileData, 1 );
    925919
     
    941935
    942936
     937    pango_context = gtk_widget_create_pango_context( view );
     938    pango_font_description = pango_font_description_copy( pango_context_get_font_description( pango_context ) );
     939    size = pango_font_description_get_size( pango_font_description );
     940    pango_font_description_set_size( pango_font_description, size * 0.8 );
     941    g_object_unref( G_OBJECT( pango_context ) );
     942
    943943    /* set up view */
    944944    sel = gtk_tree_view_get_selection( tree_view );
     
    948948
    949949    /* add file column */
    950 
    951950    col = GTK_TREE_VIEW_COLUMN ( g_object_new ( GTK_TYPE_TREE_VIEW_COLUMN,
    952951                                                "expand", TRUE,
    953                                                 "title", _( "File" ),
     952                                                "title", _( "Name" ),
    954953                                                NULL ) );
    955954    gtk_tree_view_column_set_resizable( col, TRUE );
     
    959958    /* add text renderer */
    960959    rend = gtk_cell_renderer_text_new( );
    961     g_object_set( rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL );
     960    g_object_set( rend, "ellipsize", PANGO_ELLIPSIZE_END, "font-desc", pango_font_description, NULL );
    962961    gtk_tree_view_column_pack_start( col, rend, TRUE );
    963     gtk_tree_view_column_set_cell_data_func( col, rend, renderFilename, NULL, NULL );
     962    gtk_tree_view_column_set_attributes( col, rend, "text", FC_LABEL, NULL );
    964963    gtk_tree_view_column_set_sort_column_id( col, FC_LABEL );
    965964    gtk_tree_view_append_column( tree_view, col );
    966965
     966    /* add "size" column */
     967    title = _( "Size" );
     968    rend = gtk_cell_renderer_text_new( );
     969    g_object_set( rend, "alignment", PANGO_ALIGN_RIGHT,
     970                        "font-desc", pango_font_description,
     971                        "xpad", GUI_PAD,
     972                        "xalign", 1.0f,
     973                        "yalign", 0.5f,
     974                        NULL );
     975    col = gtk_tree_view_column_new_with_attributes( title, rend, NULL );
     976    gtk_tree_view_column_set_sizing( col, GTK_TREE_VIEW_COLUMN_GROW_ONLY );
     977    gtk_tree_view_column_set_sort_column_id( col, FC_SIZE );
     978    gtk_tree_view_column_set_attributes( col, rend, "text", FC_SIZE_STR, NULL );
     979    gtk_tree_view_append_column( tree_view, col );
     980
    967981    /* add "progress" column */
    968     title = _( "Progress" );
     982    title = _( "Have" );
    969983    pango_layout = gtk_widget_create_pango_layout( view, title );
    970984    pango_layout_get_pixel_size( pango_layout, &width, NULL );
Note: See TracChangeset for help on using the changeset viewer.