示例#1
0
 public static bool FileSave(BaseController Controller)
 {
     if (Controller.ApsimData.FileName == "Untitled")
     {
         return(BaseActions.FileSaveAs(Controller));
     }
     else
     {
         return(Controller.ApsimData.Save());
     }
 }
        public static void ProbeDLL(BaseController Controller)
        {
            if ((!(BaseActions.FileSave(Controller))))
            {
                return;
            }
            string XmlFileName = Controller.ApsimData.FileName;

            //Dim P As Process = Process.Start(Configuration.ApsimBinDirectory + "\Plant2Documentation", Arguments)
            Process P = Utility.RunProcess(Path.Combine(Configuration.ApsimBinDirectory(), "ProbeDLL.exe"), XmlFileName, Path.GetDirectoryName(XmlFileName));

            Utility.CheckProcessExitedProperly(P);

            MessageBox.Show("Finished writing to <info> section.", "Done", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        public static void Plant2Documentation(BaseController Controller)
        {
            if ((!(BaseActions.FileSave(Controller))))
            {
                return;
            }
            string XmlFileName = Controller.ApsimData.FileName;
            //Dim HtmlFileName As String = Path.GetTempPath() + Path.GetFileNameWithoutExtension(XmlFileName) + ".html" //removed from temp dir as Firefox can't handle abs dirs. JF
            string HtmlFileName = Path.Combine("..", "Documentation", "Plant2Docs", Path.GetFileNameWithoutExtension(XmlFileName) + ".html");
            string Arguments    = StringManip.DQuote(XmlFileName) + " " + StringManip.DQuote(HtmlFileName);

            //Dim P As Process = Process.Start(Configuration.ApsimBinDirectory + "\Plant2Documentation", Arguments)
            Process P = Utility.RunProcess(Path.Combine(Configuration.ApsimBinDirectory(), "Plant2Documentation.exe"), Arguments, Path.GetDirectoryName(XmlFileName));

            Utility.CheckProcessExitedProperly(P);
            Process.Start(HtmlFileName);
        }
        public static void CheckPoint(BaseController Controller)
        {
            if (MessageBox.Show("Are you sure you want to save and checkpoint your simulation and outputfiles, overwriting any previous checkpoints?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
            {
                // Save first
                if ((!(BaseActions.FileSave(Controller))))
                {
                    return;
                }

                // empty the checkpoint sub folder.
                string CheckPointFolder = Path.Combine(Path.GetDirectoryName(Controller.ApsimData.FileName), "CheckPoint");

                if (Directory.Exists(CheckPointFolder))
                {
                    Directory.Delete(CheckPointFolder, true);
                }
                Directory.CreateDirectory(CheckPointFolder);

                // Get a complete list of files names (.out, .sum & .apsim) to copy to checkpoint folder.
                List <string> FileNames = new List <string>();
                FileNames.Add(Controller.ApsimData.FileName);
                UIUtility.OutputFileUtility.GetOutputFiles(Controller, Controller.ApsimData.RootComponent, FileNames);
                UIUtility.OutputFileUtility.GetSummaryFiles(Controller, Controller.ApsimData.RootComponent, FileNames);

                // Copy all files to checkpoint folder. If any files don't exist then
                // create zero byte files.
                foreach (string FileName in FileNames)
                {
                    string DestFileName = CheckPointFolder + Path.DirectorySeparatorChar + Path.GetFileName(FileName);
                    if (File.Exists(FileName))
                    {
                        File.Copy(FileName, DestFileName, true);
                    }
                    else
                    {
                        StreamWriter Out = new StreamWriter(DestFileName);
                        Out.Close();
                    }
                }
                MessageBox.Show("All simulation, output and summary files have been checkpointed", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        public static void Run(BaseController Controller)
        {
            // ------------------------------------------------
            // Go looking for simulations to run. Look at the
            // currently selected nodes first and progressively
            // their parents until some simulations are found.
            // ------------------------------------------------
            if (Configuration.Instance.Setting("ReloadPlugInsBeforeRunningAPSIM") == "Yes")
            {
                PlugIns.LoadAll();
            }

            if ((bool)BaseActions.FileSave(Controller))
            {
                Control[] RunPanels = Controller.MainForm.Controls.Find("RunToolStrip", true);
                if (RunPanels.Length == 1)
                {
                    ApsimRunToolStrip.Instance.RunApsim((ToolStrip)RunPanels[0], Controller);
                    //_
                    //Controller.ApsimData, _
                    //Controller.SelectedPaths)
                }
            }
        }
        public static void RunOnCluster(BaseController Controller)
        {
            if ((!(BaseActions.FileSave(Controller))))
            {
                return;
            }

            StatusStrip StatusBar = (StatusStrip)Controller.MainForm.Controls.Find("StatusStrip1", true)[0];

            ProgressBar       = (ToolStripProgressBar)StatusBar.Items[0];
            ProgressLabel     = (ToolStripStatusLabel)StatusBar.Items[1];
            StatusBar.Visible = true;

            try {
                UIBits.ClusterForm F = new UIBits.ClusterForm();
                if (F.ShowDialog() == DialogResult.OK)
                {
                    Cursor.Current = Cursors.WaitCursor;
                    F.SaveSettings();

                    List <string> FilesToRun = new List <string>();
                    if (F.runThisSimulation && !string.IsNullOrEmpty(Controller.ApsimData.FileName))
                    {
                        FilesToRun.Add(Controller.ApsimData.FileName);
                    }
                    else if (!F.runThisSimulation && !string.IsNullOrEmpty(F.FolderOfFiles))
                    {
                        Utility.FindFiles(F.FolderOfFiles, "*.apsim", ref FilesToRun);
                    }

                    if ((FilesToRun.Count > 0))
                    {
                        CondorJob c = new CondorJob();
                        c.NiceUser = F.NiceUser;
                        c.arch     = 0;
                        if (F.archIsUnix)
                        {
                            c.arch |= Configuration.architecture.unix;
                        }
                        if (F.archIsWin32)
                        {
                            c.arch |= Configuration.architecture.win32;
                        }

                        c.SelfExtractingExecutableLocation = F.sfxLocation;
                        if (!Directory.Exists(F.OutputFolder))
                        {
                            Directory.CreateDirectory(F.OutputFolder);
                        }
                        c.DestinationFolder = F.OutputFolder;
                        c.numberSimsPerJob  = F.simsPerJobNumber;
                        c.useSingleCPU      = F.useSingleCPU;

                        c.Go(FilesToRun, UpdateProgress);

                        MessageBox.Show("Your job has been placed in your dropbox folder. Your outputs will appear adjacent.", "For your information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            } catch (Exception ex) {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            Cursor.Current    = Cursors.Default;
            StatusBar.Visible = false;
        }