(trunk gtk) add stock icons to some of the filter states

This commit is contained in:
Charles Kerr 2010-05-18 14:14:17 +00:00
parent 1aef6e1a03
commit c7bbd4dc20
1 changed files with 47 additions and 15 deletions

View File

@ -601,6 +601,7 @@ enum
ACTIVITY_FILTER_COL_NAME,
ACTIVITY_FILTER_COL_COUNT,
ACTIVITY_FILTER_COL_TYPE,
ACTIVITY_FILTER_COL_STOCK_ID,
ACTIVITY_FILTER_N_COLS
};
@ -712,27 +713,28 @@ activity_filter_model_new( GtkTreeModel * tmodel )
struct {
int type;
const char * name;
const char * stock_id;
} types[] = {
{ ACTIVITY_FILTER_ALL, N_( "All" ) },
{ ACTIVITY_FILTER_SEPARATOR, NULL },
{ ACTIVITY_FILTER_DOWNLOADING, N_( "Downloading" ) },
{ ACTIVITY_FILTER_SEEDING, N_( "Seeding" ) },
{ ACTIVITY_FILTER_ACTIVE, N_( "Active" ) },
{ ACTIVITY_FILTER_PAUSED, N_( "Paused" ) },
{ ACTIVITY_FILTER_QUEUED, N_( "Queued" ) },
{ ACTIVITY_FILTER_VERIFYING, N_( "Verifying" ) },
{ ACTIVITY_FILTER_ERROR, N_( "Error" ) }
{ ACTIVITY_FILTER_ALL, N_( "All" ), NULL },
{ ACTIVITY_FILTER_SEPARATOR, NULL, NULL },
{ ACTIVITY_FILTER_ACTIVE, N_( "Active" ), GTK_STOCK_EXECUTE },
{ ACTIVITY_FILTER_DOWNLOADING, N_( "Downloading" ), GTK_STOCK_GO_DOWN },
{ ACTIVITY_FILTER_SEEDING, N_( "Seeding" ), GTK_STOCK_GO_UP },
{ ACTIVITY_FILTER_PAUSED, N_( "Paused" ), GTK_STOCK_MEDIA_PAUSE },
{ ACTIVITY_FILTER_QUEUED, N_( "Queued" ), NULL },
{ ACTIVITY_FILTER_VERIFYING, N_( "Verifying" ), GTK_STOCK_REFRESH },
{ ACTIVITY_FILTER_ERROR, N_( "Error" ), GTK_STOCK_DIALOG_ERROR }
};
GtkListStore * store;
store = gtk_list_store_new( ACTIVITY_FILTER_N_COLS,
G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_INT );
GtkListStore * store = gtk_list_store_new( ACTIVITY_FILTER_N_COLS,
G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_INT,
G_TYPE_STRING );
for( i=0, n=G_N_ELEMENTS(types); i<n; ++i )
gtk_list_store_insert_with_values( store, NULL, -1,
ACTIVITY_FILTER_COL_NAME, _( types[i].name ),
ACTIVITY_FILTER_COL_TYPE, types[i].type,
ACTIVITY_FILTER_COL_STOCK_ID, types[i].stock_id,
-1 );
g_object_set_data( G_OBJECT( store ), TORRENT_MODEL_KEY, tmodel );
@ -740,6 +742,28 @@ activity_filter_model_new( GtkTreeModel * tmodel )
return GTK_TREE_MODEL( store );
}
static void
render_activity_pixbuf_func( GtkCellLayout * cell_layout UNUSED,
GtkCellRenderer * cell_renderer,
GtkTreeModel * tree_model,
GtkTreeIter * iter,
gpointer data UNUSED )
{
int type;
int width;
int ypad;
const gboolean leaf = !gtk_tree_model_iter_has_child( tree_model, iter );
gtk_tree_model_get( tree_model, iter, ACTIVITY_FILTER_COL_TYPE, &type, -1 );
width = type == ACTIVITY_FILTER_ALL ? 0 : 20;
ypad = type == ACTIVITY_FILTER_ALL ? 0 : 5;
g_object_set( cell_renderer, "width", width,
"sensitive", leaf,
"ypad", ypad,
NULL );
}
static void
activity_model_update_idle( gpointer activity_model )
{
@ -783,6 +807,14 @@ activity_combo_box_new( GtkTreeModel * tmodel )
activity_is_it_a_separator, NULL, NULL );
gtk_combo_box_set_active( GTK_COMBO_BOX( c ), 0 );
r = gtk_cell_renderer_pixbuf_new( );
gtk_cell_layout_pack_start( GTK_CELL_LAYOUT( c ), r, FALSE );
gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT( c ), r,
"stock-id", ACTIVITY_FILTER_COL_STOCK_ID,
NULL );
gtk_cell_layout_set_cell_data_func( GTK_CELL_LAYOUT( c ), r,
render_activity_pixbuf_func, NULL, NULL );
r = gtk_cell_renderer_text_new( );
gtk_cell_layout_pack_start( GTK_CELL_LAYOUT( c ), r, TRUE );
gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT( c ), r,