]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/dbgrid.cpp
We need to update the scrollbar even if it's not shown, otherwise it can get stuck...
[wxWidgets.git] / src / common / dbgrid.cpp
index b7b2218e48a06658b14f0f545fbffc2d30ac49c4..af7ae488dc5a896883bfbe871e65a87c2a90d905 100644 (file)
@@ -132,7 +132,7 @@ wxDbGridTableBase::wxDbGridTableBase(wxDbTable *tab, wxDbGridColInfo*  ColInfo,
     m_keys(),
     m_data(tab),
     m_dbowner(takeOwnership),
     m_keys(),
     m_data(tab),
     m_dbowner(takeOwnership),
-    m_rowmodified(FALSE)
+    m_rowmodified(false)
 {
 
     if (count == wxUSE_QUERY)
 {
 
     if (count == wxUSE_QUERY)
@@ -179,7 +179,7 @@ wxDbGridTableBase::~wxDbGridTableBase()
 
     //FIXME: should i remove m_ColInfo and m_data from m_attrProvider if a wxDbGridAttrProvider
 //    if ((provider = dynamic_cast<wxDbGridCellAttrProvider *>(GetAttrProvider())))
 
     //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
+     // Using C casting for now until we can support dynamic_cast with wxWidgets
     provider = (wxDbGridCellAttrProvider *)(GetAttrProvider());
     if (provider)
     {
     provider = (wxDbGridCellAttrProvider *)(GetAttrProvider());
     if (provider)
     {
@@ -201,7 +201,7 @@ bool wxDbGridTableBase::CanHaveAttributes()
         // use the default attr provider by default
         SetAttrProvider(new wxDbGridCellAttrProvider(m_data, m_ColInfo));
     }
         // use the default attr provider by default
         SetAttrProvider(new wxDbGridCellAttrProvider(m_data, m_ColInfo));
     }
-    return TRUE;
+    return true;
 }
 
 
 }
 
 
@@ -233,7 +233,7 @@ bool wxDbGridTableBase::AssignDbTable(wxDbTable *tab, int count, bool takeOwners
     m_data = tab;
     //FIXME: Remove dynamic_cast before sumision to wxwin
 //    if ((provider = dynamic_cast<wxDbGridCellAttrProvider *> (GetAttrProvider())))
     m_data = tab;
     //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
+     // Using C casting for now until we can support dynamic_cast with wxWidgets
     provider = (wxDbGridCellAttrProvider *)(GetAttrProvider());
     if (provider)
     {
     provider = (wxDbGridCellAttrProvider *)(GetAttrProvider());
     if (provider)
     {
@@ -259,11 +259,11 @@ bool wxDbGridTableBase::AssignDbTable(wxDbTable *tab, int count, bool takeOwners
         grid->EndBatch();
     }
     m_dbowner = takeOwnership;
         grid->EndBatch();
     }
     m_dbowner = takeOwnership;
-    m_rowmodified = FALSE;
-    return TRUE;
+    m_rowmodified = false;
+    return true;
 }
 
 }
 
-wxString wxDbGridTableBase::GetTypeName(int row, int col)
+wxString wxDbGridTableBase::GetTypeName(int WXUNUSED(row), int col)
 {
     if (GetNumberCols() > col)
     {
 {
     if (GetNumberCols() > col)
     {
@@ -276,11 +276,16 @@ wxString wxDbGridTableBase::GetTypeName(int row, int col)
             switch(m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype)
             {
                 case SQL_C_CHAR:
             switch(m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype)
             {
                 case SQL_C_CHAR:
+#ifndef __UNIX__
+                case SQL_C_WCHAR:
+#endif                 
                     return wxGRID_VALUE_STRING;
                     return wxGRID_VALUE_STRING;
+                case SQL_C_SHORT:
                 case SQL_C_SSHORT:
                     return wxGRID_VALUE_NUMBER;
                 case SQL_C_USHORT:
                     return wxGRID_VALUE_NUMBER;
                 case SQL_C_SSHORT:
                     return wxGRID_VALUE_NUMBER;
                 case SQL_C_USHORT:
                     return wxGRID_VALUE_NUMBER;
+                case SQL_C_LONG:
                 case SQL_C_SLONG:
                     return wxGRID_VALUE_NUMBER;
                 case SQL_C_ULONG:
                 case SQL_C_SLONG:
                     return wxGRID_VALUE_NUMBER;
                 case SQL_C_ULONG:
@@ -317,19 +322,19 @@ bool wxDbGridTableBase::CanGetValueAs(int row, int col, const wxString& typeName
     if (typeName == wxGRID_VALUE_STRING)
     {
         //FIXME ummm What about blob field etc.
     if (typeName == wxGRID_VALUE_STRING)
     {
         //FIXME ummm What about blob field etc.
-        return TRUE;
+        return true;
     }
 
     }
 
-    if (m_data->IsColNull(m_ColInfo[col].DbCol))
+    if (m_data->IsColNull((UWORD)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
     }
 
     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;
+        // return false to get using wxVariant.
+        return false;
     }
     int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
 
     }
     int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
 
@@ -339,9 +344,9 @@ bool wxDbGridTableBase::CanGetValueAs(int row, int col, const wxString& typeName
             (sqltype == SQL_C_TIME) ||
             (sqltype == SQL_C_TIMESTAMP))
         {
             (sqltype == SQL_C_TIME) ||
             (sqltype == SQL_C_TIMESTAMP))
         {
-            return TRUE;
+            return true;
         }
         }
-        return FALSE;
+        return false;
     }
     if (typeName == wxGRID_VALUE_NUMBER)
     {
     }
     if (typeName == wxGRID_VALUE_NUMBER)
     {
@@ -350,9 +355,9 @@ bool wxDbGridTableBase::CanGetValueAs(int row, int col, const wxString& typeName
             (sqltype == SQL_C_SLONG)  ||
             (sqltype == SQL_C_ULONG))
         {
             (sqltype == SQL_C_SLONG)  ||
             (sqltype == SQL_C_ULONG))
         {
-            return TRUE;
+            return true;
         }
         }
-        return FALSE;
+        return false;
     }
     if (typeName == wxGRID_VALUE_FLOAT)
     {
     }
     if (typeName == wxGRID_VALUE_FLOAT)
     {
@@ -363,31 +368,31 @@ bool wxDbGridTableBase::CanGetValueAs(int row, int col, const wxString& typeName
             (sqltype == SQL_C_FLOAT)  ||
             (sqltype == SQL_C_DOUBLE))
         {
             (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)
+bool wxDbGridTableBase::CanSetValueAs(int WXUNUSED(row), int col, const wxString& typeName)
 {
     if (typeName == wxGRID_VALUE_STRING)
     {
         //FIXME ummm What about blob field etc.
 {
     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))
     {
     }
 
     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
         //get using wxVairent.
     }
 
     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
         //get using wxVairent.
-        return FALSE;
+        return false;
     }
 
     int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
     }
 
     int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
@@ -397,9 +402,9 @@ bool wxDbGridTableBase::CanSetValueAs(int row, int col, const wxString& typeName
             (sqltype == SQL_C_TIME) ||
             (sqltype == SQL_C_TIMESTAMP))
         {
             (sqltype == SQL_C_TIME) ||
             (sqltype == SQL_C_TIMESTAMP))
         {
-            return TRUE;
+            return true;
         }
         }
-        return FALSE;
+        return false;
     }
     if (typeName == wxGRID_VALUE_NUMBER)
     {
     }
     if (typeName == wxGRID_VALUE_NUMBER)
     {
@@ -408,9 +413,9 @@ bool wxDbGridTableBase::CanSetValueAs(int row, int col, const wxString& typeName
             (sqltype == SQL_C_SLONG)  ||
             (sqltype == SQL_C_ULONG))
         {
             (sqltype == SQL_C_SLONG)  ||
             (sqltype == SQL_C_ULONG))
         {
-            return TRUE;
+            return true;
         }
         }
-        return FALSE;
+        return false;
     }
     if (typeName == wxGRID_VALUE_FLOAT)
     {
     }
     if (typeName == wxGRID_VALUE_FLOAT)
     {
@@ -421,11 +426,11 @@ bool wxDbGridTableBase::CanSetValueAs(int row, int col, const wxString& typeName
             (sqltype == SQL_C_FLOAT)  ||
             (sqltype == SQL_C_DOUBLE))
         {
             (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)
 }
 
 long wxDbGridTableBase::GetValueAsLong(int row, int col)
@@ -443,7 +448,7 @@ long wxDbGridTableBase::GetValueAsLong(int row, int col)
         (sqltype == SQL_C_SLONG) ||
         (sqltype == SQL_C_ULONG))
     {
         (sqltype == SQL_C_SLONG) ||
         (sqltype == SQL_C_ULONG))
     {
-        wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol);
+        wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol);
         return val.GetLong();
     }
     wxFAIL_MSG (_T("unknown column, "));
         return val.GetLong();
     }
     wxFAIL_MSG (_T("unknown column, "));
