/////////////////////////////////////////////////////////////////////////////
-// Name: src/mac/carbon/colordlg.mm
+// Name: src/osx/carbon/colordlgosx.mm
// Purpose: wxColourDialog class. NOTE: you can use the generic class
// if you wish, instead of implementing this.
// Author: Ryan Norton
#include "wx/wxprec.h"
-#include "wx/osx/colordlg.h"
+#include "wx/colordlg.h"
#include "wx/fontdlg.h"
+#include "wx/modalhook.h"
// ============================================================================
// implementation
IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog)
-// Cocoa headers
-#include "wx/cocoa/autorelease.h"
-#include "wx/cocoa/string.h"
+#include "wx/osx/private.h"
-#import <AppKit/NSFont.h>
-#import <AppKit/NSFontManager.h>
-#import <AppKit/NSFontPanel.h>
-#import <AppKit/NSColor.h>
-#import <AppKit/NSColorPanel.h>
+#import <Foundation/Foundation.h>
+#import <AppKit/AppKit.h>
// ---------------------------------------------------------------------------
// wxCPWCDelegate - Window Closed delegate
// ---------------------------------------------------------------------------
-@interface wxCPWCDelegate : NSObject
+@interface wxCPWCDelegate : NSObject wxOSX_10_6_AND_LATER(<NSWindowDelegate>)
{
bool m_bIsClosed;
}
- (id)init
{
- [super init];
+ self = [super init];
m_bIsClosed = false;
return self;
if (data)
m_colourData = *data;
- //
- // This is the key call - this initializes
- // events and window stuff for cocoa for carbon
- // applications.
- //
- // This is also the only call here that is
- // 10.2+ specific (the rest is OSX only),
- // which, ironically, the carbon font
- // panel requires.
- //
- bool bOK = NSApplicationLoad();
-
//autorelease pool - req'd for carbon
NSAutoreleasePool *thePool;
thePool = [[NSAutoreleasePool alloc] init];
- if(m_colourData.m_dataColour.Ok())
+ [[NSColorPanel sharedColorPanel] setShowsAlpha:YES];
+ if(m_colourData.GetColour().IsOk())
[[NSColorPanel sharedColorPanel] setColor:
- [NSColor colorWithCalibratedRed:m_colourData.m_dataColour.Red() / 255.0
- green:m_colourData.m_dataColour.Green() / 255.0
- blue:m_colourData.m_dataColour.Blue() / 255.0
- alpha:1.0]
+ [NSColor colorWithCalibratedRed:(CGFloat) (m_colourData.GetColour().Red() / 255.0)
+ green:(CGFloat) (m_colourData.GetColour().Green() / 255.0)
+ blue:(CGFloat) (m_colourData.GetColour().Blue() / 255.0)
+ alpha:(CGFloat) (m_colourData.GetColour().Alpha() / 255.0)]
];
else
[[NSColorPanel sharedColorPanel] setColor:[NSColor blackColor]];
//We're done - free up the pool
[thePool release];
- return bOK;
+ return true;
}
int wxColourDialog::ShowModal()
{
+ WX_HOOK_MODAL_DIALOG();
+
//Start the pool. Required for carbon interaction
//(For those curious, the only thing that happens
//if you don't do this is a bunch of error
//
// Start the color panel modal loop
//
+ wxDialog::OSXBeginModalDialog();
NSModalSession session = [NSApp beginModalSessionForWindow:theColorPanel];
for (;;)
{
break;
}
[NSApp endModalSession:session];
+ wxDialog::OSXEndModalDialog();
//free up the memory for the delegates - we don't need them anymore
+ [theColorPanel setDelegate:nil];
[theCPDelegate release];
//Get the shared color panel along with the chosen color and set the chosen color
NSColor* theColor = [[theColorPanel color] colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
- m_colourData.m_dataColour.Set(
+ m_colourData.GetColour().Set(
(unsigned char) ([theColor redComponent] * 255.0),
(unsigned char) ([theColor greenComponent] * 255.0),
- (unsigned char) ([theColor blueComponent] * 255.0)
- );
+ (unsigned char) ([theColor blueComponent] * 255.0),
+ (unsigned char) ([theColor alphaComponent] * 255.0)
+ );
//Release the pool, we're done :)
[thePool release];