{
tr_torrent * tor;
GtkCellRenderer * text_renderer;
- GtkCellRenderer * text_renderer_err;
GtkCellRenderer * progress_renderer;
GtkCellRenderer * icon_renderer;
int bar_height;
return gtr_get_mime_type_icon( mime_type, icon_size, for_widget );
}
-static GtkCellRenderer*
-get_text_renderer( const tr_stat * st, TorrentCellRenderer * r )
-{
- return st->error ? r->priv->text_renderer_err : r->priv->text_renderer;
-}
-
/***
****
***/
const char * name;
char * status;
GdkPixbuf * icon;
- GtkCellRenderer * text_renderer;
struct TorrentCellRendererPrivate * p = cell->priv;
const tr_torrent * tor = p->tor;
gtk_cell_renderer_get_size( p->icon_renderer, widget, NULL, NULL, NULL, &w, &h );
icon_area.width = w;
icon_area.height = h;
- text_renderer = get_text_renderer( st, cell );
- g_object_set( text_renderer, "text", name, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &w, &h );
+ g_object_set( p->text_renderer, "text", name, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h );
name_area.width = w;
name_area.height = h;
- g_object_set( text_renderer, "text", status, "scale", SMALL_SCALE, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &w, &h );
+ g_object_set( p->text_renderer, "text", status, "scale", SMALL_SCALE, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h );
stat_area.width = w;
stat_area.height = h;
char * status;
char * progress;
GdkPixbuf * icon;
- GtkCellRenderer * text_renderer;
struct TorrentCellRendererPrivate * p = cell->priv;
const tr_torrent * tor = p->tor;
gtk_cell_renderer_get_size( p->icon_renderer, widget, NULL, NULL, NULL, &w, &h );
icon_area.width = w;
icon_area.height = h;
- text_renderer = get_text_renderer( st, cell );
- g_object_set( text_renderer, "text", name, "weight", PANGO_WEIGHT_BOLD, "scale", 1.0, "ellipsize", PANGO_ELLIPSIZE_NONE, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &w, &h );
+ g_object_set( p->text_renderer, "text", name, "weight", PANGO_WEIGHT_BOLD, "scale", 1.0, "ellipsize", PANGO_ELLIPSIZE_NONE, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h );
name_area.width = w;
name_area.height = h;
- g_object_set( text_renderer, "text", progress, "weight", PANGO_WEIGHT_NORMAL, "scale", SMALL_SCALE, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &w, &h );
+ g_object_set( p->text_renderer, "text", progress, "weight", PANGO_WEIGHT_NORMAL, "scale", SMALL_SCALE, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h );
prog_area.width = w;
prog_area.height = h;
- g_object_set( text_renderer, "text", status, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &w, &h );
+ g_object_set( p->text_renderer, "text", status, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h );
stat_area.width = w;
stat_area.height = h;
}
}
+static void
+get_text_color( GtkWidget * w, const tr_stat * st, GdkColor * setme )
+{
+ static const GdkColor red = { 0, 65535, 0, 0 };
+
+ if( st->error )
+ *setme = red;
+ else if( st->activity == TR_STATUS_STOPPED )
+ *setme = gtk_widget_get_style(w)->text[GTK_STATE_INSENSITIVE];
+ else
+ *setme = gtk_widget_get_style(w)->text[GTK_STATE_NORMAL];
+}
+
static void
render_compact( TorrentCellRenderer * cell,
GdkDrawable * window,
const char * name;
char * status;
GdkPixbuf * icon;
- GtkCellRenderer * text_renderer;
+ GdkColor text_color;
struct TorrentCellRendererPrivate * p = cell->priv;
const tr_torrent * tor = p->tor;
name = tr_torrentInfo( tor )->name;
status = getShortStatusString( tor, st, p->upload_speed_KBps, p->download_speed_KBps );
gtr_cell_renderer_get_padding( GTK_CELL_RENDERER( cell ), &xpad, &ypad );
+ get_text_color( widget, st, &text_color );
fill_area = *background_area;
fill_area.x += xpad;
g_object_set( p->icon_renderer, "pixbuf", icon, NULL );
gtk_cell_renderer_get_size( p->icon_renderer, widget, NULL, NULL, NULL, &icon_area.width, NULL );
- text_renderer = get_text_renderer( st, cell );
- g_object_set( text_renderer, "text", name, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &name_area.width, NULL );
- g_object_set( text_renderer, "text", status, "scale", SMALL_SCALE, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &stat_area.width, NULL );
+ g_object_set( p->text_renderer, "text", name, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &name_area.width, NULL );
+ g_object_set( p->text_renderer, "text", status, "scale", SMALL_SCALE, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &stat_area.width, NULL );
icon_area.x = fill_area.x;
prog_area.x = fill_area.x + fill_area.width - BAR_WIDTH;
gtk_cell_renderer_render( p->icon_renderer, window, widget, &icon_area, &icon_area, &icon_area, flags );
g_object_set( p->progress_renderer, "value", (int)(percentDone*100.0), "text", NULL, "sensitive", sensitive, NULL );
gtk_cell_renderer_render( p->progress_renderer, window, widget, &prog_area, &prog_area, &prog_area, flags );
- g_object_set( text_renderer, "text", status, "scale", SMALL_SCALE, "sensitive", sensitive, "ellipsize", PANGO_ELLIPSIZE_END, NULL );
- gtk_cell_renderer_render( text_renderer, window, widget, &stat_area, &stat_area, &stat_area, flags );
- g_object_set( text_renderer, "text", name, "scale", 1.0, NULL );
- gtk_cell_renderer_render( text_renderer, window, widget, &name_area, &name_area, &name_area, flags );
+ g_object_set( p->text_renderer, "text", status, "scale", SMALL_SCALE, "ellipsize", PANGO_ELLIPSIZE_END, "foreground-gdk", &text_color, NULL );
+ gtk_cell_renderer_render( p->text_renderer, window, widget, &stat_area, &stat_area, &stat_area, flags );
+ g_object_set( p->text_renderer, "text", name, "scale", 1.0, NULL );
+ gtk_cell_renderer_render( p->text_renderer, window, widget, &name_area, &name_area, &name_area, flags );
/* cleanup */
g_free( status );
char * status;
char * progress;
GdkPixbuf * icon;
- GtkCellRenderer * text_renderer;
+ GdkColor text_color;
struct TorrentCellRendererPrivate * p = cell->priv;
const tr_torrent * tor = p->tor;
status = getStatusString( tor, st, p->upload_speed_KBps, p->download_speed_KBps );
progress = getProgressString( tor, inf, st );
gtr_cell_renderer_get_padding( GTK_CELL_RENDERER( cell ), &xpad, &ypad );
+ get_text_color( widget, st, &text_color );
/* get the idealized cell dimensions */
g_object_set( p->icon_renderer, "pixbuf", icon, NULL );
gtk_cell_renderer_get_size( p->icon_renderer, widget, NULL, NULL, NULL, &w, &h );
icon_area.width = w;
icon_area.height = h;
- text_renderer = get_text_renderer( st, cell );
- g_object_set( text_renderer, "text", name, "weight", PANGO_WEIGHT_BOLD, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &w, &h );
+ g_object_set( p->text_renderer, "text", name, "weight", PANGO_WEIGHT_BOLD, "ellipsize", PANGO_ELLIPSIZE_NONE, "scale", 1.0, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h );
name_area.width = w;
name_area.height = h;
- g_object_set( text_renderer, "text", progress, "weight", PANGO_WEIGHT_NORMAL, "scale", SMALL_SCALE, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &w, &h );
+ g_object_set( p->text_renderer, "text", progress, "weight", PANGO_WEIGHT_NORMAL, "scale", SMALL_SCALE, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h );
prog_area.width = w;
prog_area.height = h;
- g_object_set( text_renderer, "text", status, NULL );
- gtk_cell_renderer_get_size( text_renderer, widget, NULL, NULL, NULL, &w, &h );
+ g_object_set( p->text_renderer, "text", status, NULL );
+ gtk_cell_renderer_get_size( p->text_renderer, widget, NULL, NULL, NULL, &w, &h );
stat_area.width = w;
stat_area.height = h;
g_object_set( p->icon_renderer, "pixbuf", icon, "sensitive", sensitive, NULL );
gtk_cell_renderer_render( p->icon_renderer, window, widget, &icon_area, &icon_area, &icon_area, flags );
- g_object_set( text_renderer, "text", name, "scale", 1.0, "sensitive", sensitive, "ellipsize", PANGO_ELLIPSIZE_END, "weight", PANGO_WEIGHT_BOLD, NULL );
- gtk_cell_renderer_render( text_renderer, window, widget, &name_area, &name_area, &name_area, flags );
- g_object_set( text_renderer, "text", progress, "scale", SMALL_SCALE, "weight", PANGO_WEIGHT_NORMAL, NULL );
- gtk_cell_renderer_render( text_renderer, window, widget, &prog_area, &prog_area, &prog_area, flags );
+ g_object_set( p->text_renderer, "text", name, "scale", 1.0, "foreground-gdk", &text_color, "ellipsize", PANGO_ELLIPSIZE_END, "weight", PANGO_WEIGHT_BOLD, NULL );
+ gtk_cell_renderer_render( p->text_renderer, window, widget, &name_area, &name_area, &name_area, flags );
+ g_object_set( p->text_renderer, "text", progress, "scale", SMALL_SCALE, "weight", PANGO_WEIGHT_NORMAL, NULL );
+ gtk_cell_renderer_render( p->text_renderer, window, widget, &prog_area, &prog_area, &prog_area, flags );
g_object_set( p->progress_renderer, "value", (int)(percentDone*100.0), "text", "", "sensitive", sensitive, NULL );
gtk_cell_renderer_render( p->progress_renderer, window, widget, &prct_area, &prct_area, &prct_area, flags );
- g_object_set( text_renderer, "text", status, NULL );
- gtk_cell_renderer_render( text_renderer, window, widget, &stat_area, &stat_area, &stat_area, flags );
+ g_object_set( p->text_renderer, "text", status, NULL );
+ gtk_cell_renderer_render( p->text_renderer, window, widget, &stat_area, &stat_area, &stat_area, flags );
/* cleanup */
g_free( status );
if( r && r->priv )
{
g_object_unref( G_OBJECT( r->priv->text_renderer ) );
- g_object_unref( G_OBJECT( r->priv->text_renderer_err ) );
g_object_unref( G_OBJECT( r->priv->progress_renderer ) );
g_object_unref( G_OBJECT( r->priv->icon_renderer ) );
r->priv = NULL;
p->tor = NULL;
p->text_renderer = gtk_cell_renderer_text_new( );
g_object_set( p->text_renderer, "xpad", 0, "ypad", 0, NULL );
- p->text_renderer_err = gtk_cell_renderer_text_new( );
- g_object_set( p->text_renderer_err, "xpad", 0, "ypad", 0, NULL );
p->progress_renderer = gtk_cell_renderer_progress_new( );
p->icon_renderer = gtk_cell_renderer_pixbuf_new( );
- g_object_set( p->text_renderer_err, "foreground", "red", NULL );
gtr_object_ref_sink( p->text_renderer );
- gtr_object_ref_sink( p->text_renderer_err );
gtr_object_ref_sink( p->progress_renderer );
gtr_object_ref_sink( p->icon_renderer );