wollte mal in die Programmierung unter Linux (genauer gesagt: das aktuelle Kubuntu x64) reinschnuppern und bin - wird Euch nicht wundern - gleich an meine Grenzen gestoßen. Anbei mal ein Code, der ein paar Probleme mitbringt:
Code: Alles auswählen
Enumeration
#Parentwin
#Statusbar
EndEnumeration
ImportC ""
gtk_label_set_yalign(*label.GtkLabel, yalign.f)
pango_context_get_font_description(*context)
pango_font_description_get_family(*description)
pango_font_description_to_string(*description)
EndImport
;habe nicht die blasseste Ahnung, was es mit dem ImportC auf sich hat.
Procedure.s Gadget_GetFontFamily(Gadget)
Protected.s sFontFamily
Protected *context = gtk_widget_get_pango_context_(GadgetID(Gadget))
Protected *description = pango_context_get_font_description(*context)
Protected *family = pango_font_description_get_family(*description)
If *family
sFontFamily= PeekS(*family, -1, #PB_UTF8)
EndIf
ProcedureReturn sFontFamily
EndProcedure
;soll mir den aktuellen Hauptfont bringen. Kann ja bei jeder Distri anders sein
If OpenWindow(#Parentwin, 0, 0, 600, 100, "Resize", #PB_Window_SystemMenu | #PB_Window_WindowCentered | #PB_Window_SizeGadget)
dirselect = ButtonGadget(#PB_Any, 10, 10, 200, 10, "Verzeichnis auswählen")
x$ = Gadget_GetFontFamily(dirselect)
fontnum = LoadFont(#PB_Any, x$, 11)
If fontnum
SetGadgetFont(#PB_Default, FontID(fontnum))
EndIf
SetGadgetFont(dirselect, FontID(fontnum))
;soll den aktuellen Hauptfont liefern und in der Größe 11 als Default einstellen
If CreateStatusBar(#Statusbar, WindowID(#Parentwin))
AddStatusBarField(#PB_Ignore)
StatusBarText(#Statusbar, 0, "Statusbar zentriert", #PB_StatusBar_Center)
EndIf
dirstring = TextGadget(#PB_Any, 220, 10, WindowWidth(#Parentwin,#PB_Window_InnerCoordinate)-230, 20, "",#PB_Text_Border)
;gtk_label_set_yalign(GadgetID(dirstring), 1)
;keine Ahnung, was das gtk... bezwecken soll, kann mit und ohne keinen Unterschied feststellen
SetGadgetColor(dirstring,#PB_Gadget_FrontColor,RGB(0,0,0))
SetGadgetColor(dirstring,#PB_Gadget_BackColor,RGB(255,255,255))
Repeat
Event = WindowEvent()
If Event
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case dirselect
dirselect$ = PathRequester("Verzeichnis wählen", GetHomeDirectory())
If dirselect
SetGadgetText(dirstring,dirselect$)
;wenn Verzeichnis ausgewä#hlz, dann passiert ...
Else
SetGadgetText(dirstring,"")
; wenn kein Verz ausgewählz, dann passiert ...
EndIf
EndSelect
Case #PB_Event_SizeWindow
ResizeGadget(dirstring, #PB_Ignore, #PB_Ignore, WindowWidth(#Parentwin,#PB_Window_InnerCoordinate)-230, 20)
Case #PB_Event_CloseWindow
End
EndSelect
Else
Delay(1)
EndIf
ForEver
End
EndIf
Die Gadgethöhe für das Textgadget und Buttongadget lassen sich nicht richtig einstellen. Beide sollten gleich hoch sein und nicht viel höher als die Fonteinstellung erforderlich macht.
Wenn das Fenster sehr klein gemacht wird, wird das Textgadget automatisch in der Höhe vergrößert und der Text (also der ausgewählte Pfad) mehrzeilig angezeigt. Wie kann man den Automatismus verhindern? Ziel wäre, dass das Textgadget sich nur in der Breite anpasst.
Kann natürlich auch sein, dass mein PB nicht richtig für Linux konfiguriert ist. Alle Anleitungen, die ich gefunden habe, beziehen sich auf ältere Distributionen, für Kubuntu 20.04LTS habe ich nichts gefunden. Hat da jemand Tipps für mich?
Wäre für etwas Licht im Dunkel sehr dankbar!