}
+// ----------------------------------------------------------------------------
+// busy cursor stuff
+// ----------------------------------------------------------------------------
+
+static int wxBusyCursorCount = 0;
+
+// Helper function
+static void
+wxXSetBusyCursor (wxWindow * win, wxCursor * cursor)
+{
+ Display *display = (Display*) win->GetXDisplay();
+
+ Window xwin = (Window) win->GetXWindow();
+ if (!xwin)
+ return;
+
+ XSetWindowAttributes attrs;
+
+ if (cursor)
+ {
+ attrs.cursor = (Cursor) cursor->GetXCursor(display);
+ }
+ else
+ {
+ // Restore old cursor
+ if (win->GetCursor().Ok())
+ attrs.cursor = (Cursor) win->GetCursor().GetXCursor(display);
+ else
+ attrs.cursor = None;
+ }
+ if (xwin)
+ XChangeWindowAttributes (display, xwin, CWCursor, &attrs);
+
+ XFlush (display);
+
+ for(wxNode *node = win->GetChildren().First (); node; node = node->Next())
+ {
+ wxWindow *child = (wxWindow *) node->Data ();
+ wxXSetBusyCursor (child, cursor);
+ }
+}
+
+// Set the cursor to the busy cursor for all windows
+void wxBeginBusyCursor(wxCursor *cursor)
+{
+ wxBusyCursorCount++;
+ if (wxBusyCursorCount == 1)
+ {
+ for(wxNode *node = wxTopLevelWindows.First (); node; node = node->Next())
+ {
+ wxWindow *win = (wxWindow *) node->Data ();
+ wxXSetBusyCursor (win, cursor);
+ }
+ }
+}
+
+// Restore cursor to normal
+void wxEndBusyCursor()
+{
+ if (wxBusyCursorCount == 0)
+ return;
+
+ wxBusyCursorCount--;
+ if (wxBusyCursorCount == 0)
+ {
+ for(wxNode *node = wxTopLevelWindows.First (); node; node = node->Next())
+ {
+ wxWindow *win = (wxWindow *) node->Data ();
+ wxXSetBusyCursor (win, NULL);
+ }
+ }
+}
+
+// TRUE if we're between the above two calls
+bool wxIsBusy()
+{
+ return (wxBusyCursorCount > 0);
+}
#include "wx/x11/private.h"
+#if wxUSE_XPM
#if wxHAVE_LIB_XPM
- #include <X11/xpm.h>
+#include <X11/xpm.h>
+#else
+#include "wx/xpmdecod.h"
+#include "wx/wfstream.h"
+#endif
#endif
#include <math.h>
bool wxBitmap::CreateFromXpm( const char **bits )
{
+#if wxUSE_XPM
+#if wxHAVE_LIB_XPM
UnRef();
wxCHECK_MSG( bits != NULL, FALSE, wxT("invalid bitmap data") )
M_BMPDATA->m_mask->SetBitmap( (WXPixmap) mask );
M_BMPDATA->m_mask->SetDisplay( xdisplay );
}
+ return TRUE;
}
else
{
return FALSE;
}
-
- return TRUE;
+#else
+ wxXPMDecoder decoder;
+ wxImage image(decoder.ReadData(bits));
+ if (image.Ok())
+ return CreateFromImage(image);
+ else
+ return FALSE;
+#endif
+#endif
+ return FALSE;
}
bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
if (type == wxBITMAP_TYPE_XPM)
{
+#if wxUSE_XPM
+#if wxHAVE_LIB_XPM
m_refData = new wxBitmapRefData();
M_BMPDATA->m_display = wxGlobalDisplay();
return FALSE;
}
+#else
+#if wxUSE_STREAMS
+ wxXPMDecoder decoder;
+ wxFileInputStream stream(name);
+ if (stream.Ok())
+ {
+ wxImage image(decoder.Read(stream));
+ if (image.Ok())
+ return CreateFromImage(image);
+ else
+ return FALSE;
+ }
+ else
+ return FALSE;
+#else
+ return FALSE;
+#endif
+ // wxUSE_STREAMS
+#endif
+ // wxHAVE_LIB_XPM
+#endif
+ // wxUSE_XPM
+ return FALSE;
}
else // try if wxImage can load it
{
XtRemoveInput(*id);
}
+#endif
int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
{
+#ifdef __WXMOTIF__
XtInputId id = XtAppAddInput((XtAppContext) wxTheApp->GetAppContext(),
fd,
(XtPointer *) XtInputReadMask,
(XtPointer) proc_data);
return (int)id;
-}
#endif
+#ifdef __WXX11__
+ // TODO
+ return 0;
+#endif
+}
// ----------------------------------------------------------------------------
// misc