From 05ee89e9553f8362597605bf0b2415e9d1fe8a84 Mon Sep 17 00:00:00 2001 From: asdfCYBER Date: Sat, 12 Feb 2022 12:44:22 +0100 Subject: [PATCH] Add autofilling songnames; add cell highlighting; add documentation --- Dialogs.cs | 22 +- PPTXcreator.csproj | 2 + Program.cs | 6 +- Properties/AssemblyInfo.cs | 4 +- Properties/Resources.Designer.cs | 10 + Properties/Resources.resx | 3 + Resources/liednamen | 621 +++++++++++++++++++++++++++++++ Songnames.cs | 47 +++ UpdateChecker.cs | 2 +- Window.Designer.cs | 3 +- Window.cs | 144 ++++++- Window.resx | 24 -- 12 files changed, 843 insertions(+), 45 deletions(-) create mode 100644 Resources/liednamen create mode 100644 Songnames.cs diff --git a/Dialogs.cs b/Dialogs.cs index 1eba720..a8e424a 100644 --- a/Dialogs.cs +++ b/Dialogs.cs @@ -8,7 +8,7 @@ namespace PPTXcreator { - static class Dialogs + public static class Dialogs { public static void GenericWarning(string message) { @@ -40,6 +40,10 @@ public static void GenericInformation(string title, string message) ); } + /// + /// Show a folder selection window and check if the selected folder exists + /// + /// The path to the selected folder, or null if the path is invalid public static string SelectFolder(string description) { FolderBrowserDialog folderDialog = new FolderBrowserDialog @@ -62,6 +66,10 @@ public static string SelectFolder(string description) return null; } + /// + /// Show a file selection window and check if the selected file exists + /// + /// The path to the selected file, or null if the path is invalid public static string SelectFile(string filter, string title) { OpenFileDialog fileDialog = new OpenFileDialog @@ -87,16 +95,6 @@ public static string SelectFile(string filter, string title) return null; } - public static DialogResult CreateNewSettingsfile(string path) - { - return MessageBox.Show( - $"Het configuratiebestand is niet gevonden op locatie '{path}'. Wil je een nieuw bestand maken?", - "Er is een fout opgetreden", - MessageBoxButtons.YesNoCancel, - MessageBoxIcon.Warning - ); - } - public static void UpdateAvailable(string newversion) { DialogResult result = MessageBox.Show( @@ -108,7 +106,7 @@ public static void UpdateAvailable(string newversion) if (result == DialogResult.Yes) { - System.Diagnostics.Process.Start("https://github.com/Sionkerk-Houten/PPTXcreator/releases/latest"); + System.Diagnostics.Process.Start("https://github.com/Sionkerk-Techniek/PPTXcreator/releases/latest"); } } } diff --git a/PPTXcreator.csproj b/PPTXcreator.csproj index e59eaf1..87b6d75 100644 --- a/PPTXcreator.csproj +++ b/PPTXcreator.csproj @@ -102,6 +102,7 @@ + @@ -217,6 +218,7 @@ + diff --git a/Program.cs b/Program.cs index 2eb648a..cfb2855 100644 --- a/Program.cs +++ b/Program.cs @@ -5,7 +5,7 @@ namespace PPTXcreator { - static class Program + public static class Program { public static Window MainWindow { get; private set; } @@ -20,9 +20,12 @@ public static void Main() Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(CrashHandlerUI); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CrashHandlerDomain); + // Load settings, service information, songnames from disk Settings.Load(); Service.UpdateJsonCache(); + Songnames.LoadNames(); + // Check for updates if (Settings.Instance.EnableUpdateChecker) Task.Run(() => UpdateChecker.CheckReleases()); // start UI @@ -31,6 +34,7 @@ public static void Main() MainWindow = new Window(); Application.Run(MainWindow); + // Save settings when closing Settings.Save(); } diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 1e8dff9..0bd03f9 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -33,6 +33,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("1.3.0.0")] +[assembly: AssemblyFileVersion("1.3.0.0")] [assembly: NeutralResourcesLanguage("nl")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index b91f422..a491f60 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -110,6 +110,16 @@ internal static System.Drawing.Icon Icon { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] liednamen { + get { + object obj = ResourceManager.GetObject("liednamen", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/Properties/Resources.resx b/Properties/Resources.resx index cbcf006..94784d0 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -139,4 +139,7 @@ ..\Resources\outline_update_black_24dp_mirrored.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\liednamen;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/Resources/liednamen b/Resources/liednamen new file mode 100644 index 0000000..b7a2b55 --- /dev/null +++ b/Resources/liednamen @@ -0,0 +1,621 @@ +{ + "1": "Uit Oer is hij getogen", + "2": "Wees eerlijk, doe de mensen recht", + "3": "Hoor Isra\u00ebl, de Here", + "4": "Het woord dat u ten leven riep", + "5": "Mijn hart verheugt zich zeer", + "6": "Geloofd zijt Gij, God onze Heer", + "7": "Het zal ons waarlijk wel gelukken", + "8": "Welzalig de man, die niet wandelt", + "9": "Heer, onze God, hoe heerlijk is uw naam", + "10": "Wie in de schaduw Gods mag wonen", + "11": "Loof de koning, heel mijn wezen", + "12": "Uw woord omvat mijn leven", + "13": "Laat ons nu vrolijk zingen!", + "14": "Alles wat adem heeft love de Here", + "15": "Geprezen zij God!", + "16": "Waarom toch komt gij voor mijn aangezicht", + "17": "Daar is uit 's werelds duistere wolken", + "18": "Er is uit 's werelds duistere wolken", + "19": "Hij die de hoge bomen", + "20": "Heer, ik zal U loven", + "21": "De Heer zal op zijn berg een feest bereiden", + "22": "Het dorre land zal juichen", + "23": "In mijn angst heb ik gesproken", + "24": "Wie mat de wateren in zijn holle hand", + "25": "O volk, verdwaald, verloren", + "26": "Zing luid een lied dat al uw vreugd", + "27": "Hoe lieflijk, hoe schoon zijn de schreden", + "28": "Wie heeft wat ons verkondigd werd geloofd", + "29": "Zing welgemoed, mijn volk", + "30": "O alle gij dorstigen, kom tot de stromen", + "31": "Om Sions wil zwijg ik niet stil", + "32": "Ik zal Gods goedertierenheid", + "33": "Zo sprak de Heer der legerscharen", + "34": "Hoor, huis van Isra\u00ebl", + "35": "Vrees niet, gij land, verheug u en wees blijde", + "36": "Hoger dan men ooit bergen zag", + "37": "O God, uw stem heb ik vernomen", + "38": "Jeruzalem, zo zegt de Heer", + "39": "Verheug u, gij dochter van Sion", + "40": "Die dag zal komen, brandend als een oven", + "41": "Jezus die langs het water liep", + "42": "God dank! Er is een koning", + "43": "Weer is het als ten dage", + "44": "De Heer verschijnt te middernacht", + "45": "Hoor! Een woord van eeuwig leven", + "46": "Mijn ziel looft God, mijn Heer", + "47": "Mijn ziel maakt groot de Heer", + "48": "Lof aan de God van Isra\u00ebl", + "49": "Nu is het woord gezegd", + "50": "De schapen alle honderd", + "51": "De Here sprak, aleer Hij voor ons leed", + "52": "Traag waren onze harten", + "53": "In den beginne was het Woord, God die", + "54": "U kennen, uit en tot U leven", + "55": "Hij die de blinden weer liet zien", + "56": "Laat me in U blijven, groeien, bloeien", + "57": "O Vader, die de landman zijt", + "58": "Heer Jezus, goede herder", + "59": "Hoelang laat Gij ons wachten", + "60": "Heer, wat wilt Gij dat ik doe", + "61": "De God die deze wereld schiep", + "62": "Wij willen God de ere geven", + "63": "Hoe moeilijk is de strijd, Heer, die ik daaglijks ken", + "64": "Laat ons niet langer vrezen", + "65": "Laat ons nu de loopbaan lopen", + "66": "Al was 't, dat ik de talen", + "67": "Het zaad zal vruchten dragen", + "68": "Ons heeft de Heer met liefde neergeschreven", + "69": "De Geest des Heren die het leven", + "70": "Heer Jezus, uw genade", + "71": "In Christus brengt God ons terecht", + "72": "Nu bidden wij met ootmoed en ontzag", + "73": "Bewaar de eenheid van Gods Geest", + "74": "Wordt krachtig in de Heer", + "75": "Wij zingen, Vader, U ter eer", + "76": "Wees blij te allen tijde", + "77": "Wij knielen voor uw zetel neer", + "78": "De dag die straks komt is de dag van de Heer", + "79": "Wij roepen Koning Christus aan", + "80": "God heeft vanouds gesproken", + "81": "Een grote hogepriester", + "82": "Wie zal voor God verschijnen", + "83": "Wij mogen tot Gods woning gaan", + "84": "De heiligen ons voorgegaan", + "85": "Bezing Gods lof als nooit tevoren", + "86": "De grote dag breekt weldra aan", + "87": "Wie zich hovaardig heffen", + "88": "Hoe groot is toch de liefde van de Vader", + "89": "De Eerste en de Laatste spreekt", + "90": "Ik draag het zwaard, aan beide zijden scherp", + "91": "Wie is waard de rol te nemen", + "92": "Het Lam, voor ons op aarde geslacht", + "93": "Wie zijn het die daar komen", + "94": "Gij dienaars van Hem", + "95": "Nu is verschenen al Gods heil en kracht", + "96": "Zalig, zalig zijn de doden", + "97": "Halleluja! Loof God de Heer!", + "98": "De lof, de heerlijkheid, de kracht", + "99": "Ik zag de hemel nieuw en nieuw de aarde", + "100": "Er wacht Gods volk een nieuw bestaan", + "101": "Ik zag het nieuw Jeruzalem", + "102": "Al wie dolend in het donker", + "103": "De dag van vertroosting", + "104": "De nacht is haast ten einde", + "105": "Een blijde boodschap, vol van leven", + "106": "Ga, stillen in den lande", + "107": "Het volk dat wandelt in het duister", + "108": "Heiland kom, o kom met haast", + "109": "Hoe zal ik U ontvangen", + "110": "Hoe zal ik U ontvangen", + "111": "Nu daagt het in het oosten", + "112": "Op U, mijn Heiland, blijf ik hopen", + "113": "O kom, o kom, Immanu\u00ebl", + "114": "Verwacht de komst des Heren", + "115": "Laat ieder het horen", + "116": "Dit is de dag, die God ons schenkt", + "117": "Eer zij God in onze dagen", + "118": "Ere zij God", + "119": "Er is een roos ontloken", + "120": "God biedt u nu zijn vrede aan", + "121": "God in ons midden", + "122": "Heerlijk klonk het lied der engelen", + "123": "Hef aan, hef aan een luide zang", + "124": "Hoor, de engelen zingen de eer", + "125": "Ik mag hier aan uw kribbe staan", + "126": "In Bethlehems stal", + "127": "In de stad van koning David", + "128": "In den beginne was het Woord", + "129": "Komt allen tezamen", + "130": "Kom, christen, roep de lof nu uit", + "131": "Komt, verwondert u hier, mensen", + "132": "Nu zijt wellekome", + "133": "Stille nacht, heilige nacht", + "134": "Van boven daalt een engelenschaar", + "135": "'t Was nacht in Bethlehems dreven", + "136": "Wees stil en kom wat dichterbij", + "137": "Wij gaan met haast naar Bethlehem", + "138": "Wij trekken in een lange stoet", + "139": "Alles wat over ons geschreven is (2)", + "140": "Als ik in gedachten sta", + "141": "Diep, o God, voor U gebogen", + "142": "Geths\u00e9man\u00e9, die nacht moest eenmaal komen", + "143": "Hef op uw hoofden, poorten wijd", + "144": "Hij kwam bij ons, heel gewoon", + "145": "Ik wil mij gaan vertroosten", + "146": "Ik zwijg bij 't kruis in groot verdriet", + "147": "Is dat, is dat mijn Koning", + "148": "'t Is middernacht, en in de hof", + "149": "Jezus, leven van ons leven", + "150": "Jezus, om uw lijden groot", + "151": "Kom, knielen wij voor Jezus samen", + "152": "Lam Gods, dat zo onschuldig", + "153": "Leer mij, o Heer, uw lijden recht betrachten", + "154": "Middelpunt van ons verlangen", + "155": "Mijn Verlosser hangt aan 't kruis", + "156": "Noem de overtreding mij, die Gij begaan hebt", + "157": "O hoofd vol bloed en wonden", + "158": "O kostbaar kruis, o wonder Gods", + "159": "O Lam van God, door God gezonden", + "160": "O wereld, zie uw leven", + "161": "U, heilig Godslam, loven wij", + "162": "Wij danken U, voor uw verzoenend lijden", + "163": "Zoon van David, om de slagen", + "164": "Zozeer had God de wereld lief", + "165": "Christus in het graf geborgen", + "166": "Christus, onze Heer, verrees", + "167": "Daar juicht een toon, daar klinkt een stem", + "168": "De dag rijst rood in het verschiet", + "169": "De Zoon van God heeft overwonnen", + "170": "Dit is de dag die de Heer heeft gemaakt en gegeven", + "171": "Geprezen zij de Heer die eeuwig leeft", + "172": "God dank! Laat iedereen het horen", + "173": "Halleluja! Lof zij het Lam", + "174": "Hoor aan, gij die Gods kinderen zijt", + "175": "Ik zeg het allen, dat Hij leeft", + "176": "In het vroege morgenlicht", + "177": "Jezus is mijn toeverlaat", + "178": "Jezus leeft en ik met Hem!", + "179": "Laat ons van Pasen zingen", + "180": "Nu graf en steen getuigen", + "181": "Nu is het Pasen - Jezus leeft", + "182": "Nu moet gij allen vrolijk zijn", + "183": "U zij de glorie, opgestane Heer!", + "184": "Wees gegroet, o eersteling der dagen", + "185": "Al heeft Hij ons verlaten", + "186": "De kroningsdag is aangebroken", + "187": "De dag van onze Vorst brak aan", + "188": "In bidden en in smeken", + "189": "Kroon Hem met koningskroon", + "190": "Uw verlossingswerk op aarde", + "191": "Vanaf een aardse heuveltop", + "192": "Geest van hierboven", + "193": "God giet zijn heil op Pinksteren uit", + "194": "Heer, ik hoor van rijke zegen", + "195": "Heilige Geest van God", + "196": "Heilige Geest, Gij hemelhoge", + "197": "In vuur en vlam zet ons de Geest", + "198": "Ja, de Trooster is gekomen", + "199": "Kom, Heilige Geest, Gij vogel Gods", + "200": "Kom, o Geest van God gegeven", + "201": "Kom Schepper, Geest, daal tot ons neer", + "202": "O Christus, doe uw vuur ontbranden", + "203": "O Heilige Geest, o heilige God", + "204": "O, Schepper, Geest, woon in uw kerk", + "205": "Stroom, o vloed van Gods genade", + "206": "Verhef, verhef uw lofgezangen", + "207": "Wat zijn de goede vruchten", + "208": "Wij leven van de wind", + "209": "Christus regeert straks wereldwijd", + "210": "De toekomst van de Heer is daar", + "211": "Door al het lijden van de tijden", + "212": "Eens, als de bazuinen klinken", + "213": "Eens komt de grote zomer", + "214": "Eens zal op de grote morgen", + "215": "Er is een land van louter licht", + "216": "God zal het heelal bewaren", + "217": "Heer, Gij hebt dit lieve leven", + "218": "Het duurt niet lang meer tot de tijd", + "219": "Ik kom met haast, roept Jezus' stem", + "220": "Jeruzalem, o stad van heil en vrede", + "221": "Jezus, op wie ik vertrouw", + "222": "Laat komen, Heer, uw rijk", + "223": "Nu gaan de bloemen nog dood", + "224": "Overluid klinkt van de aarde", + "225": "Wij wachten op U, Zoon van God", + "226": "Zijn Gods wegen donker, duister", + "227": "Blijf bij ons, Jezus, onze Heer", + "228": "De pelgrimsstaf is in mijn hand", + "229": "De koninkrijken dezer aard", + "230": "De ware kerk des Heren", + "231": "Door de nacht van strijd en zorgen", + "232": "Door de wereld gaat een woord", + "233": "Een vaste burcht is onze God", + "234": "Een vaste burcht is onze God", + "235": "Eer wordt er in Gods gemeente", + "236": "Gezegend zijt Gij, Heer der kerk", + "237": "God is getrouw, zijn plannen falen niet", + "238": "Gij die gelooft, verheugt u samen", + "239": "In Christus is noch west noch oost", + "240": "Jezus zal heersen waar de zon", + "241": "Kom, kinderen niet dralen", + "242": "Samen in de naam van Jezus", + "243": "Schenk, o liefdevolle Vader", + "244": "Voor alle heiligen in de heerlijkheid", + "245": "Waar God de Heer zijn schreden zet", + "246": "Wij bidden voor de overheid", + "247": "Wij staan ten laatsten kamp gereed", + "248": "Zing, gij afgelegen landen", + "249": "Zoek eerst het koninkrijk van God", + "250": "Een klacht klinkt uit Gods Vaderhart", + "251": "Gij die alle sterren houdt", + "252": "Grote God, zie ons verlegen", + "253": "Iedereen zoekt U, jong of oud", + "254": "O Heer, verberg U niet voor mij", + "255": "O Jezus Christus, licht ze bij", + "256": "Ontwaak nu, wie slaapt, zo spreekt God van zijn troon", + "257": "O Vader, trek het lot U aan", + "258": "Wat zou ik zonder U geweest zijn", + "259": "Bevestig, Heer", + "260": "God maakt ons dienstbaar aan zijn werk", + "261": "Heer, die als Herder ons hoedt en ons leidt", + "262": "Heer, U hebt ons in dit leven", + "263": "Hoe lieflijk zijn de voeten van de bode", + "264": "Ik wil jou van harte dienen", + "265": "Kinderen Gods, de dag gaat lichten", + "266": "Met kinderlijk verlangen", + "267": "Neem mijn leven, laat het, Heer", + "268": "O Vader, bron van eeuwig licht", + "269": "Roep uit aan alle stranden", + "270": "Uw Woord klonk, Heer", + "271": "Wie de Heiland liefheeft", + "272": "Wij gaan vertrouwend aan uw hand", + "273": "Bewaar ons, Vader, bij uw woord", + "274": "Christus is de ware hoeksteen", + "275": "Dat uw ogen nacht en dag", + "276": "De vreugde voert ons naar dit huis", + "277": "Een rijke schat van wijsheid", + "278": "Grote God, Gij hebt het zwijgen", + "279": "Heer, spreek mij aan zodat ik hoor", + "280": "Heer, het Woord, door U gegeven", + "281": "Heer, wij zijn bijeengekomen", + "282": "Het Woord van God brengt goede vruchten voort", + "283": "Here Jezus, om uw stem te horen", + "284": "Here Jezus, om uw Woord", + "285": "Hier in uw heiligdom", + "286": "Loof God, die zegent al wat leeft", + "287": "Uw stem, Heer, hebben wij gehoord", + "288": "Wees stil voor het aangezicht van God", + "289": "Wij willen deze dag U wijden", + "290": "Woord, voor ons geschreven", + "291": "Zie ons, trouwe God en Vader", + "292": "Zolang wij ademhalen", + "293": "Dit is mijn woord: Ik ben uw God", + "294": "E\u00e9n is de Heer, de God der goden", + "295": "Gedenk, o volk, met heilig beven", + "296": "God gaf zijn volk de Tien Geboden", + "297": "O allerhoogste Majesteit", + "298": "Onze Vader in de hemel", + "299": "Onze Vader, die in de hemelen zijt (Zuiderveld)", + "300": "Onze Vader, die in de hemelen zijt (Sanderman)", + "301": "O onze Vader, trouwe Heer", + "302": "Ik geloof in God de Vader", + "303": "Ik geloof in God de Vader (van Westering)", + "304": "Ik geloof in God de Vader, groot in wijsheid", + "305": "Ik geloof dat God mijn Vader", + "306": "'k Geloof in God - Hij is de Vader", + "307": "Heer Jezus, Gij die als een kind", + "308": "Heer van uw kerk", + "309": "Here Jezus, wij zijn nu", + "310": "Het water van de grote vloed", + "311": "Loof nu God, want Hij is goed", + "312": "O God, die naar uw strenge wet", + "313": "O grote God, als Vader ons gegeven", + "314": "O Here God, - ons liefst verlangen", + "315": "Trouwe Vader, neem nu aan", + "316": "Uw trouw heeft ons, o God, altijd bewaard", + "317": "Wij komen bij het water saam", + "318": "Zie onze kinderen tot U gaan", + "319": "De tijding aller tijden", + "320": "Gij hebt uw woord gegeven", + "321": "Het is al jarenlang geleden", + "322": "Wij willen, God, uw naam belijden", + "323": "Wij willen U als Hoofd en Heer", + "324": "Alles in allen zult Gij voor ons zijn", + "325": "Gegroet, hier in ons midden", + "326": "Genadig Heer, die al mijn zwakheid weet", + "327": "Halleluja! Zing voor Jezus", + "328": "Heer, wij komen vol verlangen", + "329": "Het Heilig Avondmaal", + "330": "Hier zijn wij, Heer, bij brood en wijn", + "331": "Het brood dat ons voor ogen staat", + "332": "Kom, kom nu, want het is volbracht", + "333": "Kom, zo roept ons Jezus' stem", + "334": "O, Heer, hoe dank ik U", + "335": "Uzelf wilt ons vergaderen", + "336": "Verhoogde Heiland, trek ons hart", + "337": "Versterk de hand tot dienst aan U", + "338": "Zoals ik ben, kom ik nabij", + "339": "Als man en vrouw", + "340": "De zegen van de Heer, uw God", + "341": "God, die het eerste paar", + "342": "God heeft Adam diep doen slapen", + "343": "Gods zegen bidden wij je toe", + "344": "Lof zij de Heer, Hij noemt bij name", + "345": "Wat ons bond, God, is verbroken", + "346": "Wij bidden om uw zegen, Heer", + "347": "O God van hemel, zee en aard", + "348": "Om bloesem aan de bomen", + "349": "Wil onze dank aanvaarden", + "350": "Door goede machten trouw en stil omgeven", + "351": "Halleluja, prijs de Onbegonnen'", + "352": "Het oude jaar is nu voorbij", + "353": "O God, die droeg ons voorgeslacht", + "354": "Rust mijn ziel, uw God is Koning", + "355": "Uren, dagen, maanden, jaren", + "356": "Ga met God en Hij zal met je zijn", + "357": "Ga nu heen in vrede", + "358": "God zij met u elke dag en nacht", + "359": "Vrede zij u", + "360": "Geloof is, dat men God vertrouwt", + "361": "God heeft eens zijn woord gesproken", + "362": "Ik weet waar mijn geloven", + "363": "Niet zien en toch geloven", + "364": "Nooit kan 't geloof te veel verwachten", + "365": "Om mijn redding wil ik juichen", + "366": "Ik heb slechts \u00e9\u00e9n houvast in leven en in dood", + "367": "De wet van God toont hoe het met mij staat", + "368": "Zoals ik leef - van liefde niet vervuld", + "369": "God doet geen onrecht in zijn wet te vragen", + "370": "Groot is mijn schuld, rechtvaardig Gods besluit", + "371": "Driemaal klinkt het heilig moeten", + "372": "Adam sleepte allen mede", + "373": "God is het hart van al wat wij belijden", + "374": "Ik geloof dat God de Vader", + "375": "God is vol macht en majesteit", + "376": "Jezus, Naam zo hoog verheven", + "377": "Gezalfde, Christus, hoge Naam", + "378": "Jezus is de Eengeboren", + "379": "De Zoon van God, op aard gekomen", + "380": "Jezus heeft steeds de lijdensweg betreden", + "381": "De Zoon van God moest sterven aan het kruis", + "382": "De Zoon van God is opgestaan!", + "383": "Voor 't oog van zijn discipelschaar", + "384": "Lof zij Christus, die zijn werk", + "385": "Heilige Geest, die kwam van boven", + "386": "Uit heel de wereld, alle oorden", + "387": "Loof God, die mij, al wat ik heb misdreven", + "388": "Ik ben zo rijk, omdat ik mag geloven", + "389": "Goede werken dragen nimmer", + "390": "Loof de Heer voor zijn genade", + "391": "Ik ben gedoopt", + "392": "God sloot eens in het verleden", + "393": "Christus heeft het Zelf bevolen", + "394": "Jezus' offer is voldoende", + "395": "Het Avondmaal staat steeds gereed", + "396": "Christus sluit de hemel open", + "397": "Ook al zijn wij door genade", + "398": "Wordt een mens tot God bekeerd", + "399": "God heeft zelf het juk verbroken", + "400": "Gods wet gebiedt mij aan 't begin", + "401": "'Beeld Mij niet uit', gebiedt de Heer", + "402": "God, wiens Naam is heilig", + "403": "God heeft het zelf bevolen", + "404": "Eer uw ouders, overheden", + "405": "God eist, dat door gebaar of woord", + "406": "Getrouwd of niet", + "407": "God heeft de mens verboden om te stelen", + "408": "Wees oprecht in heel uw leven", + "409": "Nimmer mag ik iets begeren", + "410": "God vraagt een christen: spreek altijd", + "411": "Almachtig God", + "412": "Geef dat wij U recht kennen mogen", + "413": "Wil ons door Woord en Geest regeren", + "414": "O Vader, dat uw wil geschied'", + "415": "Wij bidden, trouwe Vader, geef", + "416": "U, o God, U kent ons leven", + "417": "Bewaar, o Vader, ons altijd", + "418": "Aan U behoort, o Heer der heren", + "419": "Abba, Vader, U alleen", + "420": "Ach, blijf met uw genade", + "421": "Als een hert dat verlangt naar water", + "422": "Christus, machtig zegevierend", + "423": "Dank, dank nu allen God", + "424a": "Eigen roem is uitgesloten", + "424b": "Eigen roem is uitgesloten", + "425": "Een koning hebben wij", + "426": "Eeuwig Woord, U willen wij bezingen", + "427": "Ere zij aan God, de Vader", + "428": "Er is een Verlosser", + "429": "Geef vrede, Heer, geef vrede", + "430": "God heeft het eerste woord", + "431": "God is tegenwoordig, God is in ons midden", + "432": "Groot is uw trouw, o Heer", + "433": "Grote God, wij loven U", + "434": "Halleluja, eeuwig dank en ere", + "435": "Halleluja, zing vol vreugde", + "436": "Halleluja, lof zij de Heer", + "437": "Heb dank, o God van alle leven", + "438": "Heerlijk is Uw naam", + "439": "Heer, U bent mijn leven", + "440": "Heer, wees mijn gids op heel mijn levenspad", + "441": "Heer, wijs mij uw weg", + "442": "Heilig, heilig, heilig! Heer, God almachtig", + "443": "Hoe wonderlijk mooi is uw eeuwige naam", + "444": "'t Hoofd omhoog, het hart naar boven", + "445": "Ik bouw op U", + "446": "Ik heb U lief, o mijn beminde", + "447": "Jezus, ga ons voor", + "448": "Jezus leeft in eeuwigheid", + "449": "Kom laat ons vrolijk zingen", + "450": "Laat ons de Heer lofzingen", + "451": "Leer ons uit geloof te leven", + "452": "Lof zij de Heer, de almachtige koning der ere", + "453": "Machtig God, sterke Rots", + "454": "Mijn hart wacht stil op u, o Heer", + "455": "O grote God die liefde zijt", + "456": "O, Heer mijn God, wanneer ik in verwond'ring", + "457": "O hoogt' en diepte, looft nu God", + "458": "O Jezus, hoe vertrouwd en goed", + "459": "Op bergen en in dalen", + "460": "Op U alleen, mijn licht, mijn kracht", + "461": "O Vader, uw barmhartigheden", + "462": "U bent mijn schuilplaats Heer", + "463": "U die mij geschapen hebt", + "464": "U heb ik lief, mijn God en Vader", + "465": "U is altijd mijn hart gewijd", + "466": "Al laat de zon zich niet meer zien", + "467": "Van U zijn alle dingen", + "468": "Vernieuw Gij mij, o eeuwig licht", + "469": "Voor uw liefde, Heer Jezus", + "470": "Waarom moest ik uw stem verstaan", + "471": "Wat de toekomst brengen moge", + "472": "Wat God doet, dat is welgedaan", + "473": "Wat mijn God wil, geschiede altijd", + "474": "Wie is als God, de hoogste Heer", + "475": "Wie is een God, aan U gelijk", + "476": "Wij loven U, o God, belijden U als Heer", + "477": "Zegen ons, Algoede", + "478": "Zing nu de Heer, stem allen in", + "479": "Zing volop Gods lof", + "480": "Zing voor de Heer een nieuw gezang", + "481": "Zou ik niet van harte zingen", + "482": "Ach, wat moet ik toch beginnen", + "483": "De zonden zijn vergeven", + "484": "Gena van God, hoe loof ik u", + "485": "God enkel licht", + "486": "'k Heb geloofd en daarom zing ik", + "487": "Heer, ik kom tot U, hoor naar mijn gebed", + "488": "Heer, mijn hart is boos en schuldig", + "489": "Ik heb de vaste grond gevonden", + "490": "Jezus neemt de zondaars aan", + "491": "Koester nimmer de gedachte", + "492": "Lam van God, Lam van God", + "493": "O Heer die onze Vader zijt", + "494": "Rots waaruit het leven welt", + "495": "Schuldig staan wij voor U, Heer", + "496": "U hebt mijn tegenstand gebroken", + "497": "Vader, vol van vrees en schaamte", + "498": "Zie naar omhoog, zie op naar boven", + "499": "Al verlaten mij mijn ouders", + "500": "Bescherming is er bij de Heer", + "501": "Beveel gerust uw wegen", + "502": "Blijf mij nabij, wanneer het avond is", + "503": "Blijf mij nabij, wanneer het duister daalt", + "504": "Droog met uw wind mijn tranen", + "505": "Ga niet alleen door 't leven", + "506": "In tijden van nood, van tranen en rouw", + "507": "Kom maar, mijn kind, hier mag je schuilen", + "508": "Mijn God, ik weet, dat ik zal sterven", + "509": "Mijn ogen zijn gevestigd", + "510": "O eeuwige Vader, sterk in macht", + "511": "O, God die steeds uw hulp ons bood", + "512": "Ons leven, Heer, is in uw hand", + "513": "Soms groet een licht van vreugde", + "514": "Nader, mijn God, bij U", + "515": "Wie maar de goede God laat zorgen", + "516": "Zalig, die in Christus sterven", + "517": "O grote Christus, eeuwig licht", + "518": "Blijf bij ons, Heer, wanneer de nacht zal komen", + "519": "De dag, door uwe gunst ontvangen", + "520": "Barmhartig Vader op uw troon", + "521": "O Heer mijn God, ook deze nacht", + "522": "Ontwaak, o mens, de dag breekt aan", + "523": "Stilte over alle landen", + "524": "Verzonken is het licht der zon", + "525": "'k Wil U, o God, mijn dank betalen", + "526": "God schiep het daglicht vol van pracht", + "527": "In het begin lag de aarde verloren", + "528": "Het water steeg wel hoog", + "529": "Abraham is heel bedroefd", + "530": "Een ladder naar de sterren", + "531": "Jozef zoekt zijn grote broers", + "532": "Klein, klein kindje", + "533": "Met Mozes zijn wij meegegaan", + "534": "Zie je daar die mensen lopen", + "535": "Jericho is in uw hand", + "536": "Gideon, een dapper man", + "537": "Ruth blijft niet in Moab wonen", + "538": "Samuel hoort 's nachts een stem", + "539": "De grote mensen durven niet", + "540": "Achab buigt voor Ba\u00e4l neer", + "541": "Het volk heeft God vergeten", + "542": "Zie je die kapotte muur?", + "543": "Job raakt alles, alles kwijt", + "544": "De herder is er elke dag", + "545": "De koning maakt een gouden beeld", + "546": "Jona heeft God wel verstaan", + "547": "Jezus, diep in de woestijn", + "548": "Ik zie veel mensen staan", + "549": "Tot zeven maal zeventig maal", + "550": "Ruk nu takken van de bomen", + "551": "Meisjes dwaas, meisjes wijs", + "552": "Toen ik naar mijn naaste zocht", + "553": "De golven, wild en groot", + "554": "Kleine dochter van Ja\u00efrus", + "555": "Laat de kinderen tot Mij komen", + "556": "Een blinde man zit aan de weg", + "557": "Jezus komt in Martha's huis", + "558": "Maak de maaltijd klaar", + "559": "De herder heeft zich niet vergist", + "560": "Een vader had twee zonen", + "561": "Kijk, daar zijn tien zieke mannen", + "562": "Er is geen plaats", + "563": "In Kana is het feest vandaag", + "564": "Alzo lief had God de wereld", + "565": "Er was een man die niet genas", + "566": "Als goede Herder kent de Heer", + "567": "Vissers op het meer", + "568": "Een zwarte man uit Afrika", + "569": "Saulus wil de mensen op gaan sporen", + "570": "De allergrootste Koning", + "571": "De wijzen, de wijzen", + "572": "Een Koning is geboren", + "573": "Er is een Kindeke geboren op aard", + "574": "Herder in het wijde veld", + "575": "Hoor de klokken in de toren", + "576": "Toen herders waakten, stil terneer", + "577": "Zeg eens herder, waar kom jij vandaan", + "578": "Er kraait geen haan, er kraait geen haan", + "579": "Ik zing van de heuvel die Golgotha heet", + "580": "Jezus heeft als joodse jongen", + "581": "De Heer is waarlijk opgestaan", + "582": "Kijk, Maria Magdalena", + "583": "Maria, waarom huil je", + "584": "Jezus zei eens tot zijn vrienden", + "585": "Na veertig blijde dagen", + "586": "'t Is feest vandaag, 't is pinksterfeest", + "587": "Na de dag van Hemelvaart", + "588": "Tekenen van vuur en wind", + "589": "God heeft Jezus opgenomen", + "590": "Zing mee van Jezus, onze Heer", + "591": "Weet je wat de Heer nu van ons verwacht?", + "592": "Here Jezus, in uw naam", + "593": "Heer, zie ons aan", + "594": "Ken je Gods gebod: woorden \u00e9\u00e9n tot tien?", + "595": "'s Zondags gaan we naar de kerk", + "596": "Als je bidt zal Hij je geven", + "597": "Dank U, Here, voor de zegen", + "598": "Dank, trouwe Heer", + "599": "Dank U voor deze nieuwe morgen", + "600": "God de Here is almachtig", + "601": "God de Here is de Schepper", + "602": "Ik buig nu heel eerbiedig", + "603": "O hemelhoge Vader, geef", + "604": "Vader, dank U wel", + "605": "Als je geen liefde hebt voor elkaar", + "606": "Elke dag, aan ons gegeven", + "607": "God, die alles maakte", + "608": "'k Heb Jezus nodig", + "609": "Hoger dan de blauwe luchten", + "610": "Ik heb je bij je naam geroepen", + "611": "Je hoeft niet bang te zijn", + "612": "Jezus is de goede Herder", + "613": "Kom tot Jezus", + "614": "'Sta eens op', zegt Jezus", + "615": "'k Stel mijn vertrouwen", + "616": "Uw Woord is een lamp voor mijn voet", + "617": "Zie de zon, zie de maan", + "618": "Zoals klei in de hand van de pottenbakker" +} \ No newline at end of file diff --git a/Songnames.cs b/Songnames.cs new file mode 100644 index 0000000..ad43b66 --- /dev/null +++ b/Songnames.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Reflection; +using System.Text.Json; +using System.IO; + +namespace PPTXcreator +{ + public static class Songnames + { + public static Dictionary Names; + + /// + /// Load the song names from the embedded file to + /// + public static void LoadNames() + { + // Get a stream of the embedded file + Assembly assembly = Assembly.GetExecutingAssembly(); + using (Stream filestream = assembly.GetManifestResourceStream("PPTXcreator.Resources.liednamen")) + { + // Get the dictionary from the JSON formatted file and save it to Songnames.Names + JsonDocument songnames = JsonDocument.Parse(filestream); + Names = songnames.RootElement.Deserialize>(); + } + } + + /// + /// Return the value of [], or null if not found + /// + public static string GetName(string songnumber) + { + if (Names is null) return null; + try + { + return Names[songnumber]; + } + catch (KeyNotFoundException) + { + return null; + } + } + } +} diff --git a/UpdateChecker.cs b/UpdateChecker.cs index 8b796d3..04bd47e 100644 --- a/UpdateChecker.cs +++ b/UpdateChecker.cs @@ -6,7 +6,7 @@ namespace PPTXcreator { - static class UpdateChecker + public static class UpdateChecker { public static async Task CheckReleases() { diff --git a/Window.Designer.cs b/Window.Designer.cs index aadc41b..310a7db 100644 --- a/Window.Designer.cs +++ b/Window.Designer.cs @@ -1103,6 +1103,7 @@ private void InitializeComponent() this.dataGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True; this.dataGridView.Size = new System.Drawing.Size(490, 208); this.dataGridView.TabIndex = 2; + this.dataGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.AutofillDatagridview); // // ContentType // @@ -1161,7 +1162,7 @@ private void InitializeComponent() this.labelVersion.RightToLeft = System.Windows.Forms.RightToLeft.No; this.labelVersion.Size = new System.Drawing.Size(90, 17); this.labelVersion.TabIndex = 25; - this.labelVersion.Text = "versie 1.2.0"; + this.labelVersion.Text = "versie 1.3.0"; this.labelVersion.TextAlign = System.Drawing.ContentAlignment.TopRight; // // Window diff --git a/Window.cs b/Window.cs index 311362e..f59dd64 100644 --- a/Window.cs +++ b/Window.cs @@ -43,7 +43,7 @@ public Window() } /// - /// Selects a file and sets this.textBoxQRPath.Text and + /// Select a file and sets this.textBoxQRPath.Text and /// QRFile to the path /// private void ButtonSelectQR(object sender, EventArgs e) @@ -57,7 +57,7 @@ private void ButtonSelectQR(object sender, EventArgs e) } /// - /// Selects a directory and sets .Text + /// Select a directory and sets .Text /// and to the path /// private void ButtonSelectOutputFolder(object sender, EventArgs e) @@ -70,6 +70,10 @@ private void ButtonSelectOutputFolder(object sender, EventArgs e) } } + /// + /// Select a template file for the first presentation + /// and sets + /// private void ButtonSelectTemplateBefore(object sender, EventArgs e) { string path = Dialogs.SelectFile( @@ -83,6 +87,10 @@ private void ButtonSelectTemplateBefore(object sender, EventArgs e) } } + /// + /// Select a template file for the second presentation + /// and sets + /// private void ButtonSelectTemplateDuring(object sender, EventArgs e) { string path = Dialogs.SelectFile( @@ -96,6 +104,10 @@ private void ButtonSelectTemplateDuring(object sender, EventArgs e) } } + /// + /// Select a template file for the third presentation + /// and sets + /// private void ButtonSelectTemplateAfter(object sender, EventArgs e) { string path = Dialogs.SelectFile( @@ -109,6 +121,10 @@ private void ButtonSelectTemplateAfter(object sender, EventArgs e) } } + /// + /// Select the json file for autofilling fields + /// and sets + /// private void ButtonSelectJsonServices(object sender, EventArgs e) { string path = Dialogs.SelectFile( @@ -124,6 +140,9 @@ private void ButtonSelectJsonServices(object sender, EventArgs e) } } + /// + /// Get the previous service date and updates the datetime picker + /// private void ButtonPreviousDatetime(object sender, EventArgs e) { DateTime dateTime = Service.GetPreviousDatetime(dateTimePickerCurrent.Value); @@ -131,6 +150,9 @@ private void ButtonPreviousDatetime(object sender, EventArgs e) dateTimePickerCurrent.Value = dateTime; } + /// + /// Get the next service date and updates the datetime picker + /// private void ButtonNextDatetime(object sender, EventArgs e) { DateTime dateTime = Service.GetNextDatetime(dateTimePickerCurrent.Value); @@ -138,6 +160,10 @@ private void ButtonNextDatetime(object sender, EventArgs e) dateTimePickerCurrent.Value = dateTime; } + /// + /// Autofill fields for the current and next service + /// if is true + /// private void DateTimePickerCurrentChanged(object sender, EventArgs e) { if (Settings.Instance.EnableAutoPopulate) @@ -147,12 +173,19 @@ private void DateTimePickerCurrentChanged(object sender, EventArgs e) } } + /// + /// Autofill fields for the next service + /// if is true + /// private void DateTimePickerNextChanged(object sender, EventArgs e) { if (Settings.Instance.EnableAutoPopulate) SetFormDataNext(Service.GetCurrent(dateTimePickerNext.Value)); } + /// + /// Autofill fields for the current and next service + /// private void SetFormDataCurrent(Service service) { textBoxVoorgangerNuTitel.Text = service.Pastor.Title; @@ -166,6 +199,9 @@ private void SetFormDataCurrent(Service service) textBoxOrganist.Text = service.Organist; } + /// + /// Autofill fields for the next service + /// private void SetFormDataNext(Service nextService) { if (nextService.Datetime != DateTime.MinValue) @@ -178,6 +214,10 @@ private void SetFormDataNext(Service nextService) textBoxVoorgangerNextPlaats.Text = nextService.Pastor.Place; } + /// + /// Retrieve form information and return it as a dictionary of strings, where every key is + /// a placeholder string in a template and its value the value it should be replaced by + /// public Dictionary GetFormKeywords() { KeywordSettings tags = Settings.Instance.Keywords; @@ -200,17 +240,26 @@ public Dictionary GetFormKeywords() return keywords; } + /// + /// Make the first character in a string uppercase + /// private static string TitleCase(string input) { if (string.IsNullOrEmpty(input)) return input; return char.ToUpper(input[0]) + input.Substring(1); } + /// + /// Convert a DateTimePicker to a H:mm string (24-hour time without leading zero) + /// private static string GetTime(DateTimePicker dateTimePicker) { return dateTimePicker.Value.ToString("H:mm", CultureInfo.InvariantCulture); } + /// + /// Convert a DateTimePicker to a date in the long notation without year, e.g. '30 februari' + /// private static string GetDateLong(DateTimePicker dateTimePicker) { // Dictionary to avoid not having the nl-NL resource when using System.Globalization @@ -223,11 +272,17 @@ private static string GetDateLong(DateTimePicker dateTimePicker) return $"{dateTimePicker.Value.Day} {monthNames[dateTimePicker.Value.Month]}"; } + /// + /// Add a row to the datagridview + /// private void ButtonAddDatagridviewRow(object sender, EventArgs e) { dataGridView.Rows.Add(); } + /// + /// Remove the selected row(s) from the datagridview + /// private void ButtonRemoveDatagridviewRow(object sender, EventArgs e) { if (dataGridView.SelectedRows.Count == 1) @@ -256,6 +311,9 @@ private void ButtonRemoveDatagridviewRow(object sender, EventArgs e) } } + /// + /// Decrement the current DataGridViewRow's index + /// private void ButtonMoveUpDatagridviewRow(object sender, EventArgs e) { if (dataGridView.CurrentRow is null) return; @@ -272,6 +330,9 @@ private void ButtonMoveUpDatagridviewRow(object sender, EventArgs e) UpdateDatagridviewSelection(index - 1); } + /// + /// Increment the current DataGridViewRow's index + /// private void ButtonMoveDownDatagridviewRow(object sender, EventArgs e) { if (dataGridView.CurrentRow is null) return; @@ -288,6 +349,9 @@ private void ButtonMoveDownDatagridviewRow(object sender, EventArgs e) UpdateDatagridviewSelection(index + 1); } + /// + /// Set the CurrentRow of the datagridview to the one at index + /// private void UpdateDatagridviewSelection(int index) { dataGridView.ClearSelection(); @@ -295,9 +359,67 @@ private void UpdateDatagridviewSelection(int index) dataGridView.CurrentCell = dataGridView.Rows[index].Cells[0]; } - private void ButtonGotoSettingsTab(object sender, EventArgs e) + /// + /// Color cells of a DataGridViewRow based on the type of service + /// + /// + /// + private void UpdateDatagridviewRowStyle(DataGridViewRow currentrow, string serviceElementType) { - tabControl.SelectTab("tabInstellingen"); + DataGridViewCellStyle disabledStyle = dataGridView.DefaultCellStyle.Clone(); + disabledStyle.BackColor = Color.LightGray; + + switch (serviceElementType) + { + case null: + return; + case "Lezing": + case "Psalm": + case "Psalm (WK)": + currentrow.Cells[1].Style = dataGridView.DefaultCellStyle; + currentrow.Cells[2].Style = disabledStyle; + return; + case "Lied (Overig)": + currentrow.Cells[1].Style = disabledStyle; + currentrow.Cells[2].Style = dataGridView.DefaultCellStyle; + return; + case "Lied (WK)": + case "Lied (OTH)": + default: + currentrow.Cells[1].Style = dataGridView.DefaultCellStyle; + currentrow.Cells[2].Style = dataGridView.DefaultCellStyle; + return; + } + } + + /// + /// Autofill the song's name if applicable and call + /// + private void AutofillDatagridview(object sender, DataGridViewCellEventArgs e) + { + // Prevent annoying NRE's + DataGridViewRow currentrow; + string serviceElementType; + try + { + currentrow = dataGridView.CurrentRow; + serviceElementType = (string)currentrow.Cells[0].Value; + } + catch (NullReferenceException) + { + return; + } + + // Show which fields have to be filled in + UpdateDatagridviewRowStyle(currentrow, serviceElementType); + + // Get the song number, convert it to a name and fill it in in the form + if (serviceElementType != "Lied (WK)") return; + string songnumber = ((string)dataGridView.CurrentCell.Value).Split(':')[0].Trim(); + string songname = Songnames.GetName(songnumber); + if (songname is null) return; + + currentrow.Cells[2].Value = songname; } /// @@ -312,6 +434,11 @@ private void PreventBlackDropdown(object sender, EventArgs e) } } + private void ButtonGotoSettingsTab(object sender, EventArgs e) + { + tabControl.SelectTab("tabInstellingen"); + } + private void ButtonNextTab(object sender, EventArgs e) { int index = tabControl.SelectedIndex; @@ -532,6 +659,10 @@ private static PowerPoint CreatePowerpoint(string templatePath, string outputPat return null; } + /// + /// Convert to a yyyy-MM-dd string + /// and prefix what part of the day it is + /// private static string GetFilenamePart(DateTimePicker dateTimePicker) { string output = ""; @@ -543,6 +674,11 @@ private static string GetFilenamePart(DateTimePicker dateTimePicker) return output; } + /// + /// Check if the crop region is valid and save it to the imageparameters + /// + /// + /// private void CropRegionChanged(object sender, EventArgs e) { if (numericXMinQR.Value >= numericXMaxQR.Value) diff --git a/Window.resx b/Window.resx index 968f1ac..dfedb9a 100644 --- a/Window.resx +++ b/Window.resx @@ -177,9 +177,6 @@ False - - False - False @@ -195,24 +192,12 @@ False - - False - - - False - - - False - False False - - False - False @@ -225,13 +210,4 @@ True - - True - - - True - - - True - \ No newline at end of file