]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/dbgrid.cpp
implemented radio menu items for wxMSW
[wxWidgets.git] / src / common / dbgrid.cpp
index 545d3072e8ac97fc88100b531750748ebef1d7a7..83e673a9183c52e6e5f359f9edfc6b8cc4924fb7 100644 (file)
@@ -2,8 +2,8 @@
 // Name:        dbgrid.cpp
 // Purpose:     Displays a wxDbTable in a wxGrid.
 // Author:      Roger Gammans, Paul Gammans
-// Modified by: 
-// Created:     
+// Modified by:
+// Created:
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 The Computer Surgery (roger@computer-surgery.co.uk)
 // Licence:     wxWindows licence
@@ -113,7 +113,7 @@ wxGridCellAttr *wxDbGridCellAttrProvider::GetAttr(int row, int col,
                 break;
             }
         }
-        
+
     }
     return attr;
 }
@@ -125,10 +125,10 @@ void wxDbGridCellAttrProvider::AssignDbTable(wxDbTable *tab)
 
 wxDbGridTableBase::wxDbGridTableBase(wxDbTable *tab, wxDbGridColInfo*  ColInfo,
                      int count, bool takeOwnership)  :
-    m_keys(), 
+    m_keys(),
     m_data(tab),
     m_dbowner(takeOwnership),
-    m_rowmodified(false)
+    m_rowmodified(FALSE)
 {
 
     if (count == wxUSE_QUERY)
@@ -162,7 +162,7 @@ wxDbGridTableBase::wxDbGridTableBase(wxDbTable *tab, wxDbGridColInfo*  ColInfo,
         if (i < m_nocols)
         {
             wxLogDebug(wxT("NoCols under length after traversing %i items"),i);
-        } 
+        }
 #endif
     }
 }
@@ -171,17 +171,18 @@ wxDbGridTableBase::~wxDbGridTableBase()
 {
     wxDbGridCellAttrProvider *provider;
 
-    //Can't check for update here as 
+    //Can't check for update here as
 
     //FIXME: should i remove m_ColInfo and m_data from m_attrProvider if a wxDbGridAttrProvider
 //    if ((provider = dynamic_cast<wxDbGridCellAttrProvider *>(GetAttrProvider())))
      // Using C casting for now until we can support dynamic_cast with wxWindows
-    if ((provider = (wxDbGridCellAttrProvider *)(GetAttrProvider())))
+    provider = (wxDbGridCellAttrProvider *)(GetAttrProvider());
+    if (provider)
     {
         provider->AssignDbTable(NULL);
     }
     delete [] m_ColInfo;
-    
+
     Writeback();
     if (m_dbowner)
     {
@@ -196,7 +197,7 @@ bool wxDbGridTableBase::CanHaveAttributes()
         // use the default attr provider by default
         SetAttrProvider(new wxDbGridCellAttrProvider(m_data, m_ColInfo));
     }
-    return true;
+    return TRUE;
 }
 
 
@@ -226,14 +227,15 @@ bool wxDbGridTableBase::AssignDbTable(wxDbTable *tab, int count, bool takeOwners
     }
     m_keys.Empty();
     m_data = tab;
-    //FIXME: Remove dynamic_cast before sumision to wxwin 
+    //FIXME: Remove dynamic_cast before sumision to wxwin
 //    if ((provider = dynamic_cast<wxDbGridCellAttrProvider *> (GetAttrProvider())))
      // Using C casting for now until we can support dynamic_cast with wxWindows
-    if ((provider = (wxDbGridCellAttrProvider *)(GetAttrProvider())))
+    provider = (wxDbGridCellAttrProvider *)(GetAttrProvider());
+    if (provider)
     {
         provider->AssignDbTable(m_data);
     }
