Oh, I forgot the diff.


-- 
Daniel Wagner
email: [EMAIL PROTECTED]

GnuPG: 1024D/DCDE890A (public key available on any keyserver)
=== cd /usr/src/gnome/glade/glade/gnome-db/
=== cvs diff -u gnomedbbrowser.c

Index: gnomedbbrowser.c
===================================================================
RCS file: /cvs/gnome/glade/glade/gnome-db/gnomedbbrowser.c,v
retrieving revision 1.2
diff -u -r1.2 gnomedbbrowser.c
--- gnomedbbrowser.c	2000/08/03 11:46:47	1.2
+++ gnomedbbrowser.c	2001/02/18 18:38:50
@@ -30,6 +30,15 @@
  */
 static GbWidget gbwidget;
 
+static gchar *GdaName = "GnomeDbBrowser::gda_name";
+static gchar *UserName = "GnomeDbBrowser::user_name";
+static gchar *Password = "GnomeDbBrowser::password";
+
+static void show_gnome_db_browser_dialog (GbWidgetNewData * data);
+static void on_gnome_db_browser_dialog_ok (GtkWidget * widget,
+				   GbWidgetNewData * data);
+static void on_gnome_db_browser_dialog_destroy (GtkWidget * widget,
+					GbWidgetNewData * data);
 
 
 /******
@@ -47,46 +56,118 @@
 gb_gnome_db_browser_new (GbWidgetNewData *data)
 {
   GtkWidget *widget;
-  GnomeDbBrowser *brw;
-
-  widget = gnome_db_browser_new (NULL);
-  brw = GNOME_DB_BROWSER (widget);
+ 
+  if (data->action == GB_LOADING)
+    {
+      widget = gnome_db_browser_new (NULL); /* FIX ME */
+      return widget;
+    }
+  else 
+    {
+      show_gnome_db_browser_dialog (data);
+      return NULL;
+    }
+}
 
-  /* Disconnect the toggle button signals, since they cause problems. */
-  gtk_signal_disconnect_by_data (GTK_OBJECT (brw->tables_button), brw);
-  gtk_signal_disconnect_by_data (GTK_OBJECT (brw->views_button), brw);
-  gtk_signal_disconnect_by_data (GTK_OBJECT (brw->procs_button), brw);
-  gtk_signal_disconnect_by_data (GTK_OBJECT (brw->types_button), brw);
+static void
+show_gnome_db_browser_dialog (GbWidgetNewData * data)
+{
+  GtkWidget *dialog, *vbox, *hbox, *login;
+  
+  dialog = glade_util_create_dialog(_("New GnomeDb Browser"), data->parent, 
+				    on_gnome_db_browser_dialog_ok, data, &vbox);
+  gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
+		      GTK_SIGNAL_FUNC (on_gnome_db_browser_dialog_destroy), data);
+  
+  hbox = gtk_hbox_new (FALSE, 5);
+  gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 5);
+  gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
+  gtk_widget_show (hbox);
+
+  login = gnome_db_login_new (NULL, NULL, NULL);
+
+  g_return_if_fail (login != NULL);
+  gtk_box_pack_start (GTK_BOX (hbox), login, TRUE, TRUE, 5);
+  gtk_widget_show (login);
 
-  return widget;
+  gtk_widget_show (dialog);
+  gtk_grab_add (dialog);
 }
 
+static void
+on_gnome_db_browser_dialog_ok (GtkWidget * widget, GbWidgetNewData * data)
+{
+  GtkWidget *new_widget, *window;
+  GnomeDbLogin *login;
+  GList *widget_list;
+  Gda_Connection *cnc;
 
+  window = gtk_widget_get_toplevel (widget);
 
+  if (gb_widget_can_finish_new (data))
+    {
+      for (widget_list = gtk_container_children(GTK_CONTAINER(widget)); 
+	   widget_list != NULL; widget_list = widget_list->next)
+	{
+	  if (GNOME_DB_IS_LOGIN(widget_list->data)) 
+	    {
+	      login = GNOME_DB_LOGIN(widget_list->data);
+	    }
+	}
+      g_list_free(widget_list);
+      
+      g_return_if_fail (login != NULL);
+      
+      cnc = gda_connection_new(bonobo_orb());
+      g_return_if_fail (cnc != NULL);
+      gda_connection_open(cnc, 
+			  gnome_db_login_get_gda_name(login), 
+			  gnome_db_login_get_username(login), 
+			  gnome_db_login_get_password(login));
+
+      new_widget = gnome_db_browser_new (cnc); 
+      gb_widget_initialize (new_widget, data);
+      (*data->callback) (new_widget, data);
+    }
+  gtk_widget_destroy (window);
+}
+
+static void 
+on_gnome_db_browser_dialog_destroy (GtkWidget * widget,
+				    GbWidgetNewData * data)
+{ 
+  gb_widget_free_new_data (data);
+  gtk_grab_remove (widget);
+}
+
 /*
  * Creates the components needed to edit the extra properties of this widget.
  */
-/*
 static void
 gb_gnome_db_browser_create_properties (GtkWidget * widget, GbWidgetCreateArgData * data)
 {
-
+  property_add_string (GdaName, _("GDA Name"), 
+		       _("Name of the GDA connection"));
+  property_add_string (UserName, _("User Name"),
+		       _("User name of the GDA connection"));
+  property_add_string (Password, _("Password"),
+		       _("Password for the GDA connection"));
 }
-*/
-
 
 
 /*
  * Gets the properties of the widget. This is used for both displaying the
  * properties in the property editor, and also for saving the properties.
  */
-/*
 static void
 gb_gnome_db_browser_get_properties (GtkWidget *widget, GbWidgetGetArgData * data)
 {
-
+  Gda_Connection *cnc;
+  cnc = gnome_db_browser_get_connection(GNOME_DB_BROWSER(widget));
+  gb_widget_output_string (data, GdaName, gda_connection_get_dsn (cnc));
+  gb_widget_output_string (data, UserName, gda_connection_get_user (cnc));
+  gb_widget_output_string (data, Password, gda_connection_get_password (cnc));
 }
-*/
 
 
 
@@ -94,28 +175,26 @@
  * Sets the properties of the widget. This is used for both applying the
  * properties changed in the property editor, and also for loading.
  */
-/*
 static void
 gb_gnome_db_browser_set_properties (GtkWidget * widget, GbWidgetSetArgData * data)
 {
+  
 
 }
-*/
 
 
 
+
 /*
  * Adds menu items to a context menu which is just about to appear!
  * Add commands to aid in editing a GnomeDbBrowser, with signals pointing to
  * other functions in this file.
  */
-/*
 static void
 gb_gnome_db_browser_create_popup_menu (GtkWidget * widget, GbWidgetCreateMenuData * data)
 {
 
 }
-*/
 
 
 
@@ -157,12 +236,10 @@
   /* Fill in any functions that this GbWidget has */
   gbwidget.gb_widget_new		= gb_gnome_db_browser_new;
   gbwidget.gb_widget_write_source	= gb_gnome_db_browser_write_source;
-/*
   gbwidget.gb_widget_create_properties	= gb_gnome_db_browser_create_properties;
   gbwidget.gb_widget_get_properties	= gb_gnome_db_browser_get_properties;
   gbwidget.gb_widget_set_properties	= gb_gnome_db_browser_set_properties;
   gbwidget.gb_widget_create_popup_menu	= gb_gnome_db_browser_create_popup_menu;
-*/
 
   return &gbwidget;
 }
=== Exit status: 1

Reply via email to