// array classes
// ----------------------------------------------------------------------------
-WX_DEFINE_ARRAY_WITH_DECL_NO_PTR(wxGridCellAttr *, wxArrayAttrs,
+WX_DEFINE_ARRAY_WITH_DECL_PTR(wxGridCellAttr *, wxArrayAttrs,
class WXDLLIMPEXP_ADV);
struct wxGridCellWithAttr
};
-WX_DEFINE_ARRAY_WITH_DECL_NO_PTR(wxGridDataTypeInfo*, wxGridDataTypeInfoArray,
+WX_DEFINE_ARRAY_WITH_DECL_PTR(wxGridDataTypeInfo*, wxGridDataTypeInfoArray,
class WXDLLIMPEXP_ADV);
// wxGridCellChoiceEditor
// ----------------------------------------------------------------------------
+wxGridCellChoiceEditor::wxGridCellChoiceEditor(const wxArrayString& choices,
+ bool allowOthers)
+ : m_choices(choices),
+ m_allowOthers(allowOthers) { }
+
wxGridCellChoiceEditor::wxGridCellChoiceEditor(size_t count,
const wxString choices[],
bool allowOthers)
if ( !ms_sizeCheckMark.x )
{
// get checkbox size
- wxCoord checkSize = 0;
wxCheckBox *checkbox = new wxCheckBox(&grid, -1, wxEmptyString);
wxSize size = checkbox->GetBestSize();
- checkSize = size.y + 2*wxGRID_CHECKMARK_MARGIN;
+ wxCoord checkSize = size.y + 2*wxGRID_CHECKMARK_MARGIN;
// FIXME wxGTK::wxCheckBox::GetBestSize() gives "wrong" result
#if defined(__WXGTK__) || defined(__WXMOTIF__)
{
//Basicaly implement old version.
//Also check merge cache, so we don't have to re-merge every time..
- wxGridCellAttr *attrcell = (wxGridCellAttr *)NULL,
- *attrrow = (wxGridCellAttr *)NULL,
- *attrcol = (wxGridCellAttr *)NULL;
-
- attrcell = m_data->m_cellAttrs.GetAttr(row, col);
- attrcol = m_data->m_colAttrs.GetAttr(col);
- attrrow = m_data->m_rowAttrs.GetAttr(row);
+ wxGridCellAttr *attrcell = m_data->m_cellAttrs.GetAttr(row, col);
+ wxGridCellAttr *attrrow = m_data->m_rowAttrs.GetAttr(row);
+ wxGridCellAttr *attrcol = m_data->m_colAttrs.GetAttr(col);
if((attrcell != attrrow) && (attrrow !=attrcol) && (attrcell != attrcol)){
// Two or move are non NULL
/////////////////////////////////////////////////////////////////////
#if wxUSE_EXTENDED_RTTI
+WX_DEFINE_FLAGS( wxGridStyle )
+
+wxBEGIN_FLAGS( wxGridStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+wxEND_FLAGS( wxGridStyle )
+
IMPLEMENT_DYNAMIC_CLASS_XTI(wxGrid, wxScrolledWindow,"wx/grid.h")
-WX_BEGIN_PROPERTIES_TABLE(wxGrid)
- WX_HIDE_PROPERTY( Children )
-WX_END_PROPERTIES_TABLE()
+wxBEGIN_PROPERTIES_TABLE(wxGrid)
+ wxHIDE_PROPERTY( Children )
+ wxPROPERTY_FLAGS( WindowStyle , wxGridStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
-WX_BEGIN_HANDLERS_TABLE(wxGrid)
-WX_END_HANDLERS_TABLE()
+wxBEGIN_HANDLERS_TABLE(wxGrid)
+wxEND_HANDLERS_TABLE()
-WX_CONSTRUCTOR_5( wxGrid , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle )
+wxCONSTRUCTOR_5( wxGrid , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle )
/*
TODO : Expose more information of a list's layout etc. via appropriate objects (à la NotebookPageInfo)
style | wxWANTS_CHARS , name))
return FALSE;
- m_colMinWidths =GRID_HASH_SIZE ;
- m_rowMinHeights = GRID_HASH_SIZE ;
+ m_colMinWidths = wxLongToLongHashMap(GRID_HASH_SIZE) ;
+ m_rowMinHeights = wxLongToLongHashMap(GRID_HASH_SIZE) ;
Create() ;
wxMouseEvent& mouseEv )
{
bool claimed;
- bool vetoed= FALSE;
+ bool vetoed;
if ( type == wxEVT_GRID_ROW_SIZE || type == wxEVT_GRID_COL_SIZE )
{
int row, int col )
{
bool claimed;
- bool vetoed= FALSE;
+ bool vetoed;
if ( type == wxEVT_GRID_ROW_SIZE || type == wxEVT_GRID_COL_SIZE )
{
bool wxGrid::CanEnableCellControl() const
{
- return m_editable && !IsCurrentCellReadOnly();
+ return m_editable && (m_currentCellCoords != wxGridNoCellCoords) &&
+ !IsCurrentCellReadOnly();
+
}
bool wxGrid::IsCellEditControlEnabled() const
if ( coord >= BorderArray[i_max])
{
i_min = i_max;
- i_max = coord / minDist;
+ if (minDist)
+ i_max = coord / minDist;
+ else
+ i_max = BorderArray.GetCount() - 1;
}
if ( i_max >= BorderArray.GetCount())
i_max = BorderArray.GetCount() - 1;
void wxGrid::SetColFormatCustom(int col, const wxString& typeName)
{
- wxGridCellAttr *attr = (wxGridCellAttr *)NULL;
-
- attr = m_table->GetAttr(-1, col, wxGridCellAttr::Col );
+ wxGridCellAttr *attr = m_table->GetAttr(-1, col, wxGridCellAttr::Col );
if(!attr)
attr = new wxGridCellAttr;
wxGridCellRenderer *renderer = GetDefaultRendererForType(typeName);
void wxGrid::SetColMinimalAcceptableWidth( int width )
{
- if ( width<1 )
+ // We do allow a width of 0 since this gives us
+ // an easy way to temporarily hidding columns.
+ if ( width<0 )
return;
m_minAcceptableColWidth = width;
}
void wxGrid::SetRowMinimalAcceptableHeight( int height )
{
- if ( height<1 )
+ // We do allow a height of 0 since this gives us
+ // an easy way to temporarily hidding rows.
+ if ( height<0 )
return;
m_minAcceptableRowHeight = height;
};