Simple windowed application: Difference between revisions
Content added Content deleted
No edit summary |
(obj-c with "*Step" fw; tested only on GNUstep, as usual (but it should work with Cocoa too)) |
||
Line 535: | Line 535: | ||
) |
) |
||
createDialog buttonClick |
createDialog buttonClick |
||
=={{header|Objective-C}}== |
|||
{{works with|GNUstep}} |
|||
<lang objc>#include <Foundation/Foundation.h> |
|||
#include <AppKit/AppKit.h> |
|||
@interface ClickMe : NSWindow |
|||
{ |
|||
NSButton *button; |
|||
NSTextField *text; |
|||
int counter; |
|||
} |
|||
- (void)applicationDidFinishLaunching: (NSNotification *)notification; |
|||
- (BOOL)applicationShouldTerminateAfterLastWindowClosed: (NSNotification *)notification; |
|||
- (void)advanceCounter: (id)sender; |
|||
@end</lang> |
|||
<lang objc>@implementation ClickMe : NSWindow |
|||
-(id) init |
|||
{ |
|||
NSRect buttonRect; |
|||
int totalWindowHeight; |
|||
counter = 0; |
|||
button = [[NSButton alloc] init]; |
|||
[button setButtonType: NSToggleButton]; |
|||
[button setTitle: @"Click Me"]; |
|||
[button sizeToFit]; |
|||
[button setTarget: self]; |
|||
[button setAction: @selector(advanceCounter:)]; |
|||
buttonRect = [button frame]; |
|||
text = [[NSTextField alloc] |
|||
initWithFrame: NSMakeRect(buttonRect.origin.x, buttonRect.size.height, |
|||
buttonRect.size.width, buttonRect.size.height)]; |
|||
[text setAlignment: NSCenterTextAlignment]; |
|||
[text setEditable: NO]; |
|||
[text setStringValue: @"There have been no clicks yet"]; |
|||
[text sizeToFit]; |
|||
// reset size of button according to size of (larger...?) text |
|||
[button |
|||
setFrameSize: NSMakeSize( [text frame].size.width, buttonRect.size.height ) ]; |
|||
totalWindowHeight = buttonRect.size.height + [text frame].size.height; |
|||
[self |
|||
initWithContentRect: NSMakeRect(100, 100, |
|||
[text frame].size.width, totalWindowHeight) |
|||
styleMask: (NSTitledWindowMask | NSClosableWindowMask) |
|||
backing: NSBackingStoreBuffered |
|||
defer: NO]; |
|||
[[self contentView] addSubview: text]; [text release]; |
|||
[[self contentView] addSubview: button]; [button release]; |
|||
[self setTitle: @"Click Me!"]; |
|||
[self center]; |
|||
return self; |
|||
} |
|||
-(void) dealloc |
|||
{ |
|||
[super dealloc]; |
|||
} |
|||
- (void)applicationDidFinishLaunching: (NSNotification *)notification |
|||
{ |
|||
[self orderFront: self]; |
|||
} |
|||
- (BOOL)applicationShouldTerminateAfterLastWindowClosed: (NSNotification *)notification |
|||
{ |
|||
return YES; |
|||
} |
|||
- (void)advanceCounter: (id)sender |
|||
{ |
|||
counter++; |
|||
[text setIntValue: counter]; |
|||
} |
|||
@end |
|||
int main() |
|||
{ |
|||
ClickMe *clickme; |
|||
NSAutoreleasePool *pool; |
|||
NSApplication *app; |
|||
pool = [[NSAutoreleasePool alloc] init]; |
|||
app = [NSApplication sharedApplication]; |
|||
clickme = [[ClickMe alloc] init]; |
|||
[app setDelegate: clickme]; |
|||
[app run]; |
|||
return 0; |
|||
}</lang> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |