private string GenerateSimCSimulationParameters(ControllerModel controller, out int lnkmax)
        {
            var sb = new StringBuilder();

            sb.AppendLine("void simulation_parameters(void)");
            sb.AppendLine("{");

            sb.AppendLine(" T_subrun_max  = 3600; /* subrun tijd                 */");
            sb.AppendLine(" RANDGEN_start = 123;  /* startwaarde randomgenerator */");

            sb.AppendLine();

            sb.AppendLine($"{ts}/* Link parameters */");
            sb.AppendLine($"{ts}/* --------------- */");

            var index          = 0;
            var fasendets      = controller.Fasen.SelectMany(x => x.Detectoren);
            var controllerdets = controller.Detectoren;
            var ovdummydets    = controller.PrioData.GetAllDummyDetectors();
            var sddets         = controller.SelectieveDetectoren;
            var alldets        = fasendets.Concat(controllerdets).Concat(sddets).Concat(ovdummydets).ToList();
            var externals      = PieceGenerators.Where(x => x.HasSimulationElements(controller)).SelectMany(x => x.GetSimulationElements(controller)).ToList();

            foreach (var dm in alldets.Where(x => !x.Dummy))
            {
                sb.AppendLine($"{ts}LNK_code[{index}] = \"{dm.Naam}\";");
                sb.AppendLine($"{ts}IS_nr[{index}] = {dm.GetDefine()};");
                sb.AppendLine($"{ts}FC_nr[{index}] = {(!string.IsNullOrWhiteSpace(dm.Simulatie.FCNr) && controller.Fasen.Any(x => x.Naam == dm.Simulatie.FCNr) ? _fcpf + dm.Simulatie.FCNr : "NG")};");
                sb.AppendLine($"{ts}S_generator[{index}] = NG;");
                sb.AppendLine($"{ts}S_stopline[{index}] = {dm.Simulatie.Stopline};");
                sb.AppendLine($"{ts}Q1[{index}] = {dm.Simulatie.Q1};");
                sb.AppendLine($"{ts}Q2[{index}] = {dm.Simulatie.Q2};");
                sb.AppendLine($"{ts}Q3[{index}] = {dm.Simulatie.Q3};");
                sb.AppendLine($"{ts}Q4[{index}] = {dm.Simulatie.Q4};");
                sb.AppendLine();
                ++index;
            }
            if (alldets.Any(x => x.Dummy) || externals.Any())
            {
                sb.AppendLine("#if (!defined AUTOMAAT_TEST)");
                foreach (var dm in alldets.Where(x => x.Dummy))
                {
                    sb.AppendLine($"{ts}LNK_code[{index}] = \"{dm.Naam}\";");
                    sb.AppendLine($"{ts}IS_nr[{index}] = {dm.GetDefine()};");
                    sb.AppendLine($"{ts}FC_nr[{index}] = {(!string.IsNullOrWhiteSpace(dm.Simulatie.FCNr) && controller.Fasen.Any(x => x.Naam == dm.Simulatie.FCNr) ? _fcpf + dm.Simulatie.FCNr : "NG")};");
                    sb.AppendLine($"{ts}S_generator[{index}] = NG;");
                    sb.AppendLine($"{ts}S_stopline[{index}] = {dm.Simulatie.Stopline};");
                    sb.AppendLine($"{ts}Q1[{index}] = {dm.Simulatie.Q1};");
                    sb.AppendLine($"{ts}Q2[{index}] = {dm.Simulatie.Q2};");
                    sb.AppendLine($"{ts}Q3[{index}] = {dm.Simulatie.Q3};");
                    sb.AppendLine($"{ts}Q4[{index}] = {dm.Simulatie.Q4};");
                    sb.AppendLine();
                    ++index;
                }
                foreach (var e in externals)
                {
                    sb.AppendLine($"{ts}LNK_code[{index}] = \"{e.RelatedName}\";");
                    sb.AppendLine($"{ts}IS_nr[{index}] = {_ispf}{e.RelatedName};");
                    sb.AppendLine($"{ts}FC_nr[{index}] = {(!string.IsNullOrWhiteSpace(e.FCNr) && controller.Fasen.Any(x => x.Naam == e.FCNr) ? _fcpf + e.FCNr : "NG")};");
                    sb.AppendLine($"{ts}S_generator[{index}] = NG;");
                    sb.AppendLine($"{ts}S_stopline[{index}] = {e.Stopline};");
                    sb.AppendLine($"{ts}Q1[{index}] = {e.Q1};");
                    sb.AppendLine($"{ts}Q2[{index}] = {e.Q2};");
                    sb.AppendLine($"{ts}Q3[{index}] = {e.Q3};");
                    sb.AppendLine($"{ts}Q4[{index}] = {e.Q4};");
                    sb.AppendLine();
                    ++index;
                }
                sb.AppendLine("#endif");
            }

            sb.AppendLine();

            sb.AppendLine($"{ts}/* Gebruikers toevoegingen file includen */");
            sb.AppendLine($"{ts}/* ------------------------------------- */");
            sb.AppendLine($"{ts}#include \"{controller.Data.Naam}sim.add\"");

            sb.AppendLine();
            sb.AppendLine("}");

            lnkmax = index;

            return(sb.ToString());
        }
