]> git.saurik.com Git - wxWidgets.git/blob - src/mac/carbon/aboutdlg.cpp
Explicitly forward non-command events along to the native control first.
[wxWidgets.git] / src / mac / carbon / aboutdlg.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: mac/carbon/aboutdlg.cpp
3 // Purpose: native wxAboutBox() implementation for wxMac
4 // Author: Vadim Zeitlin
5 // Created: 2006-10-08
6 // RCS-ID: $Id$
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/mac/private.h"
31
32 // helper class for HIAboutBox options
33 class AboutBoxOptions : public wxMacCFRefHolder<CFMutableDictionaryRef>
34 {
35 public:
36 AboutBoxOptions() : wxMacCFRefHolder<CFMutableDictionaryRef>
37 (
38 CFDictionaryCreateMutable
39 (
40 kCFAllocatorDefault,
41 4, // there are at most 4 values
42 &kCFTypeDictionaryKeyCallBacks,
43 &kCFTypeDictionaryValueCallBacks
44 )
45 )
46 {
47 }
48
49 void Set(CFStringRef key, const wxString& value)
50 {
51 CFDictionarySetValue(*this, key, wxMacCFStringHolder(value));
52 }
53 };
54
55 // ============================================================================
56 // implementation
57 // ============================================================================
58
59 void wxAboutBox(const wxAboutDialogInfo& info)
60 {
61 // Mac native about box currently can show only name, version, copyright
62 // and description fields and we also shoehorn the credits text into the
63 // description but if we have anything else we must use the generic version
64 if ( info.IsSimple() )
65 {
66 AboutBoxOptions opts;
67
68 opts.Set(kHIAboutBoxNameKey, info.GetName());
69
70 if ( info.HasVersion() )
71 opts.Set(kHIAboutBoxVersionKey, info.GetVersion());
72
73 if ( info.HasCopyright() )
74 opts.Set(kHIAboutBoxCopyrightKey, info.GetCopyright());
75
76 opts.Set(kHIAboutBoxDescriptionKey, info.GetDescriptionAndCredits());
77
78 HIAboutBox(opts);
79 }
80 else // simple "native" version is not enough
81 {
82 // we need to use the full-blown generic version
83 wxGenericAboutBox(info);
84 }
85 }
86
87 #endif // wxUSE_ABOUTDLG