/* exported interface documented in completion.h */ GtkEntryCompletion *nsgtk_url_entry_completion_new(struct nsgtk_scaffolding *gs) { GtkEntryCompletion *completion; completion = gtk_entry_completion_new(); gtk_entry_completion_set_match_func(completion, nsgtk_completion_match, NULL, NULL); gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(nsgtk_completion_list)); gtk_entry_completion_set_text_column(completion, 0); gtk_entry_completion_set_minimum_key_length(completion, 1); /* enable popup for completion */ gtk_entry_completion_set_popup_completion(completion, TRUE); /* when selected callback */ g_signal_connect(G_OBJECT(completion), "match-selected", G_CALLBACK(nsgtk_completion_match_select), gs); g_object_set(G_OBJECT(completion), "popup-set-width", TRUE, "popup-single-match", TRUE, NULL); return completion; }
GtkWidget * terminal_search_dialog_new (GtkWindow *parent) { GtkWidget *dialog; TerminalSearchDialogPrivate *priv; GtkListStore *store; GtkEntryCompletion *completion; priv = g_new0 (TerminalSearchDialogPrivate, 1); if (!terminal_util_load_builder_file ("find-dialog.ui", "find-dialog", &dialog, "search-label", &priv->search_label, "search-entry", &priv->search_entry, "match-case-checkbutton", &priv->match_case_checkbutton, "entire-word-checkbutton", &priv->entire_word_checkbutton, "regex-checkbutton", &priv->regex_checkbutton, "search-backwards-checkbutton", &priv->backwards_checkbutton, "wrap-around-checkbutton", &priv->wrap_around_checkbutton, NULL)) { g_free (priv); return NULL; } g_object_set_qdata_full (G_OBJECT (dialog), get_quark (), priv, (GDestroyNotify) terminal_search_dialog_private_destroy); priv->search_text_entry = gtk_bin_get_child (GTK_BIN (priv->search_entry)); gtk_widget_set_size_request (priv->search_entry, 300, -1); priv->store = store = gtk_list_store_new (1, G_TYPE_STRING); g_object_set (G_OBJECT (priv->search_entry), "model", store, "text-column", 0, NULL); priv->completion = completion = gtk_entry_completion_new (); gtk_entry_completion_set_model (completion, GTK_TREE_MODEL (store)); gtk_entry_completion_set_text_column (completion, 0); gtk_entry_completion_set_minimum_key_length (completion, HISTORY_MIN_ITEM_LEN); gtk_entry_completion_set_popup_completion (completion, FALSE); gtk_entry_completion_set_inline_completion (completion, TRUE); gtk_entry_set_completion (GTK_ENTRY (priv->search_text_entry), completion); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT, FALSE); gtk_entry_set_activates_default (GTK_ENTRY (priv->search_text_entry), TRUE); g_signal_connect (priv->search_text_entry, "changed", G_CALLBACK (update_sensitivity), dialog); g_signal_connect (priv->regex_checkbutton, "toggled", G_CALLBACK (update_sensitivity), dialog); g_signal_connect (dialog, "response", G_CALLBACK (response_handler), NULL); if (parent) gtk_window_set_transient_for (GTK_WINDOW (dialog), parent); return GTK_WIDGET (dialog); }
/* * Create completion in entry */ static void dialog_entry_completion_new(const GtkWidget *container, GtkEntryCompletionMatchFunc completion_func, gpointer completion_data) { GtkListStore *list_store = NULL; GtkEntryCompletion *completion = NULL; /* Create a tree model and use it as the completion model */ list_store = gtk_list_store_new(1, G_TYPE_STRING); /* Create the completion object */ completion = gtk_entry_completion_new(); gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(list_store)); gtk_entry_completion_set_text_column(completion, 0); gtk_entry_completion_set_minimum_key_length(completion, AV_WIDGET_ENTRY_COMPLETION_KEY_LEN_MIN); gtk_entry_completion_set_popup_completion(completion, FALSE); gtk_entry_completion_set_inline_completion(completion, TRUE); gtk_entry_completion_set_match_func(completion, completion_func, completion_data, NULL); /* Assign the completion to the entry */ gtk_entry_set_completion(GTK_ENTRY(container), completion); g_object_unref (completion); }
static GtkWidget * ekiga_window_uri_entry_new (EkigaWindow *mw) { GtkWidget *entry = NULL; GtkEntryCompletion *completion = NULL; g_return_val_if_fail (EKIGA_IS_WINDOW (mw), NULL); /* URI Entry */ entry = gm_entry_new (BASIC_URI_REGEX); gm_entry_set_activate_icon (GM_ENTRY (entry), "call-start"); mw->priv->completion = gtk_list_store_new (1, G_TYPE_STRING); completion = gtk_entry_completion_new (); gtk_entry_completion_set_model (GTK_ENTRY_COMPLETION (completion), GTK_TREE_MODEL (mw->priv->completion)); gtk_entry_completion_set_text_column (GTK_ENTRY_COMPLETION (completion), 0); gtk_entry_set_completion (GTK_ENTRY (entry), completion); gtk_entry_set_text (GTK_ENTRY (entry), "sip:"); gtk_entry_completion_set_inline_completion (GTK_ENTRY_COMPLETION (completion), true); gtk_entry_completion_set_popup_completion (GTK_ENTRY_COMPLETION (completion), true); gtk_widget_add_accelerator (entry, "grab-focus", mw->priv->accel, GDK_KEY_L, (GdkModifierType) GDK_CONTROL_MASK, (GtkAccelFlags) 0); gtk_editable_set_position (GTK_EDITABLE (entry), -1); g_signal_connect (entry, "changed", G_CALLBACK (url_changed_cb), mw); g_signal_connect (entry, "activated", G_CALLBACK (place_call_cb), mw); return entry; }
int clip_GTK_ENTRYCOMPLETIONSETPOPUPCOMPLETION(ClipMachine * ClipMachineMemory) { C_object *ccompletion = _fetch_co_arg(ClipMachineMemory); gboolean set = _clip_parl(ClipMachineMemory, 2); CHECKCOBJ(ccompletion, GTK_IS_ENTRY_COMPLETION(ccompletion->object)); CHECKARG(2, LOGICAL_type_of_ClipVarType); gtk_entry_completion_set_popup_completion(GTK_ENTRY_COMPLETION(ccompletion->object), set); return 0; err: return 1; }
static void hildon_touch_selector_entry_init (HildonTouchSelectorEntry *self) { HildonTouchSelectorEntryPrivate *priv; GtkEntryCompletion *completion; HildonGtkInputMode input_mode; priv = HILDON_TOUCH_SELECTOR_ENTRY_GET_PRIVATE (self); priv->converter = g_iconv_open ("ascii//translit", "utf-8"); priv->entry = hildon_entry_new (HILDON_SIZE_FINGER_HEIGHT); gtk_entry_set_activates_default (GTK_ENTRY (priv->entry), TRUE); input_mode = hildon_gtk_entry_get_input_mode (GTK_ENTRY (priv->entry)); /* Disable unsupported input modes. */ input_mode &= ~HILDON_GTK_INPUT_MODE_MULTILINE; input_mode &= ~HILDON_GTK_INPUT_MODE_INVISIBLE; input_mode &= ~HILDON_GTK_INPUT_MODE_DICTIONARY; hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry), input_mode); completion = gtk_entry_completion_new (); gtk_entry_completion_set_inline_completion (completion, TRUE); gtk_entry_completion_set_popup_completion (completion, FALSE); gtk_entry_set_completion (GTK_ENTRY (priv->entry), completion); g_object_unref (completion); gtk_widget_show (priv->entry); g_signal_connect (G_OBJECT (priv->entry), "changed", G_CALLBACK (entry_on_text_changed), self); priv->signal_id = g_signal_connect (G_OBJECT (self), "changed", G_CALLBACK (hildon_touch_selector_entry_changed), NULL); hildon_touch_selector_set_print_func (HILDON_TOUCH_SELECTOR (self), hildon_touch_selector_entry_print_func); gtk_box_pack_start (GTK_BOX (self), priv->entry, FALSE, FALSE, 0); }
static void inline_radio_toggled(GtkToggleButton *button, gpointer data) { gtk_entry_completion_set_popup_completion(g_completion, FALSE); gtk_entry_completion_set_inline_completion(g_completion, TRUE); }
GtkWidget* create_tool_item( GtkAction* action ) { GtkWidget* item = 0; if ( IS_EGE_SELECT_ONE_ACTION(action) && EGE_SELECT_ONE_ACTION(action)->private_data->model ) { EgeSelectOneAction* act = EGE_SELECT_ONE_ACTION(action); item = GTK_WIDGET( gtk_tool_item_new() ); if ( act->private_data->appearanceMode == APPEARANCE_FULL ) { #if GTK_CHECK_VERSION(3,0,0) GtkWidget* holder = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_set_homogeneous(GTK_BOX(holder), FALSE); #else GtkWidget* holder = gtk_hbox_new( FALSE, 0 ); #endif GtkRadioAction* ract = 0; GSList* group = 0; GtkTreeIter iter; gboolean valid = FALSE; gint index = 0; { gchar* sss = 0; g_object_get( G_OBJECT(action), "short_label", &sss, NULL ); // If short_label not defined, g_object_get will return label. // This hack allows a label to be used with a drop-down menu when // no label is used with a set of icons that are self-explanatory. if (sss && strcmp( sss, "NotUsed" ) != 0 ) { GtkWidget* lbl = gtk_label_new(sss); gtk_box_pack_start( GTK_BOX(holder), lbl, FALSE, FALSE, 4 ); } g_free( sss ); sss = 0; } valid = gtk_tree_model_get_iter_first( act->private_data->model, &iter ); while ( valid ) { gchar* str = 0; gchar* tip = 0; gchar* iconId = 0; gboolean sens = true; /* gint size = 0; */ gtk_tree_model_get( act->private_data->model, &iter, act->private_data->labelColumn, &str, -1 ); if ( act->private_data->iconColumn >= 0 ) { gtk_tree_model_get( act->private_data->model, &iter, act->private_data->iconColumn, &iconId, -1 ); } if ( act->private_data->tooltipColumn >= 0 ) { gtk_tree_model_get( act->private_data->model, &iter, act->private_data->tooltipColumn, &tip, -1 ); } if ( act->private_data->sensitiveColumn >= 0 ) { gtk_tree_model_get( act->private_data->model, &iter, act->private_data->sensitiveColumn, &sens, -1 ); } if ( act->private_data->radioActionType ) { void* obj = g_object_new( act->private_data->radioActionType, "name", "Name 1", "label", str, "tooltip", tip, "value", index, /* "iconId", iconId, "iconSize", size, */ NULL ); if ( iconId ) { g_object_set( G_OBJECT(obj), act->private_data->iconProperty, iconId, NULL ); } if ( act->private_data->iconProperty ) { /* TODO get this string to be set instead of hardcoded */ if ( act->private_data->iconSize >= 0 ) { g_object_set( G_OBJECT(obj), "iconSize", act->private_data->iconSize, NULL ); } } ract = GTK_RADIO_ACTION(obj); } else { ract = gtk_radio_action_new( "Name 1", str, tip, iconId, index ); } if ( act->private_data->sensitiveColumn >= 0 ) { gtk_action_set_sensitive( GTK_ACTION(ract), sens ); } gtk_radio_action_set_group( ract, group ); group = gtk_radio_action_get_group( ract ); if ( index == act->private_data->active ) { gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(ract), TRUE ); } g_signal_connect( G_OBJECT(ract), "changed", G_CALLBACK( proxy_action_chagned_cb ), act ); GtkWidget* sub = gtk_action_create_tool_item( GTK_ACTION(ract) ); gtk_activatable_set_related_action( GTK_ACTIVATABLE (sub), GTK_ACTION(ract) ); gtk_tool_item_set_tooltip_text( GTK_TOOL_ITEM(sub), tip ); gtk_box_pack_start( GTK_BOX(holder), sub, FALSE, FALSE, 0 ); g_free( str ); g_free( tip ); g_free( iconId ); index++; valid = gtk_tree_model_iter_next( act->private_data->model, &iter ); } g_object_set_data( G_OBJECT(holder), "ege-proxy_action-group", group ); gtk_container_add( GTK_CONTAINER(item), holder ); } else { #if GTK_CHECK_VERSION(3,0,0) GtkWidget* holder = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4); gtk_box_set_homogeneous(GTK_BOX(holder), FALSE); #else GtkWidget *holder = gtk_hbox_new( FALSE, 4 ); #endif GtkEntry *entry = 0; GtkWidget *normal; if (act->private_data->selectionMode == SELECTION_OPEN) { normal = gtk_combo_box_new_with_model_and_entry (act->private_data->model); gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (normal), act->private_data->labelColumn); GtkWidget *child = gtk_bin_get_child( GTK_BIN(normal) ); if (GTK_IS_ENTRY(child)) { int maxUsed = scan_max_width( act->private_data->model, act->private_data->labelColumn ); GtkEntryCompletion *complete = 0; entry = GTK_ENTRY(child); gtk_entry_set_width_chars(entry, maxUsed); /* replace with property */ complete = gtk_entry_completion_new(); gtk_entry_completion_set_model( complete, act->private_data->model ); gtk_entry_completion_set_text_column( complete, act->private_data->labelColumn ); gtk_entry_completion_set_inline_completion( complete, FALSE ); gtk_entry_completion_set_inline_selection( complete, FALSE ); gtk_entry_completion_set_popup_completion( complete, TRUE ); gtk_entry_completion_set_popup_set_width( complete, FALSE ); gtk_entry_set_completion( entry, complete ); g_signal_connect( G_OBJECT(child), "activate", G_CALLBACK(combo_entry_changed_cb), act ); g_signal_connect( G_OBJECT(child), "focus-out-event", G_CALLBACK(combo_entry_focus_lost_cb), act ); } } else { GtkCellRenderer * renderer = NULL; normal = gtk_combo_box_new_with_model( act->private_data->model ); 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_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 ); if ( entry && (act->private_data->active == -1) ) { gtk_entry_set_text( entry, act->private_data->activeText ); } g_signal_connect( G_OBJECT(normal), "changed", G_CALLBACK(combo_changed_cb), action ); g_object_set_data( G_OBJECT(holder), "ege-combo-box", normal ); g_object_set_data( G_OBJECT(act), "ege-combo-box", normal ); if (act->private_data->appearanceMode == APPEARANCE_COMPACT) { gchar* sss = 0; g_object_get( G_OBJECT(action), "short_label", &sss, NULL ); if (sss) { GtkWidget* lbl = gtk_label_new(sss); gtk_box_pack_start( GTK_BOX(holder), lbl, FALSE, FALSE, 4 ); g_free( sss ); sss = 0; } } gtk_box_pack_start( GTK_BOX(holder), normal, FALSE, FALSE, 0 ); { #if GTK_CHECK_VERSION(3,0,0) gtk_widget_set_halign(holder, GTK_ALIGN_START); gtk_container_add(GTK_CONTAINER(item), holder); #else GtkWidget *align = gtk_alignment_new(0, 0.5, 0, 0); gtk_container_add( GTK_CONTAINER(align), holder); gtk_container_add( GTK_CONTAINER(item), align ); #endif } } gtk_widget_show_all( item ); } else { item = GTK_ACTION_CLASS(ege_select_one_action_parent_class)->create_tool_item( action ); } return item; }
/* A browser window was added */ static void _interface_tweaks_on_add_browser(InterfaceTweaks *self, MidoriBrowser *inBrowser, gpointer inUserData) { g_return_if_fail(IS_INTERFACE_TWEAKS(self)); g_return_if_fail(MIDORI_IS_BROWSER(inBrowser)); InterfaceTweaksPrivate *priv=self->priv; GtkNotebook *notebook; GList *tabs, *iter; InterfaceTweaksLocationbarLookup locationbar; GtkEntryCompletion *completion; guint keyPressSignalID; gulong hookID; /* Set up all current available tabs in browser */ tabs=midori_browser_get_tabs(inBrowser); for(iter=tabs; iter; iter=g_list_next(iter)) { _interface_tweaks_on_add_tab(self, iter->data, inBrowser); } g_list_free(tabs); /* Listen to new tabs opened in browser */ g_signal_connect_swapped(inBrowser, "add-tab", G_CALLBACK(_interface_tweaks_on_add_tab), self); notebook=NULL; g_object_get(inBrowser, "notebook", ¬ebook, NULL); if(notebook) { g_signal_connect_swapped(notebook, "page-added", G_CALLBACK(_interface_tweaks_on_tab_reordered), self); g_signal_connect_swapped(notebook, "page-reordered", G_CALLBACK(_interface_tweaks_on_tab_reordered), self); g_object_unref(notebook); } /* Listen to locationbar signals */ _interface_tweaks_find_browser_locationbar(inBrowser, &locationbar); if(locationbar.widget) { /* Add completion to location entry and setup signals */ completion=gtk_entry_completion_new(); gtk_entry_completion_set_inline_completion(completion, TRUE); gtk_entry_completion_set_inline_selection(completion, FALSE); gtk_entry_completion_set_popup_completion(completion, FALSE); gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(priv->completionModel)); gtk_entry_completion_set_text_column(completion, 0); gtk_entry_set_completion(GTK_ENTRY(locationbar.widget), completion); g_signal_connect_swapped(completion, "insert-prefix", G_CALLBACK(_interface_tweaks_on_insert_prefix), self); g_object_unref(completion); /* Add emission handler to entry if it does not exist to ensure that * our "key-press-event" handler gets called first */ hookID=GPOINTER_TO_SIZE(g_object_get_data(G_OBJECT(locationbar.widget), "interface-tweaks-hook-id")); if(hookID==0) { keyPressSignalID=g_signal_lookup("key-press-event", GTK_TYPE_ENTRY); hookID=g_signal_add_emission_hook(keyPressSignalID, 0, _interface_tweaks_on_key_press_event, locationbar.widget, NULL); g_object_set_data(G_OBJECT(locationbar.widget), "interface-tweaks-hook-id", GSIZE_TO_POINTER(hookID)) ; } /* Add signal to recognize widget destruction to release emission hook */ g_signal_connect_swapped(locationbar.widget, "destroy", G_CALLBACK(_interface_tweaks_on_destroyed), self); } }
GtkWidget * engine_logon_widget_create () { GSQL_TRACE_FUNC; GtkWidget *table; GtkWidget *database_name; GtkWidget *database_name_entry; GtkWidget *username; GtkWidget *password; GtkWidget *label; GtkWidget *options_vbox; GtkWidget *expander; GtkWidget *oracle_option_hbox; GtkWidget *connect_as; GtkListStore *aliases; GtkEntryCompletion *compl; table = gtk_table_new (5, 2, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_widget_show (table); aliases = engine_oracle_get_tns_aliases (); compl = gtk_entry_completion_new (); gtk_entry_completion_set_model (compl, GTK_TREE_MODEL (aliases)); gtk_entry_completion_set_text_column (compl, 0); gtk_entry_completion_set_popup_completion (compl, FALSE); gtk_entry_completion_set_inline_completion (compl, TRUE); database_name = gtk_combo_box_entry_new_with_model (GTK_TREE_MODEL (aliases), 0); gtk_widget_show (database_name); gtk_table_attach (GTK_TABLE (table), database_name, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); database_name_entry = gtk_bin_get_child(GTK_BIN(database_name)); gtk_entry_set_activates_default(GTK_ENTRY (database_name_entry), TRUE); gtk_entry_set_completion (GTK_ENTRY (database_name_entry), compl); label = gtk_label_new (_("Database name")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 14, 0); username = gtk_entry_new (); gtk_widget_show (username); gtk_table_attach (GTK_TABLE (table), username, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_entry_set_max_length (GTK_ENTRY (username), 32); gtk_entry_set_invisible_char (GTK_ENTRY (username), 9679); gtk_entry_set_activates_default(GTK_ENTRY (username), TRUE); label = gtk_label_new (_("Username")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 14, 0); password = gtk_entry_new (); gtk_widget_show (password); gtk_table_attach (GTK_TABLE (table), password, 1, 2, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_entry_set_max_length (GTK_ENTRY (password), 32); gtk_entry_set_visibility (GTK_ENTRY (password), FALSE); gtk_entry_set_invisible_char (GTK_ENTRY (password), 9679); gtk_entry_set_activates_default(GTK_ENTRY (password), TRUE); label = gtk_label_new (_("Password")); gtk_widget_show (label); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_misc_set_padding (GTK_MISC (label), 14, 0); expander = gtk_expander_new (NULL); gtk_widget_show (expander); gtk_table_attach (GTK_TABLE (table), expander, 0, 2, 4, 5, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); options_vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (options_vbox); gtk_container_add (GTK_CONTAINER (expander), options_vbox); oracle_option_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (oracle_option_hbox); gtk_box_pack_start (GTK_BOX (options_vbox), oracle_option_hbox, TRUE, TRUE, 0); label = gtk_label_new (_("Connect as ")); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (oracle_option_hbox), label, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (label), 14, 0); connect_as = gtk_combo_box_new_text (); gtk_widget_show (connect_as); gtk_box_pack_start (GTK_BOX (oracle_option_hbox), connect_as, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS (connect_as, GTK_CAN_DEFAULT); gtk_combo_box_append_text (GTK_COMBO_BOX (connect_as), "Normal"); gtk_combo_box_append_text (GTK_COMBO_BOX (connect_as), "SYSDBA"); gtk_combo_box_append_text (GTK_COMBO_BOX (connect_as), "SYSOPER"); gtk_combo_box_set_active (GTK_COMBO_BOX (connect_as), 0); label = gtk_label_new (_("Options")); gtk_widget_show (label); gtk_expander_set_label_widget (GTK_EXPANDER (expander), label); HOOKUP_OBJECT (table, database_name, "database"); HOOKUP_OBJECT (table, username, "username"); HOOKUP_OBJECT (table, password, "password"); HOOKUP_OBJECT (table, connect_as, "mode"); return table; }