X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fege-select-one-action.cpp;h=cc93c72f20f70fafad34f696fd73309fe1f6e6a5;hb=f2c65c84b2e5016ef16907bf15d51ded9c25411e;hp=0f1d410ca08b86d269fc70512bcdba753a0577b5;hpb=15904849bf56aa0262adbebfc384f0500a06fabe;p=inkscape.git diff --git a/src/ege-select-one-action.cpp b/src/ege-select-one-action.cpp index 0f1d410ca..cc93c72f2 100644 --- a/src/ege-select-one-action.cpp +++ b/src/ege-select-one-action.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -81,9 +82,9 @@ static GQuark gDataName = 0; enum { APPEARANCE_UNKNOWN = -1, APPEARANCE_NONE = 0, - APPEARANCE_FULL, - APPEARANCE_COMPACT, - APPEARANCE_MINIMAL, + APPEARANCE_FULL, // label, then all choices represented by separate buttons + APPEARANCE_COMPACT, // label, then choices in a drop-down menu + APPEARANCE_MINIMAL, // no label, just choices in a drop-down menu }; struct _EgeSelectOneActionPrivate @@ -494,6 +495,14 @@ GtkWidget* create_tool_item( GtkAction* action ) gint index = 0; GtkTooltips* tooltips = gtk_tooltips_new(); + gchar* sss = 0; + g_object_get( G_OBJECT(action), "short_label", &sss, NULL ); + if (sss) { + GtkWidget* lbl; + lbl = gtk_label_new(sss); + gtk_box_pack_start( GTK_BOX(holder), lbl, FALSE, FALSE, 4 ); + } + valid = gtk_tree_model_get_iter_first( act->private_data->model, &iter ); while ( valid ) { gchar* str = 0; @@ -563,12 +572,22 @@ GtkWidget* create_tool_item( GtkAction* action ) gtk_container_add( GTK_CONTAINER(item), holder ); } else { - GtkWidget* holder = gtk_table_new( 1, 3, FALSE ); + GtkWidget* holder = gtk_hbox_new( FALSE, 4 ); GtkWidget* normal = gtk_combo_box_new_with_model( act->private_data->model ); - GtkCellRenderer * renderer = gtk_cell_renderer_text_new(); + GtkCellRenderer * renderer = 0; + + if ( act->private_data->iconColumn >= 0 ) { + renderer = gtk_cell_renderer_pixbuf_new(); + gtk_cell_layout_pack_start( GTK_CELL_LAYOUT(normal), renderer, TRUE ); + + // "icon-name" + gtk_cell_layout_add_attribute( GTK_CELL_LAYOUT(normal), renderer, "stock-id", act->private_data->iconColumn ); + } + + renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start( GTK_CELL_LAYOUT(normal), renderer, TRUE ); - gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT(normal), renderer, "text", act->private_data->labelColumn, (gchar*)0); + gtk_cell_layout_add_attribute( GTK_CELL_LAYOUT(normal), renderer, "text", act->private_data->labelColumn ); gtk_combo_box_set_active( GTK_COMBO_BOX(normal), act->private_data->active ); @@ -576,11 +595,18 @@ GtkWidget* create_tool_item( GtkAction* action ) g_object_set_data( G_OBJECT(holder), "ege-combo-box", normal ); - GtkWidget* lbl = gtk_label_new(" "); - gtk_table_attach( GTK_TABLE(holder), lbl, 0, 1, 0, 1, GTK_SHRINK, GTK_SHRINK, 0, 0 ); - gtk_table_attach( GTK_TABLE(holder), normal, 1, 2, 0, 1, GTK_FILL, GTK_EXPAND, 0, 0 ); - lbl = gtk_label_new(" "); - gtk_table_attach( GTK_TABLE(holder), lbl, 2, 3, 0, 1, GTK_SHRINK, GTK_SHRINK, 0, 0 ); + if (act->private_data->appearanceMode == APPEARANCE_COMPACT) { + gchar* sss = 0; + g_object_get( G_OBJECT(action), "short_label", &sss, NULL ); + if (sss) { + GtkWidget* lbl; + lbl = gtk_label_new(sss); + gtk_box_pack_start( GTK_BOX(holder), lbl, FALSE, FALSE, 4 ); + } + } + + gtk_box_pack_start( GTK_BOX(holder), normal, FALSE, FALSE, 0 ); + gtk_container_add( GTK_CONTAINER(item), holder ); }