X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bbf7319063e50f6db64c521c52412609d69bc980..65e782405b6a48efe05eb05cfff81471ce0c6fa6:/samples/wxpoem/wxpoem.cpp?ds=sidebyside diff --git a/samples/wxpoem/wxpoem.cpp b/samples/wxpoem/wxpoem.cpp index cc3f25bad6..49833dd30d 100644 --- a/samples/wxpoem/wxpoem.cpp +++ b/samples/wxpoem/wxpoem.cpp @@ -35,7 +35,7 @@ #include "wxpoem.h" -#ifdef __WXGTK__ +#if defined(__WXGTK__) || defined(__WXMOTIF__) #include "corner1.xpm" #include "corner2.xpm" #include "corner3.xpm" @@ -47,6 +47,13 @@ #include #include +#ifdef __WINDOWS__ +#include +#ifdef DrawText +#undef DrawText +#endif +#endif + #define buf_size 10000 #define DEFAULT_POETRY_DAT "wxpoem" #define DEFAULT_POETRY_IND "wxpoem" @@ -76,8 +83,6 @@ static bool same_search = FALSE; // Searching on same string static long poem_index[600]; // Index of poem starts static long nitems = 0; // Number of poems -static int desired_char_height = DEFAULT_CHAR_HEIGHT; // Desired height -static char DesiredFont[64]; // Chosen font static int char_height = DEFAULT_CHAR_HEIGHT; // Actual height static int index_ptr = -1; // Pointer into index static int poem_height, poem_width; // Size of poem @@ -132,10 +137,6 @@ void PopupFunction(wxMenu& menu, wxCommandEvent& event); wxHelpController *HelpController = NULL; -// A macro needed for some compilers (AIX) that need 'main' to be defined -// in the application itself. -IMPLEMENT_WXWIN_MAIN - IMPLEMENT_APP(MyApp) MainWindow *TheMainWindow = NULL; @@ -159,6 +160,14 @@ MainWindow::MainWindow(wxFrame *frame, wxWindowID id, const wxString& title, { } +MainWindow::~MainWindow() +{ + // Note: this must be done before the main window/canvas are destroyed + // or we get an error (no parent window for menu item button) + delete popupMenu; + popupMenu = NULL; +} + // Read the poetry buffer, either for finding the size // or for writing to a bitmap (not to the window directly, // since that displays messily) @@ -323,7 +332,7 @@ void MainWindow::ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y) dc->GetTextExtent(line, &xx, &yy); FindMax(&curr_width, (int)xx); - + if (DrawIt) { int x = (int)((width - xx)/2.0); @@ -392,7 +401,7 @@ void MainWindow::ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y) dc->DrawLine(width-THIN_LINE_BORDER, THIN_LINE_BORDER, width-THIN_LINE_BORDER, height-THIN_LINE_BORDER); dc->DrawLine(width-THIN_LINE_BORDER, height-THIN_LINE_BORDER, THIN_LINE_BORDER, height-THIN_LINE_BORDER); dc->DrawLine(THIN_LINE_BORDER, height-THIN_LINE_BORDER, THIN_LINE_BORDER, THIN_LINE_BORDER); - + // Right and bottom white lines - 'grey' (black!) if // we're running on a mono display. if (wxColourDisplay()) @@ -576,7 +585,7 @@ void CopyToClipboard(HWND handle, char *s) bool MyApp::OnInit() { poem_buffer = new char[buf_size]; - + GreyPen = new wxPen("LIGHT GREY", THICK_LINE_WIDTH, wxSOLID); DarkGreyPen = new wxPen("GREY", THICK_LINE_WIDTH, wxSOLID); WhitePen = new wxPen("WHITE", THICK_LINE_WIDTH, wxSOLID); @@ -597,13 +606,13 @@ bool MyApp::OnInit() // randomize(); pages[0] = 0; - TheMainWindow = new MainWindow(NULL, -1, "wxPoem", wxPoint(XPos, YPos), wxSize(100, 100), wxCAPTION|wxMINIMIZE_BOX|wxSYSTEM_MENU); + TheMainWindow = new MainWindow(NULL, 500, "wxPoem", wxPoint(XPos, YPos), wxSize(100, 100), wxCAPTION|wxMINIMIZE_BOX|wxSYSTEM_MENU); #ifdef wx_x TheMainWindow->SetIcon(Icon("wxpoem")); #endif - TheMainWindow->canvas = new MyCanvas(TheMainWindow, -1, wxDefaultPosition, wxDefaultSize); + TheMainWindow->canvas = new MyCanvas(TheMainWindow, 501, wxDefaultPosition, wxDefaultSize); popupMenu = new wxMenu("", (wxFunction)PopupFunction); popupMenu->Append(POEM_NEXT, "Next poem/page"); @@ -639,7 +648,7 @@ bool MyApp::OnInit() Corner3 = new wxIcon("icon_3"); Corner4 = new wxIcon("icon_4"); #endif -#ifdef __WXGTK__ +#if defined(__WXGTK__) || defined(__WXMOTIF__) Corner1 = new wxIcon( corner1_xpm ); Corner2 = new wxIcon( corner2_xpm ); Corner3 = new wxIcon( corner3_xpm ); @@ -658,17 +667,14 @@ int MyApp::OnExit() if (backingBitmap) delete backingBitmap; delete HelpController; - delete popupMenu; delete GreyPen; delete DarkGreyPen; delete WhitePen; -//#ifdef __WXMSW__ delete Corner1; delete Corner2; delete Corner3; delete Corner4; -//#endif delete NormalFont; delete BoldFont; @@ -689,7 +695,7 @@ void MainWindow::OnChar(wxKeyEvent& event) canvas->OnChar(event); } -BEGIN_EVENT_TABLE(MyCanvas, wxPanel) +BEGIN_EVENT_TABLE(MyCanvas, wxWindow) EVT_MOUSE_EVENTS(MyCanvas::OnMouseEvent) EVT_CHAR(MyCanvas::OnChar) EVT_PAINT(MyCanvas::OnPaint) @@ -697,7 +703,7 @@ END_EVENT_TABLE() // Define a constructor for my canvas MyCanvas::MyCanvas(wxFrame *frame, wxWindowID id, const wxPoint& pos, const wxSize& size): - wxPanel(frame, id, pos, size) + wxWindow(frame, id, pos, size) { } @@ -710,7 +716,7 @@ void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) { int xx, yy; TheMainWindow->GetClientSize(&xx, &yy); - + wxMemoryDC memDC; memDC.SelectObject(* backingBitmap); dc.Blit(0, 0, backingBitmap->GetWidth(), backingBitmap->GetHeight(), &memDC, 0, 0); @@ -719,7 +725,7 @@ void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) void MyCanvas::OnMouseEvent(wxMouseEvent& event) { - float x, y; + long x, y; event.Position(&x, &y); static int startPosX, startPosY, startFrameX, startFrameY; @@ -728,11 +734,7 @@ void MyCanvas::OnMouseEvent(wxMouseEvent& event) if (event.RightDown()) { // Versions from wxWin 1.67 are probably OK -#if 0 // wx_motif - FakePopupMenu(popupMenu, x, y); -#else PopupMenu(popupMenu, (int)x, (int)y ); -#endif } else if (event.LeftDown()) { @@ -751,7 +753,7 @@ void MyCanvas::OnMouseEvent(wxMouseEvent& event) int x1 = (int)x; int y1 = (int)y; ClientToScreen(&x1, &y1); - + int dX = x1 - startPosX; int dY = y1 - startPosY; GetParent()->Move(startFrameX + dX, startFrameY + dY); @@ -1062,7 +1064,7 @@ bool Compile(void) fprintf(file, "%ld\n\n", nitems); for (j = 0; j < nitems; j++) fprintf(file, "%ld\n", poem_index[j]); - + fclose(file); PoetryNotify("Poetry index compiled."); return TRUE; @@ -1070,7 +1072,7 @@ bool Compile(void) void PopupFunction(wxMenu& /*menu*/, wxCommandEvent& event) { - switch (event.m_commandInt) + switch (event.GetId()) { case POEM_NEXT: // Another poem/page