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:
parent
9f176115e6
commit
2247a2d1f9
1 changed files with 47 additions and 34 deletions
|
@ -224,6 +224,7 @@ struct TorrentCellRendererPrivate
|
|||
{
|
||||
tr_torrent * tor;
|
||||
GtkCellRenderer * text_renderer;
|
||||
GtkCellRenderer * text_renderer_err;
|
||||
int bar_height;
|
||||
gboolean minimal;
|
||||
gboolean show_unavailable;
|
||||
|
@ -259,20 +260,23 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell,
|
|||
char * str;
|
||||
int w=0, h=0;
|
||||
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 */
|
||||
if( p->minimal )
|
||||
{
|
||||
int w1, w2, h1, h2;
|
||||
char * shortStatus = getShortStatusString( torStat );
|
||||
g_object_set( p->text_renderer, "text", name, NULL );
|
||||
gtk_cell_renderer_get_size( p->text_renderer,
|
||||
g_object_set( text_renderer, "text", name, NULL );
|
||||
gtk_cell_renderer_get_size( text_renderer,
|
||||
widget, NULL, NULL, NULL, &w1, &h1 );
|
||||
str = g_markup_printf_escaped( "<small>%s</small>", shortStatus );
|
||||
g_object_set( p->text_renderer, "markup", str, NULL );
|
||||
gtk_cell_renderer_get_size( p->text_renderer,
|
||||
g_object_set( text_renderer, "markup", str, NULL );
|
||||
gtk_cell_renderer_get_size( text_renderer,
|
||||
widget, NULL, NULL, NULL, &w2, &h2 );
|
||||
h += MAX( h1, h2 );
|
||||
w = MAX( w, w1+GUI_PAD_BIG+w2 );
|
||||
|
@ -285,8 +289,8 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell,
|
|||
char * progressString = getProgressString( info, torStat );
|
||||
str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
|
||||
name, progressString );
|
||||
g_object_set( p->text_renderer, "markup", str, NULL );
|
||||
gtk_cell_renderer_get_size( p->text_renderer,
|
||||
g_object_set( text_renderer, "markup", str, NULL );
|
||||
gtk_cell_renderer_get_size( text_renderer,
|
||||
widget, NULL, NULL, NULL, &w1, &h1 );
|
||||
h += h1;
|
||||
w = MAX( w, w1 );
|
||||
|
@ -300,8 +304,8 @@ torrent_cell_renderer_get_size( GtkCellRenderer * cell,
|
|||
int w1, h1;
|
||||
char * statusString = getStatusString( torStat );
|
||||
str = g_markup_printf_escaped( "<small>%s</small>", statusString );
|
||||
g_object_set( p->text_renderer, "markup", str, NULL );
|
||||
gtk_cell_renderer_get_size( p->text_renderer,
|
||||
g_object_set( text_renderer, "markup", str, NULL );
|
||||
gtk_cell_renderer_get_size( text_renderer,
|
||||
widget, NULL, NULL, NULL, &w1, &h1 );
|
||||
h += h1;
|
||||
w = MAX( w, w1 );
|
||||
|
@ -498,6 +502,10 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
|
|||
int xpad, ypad;
|
||||
int w, h;
|
||||
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 );
|
||||
|
||||
my_bg = *background_area;
|
||||
|
@ -512,17 +520,17 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
|
|||
char * progressString = getProgressString( info, torStat );
|
||||
char * str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
|
||||
name, progressString );
|
||||
g_object_set( p->text_renderer, "markup", str,
|
||||
g_object_set( text_renderer, "markup", str,
|
||||
"ellipsize", PANGO_ELLIPSIZE_NONE,
|
||||
NULL );
|
||||
gtk_cell_renderer_get_size( p->text_renderer,
|
||||
gtk_cell_renderer_get_size( text_renderer,
|
||||
widget, NULL, NULL, NULL, &w, &h );
|
||||
my_bg.height =
|
||||
my_cell.height =
|
||||
my_expose.height = h;
|
||||
g_object_set( p->text_renderer, "ellipsize", PANGO_ELLIPSIZE_END,
|
||||
g_object_set( text_renderer, "ellipsize", PANGO_ELLIPSIZE_END,
|
||||
NULL );
|
||||
gtk_cell_renderer_render( p->text_renderer,
|
||||
gtk_cell_renderer_render( text_renderer,
|
||||
window, widget,
|
||||
&my_bg, &my_cell, &my_expose, flags );
|
||||
my_bg.y += h;
|
||||
|
@ -540,17 +548,17 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
|
|||
GdkRectangle tmp_bg, tmp_cell, tmp_expose;
|
||||
|
||||
/* get the dimensions for the name */
|
||||
g_object_set( p->text_renderer, "text", name,
|
||||
"ellipsize", PANGO_ELLIPSIZE_NONE,
|
||||
NULL );
|
||||
gtk_cell_renderer_get_size( p->text_renderer,
|
||||
g_object_set( text_renderer, "text", name,
|
||||
"ellipsize", PANGO_ELLIPSIZE_NONE,
|
||||
NULL );
|
||||
gtk_cell_renderer_get_size( text_renderer,
|
||||
widget, NULL, NULL, NULL, &w1, &h1 );
|
||||
|
||||
/* get the dimensions for the short status string */
|
||||
g_object_set( p->text_renderer, "markup", str,
|
||||
"ellipsize", PANGO_ELLIPSIZE_NONE,
|
||||
NULL );
|
||||
gtk_cell_renderer_get_size( p->text_renderer,
|
||||
g_object_set( text_renderer, "markup", str,
|
||||
"ellipsize", PANGO_ELLIPSIZE_NONE,
|
||||
NULL );
|
||||
gtk_cell_renderer_get_size( text_renderer,
|
||||
widget, NULL, NULL, NULL, &w2, &h2 );
|
||||
|
||||
tmp_h = MAX( h1, h2 );
|
||||
|
@ -561,10 +569,10 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
|
|||
tmp_bg.width = w2;
|
||||
tmp_bg.height = tmp_h;
|
||||
tmp_expose = tmp_cell = tmp_bg;
|
||||
g_object_set( p->text_renderer, "markup", str,
|
||||
"ellipsize", PANGO_ELLIPSIZE_END,
|
||||
NULL );
|
||||
gtk_cell_renderer_render( p->text_renderer,
|
||||
g_object_set( text_renderer, "markup", str,
|
||||
"ellipsize", PANGO_ELLIPSIZE_END,
|
||||
NULL );
|
||||
gtk_cell_renderer_render( text_renderer,
|
||||
window, widget,
|
||||
&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.width = my_bg.width - w2 - GUI_PAD_BIG;
|
||||
tmp_expose = tmp_cell = tmp_bg;
|
||||
g_object_set( p->text_renderer, "text", name,
|
||||
"ellipsize", PANGO_ELLIPSIZE_END,
|
||||
NULL );
|
||||
gtk_cell_renderer_render( p->text_renderer,
|
||||
g_object_set( text_renderer, "text", name,
|
||||
"ellipsize", PANGO_ELLIPSIZE_END,
|
||||
NULL );
|
||||
gtk_cell_renderer_render( text_renderer,
|
||||
window, widget,
|
||||
&tmp_bg, &tmp_cell, &tmp_expose, flags );
|
||||
|
||||
|
@ -600,15 +608,15 @@ torrent_cell_renderer_render( GtkCellRenderer * cell,
|
|||
char * statusString = getStatusString( torStat );
|
||||
char * str = g_markup_printf_escaped( "<small>%s</small>",
|
||||
statusString );
|
||||
g_object_set( p->text_renderer, "markup", str,
|
||||
"ellipsize", PANGO_ELLIPSIZE_END,
|
||||
NULL );
|
||||
gtk_cell_renderer_get_size( p->text_renderer,
|
||||
g_object_set( text_renderer, "markup", str,
|
||||
"ellipsize", PANGO_ELLIPSIZE_END,
|
||||
NULL );
|
||||
gtk_cell_renderer_get_size( text_renderer,
|
||||
widget, NULL, NULL, NULL, &w, &h );
|
||||
my_bg.height =
|
||||
my_cell.height =
|
||||
my_expose.height = h;
|
||||
gtk_cell_renderer_render( p->text_renderer,
|
||||
gtk_cell_renderer_render( text_renderer,
|
||||
window, widget,
|
||||
&my_bg, &my_cell, &my_expose, flags );
|
||||
|
||||
|
@ -716,6 +724,7 @@ torrent_cell_renderer_dispose( GObject * o )
|
|||
if( r && r->priv )
|
||||
{
|
||||
g_object_unref( G_OBJECT( r->priv->text_renderer ) );
|
||||
g_object_unref( G_OBJECT( r->priv->text_renderer_err ) );
|
||||
r->priv = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -826,7 +835,11 @@ torrent_cell_renderer_init( GTypeInstance * instance, gpointer g_class UNUSED )
|
|||
|
||||
p->tor = NULL;
|
||||
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_err );
|
||||
|
||||
p->gradient = TRUE;
|
||||
p->show_unavailable = TRUE;
|
||||
p->bar_height = DEFAULT_BAR_HEIGHT;
|
||||
|
|
Loading…
Reference in a new issue