nautilus/libnautilus-private/nautilus-password-dialog.c
Ramiro Estrugo 2b631110b6 Move the nautilus-widgets classes to libnautilus-extensions.
* Makefile.am:
* components/hardware/Makefile.am:
* components/help/Makefile.am:
* components/history/Makefile.am:
* components/html/Makefile.am:
* components/loser/content/Makefile.am:
* components/loser/sidebar/Makefile.am:
* components/music/Makefile.am:
* components/notes/Makefile.am:
* components/rpmview/Makefile.am:
* components/sample/Makefile.am:
* components/services/startup/nautilus-view/Makefile.am:
* components/services/time/nautilus-view/Makefile.am:
* components/services/trilobite/sample/nautilus-view/Makefile.am:
* components/websearch/Makefile.am:
* configure.in:
* helper-utilities/authenticate/Makefile.am:
* helper-utilities/authenticate/nautilus-authenticate.c:
* libnautilus-extensions/Makefile.am:
* libnautilus-extensions/nautilus-caption-table.c:
* libnautilus-extensions/nautilus-caption.c:
* libnautilus-extensions/nautilus-file-utilities.c:
* libnautilus-extensions/nautilus-global-preferences.c:
* libnautilus-extensions/nautilus-global-preferences.h:
* libnautilus-extensions/nautilus-lib-self-check-functions.h:
* libnautilus-extensions/nautilus-link-set.c:
* libnautilus-extensions/nautilus-link.c:
* libnautilus-extensions/nautilus-password-dialog.c:
* libnautilus-extensions/nautilus-preference.c:
(nautilus_self_check_preference):
* libnautilus-extensions/nautilus-preferences-box.c:
* libnautilus-extensions/nautilus-preferences-box.h:
* libnautilus-extensions/nautilus-preferences-dialog.c:
* libnautilus-extensions/nautilus-preferences-dialog.h:
* libnautilus-extensions/nautilus-preferences-group.c:
* libnautilus-extensions/nautilus-preferences-group.h:
* libnautilus-extensions/nautilus-preferences-item.c:
* libnautilus-extensions/nautilus-preferences-item.h:
* libnautilus-extensions/nautilus-preferences-pane.c:
* libnautilus-extensions/nautilus-preferences-pane.h:
* libnautilus-extensions/nautilus-preferences.c:
* libnautilus-extensions/nautilus-preferences.h:
* libnautilus-extensions/nautilus-radio-button-group.c:
* libnautilus-extensions/nautilus-string-picker.c:
* libnautilus-extensions/nautilus-string-picker.h:
* libnautilus-extensions/nautilus-text-caption.c:
* libnautilus-extensions/nautilus-text-caption.h:
* libnautilus-extensions/nautilus-undo-manager.c:
* libnautilus-extensions/nautilus-user-level-manager.c:
* libnautilus-extensions/nautilus-user-level-manager.h:
* libnautilus-extensions/nautilus-widgets-self-check-functions.c:
* libnautilus-extensions/nautilus-widgets-self-check-functions.h:
* libnautilus-extensions/test-nautilus-preferences.c:
* libnautilus-extensions/test-preferences.c:
* nautilus-widgets/Makefile.am:
* nautilus-widgets/nautilus-caption-table.c:
* nautilus-widgets/nautilus-caption-table.h:
* nautilus-widgets/nautilus-caption.c:
* nautilus-widgets/nautilus-caption.h:
* nautilus-widgets/nautilus-password-dialog.c:
* nautilus-widgets/nautilus-password-dialog.h:
* nautilus-widgets/nautilus-preference.c:
* nautilus-widgets/nautilus-preference.h:
* nautilus-widgets/nautilus-preferences-box.c:
* nautilus-widgets/nautilus-preferences-box.h:
* nautilus-widgets/nautilus-preferences-dialog.c:
* nautilus-widgets/nautilus-preferences-dialog.h:
* nautilus-widgets/nautilus-preferences-group.c:
* nautilus-widgets/nautilus-preferences-group.h:
* nautilus-widgets/nautilus-preferences-item.c:
* nautilus-widgets/nautilus-preferences-item.h:
* nautilus-widgets/nautilus-preferences-pane.c:
* nautilus-widgets/nautilus-preferences-pane.h:
* nautilus-widgets/nautilus-preferences.c:
* nautilus-widgets/nautilus-preferences.h:
* nautilus-widgets/nautilus-radio-button-group.c:
* nautilus-widgets/nautilus-radio-button-group.h:
* nautilus-widgets/nautilus-string-picker.c:
* nautilus-widgets/nautilus-string-picker.h:
* nautilus-widgets/nautilus-text-caption.c:
* nautilus-widgets/nautilus-text-caption.h:
* nautilus-widgets/nautilus-user-level-manager.c:
* nautilus-widgets/nautilus-user-level-manager.h:
* nautilus-widgets/nautilus-widgets-self-check-functions.c:
* nautilus-widgets/nautilus-widgets-self-check-functions.h:
* nautilus-widgets/test-nautilus-preferences.c:
* nautilus-widgets/test-nautilus-widgets.c:
* nautilus-widgets/test-preferences.c:
* src/Makefile.am:
* src/nautilus-main.c: (main):
* src/nautilus-sidebar.c:
* src/nautilus-window-menus.c:
* test/Makefile.am:
Move the nautilus-widgets classes to libnautilus-extensions.
2000-06-10 00:38:05 +00:00

