Next: About this document ...
Up: Adding a Button in
Previous: Putting the button in
We are ready to show the whole source code (the GNUmakefile
is the usual one):
#include <Foundation/Foundation.h>
#include <AppKit/AppKit.h>
@interface MyDelegate : NSObject
{
NSWindow *myWindow;
}
- (void) printHello: (id)sender;
- (void) createMenu;
- (void) createWindow;
- (void) applicationWillFinishLaunching: (NSNotification *)not;
- (void) applicationDidFinishLaunching: (NSNotification *)not;
@end
@implementation MyDelegate : NSObject
- (void) dealloc
{
RELEASE (myWindow);
}
- (void) printHello: (id)sender
{
printf ("Hello!\n");
}
- (void) createMenu
{
NSMenu *menu;
menu = AUTORELEASE ([NSMenu new]);
[menu addItemWithTitle: @"Quit"
action: @selector (terminate:)
keyEquivalent: @"q"];
[NSApp setMainMenu: menu];
}
- (void) createWindow
{
NSRect rect;
unsigned int styleMask = NSTitledWindowMask
| NSMiniaturizableWindowMask;
NSButton *myButton;
NSSize buttonSize;
myButton = AUTORELEASE ([NSButton new]);
[myButton setTitle: @"Print Hello!"];
[myButton sizeToFit];
[myButton setTarget: self];
[myButton setAction: @selector (printHello:)];
buttonSize = [myButton frame].size;
rect = NSMakeRect (100, 100,
buttonSize.width,
buttonSize.height);
myWindow = [NSWindow alloc];
myWindow = [myWindow initWithContentRect: rect
styleMask: styleMask
backing: NSBackingStoreBuffered
defer: NO];
[myWindow setTitle: @"This is a test window"];
[myWindow setContentView: myButton];
}
- (void) applicationWillFinishLaunching: (NSNotification *)not
{
[self createMenu];
[self createWindow];
}
- (void) applicationDidFinishLaunching: (NSNotification *)not;
{
[myWindow makeKeyAndOrderFront: nil];
}
@end
int main (int argc, const char **argv)
{
[NSApplication sharedApplication];
[NSApp setDelegate: [MyDelegate new]];
return NSApplicationMain (argc, argv);
}
Nicola Pero
2000-07-29