3 * The Cheat - The legendary universal game trainer for Mac OS X.
4 * http://www.brokenzipper.com/trac/wiki/TheCheat
6 * Copyright (c) 2003-2011, Charles McGarvey et al.
8 * Distributable under the terms and conditions of the 2-clause BSD
9 * license; see the file COPYING for the legal text of the license.
12 #import <Cocoa/Cocoa.h>
14 #include "cheat_global.h"
16 #import "VariableTable.h"
18 #import "MenuExtras.h"
19 #import "StatusTextField.h"
22 #import "SearchData.h"
24 #import "LocalCheater.h"
25 #import "RemoteCheater.h"
28 #import "AppController.h"
31 typedef unsigned TCDocumentMode
;
38 typedef unsigned TCDocumentStatus
;
41 TCSearchingStatus
= 1,
47 @interface CheatDocument
: NSDocument
50 IBOutlet NSWindow
*ibWindow
;
51 IBOutlet NSPopUpButton
*ibServerPopup
;
52 IBOutlet NSPopUpButton
*ibProcessPopup
;
53 IBOutlet NSView
*ibPlaceView
;
54 IBOutlet StatusTextField
*ibStatusText
;
55 IBOutlet NSProgressIndicator
*ibStatusBar
;
57 // SEARCH MODE INTERFACE
58 IBOutlet NSView
*ibSearchContentView
;
59 IBOutlet NSPopUpButton
*ibSearchTypePopup
;
60 IBOutlet NSMatrix
*ibSearchIntegerSignMatrix
;
61 IBOutlet NSPopUpButton
*ibSearchOperatorPopup
;
62 IBOutlet NSMatrix
*ibSearchValueUsedMatrix
;
63 IBOutlet NSTextField
*ibSearchValueField
;
64 IBOutlet VariableTable
*ibSearchVariableTable
;
65 IBOutlet NSButton
*ibSearchClearButton
;
66 IBOutlet NSButton
*ibSearchButton
;
67 IBOutlet NSButton
*ibSearchVariableButton
;
69 // CHEAT MODE INTERFACE
70 IBOutlet NSView
*ibCheatContentView
;
71 IBOutlet NSTextField
*ibCheatInfoText
;
72 IBOutlet BetterTableView
*ibCheatVariableTable
;
73 IBOutlet NSButton
*ibCheatRepeatButton
;
74 IBOutlet NSTextField
*ibCheatRepeatAuxText
;
75 IBOutlet NSTextField
*ibCheatRepeatField
;
76 IBOutlet NSButton
*ibCheatButton
;
78 // PROPERTIES INTERFACE
79 IBOutlet NSWindow
*ibPropertiesSheet
;
80 IBOutlet NSTextField
*ibWindowTitleField
;
81 IBOutlet NSTextField
*ibCheatInfoField
;
84 IBOutlet NSWindow
*ibPasswordSheet
;
85 IBOutlet NSTextField
*ibPasswordField
;
87 // CUSTOM SERVER INTERFACE
88 IBOutlet NSWindow
*ibCustomServerSheet
;
89 IBOutlet NSTextField
*ibServerField
;
90 IBOutlet NSTextField
*ibPortField
;
92 // EDIT VARIABLES INTERFACE
93 IBOutlet NSWindow
*ibEditVariablesSheet
;
94 IBOutlet NSTextField
*ibNewValueField
;
96 NSResponder
*_lastResponder
;
98 // ### IMPORTANT STUFF ###
99 BOOL _connectsOnOpen
; // set whether connects automatically on open
100 TCDocumentMode _mode
; // 'search' or 'cheat' mode
101 FadeView
*_fadeView
; // facilitates the fade animation
103 TCDocumentStatus _status
; // what the user is doing
104 BOOL _isCancelingTask
; // is what the user doing being cancelled
105 BOOL _isTargetPaused
; // is the currently selected process paused
107 id _serverObject
; // the object represented by the current server
108 Process
*_process
; // the currently selected process
110 CheatData
*_cheatData
; // container for the document data
111 SearchData
*_searchData
; // container for the search data
113 Cheater
*_cheater
; // the local or remote object to handle the cheating
115 // rendezvous support
116 NSNetService
*_resolvingService
;
119 // #############################################################################
120 #pragma mark Service Finding
121 // #############################################################################
123 + (NSArray
*)cheatServices
;
125 // #############################################################################
126 #pragma mark Changing Mode
127 // #############################################################################
129 // used to set the mode before the nib is loaded.
130 // do not use after that.
131 - (void)setMode
:(TCDocumentMode
)mode
;
133 // use this after the nib is loaded.
134 - (void)switchToCheatMode
;
135 - (void)switchToSearchMode
;
137 // #############################################################################
138 #pragma mark Accessors
139 // #############################################################################
141 - (NSString
*)defaultStatusString
;
142 - (BOOL
)isLoadedFromFile
;
144 - (void)addServer
:(NSMenuItem
*)item
;
145 - (void)removeServerWithObject
:(id
)serverObject
;
147 // #############################################################################
148 #pragma mark Interface
149 // #############################################################################
151 - (void)updateInterface
;
152 - (void)setDocumentChanged
;
154 - (void)setActualResults
:(unsigned)count
;
156 // #############################################################################
158 // #############################################################################
160 + (void)setGlobalTarget
:(Process
*)target
;
161 + (Process
*)globalTarget
;
163 - (void)showError
:(NSString
*)error
;
165 // this doesn't update the interface
166 // so explicitly call updateInterface after use.
167 - (BOOL
)shouldConnectWithServer
:(NSMenuItem
*)item
;
168 - (void)selectConnectedCheater
;
169 - (void)connectWithServer
:(NSMenuItem
*)item
;
170 - (void)disconnectFromCheater
;
172 - (void)setConnectOnOpen
:(BOOL
)flag
;
173 - (void)connectWithURL
:(NSString
*)url
;
175 - (void)watchVariables
;
181 // #############################################################################
183 @interface
CheatDocument ( DocInterfaceActions
)
185 - (IBAction
)ibSetLocalCheater
:(id
)sender
;
186 - (IBAction
)ibSetRemoteCheater
:(id
)sender
;
187 - (IBAction
)ibSetCustomCheater
:(id
)sender
;
188 - (IBAction
)ibSetNoCheater
:(id
)sender
;
190 - (IBAction
)ibSetProcess
:(id
)sender
;
192 - (IBAction
)ibSetVariableType
:(id
)sender
;
193 - (IBAction
)ibSetIntegerSign
:(id
)sender
;
194 - (IBAction
)ibSetOperator
:(id
)sender
;
195 - (IBAction
)ibSetValueUsed
:(id
)sender
;
197 - (IBAction
)ibClearSearch
:(id
)sender
;
198 - (IBAction
)ibSearch
:(id
)sender
;
199 - (IBAction
)ibAddSearchVariable
:(id
)sender
;
201 - (IBAction
)ibSetCheatRepeats
:(id
)sender
;
202 - (IBAction
)ibSetRepeatInterval
:(id
)sender
;
203 - (IBAction
)ibCheat
:(id
)sender
;
205 - (IBAction
)ibRunPropertiesSheet
:(id
)sender
;
206 - (IBAction
)ibEndPropertiesSheet
:(id
)sender
;
208 - (IBAction
)ibRunPasswordSheet
:(id
)sender
;
209 - (IBAction
)ibEndPasswordSheet
:(id
)sender
;
211 - (IBAction
)ibRunCustomServerSheet
:(id
)sender
;
212 - (IBAction
)ibEndCustomServerSheet
:(id
)sender
;
214 - (IBAction
)ibRunEditVariablesSheet
:(id
)sender
;
215 - (IBAction
)ibEndEditVariablesSheet
:(id
)sender
;
217 - (IBAction
)ibPauseTarget
:(id
)sender
;
218 - (IBAction
)ibResumeTarget
:(id
)sender
;
220 - (IBAction
)ibCancelSearch
:(id
)sender
;
221 - (IBAction
)ibStopCheat
:(id
)sender
;
223 - (IBAction
)ibDumpMemory
:(id
)sender
;
224 - (IBAction
)ibCancelDump
:(id
)sender
;
226 - (IBAction
)ibAddCheatVariable
:(id
)sender
;
227 - (IBAction
)ibSetVariableEnabled
:(id
)sender
;
229 - (IBAction
)ibToggleSearchCheat
:(id
)sender
;
231 - (IBAction
)ibUndo
:(id
)sender
;
232 - (IBAction
)ibRedo
:(id
)sender
;
237 // #############################################################################
239 @interface
CheatDocument ( DocCheaterDelegate
) < CheaterDelegate
>