360 lines
11 KiB
C

/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
/* nautilus-password-dialog.c - A use password prompting dialog widget.
Copyright (C) 1999, 2000 Eazel, Inc.
The Gnome Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Gnome Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the Gnome Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
Authors: Ramiro Estrugo <ramiro@eazel.com>
*/
#include <config.h>
#include "nautilus-password-dialog.h"
#include "nautilus-caption-table.h"
#include <libgnomeui/gnome-stock.h>
#include <gtk/gtkmain.h>
#include <gtk/gtksignal.h>
#include "nautilus-gtk-macros.h"
struct _NautilusPasswordDialogDetail
{
char *username;
char *password;
gint last_button_clicked;
gboolean readonly_username;
GtkWidget *table;
GtkWidget *blurb;
};
enum
{
ACTIVATE,
LAST_SIGNAL
};
static const char * stock_buttons[] =
{
GNOME_STOCK_BUTTON_OK,
GNOME_STOCK_BUTTON_CANCEL,
NULL
};
static const gint UNKNOWN_BUTTON = -1;
static const gint OK_BUTTON = 0;
static const gint DEFAULT_BUTTON = 0;
static const guint DEFAULT_BORDER_WIDTH = 0;
enum
{
USERNAME_ROW = 0,
PASSWORD_ROW
};
/* NautilusPasswordDialogClass methods */
static void nautilus_password_dialog_initialize_class (NautilusPasswordDialogClass *klass);
static void nautilus_password_dialog_initialize (NautilusPasswordDialog *password_dialog);
/* GtkObjectClass methods */
static void bnautilus_password_dialog_destroy (GtkObject *object);
/* GtkDialog callbacks */
static void dialog_clicked_callback (GtkWidget *widget,
gint n,
gpointer data);
static void dialog_show_callback (GtkWidget *widget,
gpointer data);
static void dialog_destroy_callback (GtkWidget *widget,
gpointer data);
/* NautilusCaptionTable callbacks */
static void caption_table_activate_callback (GtkWidget *widget,
gint entry,
gpointer data);
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusPasswordDialog,
nautilus_password_dialog,
gnome_dialog_get_type ());
static void
nautilus_password_dialog_initialize_class (NautilusPasswordDialogClass * klass)
{
GtkObjectClass * object_class;
GtkWidgetClass * widget_class;
object_class = GTK_OBJECT_CLASS(klass);
widget_class = GTK_WIDGET_CLASS(klass);
/* GtkObjectClass */
object_class->destroy = bnautilus_password_dialog_destroy;
}
static void
nautilus_password_dialog_initialize (NautilusPasswordDialog *password_dialog)
{
password_dialog->detail = g_new (NautilusPasswordDialogDetail, 1);
password_dialog->detail->username = NULL;
password_dialog->detail->password = NULL;
password_dialog->detail->last_button_clicked = UNKNOWN_BUTTON;
password_dialog->detail->readonly_username = FALSE;
password_dialog->detail->table = NULL;
}
/* GtkDialog callbacks */
static void
dialog_clicked_callback (GtkWidget *widget, gint n, gpointer data)
{
NautilusPasswordDialog *password_dialog = (NautilusPasswordDialog *) data;
g_assert (password_dialog != NULL);
password_dialog->detail->last_button_clicked = n;
gtk_grab_remove(GTK_WIDGET (password_dialog));
gtk_widget_hide(GTK_WIDGET (password_dialog));
}
static void
dialog_show_callback (GtkWidget *widget, gpointer data)
{
NautilusPasswordDialog *password_dialog = (NautilusPasswordDialog *) data;
g_assert (password_dialog != NULL);
nautilus_caption_table_entry_grab_focus (NAUTILUS_CAPTION_TABLE (password_dialog->detail->table),
PASSWORD_ROW);
}
static void
dialog_destroy_callback (GtkWidget *widget, gpointer data)
{
NautilusPasswordDialog *password_dialog = (NautilusPasswordDialog *) data;
g_assert (password_dialog != NULL);
g_free (password_dialog->detail);
gtk_grab_remove(GTK_WIDGET (password_dialog));
}
/* NautilusCaptionTable callbacks */
static void
caption_table_activate_callback (GtkWidget *widget, gint entry, gpointer data)
{
NautilusPasswordDialog *password_dialog = (NautilusPasswordDialog *) data;
g_assert (password_dialog != NULL);
if (entry == (nautilus_caption_table_get_num_rows (NAUTILUS_CAPTION_TABLE (widget)) - 1))
dialog_clicked_callback(GTK_WIDGET (password_dialog), OK_BUTTON, (gpointer) password_dialog);
}
/* Public NautilusPasswordDialog methods */
GtkWidget*
nautilus_password_dialog_new (const char *dialog_title,
const char *username,
const char *password,
gboolean readonly_username)
{
NautilusPasswordDialog *password_dialog;
password_dialog = gtk_type_new (nautilus_password_dialog_get_type ());
gnome_dialog_constructv (GNOME_DIALOG (password_dialog), dialog_title, stock_buttons);
/* Setup the dialog */
gtk_window_set_policy (GTK_WINDOW (password_dialog),
FALSE, /* allow_shrink */
TRUE, /* allow_grow */
FALSE); /* auto_shrink */
gtk_widget_realize (GTK_WIDGET (password_dialog));
gdk_window_set_functions (GTK_WIDGET (password_dialog)->window,
GDK_FUNC_ALL | GDK_FUNC_RESIZE | GDK_FUNC_MINIMIZE);
gtk_window_set_position (GTK_WINDOW (password_dialog), GTK_WIN_POS_CENTER);
gtk_container_set_border_width (GTK_CONTAINER (password_dialog),
DEFAULT_BORDER_WIDTH);
gnome_dialog_set_default (GNOME_DIALOG (password_dialog),
DEFAULT_BUTTON);
gtk_signal_connect(GTK_OBJECT (password_dialog),
"clicked",
GTK_SIGNAL_FUNC (dialog_clicked_callback),
(gpointer) password_dialog);
gtk_signal_connect(GTK_OBJECT (password_dialog),
"show",
GTK_SIGNAL_FUNC (dialog_show_callback),
(gpointer) password_dialog);
gtk_signal_connect(GTK_OBJECT (password_dialog),
"destroy",
GTK_SIGNAL_FUNC (dialog_destroy_callback),
(gpointer) password_dialog);
/* The table that holds the captions */
password_dialog->detail->table = nautilus_caption_table_new (2);
gtk_signal_connect (GTK_OBJECT (password_dialog->detail->table),
"activate",
GTK_SIGNAL_FUNC (caption_table_activate_callback),
(gpointer) password_dialog);
nautilus_caption_table_set_row_info (NAUTILUS_CAPTION_TABLE (password_dialog->detail->table),
USERNAME_ROW,
"Username:",
"",
TRUE,
TRUE);
nautilus_caption_table_set_row_info (NAUTILUS_CAPTION_TABLE (password_dialog->detail->table),
PASSWORD_ROW,
"Password:",
"",
FALSE,
FALSE);
/* Configure the GNOME_DIALOG's vbox */
g_assert (GNOME_DIALOG (password_dialog)->vbox != NULL);
gtk_box_set_spacing (GTK_BOX (GNOME_DIALOG (password_dialog)->vbox), 10);
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (password_dialog)->vbox),
password_dialog->detail->table,
TRUE, /* expand */
TRUE, /* fill */
0); /* padding */
/* Configure the table */
gtk_container_set_border_width (GTK_CONTAINER(password_dialog->detail->table),
DEFAULT_BORDER_WIDTH);
gtk_widget_show_all (GNOME_DIALOG (password_dialog)->vbox);
nautilus_password_dialog_set_username (password_dialog, username);
nautilus_password_dialog_set_password (password_dialog, password);
nautilus_password_dialog_set_readonly_username (password_dialog, readonly_username);
return GTK_WIDGET (password_dialog);
}
/* GtkObjectClass methods */
static void
bnautilus_password_dialog_destroy (GtkObject* object)
{
NautilusPasswordDialog *password_dialog;
g_return_if_fail (object != NULL);
g_return_if_fail (NAUTILUS_IS_PASSWORD_DIALOG (object));
password_dialog = NAUTILUS_PASSWORD_DIALOG (object);
if (password_dialog->detail->username)
g_free (password_dialog->detail->username);
if (password_dialog->detail->password)
g_free (password_dialog->detail->password);
}
gboolean
nautilus_password_dialog_run_and_block(NautilusPasswordDialog *password_dialog)
{
g_return_val_if_fail (password_dialog != NULL, FALSE);
g_return_val_if_fail (NAUTILUS_IS_PASSWORD_DIALOG (password_dialog), FALSE);
password_dialog->detail->last_button_clicked = UNKNOWN_BUTTON;
gtk_widget_show_all (GTK_WIDGET (password_dialog));
gtk_grab_add (GTK_WIDGET (password_dialog));
while (password_dialog->detail->last_button_clicked == UNKNOWN_BUTTON)
gtk_main_iteration ();
if (password_dialog->detail->last_button_clicked == OK_BUTTON)
return TRUE;
return FALSE;
}
void
nautilus_password_dialog_set_username (NautilusPasswordDialog *password_dialog,
const char * username)
{
g_return_if_fail (password_dialog != NULL);
g_return_if_fail (NAUTILUS_IS_PASSWORD_DIALOG (password_dialog));
nautilus_caption_table_set_entry_text (NAUTILUS_CAPTION_TABLE (password_dialog->detail->table),
USERNAME_ROW,
username);
}
void
nautilus_password_dialog_set_password (NautilusPasswordDialog *password_dialog,
const char * password)
{
g_return_if_fail (password_dialog != NULL);
g_return_if_fail (NAUTILUS_IS_PASSWORD_DIALOG (password_dialog));
nautilus_caption_table_set_entry_text (NAUTILUS_CAPTION_TABLE (password_dialog->detail->table),
PASSWORD_ROW,
password);
}
void
nautilus_password_dialog_set_readonly_username (NautilusPasswordDialog *password_dialog,
gboolean readonly)
{
g_return_if_fail (password_dialog != NULL);
g_return_if_fail (NAUTILUS_IS_PASSWORD_DIALOG (password_dialog));
nautilus_caption_table_set_entry_readonly (NAUTILUS_CAPTION_TABLE (password_dialog->detail->table),
USERNAME_ROW,
readonly);
}
char *
nautilus_password_dialog_get_username (NautilusPasswordDialog *password_dialog)
{
g_return_val_if_fail (password_dialog != NULL, NULL);
g_return_val_if_fail (NAUTILUS_IS_PASSWORD_DIALOG (password_dialog), NULL);
return nautilus_caption_table_get_entry_text (NAUTILUS_CAPTION_TABLE (password_dialog->detail->table),
USERNAME_ROW);
}
char *
nautilus_password_dialog_get_password (NautilusPasswordDialog *password_dialog)
{
g_return_val_if_fail (password_dialog != NULL, NULL);
g_return_val_if_fail (NAUTILUS_IS_PASSWORD_DIALOG (password_dialog), NULL);
return nautilus_caption_table_get_entry_text (NAUTILUS_CAPTION_TABLE (password_dialog->detail->table),
PASSWORD_ROW);
}