1ddda1ca |
1 | /* |
2 | * Header file for the Objective-C parts of Mac OS X PuTTY. This |
3 | * file contains the class definitions, which would cause compile |
4 | * failures in the pure C modules if they appeared in osx.h. |
5 | */ |
6 | |
7 | #ifndef PUTTY_OSXCLASS_H |
8 | #define PUTTY_OSXCLASS_H |
9 | |
10 | #include "putty.h" |
11 | |
12 | /* |
13 | * The application controller class, defined in osxmain.m. |
14 | */ |
15 | @interface AppController : NSObject |
16 | { |
17 | NSTimer *timer; |
18 | } |
19 | - (void)newSessionConfig:(id)sender; |
20 | - (void)newTerminal:(id)sender; |
21 | - (void)newSessionWithConfig:(id)cfg; |
22 | - (void)setTimer:(long)next; |
23 | @end |
24 | extern AppController *controller; |
25 | |
26 | /* |
27 | * The SessionWindow class, defined in osxwin.m. |
28 | */ |
29 | |
919baedb |
30 | struct alert_queue { |
31 | struct alert_queue *next; |
32 | NSAlert *alert; |
33 | void (*callback)(void *, int); |
34 | void *ctx; |
35 | }; |
36 | |
1ddda1ca |
37 | @class SessionWindow; |
38 | @class TerminalView; |
39 | |
40 | @interface SessionWindow : NSWindow |
41 | { |
42 | Terminal *term; |
43 | TerminalView *termview; |
44 | struct unicode_data ucsdata; |
45 | void *logctx; |
46 | Config cfg; |
47 | void *ldisc; |
48 | Backend *back; |
49 | void *backhandle; |
919baedb |
50 | /* |
51 | * The following two members relate to the currently active |
52 | * alert sheet, if any. They are NULL if there isn't one. |
53 | */ |
3d9449a1 |
54 | void (*alert_callback)(void *, int); |
55 | void *alert_ctx; |
919baedb |
56 | /* This queues future alerts that need to be shown. */ |
57 | struct alert_queue *alert_qhead, *alert_qtail; |
1ddda1ca |
58 | } |
59 | - (id)initWithConfig:(Config)cfg; |
60 | - (void)drawStartFinish:(BOOL)start; |
61 | - (void)setColour:(int)n r:(float)r g:(float)g b:(float)b; |
62 | - (Config *)cfg; |
63 | - (void)doText:(wchar_t *)text len:(int)len x:(int)x y:(int)y |
64 | attr:(unsigned long)attr lattr:(int)lattr; |
65 | - (int)fromBackend:(const char *)data len:(int)len isStderr:(int)is_stderr; |
3d9449a1 |
66 | - (void)startAlert:(NSAlert *)alert |
67 | withCallback:(void (*)(void *, int))callback andCtx:(void *)ctx; |
1ddda1ca |
68 | @end |
69 | |
70 | /* |
71 | * The ConfigWindow class, defined in osxdlg.m. |
72 | */ |
73 | |
74 | @class ConfigWindow; |
75 | |
76 | @interface ConfigWindow : NSWindow |
77 | { |
78 | NSOutlineView *treeview; |
79 | struct controlbox *ctrlbox; |
80 | struct sesslist sl; |
81 | void *dv; |
82 | Config cfg; |
83 | } |
84 | - (id)initWithConfig:(Config)cfg; |
85 | @end |
86 | |
87 | /* |
88 | * Functions exported by osxctrls.m. (They have to go in this |
89 | * header file and not osx.h, because some of them have Cocoa class |
90 | * types in their prototypes.) |
91 | */ |
92 | #define HSPACING 12 /* needed in osxdlg.m and osxctrls.m */ |
93 | #define VSPACING 8 |
94 | |
95 | void *fe_dlg_init(void *data, NSWindow *window, NSObject *target, SEL action); |
96 | void fe_dlg_free(void *dv); |
97 | void create_ctrls(void *dv, NSView *parent, struct controlset *s, |
98 | int *minw, int *minh); |
99 | int place_ctrls(void *dv, struct controlset *s, int leftx, int topy, |
100 | int width); /* returns height used */ |
101 | void select_panel(void *dv, struct controlbox *b, const char *name); |
102 | |
103 | #endif /* PUTTY_OSXCLASS_H */ |