|
|
1.1 root 1: /*
2: * This subclass only adds a few responsibilities to the Application
3: * class. It loads the info and preferences panels on demand,
4: * and overrides sendEvent: to watch for control-mouseDown events
5: * which it vectors off to the help object.
6: *
7: * Author: Julie Zelenski, NeXT Developer Support
8: * You may freely copy, distribute and reuse the code in this example.
9: * NeXT disclaims any warranty of any kind, expressed or implied, as to
10: * its fitness for any particular use.
11: */
12:
13: #import <appkit/appkit.h>
14: #import "BusyBoxApp.h"
15: #import "Help.h"
16: #import <strings.h>
17: #import <libc.h> // for chdir, getwd
18:
19:
20: @implementation BusyBoxApp
21:
22: /* TARGET/ACTION METHODS */
23:
24: - info:sender
25: /*
26: * The info panel is a separate nib module and only loaded on demand.
27: */
28: {
29: if (!infoPanel) {
30: if (![self loadNibSection:"InfoPanel.nib" owner:self withNames:NO]) {
31: NXLogError ("Could not load InfoPanel.nib");
32: }
33: }
34: [infoPanel makeKeyAndOrderFront:self];
35: return self;
36: }
37:
38: - preferences:sender
39: /*
40: * The preferences panel is a separate nib module and only loaded on demand.
41: */
42: {
43: if (!prefPanel) {
44: if (![self loadNibSection:"PrefPanel.nib" owner:self withNames:NO]) {
45: NXLogError ("Could not load PrefPanel.nib");
46: }
47: }
48: [prefPanel makeKeyAndOrderFront:self];
49: return self;
50: }
51:
52:
53:
54: - appDidInit:sender;
55: /* Upon starting, app asks Help object to bring up help panel and display the
56: * general help information.
57: */
58: {
59: [helpObject generalHelp:self];
60: return self;
61: }
62:
63: - sendEvent:(NXEvent *)event;
64: /* I override sendEvent: so that I can snarf control-mouseDown events.
65: * When the user holds Control key down and clicks on something, this
66: * method will figure out which window received the click, finds the
67: * view which is directly under the mouse down, and passes that information
68: * to the help object who will display the appropriate help file. If this
69: * isn't a control-mouseDown event, I just call the super Application
70: * sendEvent: method to handle the event normally.
71: */
72: {
73: id window,view;
74:
75: if ((event->type == NX_LMOUSEDOWN) && (event->flags & NX_CONTROLMASK)) {
76: window = [self findWindow:event->window];
77: view = [[window contentView] hitTest:&event->location];
78: if (view) [helpObject helpForView:view atPoint:&event->location];
79: else [helpObject helpForWindow:window];
80: }
81: else [super sendEvent:event];
82: return self;
83: }
84:
85: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.