Seite 21 von 29
Re: DialogDesign0R V1.64
Verfasst: 31.12.2020 13:35
von ccode_new
mk-soft hat geschrieben:
Die Änderung von ccode_new mit Rückgabe von einem Leerstring ist natürlich Blödsinn (Sorry ccode_new)
Das war auch nicht der eigentliche Sinn.
Der Sinn war
eine anpassbare Funktion für die Pfadangaben zu haben und keine fixe Ausgabe von:
GetPathPart(ProgramFilename())
Wie der Name dieser "Pfadanpassungsfunktion" heißt ist mir eigentlich Latte.
In diesen Fall kling aber "GetProgramPath()" ganz brauchbar.
Für Debugging ist eine leere Zeichenkette aber unter MacOS funktionsfähig.
Das eigentliche Problem war aber das:
[ERROR] *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]
BUG:
Unter MacOS darf der Font-Name nicht "" sein.
...weil dadurch ständig das Programm abstürzte und man keine Eingaben in Textfelder vollführen konnte.
Re: DialogDesign0R V1.64
Verfasst: 31.12.2020 13:58
von mk-soft
Mit leeren Font Name funktioniert es, oder ich habe deine Aussage nicht verstanden.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 222, 130, "SetGadgetFont", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
;If LoadFont(0, "Arial", 16)
If LoadFont(0, "", 16)
SetGadgetFont(#PB_Default, FontID(0)) ; geladenen Arial 16 Zeichensatz als neuen Standard festlegen
EndIf
ButtonGadget(0, 10, 10, 200, 30, "Button - Arial 16")
SetGadgetFont(#PB_Default, #PB_Default) ; Zeichensatzeinstellungen auf den originalen Standard zurücksetzen
ButtonGadget(1, 10, 50, 200, 30, "Button - standard")
If LoadFont(1,"Courier",10, #PB_Font_Bold | #PB_Font_Underline)
SetGadgetFont(#PB_Default, FontID(1)) ; geladenen Courier 10 Zeichensatz als neuen Standard festlegen
EndIf
TextGadget(2, 10, 90, 200, 40, "Bold + underlined Courier 10 Text", #PB_Text_Center)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
P.S. Underline funktioniert nicht (Bug)
Re: DialogDesign0R V1.64
Verfasst: 31.12.2020 14:06
von ccode_new
mk-soft hat geschrieben:Mit leeren Font Name funktioniert es, oder ich habe deine Aussage nicht verstanden.
Ja, ich verstehe meine Aussage eigentlich auch nicht so richtig.
Dein Beispiel funktioniert.
Ich fasse es noch mal zusammen und deklariere es als
BUG.
Wenn ich bei:
\MainFont\Name = ""
den Schriftname weg lasse ist der Bug weg und alles ist gut.
Der Bug lautet:
Unter MacOS darf der Font-Name nicht "" sein. (Nur beim DialogDesign0r von Hex0r)
->Der Fehler wird durch dieser Procedure:
SetGadgetFont(DialogGadget(#Dialog_Main, "LAN_001"), #PB_Default)
in der Else-Verzweigung bei _SetTheme() -> If \MainFont\Name
ausgelöst.
\ MainFont \ Name = ""
Bug with missing font names
The bug is:
Under MacOS the font name must not be "". (Only with DialogDesign0r from Hex0r)
-> The error is caused by this procedure:
SetGadgetFont (DialogGadget (#Dialog_Main, "LAN_001"), #PB_Default)
in the Else branch at _SetTheme () -> If \ MainFont \ Name
triggered.
Re: DialogDesign0R V1.64
Verfasst: 31.12.2020 20:10
von HeX0R
Ich konnte das zwar nachstellen, aber verstehe immer noch nicht, wieso das überhaupt auftritt.
Leider ist meine macOS VM so unbeschreiblich trääääge (ich habe leider nur AMD Prozessoren, da muss der Intel auch noch emuliert werden...), da macht das Fehlersuchen nicht wirklich Spaß.
Daher habe ich im Moment tatsächlich erst mal die Fontnamen mit Arial ersetzt (den Source gibt's aber noch nicht online).
Die Pfade habe ich auch schon angepasst, aber ich möchte meine ganze Source-Struktur nicht nur wegen mac umbasteln und hoffe noch, dass dieses plistTool das kann.
(Weil dann kann ich einfach entsprechende Kommentare in den Source pflanzen und jeder macOS User muss es nur noch kompilieren).
mk-soft hat geschrieben:P.S
Hatte deinen gelöschten Beitrag in "plistTool" noch gelesen
Ähm ja, ich hatte im Nachhinein entschieden meine Meinung besser für mich zu behalten

Re: DialogDesign0R V1.64
Verfasst: 31.12.2020 20:45
von ccode_new
HeX0R hat geschrieben:Ich konnte das zwar nachstellen, aber verstehe immer noch nicht, wieso das überhaupt auftritt.
Du glaubst gar nicht wie sehr ich auf so eine Antwort gehofft habe.
Beheben kann ich es ja, aber ich will diesen Fehler eigentlich auch verstehen.
Das Ganze ist mir zu mysteriös.
Anbei:
Guten Rutsch, Gesundheit, Schaffenskraft, ... und was man sich sonst noch so wünscht.
Re: DialogDesign0R V1.64
Verfasst: 31.12.2020 22:41
von HeX0R
SO!
Damit keiner von uns doof ins nächste Jahr übergehen muss, hab ich mir hier in einer elendlangen Zeitlupenaktion (mag gar nicht an die verschwendete Lebenszeit denken) dem Problem angenommen und den Bug auch gefunden!
Murphys Gesetz hat leider auch noch zugeschlagen, es war der allerletzte GadgetType, den ich getestet hatte... das ComboBoxGadget!
Es mag offensichtlich kein #PB_Default im SetGadgetFont.
Siehe Code hier, einfach einmal auf die ComboBox klicken und große Augen bekommen.
Code: Alles auswählen
OpenWindow(0, 0, 0, 200, 200, "ComboBox macOS")
ComboBoxGadget(0, 5, 5, 190, 24)
SetGadgetFont(0, #PB_Default)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
...und nun lass ich's krachen, wünsche guten Rutsch und gutes (viel besseres!) neues Jahr.
Bug Report dürfen gerne die macOS-Jünger machen, bei Rückfragen muss ich sonst wieder tauchen gehen...
Re: DialogDesign0R V1.64
Verfasst: 31.12.2020 23:49
von ccode_new
Vielen Dank für deine Mühe!
Aber das:
HeX0R hat geschrieben:Murphys Gesetz hat leider auch noch zugeschlagen, es war der allerletzte GadgetType, den ich getestet hatte... das ComboBoxGadget!
Es mag offensichtlich kein #PB_Default im SetGadgetFont.
stimmt irgendwie auch nur teilweise.
Ich habe einen Trick gefunden wie es doch geht.
Mit #PB_ComboBox_Editable geht es und es ist dann auch plötzlich nicht mehr editierbar, aber das StringGadget bleibt editierbar.
(Das ist zwar nicht das erwartete Verhalten, aber irgendwie ist es das benötigte Verhalten.)
Code: Alles auswählen
OpenWindow(0, 0, 0, 200, 200, "ComboBox macOS")
ComboBoxGadget(0, 5, 5, 190, 32, #PB_ComboBox_Editable)
AddGadgetItem(0, -1, "Eingabe 1")
AddGadgetItem(0, -1, "Eingabe 2")
SetGadgetState(0, 0)
StringGadget(1, 5, 50, 190, 30, "Eingabe-Test")
LoadFont(0, "Comic Sans MS", 12)
If IsFont(0)
SetGadgetFont(0, FontID(0))
EndIf
SetGadgetFont(0, #PB_Default)
Repeat : Until WindowEvent() = #PB_Event_CloseWindow
Guten Rutsch!
Re: DialogDesign0R V1.64
Verfasst: 01.01.2021 14:05
von mk-soft
Mal ein Bugfix
Code: Alles auswählen
;-TOP
; Comment: Fix Set default font on macOS
; Version: v1.0.0
; Author : mk-soft
; Create : 1.1.2021
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
Macro _PB_(Function)
Function
EndMacro
Procedure FixSetGadgetFont(Gadget, FontID)
Static SystemFontID
Protected FontSize.CGFloat
If FontID = #PB_Default
If Not SystemFontID
CocoaMessage(@FontSize, 0, "NSFont systemFontSize") : FontSize - 1
SystemFontID = CocoaMessage(0, 0, "NSFont systemFontOfSize:@", @FontSize)
EndIf
_PB_(SetGadgetFont)(Gadget, SystemFontID)
Else
_PB_(SetGadgetFont)(Gadget, FontID)
EndIf
EndProcedure
Macro SetGadgetFont(Gadget, FontID)
FixSetGadgetFont(Gadget, FontID)
EndMacro
CompilerEndIf
CompilerIf #PB_Compiler_IsMainFile
OpenWindow(0, 0, 0, 200, 200, "ComboBox macOS")
ComboBoxGadget(0, 5, 5, 190, 30, #PB_ComboBox_Editable)
StringGadget(1, 5, 40, 190, 30, "Test 1")
AddGadgetItem(0, -1, "Test 1")
AddGadgetItem(0, -1, "Test 2")
SetGadgetFont(0, #PB_Default)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
CompilerEndIf
Re: DialogDesign0R V1.64
Verfasst: 01.01.2021 17:08
von ccode_new
Nett!
Anbei:
Ich habe mir gerade echt mal den ganzen Beitragsverlauf von Anfang an durchgelesen.
Dabei bin ich kurz vor Ende auf diese Aussage von mk-soft gestoßen.
Was mir an macOS gefällt ist der Unix basierte Kernel (Darwin) und nach dem einschalten ohne zusätzliche Software alles funktioniert.
Ja man muss für MacOS bereit sein.
Aber die Aussage das nach dem Einschalten alles ohne zusätzliche Software funktioniert ist auch ziemlich MacOS freundlich daher gesagt.
Unter MacOS hat man zum Beispiel per Standard noch nicht mal Zugriff auf NTFS formatierte Festplatten.
Diese Feature liefern die meisten modernen Linux-Distributionen schon mit.
Re: DialogDesign0R V1.69
Verfasst: 06.01.2021 15:42
von HeX0R
V1.69
Für macOS muss immer noch etwas Handarbeit erledigt werden, ich bin einfach nicht bereit, die Struktur der zusätzl. Dateien zu verändern, nur weil Apple das so mag.
Neuerungen, soweit ich das noch weiss:
- Statusbar/Menüs/Toolbars können (durch einen Hack) in den Dialogen untergebracht werden
- Zuletzt geöffnete Dateien werden gespeichert
- Ein paar Schönheitsreparaturen
- Linux sollte mit qt Subsystem kompiliert werden
- kleinere macOS Verbesserungen
- ein paar Programmschalter hinzugefügt (-nothemes, -nomenus, -portable (wird /portable demnächst ersetzen))
- ...hab ich vergessen