// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
- #pragma interface "gridctrl.h"
-#endif
-
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
+#if wxUSE_GRID
+
#include "wx/generic/gridctrl.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/textctrl.h"
+ #include "wx/dc.h"
+ #include "wx/combobox.h"
+#endif // WX_PRECOMP
+
#include "wx/tokenzr.h"
// ----------------------------------------------------------------------------
// wxGridCellDateTimeRenderer
// ----------------------------------------------------------------------------
-// Enables a grid cell to display a formated date and or time
+#if wxUSE_DATETIME
+
+// Enables a grid cell to display a formatted date and or time
-wxGridCellDateTimeRenderer::wxGridCellDateTimeRenderer(wxString outformat, wxString informat)
+wxGridCellDateTimeRenderer::wxGridCellDateTimeRenderer(const wxString& outformat, const wxString& informat)
{
m_iformat = informat;
m_oformat = outformat;
return renderer;
}
-wxString wxGridCellDateTimeRenderer::GetString(wxGrid& grid, int row, int col)
+wxString wxGridCellDateTimeRenderer::GetString(const wxGrid& grid, int row, int col)
{
wxGridTableBase *table = grid.GetTable();
- bool hasDatetime = FALSE;
+ bool hasDatetime = false;
wxDateTime val;
wxString text;
if ( table->CanGetValueAs(row, col, wxGRID_VALUE_DATETIME) )
{
void * tempval = table->GetValueAsCustom(row, col,wxGRID_VALUE_DATETIME);
- if (tempval){
+ if (tempval)
+ {
val = *((wxDateTime *)tempval);
- hasDatetime = TRUE;
+ hasDatetime = true;
delete (wxDateTime *)tempval;
}
if (!hasDatetime )
{
text = table->GetValue(row, col);
- hasDatetime = (val.ParseFormat( text, m_iformat, m_dateDef ) != (wxChar *)NULL) ;
+ const char * const end = val.ParseFormat(text, m_iformat, m_dateDef);
+ hasDatetime = end && !*end;
}
if ( hasDatetime )
text = val.Format(m_oformat, m_tz );
- //If we faild to parse string just show what we where given?
+ // If we failed to parse string just show what we where given?
return text;
}
return DoGetBestSize(attr, dc, GetString(grid, row, col));
}
-void wxGridCellDateTimeRenderer::SetParameters(const wxString& params){
- if(params)
+void wxGridCellDateTimeRenderer::SetParameters(const wxString& params)
+{
+ if (!params.empty())
m_oformat=params;
}
+#endif // wxUSE_DATETIME
+
// ----------------------------------------------------------------------------
// wxGridCellChoiceNumberRenderer
// ----------------------------------------------------------------------------
wxGridCellEnumRenderer::wxGridCellEnumRenderer(const wxString& choices)
{
- if(choices)
+ if (!choices.empty())
SetParameters(choices);
}
return renderer;
}
-wxString wxGridCellEnumRenderer::GetString(wxGrid& grid, int row, int col)
+wxString wxGridCellEnumRenderer::GetString(const wxGrid& grid, int row, int col)
{
wxGridTableBase *table = grid.GetTable();
wxString text;
}
}
+#if wxUSE_COMBOBOX
+
// ----------------------------------------------------------------------------
// wxGridCellEnumEditor
// ----------------------------------------------------------------------------
-// A cell editor which displays an enum number as a textual equivalent.
-// eg data in cell is 0,1,2 ... n the cell could be displayed as "John","Fred"..."Bob"
-// in the combo choice box
-//
+
+// A cell editor which displays an enum number as a textual equivalent. eg
+// data in cell is 0,1,2 ... n the cell could be displayed as
+// "John","Fred"..."Bob" in the combo choice box
+
wxGridCellEnumEditor::wxGridCellEnumEditor(const wxString& choices)
- : wxGridCellChoiceEditor()
+ :wxGridCellChoiceEditor()
{
- if(choices)
+ m_startint = -1;
+
+ if (!choices.empty())
SetParameters(choices);
}
else
{
wxString startValue = table->GetValue(row, col);
- if (startValue.IsNumber() && !startValue.IsEmpty())
+ if (startValue.IsNumber() && !startValue.empty())
{
startValue.ToLong(&m_startint);
}
if (grid->GetTable()->CanSetValueAs(row, col, wxGRID_VALUE_NUMBER))
grid->GetTable()->SetValueAsLong(row, col, pos);
else
- grid->GetTable()->SetValue(row, col,wxString::Format("%i",pos));
+ grid->GetTable()->SetValue(row, col,wxString::Format(wxT("%i"),pos));
}
return changed;
}
+#endif // wxUSE_COMBOBOX
+
+// ----------------------------------------------------------------------------
+// wxGridCellAutoWrapStringEditor
+// ----------------------------------------------------------------------------
void
wxGridCellAutoWrapStringEditor::Create(wxWindow* parent,
wxWindowID id,
wxEvtHandler* evtHandler)
{
- m_control = new wxTextCtrl(parent, id, wxEmptyString,
- wxDefaultPosition, wxDefaultSize,
- wxTE_MULTILINE | wxTE_RICH);
-
-
- wxGridCellEditor::Create(parent, id, evtHandler);
+ wxGridCellTextEditor::DoCreate(parent, id, evtHandler,
+ wxTE_MULTILINE | wxTE_RICH);
}
void
wxArrayString
wxGridCellAutoWrapStringRenderer::GetTextLines(wxGrid& grid,
wxDC& dc,
- wxGridCellAttr& attr,
+ const wxGridCellAttr& attr,
const wxRect& rect,
int row, int col)
{
dc.SetFont(attr.GetFont());
wxStringTokenizer tk(data , _T(" \n\t\r"));
- wxString thisline("");
+ wxString thisline = wxEmptyString;
while ( tk.HasMoreTokens() )
{
wxString tok = tk.GetNextToken();
- //FIXME: this causes us to print an extra unnecesary
- // space at the end of the line. But it
- // is invisible , simplifies the size calculation
- // and ensures tokens are seperated in the display
- tok += _T(" ");
+ //FIXME: this causes us to print an extra unnecesary
+ // space at the end of the line. But it
+ // is invisible , simplifies the size calculation
+ // and ensures tokens are separated in the display
+ tok += _T(" ");
dc.GetTextExtent(tok, &x, &y);
- if ( curr_x + x > max_x) {
+ if ( curr_x + x > max_x)
+ {
lines.Add( wxString(thisline) );
- thisline = tok;
- curr_x=x;
- } else {
+ thisline = tok;
+ curr_x=x;
+ }
+ else
+ {
thisline+= tok;
- curr_x += x;
- }
-
+ curr_x += x;
+ }
}
//Add last line
lines.Add( wxString(thisline) );
wxDC& dc,
int row, int col)
{
- int x,y, height , width = grid.GetColSize(col) -10;
+ wxCoord x,y, height , width = grid.GetColSize(col) -10;
int count = 250; //Limit iterations..
wxRect rect(0,0,width,10);
// M is a nice large character 'y' gives descender!.
- dc.GetTextExtent("My", &x, &y);
+ dc.GetTextExtent(wxT("My"), &x, &y);
do
{
width+=10;
rect.SetWidth(width);
- height = y *( GetTextLines(grid,dc,attr,rect,row,col).GetCount());
+ height = y * (wx_truncate_cast(wxCoord, GetTextLines(grid,dc,attr,rect,row,col).GetCount()));
count--;
// Search for a shape no taller than the golden ratio.
} while (count && (width < (height*1.68)) );
return wxSize(width,height);
}
+#endif // wxUSE_GRID
+