public override void OnInspectorGUI()
        {
            serializedObject.Update();

            draw_capture_      = EditorUtility.DrawMethodGroup(draw_capture_, "Capture Settings", DrawCaptureSettings);
            draw_pipeline_     = EditorUtility.DrawMethodGroup(draw_pipeline_, "Pipeline Settings", DrawPipelineSettings);
            draw_import_       = EditorUtility.DrawMethodGroup(draw_import_, "Import Settings", DrawImportSettings);
            draw_scenebuilder_ = EditorUtility.DrawMethodGroup(draw_scenebuilder_, "Scene Builder Settings", DrawSceneBuilderSettings);

            DrawButtons();

            serializedObject.ApplyModifiedProperties();

            // Poll the bake status.
            if (bake_progress_window_ != null && bake_progress_window_.IsComplete())
            {
                bake_progress_window_.Close();
                bake_progress_window_ = null;
                capture_builder_      = null;
                capture_status_       = null;
            }
            if (runner_progress_window_ != null && runner_progress_window_.IsComplete())
            {
                runner_progress_window_.Close();
                runner_progress_window_ = null;
                pipeline_runner_        = null;
                status_interface_       = null;
            }
        }
        public void RunSeurat()
        {
            CaptureHeadbox headbox = (CaptureHeadbox)target;
            string         seurat_output_folder = headbox.seurat_output_folder_;

            if (seurat_output_folder.Length <= 0)
            {
                seurat_output_folder          = FileUtil.GetUniqueTempPathInProject();
                headbox.seurat_output_folder_ = seurat_output_folder;
            }
            if (headbox.use_cache_)
            {
                string cache_folder_ = headbox.cache_folder_;
                if (cache_folder_.Length <= 0)
                {
                    cache_folder_ = FileUtil.GetUniqueTempPathInProject();
                }
                Directory.CreateDirectory(cache_folder_);
            }
            Directory.CreateDirectory(seurat_output_folder);
            string args = headbox.GetArgString();

            status_interface_ = new SeuratRunnerStatus();
            pipeline_runner_  = new SeuratPipelineRunner(
                args,
                headbox.seurat_exec_,
                status_interface_);

            runner_progress_window_ = (SeuratWindow)EditorWindow.GetWindow(typeof(SeuratWindow));
            runner_progress_window_.SetupStatus(status_interface_);

            runner_progress_window_.SetupRunnerProcess(headbox, pipeline_runner_);
        }
 public void SetupStatus(SeuratRunnerStatus runner_status)
 {
     runner_status_ = runner_status;
     runner_status_.SetGUI(this);
 }