Athena Widget, wieso mit ovalen Buttons



  • Normalerweise sind die Buttons der Athena Widget eckig.
    Und bei folgendem Beispiel sind die Buttons auf einmal oval.
    Was ich per Zufall entdeckt habe, sobald bei XtInitialize der 2. Parameter "XClipboard" ist, werden die Buttons oval. Schreibe ich sonst was rein, sind sie wie gewohnt eckig.
    Was auch noch ist, die Buttons werden nebeneinander angeordnet, ansonsten übereinander.

    Weis einer der Grund, wieso dies so ist ?
    Ist der Name "XClipboard" etwas reserviertes ?

    Onkel Google kann mit nicht helfen.
    Nur das folgendes da steht:

    Anwendung_Klasse _ _
    Gibt den Klassennamen dieser Anwendung an, der normalerweise lautet
    generischer Name für alle Instanzen dieser Anwendung.

    #include  <X11/StringDefs.h>
    #include  <X11/Xaw/Box.h>
    #include  <X11/Xaw/Command.h>
    
    
    int main(int argc, char **argv) {
    
        Widget toplevel, box, command;
    
        toplevel = XtInitialize("Mein Fenster", "XClipboard", NULL, 0, &argc, argv); // Die ominöse Zeile
    
        box = XtCreateManagedWidget("Button Gruppe", boxWidgetClass, toplevel, NULL, 0);
    
        command = XtCreateManagedWidget("Button 1", commandWidgetClass, box, NULL, 0);
        command = XtCreateManagedWidget("Button 2", commandWidgetClass, box, NULL, 0);
    
        XtRealizeWidget(toplevel);
    
        XtMainLoop();
    }
    


  • Keine Ahnung warum das so ist. Ich kenne keinerlei Dokumentation zu den Athena Widgets außer der relativ dünnen Informationen von Xorg selbst. Xaw war nie sonderlich beliebt oder in großer Nutzung, und seit dem es Tcl/Tk gibt wurde Tk Xaw gegenüber bei FOSS-Projekten bevorzugt, weil man damit bessere GUIs machen konnte. Kommerziell wurde auf XView und Motif gesetzt. Dazu gibt es einiges an Dokumentation.



  • Ich habe mir mal das Original von xclipboard geholt.
    https://gitlab.freedesktop.org/xorg/app/xclipboard
    Mit autogen.sh und make installiert. Wie erwartet sind die Buttons abgerundet.
    Dann habe ich hier den String "XClipboard" modifiziert.

        top = XtAppInitialize( &xtcontext, "XClipboard", table, XtNumber(table), &argc, argv, fallback_resources, NULL, 0);
    

    Dann wieder "make install". Beim Neustart des Tools, sind die Buttons eckig, und übereinander platziert. Das Tool liess sich nicht mal mehr über das (x) beenden, ich musste es abwürgen. Den String wieder auf den Original Wert gesetzt. Jetzt ist wieder alles normal wie erwartet.
    Es ist echt spannend, was da passiert.

    Das es mir keine Ruhe liess, habe ich mal den ganzen Ordner /usr nach folgenden String durchsucht "XClipboard".

    Einzig in folgenden Dateien habe ich ihn wieder gefunden:

    /usr/share/locale/sr@ijekavianlatin/LC_SCRIPTS/ki18n5/trapnakron.pmap
    /usr/share/locale/sr@ijekavian/LC_SCRIPTS/ki18n5/trapnakron.pmap
    /usr/share/locale/sr@latin/LC_SCRIPTS/ki18n5/trapnakron.pmap
    /usr/share/locale/sr/LC_SCRIPTS/ki18n5/trapnakron.pmap
    

    Aber ich denke, diese Dateien haben kaum einen Zusammenhang.

    Ich habe jetzt gerade entdeckt, xcalc ist auch so eine Ominöse Anwendung. Da schreibt es sogar in die Titelleiste "Calculator", obwohl dieser String nirgends in meiner Anwendung zu finden ist.

    Ich habe mal ScreenShoots davon gemacht:
    https://github.com/sechshelme/Lazarus-Motif_Athena_Widget/tree/main/ScreenShoot_temp



  • Gibt es vllt. irgendwelche Style-Dateien in den Projekten dazu?

    Edit:
    Schau dir mal app-defaults/XClipboard an.
    Dort steht ab Zeile 77

    XClipboard.geometry:		300x200
    *ShapeStyle:			oval
    

    rectangle ist wohl der Standardwert.



  • @Th69 sagte in Athena Widget, wieso mit ovalen Buttons:

    Edit:
    Schau dir mal app-defaults/XClipboard an.
    Dort steht ab Zeile 77

    Danke für die Infos.

    Dort ist es anscheinend begraben.
    Ich habe nochmal ein "make install" gemacht.
    Und habe folgendes entdeckt:

    /usr/bin/install -c -m 644 ../xclipboard/app-defaults/XClipboard '/usr/local/share/X11/app-defaults'
    

    Mit dieser Datei, kann ich meine xclipboard verdeutschen.
    Wen ich das so angucke, waren die XToolkits schon recht fortschrittlich. Somit muss ein Linux-Distro Bauer nur diese Datei anpassen um Sprachen oder dir Farbe zu ändern.

    Jetzt weis ich auch, für was der zweite Paramter von XtAppInitialize() ist.

    Ich habe jetzt ein bisschen damit rumgespielt.
    Jetzt zur Frage, muss die Datei zwingen in einem System-Ordner wie /usr/local/share/X11/app-defaults oder /etc/X11/app-defaults sein ?
    Oder kann man in der Entwicklungsphase diese Datei auch lokal abspeichern, wen ja wie ?

    Die wird etwas ähnliches sein: https://www.softintegration.com/chhtml/toolkit/demos/X11/motif/

    Das es mir keine Ruhe liess, habe ich mal den ganzen Ordner /usr nach folgenden String durchsucht "XClipboard".

    Kunststück hatte ich sie nicht gefunden, das es in /etc ist.



  • @Mathuas sagte in Athena Widget, wieso mit ovalen Buttons:

    Jetzt zur Frage, muss die Datei zwingen in einem System-Ordner wie /usr/local/share/X11/app-defaults oder /etc/X11/app-defaults sein ?
    Oder kann man in der Entwicklungsphase diese Datei auch lokal abspeichern, wen ja wie ?

    Man kann als Nutzer in eigenem Home Verzeichnis immer "~/.Xdefaults" anlegen.



  • @john-0 sagte in Athena Widget, wieso mit ovalen Buttons:

    Man kann als Nutzer in eigenem Home Verzeichnis immer "~/.Xdefaults" anlegen.

    Ich habe als Versuch die Datei ~/.Xdefaults mit folgendem Inhalt erstellt.

    xterm*geometry:           160x50
    

    Anschliessend xterm gestartet, aber es ist keine Änderung sichtbar.

    Ich habe mich an folgende Anleitung gehalten:
    https://wiki.archlinux.de/title/Xdefaults

    Ich habe zuoberst noch das mit xrdb gelesen und daher den Rechner neu gestartet, aber ohne Erfolg.


Anmelden zum Antworten