Changeset 4223


Ignore:
Timestamp:
Dec 19, 2007, 8:04:38 PM (14 years ago)
Author:
charles
Message:

(gtk) minimal mode now works, mostly

Location:
trunk/gtk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/torrent-cell-renderer.c

    r4222 r4223  
    244244        int tmp_w, tmp_h;
    245245        int w=0, h=0;
     246        struct TorrentCellRendererPrivate * p = self->priv;
     247
     248        g_object_set( p->text_renderer, "ellipsize", PANGO_ELLIPSIZE_NONE, NULL );
    246249
    247250        /* above the progressbar */
    248         if( self->priv->minimal )
     251        if( p->minimal )
    249252        {
    250253            int w1, w2, h1, h2;
    251254            char * shortStatusString = getShortStatusString( torStat );
    252             g_object_set( self->priv->text_renderer, "text", name, NULL );
    253             gtk_cell_renderer_get_size( self->priv->text_renderer,
     255            g_object_set( p->text_renderer, "text", name, NULL );
     256            gtk_cell_renderer_get_size( p->text_renderer,
    254257                                        widget, NULL, NULL, NULL, &w1, &h1 );
    255258            str = g_markup_printf_escaped( "<small>%s</small>", shortStatusString );
    256             g_object_set( self->priv->text_renderer, "markup", name, NULL );
    257             gtk_cell_renderer_get_size( self->priv->text_renderer,
     259            g_object_set( p->text_renderer, "markup", str, NULL );
     260            gtk_cell_renderer_get_size( p->text_renderer,
    258261                                        widget, NULL, NULL, NULL, &w2, &h2 );
    259262            h += MAX( h1, h2 );
     
    267270            str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
    268271                                           name, progressString );
    269             g_object_set( self->priv->text_renderer, "markup", str, NULL );
    270             gtk_cell_renderer_get_size( self->priv->text_renderer,
     272            g_object_set( p->text_renderer, "markup", str, NULL );
     273            gtk_cell_renderer_get_size( p->text_renderer,
    271274                                        widget, NULL, NULL, NULL, &tmp_w, &tmp_h );
    272275            h += tmp_h;
     
    277280
    278281        /* below the progressbar */
    279         if( !self->priv->minimal )
     282        if( !p->minimal )
    280283        {
    281284            char * statusString = getStatusString( torStat );
    282285            str = g_markup_printf_escaped( "<small>%s</small>", statusString );
    283             g_object_set( self->priv->text_renderer, "markup", str, NULL );
    284             gtk_cell_renderer_get_size( self->priv->text_renderer,
     286            g_object_set( p->text_renderer, "markup", str, NULL );
     287            gtk_cell_renderer_get_size( p->text_renderer,
    285288                                        widget, NULL, NULL, NULL, &tmp_w, &tmp_h );
    286289            h += tmp_h;
     
    290293        }
    291294
    292         h += self->priv->bar_height;
     295        h += p->bar_height;
    293296
    294297        if( cell_area ) {
     
    300303        }
    301304
    302 g_message ("width %d height %d", *width, *height );
    303305        *width = w + xpad*2;
    304306        *height = h + ypad*2;
     
    480482        int xpad, ypad;
    481483        int w, h;
     484        struct TorrentCellRendererPrivate * p = self->priv;
    482485        g_object_get( self, "xpad", &xpad, "ypad", &ypad, NULL );
    483486
     
    496499
    497500        /* above the progressbar */
    498         str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
    499                                        name, progressString );
    500         g_object_set( self->priv->text_renderer, "markup", str, NULL );
    501         gtk_cell_renderer_get_size( self->priv->text_renderer,
    502                                     widget, NULL, NULL, NULL, &w, &h );
    503         my_bg.height = h;
    504         my_cell.height = h;
    505         my_expose.height = h;
    506         gtk_cell_renderer_render( self->priv->text_renderer,
    507                                   window, widget,
    508                                   &my_bg, &my_cell, &my_expose, flags );
    509         my_bg.y += h;
    510         my_cell.y += h;
    511         my_expose.y += h;
     501        if( !p->minimal )
     502        {
     503            str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
     504                                           name, progressString );
     505            g_object_set( p->text_renderer, "markup", str,
     506                                            "ellipsize", PANGO_ELLIPSIZE_NONE,
     507                                            NULL );
     508            gtk_cell_renderer_get_size( p->text_renderer,
     509                                        widget, NULL, NULL, NULL, &w, &h );
     510            my_bg.height = h;
     511            my_cell.height = h;
     512            my_expose.height = h;
     513            g_object_set( p->text_renderer, "ellipsize", PANGO_ELLIPSIZE_END,
     514                                            NULL );
     515            gtk_cell_renderer_render( p->text_renderer,
     516                                      window, widget,
     517                                      &my_bg, &my_cell, &my_expose, flags );
     518            my_bg.y += h;
     519            my_cell.y += h;
     520            my_expose.y += h;
     521        }
     522        else
     523        {
     524            int w1, w2, h1, h2, tmp_h;
     525            char * shortStatusString = getShortStatusString( torStat );
     526            GdkRectangle tmp_bg, tmp_cell, tmp_expose;
     527
     528            /* get the dimensions for the name */
     529            g_object_set( p->text_renderer, "text", name,
     530                                            "ellipsize", PANGO_ELLIPSIZE_NONE,
     531                                            NULL );
     532            gtk_cell_renderer_get_size( p->text_renderer,
     533                                        widget, NULL, NULL, NULL, &w1, &h1 );
     534
     535            /* get the dimensions for the short status string */
     536            str = g_markup_printf_escaped( "<small>%s</small>", shortStatusString );
     537            g_object_set( p->text_renderer, "markup", str,
     538                                            "ellipsize", PANGO_ELLIPSIZE_NONE,
     539                                            NULL );
     540            gtk_cell_renderer_get_size( p->text_renderer,
     541                                        widget, NULL, NULL, NULL, &w2, &h2 );
     542
     543            tmp_h = MAX( h1, h2 );
     544
     545            /* short status */
     546            tmp_bg.x = my_bg.width - w2;
     547            tmp_bg.y = my_bg.y;
     548            tmp_bg.width = w2;
     549            tmp_bg.height = tmp_h;
     550            tmp_expose = tmp_cell = tmp_bg;
     551            g_object_set( p->text_renderer, "markup", str,
     552                                            "ellipsize", PANGO_ELLIPSIZE_NONE,
     553                                            NULL );
     554            gtk_cell_renderer_render( p->text_renderer,
     555                                      window, widget,
     556                                      &tmp_bg, &tmp_cell, &tmp_expose, flags );
     557
     558            /* name */
     559            tmp_bg.x = my_bg.x;
     560            tmp_bg.width = my_bg.width - w2 - GUI_PAD_BIG;
     561            tmp_expose = tmp_cell = tmp_bg;
     562            g_object_set( p->text_renderer, "text", name,
     563                                            "ellipsize", PANGO_ELLIPSIZE_END,
     564                                            NULL );
     565            gtk_cell_renderer_render( p->text_renderer,
     566                                      window, widget,
     567                                      &tmp_bg, &tmp_cell, &tmp_expose, flags );
     568
     569            g_free( str );
     570            g_free( shortStatusString );
     571
     572            my_bg.y = tmp_bg.y + tmp_bg.height;
     573            my_cell.y = tmp_cell.y + tmp_cell.height;
     574            my_expose.y += tmp_expose.y + tmp_cell.height;
     575        }
    512576
    513577        /* the progressbar */
    514         my_cell.height = self->priv->bar_height;
     578        my_cell.height = p->bar_height;
    515579        drawRegularBar( self, info, torStat, window, widget, &my_cell );
    516580        my_bg.y     += my_cell.height;
     
    519583
    520584        /* below progressbar */
    521         if( !self->priv->minimal )
     585        if( !p->minimal )
    522586        {
    523587            str = g_markup_printf_escaped( "<small>%s</small>", statusString );
    524             g_object_set( self->priv->text_renderer, "markup", str, NULL );
    525             gtk_cell_renderer_get_size( self->priv->text_renderer,
     588            g_object_set( p->text_renderer, "markup", str,
     589                                            "ellipsize", PANGO_ELLIPSIZE_END,
     590                                            NULL );
     591            gtk_cell_renderer_get_size( p->text_renderer,
    526592                                        widget, NULL, NULL, NULL, &w, &h );
    527593            my_bg.height      = h;
    528594            my_cell.height    = h;
    529595            my_expose.height  = h;
    530             gtk_cell_renderer_render( self->priv->text_renderer,
     596            gtk_cell_renderer_render( p->text_renderer,
    531597                                      window, widget,
    532598                                      &my_bg, &my_cell, &my_expose, flags );
     
    557623        case P_TORRENT:             p->tor = g_value_get_pointer( v ); break;
    558624        case P_BAR_HEIGHT:          p->bar_height = g_value_get_int( v ); break;
    559         case P_MINIMAL:             { p->minimal  = g_value_get_boolean( v ); g_message("setting minimal to %d", p->minimal ); break; }
     625        case P_MINIMAL:             p->minimal  = g_value_get_boolean( v ); break;
    560626        case P_GRADIENT:            p->gradient = g_value_get_boolean( v ); break;
    561627        case P_SHOW_UNAVAILABLE:    p->show_unavailable = g_value_get_boolean( v ); break;
     
    732798    p->show_unavailable = TRUE;
    733799    p->bar_height = DEFAULT_BAR_HEIGHT;
    734     g_object_set( p->text_renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL );
    735800
    736801    gdk_color_parse( DEFAULT_COLOR_VERIFIED,      &p->color_verified[0] );
  • trunk/gtk/tr_window.c

    r4222 r4223  
    3939#include "util.h"
    4040
     41#if !GTK_CHECK_VERSION(2,8,0)
     42static void
     43gtk_tree_view_column_queue_resize( GtkTreeViewColumn * column ) /* yuck */
     44{
     45   const int spacing = gtk_tree_view_column_get_spacing( column );
     46   gtk_tree_view_column_set_spacing( column, spacing+1 );
     47   gtk_tree_view_column_set_spacing( column, spacing );
     48}
     49#endif
     50
    4151typedef struct
    4252{
     
    4656    GtkWidget * ul_lb;
    4757    GtkWidget * dl_lb;
    48     GtkTreeSelection * selection;
    49     GtkCellRenderer  * renderer;
     58    GtkTreeSelection  * selection;
     59    GtkCellRenderer   * renderer;
     60    GtkTreeViewColumn * column;
    5061    TrCore * core;
    5162    gulong pref_handler_id;
     
    97108
    98109    p->renderer = r = torrent_cell_renderer_new( );
    99     col = gtk_tree_view_column_new_with_attributes( _("Torrent"), r, "torrent", MC_TORRENT_RAW, NULL );
     110    p->column = col = gtk_tree_view_column_new_with_attributes(
     111        _("Torrent"), r, "torrent", MC_TORRENT_RAW, NULL );
    100112    gtk_tree_view_column_set_sizing( col, GTK_TREE_VIEW_COLUMN_AUTOSIZE );
    101113    gtk_tree_view_append_column( GTK_TREE_VIEW( view ), col );
     
    121133{
    122134    PrivateData * p = get_private_data( GTK_WINDOW( wind ) );
    123     sizingmagic( GTK_WINDOW(wind), GTK_SCROLLED_WINDOW( p->scroll ),
    124                  GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS );
     135    sizingmagic( GTK_WINDOW(wind),
     136                 GTK_SCROLLED_WINDOW( p->scroll ),
     137                 GTK_POLICY_NEVER,
     138                 GTK_POLICY_ALWAYS );
    125139}
    126140
     
    132146       PrivateData * p = get_private_data( GTK_WINDOW( wind ) );
    133147       g_object_set( p->renderer, "minimal", pref_flag_get( key ), NULL );
     148       gtk_tree_view_column_queue_resize( p->column );
    134149    }
    135150}
Note: See TracChangeset for help on using the changeset viewer.