ftp.nice.ch/users/felix/FileSpy.1.0.NIHS.s.tar.gz#/FileSpy/Controller.h

This is Controller.h in view mode; [Download] [Up]

/*
 *   This sourcecode is part of FileSpy, a logfile observing utility.
 *   Copyright (C) 1996  Felix Rauch
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *   
 *   Notice that this program may not be possessed, used, copied,
 *   distributed or modified by people having to do with nuclear
 *   weapons. See the file CONDITIONS for details.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *   To contact the original author, try:
 *   e-mail: Felix.Rauch@nice.ch
 *   Traditional mail:	Felix Rauch
 *			Sempacherstrasse 33
 *			8032 Zurich
 *			Switzerland
 */

#import <appkit/appkit.h>
#import <objc/List.h>
#import <objc/Storage.h>
#import <defaults/defaults.h>
#import <dpsclient/dpsNeXT.h>
#import <soundkit/Sound.h>
#import <sys/stat.h>
#import <sys/types.h>
#import <pwd.h>
#import <stdio.h>
#import <ansi/stdlib.h>
#import <limits.h>

#ifdef DEBUG
    #include <assert.h>
#endif

#import "SpyTextFieldCell.h"
#import "MyScrollView.h"
#import "Finder.h"
#import "MyMatrix.h"
#import "ExistenceTextFieldCell.h"
#import "SimpleMatrix.h"

#define FILTER_DONTCOPY 0
#define FILTER_DONTBEEP 1

#define SPY_CONTENTS 1
#define SPY_EXISTENCE 2

#define MAXSTRLEN 256

extern const char versionString[];

@interface Controller:Object
{
	id myScrollView;
	id myTextField;
	id myWindow;
	id myMatrix;
	id myAddButton;
	id radioMatrix;
	id popupSwitch;
	id superlogSwitch;		// superlog is the old name for multilog
	id filterSwitch;
	id dontCopySwitch;
	id superFilenameButton;		// tri-state button for how-is-filename-in-superlog
	id spytypeButton;		// tri-state button about what to spy
	id infoPanel;
	id preferencesPanel;
	id inspectorPanel;
	id findPanel;
	id finder;
	id secsTextField;
	id secsScroller;
	id maxLinesTextField;
	id maxLinesScroller;
	id maxLinesMatrix;
	id soundButton;
	id fileListButton;
	id prefPopupSwitch;
	id prefSoundButton;
	id prefSuperlogSwitch;
	id prefRadioMatrix;
	id prefFilterSwitch;
	id prefDontCopySwitch;
	id prefSuperFilenameButton;	// wether filenames should be copied
	id prefSpytypeButton;		// what to spy
	id superPopupSwitch;
	id superSoundSwitch;
	id superFilterSwitch;
	id superDupSwitch;		// 'No duplicated lines'
	id timeSwitch;			// print timestamp in log?
	id prefTimeSwitch;		// same for preferences
	id showTimeSwitch;		// show duration of change in Existencelog?
	id filterWindow;
	id filterText;
	id filterModeMatrix;
	id keySwitch;
	id stateSwitch;
	id infoPanelName;
	id infoPanelAddress;
	id prefGenView;		// for the preferences panel handling
	id prefNewView;
	id prefSuperView;
	id prefSwapfileView;
	id prefSwapfileTextField;
	char *swapfilename;
	id prefSwapfileSizeTextField;
	long int swapfilesize;
	BOOL swapfileTooBig, swapfileError;
	id multiView;
	id popButton;
	id versionTextField;
	id superColorWell;
	id prefColorWell;
	id fontTextField;		// preview-textfield in inspector
	id prefFontTextField;		// preview-textfield in preferences
	id fontButton;			// 'Set...' button in inspector
	id prefFontButton;		// 'Set...' button in preferences
	id myFontManager;		// the Fontmanager object
	id inspectorMultiView;		// the inspectorPanel's view
	id inspectorNormalView;		// the usual inspectorView
	id inspectorNoView;		// 'No Inspector'
	id inspectorName;		// textField for file's name
	id inspectorFile;		// textField for "File[s]"
	id existencelogWindow;
	id myExistenceScrollView;
	id myExistenceMatrix;
	unsigned fileCount, oldFileCount;
	double secs;
	DPSTimedEntry alarmTimedEntry;
	BOOL running, saveFileList;
	BOOL prefPopup, prefBeepOnChange, prefSuperlog, prefUseFilter;
	BOOL prefDontCopySuperlog;	// don't copy to superlog on startup
	int prefFileMode, filterMode;
	NXCoord winx, winy;
	id superFont, superDoc, superWindow, superScrollView, superText;
	id lastSuperlogUser;
	Storage *filterStore;
	BOOL superPopup, superBeepOnChange, superUseFilter, useFilter;
	BOOL displayCurWindow, whileInit, becomeKey, saveState, newFileOffset;
	BOOL filterIsUpToDate;
	BOOL prefTimeStamp;		// print time in log?
	unsigned int prefSuperCopyFilename;
	char frameStr[NX_MAXFRAMESTRINGLENGTH];
	id firstFileStore;
	NXColor prefColor;
	id prefFont;
	int maxLines;		// how many lines in a log window?
	BOOL maxLineState;	// do we use this feature anyway?
	BOOL myWindowIsVisible;	// set to NO as soon as it willClose
	BOOL noDuplicatedLines;
	unsigned short int prefSpytype;	// check for existence-Flags;
	char *inspectorFrame;		// frame of inspectorPanel
	char *lastSuperlogString;	// the last line which was logged in superlog
	unsigned int nrOpenWindows;	// number of open windows
	List *tmpList;
	BOOL existenceSeen;
	id mySound;
	id soundTextField;
	id commandTextField;
	BOOL showTime;		// show duration of change in ExistenceLog?
	id conditionsWindow;
	id copyingWindow;
	id helpWindow;
	id helpText;
}