-    
+
     if (count == wxUSE_QUERY)
     {
         m_rowtotal = m_data ? m_data->Count() : 0;
@@ -253,15 +255,12 @@ bool wxDbGridTableBase::AssignDbTable(wxDbTable *tab, int count, bool takeOwners
         grid->EndBatch();
     }
     m_dbowner = takeOwnership;
-    m_rowmodified = false;
-    return true;
+    m_rowmodified = FALSE;
+    return TRUE;
 }
 
 wxString wxDbGridTableBase::GetTypeName(int row, int col)
 {
-    if (col == 8)
-        int breakpoint = 1;
-
     if (GetNumberCols() > col)
     {
         if (m_ColInfo[col].wxtypename == wxGRID_VALUE_DBAUTO)
@@ -274,37 +273,26 @@ wxString wxDbGridTableBase::GetTypeName(int row, int col)
             {
                 case SQL_C_CHAR:
                     return wxGRID_VALUE_STRING;
-                    break;
                 case SQL_C_SSHORT:
                     return wxGRID_VALUE_NUMBER;
-                    break;
                 case SQL_C_USHORT:
                     return wxGRID_VALUE_NUMBER;
-                    break;
                 case SQL_C_SLONG:
                     return wxGRID_VALUE_NUMBER;
-                    break;
                 case SQL_C_ULONG:
                     return wxGRID_VALUE_NUMBER;
-                    break;
                 case SQL_C_FLOAT:
                     return wxGRID_VALUE_FLOAT;
-                    break;
                 case SQL_C_DOUBLE:
                     return wxGRID_VALUE_FLOAT;
-                    break;
                 case SQL_C_DATE:
                     return wxGRID_VALUE_DATETIME;
-                    break;
                 case SQL_C_TIME:
                     return wxGRID_VALUE_DATETIME;
-                    break;
                 case SQL_C_TIMESTAMP:
                     return wxGRID_VALUE_DATETIME;
-                    break;
                 default:
                     return wxGRID_VALUE_STRING;
-                    break;
             }
         }
         else
@@ -325,123 +313,115 @@ bool wxDbGridTableBase::CanGetValueAs(int row, int col, const wxString& typeName
     if (typeName == wxGRID_VALUE_STRING)
     {
         //FIXME ummm What about blob field etc.
-        return true;
+        return TRUE;
     }
 
     if (m_data->IsColNull(m_ColInfo[col].DbCol))
     {
-        return false;
+        return FALSE;
     }
 
     if (m_data->GetNumberOfColumns() <= m_ColInfo[col].DbCol)
     {
-        //If a virtual column then we can't find it's type. we have to 
-        // return false to get using wxVariant.
-        return false;
+        //If a virtual column then we can't find it's type. we have to
+        // return FALSE to get using wxVariant.
+        return FALSE;
     }
     int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
-    
+
     if (typeName == wxGRID_VALUE_DATETIME)
     {
         if ((sqltype == SQL_C_DATE) ||
-            (sqltype == SQL_C_TIME) || 
+            (sqltype == SQL_C_TIME) ||
             (sqltype == SQL_C_TIMESTAMP))
         {
-            return true;
+            return TRUE;
         }
-        return false;
+        return FALSE;
     }
     if (typeName == wxGRID_VALUE_NUMBER)
     {
         if ((sqltype == SQL_C_SSHORT) ||
-            (sqltype == SQL_C_USHORT) || 
+            (sqltype == SQL_C_USHORT) ||
             (sqltype == SQL_C_SLONG)  ||
             (sqltype == SQL_C_ULONG))
         {
-            return true;
+            return TRUE;
         }
-        return false;
+        return FALSE;
     }
     if (typeName == wxGRID_VALUE_FLOAT)
     {
         if ((sqltype == SQL_C_SSHORT) ||
-            (sqltype == SQL_C_USHORT) || 
+            (sqltype == SQL_C_USHORT) ||
             (sqltype == SQL_C_SLONG)  ||
             (sqltype == SQL_C_ULONG)  ||
             (sqltype == SQL_C_FLOAT)  ||
             (sqltype == SQL_C_DOUBLE))
         {
-            return true;
+            return TRUE;
         }
-        return false;
+        return FALSE;
     }
-    return false;
+    return FALSE;
 }
 
 bool wxDbGridTableBase::CanSetValueAs(int row, int col, const wxString& typeName)
 {
-    //Is this needed? As will be validated on SetValueAsXXXX
-    ValidateRow(row);
-
-    if (m_data->IsColNull(m_ColInfo[col].DbCol))
-    {
-        return false;
-    }
-
     if (typeName == wxGRID_VALUE_STRING)
     {
         //FIXME ummm What about blob field etc.
-        return true;
+        return TRUE;
     }
 
     if (!(m_data->GetColDefs()[(m_ColInfo[col].DbCol)].Updateable))
     {
-        return false;
+        return FALSE;
     }
 
     if (m_data->GetNumberOfColumns() <= m_ColInfo[col].DbCol)
     {
-        //If a virtual column then we can't find it's type. we have to faulse to 
+        //If a virtual column then we can't find it's type. we have to faulse to
         //get using wxVairent.
-        return false;
+        return FALSE;
     }
 
     int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
     if (typeName == wxGRID_VALUE_DATETIME)
     {
         if ((sqltype == SQL_C_DATE) ||
-            (sqltype == SQL_C_TIME) || 
+            (sqltype == SQL_C_TIME) ||
             (sqltype == SQL_C_TIMESTAMP))
         {
-            return true;
+            return TRUE;
         }
-        return false;
+        return FALSE;
     }
     if (typeName == wxGRID_VALUE_NUMBER)
     {
         if ((sqltype == SQL_C_SSHORT) ||
-            (sqltype == SQL_C_USHORT) || 
+            (sqltype == SQL_C_USHORT) ||
             (sqltype == SQL_C_SLONG)  ||
             (sqltype == SQL_C_ULONG))
         {
-            return true;
+            return TRUE;
         }
-        return false;
+        return FALSE;
     }
     if (typeName == wxGRID_VALUE_FLOAT)
     {
         if ((sqltype == SQL_C_SSHORT) ||
-            (sqltype == SQL_C_USHORT) || 
+            (sqltype == SQL_C_USHORT) ||
             (sqltype == SQL_C_SLONG)  ||
             (sqltype == SQL_C_ULONG)  ||
             (sqltype == SQL_C_FLOAT)  ||
             (sqltype == SQL_C_DOUBLE))
         {
-            return true;
+            return TRUE;
         }
-        return false;
+        return FALSE;
     }
-    return false;
+    return FALSE;
 }
 
 long wxDbGridTableBase::GetValueAsLong(int row, int col)
@@ -455,7 +435,7 @@ long wxDbGridTableBase::GetValueAsLong(int row, int col)
     }
     int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
     if ((sqltype == SQL_C_SSHORT) ||
-        (sqltype == SQL_C_USHORT) || 
+        (sqltype == SQL_C_USHORT) ||
         (sqltype == SQL_C_SLONG) ||
         (sqltype == SQL_C_ULONG))
     {
@@ -478,7 +458,7 @@ double wxDbGridTableBase::GetValueAsDouble(int row, int col)
     }
     int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
     if ((sqltype == SQL_C_SSHORT) ||
-        (sqltype == SQL_C_USHORT) || 
+        (sqltype == SQL_C_USHORT) ||
         (sqltype == SQL_C_SLONG) ||
         (sqltype == SQL_C_ULONG) ||
         (sqltype == SQL_C_FLOAT) ||
@@ -503,7 +483,7 @@ bool wxDbGridTableBase::GetValueAsBool(int row, int col)
     }
     int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
     if ((sqltype == SQL_C_SSHORT) ||
-        (sqltype == SQL_C_USHORT) || 
+        (sqltype == SQL_C_USHORT) ||
         (sqltype == SQL_C_SLONG) ||
         (sqltype == SQL_C_ULONG))
     {
@@ -518,7 +498,7 @@ void* wxDbGridTableBase::GetValueAsCustom(int row, int col, const wxString& type
 {
     wxLogDebug(wxT("GetValueAsCustom() on %i,%i"),row,col);
     ValidateRow(row);
-    
+
     if (m_data->GetNumberOfColumns() <= m_ColInfo[col].DbCol)
     {
         wxFAIL_MSG (_T("You can not use GetValueAsCustom for virtual columns"));
@@ -572,7 +552,7 @@ void wxDbGridTableBase::SetValueAsCustom(int row, int col, const wxString& typeN
                 return;
             }
             wxVariant val(date);
-            m_rowmodified = true;
+            m_rowmodified = TRUE;
             m_data->SetCol(m_ColInfo[col].DbCol,val);
         }
     }
@@ -603,12 +583,12 @@ bool wxDbGridTableBase::IsEmptyCell(int row, int col)
 wxString wxDbGridTableBase::GetValue(int row, int col)
 {
     wxLogDebug(wxT("GetValue() on %i,%i"),row,col);
-    
+
     ValidateRow(row);
     wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol);
     wxLogDebug(wxT("\tReturning \"%s\"\n"),val.GetString().c_str());
-    
-    return val.GetString(); 
+
+    return val.GetString();
 }
 
 
@@ -619,7 +599,7 @@ void wxDbGridTableBase::SetValue(int row, int col,const wxString& value)
     ValidateRow(row);
     wxVariant val(value);
 
-    m_rowmodified = true;
+    m_rowmodified = TRUE;
     m_data->SetCol(m_ColInfo[col].DbCol,val);
 }
 
