inital gtk2 patch
[claws.git] / src / editldap_basedn.c
index aabb27fcd83c2e1bb0f58eaa152e2ac0e9c3ef48..75580077c418e01f4b95242556b0a7299fec7a9e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2001 Match Grun
+ * Copyright (C) 2001-2003 Match Grun
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 
 #include "intl.h"
 #include "prefs_common.h"
-#include "syldap.h"
+#include "ldaputil.h"
+#include "mgutils.h"
+#include "gtkutils.h"
+#include "manage_window.h"
 
 static struct _LDAPEdit_basedn {
        GtkWidget *window;
@@ -61,7 +64,7 @@ static gboolean ldapedit_basedn_bad_server;
 /*
 * Edit functions.
 */
-void edit_ldap_bdn_status_show( gchar *msg ) {
+static void edit_ldap_bdn_status_show( gchar *msg ) {
        if( ldapedit_basedn.statusbar != NULL ) {
                gtk_statusbar_pop( GTK_STATUSBAR(ldapedit_basedn.statusbar), ldapedit_basedn.status_cid );
                if( msg ) {
@@ -76,11 +79,12 @@ static gint edit_ldap_bdn_delete_event( GtkWidget *widget, GdkEventAny *event, g
        return TRUE;
 }
 
-static void edit_ldap_bdn_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
+static gboolean edit_ldap_bdn_key_pressed( GtkWidget *widget, GdkEventKey *event, gboolean *cancelled ) {
        if (event && event->keyval == GDK_Escape) {
                ldapedit_basedn_cancelled = TRUE;
                gtk_main_quit();
        }
+       return FALSE;
 }
 
 static void edit_ldap_bdn_ok( GtkWidget *widget, gboolean *cancelled ) {
@@ -94,57 +98,55 @@ static void edit_ldap_bdn_cancel( GtkWidget *widget, gboolean *cancelled ) {
 }
 
 static void edit_ldap_bdn_list_select( GtkCList *clist, gint row, gint column, GdkEvent *event, gpointer data ) {
-       gchar **text;
-       if( gtk_clist_get_text( clist, row, 0, text ) ) {
-               if( *text ) {
-                       gtk_entry_set_text(GTK_ENTRY(ldapedit_basedn.basedn_entry), *text );
+       gchar *text = NULL;
+
+       if( gtk_clist_get_text( clist, row, 0, &text ) ) {
+               if( text ) {
+                       gtk_entry_set_text(GTK_ENTRY(ldapedit_basedn.basedn_entry), text );
                }
        }
 }
 
-static void edit_ldap_bdn_list_button( GtkCList *clist, GdkEventButton *event, gpointer data ) {
-       if( ! event ) return;
+static gboolean edit_ldap_bdn_list_button( GtkCList *clist, GdkEventButton *event, gpointer data ) {
+       if( ! event ) return FALSE;
        if( event->button == 1 ) {
                if( event->type == GDK_2BUTTON_PRESS ) {
                        ldapedit_basedn_cancelled = FALSE;
                        gtk_main_quit();
                }
        }
+       return FALSE;
 }
 
-static void edit_ldap_bdn_create() {
+static void edit_ldap_bdn_create(void) {
        GtkWidget *window;
        GtkWidget *vbox;
        GtkWidget *table;
        GtkWidget *label;
        GtkWidget *host_label;
        GtkWidget *port_label;
-       GtkWidget *basedn_label;
        GtkWidget *basedn_list;
        GtkWidget *vlbox;
        GtkWidget *lwindow;
        GtkWidget *basedn_entry;
-       GtkWidget *hlbox;
        GtkWidget *hbbox;
        GtkWidget *hsep;
        GtkWidget *ok_btn;
        GtkWidget *cancel_btn;
-       GtkWidget *check_btn;
-       GtkWidget *file_btn;
        GtkWidget *hsbox;
        GtkWidget *statusbar;
        gint top;
 
-       window = gtk_window_new(GTK_WINDOW_DIALOG);
-       gtk_widget_set_usize(window, 300, 270);
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       gtk_widget_set_size_request(window, 300, 270);
        gtk_container_set_border_width(GTK_CONTAINER(window), 0);
        gtk_window_set_title(GTK_WINDOW(window), _("Edit LDAP - Select Search Base"));
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_modal(GTK_WINDOW(window), TRUE); 
-       gtk_signal_connect(GTK_OBJECT(window), "delete_event",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_delete_event), NULL );
-       gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_key_pressed), NULL );
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(edit_ldap_bdn_delete_event), NULL );
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(edit_ldap_bdn_key_pressed), NULL );
 
        vbox = gtk_vbox_new(FALSE, 8);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -156,7 +158,7 @@ static void edit_ldap_bdn_create() {
        gtk_table_set_row_spacings(GTK_TABLE(table), 8);
        gtk_table_set_col_spacings(GTK_TABLE(table), 8);
 
-       // First row
+       /* First row */
        top = 0;
        label = gtk_label_new(_("Hostname"));
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0);
@@ -166,7 +168,7 @@ static void edit_ldap_bdn_create() {
        gtk_table_attach(GTK_TABLE(table), host_label, 1, 2, top, (top + 1), GTK_FILL, 0, 0, 0);
        gtk_misc_set_alignment(GTK_MISC(host_label), 0, 0.5);
 
-       // Second row
+       /* Second row */
        top = 1;
        label = gtk_label_new(_("Port"));
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0);
@@ -176,7 +178,7 @@ static void edit_ldap_bdn_create() {
        gtk_table_attach(GTK_TABLE(table), port_label, 1, 2, top, (top + 1), GTK_FILL, 0, 0, 0);
        gtk_misc_set_alignment(GTK_MISC(port_label), 0, 0.5);
 
-       // Third row
+       /* Third row */
        top = 2;
        label = gtk_label_new(_("Search Base"));
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, top, (top + 1), GTK_FILL, 0, 0, 0);
@@ -185,7 +187,7 @@ static void edit_ldap_bdn_create() {
        basedn_entry = gtk_entry_new();
        gtk_table_attach(GTK_TABLE(table), basedn_entry, 1, 2, top, (top + 1), GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
 
-       // Basedn list
+       /* Basedn list */
        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 );
@@ -202,13 +204,13 @@ static void edit_ldap_bdn_create() {
        gtk_clist_set_column_title( GTK_CLIST(basedn_list), 0, _( "Available Search Base(s)" ) );
        gtk_clist_set_selection_mode(GTK_CLIST(basedn_list), GTK_SELECTION_BROWSE);
 
-       // Status line
+       /* Status line */
        hsbox = gtk_hbox_new(FALSE, 0);
        gtk_box_pack_end(GTK_BOX(vbox), hsbox, FALSE, FALSE, BORDER_WIDTH);
        statusbar = gtk_statusbar_new();
        gtk_box_pack_start(GTK_BOX(hsbox), statusbar, TRUE, TRUE, BORDER_WIDTH);
 
-       // Button panel
+       /* Button panel */
        gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
                                &cancel_btn, _("Cancel"), NULL, NULL);
        gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
@@ -218,14 +220,14 @@ static void edit_ldap_bdn_create() {
        hsep = gtk_hseparator_new();
        gtk_box_pack_end(GTK_BOX(vbox), hsep, FALSE, FALSE, 0);
 
-       gtk_signal_connect(GTK_OBJECT(ok_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_ok), NULL);
-       gtk_signal_connect(GTK_OBJECT(cancel_btn), "clicked",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_cancel), NULL);
-       gtk_signal_connect(GTK_OBJECT(basedn_list), "select_row",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_list_select), NULL);
-       gtk_signal_connect(GTK_OBJECT(basedn_list), "button_press_event",
-                          GTK_SIGNAL_FUNC(edit_ldap_bdn_list_button), NULL);
+       g_signal_connect(G_OBJECT(ok_btn), "clicked",
+                        G_CALLBACK(edit_ldap_bdn_ok), NULL);
+       g_signal_connect(G_OBJECT(cancel_btn), "clicked",
+                        G_CALLBACK(edit_ldap_bdn_cancel), NULL);
+       g_signal_connect(G_OBJECT(basedn_list), "select_row",
+                        G_CALLBACK(edit_ldap_bdn_list_select), NULL);
+       g_signal_connect(G_OBJECT(basedn_list), "button_press_event",
+                        G_CALLBACK(edit_ldap_bdn_list_button), NULL);
 
        gtk_widget_show_all(vbox);
 
@@ -237,18 +239,23 @@ static void edit_ldap_bdn_create() {
        ldapedit_basedn.ok_btn     = ok_btn;
        ldapedit_basedn.cancel_btn = cancel_btn;
        ldapedit_basedn.statusbar  = statusbar;
-       ldapedit_basedn.status_cid = gtk_statusbar_get_context_id( GTK_STATUSBAR(statusbar), "Edit LDAP Select Base DN" );
+       ldapedit_basedn.status_cid =
+               gtk_statusbar_get_context_id(
+                       GTK_STATUSBAR(statusbar), "Edit LDAP Select Base DN" );
 }
 
-void edit_ldap_bdn_load_data( const gchar *hostName, const gint iPort, const gint tov, const gchar* bindDN,
-              const gchar *bindPW ) {
+void edit_ldap_bdn_load_data(
+       const gchar *hostName, const gint iPort, const gint tov,
+       const gchar* bindDN, const gchar *bindPW )
+{
        gchar *sHost;
        gchar *sMsg = NULL;
        gchar sPort[20];
        gboolean flgConn;
        gboolean flgDN;
+       GList *baseDN = NULL;
 
-       edit_ldap_status_show( "" );
+       edit_ldap_bdn_status_show( "" );
        gtk_clist_clear(GTK_CLIST(ldapedit_basedn.basedn_list));
        ldapedit_basedn_bad_server = TRUE;
        flgConn = flgDN = FALSE;
@@ -257,23 +264,22 @@ void edit_ldap_bdn_load_data( const gchar *hostName, const gint iPort, const gin
        gtk_label_set_text(GTK_LABEL(ldapedit_basedn.host_label), hostName);
        gtk_label_set_text(GTK_LABEL(ldapedit_basedn.port_label), sPort);
        if( *sHost != '\0' ) {
-               // Test connection to server
-               if( syldap_test_connect_s( sHost, iPort ) ) {
-                       // Attempt to read base DN
-                       GList *baseDN = syldap_read_basedn_s( sHost, iPort, bindDN, bindPW, tov );
+               /* Test connection to server */
+               if( ldaputil_test_connect( sHost, iPort ) ) {
+                       /* Attempt to read base DN */
+                       baseDN = ldaputil_read_basedn( sHost, iPort, bindDN, bindPW, tov );
                        if( baseDN ) {
                                GList *node = baseDN;
-                               gchar *sBase[2];
-                               sBase[1] = NULL;
+                               gchar *text[2] = { NULL, NULL };
+
                                while( node ) {
-                                       sBase[0] = g_strdup( node->data );
-                                       gtk_clist_append(GTK_CLIST(ldapedit_basedn.basedn_list), sBase);
+                                       text[0] = (gchar *)node->data;
+                                       gtk_clist_append(GTK_CLIST(ldapedit_basedn.basedn_list), text);
                                        node = g_list_next( node );
                                        flgDN = TRUE;
                                }
                                mgu_free_dlist( baseDN );
                                baseDN = node = NULL;
-                               sBase[0] = NULL;
                        }
                        ldapedit_basedn_bad_server = FALSE;
                        flgConn = TRUE;
@@ -281,7 +287,7 @@ void edit_ldap_bdn_load_data( const gchar *hostName, const gint iPort, const gin
        }
        g_free( sHost );
 
-       // Display appropriate message
+       /* Display appropriate message */
        if( flgConn ) {
                if( ! flgDN ) {
                        sMsg = _( "Could not read Search Base(s) from server - please set manually" );
@@ -307,18 +313,14 @@ gchar *edit_ldap_basedn_selection( const gchar *hostName, const gint port, gchar
        edit_ldap_bdn_load_data( hostName, port, tov, bindDN, bindPW );
        gtk_widget_show(ldapedit_basedn.window);
 
-//     sprintf( sPort, "%d", port );
-//     gtk_label_set_text(GTK_LABEL(ldapedit_basedn.host_label), hostName);
-//     gtk_label_set_text(GTK_LABEL(ldapedit_basedn.port_label), sPort);
        gtk_entry_set_text(GTK_ENTRY(ldapedit_basedn.basedn_entry), baseDN);
 
        gtk_main();
        gtk_widget_hide(ldapedit_basedn.window);
        if( ldapedit_basedn_cancelled ) return NULL;
-//     if( cancelled == TRUE ) return NULL;
        if( ldapedit_basedn_bad_server ) return NULL;
 
-       retVal = g_strdup( gtk_editable_get_chars( GTK_EDITABLE(ldapedit_basedn.basedn_entry), 0, -1 ) );
+       retVal = gtk_editable_get_chars( GTK_EDITABLE(ldapedit_basedn.basedn_entry), 0, -1 );
        g_strchomp( retVal ); g_strchug( retVal );
        if( *retVal == '\0' ) {
                g_free( retVal );