so far I have used JUCE to write applications for the Windows platform. Now I would like to port those apps to the Mac OS and distribute them through the Mac App Store. Later still I would like to try to port them even to iOS.
I have already built the Mac versions, just encountering some difficulties due to the non-standard version of STL used by Visual C++ and my ignorance of Xcode. But when I saw my applications appear on the iMac screen, I appreciated once again the capabilities of JUCE!
Having been a Mac programmer in the distant past, I know Apple’s attention to the look and feel of applications. I then read the Human Interface Guidelines, the Mac App Store Review Guidelines and downloaded some music application from the store to see if an application made with JUCE would be accepted.
I was reassured to see at the top of the charts two cross-platform applications, VirtualDJ and Mixx, both using for the main window a completely custom user interface, equivalent to an application made with Juce.
However, both use the native Aqua interface for standard dialogs and alerts. And actually I had the impression that the JUCE Alerts are a bit out of tune on Leopard. That is why I propose the following change.
Limited to the static methods showMessageBox(), showOkCancelBox() and showYesNoCancelBox() of the AlertWindow class, I think you could implement a transparent manner to choose whether to use a LookAndFeel -based version or a native version.
More or less, it should consist in:
adding a AlertWindow::useNativeBoxes()
adding a ‘useNativeBoxes’ parameter to AlertWindowInfo::AlertWindowInfo()
return AlertWindow::showExtendedNativeDialogBox (title, message, button1, button2, button3, iconType, numButtons);
MessageManager:: getInstance () -> callFunctionOnMessageThread (showCallback, (void *) this);
and finally implementing AlertWindow::showExtendedNativeDialogBox() for the various platforms, which should not be too difficult.
Clearly, I could try to do it myself, but I know from experience that making unilateral changes to Juce is a problem whenever the library is updated. That said, I am of course open to collaboration.
What do you think?