]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/wxpoem/wxpoem.cpp
more files to ignore in cvs commands (setup.h, lex_yy.c, y_tab.c)
[wxWidgets.git] / samples / wxpoem / wxpoem.cpp
index 86c292b9f9a01cd0c3ad9410cdba1bb37460c074..de5a8fc21db9139d5e7fae965073536889736687 100644 (file)
 
 #include "wxpoem.h"
 
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+#include "corner1.xpm"
+#include "corner2.xpm"
+#include "corner3.xpm"
+#include "corner4.xpm"
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
 
+#ifdef __WINDOWS__
+#include <windows.h>
+#ifdef DrawText
+#undef DrawText
+#endif
+#endif
+
 #define         buf_size 10000
 #define         DEFAULT_POETRY_DAT "wxpoem"
 #define         DEFAULT_POETRY_IND "wxpoem"
@@ -69,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
@@ -152,6 +164,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)
@@ -316,13 +336,13 @@ 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);
                 dc->SetFont(* NormalFont);
                 dc->SetTextForeground(* wxBLACK);
-                dc->DrawText(line, (float)x, (float)y);
+                dc->DrawText(line, x, y);
               }
            }
         }
@@ -343,7 +363,7 @@ void MainWindow::ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y)
          int x = (int)((width - xx)/2.0);
          dc->SetFont(* NormalFont);
          dc->SetTextForeground(* wxBLACK);
-         dc->DrawText(cont, (float)x, (float)y);
+         dc->DrawText(cont, x, y);
        }
        y += 2*char_height;
     }
@@ -385,7 +405,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())
@@ -405,16 +425,16 @@ void MainWindow::ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y)
       dc->DrawLine(THICK_LINE_BORDER, THICK_LINE_BORDER,
                    width-THICK_LINE_BORDER, THICK_LINE_BORDER);
 
-#ifdef __WXMSW__
+//#ifdef __WXMSW__
       // Draw icons
-      dc->DrawIcon(* Corner1, 0.0, 0.0);
-      dc->DrawIcon(* Corner2, (float)(width-32.0), 0.0);
+      dc->DrawIcon(* Corner1, 00);
+      dc->DrawIcon(* Corner2, int(width-32), 0);
 
       int y2 = height - 32;
       int x2 = (width-32);
-      dc->DrawIcon(* Corner3, 0.0, (float)y2);
-      dc->DrawIcon(* Corner4, (float)x2, (float)y2);
-#endif
+      dc->DrawIcon(* Corner3, 0y2);
+      dc->DrawIcon(* Corner4, x2, y2);
+//#endif
     }
 }
 
@@ -569,7 +589,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);
@@ -632,6 +652,12 @@ bool MyApp::OnInit()
   Corner3 = new wxIcon("icon_3");
   Corner4 = new wxIcon("icon_4");
 #endif
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+  Corner1 = new wxIcon( corner1_xpm );
+  Corner2 = new wxIcon( corner2_xpm );
+  Corner3 = new wxIcon( corner3_xpm );
+  Corner4 = new wxIcon( corner4_xpm );
+#endif
 
   TheMainWindow->GetIndexLoadPoem();
   TheMainWindow->Resize();
@@ -645,17 +671,15 @@ 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;
   delete ItalicFont;
@@ -664,7 +688,7 @@ int MyApp::OnExit()
   return 0;
 }
 
-void MainWindow::OnCloseWindow(wxCloseEvent& event)
+void MainWindow::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
 {
   WritePreferences();
   this->Destroy();
@@ -688,7 +712,7 @@ MyCanvas::MyCanvas(wxFrame *frame, wxWindowID id, const wxPoint& pos, const wxSi
 }
 
 // Define the repainting behaviour
-void MyCanvas::OnPaint(wxPaintEvent& event)
+void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event))
 {
     wxPaintDC dc(this);
 
@@ -696,7 +720,7 @@ void MyCanvas::OnPaint(wxPaintEvent& event)
     {
         int xx, yy;
         TheMainWindow->GetClientSize(&xx, &yy);
-    
+
         wxMemoryDC memDC;
         memDC.SelectObject(* backingBitmap);
         dc.Blit(0, 0, backingBitmap->GetWidth(), backingBitmap->GetHeight(), &memDC, 0, 0);
@@ -705,7 +729,7 @@ void MyCanvas::OnPaint(wxPaintEvent& event)
 
 void MyCanvas::OnMouseEvent(wxMouseEvent& event)
 {
-  float x, y;
+  long x, y;
   event.Position(&x, &y);
   static int startPosX, startPosY, startFrameX, startFrameY;
 
@@ -714,11 +738,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, x, y);
-#endif
+    PopupMenu(popupMenu, (int)x, (int)y );
   }
   else if (event.LeftDown())
   {
@@ -737,7 +757,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);
@@ -839,8 +859,8 @@ bool LoadPoem(char *file_name, long position)
 {
     int ch = 0;
     int i = 0;
-    int j = 0;
-    int indexn = 0;
+//    int j = 0;
+//    int indexn = 0;
     char buf[100];
     long data;
     FILE *data_file;
@@ -1048,15 +1068,15 @@ 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;
 }
 
-void PopupFunction(wxMenu& menu, wxCommandEvent& event)
+void PopupFunction(wxMenu& /*menu*/, wxCommandEvent& event)
 {
-  switch (event.m_commandInt)
+  switch (event.GetId())
   {
      case POEM_NEXT:
        // Another poem/page