Index: work/gtk/propedit.c =================================================================== --- work/gtk/propedit.c (revision 2754) +++ work/gtk/propedit.c (revision 2755) @@ -91,14 +91,11 @@ printf("Apply!\n"); } -int main(int argc, char *argv[]) +GtkWidget *propedit_dialog_create(propedit_dialog_t *dlg) { - static propedit_dialog_t dlg; GtkWidget *window, *vbox_tree, *vbox_edit, *hbox_win, *label, *hbx, *btn, *dummy, *box_val_edit; GtkCellRenderer *renderer ; - 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), 400, 300); @@ -117,8 +114,8 @@ label = gtk_label_new("Properies"); gtk_box_pack_start(GTK_BOX(vbox_tree), label, FALSE, FALSE, 4); - dlg.tree = gtk_tree_view_new(); - gtk_box_pack_start(GTK_BOX(vbox_tree), dlg.tree, FALSE, TRUE, 4); + dlg->tree = gtk_tree_view_new(); + gtk_box_pack_start(GTK_BOX(vbox_tree), dlg->tree, FALSE, TRUE, 4); GType ty[5]; @@ -125,14 +122,14 @@ int n; for(n = 0; n < 5; n++) ty[n] = G_TYPE_STRING; - dlg.props = gtk_list_store_newv(5, ty); - gtk_tree_view_set_model(GTK_TREE_VIEW(dlg.tree), GTK_TREE_MODEL(dlg.props)); + dlg->props = gtk_list_store_newv(5, ty); + gtk_tree_view_set_model(GTK_TREE_VIEW(dlg->tree), GTK_TREE_MODEL(dlg->props)); - hdr_add(&dlg, "property", 0); - hdr_add(&dlg, "common", 1); - hdr_add(&dlg, "min", 2); - hdr_add(&dlg, "max", 3); - hdr_add(&dlg, "avg", 4); + hdr_add(dlg, "property", 0); + hdr_add(dlg, "common", 1); + hdr_add(dlg, "min", 2); + hdr_add(dlg, "max", 3); + hdr_add(dlg, "avg", 4); label = gtk_label_new("(preview)"); gtk_box_pack_start(GTK_BOX(vbox_edit), label, TRUE, TRUE, 4); @@ -140,34 +137,29 @@ label = gtk_label_new("Change property of all objects"); gtk_box_pack_start(GTK_BOX(vbox_edit), label, FALSE, TRUE, 4); - prop_add(&dlg, "foo/bar", "15", "10", "20", "17.2"); - prop_add(&dlg, "foo/baz", "1", "1", "2", "1.2"); - prop_add(&dlg, "string", "ho", NULL, NULL, NULL); + g_signal_connect(G_OBJECT(dlg->tree), "cursor-changed", G_CALLBACK(list_cursor_changed_cb), dlg); - g_signal_connect(G_OBJECT(dlg.tree), "cursor-changed", G_CALLBACK(list_cursor_changed_cb), &dlg); - - /* value edit */ renderer = gtk_cell_renderer_text_new(); - dlg.stock_val = 0; - dlg.vals = gtk_list_store_new(1, G_TYPE_STRING); + dlg->stock_val = 0; + dlg->vals = gtk_list_store_new(1, G_TYPE_STRING); box_val_edit = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox_edit), box_val_edit, FALSE, TRUE, 4); /* combo */ - dlg.val_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL(dlg.vals)); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(dlg.val_box), renderer, TRUE); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(dlg.val_box), renderer, "text", 0, NULL); - gtk_box_pack_start(GTK_BOX(box_val_edit), dlg.val_box, FALSE, TRUE, 0); + dlg->val_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL(dlg->vals)); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(dlg->val_box), renderer, TRUE); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(dlg->val_box), renderer, "text", 0, NULL); + gtk_box_pack_start(GTK_BOX(box_val_edit), dlg->val_box, FALSE, TRUE, 0); - g_signal_connect(G_OBJECT(dlg.val_box), "changed", G_CALLBACK(val_combo_changed_cb), &dlg); + g_signal_connect(G_OBJECT(dlg->val_box), "changed", G_CALLBACK(val_combo_changed_cb), dlg); /* entry */ - dlg.entry_val = gtk_entry_new(); - gtk_box_pack_start(GTK_BOX(box_val_edit), dlg.entry_val, TRUE, TRUE, 0); + dlg->entry_val = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(box_val_edit), dlg->entry_val, TRUE, TRUE, 0); - g_signal_connect(G_OBJECT(dlg.entry_val), "changed", G_CALLBACK(val_entry_changed_cb), &dlg); + g_signal_connect(G_OBJECT(dlg->entry_val), "changed", G_CALLBACK(val_entry_changed_cb), dlg); /* Apply button */ hbx = gtk_hbox_new(FALSE, 0); @@ -179,13 +171,29 @@ btn = gtk_button_new_with_label("Close"); gtk_box_pack_start(GTK_BOX(hbx), btn, FALSE, TRUE, 4); - dlg.apply = gtk_button_new_with_label("Apply"); - gtk_box_pack_start(GTK_BOX(hbx), dlg.apply, FALSE, TRUE, 4); - g_signal_connect(G_OBJECT(dlg.apply), "clicked", G_CALLBACK(do_apply), &dlg); + dlg->apply = gtk_button_new_with_label("Apply"); + gtk_box_pack_start(GTK_BOX(hbx), dlg->apply, FALSE, TRUE, 4); + g_signal_connect(G_OBJECT(dlg->apply), "clicked", G_CALLBACK(do_apply), dlg); gtk_widget_show_all(window); + return window; +} + +int main(int argc, char *argv[]) +{ + static propedit_dialog_t dlg; + GtkWidget *window; + + gtk_init(&argc, &argv); + + window = propedit_dialog_create(&dlg); + + prop_add(&dlg, "foo/bar", "15", "10", "20", "17.2"); + prop_add(&dlg, "foo/baz", "1", "1", "2", "1.2"); + prop_add(&dlg, "string", "ho", NULL, NULL, NULL); + gtk_main(); return 0;