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