]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/newgrid/griddemo.cpp
First draft of a cygwin script to create wxMSW distributions
[wxWidgets.git] / samples / newgrid / griddemo.cpp
index 35c0713d5c8d48422339facaeee74e30f3902ca6..81882094529abb70d9d0a4b8529afd3b8e4c5316 100644 (file)
@@ -71,6 +71,8 @@ BEGIN_EVENT_TABLE( GridFrame, wxFrame )
     EVT_MENU( ID_TOGGLEROWSIZING, GridFrame::ToggleRowSizing )
     EVT_MENU( ID_TOGGLECOLSIZING, GridFrame::ToggleColSizing )
     EVT_MENU( ID_TOGGLEGRIDSIZING, GridFrame::ToggleGridSizing )
+    EVT_MENU( ID_TOGGLEGRIDLINES, GridFrame::ToggleGridLines )
+    EVT_MENU( ID_AUTOSIZECOLS, GridFrame::AutoSizeCols )
     EVT_MENU( ID_SETLABELCOLOUR, GridFrame::SetLabelColour )
     EVT_MENU( ID_SETLABELTEXTCOLOUR, GridFrame::SetLabelTextColour )
     EVT_MENU( ID_ROWLABELHORIZALIGN, GridFrame::SetRowLabelHorizAlignment )
@@ -129,6 +131,8 @@ GridFrame::GridFrame()
     viewMenu->Append( ID_TOGGLEROWSIZING, "Ro&w drag-resize", "", TRUE );
     viewMenu->Append( ID_TOGGLECOLSIZING, "C&ol drag-resize", "", TRUE );
     viewMenu->Append( ID_TOGGLEGRIDSIZING, "&Grid drag-resize", "", TRUE );
+    viewMenu->Append( ID_TOGGLEGRIDLINES, "&Grid Lines", "", TRUE );
+    viewMenu->Append( ID_AUTOSIZECOLS, "&Auto-size cols" );
 
     wxMenu *rowLabelMenu = new wxMenu;
 
@@ -165,8 +169,8 @@ GridFrame::GridFrame()
     wxMenu *selectionMenu = new wxMenu;
 
     editMenu->Append( ID_CHANGESEL, "Change &selection mode",
-                     selectionMenu,
-                     "Change selection mode" );
+                      selectionMenu,
+                      "Change selection mode" );
 
     selectionMenu->Append( ID_SELCELLS, "Select &Cells" );
     selectionMenu->Append( ID_SELROWS, "Select &Rows" );
@@ -225,7 +229,7 @@ GridFrame::GridFrame()
     grid->SetCellBackgroundColour(3, 3, *wxLIGHT_GREY);
 
     grid->SetCellValue(4, 4, "a weird looking cell");
-    grid->SetCellAlignment(4, 4, wxCENTRE, wxCENTRE);
+    grid->SetCellAlignment(4, 4, wxALIGN_CENTRE, wxALIGN_CENTRE);
     grid->SetCellRenderer(4, 4, new MyGridCellRenderer);
 
     grid->SetCellValue(3, 0, "1");
@@ -288,6 +292,7 @@ void GridFrame::SetDefaults()
     GetMenuBar()->Check( ID_TOGGLEROWSIZING, TRUE );
     GetMenuBar()->Check( ID_TOGGLECOLSIZING, TRUE );
     GetMenuBar()->Check( ID_TOGGLEGRIDSIZING, TRUE );
+    GetMenuBar()->Check( ID_TOGGLEGRIDLINES, TRUE );
 }
 
 
@@ -344,6 +349,20 @@ void GridFrame::ToggleGridSizing( wxCommandEvent& WXUNUSED(ev) )
 }
 
 
