/// <summary> /// Открывает указанный проект в новой вкладке. /// </summary> /// <param name="project">Открываемый проект.</param> public void OpenProject(AbstractProject project) { if (project == null) throw new ArgumentNullException("Открываемый проект не может быть неопределенным"); IMachineVisualizer vis = visualsCtrl.GetOpenedProject(project.ProjectDirectory, project.Name); if (vis != null) visualsCtrl.CloseVisualizer(vis); switch(project.Machine) { case MachineId.Post: { visualsCtrl.AddVisualizer(new PostVisualizer() { CurrentProject = project, Debug = debug }); break; } case MachineId.Turing: { visualsCtrl.AddVisualizer(new TuringVisualizer() { CurrentProject = project, Debug = debug }); break; } case MachineId.Register: { visualsCtrl.AddVisualizer(new RegisterMachineVisualizer() { CurrentProject = project, Debug = debug }); break; } default: throw new ArgumentException("Невозможно открыть проект, поскольку он имеет неизвестный тип абстрактной машины"); } }
/// <summary> /// Создает новый проект с указанным названием и типом абстрактной машины. /// </summary> /// <param name="name">Название создаваемого проекта.</param> /// <param name="machine">Тип абстрактной машины, под который создается проект.</param> /// <param name="settings">Начальные установки визуализатора.</param> /// <returns>Созданный проект.</returns> private AbstractProject CreateProject(string name, MachineId machine, Dictionary<string, bool> settings = null) { string fileName = nameBox.Text; string folder = newFolderBox.Checked ? Path.Combine(_folderDialog.SelectedPath, fileName) : _folderDialog.SelectedPath; AbstractProject result = new AbstractProject(name, machine, folder); result.VisualizerSettings = settings; return result; }
/// <summary> /// Открывает проект в новой вкладке рабочей среды. /// </summary> /// <param name="project">Открываемый проект.</param> private void OpenProject(AbstractProject project) { _environment.OpenProject(project); stateCtrl.CurrentControl = _environment; ItemsToEnvState(); backBtn.Visible = false; }