@@ -631,7 +611,7 @@ void wxDbGridTableBase::SetValueAsLong(int row, int col, long value)
     ValidateRow(row);
     wxVariant val(value);
 
-    m_rowmodified = true;
+    m_rowmodified = TRUE;
     m_data->SetCol(m_ColInfo[col].DbCol,val);
 }
 
@@ -643,7 +623,7 @@ void wxDbGridTableBase::SetValueAsDouble(int row, int col, double value)
     ValidateRow(row);
     wxVariant val(value);
 
-    m_rowmodified = true;
+    m_rowmodified = TRUE;
     m_data->SetCol(m_ColInfo[col].DbCol,val);
 
 }
@@ -656,7 +636,7 @@ void wxDbGridTableBase::SetValueAsBool(int row, int col, bool value)
     ValidateRow(row);
     wxVariant val(value);
 
-    m_rowmodified = true;
+    m_rowmodified = TRUE;
     m_data->SetCol(m_ColInfo[col].DbCol,val);
 }
 
@@ -703,20 +683,20 @@ void wxDbGridTableBase::ValidateRow(int row)
 
         m_row = row;
     }
-    m_rowmodified = false;
+    m_rowmodified = FALSE;
 }
 
 bool wxDbGridTableBase::Writeback() const
 {
     if (!m_rowmodified)
     {
-        return true;
+        return TRUE;
     }
 
-    bool result=true;
+    bool result=TRUE;
     wxLogDebug(wxT("\trow key unknown"));
 
-// FIXME: this code requires dbtable support for record status 
+// FIXME: this code requires dbtable support for record status
 #if 0
     switch (m_data->get_ModifiedStatus())
     {
@@ -736,9 +716,9 @@ bool wxDbGridTableBase::Writeback() const
     return result;
 }
 
-#include <wx/arrimpl.cpp>
+#include "wx/arrimpl.cpp"
 
-WX_DEFINE_OBJARRAY(keyarray);
+WX_DEFINE_EXPORTED_OBJARRAY(keyarray);
 
 #endif  // #if wxUSE_NEW_GRID
 #endif  // #if wxUSE_ODBC