///////////////////////////////////////////////////////////////////////////////
-// Name: dbgrid.cpp
+// Name: src/common/dbgrid.cpp
// Purpose: Displays a wxDbTable in a wxGrid.
// Author: Roger Gammans, Paul Gammans
// Modified by:
// Branched From : dbgrid.cpp,v 1.18 2000/12/19 13:00:58
///////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
- #pragma implementation "dbgrid.h"
-#endif
-
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
-
-#if wxUSE_ODBC
-#if wxUSE_NEW_GRID
+#if wxUSE_ODBC && wxUSE_GRID
#ifndef WX_PRECOMP
#include "wx/textctrl.h"
#include "wx/dc.h"
+ #include "wx/app.h"
#endif // WX_PRECOMP
#include "wx/generic/gridctrl.h"
#include "wx/dbgrid.h"
+// DLL options compatibility check:
+WX_CHECK_BUILD_OPTIONS("wxDbGrid")
+
wxDbGridCellAttrProvider::wxDbGridCellAttrProvider()
{
m_keys(),
m_data(tab),
m_dbowner(takeOwnership),
- m_rowmodified(FALSE)
+ m_rowmodified(false)
{
if (count == wxUSE_QUERY)
//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)
{
// use the default attr provider by default
SetAttrProvider(new wxDbGridCellAttrProvider(m_data, m_ColInfo));
}
- return TRUE;
+ return true;
}
{
wxDbGridCellAttrProvider *provider;
+ wxGridUpdateLocker locker(GetView());
+
//Remove Information from grid about old data
if (GetView())
{
wxGrid *grid = GetView();
- grid->BeginBatch();
grid->ClearSelection();
if (grid->IsCellEditControlEnabled())
{
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)
{
wxGrid * grid = GetView();
wxGridTableMessage msg(this, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, m_rowtotal);
grid->ProcessTableMessage(msg);
- 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)
{
switch(m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype)
{
case SQL_C_CHAR:
+#ifdef SQL_C_WCHAR
+ case SQL_C_WCHAR:
+#endif
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_LONG:
case SQL_C_SLONG:
return wxGRID_VALUE_NUMBER;
case SQL_C_ULONG:
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
- // 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;
(sqltype == SQL_C_TIME) ||
(sqltype == SQL_C_TIMESTAMP))
{
- return TRUE;
+ return true;
}
- return FALSE;
+ return false;
}
if (typeName == wxGRID_VALUE_NUMBER)
{
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG))
{
- return TRUE;
+ return true;
}
- return FALSE;
+ return false;
}
if (typeName == wxGRID_VALUE_FLOAT)
{
(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)
{
- //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
//get using wxVairent.
- return FALSE;
+ return false;
}
int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
(sqltype == SQL_C_TIME) ||
(sqltype == SQL_C_TIMESTAMP))
{
- return TRUE;
+ return true;
}
- return FALSE;
+ return false;
}
if (typeName == wxGRID_VALUE_NUMBER)
{
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG))
{
- return TRUE;
+ return true;
}
- return FALSE;
+ return false;
}
if (typeName == wxGRID_VALUE_FLOAT)
{
(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)
(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, "));
(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"));
(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, "));
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)
(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;
}
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"));
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);
}
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();
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);
}
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);
}
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);
}
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);
}
void wxDbGridTableBase::ValidateRow(int row)
{
- wxLogDebug(wxT("ValidateRow(%i) currently on row (%i). Array count = %i"),row,m_row,m_keys.GetCount());
+ wxLogDebug(wxT("ValidateRow(%i) currently on row (%i). Array count = %lu"),
+ row, m_row, (unsigned long)m_keys.GetCount());
if (row == m_row)
return;
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_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
return result;
}
-#include <wx/arrimpl.cpp>
-
-WX_DEFINE_OBJARRAY(keyarray);
+#include "wx/arrimpl.cpp"
-#endif // #if wxUSE_NEW_GRID
-#endif // #if wxUSE_ODBC
+WX_DEFINE_EXPORTED_OBJARRAY(keyarray)
+#endif // wxUSE_GRID && wxUSE_ODBC