1/////////////////////////////////////////////////////////////////////////////
2// Name:        No names yet.
3// Purpose:     Contrib. demo
4// Author:      Aleksandras Gluchovas
5// Modified by:
6// Created:     04/11/98
7// RCS-ID:      $Id: fl_demo2.h 34912 2005-07-22 16:43:04Z MR $
8// Copyright:   (c) Aleksandras Gluchovas
9// Licence:     wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef __FLDEMO_G__
13#define __FLDEMO_G__
14
15// ID for the menu commands
16
17#define MINIMAL_QUIT    1
18#define MINIMAL_ABOUT 102
19
20#define ID_LOAD      103
21#define ID_STORE     104
22#define ID_AUTOSAVE  105
23//#define ID_SETTINGS  106
24#define ID_REMOVE    107
25#define ID_REMOVEALL 108
26#define ID_RECREATE  109
27#define ID_ACTIVATE  110
28#define ID_FIRST     111
29#define ID_SECOND    112
30#define ID_THIRD     113
31
32#define ID_SAY_ITSOK 114
33#define ID_BTN_YES   115
34#define ID_BTN_NO    116
35#define ID_BTN_ESC   117
36
37#define MAX_LAYOUTS   3
38
39#define FIRST_LAYOUT  0
40#define SECOND_LAYOUT 1
41#define THIRD_LAYOUT  2
42
43class wxFrameLayout;
44class wxObjectStorage;
45
46// FOR NOW::
47typedef wxPanel MyTestPanel;
48
49// Define a new application type
50
51class MyApp: public wxApp
52{
53public:
54    bool OnInit(void);
55};
56
57// Define a new frame type
58
59class MyFrame: public wxFrame
60{
61protected:
62
63    wxFrameLayout* mLayouts[MAX_LAYOUTS];
64
65    wxFrameLayout* mpNestedLayout;
66    wxFrameLayout* mpAboutBoxLayout;
67
68    int            mActiveLayoutNo;
69    bool           mAutoSave;
70    bool           mSavedAlready;
71
72    // container windows:
73
74    wxTextCtrl*    mpClntWindow;
75    wxPanel*       mpInternalFrm;
76
77    wxImageList    mImageList;
78
79    wxFrame       mAboutBox;
80
81    // helpers for control-creation
82
83    wxTextCtrl* CreateTxtCtrl ( const wxString& txt = wxT("wxTextCtrl"), wxWindow* parent = NULL  );
84    wxTreeCtrl* CreateTreeCtrl( const wxString& label = wxT("TreeCtrl") );
85    wxChoice*   CreateChoice  ( const wxString& txt = wxT("Choice1") );
86    wxButton*   CreateButton  ( const wxString& label = wxT("wxButton"), wxWindow* pParent = NULL, long id = ID_SAY_ITSOK );
87
88    // helpers for layout-creation
89
90    void AddSearchToolbars( wxFrameLayout& layout, wxWindow* pParent );
91    wxWindow* CreateDevLayout( wxFrameLayout& layout, wxWindow* pParent );
92
93    void DropInSomeBars( int layoutNo );
94    void CreateLayout( int layoutNo );
95    void RemoveLayout( int layoutNo );
96
97    void InitAboutBox();
98
99    void ActivateLayout( int layoutNo );
100
101public: /* public */
102
103    MyFrame( wxFrame *frame, const wxChar *title, int x, int y, int w, int h);
104
105    ~MyFrame();
106
107    void SyncMenuBarItems();
108
109    // event handlers
110
111    bool OnClose(void);
112
113    void OnLoad( wxCommandEvent& event );
114    void OnStore( wxCommandEvent& event );
115    void OnAutoSave( wxCommandEvent& event );
116    void OnQuit(wxCommandEvent& event);
117    void OnAbout(wxCommandEvent& event);
118    //void OnSettings( wxCommandEvent& event );
119    void OnRemove( wxCommandEvent& event );
120    void OnRemoveAll( wxCommandEvent& event );
121    void OnRecreate( wxCommandEvent& event );
122    void OnFirst( wxCommandEvent& event );
123    void OnSecond( wxCommandEvent& event );
124    void OnThird( wxCommandEvent& event );
125
126    void OnSayItsOk( wxCommandEvent& event );
127    void OnBtnYes( wxCommandEvent& event );
128    void OnBtnNo( wxCommandEvent& event );
129    void OnBtnEsc( wxCommandEvent& event );
130
131    void OnChar( wxKeyEvent& event );
132
133    DECLARE_EVENT_TABLE()
134};
135
136// Define a new button type, StartButton95 (Just for fun)
137
138class StartButton95 : public wxPanel
139{
140    DECLARE_DYNAMIC_CLASS( StartButton95 )
141
142    bool m_bPressed;
143    wxBitmap m_PBmp;
144    wxBitmap m_DBmp;
145
146public:
147    StartButton95(void) : m_bPressed(false) {}
148
149    StartButton95(wxWindow* parent)
150        : m_bPressed(false) { wxPanel::Create(parent,wxID_ANY); }
151
152    void OnMouseDown( wxMouseEvent& event );
153    void OnMouseUp( wxMouseEvent& event );
154    void OnPaint( wxPaintEvent& event );
155
156    DECLARE_EVENT_TABLE()
157};
158
159#endif
160
161