示例#2
0
        public void LoadSettings()
        {
            foreach (var v in PieceGenerators)
            {
                if (v.HasSettings())
                {
                    var set = CCOLGeneratorSettingsProvider.Default.Settings.CodePieceGeneratorSettings.Find(x => x.Item1 == v.GetType().Name);
                    if (set != null)
                    {
                        if (!v.SetSettings(set.Item2))
                        {
                            MessageBox.Show($"Error with {v.GetType().Name}.\nCould not load settings; code generation will be faulty.", "Error loading CCOL code generator settings.");
                            return;
                        }
                    }
                    else
                    {
                        if (!v.SetSettings(null))
                        {
                            MessageBox.Show($"Error with {v.GetType().Name}.\nCould not load settings; code generation will be faulty.", "Error loading CCOL code generator settings.");
                            return;
                        }
                        v.SetSettings(null);
                    }
                }
            }

            // Check if any plugins provide code
            foreach (var pl in TLCGenPluginManager.Default.ApplicationPlugins)
            {
                var type = pl.Item2.GetType();
                var attr = (CCOLCodePieceGeneratorAttribute)Attribute.GetCustomAttribute(type, typeof(CCOLCodePieceGeneratorAttribute));

                if (attr == null)
                {
                    continue;
                }

                var genPlugin = pl.Item2 as ICCOLCodePieceGenerator;

                if (genPlugin == null)
                {
                    continue;
                }

                PieceGenerators.Add(genPlugin);
                var set = CCOLGeneratorSettingsProvider.Default.Settings.CodePieceGeneratorSettings.Find(x => x.Item1 == type.Name);
                if (genPlugin.HasSettings())
                {
                    genPlugin.SetSettings(set?.Item2);
                }

                var codetypes = Enum.GetValues(typeof(CCOLCodeTypeEnum));
                foreach (var codetype in codetypes)
                {
                    var index = genPlugin.HasCode((CCOLCodeTypeEnum)codetype);
                    if (index > 0)
                    {
                        OrderedPieceGenerators[(CCOLCodeTypeEnum)codetype].Add(index, genPlugin);
                    }
                }
            }
        }
