]> git.sur5r.net Git - openldap/blob - contrib/gtk-tool/My_Window.cc
Update contrib software.
[openldap] / contrib / gtk-tool / My_Window.cc
1 #include <My_Window.h>
2
3 My_Window::My_Window(GtkWindowType t) : Gtk_Window(t) {
4         cout << "My_Window(t)" << endl;
5         Gtk_VBox *main_hbox;
6         Gtk_HBox *top_hbox;
7
8         pane = new Gtk_HPaned();
9         this->scroller = new Gtk_ScrolledWindow();
10         this->scroller->set_policy(GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
11 //      this->scroller->set_usize(this->height(), 400);
12         pane->add1(*this->scroller);
13         this->scroller->show();
14
15 //      this->scroller2 = new My_Scroller();
16         this->scroller2 = new Gtk_ScrolledWindow();
17         this->viewport = new Gtk_Viewport();
18         this->scroller2->set_policy(GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
19         this->scroller2->add(*this->viewport);
20         pane->add2(*this->scroller2);   
21         this->scroller2->show();
22
23         top_hbox = new Gtk_HBox();
24         this->urlfield = new Gtk_Entry();
25         top_hbox->pack_start(*this->urlfield, TRUE, TRUE, 1);
26         this->urlfield->show();
27         this->display_button = new Gtk_Button("Display");
28         connect_to_method(this->display_button->clicked, this, &do_display);
29         top_hbox->pack_end(*this->display_button, FALSE, FALSE, 1);
30         this->display_button->show();
31
32         main_hbox = new Gtk_VBox();
33         main_hbox->pack_start(*top_hbox, FALSE, TRUE, 1);
34         main_hbox->pack_end(*pane, TRUE, TRUE, 1);
35         top_hbox->show();
36         pane->show();
37         this->add(main_hbox);
38         main_hbox->show();
39 }
40
41 My_Window::~My_Window() {
42         cout << "~My_Window()" << endl;
43         delete this;
44 }
45
46 void My_Window::do_display() {
47         cout << this->urlfield->get_text() << endl;
48 }
49 void My_Window::expand(Gtk_TreeItem *t) {
50         gchar *name;
51         GtkLabel *label;
52         label = GTK_LABEL (GTK_BIN (t->gtkobj())->child);
53         gtk_label_get (label, &name);
54         g_print("%s selected\n", name);
55 }
56
57 gint My_Window::delete_event_impl(GdkEventAny *) {
58         Gtk_Main::instance()->quit();
59         return 0;
60 }
61
62 Gtk_LdapItem* My_Window::make_tree(My_Window *p, LDAP* l_i, char* b_d) {
63 //      printf("make_tree(%s)\n", b_d);
64         Gtk_LdapItem *treeresult, *subtreeresult;
65         Gtk_Tree *tree, *subtree, *subsubtree;
66         Gtk_LdapTreeItem *treeitem, *subtreeitem;
67         LDAPMessage *r_i, *entry;
68         gchar *c;
69         char **s;
70         char *c_num;
71         int entriesCount = 0;
72         int error;
73         int r_e_i;
74
75         error = ldap_search_s(l_i, b_d, LDAP_SCOPE_ONELEVEL, "objectclass=*", NULL, 0, &r_i);
76 //      printf("%s\n", ldap_err2string(error));
77         entriesCount = ldap_count_entries(l_i, r_i);
78 //      printf("%i results\n", entriesCount);
79         s = ldap_explode_dn(b_d, 1);
80         c = g_strdup_printf("%s", s[0]);
81         treeitem = new Gtk_LdapTreeItem(c, p);
82         treeitem->dn = b_d; treeitem->ld = l_i;
83         treeresult = new Gtk_LdapItem();
84         treeitem->getDetails();
85         if (entriesCount == 0) { 
86         //      treeitem->setType(LEAF_NODE);
87                 treeresult->treeitem = new Gtk_LdapTreeItem(*treeitem);
88                 treeresult->tree = NULL;
89                 return treeresult;
90         }
91         subtree = new Gtk_Tree();
92         subtree->set_selection_mode(GTK_SELECTION_BROWSE);
93         subtree->set_view_mode(GTK_TREE_VIEW_ITEM);
94         subtree->set_view_lines(false);
95         entry = ldap_first_entry(l_i, r_i);
96         while (entry != NULL) {
97                 s = ldap_explode_dn(ldap_get_dn(l_i, entry), 1);
98                 subtreeresult = make_tree(p, l_i, ldap_get_dn(l_i, entry));
99                 subtreeitem = new Gtk_LdapTreeItem(*subtreeresult->treeitem);
100         //      printf("inserting %s into %s", s[0], c);
101                 subtree->append(*subtreeitem);
102                 if (subtreeresult->tree != NULL) {
103         //              printf(".");
104                         subsubtree = new Gtk_Tree(*subtreeresult->tree);
105         //              printf(".");
106                         subtreeitem->set_subtree(*subsubtree);
107         //              printf(".");
108                 }
109                 subtreeitem->show();
110         //      printf("\n");
111                 entry = ldap_next_entry(l_i, entry);
112         }
113 //      treeitem->setType(BRANCH_NODE);
114         treeresult->treeitem = new Gtk_LdapTreeItem(*treeitem);
115         treeresult->tree = new Gtk_Tree(*subtree);
116         return treeresult;
117 }