Startseite › Foren › Deutsches LiveCode-Forum › Bleibender Dark Mode
- Dieses Thema hat 20 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren, 5 Monaten von Klaus Major.
-
AutorBeiträge
-
-
März 23, 2020 um 13:58 Uhr #19774
Hallo,
ich habe in meiner App einen Dark und einen Light Mode.
Bis jetzt ist es allerdings so, dass man immer beim starten der App den Schalter erneut umlegen muss, damit der Dark mode aktiviert wird. Wie kann ich es machen, dass sich die App merkt, ob sie beim letzten Schließen im Dark- oder Light mode war? -
März 23, 2020 um 15:16 Uhr #19778
Das hatten wir doch schon einmal in ähnlicher Form hier:
https://www.livecode-blog.de/forums/topic/beim-ersten-starten/
Diese Lösung gilt auch für Dein aktuelle Problem! -
März 23, 2020 um 16:14 Uhr #19782
Ich habe es auch so versucht, bei mir ist das raus gekommen:
Skript im Schalter:if the highlight of me then put specialfolderpath("documents") & "/dark_mode" into darkmode put "dark" into url("file:" & darkmode) else put specialfolderpath("documents") & "/dark_mode" into darkmode put "light" into url("file:" & darkmode) end if
Skript im Stack:
on startup pMode if darkmode = "dark" then set the highlight of widget "dark" to "true" end if if darkmode = "light" then set the highlight of widget "dark" to "false" end if end startup
Das funktioniert aber nicht.
-
März 23, 2020 um 16:51 Uhr #19783
Du musst die Datei aber auch irgendwann mal wieder einlesen und darauf reagieren!
Das ist doch wirklich kaum etwas anderes als bei Deinen vorherigen Fragen!?Hinweis:
Das kann auch nciht funktionieren!
“startup” ist tatsächlich ein reserviertes Wort in LC, sieht man auch im Skript Editor, das Wort wird eingefärbt!Diese Nachricht “on startup” wird aber nur beim Starten der späteren RUNTIME gesendet, in der IDE aber nicht.
Ausserdem hat STARTUP keinen Parameter, und schon gar nicht Deine gespeicherte Variable, wo soll die denn herkommen?
Und Du solltest Deine Variable darkmode als GLOBAL definieren, damit von überall darauf zugegriffen werden kann!
Mach es so:
... ## Einmal reicht, Tipparbeit sparen!: put specialfolderpath("documents") & "/dark_mode" into tDatei if the highlight of me then put "dark" into darkmode else put "light" into darkmode end if ## Jetzt erst wegschreiben: put darkmode into url("file:" & tDatei) ...
Dann im Stackskript:
global darkmode on OPENSTACK ## Zuerst die Datei einlesen put specialfolderpath("documents") & "/dark_mode" into tFile ## Noch keine Datei vorhanden -> auf DEFAULT setzen: if there is not a file tFile then put "Dein Defaultwert für Darkmode hier" into derModus else put url ("file:" & tFile) into derModus end if ## Weiterer Trick, da LC zuerst alles in Klammern auflöst: set the highlight of widget "dark" to (darkmode = "dark") ## Bitte mal auf der zunge zergehen lassen. ## Diese Logik ist essentiell fürs Programmieren! ## Siehe oben, Mr. Boole und seine Logik ist unser Freund! ##if darkmode = "dark" then ## set the highlight of widget "dark" to "true" ##else ## set the highlight of widget "dark" to "false" ##end if end openstack
Und jetzt bitte mit dem alten Thread vergleichen und sehen, daß es hier im Prinzip keinen Unterschied gibt! Und das dann bitte auch für die Zukunft verstehen und merken! 😎
Gruß
Klaus
-
März 30, 2020 um 13:40 Uhr #19899
Hallo, danke für die schnelle Antwort. Ich habe es so versucht.
Leider hat es nicht funktioniert. Ich habe verschiedene Änderungen am Code vorgenommen, wie z.B.
on preOpenstack
statton openstack
verwendet. Ich habe auch den Code statt in den Stack in die Card getan, es hat aber immer noch nicht funktioniert.Woran könnte das liegen?
Vielen dank, Arthur.
-
März 30, 2020 um 13:47 Uhr #19900
Bitte den Code posten, ich kann nicht hellsehen! 😎
-
März 30, 2020 um 13:52 Uhr #19902
Stack:
global darkmode on openstack ## Zuerst die Datei einlesen put specialfolderpath("documents") & "/dark_mode" into tFile ## Noch keine Datei vorhanden -> auf DEFAULT setzen: if there is not a file tFile then put "false" into derModus else put url ("file:" & tFile) into derModus end if ## Weiterer Trick, da LC zuerst alles in Klammern auflöst: set the highlight of widget "dark" to (darkmode = "dark") ## Bitte mal auf der zunge zergehen lassen. ## Diese Logik ist essentiell fürs Programmieren! ## Siehe oben, Mr. Boole und seine Logik ist unser Freund! ##if darkmode = "dark" then ## set the highlight of widget "dark" to "true" ##else ## set the highlight of widget "dark" to "false" ##end if end openstack
Schalter:
on hiliteChanged if the highlight of me then set the backgroundColor of card "VP App" to "#000000" set the backgroundColor of field "Field" to "#000000" set the foregroundColor of field "Field" to "#ffffff" set the backgroundColor of field "infos" to "#000000" set the foregroundColor of field "infos" to "#ffffff" else set the backgroundColor of card "VP App" to "#ffffff" set the backgroundColor of field "Field" to "#ffffff" set the foregroundColor of field "Field" to "#000000" set the backgroundColor of field "infos" to "#ffffff" set the foregroundColor of field "infos" to "#000000" end if ## Einmal reicht, Tipparbeit sparen!: put specialfolderpath("documents") & "/dark_mode" into tDatei if the highlight of me then put "dark" into darkmode else put "light" into darkmode end if ## Jetzt erst wegschreiben: put darkmode into url("file:" & tDatei) end hiliteChanged
-
-
März 30, 2020 um 14:12 Uhr #19903
Hm, falls Dein Widget nicht auf der ersten Karte liegt, solltest Du das
im Stackskript genauer beschreiben:... set the hilite of widget "dark" OF CD X to (darkmode = "dark") ...
Der Code an sich ist völlig korrekt!
Hinweis:
Ein Brite wird sicherlich bei der Schreibweise “hilite” schaudern,
aber LC hat amerikanische Wurzeln, daher ist das erlaubt (und auch
wieder weniger zu tippen). 🙂 -
März 30, 2020 um 14:14 Uhr #19905
OHA! Sorry, mein Fehler, habe das gerade erst gesehen:
... if there is not a file tFile then put "false" into derModus else put url ("file:" & tFile) into derModus end if ## Weiterer Trick, da LC zuerst alles in Klammern auflöst: ## set the hilite of widget "dark" to (darkmode = "dark") ## Die verwendete Variable heisst aber derModus! ## So ist es korrekt: set the hilite of widget "dark" to (derModus = "dark") ...
Getestet und funktioniert! 🙂
-
März 30, 2020 um 16:33 Uhr #19912
Vielen, vielen Dank für ihre Hilfe!
Es funktioniert jetzt, dass der Schalter an der richtigen Position ist.
Allerdings wir dadurch, warum auch immer die Hintergrundfarbe nicht geändert.
Wenn ich ihn manuell umschalte aber schon.
Warum?
Was kann ich tun?Vielen Dank, Arthur
-
-
März 30, 2020 um 16:37 Uhr #19913
Ach ja, das ändert erst einmal nur das Aussehen.
Du kannst das Widget aber dazu zwingen, sein Skript abzuarbeiten mit:... set the hilite of widget "dark" to (derModus = "dark") send "hilitechanged" to widget "dark" ...
Das ist wie selber dran gezupft! 😀
-
März 30, 2020 um 17:22 Uhr #19915
Vielen Dank, endlich funktionierts!
-
Mai 4, 2020 um 10:59 Uhr #20553
Hallo, ich melde mich noch mal.
Da es in LC 9.6 DP 4 eine Erkennung des System Dark Modes gibt, habe ich jetzt ein Menue mit 3 Radio Buttons erstellt und sie in eine Gruppe gesteckt. Dann habe ich den Code aus dem Schalter in die jeweiligen Radio buttons gesteckt und Jeweils nochput "dark" into darkmode
oderput "light" into darkmode
undput darkmode into url("file:" & tDatei)
wie du es mir schon gesagt hast. So funktioniert es aber trotzdem nicht mehr, dass der eingestellte Modus beim oeffnen immer noch der gleiche ist wie beim schließen.
Wie kann ich das machen?
-
-
Mai 4, 2020 um 13:09 Uhr #20557
Bitte zeig Deine Skripte!
Das lief doch alles schon…-
Mai 4, 2020 um 13:20 Uhr #20559
Stack: `on openstack
## Zuerst die Datei einlesen
put specialfolderpath(“documents”) & “/dark_mode” into tFile## Noch keine Datei vorhanden -> auf DEFAULT setzen:
if there is not a file tFile then
put “false” into derModus
else
put url (“file:” & tFile) into derModus
end if## Weiterer Trick, da LC zuerst alles in Klammern auflöst:
set the hilite of widget “dark” to (derModus = “dark”)
send “hilitechanged” to widget “dark”
## Bitte mal auf der zunge zergehen lassen.
## Diese Logik ist essentiell fürs Programmieren!## Siehe oben, Mr. Boole und seine Logik ist unser Freund!
##if darkmode = “dark” then
## set the highlight of widget “dark” to “true”
##else
## set the highlight of widget “dark” to “false”
##end if
#Danke an Klaus Major!
end openstack`
Radio Button “Dunkel”:global state global darkmode on mouseUp pButtonNumber set the backgroundColor of card "VP App" of stack "VP App" to "#000000" set the backgroundColor of field "Überschrift" of stack "VP App" to "#000000" set the foregroundColor of field "Überschrift" of stack "VP App" to "#ffffff" set the backgroundColor of field "infos" of stack "VP App" to "#000000" set the foregroundColor of field "infos" of stack "VP App" to "#ffffff" set the backColor of widget "Navigation Bar" of stack "VP App" to "Gray50" set the foreColor of widget "Navigation Bar" of stack "VP App" to "#D3D3D3" set the hiliteColor of widget "Navigation Bar" of stack "VP App" to "white" put "dark" into darkmode put "dark" into state put darkmode into url("file:" & tDatei) end mouseUp
Radio Button “Hell”:
global state global darkmode on mouseUp pButtonNumber set the backgroundColor of card "VP App" of stack "VP App" to "#ffffff" set the backgroundColor of field "Überschrift" of stack "VP App" to "#ffffff" set the foregroundColor of field "Überschrift" of stack "VP App" to "#000000" set the backgroundColor of field "infos" of stack "VP App" to "#ffffff" set the foregroundColor of field "infos" of stack "VP App" to "#000000" set the backColor of widget "Navigation Bar" of stack "VP App" to "black" set the foreColor of widget "Navigation Bar" of stack "VP App" to "white" set the hiliteColor of widget "Navigation Bar" of stack "VP App" to "blue" put "light" into darkmode put "light" into state put darkmode into url("file:" & tDatei) end mouseUp
Ich weiß, das hatten wir schon mal, ich kriege es aber trotzdem nicht hin.
-
-
Mai 4, 2020 um 13:23 Uhr #20560
Stack:
global darkmode on openstack ## Zuerst die Datei einlesen put specialfolderpath("documents") & "/dark_mode" into tFile ## Noch keine Datei vorhanden -> auf DEFAULT setzen: if there is not a file tFile then put "false" into derModus else put url ("file:" & tFile) into derModus end if ## Weiterer Trick, da LC zuerst alles in Klammern auflöst: set the hilite of widget "dark" to (derModus = "dark") send "hilitechanged" to widget "dark" ## Bitte mal auf der zunge zergehen lassen. ## Diese Logik ist essentiell fürs Programmieren! ## Siehe oben, Mr. Boole und seine Logik ist unser Freund! ##if darkmode = "dark" then ## set the highlight of widget "dark" to "true" ##else ## set the highlight of widget "dark" to "false" ##end if #Danke an Klaus Major! end openstack on openstack set the hilite of widget "dark" to "false" send "hilitechanged" to widget "dark" wait 2 seconds if state = "dark" then hide image "uzw" show image "unterrichtszeiten" else hide image "unterrichtszeiten" show image "uzw" end if end openstack
Radio button “Dunkel”:
global state global darkmode on mouseUp pButtonNumber set the backgroundColor of card "VP App" of stack "VP App" to "#000000" set the backgroundColor of field "Überschrift" of stack "VP App" to "#000000" set the foregroundColor of field "Überschrift" of stack "VP App" to "#ffffff" set the backgroundColor of field "infos" of stack "VP App" to "#000000" set the foregroundColor of field "infos" of stack "VP App" to "#ffffff" set the backColor of widget "Navigation Bar" of stack "VP App" to "Gray50" set the foreColor of widget "Navigation Bar" of stack "VP App" to "#D3D3D3" set the hiliteColor of widget "Navigation Bar" of stack "VP App" to "white" put "dark" into darkmode put "dark" into state put darkmode into url("file:" & tDatei) end mouseUp
Radio button “Hell”:
global state global darkmode on mouseUp pButtonNumber set the backgroundColor of card "VP App" of stack "VP App" to "#ffffff" set the backgroundColor of field "Überschrift" of stack "VP App" to "#ffffff" set the foregroundColor of field "Überschrift" of stack "VP App" to "#000000" set the backgroundColor of field "infos" of stack "VP App" to "#ffffff" set the foregroundColor of field "infos" of stack "VP App" to "#000000" set the backColor of widget "Navigation Bar" of stack "VP App" to "black" set the foreColor of widget "Navigation Bar" of stack "VP App" to "white" set the hiliteColor of widget "Navigation Bar" of stack "VP App" to "blue" put "light" into darkmode put "light" into state put darkmode into url("file:" & tDatei) end mouseUp
-
Mai 4, 2020 um 13:35 Uhr #20561
Hallo Arthur,
Du hast 2 (ZWEI) openstack Handler!?
In einem solchen Fall nimmt LC immer nur den ERSTEN Handler eines Names,
der zweite wird also nicht abgearbeitet! 😎Der zweite setzt aber auch noch einmal das HILITE des Widgets und sendet “hilitechanged”!
Sicher, daß sich das nicht gegeneinander aufheben wird?Da musst Du nochmal ran!
Gruß
Klaus
-
Mai 4, 2020 um 13:53 Uhr #20563
Noch was:
... put "dark" into darkmode put "dark" into state ... put "light" into darkmode put "light" into state ...
Denkst Du nicht, daß EINE Variable ausreicht, um sich den aktuellen “darkmode” zu merken?
-
Mai 5, 2020 um 10:16 Uhr #20594
Danke, ich habe es jetzt hinbekommen. Jetzt habe ich aber das Problem, dass ich ein Bild auf der Startseite habe, dass im Dark Mode erscheint und eins, dass im Light Mode erscheint und ein Textfeld, dass im Dark Mode schwarzen Hintergrund und weiße Schrift hat und anders herum. Ich habe auch schon folgende line hinzugefügt:
if derModus = "true" then send mouseUp to button "Dunkel" <strong> set the backgroundColor of field "Time" of stack "VP App" to "#000000" set the foregroundColor of field "Time" of stack "VP App" to "#ffffff" hide image "uzw" show image "unterrichtszeiten"</strong> else send mouseUp to button "Hell" <strong> set the backgroundColor of field "Time" of stack "VP App" to "#ffffff" set the foregroundColor of field "Time" of stack "VP App" to "#000000" hide image "unterrichtszeiten" show image "uzw"</strong> end if
Es funktioniert aber trotzdem nicht. Obwohl es im openstack Handler ist. Woran liegt das?
-
Mai 5, 2020 um 13:57 Uhr #20596
Deine Variablen heissen darkmode und state.
Aber nicht dermodus, das hatten wir hier oben schon einmal!Und wie Du siehst, funktionieren Formatierungen wie FET, KURSIV etc. nicht in eingefügten Skripten.
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.