@@ -468,7 +473,7 @@ double wxDbGridTableBase::GetValueAsDouble(int row, int col)
         (sqltype == SQL_C_FLOAT) ||
         (sqltype == SQL_C_DOUBLE))
     {
         (sqltype == SQL_C_FLOAT) ||
         (sqltype == SQL_C_DOUBLE))
     {
-        wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol);
+        wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol);
         return val.GetDouble();
     }
     wxFAIL_MSG (_T("unknown column"));
         return val.GetDouble();
     }
     wxFAIL_MSG (_T("unknown column"));
@@ -491,7 +496,7 @@ bool wxDbGridTableBase::GetValueAsBool(int row, int col)
         (sqltype == SQL_C_SLONG) ||
         (sqltype == SQL_C_ULONG))
     {
         (sqltype == SQL_C_SLONG) ||
         (sqltype == SQL_C_ULONG))
     {
-        wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol);
+        wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol);
         return val.GetBool();
     }
     wxFAIL_MSG (_T("unknown column, "));
         return val.GetBool();
     }
     wxFAIL_MSG (_T("unknown column, "));
@@ -508,7 +513,7 @@ void* wxDbGridTableBase::GetValueAsCustom(int row, int col, const wxString& type
         wxFAIL_MSG (_T("You can not use GetValueAsCustom for virtual columns"));
         return NULL;
     }
         wxFAIL_MSG (_T("You can not use GetValueAsCustom for virtual columns"));
         return NULL;
     }
