1. wxAppBase class appers, wxApp in wxGTK and wxMSW modified accordingly

(wxMotif not yet, but this change shouldn't break it)
2. GetStdIcon() small fixes
3. #pragma warning removed from dynlib.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2957 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-07-06 00:44:26 +00:00
parent 4092d6f221
commit 094637f6d6
11 changed files with 491 additions and 544 deletions

View File

@@ -176,11 +176,12 @@ void *wxLibrary::GetSymbol(const wxString& symbname)
wxDllType
wxDllLoader::GetProgramHandle(void)
{
#ifdef __WXGTK__
return dlopen(NULL, RTLD_NOW/*RTLD_LAZY*/);
#ifdef __UNIX__
return dlopen(NULL, RTLD_NOW/*RTLD_LAZY*/);
#else
#pragma warning "Not implemented, please fix!"
return 0;
wxFAIL_MSG(_("This method is not implemented under Windows"));
return 0;
#endif
}

View File

@@ -45,8 +45,6 @@
// icons
// ----------------------------------------------------------------------------
#if !USE_SHARED_LIBRARY
BEGIN_EVENT_TABLE(wxGenericMessageDialog, wxDialog)
EVT_BUTTON(wxID_YES, wxGenericMessageDialog::OnYes)
@@ -57,46 +55,6 @@ END_EVENT_TABLE()
IMPLEMENT_CLASS(wxGenericMessageDialog, wxDialog)
#endif
#ifdef _WXGTK__
# include "wx/gtk/info.xpm"
# include "wx/gtk/error.xpm"
# include "wx/gtk/question.xpm"
# include "wx/gtk/warning.xpm"
#else
// MSW icons are in the ressources, for all other platforms - in XPM files
# ifndef __WXMSW__
# include "wx/generic/info.xpm"
# include "wx/generic/question.xpm"
# include "wx/generic/warning.xpm"
# include "wx/generic/error.xpm"
# endif // __WXMSW__
#endif
wxIcon
wxApp::GetStdIcon(int which) const
{
switch(which)
{
case wxICON_INFORMATION:
return wxIcon(info_xpm);
break;
case wxICON_HAND:
return wxIcon(error_xpm);
break;
case wxICON_QUESTION:
return wxIcon(question_xpm);
break;
case wxICON_EXCLAMATION:
return wxIcon(warning_xpm);
break;
default:
wxFAIL_MSG("requested non existent standard icon");
return wxIcon(error_xpm);
break;
}
}
wxGenericMessageDialog::wxGenericMessageDialog( wxWindow *parent,
const wxString& message,
const wxString& caption,

View File

@@ -146,7 +146,7 @@ bool wxYield()
might have been changed (it also will update other things set from
OnUpdateUI() which is a nice (and desired) side effect) */
while (wxTheApp->ProcessIdle()) { }
#if 0
for ( wxWindowList::Node *node = wxTopLevelWindows.GetFirst();
node;
@@ -175,24 +175,24 @@ bool wxYield()
while (gtk_events_pending())
gtk_main_iteration();
}
return TRUE;
}
gint wxapp_idle_callback( gpointer WXUNUSED(data) )
{
if (!wxTheApp) return TRUE;
#if (GTK_MINOR_VERSION > 0)
/* when getting called from GDK's idle handler we
are no longer within GDK's grab on the GUI
thread so we must lock it here ourselves */
GDK_THREADS_ENTER ();
#endif
/* sent idle event to all who request them */
while (wxTheApp->ProcessIdle()) { }
/* we don't want any more idle events until the next event is
sent to wxGTK */
gtk_idle_remove( wxTheApp->m_idleTag );
@@ -204,7 +204,7 @@ gint wxapp_idle_callback( gpointer WXUNUSED(data) )
once each time after the event queue has been completely
emptied */
g_isIdle = TRUE;
#if (GTK_MINOR_VERSION > 0)
/* release lock again */
GDK_THREADS_LEAVE ();
@@ -221,7 +221,7 @@ void wxapp_install_idle_handler()
indicating that the idle is over. */
wxTheApp->m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL );
g_isIdle = FALSE;
}
@@ -231,30 +231,30 @@ static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) )
{
gtk_timeout_remove( wxTheApp->m_wakeUpTimerTag );
wxTheApp->m_wakeUpTimerTag = 0;
#if (GTK_MINOR_VERSION > 0)
// when getting called from GDK's time-out handler
// when getting called from GDK's time-out handler
// we are no longer within GDK's grab on the GUI
// thread so we must lock it here ourselves
GDK_THREADS_ENTER ();
#endif
// unblock other threads wishing to do some GUI things
wxMutexGuiLeave();
// wake up other threads
wxUsleep( 1 );
// block other thread again
wxMutexGuiEnter();
#if (GTK_MINOR_VERSION > 0)
// release lock again
GDK_THREADS_LEAVE ();
#endif
wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 20, wxapp_wakeup_timerout_callback, (gpointer) NULL );
return TRUE;
}
#endif
@@ -278,7 +278,7 @@ wxApp::wxApp()
m_exitOnFrameDelete = TRUE;
m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL );
/*
#if wxUSE_THREADS
m_wakeUpTimerTag = gtk_timeout_add( 20, wxapp_wakeup_timerout_callback, (gpointer) NULL );
@@ -297,7 +297,7 @@ wxApp::~wxApp()
if (m_wakeUpTimerTag) gtk_timeout_remove( m_wakeUpTimerTag );
#endif
*/
if (m_colorCube) free(m_colorCube);
}
@@ -305,7 +305,7 @@ bool wxApp::OnInitGui()
{
GdkVisual *visual = gdk_visual_get_system();
/* on some machines, the default visual is just 256 colours, so
/* on some machines, the default visual is just 256 colours, so
we make sure we get the best. this can sometimes be wasteful,
of course, but what do these guys pay $30.000 for? */
/*
@@ -316,11 +316,11 @@ bool wxApp::OnInitGui()
GdkColormap *colormap = gdk_colormap_new( vis, FALSE );
gtk_widget_set_default_colormap( colormap );
visual = vis;
visual = vis;
}
*/
/* Nothing to do for 15, 16, 24, 32 bit displays */
if (visual->depth > 8) return TRUE;
@@ -378,24 +378,24 @@ bool wxApp::OnInitGui()
int bdiff = ((bb << 8) - colors[i].blue);
int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff);
if (sum < max)
{
{
index = i; max = sum;
}
}
}
else
{
else
{
#if (GTK_MINOR_VERSION > 0)
/* assume 8-bit true or static colors. this really
exists. */
GdkVisual* vis = gdk_colormap_get_visual( cmap );
index = (r >> (5 - vis->red_prec)) << vis->red_shift;
index |= (g >> (5 - vis->green_prec)) << vis->green_shift;
index |= (b >> (5 - vis->blue_prec)) << vis->blue_shift;
/* assume 8-bit true or static colors. this really
exists. */
GdkVisual* vis = gdk_colormap_get_visual( cmap );
index = (r >> (5 - vis->red_prec)) << vis->red_shift;
index |= (g >> (5 - vis->green_prec)) << vis->green_shift;
index |= (b >> (5 - vis->blue_prec)) << vis->blue_shift;
#else
wxFAIL_MSG( _T("Unsupported graphics hardware") );
#endif
}
}
m_colorCube[ (r*1024) + (g*32) + b ] = index;
}
}
@@ -551,21 +551,6 @@ void wxApp::DeletePendingObjects()
}
}
wxWindow *wxApp::GetTopWindow()
{
if (m_topWindow)
return m_topWindow;
else if (wxTopLevelWindows.GetCount() > 0)
return wxTopLevelWindows.GetFirst()->GetData();
else
return NULL;
}
void wxApp::SetTopWindow( wxWindow *win )
{
m_topWindow = win;
}
bool wxApp::Initialize()
{
wxBuffer = new wxChar[BUFSIZ + 512];
@@ -670,10 +655,6 @@ void wxApp::CleanUp()
delete oldLog;
}
wxLog *wxApp::CreateLogTarget()
{
return new wxLogGui;
}
#endif // wxUSE_LOG
//-----------------------------------------------------------------------------
@@ -689,7 +670,7 @@ int wxEntry( int argc, char *argv[] )
gtk_init( &argc, &argv );
wxSetDetectableAutoRepeat( TRUE );
if (!wxApp::Initialize())
return -1;
@@ -730,14 +711,14 @@ int wxEntry( int argc, char *argv[] )
if ( retValue == 0 )
{
/* delete pending toplevel windows (typically a single
dialog) so that, if there isn't any left, we don't
call OnRun() */
dialog) so that, if there isn't any left, we don't
call OnRun() */
wxTheApp->DeletePendingObjects();
wxTheApp->m_initialized = wxTopLevelWindows.GetCount() != 0;
if (wxTheApp->Initialized())
{
{
retValue = wxTheApp->OnRun();
wxWindow *topWindow = wxTheApp->GetTopWindow();
@@ -755,7 +736,7 @@ int wxEntry( int argc, char *argv[] )
delete topWindow;
wxTheApp->SetTopWindow( (wxWindow*) NULL );
}
}
}
wxTheApp->OnExit();
}
}
@@ -779,31 +760,30 @@ int wxEntry( int argc, char *argv[] )
return retValue;
}
# include "wx/gtk/info.xpm"
# include "wx/gtk/error.xpm"
# include "wx/gtk/question.xpm"
# include "wx/gtk/warning.xpm"
#include "wx/gtk/info.xpm"
#include "wx/gtk/error.xpm"
#include "wx/gtk/question.xpm"
#include "wx/gtk/warning.xpm"
wxIcon
wxApp::GetStdIcon(int which) const
{
switch(which)
{
case wxICON_INFORMATION:
return wxIcon(info_xpm);
break;
case wxICON_HAND:
return wxIcon(error_xpm);
break;
case wxICON_QUESTION:
return wxIcon(question_xpm);
break;
case wxICON_EXCLAMATION:
return wxIcon(warning_xpm);
break;
default:
wxFAIL_MSG("requested non existent standard icon");
return wxIcon(error_xpm);
break;
}
switch(which)
{
case wxICON_INFORMATION:
return wxIcon(info_xpm);
case wxICON_QUESTION:
return wxIcon(question_xpm);
case wxICON_EXCLAMATION:
return wxIcon(warning_xpm);
default:
wxFAIL_MSG("requested non existent standard icon");
// still fall through
case wxICON_HAND:
return wxIcon(error_xpm);
}
}

