1. added wxGetNumberFromUser (to textdlgg.cpp and dialogs sample)
2. wxTE_RICH style added to wxMSW, the text controls don't use RICHEDIT class by default any more 3. wxRadioBox doesn't generate button events any more (grrr...) 4. commented out code in log.cpp restored and a bug corrected git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3088 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -323,7 +323,7 @@ void wxLog::TimeStamp(wxString *str)
|
||||
wxChar buf[256];
|
||||
time_t timeNow;
|
||||
(void)time(&timeNow);
|
||||
// wxStrftime(buf, WXSIZEOF(buf), ms_timestamp, localtime(&timeNow));
|
||||
wxStrftime(buf, WXSIZEOF(buf), ms_timestamp, localtime(&timeNow));
|
||||
|
||||
str->Empty();
|
||||
*str << buf << _T(": ");
|
||||
@@ -577,7 +577,6 @@ void wxLogGui::DoLog(wxLogLevel level, const wxChar *szString, time_t t)
|
||||
if ( !m_bErrors ) {
|
||||
m_aMessages.Empty();
|
||||
m_aTimes.Empty();
|
||||
m_bHasMessages = TRUE;
|
||||
m_bErrors = TRUE;
|
||||
}
|
||||
// fall through
|
||||
@@ -590,6 +589,7 @@ void wxLogGui::DoLog(wxLogLevel level, const wxChar *szString, time_t t)
|
||||
|
||||
m_aMessages.Add(szString);
|
||||
m_aTimes.Add((long)t);
|
||||
m_bHasMessages = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -45,11 +45,40 @@
|
||||
|
||||
#include "wx/generic/textdlgg.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// private classes
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxNumberEntryDialog : public wxDialog
|
||||
{
|
||||
public:
|
||||
wxNumberEntryDialog(wxWindow *parent,
|
||||
const wxString& message,
|
||||
const wxString& prompt,
|
||||
const wxString& caption,
|
||||
long value, long min, long max,
|
||||
const wxPoint& pos);
|
||||
|
||||
long GetValue() const { return m_value; }
|
||||
|
||||
// implementation only
|
||||
void OnOK(wxCommandEvent& event);
|
||||
void OnCancel(wxCommandEvent& event);
|
||||
|
||||
protected:
|
||||
wxTextCtrl *m_spinctrl; // TODO replace it with wxSpinCtrl once it's done
|
||||
|
||||
long m_value, m_min, m_max;
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define wxID_TEXT 3000
|
||||
static const int wxID_TEXT = 3000;
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
@@ -60,6 +89,11 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
BEGIN_EVENT_TABLE(wxNumberEntryDialog, wxDialog)
|
||||
EVT_BUTTON(wxID_OK, wxNumberEntryDialog::OnOK)
|
||||
EVT_BUTTON(wxID_CANCEL, wxNumberEntryDialog::OnCancel)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog)
|
||||
EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK)
|
||||
END_EVENT_TABLE()
|
||||
@@ -135,3 +169,128 @@ void wxTextEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event) )
|
||||
EndModal(wxID_OK);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// 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();
|
||||
}
|
||||
|
||||
void wxNumberEntryDialog::OnOK(wxCommandEvent& event)
|
||||
{
|
||||
if ( (sscanf(m_spinctrl->GetValue(), "%lu", &m_value) != 1) ||
|
||||
(m_value < m_min) || (m_value > m_max) )
|
||||
{
|
||||
// not a number or out of range
|
||||
m_value = -1;
|
||||
}
|
||||
|
||||
EndModal(wxID_OK);
|
||||
}
|
||||
|
||||
void wxNumberEntryDialog::OnCancel(wxCommandEvent& event)
|
||||
{
|
||||
m_value = -1;
|
||||
|
||||
EndModal(wxID_CANCEL);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// global functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// wxGetTextFromUser is in utilscmn.cpp
|
||||
|
||||
long wxGetNumberFromUser(const wxString& msg,
|
||||
const wxString& prompt,
|
||||
const wxString& title,
|
||||
long value,
|
||||
long min,
|
||||
long max,
|
||||
wxWindow *parent,
|
||||
const wxPoint& pos)
|
||||
{
|
||||
wxNumberEntryDialog dialog(parent, msg, prompt, title,
|
||||
value, min, max, pos);
|
||||
(void)dialog.ShowModal();
|
||||
|
||||
return dialog.GetValue();
|
||||
}
|
||||
|
@@ -204,15 +204,19 @@ bool wxApp::Initialize()
|
||||
|
||||
#endif // __WIN95__
|
||||
|
||||
#if wxUSE_OLE
|
||||
|
||||
#ifdef __WIN16__
|
||||
// for OLE, enlarge message queue to be as large as possible
|
||||
int iMsg = 96;
|
||||
while (!SetMessageQueue(iMsg) && (iMsg -= 8));
|
||||
while (!SetMessageQueue(iMsg) && (iMsg -= 8))
|
||||
;
|
||||
#endif // Win16
|
||||
|
||||
#if wxUSE_OLE
|
||||
// we need to initialize OLE library
|
||||
if ( FAILED(::OleInitialize(NULL)) )
|
||||
wxLogError(_("Cannot initialize OLE"));
|
||||
#endif
|
||||
#endif // wxUSE_OLE
|
||||
|
||||
#if wxUSE_CTL3D
|
||||
if (!Ctl3dRegister(wxhInstance))
|
||||
|
@@ -682,37 +682,6 @@ void wxRadioBox::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
long wxRadioBox::MSWWindowProc(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam)
|
||||
{
|
||||
long rc = 0;
|
||||
bool processed = FALSE;
|
||||
|
||||
switch ( msg )
|
||||
{
|
||||
case WM_NCHITTEST:
|
||||
{
|
||||
int xPos = LOWORD(lParam); // horizontal position of cursor
|
||||
int yPos = HIWORD(lParam); // vertical position of cursor
|
||||
|
||||
ScreenToClient(&xPos, &yPos);
|
||||
|
||||
// Make sure you can drag by the top of the groupbox, but let
|
||||
// other (enclosed) controls get mouse events also
|
||||
if ( yPos < 10 )
|
||||
{
|
||||
rc = HTCLIENT;
|
||||
processed = TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ( !processed )
|
||||
rc = wxControl::MSWWindowProc(msg, wParam, lParam);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
void wxRadioBox::SubclassRadioButton(WXHWND hWndBtn)
|
||||
{
|
||||
#ifdef __WIN32__
|
||||
|
@@ -6,7 +6,7 @@
|
||||
// Created: 04/01/98
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Julian Smart and Markus Holzem
|
||||
// Licence: wxWindows license
|
||||
// Licence: wxWindows license
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __GNUG__
|
||||
@@ -113,23 +113,10 @@ wxSize wxStaticBox::DoGetBestSize()
|
||||
return wxSize(wBox, hBox);
|
||||
}
|
||||
|
||||
void wxStaticBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
|
||||
{
|
||||
wxControl::DoSetSize(x, y, width, height, sizeFlags);
|
||||
|
||||
return;
|
||||
|
||||
// the static box should always be on the bottom of the Z-order, otherwise
|
||||
// it may hide controls which are positioned inside it
|
||||
if ( !::SetWindowPos(GetHwnd(), HWND_TOP, 0, 0, 0, 0,
|
||||
SWP_NOMOVE | SWP_NOSIZE) )
|
||||
{
|
||||
wxLogLastError(_T("SetWindowPos"));
|
||||
}
|
||||
}
|
||||
|
||||
WXHBRUSH wxStaticBox::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
|
||||
WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
|
||||
WXUINT message,
|
||||
WXWPARAM wParam,
|
||||
WXLPARAM lParam)
|
||||
{
|
||||
#if wxUSE_CTL3D
|
||||
if ( m_useCtl3D )
|
||||
@@ -174,9 +161,9 @@ void wxStaticBox::OnEraseBackground(wxEraseEvent& event)
|
||||
// Alternatively, just make sure that wxStaticBox is always at the back! There are probably
|
||||
// few other circumstances where it matters about child clipping. But what about painting onto
|
||||
// to panel, inside a groupbox? Doesn't appear, because the box wipes it out.
|
||||
wxWindow *parent = 0; //GetParent();
|
||||
if ( parent && parent->GetHWND() && (::GetWindowLong((HWND) parent->GetHWND(), GWL_STYLE) & WS_CLIPCHILDREN) )
|
||||
{
|
||||
wxWindow *parent = GetParent();
|
||||
if ( parent && parent->GetHWND() && (::GetWindowLong((HWND) parent->GetHWND(), GWL_STYLE) & WS_CLIPCHILDREN) )
|
||||
{
|
||||
// TODO: May in fact need to generate a paint event for inside this
|
||||
// control's rectangle, otherwise all controls are going to be clipped -
|
||||
// ugh.
|
||||
@@ -189,11 +176,11 @@ void wxStaticBox::OnEraseBackground(wxEraseEvent& event)
|
||||
::FillRect ((HDC) event.GetDC()->GetHDC(), &rect, hBrush);
|
||||
::DeleteObject(hBrush);
|
||||
::SetMapMode((HDC) event.GetDC()->GetHDC(), mode);
|
||||
}
|
||||
else
|
||||
{
|
||||
event.Skip();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
event.Skip();
|
||||
}
|
||||
}
|
||||
|
||||
long wxStaticBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
|
||||
|
@@ -164,10 +164,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||
const wxChar *windowClass = _T("EDIT");
|
||||
|
||||
#if wxUSE_RICHEDIT
|
||||
// multiline edit controls are RICHEDITs except for those which have a
|
||||
// simple border (VZ: why??)
|
||||
if ( (m_windowStyle & wxTE_MULTILINE) &&
|
||||
!(m_windowStyle & wxSIMPLE_BORDER) )
|
||||
if ( m_windowStyle & wxTE_RICH )
|
||||
{
|
||||
msStyle |= ES_AUTOVSCROLL;
|
||||
m_isRich = TRUE;
|
||||
|
Reference in New Issue
Block a user