- m_clientData = NULL;
-
- // calc the message size
- // ---------------------
-
- wxArrayString lines;
- wxSize sizeText = SplitTextMessage(message, &lines);
- long heightTextMax = sizeText.GetHeight(),
- widthTextMax = sizeText.GetWidth();
- size_t nLineCount = lines.Count();
- long hTotalMsg = heightTextMax*nLineCount;
-
- // calc the button size
- // --------------------
-
- // always create the OK button - the code below supposes we do have buttons
- // and besides the user should have some way to close this dialog
- wxASSERT_MSG( style & wxOK, _T("this dialog should have OK button") );
-
- bool hasCancel = (style & wxCANCEL) != 0;
-
- wxSize sizeButtons = GetStandardButtonSize(hasCancel);
-
- long wButton = sizeButtons.GetWidth(),
- hButton = sizeButtons.GetHeight();
-
- long wTotalButtons = wButton;
- if ( hasCancel )
- {
- wTotalButtons *= 2; // second button
- wTotalButtons += MARGIN_BETWEEN_BUTTONS; // margin between the 2
- }
-
- // listbox and stat line
- // ---------------------
-
- // make the listbox at least as tall as the message - otherwise it looks
- // ugly (the lower limit of 300 for the width is arbitrary OTOH)
- //
- // NB: we write "n + 2" because the horiz. scrollbar also takes some place
- long hListbox = wxMax((n + 2) * heightTextMax, hTotalMsg),
- wListbox = wxMax(300, wxMax(wTotalButtons, widthTextMax));
-
-#if wxUSE_STATLINE
- long hStatLine = wxStaticLine::GetDefaultSize();
-#endif
-
- // now the complete dialog size
- // ----------------------------
-
- long hDialog = 2*LAYOUT_Y_MARGIN + // top margin
- hTotalMsg + // message
- 2*LAYOUT_Y_MARGIN + // margin between text and listbox
- hListbox + // listbox
-#if wxUSE_STATLINE
- LAYOUT_Y_MARGIN + // margin
- hStatLine + // separator line
-#endif
- 2*LAYOUT_Y_MARGIN + // margin between listbox and buttons
- hButton + // button(s)
- LAYOUT_Y_MARGIN; // bottom margin
-
- long wDialog = wxMax(wListbox, wxMax(wTotalButtons, widthTextMax)) +
- 4*LAYOUT_X_MARGIN; // 2 from each side
-
- // create the controls
- // -------------------
-
- // message
- wxStaticText *text;
- int y = 2*LAYOUT_Y_MARGIN;
- for ( size_t nLine = 0; nLine < nLineCount; nLine++ )
- {
- text = new wxStaticText(this, -1, lines[nLine],
- wxPoint(2*LAYOUT_X_MARGIN, y),
- wxSize(widthTextMax, heightTextMax));
- y += heightTextMax;
- }