コード例 #1
0
        private void SaveProjectAs(TelemetryProject project, string fileName)
        {
            UpdateProjectState(project);

            project.Save(fileName);

            MessageBox.Show($"Project {project.Name} saved");

            DisplayProjectName(project);
        }
コード例 #2
0
 protected virtual void OnProjectChanged(TelemetryProject project)
 {
     if (project != null)
     {
         SetProjectOpenFormState();
     }
     else
     {
         SetProjectClosedFormState();
     }
 }
コード例 #3
0
        private bool PromptToSaveChanges(TelemetryProject project)
        {
            var cancel = false;

            var promptResponse = MessageBox.Show(this, "Save changes to the project?", "Save Changes?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

            if (promptResponse == DialogResult.Cancel)
            {
                cancel = true;
            }
            else if (promptResponse == DialogResult.Yes)
            {
                SaveProject(project);
            }

            return(cancel);
        }
コード例 #4
0
        private void DisplayProject(TelemetryProject project)
        {
            ClearProjectDisplay();

            DisplayProjectName(project);

            foreach (DisplayInfo displayInfo in project.Displays)
            {
                if (displayInfo is LapTimesDisplayInfo)
                {
                    NewLapTimesDisplay((LapTimesDisplayInfo)displayInfo);
                }
                if (displayInfo is LineGraphDisplayInfo)
                {
                    NewLineGraphDisplay((LineGraphDisplayInfo)displayInfo);
                }
            }
        }
コード例 #5
0
        private void UpdateProjectState(TelemetryProject project)
        {
            project.SessionName = _sessionFileName;

            project.Displays.Clear();

            foreach (ITelemetryDisplay display in _displayController.Displays)
            {
                if (display is ITelemetryFrameDisplay)
                {
                    project.Displays.Add(((ITelemetryFrameDisplay)display).DisplayInfo);
                }
                else if (display is ITelemetryLapDisplay)
                {
                    project.Displays.Add(((ITelemetryLapDisplay)display).DisplayInfo);
                }
            }
        }
コード例 #6
0
        private bool CloseProject(TelemetryProject project)
        {
            var cancel = false;

            if (project != null && ProjectHasChanges(project))
            {
                cancel = PromptToSaveChanges(project);
            }

            if (!cancel)
            {
                ClearProjectDisplay();

                Project = null;
            }

            return(cancel);
        }
コード例 #7
0
        private void LoadNewProject()
        {
            var cancel = false;

            if (Project != null)
            {
                cancel = CloseProject(Project);
            }

            if (!cancel)
            {
                var projectName = GetProjectName("");

                Project = new TelemetryProject()
                {
                    Name = projectName
                };

                DisplayProject(Project);
            }
        }
コード例 #8
0
        private void SaveProject(TelemetryProject project)
        {
            var dialog = new SaveFileDialog()
            {
                InitialDirectory = ProjectsFolder,
                Filter           = "Project Files (*.json)|*.json|All Files (*.*)|*.*",
                FilterIndex      = 1,
                FileName         = Path.GetFileName(GetProjectFileName(project))
            };

            if (dialog.ShowDialog(this) == DialogResult.OK)
            {
                var nameToSaveAs = Path.GetFileNameWithoutExtension(dialog.FileName);
                if (nameToSaveAs != project.Name)
                {
                    project.Name = nameToSaveAs;
                }

                SaveProjectAs(project, dialog.FileName);

                Project = project;
            }
        }
コード例 #9
0
        private async Task <TelemetryProject> OpenProject(string fileName)
        {
            var project = TelemetryProject.Load(fileName);

            if (project != null)
            {
                if (Session == null)
                {
                    if (!String.IsNullOrEmpty(project.SessionName))
                    {
                        Session = await LoadTelemetryFileSessionAsync(project.SessionName);
                    }
                }
                else
                {
                    project.SessionName = _sessionFileName;
                }

                DisplayProject(project);
            }

            return(project);
        }
コード例 #10
0
 private void DisplayProjectName(TelemetryProject project)
 {
     lblProject.Text = $"Project: [{project.Name}]";
 }
コード例 #11
0
        private bool ProjectHasChanges(TelemetryProject project)
        {
            var newState = TelemetryProject.SerializeProject(project);

            return(project.State != newState);
        }
コード例 #12
0
 private string GetProjectFileName(TelemetryProject project)
 {
     return(Path.Combine(ProjectsFolder, $"{Project.Name}.json"));
 }