public void StartGenereren()
        {
            if (_funcs.Status == GeneratorStatus.Gestopt)
            {
                //sla een back up voor als er iets fout gaat
                Opslaan_Op_Locatie(_funcs.GetWorkingFile(), _funcs.TempLiturgiePath);

                // creeer lijst van liturgie
                var ingeladenLiturgie = _funcs.LiturgieOplossingen().ToList();

                //als niet alle liturgie is gevonden geven we een melding of de gebruiker toch door wil gaan met genereren
                if (ingeladenLiturgie.Any(l => l.Resultaat != LiturgieOplossingResultaat.Opgelost))
                {
                    var errorformulier = new LiturgieNotFoundFormulier(ingeladenLiturgie.Where(l => l.Resultaat != LiturgieOplossingResultaat.Opgelost));
                    if (errorformulier.ShowDialog() == DialogResult.Cancel)
                        return;
                    ingeladenLiturgie = ingeladenLiturgie.Where(l => l.Resultaat == LiturgieOplossingResultaat.Opgelost).ToList();
                }

                // open een save window voor de presentatie
                var saveFileDialog1 = new SaveFileDialog
                {
                    Filter = Resources.Form1_Opslaan_pp_filter,
                    Title = Resources.Form1_Opslaan_pp_title
                };
                //return als er word geannuleerd
                var fileName = saveFileDialog1.ShowDialog() != DialogResult.Cancel ? saveFileDialog1.FileName : null;
                if (string.IsNullOrEmpty(fileName))
                    return;

                // Check bestandsnaam
                var saveStatus = _funcs.CheckFileSavePossibilities(fileName);
                if (saveStatus == GeneratieInterface<CompRegistration>.FileSavePossibility.NotDeleteable)
                {
                    MessageBox.Show("Het geselecteerde bestand kan niet aangepast worden.\n\nControleer of het bestand nog geopend is.", "Bestand niet toegankelijk", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                if (saveStatus == GeneratieInterface<CompRegistration>.FileSavePossibility.NotCreateable)
                {
                    MessageBox.Show("Het geselecteerde bestand kan niet aangepast worden.\n\nControleer of het bestand nog geopend is.", "Bestand niet toegankelijk", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                // start de progress tracking
                progressBar1.Visible = true;
                progressBar1.Value = 0;
                progressBar1.Minimum = 0;
                progressBar1.Maximum = ingeladenLiturgie.Count;

                // de knop de status laten reflecteren
                button1.Text = "Stop";

                var status = _funcs.StartGenereren(ingeladenLiturgie, fileName);
                if (status.Fout != null)
                    MessageBox.Show(status.Fout.Melding + "\n\n" + status.Fout.Oplossing, status.Fout.Oplossing);
            }
            else {
                var status = _funcs.StopGenereren();
                if (status.Fout != null)
                    MessageBox.Show(status.Fout.Melding + "\n\n" + status.Fout.Oplossing, status.Fout.Oplossing);
            }
        }
        public void StartGenereren()
        {
            if (_funcs.Status == GeneratorStatus.Gestopt)
            {
                //sla een back up voor als er iets fout gaat
                OpslaanOpLocatie(_funcs.MaakWerkbestand(), _funcs.TempLiturgiePath);

                // creeer lijst van liturgie
                var parsedLiturgie = _funcs.LiturgieOplossingen().ToList();

                //als niet alle liturgie is gevonden geven we een melding of de gebruiker wil stoppen of toch door wil gaan
                var fouten = parsedLiturgie.Where(l => l.ResultaatStatus != DatabaseZoekStatus.Opgelost).ToList();
                if (fouten.Any())
                {
                    var errorformulier = new LiturgieNotFoundFormulier(fouten);
                    if (errorformulier.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }
                }

                // We gaan door met alle slides die wel opgelost kunnen worden
                var slides = parsedLiturgie.Where(l => l.ResultaatStatus == DatabaseZoekStatus.Opgelost).Select(pl => pl.ResultaatSlide).ToList();

                // open een save window voor de presentatie
                var saveFileDialog1 = new SaveFileDialog
                {
                    Filter = Resources.Form1_Opslaan_pp_filter,
                    Title  = Resources.Form1_Opslaan_pp_title
                };
                //return als er word geannuleerd
                var fileName = saveFileDialog1.ShowDialog() != DialogResult.Cancel ? saveFileDialog1.FileName : null;
                if (string.IsNullOrEmpty(fileName))
                {
                    return;
                }

                // Check bestandsnaam
                var saveStatus = _funcs.CheckFileSavePossibilities(fileName);
                if (saveStatus == GeneratieInterface <CompRegistration> .FileSavePossibility.NotDeleteable)
                {
                    MessageBox.Show("Het geselecteerde bestand kan niet aangepast worden.\n\nControleer of het bestand nog geopend is.", "Bestand niet toegankelijk", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                if (saveStatus == GeneratieInterface <CompRegistration> .FileSavePossibility.NotCreateable)
                {
                    MessageBox.Show("Het geselecteerde bestand kan niet aangepast worden.\n\nControleer of het bestand nog geopend is.", "Bestand niet toegankelijk", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                // start de progress tracking
                progressBar1.Visible = true;
                progressBar1.Value   = 0;
                progressBar1.Minimum = 0;
                progressBar1.Maximum = parsedLiturgie.Count;

                // de knop de status laten reflecteren
                button1.Text = "Stop";

                var status = _funcs.StartGenereren(slides, fileName);
                if (status.Fout != null)
                {
                    MessageBox.Show(status.Fout.Melding + "\n\n" + status.Fout.Oplossing, status.Fout.Oplossing);
                }
            }
            else
            {
                var status = _funcs.StopGenereren();
                if (status.Fout != null)
                {
                    MessageBox.Show(status.Fout.Melding + "\n\n" + status.Fout.Oplossing, status.Fout.Oplossing);
                }
            }
        }