From 3baa26624a526e2919699e5061a020ee0a0a5411 Mon Sep 17 00:00:00 2001 From: =?utf8?q?W=C5=82odzimierz=20Skiba?= Date: Mon, 21 Mar 2005 20:22:39 +0000 Subject: [PATCH] More wxWidgets in wxPoem demo code. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32964 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- demos/poem/wxpoem.cpp | 151 ++++++++++++++++++------------------------ demos/poem/wxpoem.h | 4 ++ demos/poem/wxpoem.rc | 7 -- 3 files changed, 70 insertions(+), 92 deletions(-) diff --git a/demos/poem/wxpoem.cpp b/demos/poem/wxpoem.cpp index 334027ae0b..0b05f793cc 100644 --- a/demos/poem/wxpoem.cpp +++ b/demos/poem/wxpoem.cpp @@ -31,13 +31,11 @@ #include "wxpoem.h" -#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXX11__) #include "corner1.xpm" #include "corner2.xpm" #include "corner3.xpm" #include "corner4.xpm" #include "wxpoem.xpm" -#endif #define buf_size 10000 #define DEFAULT_POETRY_DAT "wxpoem" @@ -82,16 +80,6 @@ static bool index_ok = false; // Index loaded ok static bool paging = false; // Are we paging? static int current_page = 0; // Currently viewed page -wxIcon *Corner1 = NULL; -wxIcon *Corner2 = NULL; -wxIcon *Corner3 = NULL; -wxIcon *Corner4 = NULL; - -// Pens -wxPen *GreyPen = NULL; -wxPen *DarkGreyPen = NULL; -wxPen *WhitePen = NULL; - // Backing bitmap wxBitmap *backingBitmap = NULL; @@ -135,8 +123,28 @@ MainWindow::MainWindow(wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style): wxFrame(frame, id, title, pos, size, style) { + m_corners[0] = m_corners[1] = m_corners[2] = m_corners[3] = NULL; + ReadPreferences(); CreateFonts(); + + SetIcon(wxpoem_xpm); + + m_corners[0] = new wxIcon( corner1_xpm ); + m_corners[1] = new wxIcon( corner2_xpm ); + m_corners[2] = new wxIcon( corner3_xpm ); + m_corners[3] = new wxIcon( corner4_xpm ); +} + +MainWindow::~MainWindow() +{ + for (int i=0;i<4;i++) + { + if(m_corners[i]) + { + delete m_corners[i]; + } + } } // Read the poetry buffer, either for finding the size @@ -167,7 +175,7 @@ void MainWindow::ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y) if (DrawIt && wxColourDisplay()) { dc->SetBrush(*wxLIGHT_GREY_BRUSH); - dc->SetPen(*GreyPen); + dc->SetPen(*wxGREY_PEN); dc->DrawRectangle(0, 0, width, height); dc->SetBackgroundMode(wxTRANSPARENT); } @@ -378,9 +386,9 @@ void MainWindow::ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y) // Right and bottom white lines - 'grey' (black!) if // we're running on a mono display. if (wxColourDisplay()) - dc->SetPen(*WhitePen); + dc->SetPen(*wxWHITE_PEN); else - dc->SetPen(*DarkGreyPen); + dc->SetPen(*wxBLACK_PEN); dc->DrawLine(width-THICK_LINE_BORDER, THICK_LINE_BORDER, width-THICK_LINE_BORDER, height-THICK_LINE_BORDER); @@ -388,20 +396,20 @@ void MainWindow::ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y) THICK_LINE_BORDER, height-THICK_LINE_BORDER); // Left and top grey lines - dc->SetPen(*DarkGreyPen); + dc->SetPen(*wxBLACK_PEN); dc->DrawLine(THICK_LINE_BORDER, height-THICK_LINE_BORDER, THICK_LINE_BORDER, THICK_LINE_BORDER); dc->DrawLine(THICK_LINE_BORDER, THICK_LINE_BORDER, width-THICK_LINE_BORDER, THICK_LINE_BORDER); // Draw icons - dc->DrawIcon(* Corner1, 0, 0); - dc->DrawIcon(* Corner2, int(width-32), 0); + dc->DrawIcon(* m_corners[0], 0, 0); + dc->DrawIcon(* m_corners[1], int(width-32), 0); int y2 = height - 32; int x2 = (width-32); - dc->DrawIcon(* Corner3, 0, y2); - dc->DrawIcon(* Corner4, x2, y2); + dc->DrawIcon(* m_corners[2], 0, y2); + dc->DrawIcon(* m_corners[3], x2, y2); } } @@ -513,91 +521,64 @@ void MainWindow::Search(bool ask) bool MyApp::OnInit() { - poem_buffer = new wxChar[buf_size]; - - GreyPen = new wxPen(_T("LIGHT GREY"), THICK_LINE_WIDTH, wxSOLID); - DarkGreyPen = new wxPen(_T("GREY"), THICK_LINE_WIDTH, wxSOLID); - WhitePen = new wxPen(_T("WHITE"), THICK_LINE_WIDTH, wxSOLID); + poem_buffer = new wxChar[buf_size]; - // Seed the random number generator + // Seed the random number generator #ifdef __WXWINCE__ - srand((unsigned) CeGetRandomSeed()); + srand((unsigned) CeGetRandomSeed()); #else - time_t current_time; + time_t current_time; - (void)time(¤t_time); - srand((unsigned int)current_time); + (void)time(¤t_time); + srand((unsigned int)current_time); #endif // randomize(); - pages[0] = 0; + pages[0] = 0; - TheMainWindow = new MainWindow(NULL, - wxID_ANY, - _T("wxPoem"), - wxPoint(XPos, YPos), - wxDefaultSize, - wxCAPTION|wxMINIMIZE_BOX|wxSYSTEM_MENU|wxCLOSE_BOX|wxFULL_REPAINT_ON_RESIZE - ); + TheMainWindow = new MainWindow(NULL, + wxID_ANY, + _T("wxPoem"), + wxPoint(XPos, YPos), + wxDefaultSize, + wxCAPTION|wxMINIMIZE_BOX|wxSYSTEM_MENU|wxCLOSE_BOX|wxFULL_REPAINT_ON_RESIZE + ); - TheMainWindow->SetIcon(wxICON(wxpoem)); + TheMainWindow->canvas = new MyCanvas(TheMainWindow); - TheMainWindow->canvas = new MyCanvas(TheMainWindow); - - if (argc > 1) - { - index_filename = wxStrcpy(new wxChar[wxStrlen(argv[1]) + 1], argv[1]); - data_filename = wxStrcpy(new wxChar[wxStrlen(argv[1]) + 1], argv[1]); - } - else - { - index_filename = _T(DEFAULT_POETRY_IND); - data_filename = _T(DEFAULT_POETRY_DAT); - } - TryLoadIndex(); - -#ifdef __WXMSW__ - Corner1 = new wxIcon(_T("icon_1")); - Corner2 = new wxIcon(_T("icon_2")); - Corner3 = new wxIcon(_T("icon_3")); - Corner4 = new wxIcon(_T("icon_4")); -#endif -#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXX11__) - Corner1 = new wxIcon( corner1_xpm ); - Corner2 = new wxIcon( corner2_xpm ); - Corner3 = new wxIcon( corner3_xpm ); - Corner4 = new wxIcon( corner4_xpm ); -#endif + if (argc > 1) + { + index_filename = wxStrcpy(new wxChar[wxStrlen(argv[1]) + 1], argv[1]); + data_filename = wxStrcpy(new wxChar[wxStrlen(argv[1]) + 1], argv[1]); + } + else + { + index_filename = _T(DEFAULT_POETRY_IND); + data_filename = _T(DEFAULT_POETRY_DAT); + } + TryLoadIndex(); - TheMainWindow->GetIndexLoadPoem(); - TheMainWindow->Resize(); - TheMainWindow->Show(true); + TheMainWindow->GetIndexLoadPoem(); + TheMainWindow->Resize(); + TheMainWindow->Show(true); - return true; + return true; } int MyApp::OnExit() { - if (backingBitmap) - delete backingBitmap; - delete GreyPen; - delete DarkGreyPen; - delete WhitePen; - - delete Corner1; - delete Corner2; - delete Corner3; - delete Corner4; + if (backingBitmap) + delete backingBitmap; - delete[] poem_buffer; + delete[] poem_buffer; - return 0; + return 0; } void MainWindow::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { - WritePreferences(); - this->Destroy(); + WritePreferences(); + this->Destroy(); } void MainWindow::OnChar(wxKeyEvent& event) @@ -866,14 +847,14 @@ long MainWindow::DoSearch(void) return false; FILE *file; - long i = 0; + size_t i = 0; int ch = 0; wxChar buf[100]; long find_start; long previous_poem_start; bool found = false; - int search_length = m_searchString.length(); + size_t search_length = m_searchString.length(); if (same_search) { diff --git a/demos/poem/wxpoem.h b/demos/poem/wxpoem.h index 0b63613546..1c67f781f4 100644 --- a/demos/poem/wxpoem.h +++ b/demos/poem/wxpoem.h @@ -51,6 +51,7 @@ class MainWindow: public wxFrame public: MyCanvas *canvas; MainWindow(wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style); + ~MainWindow(); void OnCloseWindow(wxCloseEvent& event); void OnChar(wxKeyEvent& event); @@ -90,6 +91,9 @@ private: wxFont *m_boldFont; wxFont *m_italicFont; + // Icons + wxIcon *m_corners[4]; + DECLARE_EVENT_TABLE() }; diff --git a/demos/poem/wxpoem.rc b/demos/poem/wxpoem.rc index 8fdb7de3ee..98bfc4ed7c 100644 --- a/demos/poem/wxpoem.rc +++ b/demos/poem/wxpoem.rc @@ -1,11 +1,4 @@ aaaa ICON "wxpoem.ico" -wxpoem ICON "wxpoem.ico" -wxSTD_FRAME ICON "wxpoem.ico" - -icon_1 ICON "corner1.ico" -icon_2 ICON "corner2.ico" -icon_3 ICON "corner3.ico" -icon_4 ICON "corner4.ico" #include "wx/msw/wx.rc" -- 2.45.2