View File

@@ -146,7 +146,7 @@ bool wxYield()
might have been changed (it also will update other things set from
OnUpdateUI() which is a nice (and desired) side effect) */
while (wxTheApp->ProcessIdle()) { }
#if 0
for ( wxWindowList::Node *node = wxTopLevelWindows.GetFirst();
node;
@@ -175,24 +175,24 @@ bool wxYield()
while (gtk_events_pending())
gtk_main_iteration();
}
return TRUE;
}
gint wxapp_idle_callback( gpointer WXUNUSED(data) )
{
if (!wxTheApp) return TRUE;
#if (GTK_MINOR_VERSION > 0)
/* when getting called from GDK's idle handler we
are no longer within GDK's grab on the GUI
thread so we must lock it here ourselves */
GDK_THREADS_ENTER ();
#endif
/* sent idle event to all who request them */
while (wxTheApp->ProcessIdle()) { }
/* we don't want any more idle events until the next event is
sent to wxGTK */
gtk_idle_remove( wxTheApp->m_idleTag );
@@ -204,7 +204,7 @@ gint wxapp_idle_callback( gpointer WXUNUSED(data) )
once each time after the event queue has been completely
emptied */
g_isIdle = TRUE;
#if (GTK_MINOR_VERSION > 0)
/* release lock again */
GDK_THREADS_LEAVE ();
@@ -221,7 +221,7 @@ void wxapp_install_idle_handler()
indicating that the idle is over. */
wxTheApp->m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL );
g_isIdle = FALSE;
}
@@ -231,30 +231,30 @@ static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) )
{
gtk_timeout_remove( wxTheApp->m_wakeUpTimerTag );
wxTheApp->m_wakeUpTimerTag = 0;
#if (GTK_MINOR_VERSION > 0)
// when getting called from GDK's time-out handler
// when getting called from GDK's time-out handler
// we are no longer within GDK's grab on the GUI
// thread so we must lock it here ourselves
GDK_THREADS_ENTER ();
#endif
// unblock other threads wishing to do some GUI things
wxMutexGuiLeave();
// wake up other threads
wxUsleep( 1 );
// block other thread again
wxMutexGuiEnter();
#if (GTK_MINOR_VERSION > 0)
// release lock again
GDK_THREADS_LEAVE ();
#endif
wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 20, wxapp_wakeup_timerout_callback, (gpointer) NULL );
return TRUE;
}
#endif
@@ -278,7 +278,7 @@ wxApp::wxApp()
m_exitOnFrameDelete = TRUE;
m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL );
/*
#if wxUSE_THREADS
m_wakeUpTimerTag = gtk_timeout_add( 20, wxapp_wakeup_timerout_callback, (gpointer) NULL );
@@ -297,7 +297,7 @@ wxApp::~wxApp()
if (m_wakeUpTimerTag) gtk_timeout_remove( m_wakeUpTimerTag );
#endif
*/
if (m_colorCube) free(m_colorCube);
}
@@ -305,7 +305,7 @@ bool wxApp::OnInitGui()
{
GdkVisual *visual = gdk_visual_get_system();
/* on some machines, the default visual is just 256 colours, so
/* on some machines, the default visual is just 256 colours, so
we make sure we get the best. this can sometimes be wasteful,
of course, but what do these guys pay $30.000 for? */
/*
@@ -316,11 +316,11 @@ bool wxApp::OnInitGui()
GdkColormap *colormap = gdk_colormap_new( vis, FALSE );
gtk_widget_set_default_colormap( colormap );
visual = vis;
visual = vis;
}
*/
/* Nothing to do for 15, 16, 24, 32 bit displays */
if (visual->depth > 8) return TRUE;
@@ -378,24 +378,24 @@ bool wxApp::OnInitGui()
int bdiff = ((bb << 8) - colors[i].blue);
int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff);
if (sum < max)
{
{
index = i; max = sum;
}
}
}
else
{
else
{
#if (GTK_MINOR_VERSION > 0)
/* assume 8-bit true or static colors. this really
exists. */
GdkVisual* vis = gdk_colormap_get_visual( cmap );
index = (r >> (5 - vis->red_prec)) << vis->red_shift;
index |= (g >> (5 - vis->green_prec)) << vis->green_shift;
index |= (b >> (5 - vis->blue_prec)) << vis->blue_shift;
/* assume 8-bit true or static colors. this really
exists. */
GdkVisual* vis = gdk_colormap_get_visual( cmap );
index = (r >> (5 - vis->red_prec)) << vis->red_shift;
index |= (g >> (5 - vis->green_prec)) << vis->green_shift;
index |= (b >> (5 - vis->blue_prec)) << vis->blue_shift;
#else
wxFAIL_MSG( _T("Unsupported graphics hardware") );
#endif
}
}
m_colorCube[ (r*1024) + (g*32) + b ] = index;
}
}
@@ -551,21 +551,6 @@ void wxApp::DeletePendingObjects()
}
}
wxWindow *wxApp::GetTopWindow()
{
if (m_topWindow)
return m_topWindow;
else if (wxTopLevelWindows.GetCount() > 0)
return wxTopLevelWindows.GetFirst()->GetData();
else
return NULL;
}
void wxApp::SetTopWindow( wxWindow *win )
{
m_topWindow = win;
}
bool wxApp::Initialize()
{
wxBuffer = new wxChar[BUFSIZ + 512];
@@ -670,10 +655,6 @@ void wxApp::CleanUp()
delete oldLog;
}
wxLog *wxApp::CreateLogTarget()
{
return new wxLogGui;
}
#endif // wxUSE_LOG
//-----------------------------------------------------------------------------
@@ -689,7 +670,7 @@ int wxEntry( int argc, char *argv[] )
gtk_init( &argc, &argv );
wxSetDetectableAutoRepeat( TRUE );
if (!wxApp::Initialize())
return -1;
@@ -730,14 +711,14 @@ int wxEntry( int argc, char *argv[] )
if ( retValue == 0 )
{
/* delete pending toplevel windows (typically a single
dialog) so that, if there isn't any left, we don't
call OnRun() */
dialog) so that, if there isn't any left, we don't
call OnRun() */
wxTheApp->DeletePendingObjects();
wxTheApp->m_initialized = wxTopLevelWindows.GetCount() != 0;
if (wxTheApp->Initialized())
{
{
retValue = wxTheApp->OnRun();
wxWindow *topWindow = wxTheApp->GetTopWindow();
@@ -755,7 +736,7 @@ int wxEntry( int argc, char *argv[] )
delete topWindow;
wxTheApp->SetTopWindow( (wxWindow*) NULL );
}
}
}
wxTheApp->OnExit();
}
}
@@ -779,31 +760,30 @@ int wxEntry( int argc, char *argv[] )
return retValue;
}
# include "wx/gtk/info.xpm"
# include "wx/gtk/error.xpm"
# include "wx/gtk/question.xpm"
# include "wx/gtk/warning.xpm"
#include "wx/gtk/info.xpm"
#include "wx/gtk/error.xpm"
#include "wx/gtk/question.xpm"
#include "wx/gtk/warning.xpm"
wxIcon
wxApp::GetStdIcon(int which) const
{
switch(which)
{
case wxICON_INFORMATION:
return wxIcon(info_xpm);
break;
case wxICON_HAND:
return wxIcon(error_xpm);
break;
case wxICON_QUESTION:
return wxIcon(question_xpm);
break;
case wxICON_EXCLAMATION:
return wxIcon(warning_xpm);
break;
default:
wxFAIL_MSG("requested non existent standard icon");
return wxIcon(error_xpm);
break;
}
switch(which)
{
case wxICON_INFORMATION:
return wxIcon(info_xpm);
case wxICON_QUESTION:
return wxIcon(question_xpm);
case wxICON_EXCLAMATION:
return wxIcon(warning_xpm);
default:
wxFAIL_MSG("requested non existent standard icon");
// still fall through
case wxICON_HAND:
return wxIcon(error_xpm);
}
}

