svn commit: samba r2920 - in branches/SAMBA_4_0/source/gtk: common tools

jelmer at samba.org jelmer at samba.org
Mon Oct 11 20:06:43 GMT 2004


Author: jelmer
Date: 2004-10-11 20:06:42 +0000 (Mon, 11 Oct 2004)
New Revision: 2920

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/gtk&rev=2920&nolog=1

Log:
Support passing a handle to a SAMR pipe to a RPC Binding or Select 
Host dialog so that one can select a domain from the list of known 
domains.

Modified:
   branches/SAMBA_4_0/source/gtk/common/gtk-smb.c
   branches/SAMBA_4_0/source/gtk/common/gtk-smb.h
   branches/SAMBA_4_0/source/gtk/common/select.c
   branches/SAMBA_4_0/source/gtk/common/select.h
   branches/SAMBA_4_0/source/gtk/tools/gregedit.c
   branches/SAMBA_4_0/source/gtk/tools/gwcrontab.c
   branches/SAMBA_4_0/source/gtk/tools/gwsam.c


Changeset:
Modified: branches/SAMBA_4_0/source/gtk/common/gtk-smb.c
===================================================================
--- branches/SAMBA_4_0/source/gtk/common/gtk-smb.c	2004-10-11 20:04:05 UTC (rev 2919)
+++ branches/SAMBA_4_0/source/gtk/common/gtk-smb.c	2004-10-11 20:06:42 UTC (rev 2920)
@@ -47,7 +47,7 @@
 static void on_browse_activate  (GtkButton     *button,  gpointer         user_data)
 {
 	GtkRpcBindingDialog *rbd = user_data;
-	GtkWidget *shd = gtk_select_host_dialog_new(TRUE);
+	GtkWidget *shd = gtk_select_host_dialog_new(rbd->sam_pipe, TRUE);
 	if(gtk_dialog_run(GTK_DIALOG(shd)) == GTK_RESPONSE_ACCEPT) {
 		gtk_entry_set_text(GTK_ENTRY(rbd->entry_host), gtk_select_host_dialog_get_host(GTK_SELECT_HOST_DIALOG(shd)));
 	}
@@ -138,13 +138,16 @@
 	gtk_widget_show (gtk_rpc_binding_dialog->entry_host);
 	gtk_box_pack_start (GTK_BOX (hbox1), gtk_rpc_binding_dialog->entry_host, TRUE, TRUE, 0);
 
- 	btn_browse = gtk_button_new_with_label ("Browse");
-  	gtk_widget_show (btn_browse);
-  	gtk_box_pack_start (GTK_BOX (hbox1), btn_browse, TRUE, TRUE, 0);
+	if(gtk_rpc_binding_dialog->sam_pipe)
+	{
+		btn_browse = gtk_button_new_with_label ("Browse");
+		gtk_widget_show (btn_browse);
+		gtk_box_pack_start (GTK_BOX (hbox1), btn_browse, TRUE, TRUE, 0);
 
-    g_signal_connect ((gpointer) btn_browse, "pressed",
-               G_CALLBACK (on_browse_activate),
-               gtk_rpc_binding_dialog);
+		g_signal_connect ((gpointer) btn_browse, "pressed",
+						  G_CALLBACK (on_browse_activate),
+						  gtk_rpc_binding_dialog);
+	}
 
 	label2 = gtk_label_new ("Host");
 	gtk_widget_show (label2);
@@ -278,9 +281,11 @@
   return mytype;
 }
 
-GtkWidget *gtk_rpc_binding_dialog_new (BOOL nocredentials)
+GtkWidget *gtk_rpc_binding_dialog_new (BOOL nocredentials, struct sam_pipe *sam_pipe)
 {
-	return GTK_WIDGET ( gtk_type_new (gtk_rpc_binding_dialog_get_type ()));
+	GtkRpcBindingDialog *d = GTK_RPC_BINDING_DIALOG ( gtk_type_new (gtk_rpc_binding_dialog_get_type ()));
+	d->sam_pipe = sam_pipe;
+	return GTK_WIDGET(d);
 }
 
 const char *gtk_rpc_binding_dialog_get_username(GtkRpcBindingDialog *d)

Modified: branches/SAMBA_4_0/source/gtk/common/gtk-smb.h
===================================================================
--- branches/SAMBA_4_0/source/gtk/common/gtk-smb.h	2004-10-11 20:04:05 UTC (rev 2919)
+++ branches/SAMBA_4_0/source/gtk/common/gtk-smb.h	2004-10-11 20:06:42 UTC (rev 2920)
@@ -40,6 +40,7 @@
 	GtkWidget *entry_password;
 	GtkWidget *krb5_chk_button;
 	TALLOC_CTX *mem_ctx;
