1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-02-03 04:53:27 +00:00

(gtk) render torrent error strings in red.

This commit is contained in:
Charles Kerr 2008-01-18 00:16:49 +00:00
parent 9f176115e6
commit 2247a2d1f9

View file

@ -224,6 +224,7 @@ struct TorrentCellRendererPrivate
{ {
tr_torrent * tor; tr_torrent * tor;
GtkCellRenderer * text_renderer; GtkCellRenderer * text_renderer;
GtkCellRenderer * text_renderer_err;
int bar_height; int bar_height;
gboolean minimal; gboolean minimal;
gboolean show_unavailable; gboolean show_unavailable;
@ -259,20 +260,23 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell,
char * str; char * str;
int w=0, h=0; int w=0, h=0;
struct TorrentCellRendererPrivate * p = self->priv; struct TorrentCellRendererPrivate * p = self->priv;
GtkCellRenderer * text_renderer = torStat->error != 0
? p->text_renderer_err
: p->text_renderer;
g_object_set( p->text_renderer, "ellipsize", PANGO_ELLIPSIZE_NONE, NULL ); g_object_set( text_renderer, "ellipsize", PANGO_ELLIPSIZE_NONE, NULL );
/* above the progressbar */ /* above the progressbar */
if( p->minimal ) if( p->minimal )
{ {
int w1, w2, h1, h2; int w1, w2, h1, h2;
char * shortStatus = getShortStatusString( torStat ); char * shortStatus = getShortStatusString( torStat );
g_object_set( p->text_renderer, "text", name, NULL ); g_object_set( text_renderer, "text", name, NULL );
gtk_cell_renderer_get_size( p->text_renderer, gtk_cell_renderer_get_size( text_renderer,
widget, NULL, NULL, NULL, &w1, &h1 ); widget, NULL, NULL, NULL, &w1, &h1 );
str = g_markup_printf_escaped( "<small>%s</small>", shortStatus ); str = g_markup_printf_escaped( "<small>%s</small>", shortStatus );
g_object_set( p->text_renderer, "markup", str, NULL ); g_object_set( text_renderer, "markup", str, NULL );
gtk_cell_renderer_get_size( p->text_renderer, gtk_cell_renderer_get_size( text_renderer,
widget, NULL, NULL, NULL, &w2, &h2 ); widget, NULL, NULL, NULL, &w2, &h2 );
h += MAX( h1, h2 ); h += MAX( h1, h2 );
w = MAX( w, w1+GUI_PAD_BIG+w2 ); w = MAX( w, w1+GUI_PAD_BIG+w2 );
@ -285,8 +289,8 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell,
char * progressString = getProgressString( info, torStat ); char * progressString = getProgressString( info, torStat );
str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>", str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
name, progressString ); name, progressString );
g_object_set( p->text_renderer, "markup", str, NULL ); g_object_set( text_renderer, "markup", str, NULL );
gtk_cell_renderer_get_size( p->text_renderer, gtk_cell_renderer_get_size( text_renderer,
widget, NULL, NULL, NULL, &w1, &h1 ); widget, NULL, NULL, NULL, &w1, &h1 );
h += h1; h += h1;
w = MAX( w, w1 ); w = MAX( w, w1 );
@ -300,8 +304,8 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell,
int w1, h1; int w1, h1;
char * statusString = getStatusString( torStat ); char * statusString = getStatusString( torStat );
str = g_markup_printf_escaped( "<small>%s</small>", statusString ); str = g_markup_printf_escaped( "<small>%s</small>", statusString );
g_object_set( p->text_renderer, "markup", str, NULL ); g_object_set( text_renderer, "markup", str, NULL );
gtk_cell_renderer_get_size( p->text_renderer, gtk_cell_renderer_get_size( text_renderer,
widget, NULL, NULL, NULL, &w1, &h1 ); widget, NULL, NULL, NULL, &w1, &h1 );
h += h1; h += h1;
w = MAX( w, w1 ); w = MAX( w, w1 );
@ -498,6 +502,10 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
int xpad, ypad; int xpad, ypad;
int w, h; int w, h;
struct TorrentCellRendererPrivate * p = self->priv; struct TorrentCellRendererPrivate * p = self->priv;
GtkCellRenderer * text_renderer = torStat->error != 0
? p->text_renderer_err
: p->text_renderer;
g_object_get( self, "xpad", &xpad, "ypad", &ypad, NULL ); g_object_get( self, "xpad", &xpad, "ypad", &ypad, NULL );
my_bg = *background_area; my_bg = *background_area;
@ -512,17 +520,17 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
char * progressString = getProgressString( info, torStat ); char * progressString = getProgressString( info, torStat );
char * str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>", char * str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
name, progressString ); name, progressString );
g_object_set( p->text_renderer, "markup", str, g_object_set( text_renderer, "markup", str,
"ellipsize", PANGO_ELLIPSIZE_NONE, "ellipsize", PANGO_ELLIPSIZE_NONE,
NULL ); NULL );
gtk_cell_renderer_get_size( p->text_renderer, gtk_cell_renderer_get_size( text_renderer,
widget, NULL, NULL, NULL, &w, &h ); widget, NULL, NULL, NULL, &w, &h );
my_bg.height = my_bg.height =
my_cell.height = my_cell.height =
my_expose.height = h; my_expose.height = h;
g_object_set( p->text_renderer, "ellipsize", PANGO_ELLIPSIZE_END, g_object_set( text_renderer, "ellipsize", PANGO_ELLIPSIZE_END,
NULL ); NULL );
gtk_cell_renderer_render( p->text_renderer, gtk_cell_renderer_render( text_renderer,
window, widget, window, widget,
&my_bg, &my_cell, &my_expose, flags ); &my_bg, &my_cell, &my_expose, flags );
my_bg.y += h; my_bg.y += h;
@ -540,17 +548,17 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
GdkRectangle tmp_bg, tmp_cell, tmp_expose; GdkRectangle tmp_bg, tmp_cell, tmp_expose;
/* get the dimensions for the name */ /* get the dimensions for the name */
g_object_set( p->text_renderer, "text", name, g_object_set( text_renderer, "text", name,
"ellipsize", PANGO_ELLIPSIZE_NONE, "ellipsize", PANGO_ELLIPSIZE_NONE,
NULL ); NULL );
gtk_cell_renderer_get_size( p->text_renderer, gtk_cell_renderer_get_size( text_renderer,
widget, NULL, NULL, NULL, &w1, &h1 ); widget, NULL, NULL, NULL, &w1, &h1 );
/* get the dimensions for the short status string */ /* get the dimensions for the short status string */
g_object_set( p->text_renderer, "markup", str, g_object_set( text_renderer, "markup", str,
"ellipsize", PANGO_ELLIPSIZE_NONE, "ellipsize", PANGO_ELLIPSIZE_NONE,
NULL ); NULL );
gtk_cell_renderer_get_size( p->text_renderer, gtk_cell_renderer_get_size( text_renderer,
widget, NULL, NULL, NULL, &w2, &h2 ); widget, NULL, NULL, NULL, &w2, &h2 );
tmp_h = MAX( h1, h2 ); tmp_h = MAX( h1, h2 );
@ -561,10 +569,10 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
tmp_bg.width = w2; tmp_bg.width = w2;
tmp_bg.height = tmp_h; tmp_bg.height = tmp_h;
tmp_expose = tmp_cell = tmp_bg; tmp_expose = tmp_cell = tmp_bg;
g_object_set( p->text_renderer, "markup", str, g_object_set( text_renderer, "markup", str,
"ellipsize", PANGO_ELLIPSIZE_END, "ellipsize", PANGO_ELLIPSIZE_END,
NULL ); NULL );
gtk_cell_renderer_render( p->text_renderer, gtk_cell_renderer_render( text_renderer,
window, widget, window, widget,
&tmp_bg, &tmp_cell, &tmp_expose, flags ); &tmp_bg, &tmp_cell, &tmp_expose, flags );
@ -572,10 +580,10 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
tmp_bg.x = my_bg.x; tmp_bg.x = my_bg.x;
tmp_bg.width = my_bg.width - w2 - GUI_PAD_BIG; tmp_bg.width = my_bg.width - w2 - GUI_PAD_BIG;
tmp_expose = tmp_cell = tmp_bg; tmp_expose = tmp_cell = tmp_bg;
g_object_set( p->text_renderer, "text", name, g_object_set( text_renderer, "text", name,
"ellipsize", PANGO_ELLIPSIZE_END, "ellipsize", PANGO_ELLIPSIZE_END,
NULL ); NULL );
gtk_cell_renderer_render( p->text_renderer, gtk_cell_renderer_render( text_renderer,
window, widget, window, widget,
&tmp_bg, &tmp_cell, &tmp_expose, flags ); &tmp_bg, &tmp_cell, &tmp_expose, flags );
@ -600,15 +608,15 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
char * statusString = getStatusString( torStat ); char * statusString = getStatusString( torStat );
char * str = g_markup_printf_escaped( "<small>%s</small>", char * str = g_markup_printf_escaped( "<small>%s</small>",
statusString ); statusString );
g_object_set( p->text_renderer, "markup", str, g_object_set( text_renderer, "markup", str,
"ellipsize", PANGO_ELLIPSIZE_END, "ellipsize", PANGO_ELLIPSIZE_END,
NULL ); NULL );
gtk_cell_renderer_get_size( p->text_renderer, gtk_cell_renderer_get_size( text_renderer,
widget, NULL, NULL, NULL, &w, &h ); widget, NULL, NULL, NULL, &w, &h );
my_bg.height = my_bg.height =
my_cell.height = my_cell.height =
my_expose.height = h; my_expose.height = h;
gtk_cell_renderer_render( p->text_renderer, gtk_cell_renderer_render( text_renderer,
window, widget, window, widget,
&my_bg, &my_cell, &my_expose, flags ); &my_bg, &my_cell, &my_expose, flags );
@ -716,6 +724,7 @@ torrent_cell_renderer_dispose( GObject * o )
if( r && r->priv ) if( r && r->priv )
{ {
g_object_unref( G_OBJECT( r->priv->text_renderer ) ); g_object_unref( G_OBJECT( r->priv->text_renderer ) );
g_object_unref( G_OBJECT( r->priv->text_renderer_err ) );
r->priv = NULL; r->priv = NULL;
} }
} }
@ -826,7 +835,11 @@ torrent_cell_renderer_init( GTypeInstance * instance, gpointer g_class UNUSED )
p->tor = NULL; p->tor = NULL;
p->text_renderer = gtk_cell_renderer_text_new( ); p->text_renderer = gtk_cell_renderer_text_new( );
p->text_renderer_err = gtk_cell_renderer_text_new( );
g_object_set( p->text_renderer_err, "foreground", "red", NULL );
tr_object_ref_sink( p->text_renderer ); tr_object_ref_sink( p->text_renderer );
tr_object_ref_sink( p->text_renderer_err );
p->gradient = TRUE; p->gradient = TRUE;
p->show_unavailable = TRUE; p->show_unavailable = TRUE;
p->bar_height = DEFAULT_BAR_HEIGHT; p->bar_height = DEFAULT_BAR_HEIGHT;