-    if (m_data->IsColNull(m_ColInfo[col].DbCol))
+    if (m_data->IsColNull((UWORD)m_ColInfo[col].DbCol))
         return NULL;
 
     if (typeName == wxGRID_VALUE_DATETIME)
         return NULL;
 
     if (typeName == wxGRID_VALUE_DATETIME)
@@ -520,7 +525,7 @@ void* wxDbGridTableBase::GetValueAsCustom(int row, int col, const wxString& type
             (sqltype == SQL_C_TIME) ||
             (sqltype == SQL_C_TIMESTAMP))
         {
             (sqltype == SQL_C_TIME) ||
             (sqltype == SQL_C_TIMESTAMP))
         {
-            wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol);
+            wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol);
             return new wxDateTime(val.GetDateTime());
         }
     }
             return new wxDateTime(val.GetDateTime());
         }
     }
@@ -556,8 +561,8 @@ void wxDbGridTableBase::SetValueAsCustom(int row, int col, const wxString& typeN
                 return;
             }
             wxVariant val(date);
                 return;
             }
             wxVariant val(date);
-            m_rowmodified = TRUE;
-            m_data->SetCol(m_ColInfo[col].DbCol,val);
+            m_rowmodified = true;
+            m_data->SetColumn(m_ColInfo[col].DbCol,val);
         }
     }
     wxFAIL_MSG (_T("unknown column data type"));
         }
     }
     wxFAIL_MSG (_T("unknown column data type"));
