(trunk gtk) add utility function for creating a combobox that shows the values of an enum list

This commit is contained in:
Charles Kerr
2010-07-23 06:54:49 +00:00
parent 6024ea7fa6
commit 59e8e02af2
4 changed files with 94 additions and 230 deletions

View File

@@ -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 );