]> git.saurik.com Git - wxWidgets.git/commitdiff
attempts at making wxSocket work with wxBase - it doesn't work but
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 25 Feb 2000 16:21:53 +0000 (16:21 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 25 Feb 2000 16:21:53 +0000 (16:21 +0000)
already compiles :-|

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6288 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/app.h
include/wx/msw/dialog.h
include/wx/timer.h
src/common/socket.cpp
src/common/timercmn.cpp
src/msw/dialog.cpp
src/unix/gsocket.c

index 4b682d6aa80d0f91d9c0dc896350789f857da361..dc7b862ec7abb9a41aa86d559bbccabb548f6320 100644 (file)
@@ -322,18 +322,18 @@ extern bool WXDLLEXPORT wxYield();
 // Yield to other apps/messages
 extern void WXDLLEXPORT wxWakeUpIdle();
 
-#if wxUSE_GUI
-
 // Post a message to the given eventhandler which will be processed during the
 // next event loop iteration
 inline void WXDLLEXPORT wxPostEvent(wxEvtHandler *dest, wxEvent& event)
 {
     wxCHECK_RET( dest, wxT("need an object to post event to in wxPostEvent") );
 
+#if wxUSE_GUI
     dest->AddPendingEvent(event);
-}
-
+#else
+    dest->ProcessEvent(event);
 #endif // wxUSE_GUI
+}
 
 // console applications may avoid using DECLARE_APP and IMPLEMENT_APP macros
 // and call these functions instead at the program startup and termination
index e8eb98da7d491c89e4c77c90d78a250bff90f8e8..ff51c4bdcf5f34cdd79d0f2b676c79907f6b4d52 100644 (file)
@@ -117,6 +117,8 @@ protected:
     void DoShowModal();
 
 private:
+    wxWindow *m_oldFocus;
+
     DECLARE_EVENT_TABLE()
 };
 
index 30491db2ff37b96b57a7df4a574841d385e79b43..eddeb32d2c6e176c66e64553994e654ab61b4664 100644 (file)
@@ -22,6 +22,8 @@
 #include "wx/longlong.h"
 #include "wx/event.h"
 
+#if wxUSE_GUI
+
 // ----------------------------------------------------------------------------
 // wxTimer
 // ----------------------------------------------------------------------------
@@ -121,6 +123,37 @@ protected:
     #include "wx/stubs/timer.h"
 #endif
 
+// ----------------------------------------------------------------------------
+// wxTimerRunner: starts the timer in its ctor, stops in the dtor
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxTimerRunner
+{
+public:
+    wxTimerRunner(wxTimer& timer) : m_timer(timer) { }
+    wxTimerRunner(wxTimer& timer, int milli, bool oneShot = FALSE)
+        : m_timer(timer)
+    {
+        m_timer.Start(milli, oneShot);
+    }
+
+    void Start(int milli, bool oneShot = FALSE)
+    {
+        m_timer.Start(milli, oneShot);
+    }
+
+    ~wxTimerRunner()
+    {
+        if ( m_timer.IsRunning() )
+        {
+            m_timer.Stop();
+        }
+    }
+
+private:
+    wxTimer& m_timer;
+};
+
 // ----------------------------------------------------------------------------
 // wxTimerEvent
 // ----------------------------------------------------------------------------
@@ -148,6 +181,8 @@ typedef void (wxEvtHandler::*wxTimerEventFunction)(wxTimerEvent&);
 
 #define EVT_TIMER(id, func) { wxEVT_TIMER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTimerEventFunction) & func, NULL},
 
+#endif // wxUSE_GUI
+
 // ----------------------------------------------------------------------------
 // wxStopWatch: measure time intervals with up to 1ms resolution
 // ----------------------------------------------------------------------------
index 98ce67a4b93122611002fcf903cc9fc061a20cab..a39f5fff4860c16774924d2e2b0e3f70decbde20 100644 (file)
 #include "wx/module.h"
 #include "wx/log.h"
 #include "wx/intl.h"
-#include "wx/gdicmn.h"      // for wxPendingDelete
+
+#if wxUSE_GUI
+    #include "wx/gdicmn.h"      // for wxPendingDelete
+#endif // wxUSE_GUI
 
 #include "wx/sckaddr.h"
 #include "wx/socket.h"
@@ -548,6 +551,8 @@ wxSocketBase& wxSocketBase::Discard()
 // timeout elapses. The polling loop calls PROCESS_EVENTS(), so
 // this won't block the GUI.
 
+#if wxUSE_GUI
+
 class _wxSocketInternalTimer: public wxTimer
 {
 public:
@@ -560,11 +565,17 @@ public:
   }
 };
 