@@ -580,7 +585,7 @@ bool wxDbGridTableBase::IsEmptyCell(int row, int col)
     wxLogDebug(wxT("IsEmtpyCell on %i,%i"),row,col);
 
     ValidateRow(row);
     wxLogDebug(wxT("IsEmtpyCell on %i,%i"),row,col);
 
     ValidateRow(row);
-    return m_data->IsColNull(m_ColInfo[col].DbCol);
+    return m_data->IsColNull((UWORD)m_ColInfo[col].DbCol);
 }
 
 
 }
 
 
@@ -589,7 +594,7 @@ wxString wxDbGridTableBase::GetValue(int row, int col)
     wxLogDebug(wxT("GetValue() on %i,%i"),row,col);
 
     ValidateRow(row);
     wxLogDebug(wxT("GetValue() on %i,%i"),row,col);
 
     ValidateRow(row);
-    wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol);
+    wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol);
     wxLogDebug(wxT("\tReturning \"%s\"\n"),val.GetString().c_str());
 
     return val.GetString();
     wxLogDebug(wxT("\tReturning \"%s\"\n"),val.GetString().c_str());
 
     return val.GetString();
@@ -603,8 +608,8 @@ void wxDbGridTableBase::SetValue(int row, int col,const wxString& value)
     ValidateRow(row);
     wxVariant val(value);
 
     ValidateRow(row);
     wxVariant val(value);
 
-    m_rowmodified = TRUE;
-    m_data->SetCol(m_ColInfo[col].DbCol,val);
+    m_rowmodified = true;
+    m_data->SetColumn(m_ColInfo[col].DbCol,val);
 }
 
 
 }
 
 
@@ -615,8 +620,8 @@ void wxDbGridTableBase::SetValueAsLong(int row, int col, long value)
     ValidateRow(row);
     wxVariant val(value);
 
     ValidateRow(row);
     wxVariant val(value);
 
-    m_rowmodified = TRUE;
-    m_data->SetCol(m_ColInfo[col].DbCol,val);
+    m_rowmodified = true;
+    m_data->SetColumn(m_ColInfo[col].DbCol,val);
 }
 
 
 }
 
 
@@ -627,8 +632,8 @@ void wxDbGridTableBase::SetValueAsDouble(int row, int col, double value)
     ValidateRow(row);
     wxVariant val(value);
 
     ValidateRow(row);
     wxVariant val(value);
 
-    m_rowmodified = TRUE;
-    m_data->SetCol(m_ColInfo[col].DbCol,val);
+    m_rowmodified = true;
+    m_data->SetColumn(m_ColInfo[col].DbCol,val);
 
 }
 
 
 }
 
@@ -640,8 +645,8 @@ void wxDbGridTableBase::SetValueAsBool(int row, int col, bool value)
     ValidateRow(row);
     wxVariant val(value);
 
     ValidateRow(row);
     wxVariant val(value);
 
-    m_rowmodified = TRUE;
-    m_data->SetCol(m_ColInfo[col].DbCol,val);
+    m_rowmodified = true;
+    m_data->SetColumn(m_ColInfo[col].DbCol,val);
 }
 
 
 }
 
 
@@ -680,24 +685,24 @@ void wxDbGridTableBase::ValidateRow(int row)
         m_data->SetKey(k);
         if (!m_data->QueryOnKeyFields())
         {
         m_data->SetKey(k);
         if (!m_data->QueryOnKeyFields())
         {
-            wxDbLogExtendedErrorMsg("ODBC error during Query()\n\n", m_data->GetDb(),__FILE__,__LINE__);
+            wxDbLogExtendedErrorMsg(_T("ODBC error during Query()\n\n"), m_data->GetDb(),__TFILE__,__LINE__);
         }
 
         m_data->GetNext();
 
         m_row = row;
     }
         }
 
         m_data->GetNext();
 
         m_row = row;
     }
-    m_rowmodified = FALSE;
+    m_rowmodified = false;
 }
 
 bool wxDbGridTableBase::Writeback() const
 {
     if (!m_rowmodified)
     {
 }
 
 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
     wxLogDebug(wxT("\trow key unknown"));
 
 // FIXME: this code requires dbtable support for record status