]>
git.saurik.com Git - wxWidgets.git/blob - demos/life/dialogs.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Life! dialogs
4 // Author: Guillermo Rodriguez Garcia, <guille@iies.es>
8 // Copyright: (c) 2000, Guillermo Rodriguez Garcia
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // ==========================================================================
13 // headers, declarations, constants
14 // ==========================================================================
17 #pragma implementation "dialogs.h"
20 // For compilers that support precompilation, includes "wx/wx.h".
21 #include "wx/wxprec.h"
31 #include "wx/statline.h"
32 #include "wx/minifram.h"
39 // --------------------------------------------------------------------------
41 // --------------------------------------------------------------------------
43 #if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXX11__)
44 // logo for the about dialog
45 #include "bitmaps/life.xpm"
48 // sample configurations
49 #include "samples.inc"
51 // --------------------------------------------------------------------------
53 // --------------------------------------------------------------------------
55 // IDs for the controls and the menu commands
58 // listbox in samples dialog
62 // --------------------------------------------------------------------------
63 // event tables and other macros for wxWidgets
64 // --------------------------------------------------------------------------
67 BEGIN_EVENT_TABLE(LifeSamplesDialog
, wxDialog
)
68 EVT_LISTBOX (ID_LISTBOX
, LifeSamplesDialog::OnListBox
)
72 // ==========================================================================
74 // ==========================================================================
76 // --------------------------------------------------------------------------
78 // --------------------------------------------------------------------------
80 LifeSamplesDialog::LifeSamplesDialog(wxWindow
*parent
)
81 : wxDialog(parent
, wxID_ANY
, _("Sample games"),
82 wxDefaultPosition
, wxDefaultSize
)
86 // create and populate the list of available samples
87 m_list
= new wxListBox( this, ID_LISTBOX
,
91 wxLB_SINGLE
| wxLB_NEEDED_SB
| wxLB_HSCROLL
);
93 for (unsigned i
= 0; i
< (sizeof(g_patterns
) / sizeof(LifePattern
)); i
++)
94 m_list
->Append(g_patterns
[i
].m_name
);
97 wxStaticBox
*statbox
= new wxStaticBox( this, wxID_ANY
, _("Description"));
99 m_life
->SetPattern(g_patterns
[0]);
100 m_canvas
= new LifeCanvas( this, m_life
, false );
101 m_text
= new wxTextCtrl( this, wxID_ANY
,
102 g_patterns
[0].m_description
,
105 wxTE_MULTILINE
| wxTE_READONLY
);
108 wxStaticBoxSizer
*sizer1
= new wxStaticBoxSizer( statbox
, wxVERTICAL
);
109 sizer1
->Add( m_canvas
, 2, wxGROW
| wxALL
, 5);
110 sizer1
->Add( m_text
, 1, wxGROW
| wxALL
, 5 );
112 wxBoxSizer
*sizer2
= new wxBoxSizer( wxHORIZONTAL
);
113 sizer2
->Add( m_list
, 0, wxGROW
| wxALL
, 5 );
114 sizer2
->Add( sizer1
, 1, wxGROW
| wxALL
, 5 );
116 wxBoxSizer
*sizer3
= new wxBoxSizer( wxVERTICAL
);
117 sizer3
->Add( CreateTextSizer(_("Select one configuration")), 0, wxALL
, 10 );
119 sizer3
->Add( new wxStaticLine(this, wxID_ANY
), 0, wxGROW
| wxLEFT
| wxRIGHT
, 10 );
120 #endif // wxUSE_STATLINE
121 sizer3
->Add( sizer2
, 1, wxGROW
| wxALL
, 5 );
123 sizer3
->Add( new wxStaticLine(this, wxID_ANY
), 0, wxGROW
| wxLEFT
| wxRIGHT
, 10 );
124 #endif // wxUSE_STATLINE
125 sizer3
->Add( CreateButtonSizer(wxOK
| wxCANCEL
), 0, wxCENTRE
| wxALL
, 10 );
129 sizer3
->SetSizeHints(this);
131 Centre(wxBOTH
| wxCENTRE_ON_SCREEN
);
134 LifeSamplesDialog::~LifeSamplesDialog()
139 const LifePattern
& LifeSamplesDialog::GetPattern()
141 return g_patterns
[m_value
];
144 void LifeSamplesDialog::OnListBox(wxCommandEvent
& event
)
146 int sel
= event
.GetSelection();
150 m_value
= m_list
->GetSelection();
151 m_text
->SetValue(g_patterns
[ sel
].m_description
);
152 m_life
->SetPattern(g_patterns
[ sel
]);
154 // these values shouldn't be hardcoded...
155 if ((size_t)sel
< (sizeof(g_patterns
) / sizeof(LifePattern
)) - 3)
156 m_canvas
->SetCellSize(8);
158 m_canvas
->SetCellSize(2);
162 // --------------------------------------------------------------------------
164 // --------------------------------------------------------------------------
166 LifeAboutDialog::LifeAboutDialog(wxWindow
*parent
)
167 : wxDialog(parent
, wxID_ANY
, _("About Life!"),
168 wxDefaultPosition
, wxDefaultSize
)
171 wxBitmap bmp
= wxBITMAP(life
);
172 #if !defined(__WXGTK__) && !defined(__WXMOTIF__) && !defined(__WXMAC__)
173 bmp
.SetMask(new wxMask(bmp
, *wxBLUE
));
175 wxStaticBitmap
*sbmp
= new wxStaticBitmap(this, wxID_ANY
, bmp
);
178 wxBoxSizer
*sizer
= new wxBoxSizer( wxVERTICAL
);
179 sizer
->Add( sbmp
, 0, wxCENTRE
| wxALL
, 10 );
181 sizer
->Add( new wxStaticLine(this, wxID_ANY
), 0, wxGROW
| wxLEFT
| wxRIGHT
, 5 );
182 #endif // wxUSE_STATLINE
183 sizer
->Add( CreateTextSizer(_("Life! version 2.2 for wxWidgets\n\n\
184 (c) 2000 Guillermo Rodriguez Garcia\n\n\
185 <guille@iies.es>\n\n\
186 Portions of the code are based in XLife;\n\
187 XLife is (c) 1989 by Jon Bennett et al.")),
188 0, wxCENTRE
| wxALL
, 20 );
190 sizer
->Add( new wxStaticLine(this, wxID_ANY
), 0, wxGROW
| wxLEFT
| wxRIGHT
, 5 );
191 #endif // wxUSE_STATLINE
192 sizer
->Add( CreateButtonSizer(wxOK
), 0, wxCENTRE
| wxALL
, 10 );
196 sizer
->SetSizeHints(this);
198 Centre(wxBOTH
| wxCENTRE_ON_SCREEN
);