--- /dev/null
+
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Project: The Cheat
+//
+// File: SessionController.h
+// Created: Sun Sep 07 2003
+//
+// Copyright: 2003 Chaz McGarvey. All rights reserved.
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#import <Cocoa/Cocoa.h>
+#import <Chaz/Chaz.h>
+
+#include <float.h>
+
+#import "ClientDelegate.h"
+
+#import "MenuExtras.h"
+
+#include "cheat_types.h"
+#include "cheat_globals.h"
+#include "cheat_net.h"
+
+
+@interface SessionController : NSWindowController < ClientDelegate >
+{
+ // allows for easy interface updating
+ TCstatus status, lastStatus;
+
+ // dealing with connecting
+ BOOL waitingToConnect;
+ NSConnection *connection;
+ NSData *connectionAddress;
+ NSString *connectionName;
+ int sockfd;
+
+ // for updating the interface
+ NSString *targetName;
+ int targetPID;
+ BOOL targetPaused;
+
+ NSArray *serverList;
+ NSMutableArray *addressList;
+
+ TCaddress *searchResults;
+ int searchResultsAmount;
+ int searchResultsAmountDisplayed;
+
+ // to allow for connecting on new document
+ BOOL everConnected;
+
+ // for the status field
+ NSString *savedStatusText;
+ NSColor *savedStatusColor;
+ NSTimer *statusTextTimer;
+
+ // for updating the interface
+ int undoCount, redoCount;
+ BOOL addressSelected;
+
+ // for changing variables every x seconds
+ NSTimer *changeTimer;
+ NSArray *changeSelectedItems;
+
+ // INTERFACE OUTLETS
+ IBOutlet NSWindow *cheatWindow;
+ IBOutlet NSPopUpButton *serverPopup;
+ IBOutlet NSButton *pauseButton;
+ IBOutlet NSPopUpButton *processPopup;
+ IBOutlet NSPopUpButton *typePopup;
+ IBOutlet NSPopUpButton *sizePopup;
+ IBOutlet NSTextField *searchTextField;
+ IBOutlet NSMatrix *searchRadioMatrix;
+ IBOutlet NSButton *searchButton;
+ IBOutlet NSButton *clearSearchButton;
+ IBOutlet NSButton *changeButton;
+ IBOutlet NSTableView *addressTable;
+ IBOutlet CMStatusView *statusText;
+ IBOutlet NSProgressIndicator *statusBar;
+ IBOutlet NSTextField *descriptionText;
+
+ IBOutlet NSMenu *serverMenu;
+ IBOutlet NSMenu *processMenu;
+ IBOutlet NSMenu *typeMenu;
+ IBOutlet NSMenu *stringSizeMenu;
+ IBOutlet NSMenu *integerSizeMenu;
+ IBOutlet NSMenu *decimalSizeMenu;
+
+ // FOR THE CHANGE SHEET
+ IBOutlet NSWindow *changeSheet;
+ IBOutlet NSTextField *changeTextField;
+ IBOutlet NSButton *recurringChangeButton;
+ IBOutlet NSComboBox *changeSecondsCombo;
+ IBOutlet NSButton *cancelButton;
+ IBOutlet NSButton *okButton;
+}
+
+// UPDATE INTERFACE
+- (void)initialInterfaceSetup;
+
+- (void)updateSearchButton;
+- (void)updatePauseButton;
+- (void)updateSearchBoxes;
+- (void)updateChangeButton;
+- (void)updateDescriptionText;
+
+- (void)setStatusDisconnected;
+- (void)setStatusConnected;
+- (void)setStatusCheating;
+- (void)setStatusSearching;
+- (void)setStatusChanging;
+- (void)setStatusChangingLater;
+- (void)setStatusChangingContinuously;
+- (void)setStatusUndoing;
+- (void)setStatusRedoing;
+//- (void)setStatusToLast;
+
+//- (void)setStatusText:(NSString *)msg duration:(NSTimeInterval)seconds;
+//- (void)setStatusText:(NSString *)msg duration:(NSTimeInterval)seconds color:(NSColor *)color;
+//- (void)statusTextTimer:(NSTimer *)timer;
+
+// UPDATE CHANGE SHEET
+
+
+
+// CONNECT/DISCONNECT TO SERVER
+- (void)connectToLocal;
+- (void)connectToServer:(NSData *)addr name:(NSString *)name;
+- (void)disconnect;
+
+// SEND NETWORK MESSAGE
+- (void)sendProcessListRequest;
+- (void)sendClearSearch;
+- (void)sendSearch:(char const *)data size:(int)size;
+- (void)sendChange:(char const *)data size:(int)size;
+- (void)sendPauseTarget;
+- (void)sendVariableValueRequest;
+- (void)sendUndoRequest;
+- (void)sendRedoRequest;
+- (void)sendSetTargetPID:(int)pid;
+
+// RECEIVED NETWORK MESSAGE
+- (void)receivedProcessList:(NSData *)data;
+- (void)receivedSearchFinished;
+- (void)receivedVariableList:(NSData *)data;
+- (void)receivedChangeFinished;
+- (void)receivedError:(NSData *)data;
+- (void)receivedUndoFinished;
+- (void)receivedRedoFinished;
+- (void)receivedUndoRedoStatus:(NSData *)data;
+- (void)receivedAppLaunched:(NSData *)data;
+- (void)receivedAppQuit:(NSData *)data;
+- (void)receivedTargetQuit;
+- (void)receivedPauseFinished:(NSData *)data;
+
+// SEARCHING/CHANGING COMMANDS
+- (void)search;
+- (void)change;
+
+- (void)changeSheet:(NSWindow *)sheet returned:(int)returned context:(void *)context;
+
+- (void)changeTimer:(NSTimer *)timer;
+
+// CHEAT WINDOW INTERFACE
+- (IBAction)typePopup:(id)sender;
+- (IBAction)sizePopup:(id)sender;
+
+- (IBAction)searchButton:(id)sender;
+- (IBAction)clearSearchButton:(id)sender;
+
+- (IBAction)changeButton:(id)sender;
+
+- (IBAction)serverMenuItem:(id)sender;
+- (IBAction)serverMenuDisconnect:(id)sender;
+- (IBAction)serverMenuLocal:(id)sender;
+- (IBAction)processMenuItem:(id)sender;
+
+- (IBAction)pauseButton:(id)sender;
+
+- (IBAction)undoMenu:(id)sender;
+- (IBAction)redoMenu:(id)sender;
+
+// CHANGE SHEET INTERFACE
+- (IBAction)cancelButton:(id)sender;
+- (IBAction)okButton:(id)sender;
+
+- (IBAction)recurringChangeButton:(id)sender;
+
+// CLEAN UP
+- (void)clearSearch;
+- (void)destroyResults;
+
+// NOTIFICATION SELECTORS
+- (void)listenerStarted:(NSNotification *)note;
+- (void)listenerStopped:(NSNotification *)note;
+
+- (void)windowsOnTopChanged:(NSNotification *)note;
+
+// ERROR HANDLING
+- (void)handleErrorMessage:(NSString *)msg fatal:(BOOL)fatal;
+
+@end
\ No newline at end of file