view Quasimode.m @ 23:0e91c6d2a547

Integrated event tap code into quasimode code.
author Atul Varma <avarma@mozilla.com>
date Mon, 12 Apr 2010 01:09:30 -0700
parents 4bb0e66b4d7f
children f2f634d576cf
line wrap: on
line source

#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSURL.h>
#import <Foundation/NSURLRequest.h>
#import <AppKit/NSApplication.h>
#import <AppKit/NSColor.h>
#import <WebKit/WebFrame.h>
#import <WebKit/WebFrameView.h>
#import <WebKit/DOMEvents.h>

#import "Quasimode.h"
#import "JavaScriptQuasimode.h"
#import "QuasimodalEventTap.h"

@implementation Quasimode
- (id)initWithEventSource:(NSString *)sourceName {
  if (self = [super init]) {
    eventSource = [sourceName copy];

    NSRect rect = {{20, 20},
                   {100, 100}};

    window = [[NSWindow alloc] initWithContentRect: rect
                               styleMask: NSBorderlessWindowMask
                               backing: NSBackingStoreBuffered
                               defer: YES];

    view = [[WebView alloc] initWithFrame: rect
                            frameName: nil
                            groupName: nil];

    NSURL *url = [NSURL URLWithString: @"http://127.0.0.1:8000"];
    NSURLRequest *req = [
      NSURLRequest requestWithURL: url
      cachePolicy: NSURLRequestReloadIgnoringLocalCacheData
      timeoutInterval: 5
    ];

    [view setDrawsBackground: NO];
    [[[view mainFrame] frameView] setAllowsScrolling: NO];
    [[view mainFrame] loadRequest: req];

    JSQuasimodeInit(self);

    [window setOpaque: NO];
    [window setBackgroundColor: [NSColor colorWithCalibratedRed: 0.0
                                         green: 0.0
                                         blue: 0.0
                                         alpha: 0.0]];
    [window setContentView: view];
    [window setLevel: NSScreenSaverWindowLevel];
    [window makeKeyAndOrderFront: self];
  }
  return self;
}

- (NSWindow *)window {
  return window;
}

- (WebView *)view {
  return view;
}
@end

int main(int argc, const char *argv[])
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

  [NSApplication sharedApplication];

  QuasimodalEventTap *tap = [[QuasimodalEventTap alloc]
                              initWithName: @"keyboard"
                              quasimodeKey: kCGEventFlagMaskAlternate];

  Quasimode *app = [[Quasimode alloc] initWithEventSource: @"keyboard"];

  [NSApp run];

  return 0;
}