+// ----------------------------------------------------------------------------
+// wxNumberEntryDialog
+// ----------------------------------------------------------------------------
+
+wxNumberEntryDialog::wxNumberEntryDialog(wxWindow *parent,
+ const wxString& message,
+ const wxString& prompt,
+ const wxString& caption,
+ long value,
+ long min,
+ long max,
+ const wxPoint& pos)
+ : wxDialog(parent, -1, caption,
+ pos, wxDefaultSize,
+ wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL)
+{
+ // init members
+ // ------------
+
+ m_value = value;
+ m_max = max;
+ m_min = min;
+
+ // calculate the sizes
+ // -------------------
+
+ wxArrayString lines;
+ wxSize sizeText = SplitTextMessage(message, &lines);
+
+ wxSize sizeBtn = GetStandardButtonSize();
+
+ int wPrompt, hPrompt;
+ GetTextExtent(prompt, &wPrompt, &hPrompt);
+
+ long wText = wxMax(2*sizeBtn.GetWidth(),
+ wxMax(wPrompt, sizeText.GetWidth()));
+ long hText = GetStandardTextHeight();
+
+ long wDialog = 5*LAYOUT_X_MARGIN + wText + wPrompt;
+ long hDialog = 2*LAYOUT_Y_MARGIN +
+ sizeText.GetHeight() * lines.GetCount() +
+ 2*LAYOUT_Y_MARGIN +
+ hText +
+ 2*LAYOUT_Y_MARGIN +
+ sizeBtn.GetHeight() +
+ 2*LAYOUT_Y_MARGIN;
+
+ // create the controls
+ // -------------------
+
+ // message
+ long x = 2*LAYOUT_X_MARGIN;
+ long y = CreateTextMessage(lines,
+ wxPoint(x, 2*LAYOUT_Y_MARGIN),
+ sizeText);
+
+ y += 2*LAYOUT_X_MARGIN;
+
+ // prompt
+ (void)new wxStaticText(this, -1, prompt,
+ wxPoint(x, y),
+ wxSize(wPrompt, hPrompt));
+
+ // spin ctrl
+ wxString valStr;
+ valStr.Printf("%lu", m_value);
+ m_spinctrl = new wxTextCtrl(this, -1, valStr,
+ wxPoint(x + wPrompt + LAYOUT_X_MARGIN, y),
+ wxSize(wText, hText));
+ y += hText + 2*LAYOUT_X_MARGIN;
+
+ // and buttons
+ CreateStandardButtons(wDialog, y, sizeBtn.GetWidth(), sizeBtn.GetHeight());
+
+ // set the dialog size and position
+ SetClientSize(wDialog, hDialog);
+ if ( pos == wxDefaultPosition )
+ {
+ // centre the dialog if no explicit position given
+ Centre(wxBOTH | wxCENTER_FRAME);
+ }
+
+ m_spinctrl->SetFocus();
+}