This is Controller.m in view mode; [Download] [Up]
/************************************************************************************************************************/
#import "Controller.h"
/* Declaration for auxiliary function */
static char scanChar(const char* string);
@implementation Controller
/***********************************************************************
* Initialization
***********************************************************************/
- appDidInit:sender
{
/* MiscSplitView initialization; not necessary in any way for NTYBrowserData! */
[splitView setHorizontal:NO];
[splitView addSubview:browser];
[splitView addSubview:textView];
[splitView setDividersAutosaveName:"BrowserDataWindow"];
/* Main window initialization */
[window setFrameAutosaveName:"BrowserDataWindow"];
[window makeKeyAndOrderFront:self];
return self;
}
/***********************************************************************
* GUI Actions
***********************************************************************/
- readData:sender
/* read and display data from a file according to user entries in the GUI */
{
/* set configuration data according to user entries in the GUI */
[browserData setPathSeparator:[pathSeparatorText stringValue][0]]; // do NOT set in NXBrowser directly!
[browserData setTokenSeparator:scanChar([tokenSeparatorText stringValue])];
[browserData setToken:(unsigned int)[tokenText intValue]];
[browserData setUniqueNodes:[uniqueNodesSwitch state]];
[browserData setIndentChar:scanChar([indentCharacterText stringValue])];
[browserData setIndentDivisor:(unsigned int)[indentDivisorText intValue]];
[browserData setSort:[sortSwitch state]];
/* read and display data from a file according to the above settings */
if([browserData readDataFromFile:[pathText stringValue]]) return self;
NXBeep();
return nil;
}
- setPath:sender
/* enter path from Open Panel into text field */
{
char *types[1]={0};
if([[OpenPanel new] runModalForTypes:types]) [pathText setStringValue:[[OpenPanel new] filename]];
return self;
}
- switchMark:sender
/* select type which is used to mark browser lines */
{
[browserData setMarkType:[[sender selectedCell] tag]];
return self;
}
- switchMultipleSelection:sender
/* select if, and what type of, multiple selection is enabled in NXBrowser */
{
switch([[sender selectedCell] tag])
{
case 0: [browser setMultipleSelectionEnabled:NO];
break;
case 1: [browser setMultipleSelectionEnabled:YES];
[browser setBranchSelectionEnabled:NO];
break;
case 2: [browser setMultipleSelectionEnabled:YES];
[browser setBranchSelectionEnabled:YES];
break;
}
return self;
}
- switchSeparatorAtStart:sender
/* select if in list view the lines should start with a pathSeparator character */
{
[browserData setSeparatorAtStart:[sender state]];
[browserData updateBrowser:self];
return self;
}
- selectEnteredPath:sender
/* select path entered in the Search Text text field */
{
id re;
if(re=[browserData selectPath:[searchText stringValue]]) return re;
NXBeep();
return nil;
}
- markEnteredPath:sender
/* mark path entered in the Search Text text field */
{
if([browserData markPath:[searchText stringValue]]) return [browserData updateBrowser:self];
NXBeep();
return nil;
}
- unmarkEnteredPath:sender
/* unmark path entered in the Search Text text field */
{
if([browserData unmarkPath:[searchText stringValue]]) return [browserData updateBrowser:self];
NXBeep();
return nil;
}
- disableEnteredPath:sender
/* disable path entered in the Search Text text field */
{
if([browserData disablePath:[searchText stringValue]]) return [browserData updateBrowser:self];
NXBeep();
return nil;
}
- enableEnteredPath:sender
/* enable path entered in the Search Text text field */
{
if([browserData enablePath:[searchText stringValue]]) return [browserData updateBrowser:self];
NXBeep();
return nil;
}
- addEnteredPath:sender
/* add path entered in the Search Text text field */
{
if([browserData addPath:[searchText stringValue]]) return browserData;
NXBeep();
return nil;
}
- removeEnteredPath:sender
/* remove path entered in the Search Text text field */
{
if([browserData removePath:[searchText stringValue]]) return browserData;
NXBeep();
return nil;
}
- findForwards:sender
/* find string entered in the Search Text text field */
{
char *result;
id re;
if(result=[browserData findPath:[searchText stringValue] startPath:NULL backwards:NO caseSensitive:NO regEx:NO
alsoDisabled:NO])
if(re=[browserData selectPath:result]) return re;
NXBeep();
return nil;
}
- findBackwards:sender
/* find string entered in the Search Text text field */
{
char *result;
id re;
if(result=[browserData findPath:[searchText stringValue] startPath:NULL backwards:YES caseSensitive:NO regEx:NO
alsoDisabled:NO])
if(re=[browserData selectPath:result]) return re;
NXBeep();
return nil;
}
- printPaths:sender
/* get the selected or the marked paths and print them in the text view */
{
char *buffer;
id pathList;
int i;
if([[sender selectedCell] tag]) pathList=[browserData getMarkedPaths]; // Print marked paths
else pathList=[browserData getSelectedPaths]; // Print selected paths
buffer=(char*)malloc(BUFSIZ*[pathList count]);
buffer[0]=0; // initialize buffer for strcat
for(i=0;i<[pathList count];i++) // copy all paths in buffer and separate them by newlines
{
strcat (buffer, [pathList stringAt:i]);
strcat (buffer, "\n");
}
[text setStringValue:buffer]; // print paths
[pathList free];
free(buffer);
return self;
}
/***********************************************************************
* Auxiliary functions
***********************************************************************/
static char scanChar(const char* string)
/* return the first character from string; convert "\t" to the TAB character */
{
char buffer;
if(string[0]=='\\' && string[1]=='t') buffer='\t';
else buffer=string[0];
return buffer;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.