X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/da494b405d0826b343ea6d249bbac27061e11d3e..28169f14ec80f07874464412c72d7523a7768d81:/src/motif/utils.cpp diff --git a/src/motif/utils.cpp b/src/motif/utils.cpp index 4048d5a723..56c48759cb 100644 --- a/src/motif/utils.cpp +++ b/src/motif/utils.cpp @@ -25,7 +25,8 @@ #include "wx/app.h" #include "wx/msgdlg.h" #include "wx/cursor.h" -#include "wx/window.h" // for wxTopLevelWindows +#include "wx/dcmemory.h" +#include "wx/bitmap.h" #include #include @@ -37,7 +38,6 @@ #include #include #include -// #include #include #if (defined(__SUNCC__) || defined(__CLCC__)) @@ -50,14 +50,8 @@ #include "wx/unix/execute.h" -#ifdef __WXMOTIF__ #include #include "wx/motif/private.h" -#endif - -#ifdef __WXX11__ -#include "wx/x11/private.h" -#endif #if wxUSE_RESOURCES #include "X11/Xresource.h" @@ -100,7 +94,6 @@ void wxFlushEvents() XSync (display, FALSE); -#ifdef __WXMOTIF__ // XtAppPending returns availability of events AND timers/inputs, which // are processed via callbacks, so XtAppNextEvent will not return if // there are no events. So added '& XtIMXEvent' - Sergey. @@ -110,18 +103,13 @@ void wxFlushEvents() // Jan Lessner: works better when events are non-X events XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMXEvent); } -#endif -#ifdef __WXX11__ - // TODO for X11 - // ?? -#endif } +#if 0 // Check whether this window wants to process messages, e.g. Stop button // in long calculations. bool wxCheckForInterrupt(wxWindow *wnd) { -#ifdef __WXMOTIF__ wxCHECK_MSG( wnd, FALSE, "NULL window in wxCheckForInterrupt" ); Display *dpy=(Display*) wnd->GetXDisplay(); @@ -148,16 +136,13 @@ bool wxCheckForInterrupt(wxWindow *wnd) } return hadEvents; -#else - wxASSERT_MSG(FALSE, "wxCheckForInterrupt not yet implemented."); - return FALSE; -#endif } +#endif // ---------------------------------------------------------------------------- // wxExecute stuff // ---------------------------------------------------------------------------- -#ifdef __WXMOTIF__ + static void xt_notify_end_process(XtPointer data, int *WXUNUSED(fid), XtInputId *id) { @@ -170,11 +155,9 @@ static void xt_notify_end_process(XtPointer data, int *WXUNUSED(fid), XtRemoveInput(*id); } -#endif int wxAddProcessCallback(wxEndProcessData *proc_data, int fd) { -#ifdef __WXMOTIF__ XtInputId id = XtAppAddInput((XtAppContext) wxTheApp->GetAppContext(), fd, (XtPointer *) XtInputReadMask, @@ -182,11 +165,6 @@ int wxAddProcessCallback(wxEndProcessData *proc_data, int fd) (XtPointer) proc_data); return (int)id; -#endif -#ifdef __WXX11__ - // TODO - return 0; -#endif } // ---------------------------------------------------------------------------- @@ -202,7 +180,6 @@ void wxBell() int wxGetOsVersion(int *majorVsn, int *minorVsn) { -#ifdef __WXMOTIF__ // FIXME TODO // This code is WRONG!! Does NOT return the // Motif version of the libs but the X protocol @@ -214,14 +191,6 @@ int wxGetOsVersion(int *majorVsn, int *minorVsn) *minorVsn = ProtocolRevision (display); return wxMOTIF_X; -#endif -#ifdef __WXX11__ - if (majorVsn) - *majorVsn = 0; - if (minorVsn) - *minorVsn = 0; - return wxX11; -#endif } // ---------------------------------------------------------------------------- @@ -273,7 +242,7 @@ static char *GetResourcePath(char *buf, const char *name, bool create = FALSE) // Put in standard place for resource files if not absolute strcpy (buf, DEFAULT_XRESOURCE_DIR); strcat (buf, "/"); - strcat (buf, (const char*) wxFileNameFromPath (name)); + strcat (buf, wxFileNameFromPath (name).c_str()); } if (create) { @@ -335,9 +304,9 @@ bool wxWriteResource(const wxString& section, const wxString& entry, const wxStr } char resName[300]; - strcpy (resName, (const char*) section); + strcpy (resName, section.c_str()); strcat (resName, "."); - strcat (resName, (const char*) entry); + strcat (resName, entry.c_str()); XrmPutStringResource (&database, resName, value); return TRUE; @@ -481,7 +450,7 @@ void wxXMergeDatabases (wxApp * theApp, Display * display) wxString classname = theApp->GetClassName(); char name[256]; (void) strcpy (name, "/usr/lib/X11/app-defaults/"); - (void) strcat (name, (const char*) classname); + (void) strcat (name, classname.c_str()); /* Get application defaults file, if any */ applicationDB = XrmGetFileDatabase (name); @@ -646,16 +615,11 @@ WXDisplay *wxGetDisplay() { if (gs_currentDisplay) return gs_currentDisplay; -#ifdef __WXMOTIF__ if (wxTheApp && wxTheApp->GetTopLevelWidget()) return XtDisplay ((Widget) wxTheApp->GetTopLevelWidget()); else if (wxTheApp) return wxTheApp->GetInitialDisplay(); return NULL; -#endif -#ifdef __WXX11__ - return wxApp::GetDisplay(); -#endif } bool wxSetDisplay(const wxString& display_name) @@ -670,13 +634,12 @@ bool wxSetDisplay(const wxString& display_name) } else { -#ifdef __WXMOTIF__ Cardinal argc = 0; Display *display = XtOpenDisplay((XtAppContext) wxTheApp->GetAppContext(), - (const char*) display_name, - (const char*) wxTheApp->GetAppName(), - (const char*) wxTheApp->GetClassName(), + display_name.c_str(), + wxTheApp->GetAppName().c_str(), + wxTheApp->GetClassName().c_str(), NULL, #if XtSpecificationRelease < 5 0, &argc, @@ -692,18 +655,6 @@ bool wxSetDisplay(const wxString& display_name) } else return FALSE; -#endif -#ifdef __WXX11__ - Display* display = XOpenDisplay((char*) display_name.c_str()); - - if (display) - { - gs_currentDisplay = (WXDisplay*) display; - return TRUE; - } - else - return FALSE; -#endif } } @@ -1103,7 +1054,6 @@ wxString wxGetXEventName(XEvent& event) } #endif -#ifdef __WXMOTIF__ // ---------------------------------------------------------------------------- // accelerators // ---------------------------------------------------------------------------- @@ -1208,9 +1158,6 @@ XmString wxFindAcceleratorText (const char *s) } -// These functions duplicate those in wxWindow, but are needed -// for use outside of wxWindow (e.g. wxMenu, wxMenuBar). - // Change a widget's foreground and background colours. void wxDoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour) @@ -1259,9 +1206,6 @@ extern void wxDoChangeFont(WXWidget widget, wxFont& font) } -#endif - // __WXMOTIF__ - bool wxWindowIsVisible(Window win) { XWindowAttributes wa; @@ -1283,3 +1227,39 @@ wxString wxXmStringToString( const XmString& xmString ) return wxEmptyString; } +XmString wxStringToXmString( const wxString& str ) +{ + return XmStringCreateLtoR((char *)str.c_str(), XmSTRING_DEFAULT_CHARSET); +} + +XmString wxStringToXmString( const char* str ) +{ + return XmStringCreateLtoR((char *)str, XmSTRING_DEFAULT_CHARSET); +} + +// ---------------------------------------------------------------------------- +// wxBitmap utility functions +// ---------------------------------------------------------------------------- + +// Creates a bitmap with transparent areas drawn in +// the given colour. +wxBitmap wxCreateMaskedBitmap(const wxBitmap& bitmap, wxColour& colour) +{ + wxBitmap newBitmap(bitmap.GetWidth(), + bitmap.GetHeight(), + bitmap.GetDepth()); + wxMemoryDC destDC; + wxMemoryDC srcDC; + + srcDC.SelectObject(bitmap); + destDC.SelectObject(newBitmap); + + wxBrush brush(colour, wxSOLID); + // destDC.SetOptimization(FALSE); + destDC.SetBackground(brush); + destDC.Clear(); + destDC.Blit(0, 0, bitmap.GetWidth(), bitmap.GetHeight(), + &srcDC, 0, 0, wxCOPY, TRUE); + + return newBitmap; +}