glom r1492 - in branches/glom-1-6: . glom/navigation



Author: murrayc
Date: Mon Mar 31 10:45:57 2008
New Revision: 1492
URL: http://svn.gnome.org/viewvc/glom?rev=1492&view=rev

Log:
2008-03-31  Murray Cumming  <murrayc murrayc com>

* glom/navigation/box_tables.cc: on_adddel_changed(): When changing the 
default-table column, make sure that only one row can have this checked.
It should really be a radio column, but that would be more work 
(to work around the AddDel widget).
Bug #525186 (Jani Monoses)

Modified:
   branches/glom-1-6/ChangeLog
   branches/glom-1-6/glom/navigation/box_tables.cc

Modified: branches/glom-1-6/glom/navigation/box_tables.cc
==============================================================================
--- branches/glom-1-6/glom/navigation/box_tables.cc	(original)
+++ branches/glom-1-6/glom/navigation/box_tables.cc	Mon Mar 31 10:45:57 2008
@@ -117,7 +117,9 @@
 
   m_colHidden = m_AddDel.add_column(_("Hidden"), AddDelColumnInfo::STYLE_Boolean, editable, visible_extras);
   m_colTitle =  m_AddDel.add_column(_("Title"), AddDelColumnInfo::STYLE_Text, editable, true);
-  m_colDefault =  m_AddDel.add_column(_("Default"), AddDelColumnInfo::STYLE_Boolean,  editable, visible_extras);
+
+  //TODO: This should really be a radio, but the use of AddDel makes it awkward to change that CellRenderer property.
+  m_colDefault =  m_AddDel.add_column(_("Default"), AddDelColumnInfo::STYLE_Boolean, editable, visible_extras);
 
 
   //_("Server: ") +  m_strServerName + ", " + 
@@ -365,10 +367,10 @@
 
         if(!table_info->get_name().empty())
         {
-          table_info->m_hidden  = m_AddDel.get_value_as_bool(iter, m_colHidden);
+          table_info->m_hidden = m_AddDel.get_value_as_bool(iter, m_colHidden);
           table_info->set_title( m_AddDel.get_value(iter, m_colTitle) ); //TODO_Translations: Store the TableInfo in the TreeView.
           //std::cout << "save_to_document(): title=" << table_info->get_title() << std::endl;
-          table_info->m_default  = m_AddDel.get_value_as_bool(iter, m_colDefault);
+          table_info->m_default = m_AddDel.get_value_as_bool(iter, m_colDefault);
 
           listTables.push_back(table_info);
         }
@@ -389,15 +391,32 @@
 {
   if(get_userlevel() == AppState::USERLEVEL_DEVELOPER)
   {
-    if( (column == m_colHidden) )
+    if(column == m_colHidden)
     {
       save_to_document();
       //TODO: This causes a crash. fill_from_database(); //Hide/show the table.
     }
-    else if( (column == m_colTitle) || (column == m_colDefault) )
+    else if(column == m_colTitle)
     {
       save_to_document();
     }
+    else if(column == m_colDefault)
+    {
+      //Only one table can be the default, so ensure that:
+      const bool is_default = m_AddDel.get_value_as_bool(row, m_colDefault);
+      if(is_default)
+      {
+        //Set all the other rows to false:
+        Glib::RefPtr<Gtk::TreeModel> model = m_AddDel.get_model();
+        for(Gtk::TreeModel::iterator iter = model->children().begin(); iter != model->children().end(); ++iter)
+        {
+          if(iter != row)
+            m_AddDel.set_value(iter, m_colDefault, false);
+        }
+      }
+
+      save_to_document();
+    }
     else if(column == m_colTableName)
     {
       Glib::ustring table_name = m_AddDel.get_value_key(row);



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