[gq-commit] gq/src common.h,1.22,1.23 search.c,1.35,1.36 search.h,1.8,1.9
Status: Beta
Brought to you by:
sur5r
From: <bi...@us...> - 2003-10-04 00:58:53
|
Update of /cvsroot/gqclient/gq/src In directory sc8-pr-cvs1:/tmp/cvs-serv8840 Modified Files: common.h search.c search.h Log Message: simple version of history on the searchterm entry box in search mode. This has no autocompletion. Index: common.h =================================================================== RCS file: /cvsroot/gqclient/gq/src/common.h,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** common.h 30 Sep 2003 17:20:25 -0000 1.22 --- common.h 4 Oct 2003 00:58:44 -0000 1.23 *************** *** 38,41 **** --- 38,42 ---- #define MAX_SERVERNAME_LEN 64 #define MAX_HOSTNAME_LEN 1024 + #define MAX_SEARCH_HISTORY_LENGTH 10 #define MAX_NUM_ATTRIBUTES 256 Index: search.c =================================================================== RCS file: /cvsroot/gqclient/gq/src/search.c,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** search.c 2 Oct 2003 16:16:26 -0000 1.35 --- search.c 4 Oct 2003 00:58:44 -0000 1.36 *************** *** 59,65 **** { GtkWidget *main_clist, *searchmode_vbox, *hbox1, *scrwin; ! GtkWidget *stinput; ! GtkWidget *servcombo, *searchbase_combo; GtkWidget *findbutton; struct tab_search *modeinfo; --- 59,65 ---- { GtkWidget *main_clist, *searchmode_vbox, *hbox1, *scrwin; ! GtkWidget *searchcombo, *servcombo, *searchbase_combo; GtkWidget *findbutton; + GList *searchhist; struct tab_search *modeinfo; *************** *** 68,95 **** searchmode_vbox = gtk_vbox_new(FALSE, 0); - hbox1 = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox1); gtk_box_pack_start(GTK_BOX(searchmode_vbox), hbox1, FALSE, FALSE, 3); ! /* searchterm entry box */ ! stinput = gtk_entry_new(); ! gtk_widget_show(stinput); ! gtk_signal_connect_object(GTK_OBJECT(stinput), "activate", GTK_SIGNAL_FUNC(findbutton_pressed_callback), (gpointer) tab); ! gtk_box_pack_start(GTK_BOX(hbox1), stinput, TRUE, TRUE, 6); ! /* GTK_WIDGET_SET_FLAGS(stinput, GTK_CAN_FOCUS); */ ! GTK_WIDGET_SET_FLAGS(stinput, GTK_CAN_DEFAULT); ! GTK_WIDGET_SET_FLAGS(stinput, GTK_RECEIVES_DEFAULT); ! /* yields a warning in gtk2 - FIXME, Maybe has to do with ! GtkNotebook being a NO_WINDOW widget */ ! /* gtk_widget_grab_default(stinput); */ ! tab->focus = stinput; /* LDAP server combo box */ servcombo = gtk_combo_new(); fill_serverlist_combo(servcombo); - gtk_box_pack_start(GTK_BOX(hbox1), servcombo, FALSE, TRUE, 0); gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(servcombo)->entry), FALSE); --- 68,96 ---- searchmode_vbox = gtk_vbox_new(FALSE, 0); hbox1 = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox1); gtk_box_pack_start(GTK_BOX(searchmode_vbox), hbox1, FALSE, FALSE, 3); ! /* FIXME for now, init this to an empty list -- modeinfo->history needs ! to be initialized from the session save facility when it's available */ ! searchhist = modeinfo->history; ! ! /* searchterm combo box */ ! searchcombo = gtk_combo_new(); ! gtk_combo_disable_activate(GTK_COMBO(searchcombo)); ! if(searchhist) ! gtk_combo_set_popdown_strings(GTK_COMBO(searchcombo), searchhist); ! gtk_widget_show(searchcombo); ! GTK_WIDGET_SET_FLAGS(searchcombo, GTK_CAN_FOCUS); ! GTK_WIDGET_SET_FLAGS(searchcombo, GTK_RECEIVES_DEFAULT); ! gtk_box_pack_start(GTK_BOX(hbox1), searchcombo, TRUE, TRUE, 6); ! gtk_signal_connect_object(GTK_OBJECT(GTK_COMBO(searchcombo)->entry), "activate", GTK_SIGNAL_FUNC(findbutton_pressed_callback), (gpointer) tab); ! tab->focus = GTK_COMBO(searchcombo)->entry; /* LDAP server combo box */ servcombo = gtk_combo_new(); fill_serverlist_combo(servcombo); gtk_box_pack_start(GTK_BOX(hbox1), servcombo, FALSE, TRUE, 0); gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(servcombo)->entry), FALSE); *************** *** 241,245 **** focusbox = tab->focus; gtk_widget_grab_focus(focusbox); - gtk_widget_grab_default(focusbox); gtk_editable_select_region(GTK_EDITABLE(focusbox), 0, -1); --- 242,245 ---- *************** *** 384,387 **** --- 384,411 ---- + void add_to_search_history(struct tab *tab) + { + gchar *searchterm; + GList *list, *last; + + list = SEARCHTAB(tab)->history; + searchterm = gtk_editable_get_chars(GTK_EDITABLE(tab->focus), 0, -1); + if(list && !strcmp(list->data, searchterm)) { + g_free(searchterm); + } + else { + list = g_list_insert_before(list, list, searchterm); + if(g_list_length(list) > MAX_SEARCH_HISTORY_LENGTH) { + last = g_list_last(list); + g_free(last->data); + list = g_list_remove(list, last->data); + } + SEARCHTAB(tab)->history = list; + gtk_combo_set_popdown_strings(GTK_COMBO(tab->focus->parent), list); + } + + } + + void query(struct tab *tab) { *************** *** 408,412 **** searchterm = gtk_editable_get_chars(GTK_EDITABLE(focusbox), 0, -1); querystring = encoded_string(searchterm); - g_free(searchterm); if(querystring[0] == 0) { --- 432,435 ---- *************** *** 460,465 **** } statusbar_msg(ldap_err2string(msg == -1 ? LDAP_OTHER : msg)); ! SEARCHTAB(tab)->search_lock = 0; close_connection(server, FALSE); return; } --- 483,489 ---- } statusbar_msg(ldap_err2string(msg == -1 ? LDAP_OTHER : msg)); ! g_free(searchterm); close_connection(server, FALSE); + SEARCHTAB(tab)->search_lock = 0; return; } *************** *** 632,635 **** --- 656,662 ---- if (res) ldap_msgfree(res); + add_to_search_history(tab); + + g_free(searchterm); close_connection(server, FALSE); Index: search.h =================================================================== RCS file: /cvsroot/gqclient/gq/src/search.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** search.h 30 Sep 2003 22:34:50 -0000 1.8 --- search.h 4 Oct 2003 00:58:44 -0000 1.9 *************** *** 39,42 **** --- 39,43 ---- struct ldapserver *cur_resultset_server; struct resultset *set; + GList *history; }; *************** *** 54,58 **** struct attrs *next; }; - GtkWidget *new_searchmode(struct tab *tab); --- 55,58 ---- |