void addressbook_edit_person_page_attrib_ldap(PersonEditDlg *dialog, gint pageNum, gchar *pageLbl) { GtkWidget *combo_box; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *vboxl; GtkWidget *vboxb; GtkWidget *vbuttonbox; GtkWidget *buttonDel; GtkWidget *buttonMod; GtkWidget *buttonAdd; GtkWidget *table; GtkWidget *label; GtkWidget *clist_swin; GtkWidget *clist; GtkWidget *entry_value; gint top; personEditDlg = dialog; gchar *titles[ATTRIB_N_COLS]; gint i; titles[ATTRIB_COL_NAME] = N_("Name"); titles[ATTRIB_COL_VALUE] = N_("Value"); vbox = gtk_vbox_new(FALSE, 8); gtk_widget_show(vbox); gtk_container_add(GTK_CONTAINER(personEditDlg->notebook), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), BORDER_WIDTH); label = gtk_label_new_with_mnemonic(pageLbl); gtk_widget_show(label); gtk_notebook_set_tab_label( GTK_NOTEBOOK(personEditDlg->notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(personEditDlg->notebook), pageNum), label); /* Split into two areas */ hbox = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(vbox), hbox); /* Attribute list */ vboxl = gtk_vbox_new(FALSE, 4); gtk_container_add(GTK_CONTAINER(hbox), vboxl); gtk_container_set_border_width(GTK_CONTAINER(vboxl), 4); clist_swin = gtk_scrolled_window_new(NULL, NULL); gtk_container_add(GTK_CONTAINER(vboxl), clist_swin); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(clist_swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); clist = gtk_cmclist_new_with_titles(ATTRIB_N_COLS, titles); gtk_container_add(GTK_CONTAINER(clist_swin), clist); gtk_cmclist_set_selection_mode(GTK_CMCLIST(clist), GTK_SELECTION_BROWSE); gtk_cmclist_set_column_width(GTK_CMCLIST(clist), ATTRIB_COL_NAME, ATTRIB_COL_WIDTH_NAME); gtk_cmclist_set_column_width(GTK_CMCLIST(clist), ATTRIB_COL_VALUE, ATTRIB_COL_WIDTH_VALUE); gtk_cmclist_set_compare_func(GTK_CMCLIST(clist), edit_person_attrib_compare_func); gtk_cmclist_set_auto_sort(GTK_CMCLIST(clist), TRUE); for (i = 0; i < ATTRIB_N_COLS; i++) gtkut_widget_set_can_focus(GTK_CMCLIST(clist)->column[i].button, FALSE); /* Data entry area */ table = gtk_table_new(4, 2, FALSE); gtk_box_pack_start(GTK_BOX(vboxl), table, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(table), 4); gtk_table_set_row_spacings(GTK_TABLE(table), 4); gtk_table_set_col_spacings(GTK_TABLE(table), 4); /* First row */ top = 0; label = gtk_label_new(N_("Name")); gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gchar **attribute = (gchar **) ATTRIBUTE; combo_box = gtk_combo_box_new_text(); while (*attribute) { if (!strcmp(*attribute, "jpegPhoto")) { attribute++; continue; } gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), *attribute++); } gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), 0); gtk_table_attach(GTK_TABLE(table), combo_box, 1, 2, top, (top + 1), GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0); /* Next row */ ++top; label = gtk_label_new(N_("Value")); gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); entry_value = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), entry_value, 1, 2, top, (top + 1), GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0); /* Button box */ vboxb = gtk_vbox_new(FALSE, 4); gtk_box_pack_start(GTK_BOX(hbox), vboxb, FALSE, FALSE, 2); vbuttonbox = gtk_vbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(vbuttonbox), GTK_BUTTONBOX_START); gtk_box_set_spacing(GTK_BOX(vbuttonbox), 8); gtk_container_set_border_width(GTK_CONTAINER(vbuttonbox), 4); gtk_container_add(GTK_CONTAINER(vboxb), vbuttonbox); /* Buttons */ buttonDel = gtk_button_new_from_stock(GTK_STOCK_DELETE); gtk_container_add(GTK_CONTAINER(vbuttonbox), buttonDel); buttonMod = gtk_button_new_from_stock(GTK_STOCK_SAVE); gtk_container_add(GTK_CONTAINER(vbuttonbox), buttonMod); buttonAdd = gtk_button_new_from_stock(GTK_STOCK_ADD); gtk_container_add(GTK_CONTAINER(vbuttonbox), buttonAdd); gtk_widget_set_sensitive(buttonDel,FALSE); gtk_widget_set_sensitive(buttonMod,FALSE); gtk_widget_set_sensitive(buttonAdd,FALSE); gtk_widget_show_all(vbox); /* Event handlers */ g_signal_connect(G_OBJECT(clist), "select_row", G_CALLBACK( edit_person_attrib_list_selected), NULL); g_signal_connect(G_OBJECT(buttonDel), "clicked", G_CALLBACK(edit_person_attrib_delete), NULL); g_signal_connect(G_OBJECT(buttonMod), "clicked", G_CALLBACK(edit_person_attrib_modify), NULL); g_signal_connect(G_OBJECT(buttonAdd), "clicked", G_CALLBACK(edit_person_attrib_add), NULL); g_signal_connect(G_OBJECT(combo_box), "changed", G_CALLBACK(edit_person_entry_att_changed), NULL); g_signal_connect(G_OBJECT(entry_value), "key_press_event", G_CALLBACK(edit_person_entry_att_pressed), NULL); g_signal_connect(G_OBJECT(combo_box), "changed", G_CALLBACK(edit_person_combo_box_changed), clist); personEditDlg->clist_attrib = clist; personEditDlg->entry_atname = combo_box; personEditDlg->entry_atvalue = entry_value; personEditDlg->attrib_add = buttonAdd; personEditDlg->attrib_del = buttonDel; personEditDlg->attrib_mod = buttonMod; }
static void addressbook_foldersel_create( void ) { GtkWidget *window; GtkWidget *vbox; GtkWidget *tree_folder; GtkWidget *vlbox; GtkWidget *tree_win; GtkWidget *hbbox; GtkWidget *ok_btn; GtkWidget *cancel_btn; static GdkGeometry geometry; gchar *titles[1]; window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "addressbook_foldersel" ); gtk_container_set_border_width( GTK_CONTAINER(window), 0 ); gtk_window_set_title( GTK_WINDOW(window), _("Select Address Book Folder") ); gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_MOUSE ); g_signal_connect( G_OBJECT(window), "delete_event", G_CALLBACK(addressbook_foldersel_delete_event), NULL ); g_signal_connect( G_OBJECT(window), "key_press_event", G_CALLBACK(addressbook_foldersel_key_pressed), NULL ); g_signal_connect(G_OBJECT(window), "size_allocate", G_CALLBACK(addressbook_foldersel_size_allocate_cb), NULL); vbox = gtk_vbox_new(FALSE, 8); gtk_container_add(GTK_CONTAINER(window), vbox); gtk_container_set_border_width( GTK_CONTAINER(vbox), 8 ); /* Address book/folder tree */ vlbox = gtk_vbox_new(FALSE, 8); gtk_box_pack_start(GTK_BOX(vbox), vlbox, TRUE, TRUE, 0); gtk_container_set_border_width( GTK_CONTAINER(vlbox), 8 ); tree_win = gtk_scrolled_window_new( NULL, NULL ); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(tree_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_box_pack_start( GTK_BOX(vlbox), tree_win, TRUE, TRUE, 0 ); titles[0] = _( "Address Book") ; tree_folder = gtk_sctree_new_with_titles( 1, 0, titles ); gtk_container_add( GTK_CONTAINER(tree_win), tree_folder ); gtk_cmclist_column_titles_show( GTK_CMCLIST(tree_folder) ); gtk_cmctree_set_line_style(GTK_CMCTREE(tree_folder), GTK_CMCTREE_LINES_NONE); gtk_cmctree_set_expander_style(GTK_CMCTREE(tree_folder), GTK_CMCTREE_EXPANDER_TRIANGLE); gtk_sctree_set_stripes(GTK_SCTREE(tree_folder), prefs_common.use_stripes_everywhere); gtk_cmclist_set_selection_mode( GTK_CMCLIST(tree_folder), GTK_SELECTION_BROWSE ); gtk_cmctree_set_indent( GTK_CMCTREE(tree_folder), CTREE_INDENT ); gtk_cmclist_set_auto_sort( GTK_CMCLIST(tree_folder), TRUE ); /* Button panel */ gtkut_stock_button_set_create( &hbbox, &cancel_btn, GTK_STOCK_CANCEL, &ok_btn, GTK_STOCK_OK, NULL, NULL ); gtk_box_pack_end( GTK_BOX(vbox), hbbox, FALSE, FALSE, 0 ); gtk_container_set_border_width( GTK_CONTAINER(hbbox), 0 ); gtk_widget_grab_default( ok_btn ); g_signal_connect( G_OBJECT(ok_btn), "clicked", G_CALLBACK(addressbook_foldersel_ok), NULL ); g_signal_connect( G_OBJECT(cancel_btn), "clicked", G_CALLBACK(addressbook_foldersel_cancel), NULL ); g_signal_connect( G_OBJECT(tree_folder), "tree_select_row", G_CALLBACK(addressbook_foldersel_folder_select), NULL ); g_signal_connect( G_OBJECT(tree_folder), "button_press_event", G_CALLBACK(addressbook_foldersel_tree_button), NULL ); if ( !geometry.min_height ) { geometry.min_width = 300; geometry.min_height = 350; } gtk_window_set_geometry_hints( GTK_WINDOW(window), NULL, &geometry, GDK_HINT_MIN_SIZE ); gtk_widget_set_size_request( window, prefs_common.addressbook_folderselwin_width, prefs_common.addressbook_folderselwin_height ); gtk_widget_show_all( vbox ); addressbook_foldersel_dlg.window = window; addressbook_foldersel_dlg.tree_folder = tree_folder; addressbook_foldersel_dlg.ok_btn = ok_btn; addressbook_foldersel_dlg.cancel_btn = cancel_btn; gtk_widget_show_all( window ); stock_pixbuf_gdk(STOCK_PIXMAP_BOOK, &bookXpm); stock_pixbuf_gdk(STOCK_PIXMAP_DIR_OPEN, &folderXpm); }