X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/32a2907bd33438d2119d587aa9656c0d94e6e460..887dfc146ffd1c0d64afbb2fc9ad14a4f18ba60b:/src/common/dbgrid.cpp diff --git a/src/common/dbgrid.cpp b/src/common/dbgrid.cpp index 545d3072e8..3ded105825 100644 --- a/src/common/dbgrid.cpp +++ b/src/common/dbgrid.cpp @@ -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 @@ -11,7 +11,7 @@ // Branched From : dbgrid.cpp,v 1.18 2000/12/19 13:00:58 /////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "dbgrid.h" #endif @@ -23,7 +23,7 @@ #if wxUSE_ODBC -#if wxUSE_NEW_GRID +#if wxUSE_GRID #ifndef WX_PRECOMP #include "wx/textctrl.h" @@ -33,6 +33,10 @@ #include "wx/generic/gridctrl.h" #include "wx/dbgrid.h" +// DLL options compatibility check: +#include "wx/app.h" +WX_CHECK_BUILD_OPTIONS("wxDbGrid") + wxDbGridCellAttrProvider::wxDbGridCellAttrProvider() { @@ -113,7 +117,7 @@ wxGridCellAttr *wxDbGridCellAttrProvider::GetAttr(int row, int col, break; } } - + } return attr; } @@ -125,10 +129,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 +166,7 @@ wxDbGridTableBase::wxDbGridTableBase(wxDbTable *tab, wxDbGridColInfo* ColInfo, if (i < m_nocols) { wxLogDebug(wxT("NoCols under length after traversing %i items"),i); - } + } #endif } } @@ -171,17 +175,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(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 +201,7 @@ bool wxDbGridTableBase::CanHaveAttributes() // use the default attr provider by default SetAttrProvider(new wxDbGridCellAttrProvider(m_data, m_ColInfo)); } - return true; + return TRUE; } @@ -226,14 +231,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 (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 +259,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) +wxString wxDbGridTableBase::GetTypeName(int WXUNUSED(row), int col) { - if (col == 8) - int breakpoint = 1; - if (GetNumberCols() > col) { if (m_ColInfo[col].wxtypename == wxGRID_VALUE_DBAUTO) @@ -274,37 +277,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 +317,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) +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 + //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 +439,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 +462,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 +487,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 +502,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 +556,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 +587,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 +603,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 +615,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 +627,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 +640,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); } @@ -696,27 +680,27 @@ void wxDbGridTableBase::ValidateRow(int row) 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 +// FIXME: this code requires dbtable support for record status #if 0 switch (m_data->get_ModifiedStatus()) { @@ -736,10 +720,10 @@ bool wxDbGridTableBase::Writeback() const return result; } -#include +#include "wx/arrimpl.cpp" -WX_DEFINE_OBJARRAY(keyarray); +WX_DEFINE_EXPORTED_OBJARRAY(keyarray); -#endif // #if wxUSE_NEW_GRID +#endif // #if wxUSE_GRID #endif // #if wxUSE_ODBC