]> git.saurik.com Git - wxWidgets.git/commitdiff
Removed wxBuffer from several ports; added function to get XEvent name;
authorJulian Smart <julian@anthemion.co.uk>
Thu, 14 Feb 2002 11:07:26 +0000 (11:07 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Thu, 14 Feb 2002 11:07:26 +0000 (11:07 +0000)
started on commandline parsing for wxX11

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

17 files changed:
include/wx/utils.h
include/wx/x11/privx.h
src/common/filefn.cpp
src/gtk/app.cpp
src/gtk/data.cpp
src/gtk1/app.cpp
src/gtk1/data.cpp
src/mgl/app.cpp
src/mgl/data.cpp
src/motif/app.cpp
src/motif/control.cpp
src/motif/data.cpp
src/motif/menu.cpp
src/motif/window.cpp
src/x11/app.cpp
src/x11/data.cpp
src/x11/utils.cpp

index f3cb1257fb8f2883290235cf1742fb7d2d1eefbd..fd8f12f022be214a9c6321db27d39822f9a39d35 100644 (file)
@@ -57,7 +57,10 @@ class WXDLLEXPORT wxPoint;
 // ----------------------------------------------------------------------------
 
 // Useful buffer (FIXME VZ: To be removed!!!)
+// Now only needed in Mac and MSW ports
+#if !defined(__WXMOTIF__) && !defined(__WXGTK__) && !defined(__WXX11__) && !defined(__WXMGL__)
 WXDLLEXPORT_DATA(extern wxChar*) wxBuffer;
+#endif
 
 // Make a copy of this string using 'new'
 WXDLLEXPORT wxChar* copystring(const wxChar *s);
index 36f597fd9dc1227e4653543259a595fa6df8ebc3..a55f980277147d819451f624eb0a5a69d8932f31 100644 (file)
@@ -69,5 +69,10 @@ void wxXColorToHSV(wxHSV *hsv,XColor *xcolor);
 void wxAllocNearestColor(Display *display,Colormap colormap,XColor *xcolor);
 void wxAllocColor(Display *display,Colormap colormap,XColor *xcolor);
 
+// For debugging
+#ifdef __WXDEBUG__
+wxString wxGetXEventName(XEvent& event);
+#endif
+
 #endif
 // _WX_PRIVX_H_
index 583c0711b330a6e8f5ace3aa7d4efa67f944a04f..786381d64bf8045f451b6a304ef3d39d79acb502 100644 (file)
     #define _MAXPATHLEN 1024
 #endif
 
-extern wxChar *wxBuffer;
-
 #ifdef __WXMAC__
 #    include "MoreFiles.h"
 #    include "MoreFilesExtras.h"
index b25fce3b1ccc1364019e8e110bbccc1532d804e8..65710bb24dccd17b3d952cbcc99b9e22ab6e898b 100644 (file)
@@ -564,8 +564,6 @@ void wxApp::DeletePendingObjects()
 
 bool wxApp::Initialize()
 {
-    wxBuffer = new wxChar[BUFSIZ + 512];
-
     wxClassInfo::InitializeClasses();
 
 #if wxUSE_INTL
@@ -613,9 +611,6 @@ void wxApp::CleanUp()
     delete wxTheApp;
     wxTheApp = (wxApp*) NULL;
 
-    delete[] wxBuffer;
-    wxBuffer = NULL;
-
     wxClassInfo::CleanUpClasses();
 
 #if wxUSE_THREADS
index dc6b6523a8562816e30755763106bcb225ee4fc2..ba8a0ba0e573a229c8f0fb55bf7d76eca8bd244e 100644 (file)
@@ -25,9 +25,6 @@
 
 #define _MAXPATHLEN 500
 
-/* Useful buffer, initialized in wxCommonInit */
-wxChar *wxBuffer = (wxChar *) NULL;
-
 /* Windows List */
 wxWindowList wxTopLevelWindows;
 
index b25fce3b1ccc1364019e8e110bbccc1532d804e8..65710bb24dccd17b3d952cbcc99b9e22ab6e898b 100644 (file)
@@ -564,8 +564,6 @@ void wxApp::DeletePendingObjects()
 
 bool wxApp::Initialize()
 {
-    wxBuffer = new wxChar[BUFSIZ + 512];
-
     wxClassInfo::InitializeClasses();
 
 #if wxUSE_INTL
@@ -613,9 +611,6 @@ void wxApp::CleanUp()
     delete wxTheApp;
     wxTheApp = (wxApp*) NULL;
 
-    delete[] wxBuffer;
-    wxBuffer = NULL;
-
     wxClassInfo::CleanUpClasses();
 
 #if wxUSE_THREADS
index dc6b6523a8562816e30755763106bcb225ee4fc2..ba8a0ba0e573a229c8f0fb55bf7d76eca8bd244e 100644 (file)
@@ -25,9 +25,6 @@
 
 #define _MAXPATHLEN 500
 
-/* Useful buffer, initialized in wxCommonInit */
-wxChar *wxBuffer = (wxChar *) NULL;
-
 /* Windows List */
 wxWindowList wxTopLevelWindows;
 
index da9471e4dcc6eafd88b0a6c4bf53e1176eead23c..f4790cbc7aa48eceda830e187fd5d213eb25f766 100644 (file)
@@ -412,8 +412,6 @@ bool wxApp::Initialize()
     if ( MGL_init(".", NULL) == 0 )
         return FALSE;
 
-    wxBuffer = new wxChar[BUFSIZ + 512];
-
     wxClassInfo::InitializeClasses();
 
 #if wxUSE_INTL
@@ -497,8 +495,6 @@ void wxApp::CleanUp()
     delete wxTheFontsManager;
     wxTheFontsManager = (wxFontsManager*) NULL;
 
-    delete[] wxBuffer;
-
     // check for memory leaks
 #if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
     if (wxDebugContext::CountObjectsLeft(TRUE) > 0)
index 6a99ec80eefcb5064e554cf2471f79a4bc9f90ee..b6c280dc177e2fdf4ae8853ceb5a7fe6943d793b 100644 (file)
@@ -32,9 +32,6 @@
 
 #define _MAXPATHLEN 500
 
-/* Useful buffer, initialized in wxCommonInit */
-wxChar *wxBuffer = (wxChar *) NULL;
-
 /* Windows List */
 wxWindowList wxTopLevelWindows;
 
index 8b019fdf6e64ab9c51d6ee1082329f777fefe230..9a09d850b4309233d57784b9ea36db5c1fffb5fa 100644 (file)
@@ -60,7 +60,6 @@
 
 #include <string.h>
 
-extern char *wxBuffer;
 extern wxList wxPendingDelete;
 
 wxApp *wxTheApp = NULL;
@@ -89,8 +88,6 @@ long wxApp::sm_lastMessageTime = 0;
 
 bool wxApp::Initialize()
 {
-    wxBuffer = new char[BUFSIZ + 512];
-
     wxClassInfo::InitializeClasses();
 
     // GL: I'm annoyed ... I don't know where to put this and I don't want to
@@ -158,9 +155,6 @@ void wxApp::CleanUp()
 
     wxBitmap::CleanUpHandlers();
 
-    delete[] wxBuffer;
-    wxBuffer = NULL;
-
     wxClassInfo::CleanUpClasses();
 
     delete wxTheApp;
index 894198a0a10515ecf166c0a6b40a5724ebbc5832..0a5e6377f102b7020af67e940a1f91be1c45a1bc 100644 (file)
@@ -68,14 +68,13 @@ void wxControl::SetLabel(const wxString& label)
     if (!widget)
         return;
 
-    wxStripMenuCodes((char*) (const char*) label, wxBuffer);
+    wxString buf(wxStripMenuCodes());
+    wxXmString label_str(buf);
 
-    XmString text = XmStringCreateSimple (wxBuffer);
     XtVaSetValues (widget,
-        XmNlabelString, text,
+        XmNlabelString, label_str,
         XmNlabelType, XmSTRING,
         NULL);
-    XmStringFree (text);
 }
 
 wxString wxControl::GetLabel() const
index eb1c8e0713066ae5d82fedcb96ce7ae53fcc7f19..0387862c7b1f7ee5ec6204ceefc246a85ce37230 100644 (file)
@@ -18,9 +18,6 @@
 
 #define _MAXPATHLEN 500
 
-// Useful buffer, initialized in CommonInit
-char *wxBuffer = NULL;
-
 // Windows List
 wxWindowList wxTopLevelWindows;
 
index 84410f4f5f92eb47ae6d73132539ad1c067c4b8e..c5d3232ead6330e8d5bde438578366a7b2355828 100644 (file)
@@ -526,8 +526,6 @@ WXWidget wxMenu::CreateMenu (wxMenuBar * menuBar, WXWidget parent, wxMenu * topM
     else
     {
         char mnem = wxFindMnemonic (title);
-        wxStripMenuCodes ((char*) (const char*) title, wxBuffer);
-
         menu = XmCreatePulldownMenu ((Widget) parent, "pulldown", args, 2);
 
         wxString title2(wxStripMenuCodes(title));
index d0a7035d95e80243e073812806ab805a3b8a5106..cbdac0a7ce8c1b15a5936f576cd47635bb2bbb57 100644 (file)
@@ -2147,12 +2147,13 @@ static void wxCanvasInputEvent(Widget drawingArea,
     case KeyPress:
         {
             KeySym keySym;
+            static char buf[100];
 #if 0
             XComposeStatus compose;
-            (void) XLookupString ((XKeyEvent *) & local_event, wxBuffer, 20, &keySym, &compose);
+            (void) XLookupString ((XKeyEvent *) & local_event, buf, 20, &keySym, &compose);
 #endif // 0
 
-            (void) XLookupString ((XKeyEvent *) & local_event, wxBuffer, 20, &keySym, NULL);
+            (void) XLookupString ((XKeyEvent *) & local_event, buf, 20, &keySym, NULL);
             int id = wxCharCodeXToWX (keySym);
 
             wxEventType eventType = wxEVT_CHAR;
@@ -2200,8 +2201,9 @@ static void wxCanvasInputEvent(Widget drawingArea,
         }
     case KeyRelease:
         {
+            static char buf[100];
             KeySym keySym;
-            (void) XLookupString ((XKeyEvent *) & local_event, wxBuffer, 20, &keySym, NULL);
+            (void) XLookupString ((XKeyEvent *) & local_event, buf, 20, &keySym, NULL);
             int id = wxCharCodeXToWX (keySym);
 
             wxKeyEvent event (wxEVT_KEY_UP);
index 62cb336b789a4f0c5d9bf18a5dac9f65954d6b03..a4d0c28487fba6e50022aed63f258c5591a5b364 100644 (file)
@@ -29,6 +29,7 @@
 #include "wx/log.h"
 #include "wx/intl.h"
 #include "wx/evtloop.h"
+#include "wx/cmdline.h"
 
 #if wxUSE_THREADS
     #include "wx/thread.h"
@@ -53,7 +54,6 @@
 
 #include <string.h>
 
-extern char *wxBuffer;
 extern wxList wxPendingDelete;
 
 wxApp *wxTheApp = NULL;
@@ -66,6 +66,14 @@ BEGIN_EVENT_TABLE(wxApp, wxEvtHandler)
     EVT_IDLE(wxApp::OnIdle)
 END_EVENT_TABLE()
 
+static const wxCmdLineEntryDesc g_cmdLineDesc[] =
+{
+    { wxCMD_LINE_SWITCH, "sync", "sync", "synchronize the display" },
+    { wxCMD_LINE_OPTION, "display", "display",  "use the given display", wxCMD_LINE_VAL_STRING },
+
+    { wxCMD_LINE_NONE }
+};
+
 #ifdef __WXDEBUG__
 typedef int (*XErrorHandlerFunc)(Display *, XErrorEvent *);
 
@@ -83,8 +91,6 @@ WXDisplay *wxApp::ms_display = NULL;
 
 bool wxApp::Initialize()
 {
-    wxBuffer = new char[BUFSIZ + 512];
-
     wxClassInfo::InitializeClasses();
 
     // GL: I'm annoyed ... I don't know where to put this and I don't want to
@@ -132,9 +138,6 @@ void wxApp::CleanUp()
     delete wxTheApp;
     wxTheApp = NULL;
 
-    delete[] wxBuffer;
-    wxBuffer = NULL;
-
     wxClassInfo::CleanUpClasses();
 
 #if wxUSE_THREADS
@@ -161,6 +164,11 @@ void wxApp::CleanUp()
     delete wxLog::SetActiveTarget(NULL);
 }
 
+// This is set within wxEntryStart -- too early on
+// to put these in wxTheApp
+static int g_newArgc = 0;
+static wxChar** g_newArgv = NULL;
+
 // NB: argc and argv may be changed here, pass by reference!
 int wxEntryStart( int& argc, char *argv[] )
 {
@@ -169,6 +177,13 @@ int wxEntryStart( int& argc, char *argv[] )
     gs_pfnXErrorHandler = XSetErrorHandler( wxXErrorHandler );
 #endif // __WXDEBUG__
 
+    /// TODO
+#if 0
+    // Parse the arguments. Is it OK to use the command line
+    // parser before calling Initialize?
+    wxCmdLineParser cmdLine(argv, argv);
+#endif
+
     Display* xdisplay = XOpenDisplay(NULL);
 
     if (!xdisplay)
@@ -236,8 +251,18 @@ int wxEntry( int argc, char *argv[] )
     wxTheApp->SetClassName(wxFileNameFromPath(argv[0]));
     wxTheApp->SetAppName(wxFileNameFromPath(argv[0]));
 
-    wxTheApp->argc = argc;
-    wxTheApp->argv = argv;
+    // The command line may have been changed
+    // by stripping out -display etc.
+    if (g_newArgc > 0)
+    {
+        wxTheApp->argc = g_newArgc;
+        wxTheApp->argv = g_newArgv;
+    }
+    else
+    {
+        wxTheApp->argc = argc;
+        wxTheApp->argv = argv;
+    }
 
     int retValue;
     retValue = wxEntryInitGui();
@@ -339,7 +364,7 @@ void wxApp::ProcessXEvent(WXEvent* _event)
 
     win = wxGetWindowFromTable(window);
     if (!win)
-       return;
+           return;
 
     switch (event->type)
     {
@@ -498,6 +523,10 @@ void wxApp::ProcessXEvent(WXEvent* _event)
             }
         default:
         {
+#ifdef __WXDEBUG__
+            //wxString eventName = wxGetXEventName(XEvent& event);
+            //wxLogDebug(wxT("Event %s not handled"), eventName.c_str());
+#endif
             break;
         }
     }
@@ -775,13 +804,3 @@ void wxApp::OnAssert(const wxChar *file, int line, const wxChar *msg)
 #endif
 }
 
-// ----------------------------------------------------------------------------
-// accessors for C modules
-// ----------------------------------------------------------------------------
-
-#if 0
-extern "C" XtAppContext wxGetAppContext()
-{
-    return (XtAppContext)wxTheApp->GetAppContext();
-}
-#endif
index eb1c8e0713066ae5d82fedcb96ce7ae53fcc7f19..0387862c7b1f7ee5ec6204ceefc246a85ce37230 100644 (file)
@@ -18,9 +18,6 @@
 
 #define _MAXPATHLEN 500
 
-// Useful buffer, initialized in CommonInit
-char *wxBuffer = NULL;
-
 // Windows List
 wxWindowList wxTopLevelWindows;
 
index ea472dcc6ec6a3e6c00e85164d83cf5f42da4779..7d6e1f93ba799ca6e09b29717125c606d85dfc99 100644 (file)
@@ -1062,6 +1062,29 @@ void wxAllocColor(Display *d,Colormap cmp,XColor *xc)
     }
 }
 
+#ifdef __WXDEBUG__
+wxString wxGetXEventName(XEvent& event)
+{
+    int type = event.xany.type;
+           static char* event_name[] = {
+               "", "unknown(-)",                                         // 0-1
+               "KeyPress", "KeyRelease", "ButtonPress", "ButtonRelease", // 2-5
+               "MotionNotify", "EnterNotify", "LeaveNotify", "FocusIn",  // 6-9
+               "FocusOut", "KeymapNotify", "Expose", "GraphicsExpose",   // 10-13
+               "NoExpose", "VisibilityNotify", "CreateNotify",           // 14-16
+               "DestroyNotify", "UnmapNotify", "MapNotify", "MapRequest",// 17-20
+               "ReparentNotify", "ConfigureNotify", "ConfigureRequest",  // 21-23
+               "GravityNotify", "ResizeRequest", "CirculateNotify",      // 24-26
+               "CirculateRequest", "PropertyNotify", "SelectionClear",   // 27-29
+               "SelectionRequest", "SelectionNotify", "ColormapNotify",  // 30-32
+               "ClientMessage", "MappingNotify",                         // 33-34
+               "unknown(+)"};                                            // 35
+           type = wxMin(35, type); type = wxMax(1, type);
+        wxString str(event_name[type]);
+        return str;
+       }
+#endif
+
 #ifdef __WXMOTIF__
 // ----------------------------------------------------------------------------
 // accelerators
@@ -1115,7 +1138,8 @@ char * wxFindAccelerator (const char *s)
 
     */
 
-    wxBuffer[0] = '\0';
+    static char buf[256];
+    buf[0] = '\0';
     char *tmp = copystring (s);
     s = tmp;
     char *p = tmp;
@@ -1127,23 +1151,23 @@ char * wxFindAccelerator (const char *s)
         if (*p)
         {
             *p = '\0';
-            if (wxBuffer[0])
-                strcat (wxBuffer, " ");
+            if (buf[0])
+                strcat (buf, " ");
             if (strcmp (s, "Alt"))
-                strcat (wxBuffer, s);
+                strcat (buf, s);
             else
-                strcat (wxBuffer, "Meta");
+                strcat (buf, "Meta");
             s = p++;
         }
         else
         {
-            strcat (wxBuffer, "<Key>");
-            strcat (wxBuffer, s);
+            strcat (buf, "<Key>");
+            strcat (buf, s);
             break;
         }
     }
     delete[]tmp;
-    return wxBuffer;
+    return buf;
 #endif
 }