From: Predrag "Pele" Balorda Date: Thu, 10 Dec 1998 13:05:05 +0000 (+0000) Subject: miscelaneous updates and fixes to gtk-tool X-Git-Tag: OPENLDAP_SLAPD_BACK_LDAP~953 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=6b854dff20b6b593525ccb4d6b1f029ae4a55e6e;p=openldap miscelaneous updates and fixes to gtk-tool --- diff --git a/contrib/gtk-tool/ChangeLog b/contrib/gtk-tool/ChangeLog index fb97b263c0..29dcb2ec00 100644 --- a/contrib/gtk-tool/ChangeLog +++ b/contrib/gtk-tool/ChangeLog @@ -1,5 +1,11 @@ ChangeLog for gtk-tool +09/12/1998 - Pele + * Display of all ldap options in their proper widgets (sliders for + timeout, radio buttons for booleans etc.) when server selected + * Code cleanups + * Misc fixes + 03/12/1998 - Pele * Added support for multiple servers (via multiple -s options) * More testing diff --git a/contrib/gtk-tool/Gtk_LdapServer.cc b/contrib/gtk-tool/Gtk_LdapServer.cc index 3c91b61827..ff7c1fc362 100644 --- a/contrib/gtk-tool/Gtk_LdapServer.cc +++ b/contrib/gtk-tool/Gtk_LdapServer.cc @@ -141,13 +141,15 @@ char* Gtk_LdapServer::getOptDescription(int option) { int Gtk_LdapServer::getOptType(int option) { debug("Gtk_LdapServer::getOptType(%i) ", option); - int type; /* 0 = int, 1 = string, 2 = boolean */ + /* types: + * 0 = int, 1 = string, 2 = boolean, + * 3 = range, 4 = LDAPAPIInfo, 5 = unknown + */ + int type; switch(option) { /* ints */ case LDAP_OPT_DEREF: case LDAP_OPT_DESC: - case LDAP_OPT_SIZELIMIT: - case LDAP_OPT_TIMELIMIT: case LDAP_OPT_ERROR_NUMBER: case LDAP_OPT_PROTOCOL_VERSION: type = 0; break; /* strings */ @@ -157,10 +159,15 @@ int Gtk_LdapServer::getOptType(int option) { case LDAP_OPT_REFERRALS: case LDAP_OPT_DNS: case LDAP_OPT_RESTART: type = 2; break; + /* range */ + case LDAP_OPT_SIZELIMIT: + case LDAP_OPT_TIMELIMIT: type = 3; break; + /* api */ + case LDAP_OPT_API_INFO: type = 4; break; + /* unknowns */ case LDAP_OPT_SERVER_CONTROLS: case LDAP_OPT_CLIENT_CONTROLS: - case LDAP_OPT_API_INFO: - default: type = 0; break; + default: type = 5; break; } debug("%i\n", type); return type; @@ -169,19 +176,23 @@ int Gtk_LdapServer::getOptType(int option) { int Gtk_LdapServer::getOptions() { debug("Gtk_LdapServer::getOptions()\n"); if (this->notebook != NULL) return 0; + LDAPAPIInfo api; Gtk_HBox *hbox, *mini_hbox; Gtk_VBox *vbox, *mini_vbox; Gtk_Table *table; Gtk_Label *label; Gtk_RadioButton *radio1, *radio2; - char *s_value; + Gtk_HScale *scale; + Gtk_Adjustment *adjustment; + char *description = NULL, *s_value = NULL; int i_value; - char *thing; - int things[9] = { + string label_string; + + int things[10] = { LDAP_OPT_API_INFO, - // LDAP_OPT_CLIENT_CONTROLS, + LDAP_OPT_CLIENT_CONTROLS, // LDAP_OPT_DESC, - LDAP_OPT_DEREF, + // LDAP_OPT_DEREF, LDAP_OPT_DNS, // LDAP_OPT_ERROR_NUMBER, // LDAP_OPT_ERROR_STRING, @@ -189,7 +200,7 @@ int Gtk_LdapServer::getOptions() { LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_REFERRALS, LDAP_OPT_RESTART, - // LDAP_OPT_SERVER_CONTROLS, + LDAP_OPT_SERVER_CONTROLS, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT }; @@ -200,23 +211,22 @@ int Gtk_LdapServer::getOptions() { // debug("getting ldap options"); // vbox = new Gtk_VBox(); - table = new Gtk_Table(11, 2, TRUE); + table = new Gtk_Table(10, 1, TRUE); - for (int i=0; i<9; i++) { + for (int i=0; i<10; i++) { // debug("%i\n", i); hbox = new Gtk_HBox(TRUE, 2); hbox->border_width(2); - thing = this->getOptDescription(things[i]); - label = new Gtk_Label(thing); + description = this->getOptDescription(things[i]); + label = new Gtk_Label(description); label->set_justify(GTK_JUSTIFY_LEFT); label->set_alignment(0, 0); hbox->pack_start(*label); label->show(); - int tipus = this->getOptType(things[i]); - switch (tipus) { + switch (this->getOptType(things[i])) { case 0: - ldap_get_option(NULL, things[i], &i_value); - debug("%s value %d\n", thing, i_value); + ldap_get_option(this->ld, things[i], &i_value); + debug("%s value %d\n", description, i_value); sprintf(s_value, "%d", i_value); label = new Gtk_Label(s_value); label->set_justify(GTK_JUSTIFY_LEFT); @@ -234,8 +244,6 @@ int Gtk_LdapServer::getOptions() { break; case 2: ldap_get_option(this->ld, things[i], &i_value); - // sprintf(s_value, "%s", i_value == (int) LDAP_OPT_ON ? "on" : "off"); - // label = new Gtk_Label(s_value); radio1 = new Gtk_RadioButton(static_cast(0), "Enabled"); radio2 = new Gtk_RadioButton(*radio1, "Disabled"); if (i_value == 1) radio1->set_state(true); @@ -249,8 +257,36 @@ int Gtk_LdapServer::getOptions() { hbox->pack_end(*mini_hbox); mini_hbox->show(); break; + case 3: + ldap_get_option(this->ld, things[i], &i_value); + adjustment = new Gtk_Adjustment(i_value, 1.0, 20.0, 1.0, 1.0, 0.0); + scale = new Gtk_HScale(*adjustment); + scale->set_update_policy(GTK_UPDATE_CONTINUOUS); + scale->set_value_pos(GTK_POS_TOP); + scale->set_digits(0); + scale->set_draw_value(true); + hbox->pack_end(*scale); + scale->show(); + break; + case 4: +#ifdef LDAP_API_INFO_VERSION + api.ldapai_info_version = LDAP_API_INFO_VERSION; +#else + api.ldapai_info_version = 1; +#endif + if (ldap_get_option(this->ld, things[i], &api) != LDAP_SUCCESS) { + perror(this->getOptDescription(things[i])); + break; + } + s_value = api.ldapai_vendor_name; + label = new Gtk_Label(s_value); + label->set_justify(GTK_JUSTIFY_LEFT); + label->set_alignment(0, 0); + hbox->pack_end(*label); + label->show(); + break; default: - label = new Gtk_Label("Nothing"); + label = new Gtk_Label("Not implemented (yet)"); label->set_justify(GTK_JUSTIFY_LEFT); label->set_alignment(0, 0); hbox->pack_end(*label); @@ -259,7 +295,7 @@ int Gtk_LdapServer::getOptions() { } // hbox->pack_end(*label); // label->show(); - table->attach_defaults(*hbox, 0, 2, i, i+1); + table->attach_defaults(*hbox, 0, 1, i, i+1); hbox->show(); } table->border_width(2); @@ -313,8 +349,8 @@ void Gtk_LdapServer::show_impl() { void Gtk_LdapServer::select_impl() { debug("%s selected\n", this->hostname); Gtk_c_signals_Item *sig=(Gtk_c_signals_Item *)internal_getsignalbase(); - if (this->showDetails() == 0) debug("%s select_impl done\n", this->hostname); if (!sig->select) return; + this->showDetails(); sig->select(GTK_ITEM(gtkobj())); } diff --git a/contrib/gtk-tool/Gtk_LdapTreeItem.cc b/contrib/gtk-tool/Gtk_LdapTreeItem.cc index 129fc6fcc6..a6e1d247f5 100644 --- a/contrib/gtk-tool/Gtk_LdapTreeItem.cc +++ b/contrib/gtk-tool/Gtk_LdapTreeItem.cc @@ -80,7 +80,7 @@ Gtk_LdapTree* Gtk_LdapTreeItem::getSubtree(LDAP *ld, int counter) { } void Gtk_LdapTreeItem::setType(int t) { - debug("Gtk_LdapTreeItem::setType(%i)\n", t); + debug("Gtk_LdapTreeItem::setType(%s)\n", this->objectClass); Gtk_Pixmap *xpm_icon; Gtk_Label *label; if (this->getchild() != NULL) { @@ -97,6 +97,8 @@ void Gtk_LdapTreeItem::setType(int t) { xpm_icon=new Gtk_Pixmap(*xpm_label, leaf_node); else if (strcasecmp(this->objectClass,"alias") == 0) xpm_icon=new Gtk_Pixmap(*xpm_label, alias_node); + else if (strcasecmp(this->objectClass,"rfc822mailgroup") == 0) + xpm_icon=new Gtk_Pixmap(*xpm_label, rfc822mailgroup_node); else xpm_icon=new Gtk_Pixmap(*xpm_label, general_node); label = new Gtk_Label(this->rdn); xpm_label->pack_start(*xpm_icon, false, false, 1); @@ -145,12 +147,14 @@ int Gtk_LdapTreeItem::getDetails() { for (attribute = ldap_first_attribute(ld, entry, &ber); attribute != NULL; attribute = ldap_next_attribute(ld, entry, ber)) { values = ldap_get_values(ld, entry, attribute); if (strcasecmp(attribute, "objectclass") == 0) { + // debug("processing objectclass\n"); if (strcasecmp(values[0],"top") == 0) this->objectClass = strdup(values[1]); - else this->objectClass = values[0]; + else this->objectClass = strdup(values[0]); } table = new Gtk_CList(1, titles); for (int i=0; iappend(t); } diff --git a/contrib/gtk-tool/Gtk_LdapTreeItem.h b/contrib/gtk-tool/Gtk_LdapTreeItem.h index 63aa1f6194..ad5cbe279f 100644 --- a/contrib/gtk-tool/Gtk_LdapTreeItem.h +++ b/contrib/gtk-tool/Gtk_LdapTreeItem.h @@ -10,6 +10,7 @@ #include "icons/branch_node.h" #include "icons/leaf_node.h" #include "icons/alias_node.h" +#include "icons/rfc822mailgroup_node.h" #include "icons/general_node.h" #define ROOT_NODE 1 diff --git a/contrib/gtk-tool/Makefile b/contrib/gtk-tool/Makefile index fa9f860065..bb2d1179a3 100644 --- a/contrib/gtk-tool/Makefile +++ b/contrib/gtk-tool/Makefile @@ -1,7 +1,7 @@ HOME_LOCATION=$(shell pwd) CC= gcc CPLUS= g++ -OPTS=-g #-DDEBUG +OPTS=-g -DDEBUG INCLUDES=`gtkmm-config --cflags` -I. LDFLAGS=`gtkmm-config --libs` -L/usr/lib -L/usr/X11/lib -L/usr/local/gnome/lib -L/usr/local/ldap/lib -lldap -llber -L/usr/local/kerberos/lib -lkrb5 -lkrb4 LIBS=-lXext -lgtkmm -lX11 -lXt -lXxf86dga diff --git a/contrib/gtk-tool/My_Window.cc b/contrib/gtk-tool/My_Window.cc index 941844c80a..7cac6e8bc7 100644 --- a/contrib/gtk-tool/My_Window.cc +++ b/contrib/gtk-tool/My_Window.cc @@ -1,7 +1,7 @@ #include My_Window::My_Window(GtkWindowType t) : Gtk_Window(t) { - cout << "My_Window(t)" << endl; + debug("My_Window(t)\n"); Gtk_VBox *main_hbox; Gtk_HBox *top_hbox; Gtk_VBox *bottom_hbox; diff --git a/contrib/gtk-tool/main.cc b/contrib/gtk-tool/main.cc index b2de0c2514..aff5f345e7 100644 --- a/contrib/gtk-tool/main.cc +++ b/contrib/gtk-tool/main.cc @@ -24,7 +24,7 @@ int main(int argc, char **argv) { while ((c = getopt(argc, argv, "s:p:h")) != -1) { switch (c) { case 's': - cout << "host" << endl; + debug("host\n"); hosts = hosts->append(strdup(optarg)); break; case 'p': @@ -35,7 +35,7 @@ int main(int argc, char **argv) { exit(-1); } } - cout << hosts->length() << "hosts" << endl; + debug("%i hosts\n", hosts->length()); for (int f=0; flength(); f++) { debug("%s\n", hosts->nth_data(f)); } @@ -48,6 +48,10 @@ int main(int argc, char **argv) { Gtk_Main m(&argc, &argv); window = new My_Window(GTK_WINDOW_TOPLEVEL); + window->set_title("gtk-tool"); + window->activate(); + window->set_usize(600, 500); + window->show(); tree = new Gtk_Tree(); for (int f=0; flength(); f++) { @@ -69,10 +73,6 @@ int main(int argc, char **argv) { window->scroller->show(); // treeitem->showDetails(); // treeitem->select(); - window->set_title("gtk-tool"); - window->activate(); - window->set_usize(600, 500); - window->show(); m.run(); return 0;