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
- 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
-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
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
-Text in images can achieve underline/strike-out
with drawing commandsPlatform 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.