| 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 | |
| 30 | struct alert_queue { |
| 31 | struct alert_queue *next; |
| 32 | NSAlert *alert; |
| 33 | void (*callback)(void *, int); |
| 34 | void *ctx; |
| 35 | }; |
| 36 | |
| 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; |
| 50 | int exited; |
| 51 | /* |
| 52 | * The following two members relate to the currently active |
| 53 | * alert sheet, if any. They are NULL if there isn't one. |
| 54 | */ |
| 55 | void (*alert_callback)(void *, int); |
| 56 | void *alert_ctx; |
| 57 | /* This queues future alerts that need to be shown. */ |
| 58 | struct alert_queue *alert_qhead, *alert_qtail; |
| 59 | } |
| 60 | - (id)initWithConfig:(Config)cfg; |
| 61 | - (void)drawStartFinish:(BOOL)start; |
| 62 | - (void)setColour:(int)n r:(float)r g:(float)g b:(float)b; |
| 63 | - (Config *)cfg; |
| 64 | - (void)doText:(wchar_t *)text len:(int)len x:(int)x y:(int)y |
| 65 | attr:(unsigned long)attr lattr:(int)lattr; |
| 66 | - (int)fromBackend:(const char *)data len:(int)len isStderr:(int)is_stderr; |
| 67 | - (int)fromBackendUntrusted:(const char *)data len:(int)len; |
| 68 | - (void)startAlert:(NSAlert *)alert |
| 69 | withCallback:(void (*)(void *, int))callback andCtx:(void *)ctx; |
| 70 | - (void)endSession:(int)clean; |
| 71 | - (void)notifyRemoteExit; |
| 72 | - (Terminal *)term; |
| 73 | @end |
| 74 | |
| 75 | /* |
| 76 | * The ConfigWindow class, defined in osxdlg.m. |
| 77 | */ |
| 78 | |
| 79 | @class ConfigWindow; |
| 80 | |
| 81 | @interface ConfigWindow : NSWindow |
| 82 | { |
| 83 | NSOutlineView *treeview; |
| 84 | struct controlbox *ctrlbox; |
| 85 | void *dv; |
| 86 | Config cfg; |
| 87 | } |
| 88 | - (id)initWithConfig:(Config)cfg; |
| 89 | @end |
| 90 | |
| 91 | /* |
| 92 | * Functions exported by osxctrls.m. (They have to go in this |
| 93 | * header file and not osx.h, because some of them have Cocoa class |
| 94 | * types in their prototypes.) |
| 95 | */ |
| 96 | #define HSPACING 12 /* needed in osxdlg.m and osxctrls.m */ |
| 97 | #define VSPACING 8 |
| 98 | |
| 99 | void *fe_dlg_init(void *data, NSWindow *window, NSObject *target, SEL action); |
| 100 | void fe_dlg_free(void *dv); |
| 101 | void create_ctrls(void *dv, NSView *parent, struct controlset *s, |
| 102 | int *minw, int *minh); |
| 103 | int place_ctrls(void *dv, struct controlset *s, int leftx, int topy, |
| 104 | int width); /* returns height used */ |
| 105 | void select_panel(void *dv, struct controlbox *b, const char *name); |
| 106 | |
| 107 | #endif /* PUTTY_OSXCLASS_H */ |