mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 20:35:36 +00:00
(trunk gtk) add utility function for creating a combobox that shows the values of an enum list
This commit is contained in:
78
gtk/msgwin.c
78
gtk/msgwin.c
@@ -55,23 +55,15 @@ static struct tr_msg_list * myHead = NULL;
|
||||
***/
|
||||
|
||||
static void
|
||||
level_combo_changed_cb( GtkWidget * w,
|
||||
gpointer gdata )
|
||||
level_combo_changed_cb( GtkWidget * w, gpointer gdata )
|
||||
{
|
||||
struct MsgData * data = gdata;
|
||||
GtkTreeIter iter;
|
||||
const int level = gtr_combo_box_get_active_val( w );
|
||||
|
||||
if( gtk_combo_box_get_active_iter( GTK_COMBO_BOX( w ), &iter ) )
|
||||
{
|
||||
int level = 0;
|
||||
GtkTreeModel * m = gtk_combo_box_get_model( GTK_COMBO_BOX( w ) );
|
||||
gtk_tree_model_get( m, &iter, 1, &level, -1 );
|
||||
|
||||
tr_setMessageLevel( level );
|
||||
tr_core_set_pref_int( data->core, TR_PREFS_KEY_MSGLEVEL, level );
|
||||
data->maxLevel = level;
|
||||
gtk_tree_model_filter_refilter( GTK_TREE_MODEL_FILTER( data->filter ) );
|
||||
}
|
||||
tr_setMessageLevel( level );
|
||||
tr_core_set_pref_int( data->core, TR_PREFS_KEY_MSGLEVEL, level );
|
||||
data->maxLevel = level;
|
||||
gtk_tree_model_filter_refilter( GTK_TREE_MODEL_FILTER( data->filter ) );
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -150,8 +142,7 @@ onSaveRequest( GtkWidget * w,
|
||||
}
|
||||
|
||||
static void
|
||||
onClearRequest( GtkWidget * w UNUSED,
|
||||
gpointer gdata )
|
||||
onClearRequest( GtkWidget * w UNUSED, gpointer gdata )
|
||||
{
|
||||
struct MsgData * data = gdata;
|
||||
|
||||
@@ -161,25 +152,13 @@ onClearRequest( GtkWidget * w UNUSED,
|
||||
}
|
||||
|
||||
static void
|
||||
onPauseToggled( GtkToggleToolButton * w,
|
||||
gpointer gdata )
|
||||
onPauseToggled( GtkToggleToolButton * w, gpointer gdata )
|
||||
{
|
||||
struct MsgData * data = gdata;
|
||||
|
||||
data->isPaused = gtk_toggle_tool_button_get_active( w );
|
||||
}
|
||||
|
||||
static struct
|
||||
{
|
||||
const char * label;
|
||||
const char * pref;
|
||||
int id;
|
||||
} trLevels[] = {
|
||||
{ N_( "Error" ), "error", TR_MSG_ERR },
|
||||
{ N_( "Information" ), "info", TR_MSG_INF },
|
||||
{ N_( "Debug" ), "debug", TR_MSG_DBG },
|
||||
};
|
||||
|
||||
static const char*
|
||||
getForegroundColor( int msgLevel )
|
||||
{
|
||||
@@ -382,38 +361,12 @@ onRefresh( gpointer gdata )
|
||||
static GtkWidget*
|
||||
debug_level_combo_new( void )
|
||||
{
|
||||
unsigned int i;
|
||||
int ii;
|
||||
int curlevel;
|
||||
GtkWidget * levels;
|
||||
GtkListStore * store;
|
||||
GtkCellRenderer * renderer;
|
||||
|
||||
store = gtk_list_store_new ( 2, G_TYPE_STRING, G_TYPE_INT );
|
||||
|
||||
curlevel = pref_int_get( TR_PREFS_KEY_MSGLEVEL );
|
||||
for( i = ii = 0; i < G_N_ELEMENTS( trLevels ); ++i )
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
gtk_list_store_append ( store, &iter );
|
||||
gtk_list_store_set ( store, &iter, 0, _( trLevels[i].label ),
|
||||
1, trLevels[i].id,
|
||||
-1 );
|
||||
if( trLevels[i].id == curlevel )
|
||||
ii = i;
|
||||
}
|
||||
levels = gtk_combo_box_new_with_model ( GTK_TREE_MODEL( store ) );
|
||||
g_object_unref( G_OBJECT( store ) );
|
||||
store = NULL;
|
||||
|
||||
renderer = gtk_cell_renderer_text_new ( );
|
||||
gtk_cell_layout_pack_start( GTK_CELL_LAYOUT( levels ), renderer, TRUE );
|
||||
gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT( levels ), renderer,
|
||||
"text", 0,
|
||||
NULL );
|
||||
gtk_combo_box_set_active( GTK_COMBO_BOX( levels ), ii );
|
||||
|
||||
return levels;
|
||||
GtkWidget * w = gtr_combo_box_new_enum( _( "Error" ), TR_MSG_ERR,
|
||||
_( "Information" ), TR_MSG_INF,
|
||||
_( "Debug" ), TR_MSG_DBG,
|
||||
NULL );
|
||||
gtr_combo_box_set_active_val( w, pref_int_get( TR_PREFS_KEY_MSGLEVEL ) );
|
||||
return w;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -476,8 +429,7 @@ msgwin_new( TrCore * core )
|
||||
gtk_toolbar_insert( GTK_TOOLBAR( toolbar ), item, -1 );
|
||||
|
||||
w = debug_level_combo_new( );
|
||||
g_signal_connect( w, "changed", G_CALLBACK(
|
||||
level_combo_changed_cb ), data );
|
||||
g_signal_connect( w, "changed", G_CALLBACK( level_combo_changed_cb ), data );
|
||||
item = gtk_tool_item_new( );
|
||||
gtk_container_add( GTK_CONTAINER( item ), w );
|
||||
gtk_toolbar_insert( GTK_TOOLBAR( toolbar ), item, -1 );
|
||||
|
||||
Reference in New Issue
Block a user