Index: work/gtk/Makefile =================================================================== --- work/gtk/Makefile (revision 2750) +++ work/gtk/Makefile (revision 2751) @@ -1,6 +1,7 @@ CFLAGS=-g `pkg-config --cflags gtk+-2.0` LDFLAGS=-g `pkg-config --libs gtk+-2.0` +all: gtk1 propedit gtk1: gtk1.o gschem_accel_label.o Index: work/gtk/propedit.c =================================================================== --- work/gtk/propedit.c (nonexistent) +++ work/gtk/propedit.c (revision 2751) @@ -0,0 +1,103 @@ +#include +#include +#include + +typedef struct { + GtkWidget *entry_val; + GtkListStore *vals; +} propedit_dialog_t; + +static void val_combo_changed_cb(GtkComboBox * combo, propedit_dialog_t *dlg) +{ + gtk_entry_set_text(GTK_ENTRY(dlg->entry_val), "wohoo"); +} + + +static void add_hdr(GtkWidget *tree, const char *name) +{ + GtkCellRenderer *renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(tree), -1, name, renderer, "text", 0, NULL); +} + +int main(int argc, char *argv[]) +{ + static propedit_dialog_t dlg; + GtkWidget *window, *vbox_tree, *vbox_edit, *hbox_win, *label, *tree, *val_box; + + gtk_init(&argc, &argv); + + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); + gtk_window_set_default_size(GTK_WINDOW(window), 600, 500); + gtk_window_set_title(GTK_WINDOW(window), "Property edit"); + + hbox_win = gtk_hbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(window), hbox_win); + + + vbox_tree = gtk_vbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox_win), vbox_tree, TRUE, TRUE, 4); + vbox_edit = gtk_vbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox_win), vbox_edit, TRUE, TRUE, 4); + + + label = gtk_label_new("Properies"); + gtk_box_pack_start(GTK_BOX(vbox_tree), label, FALSE, FALSE, 4); + + tree = gtk_tree_view_new(); + gtk_box_pack_start(GTK_BOX(vbox_tree), tree, FALSE, TRUE, 4); + + GType *ty; + GtkListStore *lm; + int n; + ty = malloc(sizeof(GType) * 5); + for(n = 0; n < 5; n++) + ty[n] = G_TYPE_STRING; + lm = gtk_list_store_newv(5, ty); + free(ty); + gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(lm)); + + add_hdr(tree, "property"); + add_hdr(tree, "common"); + add_hdr(tree, "min"); + add_hdr(tree, "max"); + add_hdr(tree, "avg"); + + label = gtk_label_new("(preview)"); + gtk_box_pack_start(GTK_BOX(vbox_edit), label, TRUE, TRUE, 4); + + label = gtk_label_new("(edit)"); + gtk_box_pack_start(GTK_BOX(vbox_edit), label, FALSE, TRUE, 4); + + + /* value edit */ + GtkWidget *hbox_val_edit; + GtkCellRenderer *renderer = gtk_cell_renderer_text_new(); + + dlg.vals = gtk_list_store_new(1, G_TYPE_STRING); + hbox_val_edit = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(vbox_edit), hbox_val_edit, FALSE, TRUE, 4); + + /* combo */ + gtk_list_store_insert_with_values(dlg.vals, NULL, -1, 0, "val0", -1); + gtk_list_store_insert_with_values(dlg.vals, NULL, -1, 0, "val1", -1); + + val_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL(dlg.vals)); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(val_box), renderer, TRUE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(val_box), renderer, "text", 0, NULL); + gtk_box_pack_start(GTK_BOX(hbox_val_edit), val_box, FALSE, TRUE, 4); + + g_signal_connect(G_OBJECT(val_box), "changed", G_CALLBACK(val_combo_changed_cb), &dlg); + + + /* entry */ + + dlg.entry_val = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(hbox_val_edit), dlg.entry_val, TRUE, TRUE, 4); + + gtk_widget_show_all(window); + + gtk_main(); + + return 0; +}