Changeset 8492
- Timestamp:
- 08/14/12 17:35:07 (12 years ago)
- Location:
- branches/DatasetFeatureCorrelation
- Files:
-
- 3 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis.Views/3.4/FeatureCorrelationView.Designer.cs
r8483 r8492 34 34 this.maximumLabel = new System.Windows.Forms.Label(); 35 35 this.PictureBox = new System.Windows.Forms.PictureBox(); 36 this.SplitContainer = new System.Windows.Forms.SplitContainer(); 36 37 ((System.ComponentModel.ISupportInitialize)(this.DataGridView)).BeginInit(); 37 38 ((System.ComponentModel.ISupportInitialize)(this.PictureBox)).BeginInit(); 39 ((System.ComponentModel.ISupportInitialize)(this.SplitContainer)).BeginInit(); 40 this.SplitContainer.Panel1.SuspendLayout(); 41 this.SplitContainer.Panel2.SuspendLayout(); 42 this.SplitContainer.SuspendLayout(); 38 43 this.SuspendLayout(); 39 44 // … … 42 47 this.DataGridView.AllowUserToAddRows = false; 43 48 this.DataGridView.AllowUserToDeleteRows = false; 44 this.DataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)45 | System.Windows.Forms.AnchorStyles.Left)46 | System.Windows.Forms.AnchorStyles.Right)));47 49 this.DataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 48 this.DataGridView.Location = new System.Drawing.Point(3, 33); 50 this.DataGridView.Dock = System.Windows.Forms.DockStyle.Fill; 51 this.DataGridView.Location = new System.Drawing.Point(0, 0); 49 52 this.DataGridView.Name = "DataGridView"; 50 53 this.DataGridView.ReadOnly = true; 51 this.DataGridView.Size = new System.Drawing.Size( 535, 300);54 this.DataGridView.Size = new System.Drawing.Size(475, 301); 52 55 this.DataGridView.TabIndex = 0; 53 56 this.DataGridView.VirtualMode = true; … … 60 63 this.HeatMapProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 61 64 | System.Windows.Forms.AnchorStyles.Right))); 62 this.HeatMapProgressBar.Location = new System.Drawing.Point(4 76, 6);65 this.HeatMapProgressBar.Location = new System.Drawing.Point(490, 6); 63 66 this.HeatMapProgressBar.Name = "HeatMapProgressBar"; 64 67 this.HeatMapProgressBar.RightToLeft = System.Windows.Forms.RightToLeft.No; 65 this.HeatMapProgressBar.Size = new System.Drawing.Size( 141, 21);68 this.HeatMapProgressBar.Size = new System.Drawing.Size(76, 21); 66 69 this.HeatMapProgressBar.TabIndex = 9; 67 70 this.HeatMapProgressBar.Visible = false; … … 70 73 // 71 74 this.PartitionComboBox.FormattingEnabled = true; 72 this.PartitionComboBox.Location = new System.Drawing.Point(3 36, 6);75 this.PartitionComboBox.Location = new System.Drawing.Point(348, 3); 73 76 this.PartitionComboBox.Name = "PartitionComboBox"; 74 this.PartitionComboBox.Size = new System.Drawing.Size(1 34, 21);77 this.PartitionComboBox.Size = new System.Drawing.Size(124, 21); 75 78 this.PartitionComboBox.TabIndex = 8; 76 79 this.PartitionComboBox.SelectedIndexChanged += new System.EventHandler(this.PartitionComboBox_SelectedIndexChanged); … … 79 82 // 80 83 this.CorrelationCalcLabel.AutoSize = true; 81 this.CorrelationCalcLabel.Location = new System.Drawing.Point( 3, 9);84 this.CorrelationCalcLabel.Location = new System.Drawing.Point(0, 6); 82 85 this.CorrelationCalcLabel.Name = "CorrelationCalcLabel"; 83 86 this.CorrelationCalcLabel.Size = new System.Drawing.Size(104, 13); … … 88 91 // 89 92 this.CorrelationCalcComboBox.FormattingEnabled = true; 90 this.CorrelationCalcComboBox.Location = new System.Drawing.Point(11 3, 6);93 this.CorrelationCalcComboBox.Location = new System.Drawing.Point(110, 3); 91 94 this.CorrelationCalcComboBox.Name = "CorrelationCalcComboBox"; 92 95 this.CorrelationCalcComboBox.Size = new System.Drawing.Size(163, 21); … … 97 100 // 98 101 this.PartitionLabel.AutoSize = true; 99 this.PartitionLabel.Location = new System.Drawing.Point(2 82, 9);102 this.PartitionLabel.Location = new System.Drawing.Point(279, 6); 100 103 this.PartitionLabel.Name = "PartitionLabel"; 101 104 this.PartitionLabel.Size = new System.Drawing.Size(48, 13); … … 107 110 this.minimumLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 108 111 this.minimumLabel.BackColor = System.Drawing.Color.Transparent; 109 this.minimumLabel.Location = new System.Drawing.Point( 544, 314);112 this.minimumLabel.Location = new System.Drawing.Point(487, 314); 110 113 this.minimumLabel.Name = "minimumLabel"; 111 114 this.minimumLabel.Size = new System.Drawing.Size(73, 19); … … 118 121 this.maximumLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 119 122 this.maximumLabel.BackColor = System.Drawing.Color.Transparent; 120 this.maximumLabel.Location = new System.Drawing.Point( 544, 30);123 this.maximumLabel.Location = new System.Drawing.Point(487, 30); 121 124 this.maximumLabel.Name = "maximumLabel"; 122 125 this.maximumLabel.Size = new System.Drawing.Size(73, 25); … … 131 134 this.PictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 132 135 this.PictureBox.Image = ((System.Drawing.Image)(resources.GetObject("PictureBox.Image"))); 133 this.PictureBox.Location = new System.Drawing.Point(5 64, 58);136 this.PictureBox.Location = new System.Drawing.Point(507, 58); 134 137 this.PictureBox.Name = "PictureBox"; 135 138 this.PictureBox.Size = new System.Drawing.Size(35, 253); … … 138 141 this.PictureBox.TabStop = false; 139 142 // 140 // DataGridExtendedHeatMapView 143 // SplitContainer 144 // 145 this.SplitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 146 | System.Windows.Forms.AnchorStyles.Left) 147 | System.Windows.Forms.AnchorStyles.Right))); 148 this.SplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; 149 this.SplitContainer.IsSplitterFixed = true; 150 this.SplitContainer.Location = new System.Drawing.Point(3, 3); 151 this.SplitContainer.Name = "SplitContainer"; 152 this.SplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal; 153 // 154 // SplitContainer.Panel1 155 // 156 this.SplitContainer.Panel1.Controls.Add(this.CorrelationCalcLabel); 157 this.SplitContainer.Panel1.Controls.Add(this.CorrelationCalcComboBox); 158 this.SplitContainer.Panel1.Controls.Add(this.PartitionComboBox); 159 this.SplitContainer.Panel1.Controls.Add(this.PartitionLabel); 160 // 161 // SplitContainer.Panel2 162 // 163 this.SplitContainer.Panel2.Controls.Add(this.DataGridView); 164 this.SplitContainer.Size = new System.Drawing.Size(475, 330); 165 this.SplitContainer.SplitterDistance = 25; 166 this.SplitContainer.TabIndex = 16; 167 // 168 // FeatureCorrelationView 141 169 // 142 170 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 143 171 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 172 this.Controls.Add(this.SplitContainer); 144 173 this.Controls.Add(this.minimumLabel); 174 this.Controls.Add(this.HeatMapProgressBar); 175 this.Controls.Add(this.PictureBox); 145 176 this.Controls.Add(this.maximumLabel); 146 this.Controls.Add(this.PictureBox); 147 this.Controls.Add(this.PartitionLabel); 148 this.Controls.Add(this.HeatMapProgressBar); 149 this.Controls.Add(this.PartitionComboBox); 150 this.Controls.Add(this.CorrelationCalcLabel); 151 this.Controls.Add(this.CorrelationCalcComboBox); 152 this.Controls.Add(this.DataGridView); 153 this.Name = "DataGridExtendedHeatMapView"; 154 this.Size = new System.Drawing.Size(620, 336); 177 this.Name = "FeatureCorrelationView"; 178 this.Size = new System.Drawing.Size(569, 336); 155 179 ((System.ComponentModel.ISupportInitialize)(this.DataGridView)).EndInit(); 156 180 ((System.ComponentModel.ISupportInitialize)(this.PictureBox)).EndInit(); 181 this.SplitContainer.Panel1.ResumeLayout(false); 182 this.SplitContainer.Panel1.PerformLayout(); 183 this.SplitContainer.Panel2.ResumeLayout(false); 184 ((System.ComponentModel.ISupportInitialize)(this.SplitContainer)).EndInit(); 185 this.SplitContainer.ResumeLayout(false); 157 186 this.ResumeLayout(false); 158 this.PerformLayout();159 187 160 188 } … … 162 190 #endregion 163 191 164 pr ivateSystem.Windows.Forms.DataGridView DataGridView;165 pr ivateSystem.Windows.Forms.ProgressBar HeatMapProgressBar;192 protected System.Windows.Forms.DataGridView DataGridView; 193 protected System.Windows.Forms.ProgressBar HeatMapProgressBar; 166 194 protected System.Windows.Forms.ComboBox PartitionComboBox; 167 195 protected System.Windows.Forms.Label CorrelationCalcLabel; … … 171 199 protected System.Windows.Forms.Label maximumLabel; 172 200 protected System.Windows.Forms.PictureBox PictureBox; 201 protected System.Windows.Forms.SplitContainer SplitContainer; 173 202 174 203 } -
branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis.Views/3.4/FeatureCorrelationView.cs
r8483 r8492 55 55 base.RegisterContentEvents(); 56 56 Content.ProgressCalculation += new DataAnalysis.FeatureCorrelation.ProgressCalculationHandler(Content_ProgressCalculation); 57 Content. Reset += new System.EventHandler(Content_Reset);57 Content.CorrelationCalculationFinished += new System.EventHandler(Content_CorrelationCalculationFinished); 58 58 } 59 59 60 60 protected override void DeregisterContentEvents() { 61 Content. Reset -= new System.EventHandler(Content_Reset);61 Content.CorrelationCalculationFinished -= new System.EventHandler(Content_CorrelationCalculationFinished); 62 62 Content.ProgressCalculation -= new DataAnalysis.FeatureCorrelation.ProgressCalculationHandler(Content_ProgressCalculation); 63 63 base.DeregisterContentEvents(); … … 69 69 } else if (e.ProgressPercentage == HeatMapProgressBar.Maximum) { 70 70 HeatMapProgressBar.Hide(); 71 DataGridView.Enabled = true;72 71 } 73 72 HeatMapProgressBar.Value = e.ProgressPercentage; … … 80 79 CorrelationCalcComboBox.DataSource = Content.CorrelationCalculators; 81 80 PartitionComboBox.DataSource = Content.Partitions; 82 Calculate HeatMap();81 CalculateCorrelation(); 83 82 } 84 83 } 85 84 86 85 protected void CorrelationMeasureComboBox_SelectedIndexChanged(object sender, System.EventArgs e) { 87 Calculate HeatMap();86 CalculateCorrelation(); 88 87 } 89 88 protected void PartitionComboBox_SelectedIndexChanged(object sender, System.EventArgs e) { 90 Calculate HeatMap();91 } 92 93 protected v oid CalculateHeatMap() {89 CalculateCorrelation(); 90 } 91 92 protected virtual void CalculateCorrelation() { 94 93 string calc = (string)CorrelationCalcComboBox.SelectedItem; 95 94 string partition = (string)PartitionComboBox.SelectedItem; … … 97 96 DataGridView.Enabled = false; 98 97 Content.Recalculate(calc, partition); 99 base.OnContentChanged();100 98 } 101 99 } … … 115 113 DataGridView.RowCount = Content.Rows; 116 114 115 ClearSorting(); 117 116 UpdateColumnHeaders(); 118 117 UpdateRowHeaders(); … … 137 136 } 138 137 139 protected void Content_ Reset(object sender, System.EventArgs e) {140 if (InvokeRequired) 141 Invoke(new EventHandler(Content_ Reset), sender, e);142 else {138 protected void Content_CorrelationCalculationFinished(object sender, System.EventArgs e) { 139 if (InvokeRequired) { 140 Invoke(new EventHandler(Content_CorrelationCalculationFinished), sender, e); 141 } else { 143 142 UpdateDataGrid(); 144 143 } … … 159 158 if (index < 0) index = 0; 160 159 return colors[index]; 160 } 161 162 protected override void OnShown(ViewShownEventArgs e) { 163 base.OnShown(e); 164 CalculateCorrelation(); 161 165 } 162 166 … … 190 194 } 191 195 196 protected virtual void ClearSorting() { 197 virtualRowIndices = Enumerable.Range(0, Content.Rows).ToArray(); 198 sortedColumnIndices.Clear(); 199 UpdateSortGlyph(); 200 } 201 192 202 private void Sort() { 193 203 virtualRowIndices = Sort(sortedColumnIndices); -
branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj
r8483 r8492 172 172 <DependentUpon>ClassificationEnsembleSolutionModelView.cs</DependentUpon> 173 173 </Compile> 174 <Compile Include="TimeframeFeatureCorrelationView.cs"> 175 <SubType>UserControl</SubType> 176 </Compile> 177 <Compile Include="TimeframeFeatureCorrelationView.Designer.cs"> 178 <DependentUpon>TimeframeFeatureCorrelationView.cs</DependentUpon> 179 </Compile> 174 180 <Compile Include="FeatureCorrelationView.cs"> 175 181 <SubType>UserControl</SubType> … … 348 354 <EmbeddedResource Include="FeatureCorrelationView.resx"> 349 355 <DependentUpon>FeatureCorrelationView.cs</DependentUpon> 356 </EmbeddedResource> 357 <EmbeddedResource Include="TimeframeFeatureCorrelationView.resx"> 358 <DependentUpon>TimeframeFeatureCorrelationView.cs</DependentUpon> 350 359 </EmbeddedResource> 351 360 </ItemGroup> -
branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/FeatureCorrelation.cs
r8483 r8492 98 98 } 99 99 100 public void CalculateTimeframeElements(string calc, string partition, string variable, int frames) { 101 CalculateElements(problemData.Dataset, calc, partition, variable, frames); 102 } 103 100 104 private void CalculateElements(Dataset dataset) { 101 105 CalculateElements(dataset, CorrelationCalculators.First(), Partitions.First()); 102 106 } 103 107 104 private void CalculateElements(Dataset dataset, string calc, string partition ) {108 private void CalculateElements(Dataset dataset, string calc, string partition, string variable = null, int frames = 0) { 105 109 if (bw == null || bw.IsBusy) { 106 110 if (bw != null) { … … 110 114 bw.WorkerReportsProgress = true; 111 115 bw.WorkerSupportsCancellation = true; 112 bw.DoWork += new DoWorkEventHandler( bw_DoWork);113 bw.ProgressChanged += new ProgressChangedEventHandler( bw_ProgressChanged);114 bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler( bw_RunWorkerCompleted);115 } 116 bw.RunWorkerAsync(new BackgroundWorkerInfo { Dataset = dataset, Calculator = calc, Partition = partition });116 bw.DoWork += new DoWorkEventHandler(BwDoWork); 117 bw.ProgressChanged += new ProgressChangedEventHandler(BwProgressChanged); 118 bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BwRunWorkerCompleted); 119 } 120 bw.RunWorkerAsync(new BackgroundWorkerInfo { Dataset = dataset, Calculator = calc, Partition = partition, Variable = variable, Frames = frames }); 117 121 if (calc.Equals(PearsonsR) || calc.Equals(SpearmansRank)) { 118 122 Maximum = 1.0; … … 127 131 } 128 132 129 private void bw_DoWork(object sender, DoWorkEventArgs e) { 133 #region backgroundworker 134 private void BwDoWork(object sender, DoWorkEventArgs e) { 135 BackgroundWorkerInfo bwInfo = (BackgroundWorkerInfo)e.Argument; 136 if (bwInfo.Variable == null) { 137 BwCalculateCorrelation(sender, e); 138 } else { 139 BwCalculateTimeframeCorrelation(sender, e); 140 } 141 } 142 143 private void BwCalculateCorrelation(object sender, DoWorkEventArgs e) { 130 144 BackgroundWorker worker = sender as BackgroundWorker; 131 145 … … 139 153 int length = doubleVariableNames.Count; 140 154 double[,] elements = new double[length, length]; 141 142 155 double calculations = (Math.Pow(length, 2) + length) / 2; 143 156 … … 151 164 } 152 165 153 IEnumerable<double> var1 = dataset.GetDoubleValues(doubleVariableNames[i]); 154 IEnumerable<double> var2 = dataset.GetDoubleValues(doubleVariableNames[j]); 155 if (partition.Equals(TrainingSamples)) { 156 var1 = var1.Skip(problemData.TrainingPartition.Start).Take(problemData.TrainingPartition.End - problemData.TrainingPartition.Start); 157 var2 = var2.Skip(problemData.TrainingPartition.Start).Take(problemData.TrainingPartition.End - problemData.TrainingPartition.Start); 158 } else if (partition.Equals(TestSamples)) { 159 var1 = var1.Skip(problemData.TestPartition.Start).Take(problemData.TestPartition.End - problemData.TestPartition.Start); 160 var2 = var2.Skip(problemData.TestPartition.Start).Take(problemData.TestPartition.End - problemData.TestPartition.Start); 161 } 162 163 if (calc.Equals(HoeffdingsDependence)) { 164 elements[i, j] = HoeffdingsDependenceCalculator.Calculate(var1, var2, out error); 165 } else if (calc.Equals(SpearmansRank)) { 166 elements[i, j] = SpearmansRankCorrelationCoefficientCalculator.Calculate(var1, var2, out error); 167 } else if (calc.Equals(PearsonsRSquared)) { 168 elements[i, j] = OnlinePearsonsRSquaredCalculator.Calculate(var1, var2, out error); 169 } else { 170 elements[i, j] = OnlinePearsonsRSquaredCalculator.CalculateR(var1, var2, out error); 171 } 166 IEnumerable<double> var1 = GetRelevantValues(problemData, partition, doubleVariableNames[i]); 167 IEnumerable<double> var2 = GetRelevantValues(problemData, partition, doubleVariableNames[j]); 168 169 elements[i, j] = CalculateElementWithCalculator(calc, var1, var2, out error); 170 172 171 elements[j, i] = elements[i, j]; 173 172 if (!error.Equals(OnlineCalculatorError.None)) { … … 181 180 } 182 181 183 private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { 182 private void BwCalculateTimeframeCorrelation(object sender, DoWorkEventArgs e) { 183 BackgroundWorker worker = sender as BackgroundWorker; 184 185 BackgroundWorkerInfo bwInfo = (BackgroundWorkerInfo)e.Argument; 186 Dataset dataset = bwInfo.Dataset; 187 string partition = bwInfo.Partition; 188 string calc = bwInfo.Calculator; 189 string variable = bwInfo.Variable; 190 int frames = bwInfo.Frames; 191 192 IList<string> doubleVariableNames = dataset.DoubleVariables.ToList(); 193 OnlineCalculatorError error; 194 int length = doubleVariableNames.Count; 195 double[,] elements = new double[length, frames + 1]; 196 double calculations = (frames + 1) * length; 197 198 worker.ReportProgress(0); 199 200 for (int i = 0; i < length; i++) { 201 for (int j = 0; j <= frames; j++) { 202 if (worker.CancellationPending) { 203 e.Cancel = true; 204 return; 205 } 206 207 IEnumerable<double> var1 = GetRelevantValues(problemData, partition, variable); 208 IEnumerable<double> var2 = GetRelevantValues(problemData, partition, doubleVariableNames[i]); 209 210 var valuesInFrame = var1.Take(j); 211 var help = var1.Skip(j).ToList(); 212 help.AddRange(valuesInFrame); 213 var1 = help; 214 215 elements[i, j] = CalculateElementWithCalculator(calc, var1, var2, out error); 216 217 if (!error.Equals(OnlineCalculatorError.None)) { 218 worker.ReportProgress(100); 219 throw new ArgumentException("Calculator returned " + error + Environment.NewLine + "Maybe try another calculator."); 220 } 221 worker.ReportProgress((int)((100.0 / calculations) * (i * (frames + 1) + j + 1))); 222 } 223 } 224 e.Result = elements; 225 } 226 227 private IEnumerable<double> GetRelevantValues(IDataAnalysisProblemData problemData, string partition, string variable) { 228 IEnumerable<double> var = problemData.Dataset.GetDoubleValues(variable); 229 if (partition.Equals(TrainingSamples)) { 230 var = var.Skip(problemData.TrainingPartition.Start).Take(problemData.TrainingPartition.End - problemData.TrainingPartition.Start); 231 } else if (partition.Equals(TestSamples)) { 232 var = var.Skip(problemData.TestPartition.Start).Take(problemData.TestPartition.End - problemData.TestPartition.Start); 233 } 234 return var; 235 } 236 237 private double CalculateElementWithCalculator(string calc, IEnumerable<double> var1, IEnumerable<double> var2, out OnlineCalculatorError error) { 238 if (calc.Equals(HoeffdingsDependence)) { 239 return HoeffdingsDependenceCalculator.Calculate(var1, var2, out error); 240 } else if (calc.Equals(SpearmansRank)) { 241 return SpearmansRankCorrelationCoefficientCalculator.Calculate(var1, var2, out error); 242 } else if (calc.Equals(PearsonsRSquared)) { 243 return OnlinePearsonsRSquaredCalculator.Calculate(var1, var2, out error); 244 } else { 245 return OnlinePearsonsRSquaredCalculator.CalculateR(var1, var2, out error); 246 } 247 } 248 249 private void BwRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { 184 250 BackgroundWorker worker = sender as BackgroundWorker; 185 251 if (!e.Cancelled && !worker.CancellationPending) { … … 188 254 } else { 189 255 matrix = (double[,])e.Result; 190 OnReset(); 191 } 192 } 193 } 256 OnCorrelationCalculationFinished(); 257 } 258 } 259 } 260 #endregion 194 261 195 262 #region events 263 public event EventHandler CorrelationCalculationFinished; 264 protected virtual void OnCorrelationCalculationFinished() { 265 EventHandler handler = CorrelationCalculationFinished; 266 if (handler != null) 267 handler(this, EventArgs.Empty); 268 } 269 196 270 public delegate void ProgressCalculationHandler(object sender, ProgressChangedEventArgs e); 197 271 public event ProgressCalculationHandler ProgressCalculation; 198 protected void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) {272 protected void BwProgressChanged(object sender, ProgressChangedEventArgs e) { 199 273 BackgroundWorker worker = sender as BackgroundWorker; 200 274 if (!worker.CancellationPending && ProgressCalculation != null) { … … 215 289 public string Calculator { get; set; } 216 290 public string Partition { get; set; } 291 public string Variable { get; set; } 292 public int Frames { get; set; } 217 293 } 218 294 }
Note: See TracChangeset
for help on using the changeset viewer.