/// <summary> /// This will be called from the plot forms. thus the reason to be public /// </summary> /// <param name="mclsPCA"></param> public void PlotPCA(clsPCAplotPar mclsPCA) { if (mtabControlData.Controls.Count == 0) { return; } #region Hook Threading Events m_BackgroundWorker.DoWork += m_BackgroundWorker_GeneratePlots; m_BackgroundWorker.RunWorkerCompleted += m_BackgroundWorker_PCAPlotCompleted; #endregion var mfrmPCA = new frmPCAplotPar(mclsPCA); if (mhtDatasets.ContainsKey("Factors")) { var mclsFactors = mhtDatasets["Factors"]; if ((mclsFactors.mDTable.Columns.Count - 1) == mclsPCA.Datasets.Count) mfrmPCA.PopulateFactorComboBox = clsDataTable.DataTableRows(mclsFactors.mDTable); else mfrmPCA.PopulateFactorComboBox = null; } else mfrmPCA.PopulateFactorComboBox = null; if (mfrmPCA.ShowDialog() == DialogResult.OK) { mclsPCApar = mfrmPCA.clsPCApar; var mclsRplots = new clsRplotData(mclsPCApar.Rcmd, "PCA"); m_BackgroundWorker.RunWorkerAsync(mclsRplots); mfrmShowProgress.Message = "Generating PCA Plots ..."; mfrmShowProgress.ShowDialog(); } #region Unhook Threading Events m_BackgroundWorker.DoWork -= m_BackgroundWorker_GeneratePlots; m_BackgroundWorker.RunWorkerCompleted -= m_BackgroundWorker_PCAPlotCompleted; #endregion }
private void menuItemPCAPlot_Click(object sender, EventArgs e) { var mclsSelected = (clsDatasetTreeNode)ctltreeView.SelectedNode.Tag; if (!ValidateNodeIsSelected(mclsSelected)) { return; } if (!ValidateIsPlottable(mclsSelected, 2)) { return; } mclsPCApar = new clsPCAplotPar(); var datasetNameInR = mclsSelected.mstrRdatasetName; mclsPCApar.tempFile = mRTempFilePath; mclsPCApar.Rdataset = datasetNameInR; mclsPCApar.Datasets = clsDataTable.DataTableColumns(mclsSelected.mDTable, datasetNameInR); mclsPCApar.mstrDatasetName = mclsSelected.mstrDataText; PlotPCA(mclsPCApar); }