View File

@@ -1062,21 +1062,6 @@ void wxApp::OnQueryEndSession(wxCloseEvent& event)
}
}
wxLog* wxApp::CreateLogTarget()
{
return new wxLogGui;
}
wxWindow* wxApp::GetTopWindow() const
{
if (m_topWindow)
return m_topWindow;
else if (wxTopLevelWindows.GetCount() > 0)
return wxTopLevelWindows.GetFirst()->GetData();
else
return NULL;
}
int wxApp::GetComCtl32Version() const
{
// have we loaded COMCTL32 yet?
@@ -1149,28 +1134,28 @@ bool wxYield()
return TRUE;
}
wxIcon
wxApp::GetStdIcon(int which) const
{
switch(which)
{
case wxICON_INFORMATION:
return wxIcon("wxICON_INFO");
break;
case wxICON_HAND:
return wxIcon("wxICON_ERROR");
break;
case wxICON_QUESTION:
return wxIcon("wxICON_QUESTION");
break;
case wxICON_EXCLAMATION:
return wxIcon("wxICON_WARNING");
break;
default:
wxFAIL_MSG("requested non existent standard icon");
return wxIcon("wxICON_ERROR");
break;
}
switch(which)
{
case wxICON_INFORMATION:
return wxIcon("wxICON_INFO");
case wxICON_QUESTION:
return wxIcon("wxICON_QUESTION");
case wxICON_EXCLAMATION:
return wxIcon("wxICON_WARNING");
default:
wxFAIL_MSG(_T("requested non existent standard icon"));
// still fall through
case wxICON_HAND:
return wxIcon("wxICON_ERROR");
}
}

View File

@@ -323,15 +323,6 @@ void wxComboBox::DoSetSize(int x, int y,
int sizeFlags)
{
wxControl::DoSetSize(x, y, width, height, sizeFlags);
// VZ: for unknown (to me) reasons, if we don't do this, the combobox
// somehow is hidden by the static boxes, although static boxes do
// put themselves at the very end of Z-order.
if ( !::SetWindowPos(GetHwnd(), HWND_BOTTOM, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE) )
{
wxLogLastError(_T("SetWindowPos"));
}
}
#endif

View File

@@ -117,6 +117,8 @@ 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,
@@ -172,7 +174,7 @@ 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 = GetParent();
wxWindow *parent = 0; //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
@@ -196,7 +198,7 @@ void wxStaticBox::OnEraseBackground(wxEraseEvent& event)
long wxStaticBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
if ( 0 )//nMsg == WM_NCHITTEST)
if ( nMsg == WM_NCHITTEST)
{
int xPos = LOWORD(lParam); // horizontal position of cursor
int yPos = HIWORD(lParam); // vertical position of cursor