/// <summary>
        /// Selects a source file in the source file list
        /// </summary>
        /// <param name="sourceFile">Selected source file</param>
        public void SelectSourceFile(string sourceFile)
        {
            if (State.SelectedSourceFileName == sourceFile)
            {
                return;
            }
            var oldState = State;

            State = State.Clone(s => s.SelectedSourceFileName = sourceFile);
            var args = new StateChangedEventArgs(oldState, State);

            AppStateChanged?.Invoke(this, args);
            SelectedSourceFileChanged?.Invoke(this, args);
        }
        /// <summary>
        /// Sets the list of source files
        /// </summary>
        /// <param name="sourceFiles">List of source files</param>
        public void SetSourceFileList(List <ComboDataItem> sourceFiles)
        {
            if (State.SourceFiles == sourceFiles)
            {
                return;
            }
            var oldState = State;

            State = State.Clone(s =>
            {
                s.SourceFiles            = sourceFiles;
                s.SelectedSourceFileName = sourceFiles.Count > 0 ? sourceFiles[0].Id : null;
            });
            var args = new StateChangedEventArgs(oldState, State);

            AppStateChanged?.Invoke(this, args);
            SourceFileListChanged?.Invoke(this, args);
            SelectedSourceFileChanged?.Invoke(this, args);
        }