+void GridFrame::ToggleGridLines( wxCommandEvent& WXUNUSED(ev) )
+{
+    grid->EnableGridLines(
+        GetMenuBar()->IsChecked( ID_TOGGLEGRIDLINES ) );
+}
+
+
+void GridFrame::AutoSizeCols( wxCommandEvent& WXUNUSED(ev) )
+{
+    grid->AutoSizeColumns();
+    grid->Refresh();
+}
+
+
 void GridFrame::SetLabelColour( wxCommandEvent& WXUNUSED(ev) )
 {
     wxColourDialog dlg( NULL );
@@ -379,16 +398,16 @@ void GridFrame::SetRowLabelHorizAlignment( wxCommandEvent& WXUNUSED(ev) )
 
     switch ( horiz )
     {
-        case wxLEFT:
-            horiz = wxCENTRE;
+        case wxALIGN_LEFT:
+            horiz = wxALIGN_CENTRE;
             break;
 
-        case wxCENTRE:
-            horiz = wxRIGHT;
+        case wxALIGN_CENTRE:
+            horiz = wxALIGN_RIGHT;
             break;
 
-        case wxRIGHT:
-            horiz = wxLEFT;
+        case wxALIGN_RIGHT:
+            horiz = wxALIGN_LEFT;
             break;
     }
 
@@ -402,16 +421,16 @@ void GridFrame::SetRowLabelVertAlignment( wxCommandEvent& WXUNUSED(ev) )
 
     switch ( vert )
     {
-        case wxTOP:
-            vert = wxCENTRE;
+        case wxALIGN_TOP:
+            vert = wxALIGN_CENTRE;
             break;
 
-        case wxCENTRE:
-            vert = wxBOTTOM;
+        case wxALIGN_CENTRE:
+            vert = wxALIGN_BOTTOM;
             break;
 
-        case wxBOTTOM:
-            vert = wxTOP;
+        case wxALIGN_BOTTOM:
+            vert = wxALIGN_TOP;
             break;
     }
 
@@ -426,16 +445,16 @@ void GridFrame::SetColLabelHorizAlignment( wxCommandEvent& WXUNUSED(ev) )
 
     switch ( horiz )
     {
-        case wxLEFT:
-            horiz = wxCENTRE;
+        case wxALIGN_LEFT:
+            horiz = wxALIGN_CENTRE;
             break;
 
-        case wxCENTRE:
-            horiz = wxRIGHT;
+        case wxALIGN_CENTRE:
+            horiz = wxALIGN_RIGHT;
             break;
 
-        case wxRIGHT:
-            horiz = wxLEFT;
+        case wxALIGN_RIGHT:
+            horiz = wxALIGN_LEFT;
             break;
     }
 
@@ -450,16 +469,16 @@ void GridFrame::SetColLabelVertAlignment( wxCommandEvent& WXUNUSED(ev) )
 
     switch ( vert )
     {
-        case wxTOP:
-            vert = wxCENTRE;
+        case wxALIGN_TOP:
+            vert = wxALIGN_CENTRE;
             break;
 
-        case wxCENTRE:
-            vert = wxBOTTOM;
+        case wxALIGN_CENTRE:
+            vert = wxALIGN_BOTTOM;
             break;
 
-        case wxBOTTOM:
-            vert = wxTOP;
+        case wxALIGN_BOTTOM:
+            vert = wxALIGN_TOP;
             break;
     }
 
@@ -497,9 +516,13 @@ void GridFrame::DeleteSelectedRows( wxCommandEvent& WXUNUSED(ev) )
 {
     if ( grid->IsSelection() )
     {
-        for ( int n = 0; n < grid->GetNumberRows(); n++ )
-           if ( grid->IsInSelection( n , 0 ) )
-               grid->DeleteRows( n, 1 );
+        grid->BeginBatch();
+        for ( int n = 0; n < grid->GetNumberRows(); )
+            if ( grid->IsInSelection( n , 0 ) )
+                grid->DeleteRows( n, 1 );
+           else
+               n++;
+        grid->EndBatch();
     }
 }
 
@@ -508,9 +531,13 @@ void GridFrame::DeleteSelectedCols( wxCommandEvent& WXUNUSED(ev) )
 {
     if ( grid->IsSelection() )
     {
-        for ( int n = 0; n < grid->GetNumberCols(); n++ )
-           if ( grid->IsInSelection( 0 , n ) )
-               grid->DeleteCols( n, 1 );
+        grid->BeginBatch();
+        for ( int n = 0; n < grid->GetNumberCols(); )
+            if ( grid->IsInSelection( 0 , n ) )
+                grid->DeleteCols( n, 1 );
+           else
+               n++;
+        grid->EndBatch();
     }
 }
 
@@ -572,6 +599,7 @@ void GridFrame::OnLabelLeftClick( wxGridEvent& ev )
     }
 
     if ( ev.ShiftDown() ) logBuf << " (shift down)";