- showPreferences:sender;

- appWillInit:sender;
- appDidInit:sender;
- appWillTerminate:sender;
- app:sender powerOffIn:(int)ms andSave:(int)aFlag;
- free;
- (BOOL)appAcceptsAnotherFile:sender;
- (int)app:sender openFile:(const char *)filename type:(const char *)aType;
- addFileWithName:(const char *)name;
- addFile:sender;
- deleteFile:sender;
- chooseFile:sender;
- singleClick:sender;
- doubleClick:sender;
- radioClick:sender;
- superlogClick:sender;
- autoPopUpClick:sender;
- beepOnChangeClick:sender;
- useFilterClick:sender;
- superFilenameClick:sender;	// wether filenames should be copied in superlog
- prefSuperFilenameClick:sender;// .. same in preferences
- timeClick:sender;
- prefTimeClick:sender;
- spytypeClick:sender;		// spy for existence?
- prefSpytypeClick:sender;	// .. same in preferences
- colorChanged:sender;		// textcolor for superlog
- prefColorChanged:sender;	// .. same in preferences
- (NXColor)prefColor;		// color in preferences, not used yet
- changeFont:sender;		// received from FontManager?
- filterModeClick:sender;
- prefRadioClick:sender;
- prefSuperlogClick:sender;
- prefAutoPopUpClick:sender;
- prefBeepOnChangeClick:sender;
- prefUseFilterClick:sender;
- superAutoPopUpClick:sender;
- superBeepOnChangeClick:sender;
- superUseFilterClick:sender;
- superDupLinesClick:sender;
- copySuperlogClick:sender;
- prefCopySuperlogClick:sender;
- keyClick:sender;
- stateClick:sender;
- saveFileListClick:sender;
- setShowTimeClick:sender;
- (BOOL)showTime;
- changeUpdatePeriod:sender;
- setPref:sender;
- setPrefToView:sender;
- savePreferences:sender;
- saveFilter:sender;
- loadPreferences:sender;
- startSpy;		// start DPSTimedEntry anyway
- startSpyIfNeeded;	// start DPSTimedEntry if there is at least 1 File to spy
- stopSpy;		// stop TimedEntry
- stopSpyIfNeeded;	// stop TimedEntry if there's no file left to spy
- checkFiles;		// check the files for changes
- changeUpdatePeriod:sender;
- changeBeepState:sender;
- showSuperlog:sender;
- updateSuperlog:sender:(char *)newText :(BOOL)changed :(BOOL)beepThis :(BOOL)popThis;
- setupSuperlog;
- setupFilter;
- showFilter:sender;
- applyFilter:sender;
- (BOOL)filterString:(char *)str andRemove:(BOOL)rm who:sender;
			// (returns YES if something passes the filter)
- (int)filterMode;
- (BOOL)superUsesFilter;
- (BOOL)becomeKey;
- unhideApp:sender;
- clearBuffer:sender;
- windowDidBecomeKey:sender;
- windowWillClose:sender;
- showInspectorPanel:sender;
- setInspectorToView:theView;
- showFindPanel:sender;
- findNext:sender;
- findPrevious:sender;
- enterSelection:sender;
- jumpToSelection:sender;
- findTexts:(BOOL)all;		// return list with all text-objects to scan with find
- showFontPanel:sender;		// send orderFrontFontPanel from myFontmanager
- setMaxLines:sender;
- (int)maxLines;
- shortSuperText;
- addWindow:sender;		// for counting the visible windows
- existenceMatrix;
- showExistencelogRegardless;
- window;
@end

// C functions

void alarmHandler(DPSTimedEntry te, double timeNow, void *data);

@interface Controller(Services)
- registerServices:sender;
- validRequestorForSendType:(NXAtom)typeSent andReturnType:(NXAtom)typeReturned;
- (BOOL)writeSelectionToPasteboard:(Pasteboard *)pboard types:(NXAtom *)types;
- spyFileFromService:pasteboard userData:(const char *)userData error:(char **)msg;
@end

@interface Controller(Sounds)
- soundClick:sender;
- setSoundClick:sender;
- setSound:(const char *)file;
- nxbeep;
- (const char *)soundName;
@end

@interface Controller(Info)
- loadInfo;
- showInfo:sender;
- showConditions:sender;
- showCopying:sender;
- showHelp:sender;
@end

@interface Controller(Swapfile)
- swapfilenameClick:sender;
- swapfileSetNameClick:sender;
- swapfilesizeClick:sender;
- updateSwapfile;
@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.