1// 2// PRCTraceEdges.m 3// PRICE 4// 5// Created by Riccardo Mottola on Wed Jan 14 2004. 6// Copyright (c) 2004-2010 Carduus. All rights reserved. 7// 8// This application 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. 9// 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. 10 11 12#import "PRCTraceEdges.h" 13#import "MyDocument.h" 14#import "PRTraceEdges.h" 15 16 17@implementation PRCTraceEdges 18 19- (id)init 20{ 21 if ((self = [super init])) 22 { 23 filter = [[PRTraceEdges alloc] init]; 24 } 25 return self; 26} 27 28- (IBAction)showFilter:(id)sender 29{ 30 [super showFilter:sender]; 31 32 if (!edgeWindow) 33 [NSBundle loadNibNamed:@"TraceEdges" owner:self]; 34 [edgeWindow makeKeyAndOrderFront:nil]; 35 36 if ([thresholdCheck state] == NSOnState) 37 { 38 [thresholdSlider setEnabled:YES]; 39 [thresholdField setEnabled:YES]; 40 thresholdOn = YES; 41 if ([[filterType selectedItem] tag] >= 7) 42 [zeroCrossCheck setEnabled:YES]; 43 } else 44 { 45 [thresholdSlider setEnabled:NO]; 46 [thresholdField setEnabled:NO]; 47 thresholdOn = NO; 48 [zeroCrossCheck setEnabled:NO]; 49 } 50 thresholdLevel = [thresholdField floatValue]; 51 52 [self parametersChanged:self]; 53} 54 55- (NSArray *)encodeParameters 56{ 57 BOOL zeroCrossOn; 58 NSArray *parameters; 59 60 if ([zeroCrossCheck state] == NSOnState) 61 zeroCrossOn = YES; 62 else 63 zeroCrossOn = NO; 64 65 if ([[filterType selectedItem] tag] < 7) 66 { 67 [zeroCrossCheck setState:NO]; 68 zeroCrossOn = NO; 69 } 70 71 parameters = [NSArray arrayWithObjects: 72 [NSNumber numberWithInt: [[filterType selectedItem] tag]], 73 [NSNumber numberWithBool: thresholdOn], 74 [NSNumber numberWithFloat: thresholdLevel], 75 [NSNumber numberWithBool: zeroCrossOn], 76 nil]; 77 78 return parameters; 79} 80 81- (void)closeFilterPanel 82{ 83 [edgeWindow performClose:nil]; 84} 85 86- (IBAction)thresholdToggle:(id)sender 87{ 88 thresholdOn = !thresholdOn; 89 if (thresholdOn) 90 { 91 [thresholdSlider setEnabled:YES]; 92 [thresholdField setEnabled:YES]; 93 if ([[filterType selectedItem] tag] >= 7) 94 [zeroCrossCheck setEnabled:YES]; 95 } else 96 { 97 [thresholdSlider setEnabled:NO]; 98 [thresholdField setEnabled:NO]; 99 [zeroCrossCheck setEnabled:NO]; 100 } 101 [self parametersChanged:sender]; 102} 103 104- (IBAction)changeThreshold:(id)sender 105{ 106 thresholdLevel = [sender floatValue]; 107 [thresholdField setFloatValue:thresholdLevel]; 108 [self parametersChanged:sender]; 109} 110 111 112- (IBAction)filterTypeToggle:(id)sender 113{ 114 if ([[filterType selectedItem] tag] >= 7) 115 [zeroCrossCheck setEnabled:YES]; 116 else 117 [zeroCrossCheck setEnabled:NO]; 118 [self parametersChanged:sender]; 119} 120 121@end 122