+	struct sam_pipe *sam_pipe;
 };
 
 typedef struct _GtkRpcBindingDialogClass GtkRpcBindingDialogClass;

Modified: branches/SAMBA_4_0/source/gtk/common/select.c
===================================================================
--- branches/SAMBA_4_0/source/gtk/common/select.c	2004-10-11 20:04:05 UTC (rev 2919)
+++ branches/SAMBA_4_0/source/gtk/common/select.c	2004-10-11 20:06:42 UTC (rev 2920)
@@ -163,7 +163,6 @@
 	} else if (r.out.sam) {
 		for (i=0;i<r.out.sam->count;i++) {
 			GtkTreeIter iter;
-			printf("- %s\n", r.out.sam->entries[i].name.name);
 			gtk_list_store_append(d->store_domains, &iter);
 			gtk_list_store_set (d->store_domains, &iter, 0, r.out.sam->entries[i].name.name, -1);
 		}
@@ -271,7 +270,7 @@
 	return mytype;
 }
                                                                                                                              
-GtkWidget *gtk_select_host_dialog_new (BOOL nocredentials)
+GtkWidget *gtk_select_host_dialog_new (struct sam_pipe *sam_pipe, BOOL nocredentials)
 {
         return GTK_WIDGET ( gtk_type_new (gtk_select_host_dialog_get_type ()));
 }

Modified: branches/SAMBA_4_0/source/gtk/common/select.h
===================================================================
--- branches/SAMBA_4_0/source/gtk/common/select.h	2004-10-11 20:04:05 UTC (rev 2919)
+++ branches/SAMBA_4_0/source/gtk/common/select.h	2004-10-11 20:06:42 UTC (rev 2920)
@@ -45,9 +45,9 @@
 	GtkDialogClass parent_class;
 };
 
-#define GTK_SELECT_DOMAIN_DIALOG(obj)          GTK_CHECK_CAST (obj, gtk_rpc_binding_dialog_get_type (), GtkSelectDomainDialog)
-#define GTK_SELECT_DOMAIN_DIALOG_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_rpc_binding_dialog_class_get_type (), GtkSelectDomainDialogClass)
-#define IS_GTK_SELECT_DOMAIN_DIALOG(obj)       GTK_CHECK_TYPE (obj, gtk_rpc_binding_dialog_get_type ())
+#define GTK_SELECT_DOMAIN_DIALOG(obj)          GTK_CHECK_CAST (obj, gtk_select_domain_dialog_get_type (), GtkSelectDomainDialog)
+#define GTK_SELECT_DOMAIN_DIALOG_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_select_domain_dialog_class_get_type (), GtkSelectDomainDialogClass)
+#define IS_GTK_SELECT_DOMAIN_DIALOG(obj)       GTK_CHECK_TYPE (obj, gtk_select_domain_dialog_get_type ())
 
 typedef struct _GtkSelectHostDialog GtkSelectHostDialog;
 
@@ -68,9 +68,9 @@
 	GtkDialogClass parent_class;
 };
 
-#define GTK_SELECT_HOST_DIALOG(obj)          GTK_CHECK_CAST (obj, gtk_rpc_binding_dialog_get_type (), GtkSelectHostDialog)
-#define GTK_SELECT_HOST_DIALOG_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_rpc_binding_dialog_class_get_type (), GtkSelectHostDialogClass)
-#define IS_GTK_SELECT_HOST_DIALOG(obj)       GTK_CHECK_TYPE (obj, gtk_rpc_binding_dialog_get_type ())
+#define GTK_SELECT_HOST_DIALOG(obj)          GTK_CHECK_CAST (obj, gtk_select_host_dialog_get_type (), GtkSelectHostDialog)
+#define GTK_SELECT_HOST_DIALOG_CLASS(klass)  GTK_CHECK_CLASS_CAST (klass, gtk_select_host_dialog_class_get_type (), GtkSelectHostDialogClass)
+#define IS_GTK_SELECT_HOST_DIALOG(obj)       GTK_CHECK_TYPE (obj, gtk_select_host_dialog_get_type ())
 
 #endif
 

Modified: branches/SAMBA_4_0/source/gtk/tools/gregedit.c
===================================================================
--- branches/SAMBA_4_0/source/gtk/tools/gregedit.c	2004-10-11 20:04:05 UTC (rev 2919)
+++ branches/SAMBA_4_0/source/gtk/tools/gregedit.c	2004-10-11 20:06:42 UTC (rev 2920)
@@ -158,7 +158,7 @@
 	char *credentials;
 	const char *location;
 	char *tmp;
