index 0f1d410ca08b86d269fc70512bcdba753a0577b5..cc93c72f20f70fafad34f696fd73309fe1f6e6a5 100644 (file)
#include <gtk/gtktoolitem.h>
#include <gtk/gtkcombobox.h>
#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkcellrendererpixbuf.h>
#include <gtk/gtkcelllayout.h>
#include <gtk/gtkradioaction.h>
#include <gtk/gtkradiomenuitem.h>
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
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;
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 );
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 );
}