+    if ( ev.ControlDown() ) logBuf << " (control down)";
     wxLogMessage( "%s", logBuf.c_str() );
 
     // you must call event skip if you want default grid processing
@@ -617,8 +645,16 @@ void GridFrame::OnColSize( wxGridSizeEvent& ev )
 void GridFrame::OnSelectCell( wxGridEvent& ev )
 {
     logBuf = "";
-    logBuf << "Selected cell at row " << ev.GetRow()
-           << " col " << ev.GetCol();
+    if ( ev.Selecting() )
+        logBuf << "Selected ";
+    else
+        logBuf << "Deselected ";
+    logBuf << "cell at row " << ev.GetRow()
+           << " col " << ev.GetCol()
+           << " ( ControlDown: "<< (ev.ControlDown() ? 'T':'F')
+           << ", ShiftDown: "<< (ev.ShiftDown() ? 'T':'F')
+           << ", AltDown: "<< (ev.AltDown() ? 'T':'F')
+           << ", MetaDown: "<< (ev.MetaDown() ? 'T':'F') << " )";
     wxLogMessage( "%s", logBuf.c_str() );
 
     // you must call Skip() if you want the default processing
@@ -629,11 +665,18 @@ void GridFrame::OnSelectCell( wxGridEvent& ev )
 void GridFrame::OnRangeSelected( wxGridRangeSelectEvent& ev )
 {
     logBuf = "";
-    logBuf  << "Selected cells from row " << ev.GetTopRow()
-            << " col " << ev.GetLeftCol()
-            << " to row " << ev.GetBottomRow()
-            << " col " << ev.GetRightCol();
-
+    if ( ev.Selecting() )
+        logBuf << "Selected ";
+    else
+        logBuf << "Deselected ";
+    logBuf << "cells from row " << ev.GetTopRow()
+           << " col " << ev.GetLeftCol()
+           << " to row " << ev.GetBottomRow()
+           << " col " << ev.GetRightCol()
+           << " ( ControlDown: "<< (ev.ControlDown() ? 'T':'F')
+           << ", ShiftDown: "<< (ev.ShiftDown() ? 'T':'F')
+           << ", AltDown: "<< (ev.AltDown() ? 'T':'F')
+           << ", MetaDown: "<< (ev.MetaDown() ? 'T':'F') << " )";
     wxLogMessage( "%s", logBuf.c_str() );
 
     ev.Skip();
@@ -831,7 +874,7 @@ enum Severity
     Sev_Max
 };
 
-static const wxChar* severities[] =
+static const wxString severities[] =
 {
     _T("wishlist"),
     _T("minor"),
@@ -896,12 +939,12 @@ wxString BugsGridTable::GetTypeName(int WXUNUSED(row), int col)
     return wxEmptyString;
 }
 
-long BugsGridTable::GetNumberRows()
+int BugsGridTable::GetNumberRows()
 {
     return WXSIZEOF(gs_dataBugsGrid);
 }
 
-long BugsGridTable::GetNumberCols()
+int BugsGridTable::GetNumberCols()
 {
     return Col_Max;
 }