-	GtkWidget *rpcwin = GTK_WIDGET(gtk_rpc_binding_dialog_new(TRUE));
+	GtkWidget *rpcwin = GTK_WIDGET(gtk_rpc_binding_dialog_new(TRUE, NULL));
 	gint result = gtk_dialog_run(GTK_DIALOG(rpcwin));
 	WERROR error;
 	

Modified: branches/SAMBA_4_0/source/gtk/tools/gwcrontab.c
===================================================================
--- branches/SAMBA_4_0/source/gtk/tools/gwcrontab.c	2004-10-11 20:04:05 UTC (rev 2919)
+++ branches/SAMBA_4_0/source/gtk/tools/gwcrontab.c	2004-10-11 20:06:42 UTC (rev 2920)
@@ -86,7 +86,7 @@
 	NTSTATUS status;
 	gint result;
 
-	d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(FALSE));
+	d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(FALSE, NULL));
     result = gtk_dialog_run(GTK_DIALOG(d));
 	switch(result) {
 		case GTK_RESPONSE_ACCEPT:

Modified: branches/SAMBA_4_0/source/gtk/tools/gwsam.c
===================================================================
--- branches/SAMBA_4_0/source/gtk/tools/gwsam.c	2004-10-11 20:04:05 UTC (rev 2919)
+++ branches/SAMBA_4_0/source/gtk/tools/gwsam.c	2004-10-11 20:06:42 UTC (rev 2920)
@@ -27,6 +27,7 @@
 struct policy_handle domain_handle;
 GtkWidget *mainwin;
 GtkWidget *seldomain;
+GtkWidget *mnu_disconnect;
 
 void update_grouplist(void)
 {
@@ -112,7 +113,7 @@
 	TALLOC_CTX *mem_ctx;
 	gint result;
 
-	d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(FALSE));
+	d = GTK_RPC_BINDING_DIALOG(gtk_rpc_binding_dialog_new(FALSE, NULL));
 	result = gtk_dialog_run(GTK_DIALOG(d));
 	switch(result) {
 	case GTK_RESPONSE_ACCEPT:
@@ -137,18 +138,27 @@
 
 	mem_ctx = talloc_init("connect");                                                                                                 
 	status = dcerpc_samr_Connect(sam_pipe, mem_ctx, &r);
-	talloc_destroy(mem_ctx);
 	if (!NT_STATUS_IS_OK(status)) {
 		gtk_show_ntstatus(mainwin, status);
 		sam_pipe = NULL;
 		gtk_widget_destroy(GTK_WIDGET(d));
+		talloc_destroy(mem_ctx);
 		return;
 	}
 
 	gtk_widget_set_sensitive (seldomain, TRUE);
+	gtk_widget_set_sensitive (mnu_disconnect, TRUE);
+	gtk_window_set_title (GTK_WINDOW (mainwin), talloc_asprintf(mem_ctx, "User Manager - Connected to %s", gtk_rpc_binding_dialog_get_host(d)));
 	gtk_widget_destroy(GTK_WIDGET(d));
+	talloc_destroy(mem_ctx);
 }
 
+void on_disconnect_activate (GtkMenuItem *menuitem, gpointer user_data)
+{
+	gtk_widget_set_sensitive (mnu_disconnect, FALSE);
+	gtk_window_set_title (GTK_WINDOW (mainwin), "User Manager");
+}
+
 void
 on_quit_activate                      (GtkMenuItem     *menuitem,
 									   gpointer         user_data)
@@ -265,6 +275,11 @@
 	gtk_widget_show (mnu_connect);
 	gtk_container_add (GTK_CONTAINER (menuitem1_menu), mnu_connect);
 
+	mnu_disconnect = gtk_menu_item_new_with_mnemonic ("_Disconnect");
+	gtk_widget_show (mnu_disconnect);
+	gtk_widget_set_sensitive (mnu_disconnect, FALSE);
+	gtk_container_add (GTK_CONTAINER (menuitem1_menu), mnu_disconnect);
+
 	seldomain = gtk_menu_item_new_with_mnemonic("_Select Domain");
 	gtk_widget_show(seldomain);
 	gtk_widget_set_sensitive (seldomain, FALSE);
@@ -378,6 +393,9 @@
 	g_signal_connect ((gpointer) mnu_connect, "activate",
 					  G_CALLBACK (on_connect_activate),
 					  NULL);
+	g_signal_connect ((gpointer) mnu_disconnect, "activate",
+					  G_CALLBACK (on_disconnect_activate),
+					  NULL);
 	g_signal_connect ((gpointer) quit, "activate",
 					  G_CALLBACK (on_quit_activate),
 					  NULL);



More information about the samba-cvs mailing list