/*
 * File:     hello.h
 * Purpose:  Demo for wxWindows class library
 *
 *                       wxWindows 1.40
 * Copyright (c) 1993 Artificial Intelligence Applications Institute,
 *                   The University of Edinburgh
 *
 *                     Author: Julian Smart
 *                        Date: 18-4-93
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose is hereby granted without fee, provided
 * that the above copyright notice, author statement and this permission
 * notice appear in all copies of this software and related documentation.
 *
 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS,
 * IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
 *
 * IN NO EVENT SHALL THE ARTIFICIAL INTELLIGENCE APPLICATIONS INSTITUTE OR THE
 * UNIVERSITY OF EDINBURGH BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM
 * LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF
 * DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH
 * THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 */

// Define a new application
class MyApp: public wxApp
{
  public:
    wxFrame *OnInit(void);
};

// Define a new canvas which can receive some events
class MyCanvas: public wxCanvas
{
  public:
    MyCanvas(wxFrame *frame, int x, int y, int w, int h, int style = wxRETAINED);
    void OnPaint(void);
    void OnEvent(wxEvent& event);
    void OnChar(int ch);
};

// Define a new frame
class MyFrame: public wxFrame
{
  public:
    wxPanel *panel;
    wxTextWindow *text_window;
    MyCanvas *canvas;
    MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h);
    void OnSize(int w, int h);
    Bool OnClose(void);
    void OnMenuCommand(int id);
    void OnMenuSelect(int id);
    void Draw(wxDC& dc, Bool draw_bitmaps = TRUE);
};

// Callbacks
void button_proc(wxButton& but, wxEvent& event);
void list_proc(wxListBox& list, wxEvent& event);
void GenericOk(wxButton& but, wxEvent& event);

// Timer
class MyTimer: public wxTimer
{
 public:
  void Notify(void);
};

#define HELLO_QUIT       100
#define HELLO_PRINT      101
#define HELLO_TWIPS      103
#define HELLO_METRIC     104
#define HELLO_LOMETRIC   105
#define HELLO_NORMAL     106
#define HELLO_ZOOM       107
#define HELLO_ABOUT      108
#define HELLO_TIMER_ON   109
#define HELLO_TIMER_OFF  110
#define HELLO_LOAD_FILE  111
#define HELLO_PRINT_EPS  112  // Windows-only option
#define HELLO_COPY_MF    113  // Windows-only option
#define HELLO_SCALE      114