示例#3
0
        public string GenerateSourceFiles(ControllerModel c, string sourcefilepath)
        {
            if (Directory.Exists(sourcefilepath))
            {
                try
                {
                    CCOLGeneratorSettingsProvider.Default.Reset();
                    CCOLElementCollector.Reset();

                    _uspf  = CCOLGeneratorSettingsProvider.Default.GetPrefix("us");
                    _ispf  = CCOLGeneratorSettingsProvider.Default.GetPrefix("is");
                    _fcpf  = CCOLGeneratorSettingsProvider.Default.GetPrefix("fc");
                    _dpf   = CCOLGeneratorSettingsProvider.Default.GetPrefix("d");
                    _tpf   = CCOLGeneratorSettingsProvider.Default.GetPrefix("t");
                    _schpf = CCOLGeneratorSettingsProvider.Default.GetPrefix("sch");
                    _hpf   = CCOLGeneratorSettingsProvider.Default.GetPrefix("h");
                    _mpf   = CCOLGeneratorSettingsProvider.Default.GetPrefix("m");
                    _cpf   = CCOLGeneratorSettingsProvider.Default.GetPrefix("c");
                    _prmpf = CCOLGeneratorSettingsProvider.Default.GetPrefix("prm");

                    foreach (var pgen in PieceGenerators)
                    {
                        pgen.CollectCCOLElements(c);
                    }

                    _alleDetectoren = new List <DetectorModel>();
                    foreach (var fcm in c.Fasen)
                    {
                        foreach (var dm in fcm.Detectoren)
                        {
                            _alleDetectoren.Add(dm);
                        }
                    }
                    foreach (var dm in c.Detectoren)
                    {
                        _alleDetectoren.Add(dm);
                    }
                    foreach (var dm in c.SelectieveDetectoren)
                    {
                        _alleDetectoren.Add(dm);
                    }

                    var CCOLElementLists = CCOLElementCollector.CollectAllCCOLElements(c, PieceGenerators.OrderBy(x => x.ElementGenerationOrder).ToList());

                    CollectAllIO();

                    if (CCOLElementLists == null || CCOLElementLists.Length != 8)
                    {
                        throw new IndexOutOfRangeException("Error collecting CCOL elements from controller.");
                    }

                    foreach (var pl in TLCGenPluginManager.Default.ApplicationPlugins)
                    {
                        if ((pl.Item1 & TLCGenPluginElems.IOElementProvider) != TLCGenPluginElems.IOElementProvider)
                        {
                            continue;
                        }

                        var elemprov = pl.Item2 as ITLCGenElementProvider;
                        var elems    = elemprov?.GetAllItems();
                        if (elems == null)
                        {
                            continue;
                        }
                        foreach (var elem in elems)
                        {
                            var ccolElement = elem as CCOLElement;
                            if (ccolElement == null)
                            {
                                continue;
                            }
                            switch (ccolElement.Type)
                            {
                            case CCOLElementTypeEnum.Uitgang: CCOLElementLists[0].Elements.Add(ccolElement); break;

                            case CCOLElementTypeEnum.Ingang: CCOLElementLists[1].Elements.Add(ccolElement); break;

                            case CCOLElementTypeEnum.HulpElement: CCOLElementLists[2].Elements.Add(ccolElement); break;

                            case CCOLElementTypeEnum.GeheugenElement: CCOLElementLists[3].Elements.Add(ccolElement); break;

                            case CCOLElementTypeEnum.Timer: CCOLElementLists[4].Elements.Add(ccolElement); break;

                            case CCOLElementTypeEnum.Counter: CCOLElementLists[5].Elements.Add(ccolElement); break;

                            case CCOLElementTypeEnum.Schakelaar: CCOLElementLists[6].Elements.Add(ccolElement); break;

                            case CCOLElementTypeEnum.Parameter: CCOLElementLists[7].Elements.Add(ccolElement); break;
                            }
                        }
                    }

                    _uitgangen         = CCOLElementLists[0];
                    _ingangen          = CCOLElementLists[1];
                    _hulpElementen     = CCOLElementLists[2];
                    _geheugenElementen = CCOLElementLists[3];
                    _timers            = CCOLElementLists[4];
                    _counters          = CCOLElementLists[5];
                    _schakelaars       = CCOLElementLists[6];
                    _parameters        = CCOLElementLists[7];

                    foreach (var l in CCOLElementLists)
                    {
                        l.SetMax();
                    }

                    CCOLElementCollector.AddAllMaxElements(CCOLElementLists);

                    File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}reg.c"), GenerateRegC(c), Encoding.Default);
                    _allFiles.Add($"{c.Data.Naam}reg.c");
                    if (!c.Data.NietGebruikenBitmap)
                    {
                        File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}dpl.c"), GenerateDplC(c), Encoding.Default);
                    }
                    File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}tab.c"), GenerateTabC(c), Encoding.Default);
                    _allFiles.Add($"{c.Data.Naam}tab.c");
                    File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}sim.c"), GenerateSimC(c), Encoding.Default);
                    File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}sys.h"), GenerateSysH(c), Encoding.Default);
                    _allFiles.Add($"{c.Data.Naam}sys.h");
                    if (c.RoBuGrover.ConflictGroepen?.Count > 0)
                    {
                        File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}rgv.c"), GenerateRgvC(c), Encoding.Default);
                        _allFiles.Add($"{c.Data.Naam}rgv.c");
                    }
                    if (c.PTPData.PTPKoppelingen?.Count > 0)
                    {
                        File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}ptp.c"), GeneratePtpC(c), Encoding.Default);
                        _allFiles.Add($"{c.Data.Naam}ptp.c");
                    }
                    if (c.PrioData.PrioIngreepType == Models.Enumerations.PrioIngreepTypeEnum.GeneriekePrioriteit &&
                        (c.PrioData.PrioIngrepen.Any() ||
                         c.PrioData.HDIngrepen.Any()))
                    {
                        File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}prio.c"), GeneratePrioC(c), Encoding.Default);
                        _allFiles.Add($"{c.Data.Naam}prio.c");
                    }
                    if (c.HalfstarData.IsHalfstar)
                    {
                        File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}hst.c"), GenerateHstC(c), Encoding.Default);
                        _allFiles.Add($"{c.Data.Naam}hst.c");
                    }
                    if (c.Data.GenererenEnkelCompilatieBestand)
                    {
                        File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}regeling.c"), GenerateRegelingC(c), Encoding.Default);
                        _allFiles.Add($"{c.Data.Naam}regeling.c");
                    }
                    if (c.Data.PracticeOmgeving)
                    {
                        File.WriteAllText(Path.Combine(sourcefilepath, "ccolreg.txt"), GeneratePraticeCcolReg(c), Encoding.Default);
                        File.WriteAllText(Path.Combine(sourcefilepath, "ccolreg2.txt"), GeneratePraticeCcolReg2(c), Encoding.Default);
                    }
                    if (c.RISData.RISToepassen)
                    {
                        File.WriteAllText(Path.Combine(sourcefilepath, $"{c.Data.Naam}rissim.c"), GenerateRisSimC(c), Encoding.Default);
                    }

                    WriteAndReviseAdd(Path.Combine(sourcefilepath, $"{c.Data.Naam}reg.add"), c, GenerateRegAdd, GenerateRegAddHeader, Encoding.Default);
                    _allFiles.Add($"{c.Data.Naam}reg.add");
                    ReviseRegAdd(Path.Combine(sourcefilepath, $"{c.Data.Naam}reg.add"), c, Encoding.Default);
                    WriteAndReviseAdd(Path.Combine(sourcefilepath, $"{c.Data.Naam}tab.add"), c, GenerateTabAdd, GenerateTabAddHeader, Encoding.Default);
                    _allFiles.Add($"{c.Data.Naam}tab.add");
                    if (!c.Data.NietGebruikenBitmap)
                    {
                        WriteAndReviseAdd(Path.Combine(sourcefilepath, $"{c.Data.Naam}dpl.add"), c, GenerateDplAdd, GenerateDplAddHeader, Encoding.Default);
                    }
                    WriteAndReviseAdd(Path.Combine(sourcefilepath, $"{c.Data.Naam}sim.add"), c, GenerateSimAdd, GenerateSimAddHeader, Encoding.Default);
                    WriteAndReviseAdd(Path.Combine(sourcefilepath, $"{c.Data.Naam}sys.add"), c, GenerateSysAdd, GenerateSysAddHeader, Encoding.Default);
                    _allFiles.Add($"{c.Data.Naam}sys.add");
                    ReviseSysAdd(Path.Combine(sourcefilepath, $"{c.Data.Naam}sys.add"), c, Encoding.Default);
                    if (c.PrioData.PrioIngrepen.Count > 0 || c.PrioData.HDIngrepen.Count > 0)
                    {
                        if (c.PrioData.PrioIngreepType == Models.Enumerations.PrioIngreepTypeEnum.GeneriekePrioriteit)
                        {
                            WriteAndReviseAdd(Path.Combine(sourcefilepath, $"{c.Data.Naam}prio.add"), c, GeneratePrioAdd, GeneratePrioAddHeader, Encoding.Default);
                            _allFiles.Add($"{c.Data.Naam}prio.add");
                        }
                    }
                    if (c.HalfstarData.IsHalfstar)
                    {
                        WriteAndReviseAdd(Path.Combine(sourcefilepath, $"{c.Data.Naam}hst.add"), c, GenerateHstAdd, GenerateHstAddHeader, Encoding.Default);
                        _allFiles.Add($"{c.Data.Naam}hst.add");
                    }

                    CopySourceIfNeeded(c, "extra_func.c", sourcefilepath);
                    CopySourceIfNeeded(c, "extra_func.h", sourcefilepath);
                    CopySourceIfNeeded(c, "ccolfunc.c", sourcefilepath);
                    CopySourceIfNeeded(c, "ccolfunc.h", sourcefilepath);
                    CopySourceIfNeeded(c, "detectie.c", sourcefilepath);
                    CopySourceIfNeeded(c, "uitstuur.c", sourcefilepath);
                    CopySourceIfNeeded(c, "uitstuur.h", sourcefilepath);

                    if (c.Data.FixatieData.FixatieMogelijk)
                    {
                        CopySourceIfNeeded(c, "fixatie.c", sourcefilepath);
                        CopySourceIfNeeded(c, "fixatie.h", sourcefilepath);
                    }

                    if (c.PrioData.PrioIngrepen.Count > 0 || c.PrioData.HDIngrepen.Count > 0)
                    {
                        CopySourceIfNeeded(c, "extra_func_prio.c", sourcefilepath);
                        CopySourceIfNeeded(c, "extra_func_prio.h", sourcefilepath);
                    }

                    if (c.InterSignaalGroep.Nalopen.Any())
                    {
                        CopySourceIfNeeded(c, "gkvar.c", sourcefilepath);
                        CopySourceIfNeeded(c, "gkvar.h", sourcefilepath);
                        CopySourceIfNeeded(c, "nlvar.c", sourcefilepath);
                        CopySourceIfNeeded(c, "nlvar.h", sourcefilepath);
                        CopySourceIfNeeded(c, "nalopen.c", sourcefilepath);
                        CopySourceIfNeeded(c, "nalopen.h", sourcefilepath);
                    }

                    switch (c.Data.SynchronisatiesType)
                    {
                    case SynchronisatiesTypeEnum.SyncFunc when(c.InterSignaalGroep.Voorstarten.Any() || c.InterSignaalGroep.Gelijkstarten.Any()):
                        CopySourceIfNeeded(c, "syncfunc.c", sourcefilepath);

                        CopySourceIfNeeded(c, "syncvar.c", sourcefilepath);
                        CopySourceIfNeeded(c, "syncvar.h", sourcefilepath);
                        break;

                    case SynchronisatiesTypeEnum.RealFunc when(c.InterSignaalGroep.Voorstarten.Any() ||
                                                               c.InterSignaalGroep.Gelijkstarten.Any() ||
                                                               c.InterSignaalGroep.Nalopen.Any(x => x.MaximaleVoorstart.HasValue) ||
                                                               c.InterSignaalGroep.LateReleases.Any()):
                        CopySourceIfNeeded(c, "realfunc.c", sourcefilepath);

                        break;
                    }

                    if (c.PrioData.PrioIngreepType == Models.Enumerations.PrioIngreepTypeEnum.GeneriekePrioriteit &&
                        (c.PrioData.PrioIngrepen.Any() || c.PrioData.HDIngrepen.Any()))
                    {
                        CopySourceIfNeeded(c, "prio.c", sourcefilepath);
                        CopySourceIfNeeded(c, "prio.h", sourcefilepath);
                    }

                    if (c.RoBuGrover.ConflictGroepen.Any())
                    {
                        CopySourceIfNeeded(c, "rgv_overslag.c", sourcefilepath);
                        CopySourceIfNeeded(c, "rgvfunc.c", sourcefilepath);
                        CopySourceIfNeeded(c, "rgvvar.c", sourcefilepath);
                        CopySourceIfNeeded(c, "winmg.c", sourcefilepath);
                        CopySourceIfNeeded(c, "winmg.h", sourcefilepath);
                    }

                    if (c.HalfstarData.IsHalfstar)
                    {
                        CopySourceIfNeeded(c, "halfstar.c", sourcefilepath);
                        CopySourceIfNeeded(c, "halfstar.h", sourcefilepath);
                        CopySourceIfNeeded(c, "halfstar_prio.c", sourcefilepath);
                        CopySourceIfNeeded(c, "halfstar_prio.h", sourcefilepath);
                    }

                    if (c.Fasen.Any(x => x.WachttijdVoorspeller))
                    {
                        CopySourceIfNeeded(c, "wtv_testwin.c", sourcefilepath);
                    }

                    if (c.RISData.RISToepassen)
                    {
                        CopySourceIfNeeded(c, "risappl.c", sourcefilepath);
                        CopySourceIfNeeded(c, "extra_func_ris.c", sourcefilepath);
                        CopySourceIfNeeded(c, "extra_func_ris.h", sourcefilepath);
                    }

                    if (c.StarData.ToepassenStar)
                    {
                        CopySourceIfNeeded(c, "starfunc.c", sourcefilepath);
                        CopySourceIfNeeded(c, "starfunc.h", sourcefilepath);
                        CopySourceIfNeeded(c, "starvar.c", sourcefilepath);
                        CopySourceIfNeeded(c, "starvar.h", sourcefilepath);
                    }

                    foreach (var pl in PieceGenerators)
                    {
                        var fs = pl.GetSourcesToCopy();
                        if (fs != null)
                        {
                            foreach (var f in fs)
                            {
                                CopySourceIfNeeded(c, f, sourcefilepath);
                            }
                        }
                    }

                    if (Directory.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SourceFilesToCopy\\")))
                    {
                        try
                        {
                            foreach (var f in Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SourceFilesToCopy\\")))
                            {
                                try
                                {
                                    var lines = File.ReadAllLines(f);
                                    if (lines != null && lines.Length > 0 && lines[0].StartsWith("CONDITION="))
                                    {
                                        var copy = false;
                                        var cond = lines[0].Replace("CONDITION=", "");
                                        copy = cond switch
                                        {
                                            "ALWAYS" => true,
                                            "OV" => (c.PrioData.PrioIngrepen.Count > 0 || c.PrioData.HDIngrepen.Count > 0),
                                            "SYNC" => (c.InterSignaalGroep.Gelijkstarten.Count > 0 || c.InterSignaalGroep.Voorstarten.Count > 0),
                                            "FIXATIE" => (c.Data.FixatieData.FixatieMogelijk),
                                            "NALOPEN" => (c.InterSignaalGroep.Nalopen.Count > 0),
                                            "RGV" => (c.RoBuGrover.SignaalGroepInstellingen.Count > 0),
                                            _ => copy
                                        };

                                        if (!copy || File.Exists(Path.Combine(sourcefilepath, Path.GetFileName(f))))
                                        {
                                            continue;
                                        }

                                        var fileLines = new string[lines.Length - 1];
                                        Array.Copy(lines, 1, fileLines, 0, lines.Length - 1);
                                        File.WriteAllLines(Path.Combine(sourcefilepath, Path.GetFileName(f)), fileLines, Encoding.Default);
                                        _allFiles.Add(Path.GetFileName(f));
                                    }
                                }
                                catch
                                {
                                    // ignored
                                }
                            }
                        }
                        catch
                        {
                            // ignored
                        }
                    }

                    if (c.Data.GenererenIncludesLijst)
                    {
                        GenerateIncludesList(c, Path.Combine(sourcefilepath, $"{c.Data.Naam}_sources_list.txt"));
                    }
                }
                catch (Exception e)
                {
                    TLCGenDialogProvider.Default.ShowMessageBox(
                        "Er is een fout opgetreden tijdens genereren. " +
                        $"Controlleer of alle te genereren bestanden overschreven kunnen worden.\n\nOorspronkelijke foutmelding:\n{e.Message}", "Fout tijdens genereren", MessageBoxButton.OK);
                }

                return("CCOL source code gegenereerd");
            }
            return($"Map {sourcefilepath} niet gevonden. Niets gegenereerd.");
        }