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)));
}
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);
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)
GtkWidget *entry_password;
GtkWidget *krb5_chk_button;
TALLOC_CTX *mem_ctx;
+ struct sam_pipe *sam_pipe;
};
typedef struct _GtkRpcBindingDialogClass GtkRpcBindingDialogClass;
} 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);
}
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 ()));
}
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;
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
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;
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:
struct policy_handle domain_handle;
GtkWidget *mainwin;
GtkWidget *seldomain;
+GtkWidget *mnu_disconnect;
void update_grouplist(void)
{
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:
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
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);
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);