]> git.saurik.com Git - wxWidgets.git/blame - src/osx/cocoa/aboutdlg.mm
Define NDEBUG when building 3rd party libraries.
[wxWidgets.git] / src / osx / cocoa / aboutdlg.mm
CommitLineData
fb8dcb05
SC
1///////////////////////////////////////////////////////////////////////////////
2// Name: osx/cocoa/aboutdlg.cpp
3// Purpose: native wxAboutBox() implementation for wxMac
4// Author: Vadim Zeitlin
5// Created: 2006-10-08
6// RCS-ID: $Id: aboutdlg.cpp 54820 2008-07-29 20:04:11Z SC $
7// Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
8// Licence: wxWindows licence
9///////////////////////////////////////////////////////////////////////////////
10
11// ============================================================================
12// declarations
13// ============================================================================
14
15// ----------------------------------------------------------------------------
16// headers
17// ----------------------------------------------------------------------------
18
19// for compilers that support precompilation, includes "wx.h".
20#include "wx/wxprec.h"
21
22#if wxUSE_ABOUTDLG
23
24#ifndef WX_PRECOMP
25#endif //WX_PRECOMP
26
27#include "wx/aboutdlg.h"
28#include "wx/generic/aboutdlgg.h"
29
30#include "wx/osx/private.h"
31
32/*
33@"Credits": An NSAttributedString displayed in the info area of the panel. If not specified, this method then looks for a file named “Credits.html”, “Credits.rtf”, and “Credits.rtfd”, in that order, in the bundle returned by the NSBundle class method mainBundle. The first file found is used. If none is found, the info area is left blank.
34@"ApplicationName": An NSString object displayed as the application’s name. If not specified, this method then uses the value of CFBundleName (localizable). If neither is found, this method uses [[NSProcessInfo processInfo] processName].
35@"ApplicationIcon": An NSImage object displayed as the application’s icon. If not specified, this method then looks for an image named “NSApplicationIcon”, using [NSImage imageNamed:@"NSApplicationIcon"]. If neither is available, this method uses the generic application icon.
36@"Version": An NSString object with the build version number of the application (“58.4”), displayed as “(v58.4)”. If not specified, obtain from the CFBundleVersion key in infoDictionary; if not specified, leave blank (the “(v)” is not displayed).
37@"Copyright": An NSString object with a line of copyright information. If not specified, this method then looks for the value of NSHumanReadableCopyright in the localized version infoDictionary. If neither is available, this method leaves the space blank.
38@"ApplicationVersion": An NSString object with the application version (“Mac OS X”, “3”, “WebObjects 4.5”, “AppleWorks 6”,...). If not specified, obtain from the CFBundleShortVersionString key in infoDictionary. If neither is available, the build version, if available, is printed alone, as “Version x.x”.
39*/
40
41// helper class for HIAboutBox options
42class AboutBoxOptions : public wxCFRef<CFMutableDictionaryRef>
43{
44public:
45 AboutBoxOptions() : wxCFRef<CFMutableDictionaryRef>
46 (
47 CFDictionaryCreateMutable
48 (
49 kCFAllocatorDefault,
50 4, // there are at most 4 values
51 &kCFTypeDictionaryKeyCallBacks,
52 &kCFTypeDictionaryValueCallBacks
53 )
54 )
55 {
56 }
57
58 void Set(CFStringRef key, const wxString& value)
59 {
60 CFDictionarySetValue(*this, key, wxCFStringRef(value));
61 }
62
63 void SetAttributedString( CFStringRef key, const wxString& value )
64 {
953aebc2 65 wxCFRef<CFAttributedStringRef> attrString(
fb8dcb05
SC
66 CFAttributedStringCreate(kCFAllocatorDefault, wxCFStringRef(value), NULL) );
67 CFDictionarySetValue(*this, key, attrString);
68 }
69};
70
71// ============================================================================
72// implementation
73// ============================================================================
74
7d7cb800 75void wxAboutBox(const wxAboutDialogInfo& info, wxWindow *parent)
fb8dcb05
SC
76{
77 // Mac native about box currently can show only name, version, copyright
78 // and description fields and we also shoehorn the credits text into the
79 // description but if we have anything else we must use the generic version
80
81 if ( info.IsSimple() )
82 {
83 AboutBoxOptions opts;
84
85 opts.Set(CFSTR("ApplicationName"), info.GetName());
86
87 if ( info.HasVersion() )
88 {
89 opts.Set(CFSTR("Version"),info.GetVersion());
704006b3 90 opts.Set(CFSTR("ApplicationVersion"),info.GetLongVersion());
fb8dcb05
SC
91 }
92
93 if ( info.HasCopyright() )
953aebc2 94 opts.Set(CFSTR("Copyright"), info.GetCopyrightToDisplay());
fb8dcb05
SC
95
96 opts.SetAttributedString(CFSTR("Credits"), info.GetDescriptionAndCredits());
97
98 [[NSApplication sharedApplication] orderFrontStandardAboutPanelWithOptions:((NSDictionary*)(CFDictionaryRef) opts)];
99 }
100 else // simple "native" version is not enough
101 {
102 // we need to use the full-blown generic version
7d7cb800 103 wxGenericAboutBox(info, parent);
fb8dcb05
SC
104 }
105}
106
107#endif // wxUSE_ABOUTDLG