Files
wxWidgets/src/mac/carbon/aboutdlg.cpp
2008-03-12 21:28:21 +00:00

93 lines
2.8 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: mac/carbon/aboutdlg.cpp
// Purpose: native wxAboutBox() implementation for wxMac
// Author: Vadim Zeitlin
// Created: 2006-10-08
// RCS-ID: $Id$
// Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// for compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#if wxUSE_ABOUTDLG
#ifndef WX_PRECOMP
#endif //WX_PRECOMP
#include "wx/aboutdlg.h"
#include "wx/generic/aboutdlgg.h"
#include "wx/mac/private.h"
// helper class for HIAboutBox options
class AboutBoxOptions : public wxCFRef<CFMutableDictionaryRef>
{
public:
AboutBoxOptions() : wxCFRef<CFMutableDictionaryRef>
(
CFDictionaryCreateMutable
(
kCFAllocatorDefault,
4, // there are at most 4 values
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks
)
)
{
}
void Set(CFStringRef key, const wxString& value)
{
CFDictionarySetValue(*this, key, wxCFStringRef(value));
}
};
// ============================================================================
// implementation
// ============================================================================
void wxAboutBox(const wxAboutDialogInfo& info)
{
// Mac native about box currently can show only name, version, copyright
// and description fields and we also shoehorn the credits text into the
// description but if we have anything else we must use the generic version
#ifndef __LP64__
if ( info.IsSimple() )
{
AboutBoxOptions opts;
opts.Set(kHIAboutBoxNameKey, info.GetName());
if ( info.HasVersion() )
{
opts.Set(kHIAboutBoxVersionKey,
wxString::Format(_("Version %s"), info.GetVersion()));
}
if ( info.HasCopyright() )
opts.Set(kHIAboutBoxCopyrightKey, info.GetCopyright());
opts.Set(kHIAboutBoxDescriptionKey, info.GetDescriptionAndCredits());
HIAboutBox(opts);
}
else // simple "native" version is not enough
#endif
{
// we need to use the full-blown generic version
wxGenericAboutBox(info);
}
}
#endif // wxUSE_ABOUTDLG