r17163 - gnucash/branches/gda-dev2/src/gnome-utils - 1) Fix problem in gnc-main-window.c routine

Phil Longstaff plongstaff at cvs.gnucash.org
Mon May 19 12:34:06 EDT 2008


Author: plongstaff
Date: 2008-05-19 12:34:05 -0400 (Mon, 19 May 2008)
New Revision: 17163
Trac: http://svn.gnucash.org/trac/changeset/17163

Modified:
   gnucash/branches/gda-dev2/src/gnome-utils/dialog-database-connection.c
   gnucash/branches/gda-dev2/src/gnome-utils/glade/dialog-database-connection.glade
   gnucash/branches/gda-dev2/src/gnome-utils/gnc-main-window.c
Log:
1) Fix problem in gnc-main-window.c routine
gnc_main_window_generate_title() where NULL was passed to
gtk_action_set_sensitive() and was being recorded in the log.
2) Replace OK button on the database connection dialog with LOAD and
SAVE buttons.  The LOAD button will replace the current file with the DB
contents, while the SAVE button will replace the DB contents with the
current file contents.  At this point, SAVE will still wipe out the DB
contents without checking whether it is a valid GC database.



Modified: gnucash/branches/gda-dev2/src/gnome-utils/dialog-database-connection.c
===================================================================
--- gnucash/branches/gda-dev2/src/gnome-utils/dialog-database-connection.c	2008-05-18 22:20:21 UTC (rev 17162)
+++ gnucash/branches/gda-dev2/src/gnome-utils/dialog-database-connection.c	2008-05-19 16:34:05 UTC (rev 17163)
@@ -38,7 +38,11 @@
 #include "gnc-file.h"
 #include "gnc-session.h"
 
+static QofLogModule log_module = GNC_MOD_GUI;
+
 void gnc_database_connection_response_cb( GtkDialog *, gint, GtkDialog * );
+#define PB_LOAD_RESPONSE 1000
+#define PB_SAVE_RESPONSE 1001
 
 struct DatabaseConnectionWindow
 {
@@ -48,31 +52,29 @@
   GtkWidget* rb_general;
   GtkWidget* cb_predefined;
   GtkWidget* tf_general;
-
-  /* The final settings */
 };
 
-static void
-save_to_db( const gchar* url )
+static gchar*
+geturl( struct DatabaseConnectionWindow* dcw )
 {
-	gnc_file_do_save_as( url );
-}
+	gchar* url;
 
-static void
-discard_and_open_db( const gchar* url )
-{
-  	QofBook* current_book;
+	if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(dcw->rb_predefined) ) ) {
+		/* Selection from predefined list */
+		url = g_strdup_printf( "gda://@%s", gtk_combo_box_get_active_text( GTK_COMBO_BOX(dcw->cb_predefined) ) );
 
-    current_book = qof_session_get_book( gnc_get_current_session() );
-	qof_book_mark_saved( current_book );
-	gnc_file_open_file( url );
+	} else {
+		/* Selection using entered info */
+		url = g_strdup_printf( "gdk://%s", gtk_entry_get_text( GTK_ENTRY(dcw->tf_general) ) );
+	}
+
+	return url;
 }
 
 void
 gnc_database_connection_response_cb(GtkDialog *dialog, gint response, GtkDialog *unused)
 {
     struct DatabaseConnectionWindow* dcw;
-	gchar* url;
 
     g_return_if_fail( dialog != NULL );
 
@@ -84,22 +86,25 @@
         gnc_gnome_help( HF_HELP, HL_GLOBPREFS );
         break;
   
-    case GTK_RESPONSE_OK:
-		if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(dcw->rb_predefined) ) ) {
-			/* Selection from predefined list */
-			url = g_strdup_printf( "gda://@%s", gtk_combo_box_get_active_text( GTK_COMBO_BOX(dcw->cb_predefined) ) );
+    case PB_LOAD_RESPONSE:
+		gnc_file_open_file( geturl( dcw ) );
+		break;
 
-		} else {
-			/* Selection using entered info */
-			url = g_strdup_printf( "gdk://%s", gtk_entry_get_text( GTK_ENTRY(dcw->tf_general) ) );
-		}
-		save_to_db( url );
+    case PB_SAVE_RESPONSE:
+		gnc_file_do_save_as( geturl( dcw ) );
+		break;
 
-      /* FALLTHROUGH */ 
+	case GTK_RESPONSE_CANCEL:
+		break;
+
     default:
-        gtk_widget_destroy( GTK_WIDGET(dialog) );
+        PERR( "Invalid response" );
         break;
     }
+
+	if( response != GTK_RESPONSE_HELP ) {
+        gtk_widget_destroy( GTK_WIDGET(dialog) );
+	}
 }
 
 void gnc_ui_database_connection( void )
@@ -107,9 +112,10 @@
     struct DatabaseConnectionWindow *dcw;
     GladeXML* xml;
     GtkWidget* box;
-	GList* ds_list;
 	GList* ds_node;
-	int n_rows;
+	GdaDataModel* dsns;
+	gint numDsns;
+	gint i;
 
     dcw = g_new0(struct DatabaseConnectionWindow, 1);
     g_return_if_fail(dcw);
@@ -121,17 +127,14 @@
     /* Predefined */
     dcw->rb_predefined = glade_xml_get_widget( xml, "rb_predefined" );
 	box = glade_xml_get_widget( xml, "predefined_connection_box" );
-//    dcw->cb_predefined = glade_xml_get_widget( xml, "cb_predefined_db_connections" );
 	dcw->cb_predefined = gtk_combo_box_new_text();
-	ds_list = gda_config_get_data_source_list();
-	n_rows = 0;
-	for( ds_node = ds_list; ds_node != NULL; ds_node = ds_node->next ) {
-		GdaDataSourceInfo* ds_info = ds_node->data;
+	numDsns = gda_config_get_nb_dsn();
+	dsns = gda_config_list_dsn();
+	for( i = 0; i < numDsns; i++ ) {
+		GdaDataSourceInfo* ds_info = gda_config_get_dsn_at_index( i );
 		gtk_combo_box_append_text( GTK_COMBO_BOX(dcw->cb_predefined), g_strdup(ds_info->name) );
-		n_rows++;
 	}
-	gda_config_free_data_source_list( ds_list );
-	if( n_rows != 0 ) {
+	if( numDsns != 0 ) {
 		gtk_combo_box_set_active( GTK_COMBO_BOX(dcw->cb_predefined), 0 );
 	} else {
 		gtk_widget_set_sensitive( dcw->rb_predefined, FALSE );

Modified: gnucash/branches/gda-dev2/src/gnome-utils/glade/dialog-database-connection.glade
===================================================================
--- gnucash/branches/gda-dev2/src/gnome-utils/glade/dialog-database-connection.glade	2008-05-18 22:20:21 UTC (rev 17162)
+++ gnucash/branches/gda-dev2/src/gnome-utils/glade/dialog-database-connection.glade	2008-05-19 16:34:05 UTC (rev 17163)
@@ -41,7 +41,7 @@
 	      <property name="use_stock">True</property>
 	      <property name="relief">GTK_RELIEF_NORMAL</property>
 	      <property name="focus_on_click">True</property>
-		  <property name="response_id">-11</property>
+	      <property name="response_id">-11</property>
 	    </widget>
 	  </child>
 
@@ -54,29 +54,44 @@
 	      <property name="use_stock">True</property>
 	      <property name="relief">GTK_RELIEF_NORMAL</property>
 	      <property name="focus_on_click">True</property>
-		  <property name="response_id">-6</property>
+	      <property name="response_id">-6</property>
 	    </widget>
 	  </child>
 
 	  <child>
-	    <widget class="GtkButton" id="pb_ok">
+	    <widget class="GtkButton" id="pb_load">
 	      <property name="visible">True</property>
 	      <property name="can_default">True</property>
 	      <property name="can_focus">True</property>
-	      <property name="label">gtk-ok</property>
-	      <property name="use_stock">True</property>
+	      <property name="label" translatable="yes">_Load</property>
+	      <property name="use_underline">True</property>
 	      <property name="relief">GTK_RELIEF_NORMAL</property>
 	      <property name="focus_on_click">True</property>
-		  <property name="response_id">-5</property>
+	      <property name="response_id">1000</property>
 	    </widget>
 	  </child>
+
+	  <child>
+	    <widget class="GtkButton" id="pb_save">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label" translatable="yes">_Save</property>
+	      <property name="use_underline">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">1001</property>
+	    </widget>
+	  </child>
 	</widget>
 	<packing>
 	  <property name="padding">0</property>
 	  <property name="expand">True</property>
 	  <property name="fill">True</property>
+	  <property name="pack_type">GTK_PACK_END</property>
 	</packing>
       </child>
+
       <child>
 	<widget class="GtkTable" id="table1">
 	  <property name="visible">True</property>

Modified: gnucash/branches/gda-dev2/src/gnome-utils/gnc-main-window.c
===================================================================
--- gnucash/branches/gda-dev2/src/gnome-utils/gnc-main-window.c	2008-05-18 22:20:21 UTC (rev 17162)
+++ gnucash/branches/gda-dev2/src/gnome-utils/gnc-main-window.c	2008-05-19 16:34:05 UTC (rev 17163)
@@ -1222,13 +1222,17 @@
 
   /* The save action is sensitive iff the book is dirty */
   action = gnc_main_window_find_action (window, "FileSaveAction");
-  gtk_action_set_sensitive(action, FALSE);
+  if (action != NULL) {
+  	gtk_action_set_sensitive(action, FALSE);
+  }
   if (gnc_current_session_exist()) {
       filename = gnc_session_get_url (gnc_get_current_session ());
       book = gnc_get_current_book();
       if (qof_instance_is_dirty(QOF_INSTANCE(book))) {
 		dirty = "*";
-		gtk_action_set_sensitive(action, TRUE);
+		if (action != NULL) {
+		  gtk_action_set_sensitive(action, TRUE);
+		}
 	  }
   }
 



More information about the gnucash-changes mailing list