This is a listing of the Mac only programming constraints. Maybe this list would help new users or porting programs from windows to the Mac. These are not bugs. This is not a complete list and I don't have a Windows machine to compare with so I need your suggestions.
Updated 3/22/13 *J. Baker has posted a detailed
guide for submitting your app to iTunes with a further
discussion here.
Tools - work within IDE as 'Tools'
-
plistTool for OS X tool that works thru the debugger! - wilbert/J. Baker
Updated 3/22/13 *-
PureMonitor for OS X tool that monitors CPU & threads, logs, and more! - J. Baker/wilbert
Updated 3/14/13 *Platform specific:-use .app after program name, when creating an executable, to signal compiler to create a stand-alone application
-plists look like
this.
-plist are found by right-clicking (cntrl+click) on the app and selecting 'Show Package Contents' and looking in 'Contents' folder
-plists are always replaced with a default after creating an executable (you must copy your plist over it every time)
-plists can automatically be copied to new executable with
this code - jamirokwai
-a plist
tool that works within the debugger
plistTool for OS X - J. Baker/wilbert
*-windows must be moved down the height of the MenuBar (22 px)
-only one menu per program (they seem to be accessible from any window and must have a menu window open at all times!)
-pre defined constants of #PB_Menu_About, #PB_Menu_Preferences,#PB_Menu_Quit
-file path uses '/' instead of '\' (as in windows) eg. "user/WilliamL/Library/MyPrefs.txt" Multi-platform
workaround-colors designated by '$0000FF' are shown as BGR, pb commands like RGB(0,0,255) are shown as RGB
-color constants like #White are not defined on the Mac platform (but you can define them)
-color values in the API are word values ($FFFF) instead of byte values ($FF), see
conversion here.
-pb preferences can be found
here.
-supporting file are saved
here updated info from J Baker
-Mac use a single button mouse and right clicks are entered by using ctrl+mouse to cause a right click. Laptops only have a singe button also. This does not work on the Canvas gadget but a work-around is
here. Multiple button mice work fine on the Mac along with the scroll wheel and many use them (as I do).
-Freak explains how to compile
'universal binaries'-Drawing can be done with CGContext
functions for arcs, curves, blend modes that are antialiased.
Platform limitations:-color in gadgets is generally not supported in pb - but may be added by
API. Here is a
chart of all gadget possibilities, and
pictures of gadgets. Note: with 5.1 the color options are better.
-CalendarGadget on the Mac is just text (not like in manual) a
CanvasCalendarGadget or
datepicker are possible replacements.
-arrow keys don't work with AddKeyboardShortcut (yet!) but do work with Keyboard commands. (Arrow keys work in 5.10+)
-button height over (22 px ?) gives a square button instead of the rounded box (use 25 px for default button)
-printing is achieved by creating an image and printing it out (poor text rendering),
text can be printed clearly by using the Carbon print manager (
example)
* (see next item)
-with version 5.00 printing size changed to 1/4 size. So to print 12 pt. text you have to use a 48 pt. font - same with images (x4).
-Console does not work on the Mac! Fred
says OpenConsole() does nothing on OSX/Linux as there is no special console format.-Tools are created using the 'Console' option when creating the executable
-Arr.Point(1) (eg.) will not work since Point is not a default structure. The structure can be
defined.
-Color constants are not defined (eg. #White, #Black, etc)
-Text is limited to font and size - italics/underline/bold can be achieved by
API in gadgets
-Text in images can achieve
underline/strike-out with drawing commands
Platform suggestions:-Arial (spelled with a capital A) and Geneva are safe fonts if you are coming from Windows (along with Monaco, Courier and many others). Also check to see if font is loaded.
-line feeds, as explained by Shardik, are:
Line feeds on the Mac are #CR$, on Linux #LF$ and on Windows #CRLF$.
MessageRequester() a #CR$ works on all 3 platforms the same
-use of FontID() is required [ eg. DrawingFont (FontID(F2)) ] - in another thread, freak says this is the correct behavior but it seems to be optional on Windows
- OpenWindow flags should be limited to #PB_Window_SystemMenu and #PB_Window_WindowCentered for compatibility or at least to the defined pb constants.
- see 'Re: Create threadsafe executable' by jesperbrannmark for his
suggestions about using threads and programming on the Mac in general
- (your contributions)?
I strongly suggest looking at
API List of the Mac for many additional abilities.