#include "wx/setup.h"
#include "wx/utils.h"
#include "wx/app.h"
+#include "wx/mac/uma.h"
#include <ctype.h>
#include <string.h>
#include <stdarg.h>
-// Get full hostname (eg. DoDo.BSn-Germany.crg.de)
+#ifndef __UNIX__
+// defined in unix/utilsunx.cpp for Mac OS X
+
+// get full hostname (with domain name if possible)
+bool wxGetFullHostName(wxChar *buf, int maxSize)
+{
+ return wxGetHostName(buf, maxSize);
+}
+
+// Get hostname only (without domain name)
bool wxGetHostName(char *buf, int maxSize)
{
// TODO
return FALSE;
}
+const wxChar* wxGetHomeDir(wxString *pstr)
+{
+ *pstr = wxMacFindFolder( (short) kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder ) ;
+ return pstr->c_str() ;
+}
+
+
+
// Get user name e.g. AUTHOR
bool wxGetUserName(char *buf, int maxSize)
{
{
// TODO
}
+#endif // !__UNIX__
// Emit a beeeeeep
void wxBell()
if (succ)
{
*value = (int)strtol(s, NULL, 10);
- delete[] s;
+ delete[] s;
return TRUE;
}
else return FALSE;
}
#endif // wxUSE_RESOURCES
-static int wxBusyCursorCount = 0;
+int wxBusyCursorCount = 0;
+extern CursHandle gMacCurrentCursor ;
+CursHandle gMacStoredActiveCursor = NULL ;
// Set the cursor to the busy cursor for all windows
void wxBeginBusyCursor(wxCursor *cursor)
wxBusyCursorCount ++;
if (wxBusyCursorCount == 1)
{
- // TODO
+ gMacStoredActiveCursor = gMacCurrentCursor ;
+ ::SetCursor( *::GetCursor( watchCursor ) ) ;
}
else
{
{
if (wxBusyCursorCount == 0)
return;
-
+
wxBusyCursorCount --;
if (wxBusyCursorCount == 0)
{
- // TODO
+ if ( gMacStoredActiveCursor )
+ ::SetCursor( *gMacStoredActiveCursor ) ;
+ else
+ {
+ Cursor MacArrow ;
+ ::SetCursor( GetQDGlobalsArrow( &MacArrow ) ) ;
+ }
+ gMacStoredActiveCursor = NULL ;
}
}
bool wxIsBusy()
{
return (wxBusyCursorCount > 0);
-}
+}
+
+#ifndef __UNIX__
+wxString wxMacFindFolder( short vol,
+ OSType folderType,
+ Boolean createFolder)
+{
+ short vRefNum ;
+ long dirID ;
+ wxString strDir ;
+
+ if ( FindFolder( vol, folderType, createFolder, &vRefNum, &dirID) == noErr)
+ {
+ FSSpec file ;
+ if ( FSMakeFSSpec( vRefNum , dirID , "\p" , &file ) == noErr )
+ {
+ strDir = wxMacFSSpec2UnixFilename( &file ) + "/" ;
+ }
+ }
+ return strDir ;
+}
+#endif
+#ifndef __UNIX__
char *wxGetUserHome (const wxString& user)
{
// TODO
return NULL;
}
+#endif
// Check whether this window wants to process messages, e.g. Stop button
// in long calculations.
void wxGetMousePosition( int* x, int* y )
{
- // TODO
+ Point pt ;
+
+ GetMouse( &pt ) ;
+ LocalToGlobal( &pt ) ;
+ *x = pt.h ;
+ *y = pt.v ;
};
// Return TRUE if we have a colour display
bool wxColourDisplay()
{
- // TODO
return TRUE;
}
// Returns depth of screen
int wxDisplayDepth()
{
- // TODO
- return 0;
+ Rect globRect ;
+ SetRect(&globRect, -32760, -32760, 32760, 32760);
+ GDHandle theMaxDevice;
+
+ int theDepth = 8;
+ theMaxDevice = GetMaxDevice(&globRect);
+ if (theMaxDevice != nil)
+ theDepth = (**(**theMaxDevice).gdPMap).pixelSize;
+
+ return theDepth ;
}
// Get size of display
void wxDisplaySize(int *width, int *height)
{
- // TODO
+ BitMap screenBits;
+ GetQDGlobalsScreenBits( &screenBits );
+
+ *width = screenBits.bounds.right - screenBits.bounds.left ;
+ *height = screenBits.bounds.bottom - screenBits.bounds.top ;
+#if TARGET_CARBON
+ SInt16 mheight ;
+ GetThemeMenuBarHeight( &mheight ) ;
+ *height -= mheight ;
+#else
+ *height -= LMGetMBarHeight() ;
+#endif
}
+void wxDisplaySizeMM(int *width, int *height)
+{
+ wxDisplaySize(width, height);
+}
+
+void wxClientDisplayRect(int *x, int *y, int *width, int *height)
+{
+ // This is supposed to return desktop dimensions minus any window
+ // manager panels, menus, taskbars, etc. If there is a way to do that
+ // for this platform please fix this function, otherwise it defaults
+ // to the entire desktop.
+ if (x) *x = 0;
+ if (y) *y = 0;
+ wxDisplaySize(width, height);
+}
+
+wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
+{
+ return wxGenericFindWindowAtPoint(pt);
+}