wiki:Developer/OS/MacOS

Mac OS X

BallroomDJ on Mac OS X had many issues at first and didn't work as well. There are not very many BallroomDJ users on the Mac platform. Installation on Mac OS X is more difficult for the users due to the lack of tools.

The more I use Mac OS X, the more I dislike it. Horrible user interface for menus and the dock. Mac OS X is not very developer friendly. Many packages must be installed via MacPorts, and this requires that the XCode command line tools be installed, which requires a Mac OS X developer account. This is not very user friendly.

Mac OS X's installer is quite awful. Sometimes it overwrites, sometimes it removes and replaces, there's no telling what it will decide to do.

UI - menus

BallroomDJ doesn't use the Mac style menu. All of BallroomDJ's menus are context sensitive and need to be changed depending on what feature is in use.

Usually, when creating a UI, it is better to use the native interfaces because that is what the users are used to.

In the case of BallroomDJ, I decided not to do that in order to provide a better user interface for menus and not use Mac OS X's. This also keeps the look and feel of BallroomDJ the same across platforms, which helps for documentation purposes. Unfortunately, as the Tk menu handling is directly tied to the Mac OS global menus, I had to write my own menubar handling for Mac OS X.

When a friend of mine first saw the menus on Mac OS X, she said, "Why are they disconnected?". Indeed.

Localization of directory names:
Apple doc
The method Mac OS X uses to localize directory names is a bit of a hack. BallroomDJ does not try to read and modify the localized names for display. For this reason, BallroomDJ is set to use the Mac OS X native interfaces instead of the built-in dialogs.

Notes:

plutil -p can be used to display the .strings file contents. There are other formatting options available also.

Current system locale: defaults read -g AppleLocale

User's preferred languages: defaults read NSGlobalDomain AppleLanguages

System folder localized strings: /System/Library/CoreServices/SystemFolderLocalizations/fr.lproj/SystemFolderLocalizations.strings
There are some sub-locales here (pt_PT, zh_CN, zh_TW). The localized directory will have a .localized file contained within it. There may be a .localized file, but that string may not be present with the systemfolderlocalizations data.

Other directory localized strings: The directory will have '.localized' string appended to it. Within the folder there will be a .localized/ directory. Within that folder, there are the *.lproj files. Unfortunately, it appears that 'fr.lproj' might be 'French.lproj'. Makes things difficult.

Mac OS X development environment

When building Tcl, Tk, the volume controls, the VLC library interface, etc., the -mmacosx-version-min=10.9 flag should be used in all compilations (adjust minimum version as necessary).

otool -L some.dylib
Displays the dependent libraries.
install_name_tool -id "@loader_path/../some.dylib" some.dylib
install_name_tool -change "path" "@loader_path/../some.dylib" some.dylib
Change the path for a dynamic library.

Last modified 4 months ago Last modified on 2017-09-20T13:56:35-08:00