X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a60b1f5d5792008dfbb71094a6b6d3c29e11fc20..830efc9b0cb87eae22d4435af7858175017522ab:/samples/grid/grid.cpp?ds=sidebyside diff --git a/samples/grid/grid.cpp b/samples/grid/grid.cpp index 2e1d4544d2..3f37efaf5e 100644 --- a/samples/grid/grid.cpp +++ b/samples/grid/grid.cpp @@ -1,9 +1,9 @@ /* - * File: grid.cpp - * Purpose: wxGrid test - * Author: Julian Smart - * Created: 1995 - * Updated: + * File: grid.cpp + * Purpose: wxGrid test + * Author: Julian Smart + * Created: 1995 + * Updated: * Copyright: (c) 1995, AIAI, University of Edinburgh */ @@ -25,8 +25,10 @@ static const char sccsid[] = "%W% %G%"; // Define a new application type class MyApp: public wxApp -{ public: - bool OnInit(void); +{ +public: + virtual bool OnInit(void); + virtual int OnExit(); }; @@ -85,235 +87,258 @@ IMPLEMENT_APP(MyApp) bool MyApp::OnInit(void) { #ifdef __WXMSW__ - cellBitmap1 = new wxBitmap("bitmap1"); - cellBitmap2 = new wxBitmap("bitmap2"); + cellBitmap1 = new wxBitmap("bitmap1"); + cellBitmap2 = new wxBitmap("bitmap2"); #endif - // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "wxGrid Sample", wxPoint(50, 50), wxSize(450, 300)); - - // Give it an icon + // Create the main frame window + MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "wxGrid Sample", wxPoint(50, 50), wxSize(450, 300)); + + // Give it an icon #ifdef __WXMSW__ - frame->SetIcon(wxIcon("mondrian")); + frame->SetIcon(wxIcon("mondrian")); #endif - // Make a menubar - wxMenu *file_menu = new wxMenu; - file_menu->Append(GRID_QUIT, "E&xit"); - - wxMenu *settings_menu = new wxMenu; - settings_menu->Append(GRID_TOGGLE_EDITABLE, "&Toggle editable"); - settings_menu->Append(GRID_TOGGLE_EDITINPLACE, "&Toggle edit in place"); - settings_menu->Append(GRID_TOGGLE_ROW_LABEL, "Toggle ro&w label"); - settings_menu->Append(GRID_TOGGLE_COL_LABEL, "Toggle co&l label"); - settings_menu->Append(GRID_TOGGLE_DIVIDERS, "Toggle ÷rs"); - settings_menu->AppendSeparator(); - settings_menu->Append(GRID_LEFT_CELL, "&Left cell alignment "); - settings_menu->Append(GRID_CENTRE_CELL, "&Centre cell alignment "); - settings_menu->Append(GRID_RIGHT_CELL, "&Right cell alignment "); - settings_menu->AppendSeparator(); - settings_menu->Append(GRID_COLOUR_LABEL_BACKGROUND, "Choose a label &background colour"); - settings_menu->Append(GRID_COLOUR_LABEL_TEXT, "Choose a label fore&ground colour"); - settings_menu->Append(GRID_NORMAL_LABEL_COLOURING, "&Normal label colouring"); - settings_menu->AppendSeparator(); - settings_menu->Append(GRID_COLOUR_CELL_BACKGROUND, "Choo&se a cell &background colour"); - settings_menu->Append(GRID_COLOUR_CELL_TEXT, "Choose &a cell foreground colour"); - settings_menu->Append(GRID_NORMAL_CELL_COLOURING, "N&ormal cell colouring"); - - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(settings_menu, "&Settings"); - frame->SetMenuBar(menu_bar); - - // Make a grid - frame->grid = new wxGrid(frame, 0, 0, 400, 400); - - frame->grid->CreateGrid(10, 8); - frame->grid->SetColumnWidth(3, 200); - frame->grid->SetRowHeight(4, 45); - frame->grid->SetCellValue("First cell", 0, 0); - frame->grid->SetCellValue("Another cell", 1, 1); - frame->grid->SetCellValue("Yet another cell", 2, 2); - frame->grid->SetCellTextFont(wxFont(10, wxROMAN, wxITALIC, wxNORMAL), 0, 0); - frame->grid->SetCellTextColour(*wxRED, 1, 1); - frame->grid->SetCellBackgroundColour(*wxCYAN, 2, 2); - if (cellBitmap1 && cellBitmap2) - { - frame->grid->SetCellAlignment(wxCENTRE, 5, 0); - frame->grid->SetCellAlignment(wxCENTRE, 6, 0); - frame->grid->SetCellBitmap(cellBitmap1, 5, 0); - frame->grid->SetCellBitmap(cellBitmap2, 6, 0); - } - - frame->grid->UpdateDimensions(); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - return TRUE; + // Make a menubar + wxMenu *file_menu = new wxMenu; + file_menu->Append(GRID_QUIT, "E&xit"); + + wxMenu *settings_menu = new wxMenu; + settings_menu->Append(GRID_TOGGLE_EDITABLE, "&Toggle editable"); + settings_menu->Append(GRID_TOGGLE_EDITINPLACE, "&Toggle edit in place"); + settings_menu->Append(GRID_TOGGLE_ROW_LABEL, "Toggle ro&w label"); + settings_menu->Append(GRID_TOGGLE_COL_LABEL, "Toggle co&l label"); + settings_menu->Append(GRID_TOGGLE_DIVIDERS, "Toggle ÷rs"); + settings_menu->AppendSeparator(); + settings_menu->Append(GRID_LEFT_CELL, "&Left cell alignment "); + settings_menu->Append(GRID_CENTRE_CELL, "&Centre cell alignment "); + settings_menu->Append(GRID_RIGHT_CELL, "&Right cell alignment "); + settings_menu->AppendSeparator(); + settings_menu->Append(GRID_COLOUR_LABEL_BACKGROUND, "Choose a label &background colour"); + settings_menu->Append(GRID_COLOUR_LABEL_TEXT, "Choose a label fore&ground colour"); + settings_menu->Append(GRID_NORMAL_LABEL_COLOURING, "&Normal label colouring"); + settings_menu->AppendSeparator(); + settings_menu->Append(GRID_COLOUR_CELL_BACKGROUND, "Choo&se a cell &background colour"); + settings_menu->Append(GRID_COLOUR_CELL_TEXT, "Choose &a cell foreground colour"); + settings_menu->Append(GRID_NORMAL_CELL_COLOURING, "N&ormal cell colouring"); + + wxMenuBar *menu_bar = new wxMenuBar; + menu_bar->Append(file_menu, "&File"); + menu_bar->Append(settings_menu, "&Settings"); + frame->SetMenuBar(menu_bar); + + // Make a grid + frame->grid = new wxGrid(frame, 0, 0, 400, 400); + + frame->grid->CreateGrid(10, 8); + frame->grid->SetColumnWidth(3, 200); + frame->grid->SetRowHeight(4, 45); + frame->grid->SetCellValue("First cell", 0, 0); + frame->grid->SetCellValue("Another cell", 1, 1); + frame->grid->SetCellValue("Yet another cell", 2, 2); + frame->grid->SetCellTextFont(wxFont(10, wxROMAN, wxITALIC, wxNORMAL), 0, 0); + frame->grid->SetCellTextColour(*wxRED, 1, 1); + frame->grid->SetCellBackgroundColour(*wxCYAN, 2, 2); + if (cellBitmap1 && cellBitmap2) + { + frame->grid->SetCellAlignment(wxCENTRE, 5, 0); + frame->grid->SetCellAlignment(wxCENTRE, 6, 0); + frame->grid->SetCellBitmap(cellBitmap1, 5, 0); + frame->grid->SetCellBitmap(cellBitmap2, 6, 0); + } + + frame->grid->UpdateDimensions(); + + // Show the frame + frame->Show(TRUE); + + SetTopWindow(frame); + return TRUE; +} + +int MyApp::OnExit() +{ + if (cellBitmap1) + { + delete cellBitmap1; + cellBitmap1 = (wxBitmap *) NULL; + } + + if (cellBitmap2) + { + delete cellBitmap2; + cellBitmap1 = (wxBitmap *) NULL; + } + + // exit code is 0, everything is ok + return 0; } + // My frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, -1, title, pos, size) +MyFrame::MyFrame(wxFrame *frame, const wxString& title, + const wxPoint& pos, const wxSize& size): + wxFrame(frame, -1, title, pos, size) { - grid = (wxGrid*) NULL; + grid = (wxGrid*) NULL; } BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(GRID_TOGGLE_EDITABLE, MyFrame::ToggleEditable) - EVT_MENU(GRID_TOGGLE_EDITINPLACE, MyFrame::ToggleEditInPlace) - EVT_MENU(GRID_TOGGLE_ROW_LABEL, MyFrame::ToggleRowLabel) - EVT_MENU(GRID_TOGGLE_COL_LABEL, MyFrame::ToggleColLabel) - EVT_MENU(GRID_TOGGLE_DIVIDERS, MyFrame::ToggleDividers) - EVT_MENU(GRID_LEFT_CELL, MyFrame::LeftCell) - EVT_MENU(GRID_CENTRE_CELL, MyFrame::CentreCell) - EVT_MENU(GRID_RIGHT_CELL, MyFrame::RightCell) - EVT_MENU(GRID_COLOUR_LABEL_BACKGROUND, MyFrame::ColourLabelBackground) - EVT_MENU(GRID_COLOUR_LABEL_TEXT, MyFrame::ColourLabelText) - EVT_MENU(GRID_NORMAL_LABEL_COLOURING, MyFrame::NormalLabelColouring) - EVT_MENU(GRID_COLOUR_CELL_BACKGROUND, MyFrame::ColourCellBackground) - EVT_MENU(GRID_COLOUR_CELL_TEXT, MyFrame::ColourCellText) - EVT_MENU(GRID_NORMAL_CELL_COLOURING, MyFrame::NormalCellColouring) - EVT_MENU(GRID_QUIT, MyFrame::Quit) + EVT_MENU(GRID_TOGGLE_EDITABLE, MyFrame::ToggleEditable) + EVT_MENU(GRID_TOGGLE_EDITINPLACE, MyFrame::ToggleEditInPlace) + EVT_MENU(GRID_TOGGLE_ROW_LABEL, MyFrame::ToggleRowLabel) + EVT_MENU(GRID_TOGGLE_COL_LABEL, MyFrame::ToggleColLabel) + EVT_MENU(GRID_TOGGLE_DIVIDERS, MyFrame::ToggleDividers) + EVT_MENU(GRID_LEFT_CELL, MyFrame::LeftCell) + EVT_MENU(GRID_CENTRE_CELL, MyFrame::CentreCell) + EVT_MENU(GRID_RIGHT_CELL, MyFrame::RightCell) + EVT_MENU(GRID_COLOUR_LABEL_BACKGROUND, MyFrame::ColourLabelBackground) + EVT_MENU(GRID_COLOUR_LABEL_TEXT, MyFrame::ColourLabelText) + EVT_MENU(GRID_NORMAL_LABEL_COLOURING, MyFrame::NormalLabelColouring) + EVT_MENU(GRID_COLOUR_CELL_BACKGROUND, MyFrame::ColourCellBackground) + EVT_MENU(GRID_COLOUR_CELL_TEXT, MyFrame::ColourCellText) + EVT_MENU(GRID_NORMAL_CELL_COLOURING, MyFrame::NormalCellColouring) + EVT_MENU(GRID_QUIT, MyFrame::Quit) END_EVENT_TABLE() void MyFrame::ToggleEditable(wxCommandEvent& WXUNUSED(event)) { - grid->SetEditable(!grid->GetEditable()); - grid->Refresh(); + grid->SetEditable(!grid->GetEditable()); + grid->Refresh(); } void MyFrame::ToggleEditInPlace(wxCommandEvent& WXUNUSED(event)) { - grid->SetEditInPlace(!grid->GetEditInPlace()); - grid->Refresh(); + grid->SetEditInPlace(!grid->GetEditInPlace()); + grid->Refresh(); } void MyFrame::ToggleRowLabel(wxCommandEvent& WXUNUSED(event)) { - if (grid->GetLabelSize(wxVERTICAL) > 0) + if (grid->GetLabelSize(wxVERTICAL) > 0) grid->SetLabelSize(wxVERTICAL, 0); - else + else grid->SetLabelSize(wxVERTICAL, 40); - grid->Refresh(); + + grid->Refresh(); } void MyFrame::ToggleColLabel(wxCommandEvent& WXUNUSED(event)) { - if (grid->GetLabelSize(wxHORIZONTAL) > 0) + if (grid->GetLabelSize(wxHORIZONTAL) > 0) grid->SetLabelSize(wxHORIZONTAL, 0); - else + else grid->SetLabelSize(wxHORIZONTAL, 20); + grid->Refresh(); } void MyFrame::ToggleDividers(wxCommandEvent& WXUNUSED(event)) { - if (!grid->GetDividerPen().Ok()) + if (!grid->GetDividerPen().Ok()) grid->SetDividerPen(wxPen(wxT("LIGHT GREY"), 1, wxSOLID)); - else + else grid->SetDividerPen(wxNullPen); - grid->Refresh(); + +grid->Refresh(); } void MyFrame::LeftCell(wxCommandEvent& WXUNUSED(event)) { - grid->SetCellAlignment(wxLEFT); - grid->Refresh(); + grid->SetCellAlignment(wxLEFT); + grid->Refresh(); } void MyFrame::CentreCell(wxCommandEvent& WXUNUSED(event)) { - grid->SetCellAlignment(wxCENTRE); - grid->Refresh(); + grid->SetCellAlignment(wxCENTRE); + grid->Refresh(); } void MyFrame::RightCell(wxCommandEvent& WXUNUSED(event)) { - grid->SetCellAlignment(wxRIGHT); - grid->Refresh(); + grid->SetCellAlignment(wxRIGHT); + grid->Refresh(); } void MyFrame::ColourLabelBackground(wxCommandEvent& WXUNUSED(event)) { - wxColourData data; - data.SetChooseFull(TRUE); - wxColourDialog dialog(this, &data); - if (dialog.ShowModal() != wxID_CANCEL) - { + wxColourData data; + data.SetChooseFull(TRUE); + wxColourDialog dialog(this, &data); + if (dialog.ShowModal() != wxID_CANCEL) + { wxColourData retData = dialog.GetColourData(); wxColour col = retData.GetColour(); grid->SetLabelBackgroundColour(col); grid->Refresh(); - } + } } void MyFrame::ColourLabelText(wxCommandEvent& WXUNUSED(event)) { - wxColourData data; - data.SetChooseFull(TRUE); - wxColourDialog dialog(this, &data); - if (dialog.ShowModal() != wxID_CANCEL) - { + wxColourData data; + data.SetChooseFull(TRUE); + wxColourDialog dialog(this, &data); + if (dialog.ShowModal() != wxID_CANCEL) + { wxColourData retData = dialog.GetColourData(); wxColour col = retData.GetColour(); grid->SetLabelTextColour(col); grid->Refresh(); - } + } } void MyFrame::NormalLabelColouring(wxCommandEvent& WXUNUSED(event)) { - grid->SetLabelBackgroundColour(*wxLIGHT_GREY); - grid->SetLabelTextColour(*wxBLACK); - grid->Refresh(); + grid->SetLabelBackgroundColour(*wxLIGHT_GREY); + grid->SetLabelTextColour(*wxBLACK); + grid->Refresh(); } void MyFrame::ColourCellBackground(wxCommandEvent& WXUNUSED(event)) { - wxColourData data; - data.SetChooseFull(TRUE); - wxColourDialog dialog(this, &data); - if (dialog.ShowModal() != wxID_CANCEL) - { + wxColourData data; + data.SetChooseFull(TRUE); + wxColourDialog dialog(this, &data); + if (dialog.ShowModal() != wxID_CANCEL) + { wxColourData retData = dialog.GetColourData(); wxColour col = retData.GetColour(); grid->SetCellBackgroundColour(col); grid->Refresh(); - } + } } void MyFrame::ColourCellText(wxCommandEvent& WXUNUSED(event)) { - wxColourData data; - data.SetChooseFull(TRUE); - wxColourDialog dialog(this, &data); - if (dialog.ShowModal() != wxID_CANCEL) - { + wxColourData data; + data.SetChooseFull(TRUE); + wxColourDialog dialog(this, &data); + if (dialog.ShowModal() != wxID_CANCEL) + { wxColourData retData = dialog.GetColourData(); wxColour col = retData.GetColour(); grid->SetCellTextColour(col); grid->Refresh(); - } + } } void MyFrame::NormalCellColouring(wxCommandEvent& WXUNUSED(event)) { - grid->SetCellBackgroundColour(*wxWHITE); - grid->SetCellTextColour(*wxBLACK); - grid->Refresh(); + grid->SetCellBackgroundColour(*wxWHITE); + grid->SetCellTextColour(*wxBLACK); + grid->Refresh(); } void MyFrame::Quit(wxCommandEvent& WXUNUSED(event)) { - this->Close(TRUE); + this->Close(TRUE); } // Ensure that the grid's edit control always has the focus. void MyFrame::OnActivate(wxActivateEvent& event) { - if (grid) grid->OnActivate(event.GetActive()); + if (grid) grid->OnActivate(event.GetActive()); }