+#endif // wxUSE_GUI
+
 bool wxSocketBase::_Wait(long seconds, long milliseconds,
                          wxSocketEventFlags flags)
 {
   GSocketEventFlags result;
+#if wxUSE_GUI
   _wxSocketInternalTimer timer;
+  wxTimerRunner runTimer(timer);
+#endif // wxUSE_GUI
+
   long timeout;
   int state = -1;
 
@@ -584,9 +595,11 @@ bool wxSocketBase::_Wait(long seconds, long milliseconds,
   // Activate timer
   if (timeout)
   {
+#if wxUSE_GUI
     timer.m_state = &state;
     timer.m_new_val = 0;
-    timer.Start((int)timeout, TRUE);
+    runTimer.Start((int)timeout, TRUE);
+#endif // wxUSE_GUI
   }
 
   // Active polling (without using events)
@@ -608,7 +621,6 @@ bool wxSocketBase::_Wait(long seconds, long milliseconds,
     // Incoming connection (server) or connection established (client)
     if (result & GSOCK_CONNECTION_FLAG)
     {
-      timer.Stop();
       m_connected = TRUE;
       m_establishing = FALSE;
       return TRUE;
@@ -617,14 +629,12 @@ bool wxSocketBase::_Wait(long seconds, long milliseconds,
     // Data available or output buffer ready
     if ((result & GSOCK_INPUT_FLAG) || (result & GSOCK_OUTPUT_FLAG))
     {
-      timer.Stop();
       return TRUE;
     }
 
     // Connection lost
     if (result & GSOCK_LOST_FLAG)
     {
-      timer.Stop();
       m_connected = FALSE;
       m_establishing = FALSE;
       return (flags & GSOCK_LOST_FLAG);
@@ -637,7 +647,6 @@ bool wxSocketBase::_Wait(long seconds, long milliseconds,
       PROCESS_EVENTS();
   }
 
-  timer.Stop();
   return FALSE;
 }
 
@@ -872,11 +881,13 @@ void wxSocketBase::OnRequest(wxSocketNotify req_evt)
     event.m_skevt  = req_evt;
 
     if (m_evt_handler)
+    {
 #if USE_DELAYED_EVENTS
       wxPostEvent(m_evt_handler, event);
 #else
       ProcessEvent(event);
 #endif
+    }
 
     OldOnNotify(req_evt);
     if (m_cbk)
index 3d8db4c93692b5d1572985db5ddaeba7ae67425e..5c9fe9bd396f14d2ffdebb8bda0347eb04f094f0 100644 (file)
@@ -61,7 +61,9 @@
 // wxWin macros
 // ----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxTimerEvent, wxEvent)
+#if wxUSE_GUI
+    IMPLEMENT_DYNAMIC_CLASS(wxTimerEvent, wxEvent)
+#endif // wxUSE_GUI
 
 // ----------------------------------------------------------------------------
 // macros
@@ -88,6 +90,8 @@ wxLongLong wxGetLocalTimeMillis();
 // implementation
 // ============================================================================
 
+#if wxUSE_GUI
+
 // ----------------------------------------------------------------------------
 // wxTimerBase
 // ----------------------------------------------------------------------------
@@ -102,6 +106,8 @@ void wxTimerBase::Notify()
     (void)m_owner->ProcessEvent(event);
 }
 
+#endif // wxUSE_GUI
+
 // ----------------------------------------------------------------------------
 // wxStopWatch
 // ----------------------------------------------------------------------------
index a9849ee21802f47542c63dd79edab9e633fb2a9c..658003fe30641651b69724c1d9b044fc60b210b2 100644 (file)
@@ -70,8 +70,6 @@ wxWindowList wxModelessWindows;
 // all modal dialogs currently shown
 static wxWindowList wxModalDialogs;
 
-static wxWindow *m_oldFocus;
-
 // ----------------------------------------------------------------------------
 // wxWin macros
 // ----------------------------------------------------------------------------
@@ -100,6 +98,7 @@ END_EVENT_TABLE()
 
 wxDialog::wxDialog()
 {
+    m_oldFocus = (wxWindow *)NULL;
     m_isShown = FALSE;
 
     SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
index 83f5f4ec37ad7d1e24bd9feaa2224b75ce1d93f2..8e9596a4239cd1de96d2d7e21b49ba5741f91e48 100644 (file)
@@ -53,7 +53,6 @@ struct        sockaddr_un {
 #endif
 #include <signal.h>
 
-
 #ifndef SOCKLEN_T
 
 #ifdef VMS
@@ -102,6 +101,15 @@ struct     sockaddr_un {
 
 #endif /* __GSOCKET_STANDALONE__ */
 
+/* redefine some GUI-only functions to do nothing in console mode */
+#if defined(wxUSE_GUI) && !wxUSE_GUI
+    #define _GSocket_GUI_Init(socket)
+    #define _GSocket_GUI_Destroy(socket)
+    #define _GSocket_Enable_Events(socket)
+    #define _GSocket_Disable_Events(socket)
+    #define _GSocket_Install_Callback(socket, event)
+    #define _GSocket_Uninstall_Callback(socket, event)
+#endif // wxUSE_GUI
 
 /* Global initialisers */