diff options
Diffstat (limited to 'src/cmd/devdraw/osx-delegate.m')
-rw-r--r-- | src/cmd/devdraw/osx-delegate.m | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/src/cmd/devdraw/osx-delegate.m b/src/cmd/devdraw/osx-delegate.m deleted file mode 100644 index c4a5f5bb..00000000 --- a/src/cmd/devdraw/osx-delegate.m +++ /dev/null @@ -1,282 +0,0 @@ -#define Point OSXPoint -#define Rect OSXRect -#define Cursor OSXCursor -#import "osx-delegate.h" -#import <Foundation/Foundation.h> -#import <AppKit/AppKit.h> -#undef Cursor -#undef Rect -#undef Point - -#include <u.h> -#include <errno.h> -#include <sys/select.h> -#include <libc.h> -#include <draw.h> -#include <memdraw.h> -#include <memlayer.h> -#include <keyboard.h> -#include <mouse.h> -#include <cursor.h> -#include <drawfcall.h> - -AUTOFRAMEWORK(Foundation) -AUTOFRAMEWORK(AppKit) - -extern int trace; - -extern void fullscreen(int); -extern void kbdevent(NSEvent *event); -extern void mouseevent(NSEvent *event); -extern void eresized(int); - -extern void runmsg(Wsysmsg *m); -extern void seticon(); - -@implementation DevdrawDelegate -+(void)populateMainMenu -{ - NSMenu *mainMenu = [[NSMenu alloc] initWithTitle:@"MainMenu"]; - NSMenuItem *menuItem; - NSMenu *submenu; - - menuItem = [mainMenu addItemWithTitle:@"Apple" action:NULL keyEquivalent:@""]; - submenu = [[NSMenu alloc] initWithTitle:@"Apple"]; - [NSApp performSelector:@selector(setAppleMenu:) withObject:submenu]; - [self populateApplicationMenu:submenu]; - [mainMenu setSubmenu:submenu forItem:menuItem]; - - menuItem = [mainMenu addItemWithTitle:@"View" action:NULL keyEquivalent:@""]; - submenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"View", "@The View menu")]; - [self populateViewMenu:submenu]; - [mainMenu setSubmenu:submenu forItem:menuItem]; - - menuItem = [mainMenu addItemWithTitle:@"Window" action:NULL keyEquivalent:@""]; - submenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"Window", @"The Window menu")]; - [self populateWindowMenu:submenu]; - [mainMenu setSubmenu:submenu forItem:menuItem]; - [NSApp setWindowsMenu:submenu]; - - menuItem = [mainMenu addItemWithTitle:@"Help" action:NULL keyEquivalent:@""]; - submenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"Help", @"The Help menu")]; - [self populateHelpMenu:submenu]; - [mainMenu setSubmenu:submenu forItem:menuItem]; - - [NSApp setMainMenu:mainMenu]; -} - -+(void)populateApplicationMenu:(NSMenu *)aMenu -{ - NSString *applicationName = [[NSProcessInfo processInfo] processName]; - NSMenuItem *menuItem; - - menuItem = [aMenu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"About", nil), applicationName] - action:@selector(orderFrontStandardAboutPanel:) - keyEquivalent:@""]; - [menuItem setTarget:NSApp]; - - [aMenu addItem:[NSMenuItem separatorItem]]; - - menuItem = [aMenu addItemWithTitle:NSLocalizedString(@"Preferences...", nil) - action:NULL - keyEquivalent:@","]; - - [aMenu addItem:[NSMenuItem separatorItem]]; - - menuItem = [aMenu addItemWithTitle:NSLocalizedString(@"Services", nil) - action:NULL - keyEquivalent:@""]; - NSMenu * servicesMenu = [[NSMenu alloc] initWithTitle:@"Services"]; - [aMenu setSubmenu:servicesMenu forItem:menuItem]; - [NSApp setServicesMenu:servicesMenu]; - - [aMenu addItem:[NSMenuItem separatorItem]]; - - menuItem = [aMenu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Hide", nil), applicationName] - action:@selector(hide:) - keyEquivalent:@"h"]; - [menuItem setTarget:NSApp]; - - menuItem = [aMenu addItemWithTitle:NSLocalizedString(@"Hide Others", nil) - action:@selector(hideOtherApplications:) - keyEquivalent:@"h"]; - [menuItem setKeyEquivalentModifierMask:NSCommandKeyMask | NSAlternateKeyMask]; - [menuItem setTarget:NSApp]; - - menuItem = [aMenu addItemWithTitle:NSLocalizedString(@"Show All", nil) - action:@selector(unhideAllApplications:) - keyEquivalent:@""]; - [menuItem setTarget:NSApp]; - - [aMenu addItem:[NSMenuItem separatorItem]]; - - menuItem = [aMenu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Quit", nil), applicationName] - action:@selector(terminate:) - keyEquivalent:@"q"]; - [menuItem setTarget:NSApp]; -} - -+(void)populateViewMenu:(NSMenu *)aMenu -{ - NSMenuItem *menuItem; - menuItem = [aMenu addItemWithTitle:NSLocalizedString(@"Full Screen", nil) - action:@selector(fullscreen:) keyEquivalent:@"F"]; - [menuItem setTarget:NSApp]; - - menuItem = [aMenu addItemWithTitle:NSLocalizedString(@"Cmd-F exits full screen", nil) - action:NULL keyEquivalent:@""]; -} - -+(void)populateWindowMenu:(NSMenu *)aMenu -{ -} - -+(void)populateHelpMenu:(NSMenu *)aMenu -{ -} - -- (void)applicationWillFinishLaunching:(NSNotification *)notification -{ - seticon(); -} - -- (void)applicationDidFinishLaunching:(NSNotification *)notification -{ - [DevdrawDelegate populateMainMenu]; - -// [NSThread detachNewThreadSelector:@selector(devdrawMain) -// toTarget:self withObject:nil]; -// [NSApplication detachDrawingThread:@selector(devdrawMain) -// toTarget:self withObject:nil]; - [readHandle waitForDataInBackgroundAndNotify]; -} - -- (id)init -{ - if(self = [super init]){ - readHandle = [[NSFileHandle alloc] initWithFileDescriptor:3 closeOnDealloc:YES]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(devdrawMain:) - name:NSFileHandleDataAvailableNotification - object:readHandle]; - [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self - selector:@selector(receiveWake:) - name:NSWorkspaceDidWakeNotification - object:NULL]; - } - return self; -} - -- (void)dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [readHandle release]; - return [super dealloc]; -} - -- (void)devdrawMain:(NSNotification *)notification -{ - uchar buf[4], *mbuf; - int nmbuf, n, nn; - Wsysmsg m; - NSData *data; - - mbuf = nil; - nmbuf = 0; - - data = [readHandle readDataOfLength:4]; - if([data length] == 4){ - [data getBytes:buf length:4]; - GET(buf, n); - if(n > nmbuf){ - free(mbuf); - mbuf = malloc(4+n); - if(mbuf == nil) - sysfatal("malloc: %r"); - nmbuf = n; - } - memmove(mbuf, buf, 4); - data = [readHandle readDataOfLength:(n-4)]; - [data getBytes:(mbuf+4)]; - nn = [data length]; - if(nn != n-4) - sysfatal("eof during message"); - - /* pick off messages one by one */ - if(convM2W(mbuf, nn+4, &m) <= 0) - sysfatal("cannot convert message"); - if(trace) fprint(2, "<- %W\n", &m); - runmsg(&m); - } else { - [NSApp terminate:self]; - } - [readHandle waitForDataInBackgroundAndNotify]; - -return; - - while((n = read(3, buf, 4)) == 4){ - GET(buf, n); - if(n > nmbuf){ - free(mbuf); - mbuf = malloc(4+n); - if(mbuf == nil) - sysfatal("malloc: %r"); - nmbuf = n; - } - memmove(mbuf, buf, 4); - nn = readn(3, mbuf+4, n-4); - if(nn != n-4) - sysfatal("eof during message"); - - /* pick off messages one by one */ - if(convM2W(mbuf, nn+4, &m) <= 0) - sysfatal("cannot convert message"); - if(trace) fprint(2, "<- %W\n", &m); - runmsg(&m); - } -} - -#pragma mark Notifications - -- (void)fullscreen:(NSNotification *)notification -{ - fullscreen(1); -} - -- (void)windowWillClose:(NSNotification *)notification -{ -// if(osx.window == [notification object]){ - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [NSApp terminate:self]; -// } -} - -- (void)windowDidResize:(NSNotification *)notification -{ -// if(osx.window == [notification object]) { - eresized(1); -// } -} - -- (void)receiveWake:(NSNotification *)notification -{ - if(trace) NSLog(@"%s:%d %@", __FILE__, __LINE__, notification); - // redraw -} - -- (void)mouseDown:(NSEvent *)anEvent -{ - mouseevent(anEvent); -} - -- (void)mouseDragged:(NSEvent *)anEvent -{ - mouseevent(anEvent); -} - -- (void)keydown:(NSEvent *)anEvent -{ - kbdevent(anEvent); -} - -@end |