glom r1812 - in trunk: . glom glom/utility_widgets/db_adddel



Author: arminb
Date: Wed Dec 17 17:52:30 2008
New Revision: 1812
URL: http://svn.gnome.org/viewvc/glom?rev=1812&view=rev

Log:
2008-12-17  Armin Burgmeier  <armin openismus com>

	* glom/base_db.cc (create_table_with_default_fields): Don't create the
	"comments" and "description" columns if the database system does not
	support removing columns.

	* glom/utility_widgets/db_adddel/glom_db_treemodel.cc
	(fill_values_if_necessary): Adapt to libgdamm API change.
	Gda::DataModelIter::move_at_row has been renamed to move_to_row.


Modified:
   trunk/ChangeLog
   trunk/glom/base_db.cc
   trunk/glom/utility_widgets/db_adddel/glom_db_treemodel.cc

Modified: trunk/glom/base_db.cc
==============================================================================
--- trunk/glom/base_db.cc	(original)
+++ trunk/glom/base_db.cc	Wed Dec 17 17:52:30 2008
@@ -1051,6 +1051,19 @@
   if(table_name.empty())
     return false;
   
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+    sharedptr<SharedConnection> sharedconnection = connect_to_server();
+#else
+    std::auto_ptr<ExceptionConnection> error;
+    sharedptr<SharedConnection> sharedconnection = connect_to_server(0, error);
+    // TODO: Rethrow?
+#endif
+  if(!sharedconnection)
+  {
+    g_warning("Base_DB::create_table_with_default_fields: connection failed.");
+    return false;
+  }
+
   bool created = false;
 
   //Primary key:
@@ -1070,20 +1083,28 @@
   type_vecFields fields;
   fields.push_back(field_primary_key);
 
-  //Description:
-  sharedptr<Field> field_description(new Field());
-  field_description->set_name("description");
-  field_description->set_title(_("Description")); //Use a translation, because the original locale will be marked as non-English if the current locale is non-English.
-  field_description->set_glom_type(Field::TYPE_TEXT);
-  fields.push_back(field_description);
-
-  //Comments:
-  sharedptr<Field> field_comments(new Field());
-  field_comments->set_name("comments");
-  field_comments->set_title(_("Comments"));
-  field_comments->set_glom_type(Field::TYPE_TEXT);
-  field_comments->m_default_formatting.set_text_format_multiline();
-  fields.push_back(field_comments);
+  // Don't create these standard fields if the database system does not
+  // support deleting them. We still create the primary key column because
+  // there are database systems that don't support adding primary key columns
+  // into existing databases (such as SQLite).
+  Glib::RefPtr<Gnome::Gda::Set> set;
+  if(sharedconnection->get_gda_connection()->get_provider()->supports_operation(sharedconnection->get_gda_connection(), Gnome::Gda::SERVER_OPERATION_DROP_COLUMN, set))
+  {
+    //Description:
+    sharedptr<Field> field_description(new Field());
+    field_description->set_name("description");
+    field_description->set_title(_("Description")); //Use a translation, because the original locale will be marked as non-English if the current locale is non-English.
+    field_description->set_glom_type(Field::TYPE_TEXT);
+    fields.push_back(field_description);
+
+    //Comments:
+    sharedptr<Field> field_comments(new Field());
+    field_comments->set_name("comments");
+    field_comments->set_title(_("Comments"));
+    field_comments->set_glom_type(Field::TYPE_TEXT);
+    field_comments->m_default_formatting.set_text_format_multiline();
+    fields.push_back(field_comments);
+  }
 
   sharedptr<TableInfo> table_info(new TableInfo());
   table_info->set_name(table_name);
@@ -1113,22 +1134,6 @@
     {
       document->add_table(table_info);
       document->set_table_fields(table_info->get_name(), fields);
-    }
-
-#ifdef GLIBMM_EXCEPTIONS_ENABLED
-    sharedptr<SharedConnection> sharedconnection = connect_to_server();
-#else
-    std::auto_ptr<ExceptionConnection> error;
-    sharedptr<SharedConnection> sharedconnection = connect_to_server(0, error);
-    // TODO: Rethrow?
-#endif
-
-    if(!sharedconnection)
-    {
-      g_warning("Base_DB::create_table_with_default_fields: connection failed.");
-    }
-    else
-    {
 
       // Update meta store, so that get_fields_for_table_from_database
       // returns the fields correctly for the new table.

Modified: trunk/glom/utility_widgets/db_adddel/glom_db_treemodel.cc
==============================================================================
--- trunk/glom/utility_widgets/db_adddel/glom_db_treemodel.cc	(original)
+++ trunk/glom/utility_widgets/db_adddel/glom_db_treemodel.cc	Wed Dec 17 17:52:30 2008
@@ -265,7 +265,7 @@
       Glib::RefPtr<Gnome::Gda::DataModelIter> iter = model.m_gda_datamodel->create_iter();
       if(iter)
       {
-        iter->move_at_row(row);
+        iter->move_to_row(row);
 
         //It is a row from the database;
         const int cols_count = model.m_data_model_columns_count;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]