Re: Warum sieht ein Gui unter Linux nicht schön aus?(Anfänge
Verfasst: 13.07.2018 11:34
Ich habe mein Programm zur Änderung der Hintergrundfarbe von Linux-Fenstern mit GTK3-Framework so umgeschrieben, dass man es als Prozedur mit der gewünschten RGB-Farbe aufrufen kann:
Code: Alles auswählen
EnableExplicit
ImportC ""
gtk_css_provider_load_from_data(*CSSProvider, CSSData.P-UTF8, Length.I,
*Error.GError)
gtk_css_provider_new()
gtk_style_context_add_provider(*StyleContext, *StyleProvider, Priority.I)
gtk_widget_get_style_context(*Widget.GtkWidget)
EndImport
#GTK_STYLE_PROVIDER_PRIORITY_USER = 800
Procedure.I GetGTK3MinorVersion()
Protected GTK3Version.S
Protected GTK3MinorVersion.I
Protected ProgramID.I
ProgramID = RunProgram("pkg-config", "--modversion gtk+-3.0", "",
#PB_Program_Open | #PB_Program_Read)
If ProgramID
GTK3Version = ReadProgramString(ProgramID)
GTK3MinorVersion = Val(StringField(GTK3Version, 2, "."))
CloseProgram(ProgramID)
EndIf
ProcedureReturn GTK3MinorVersion
EndProcedure
Procedure SetWindowBackColor(WindowID.I, Color.I)
Protected ContainerWidget.I
Protected CSSProvider.I
Protected CSSColor.S
Protected CSSData.S
Protected GTK3MinorVersion.I
CSSColor = "#" + RSet(Hex(Red(Color)), 2, "0") +
RSet(Hex(Green(Color)), 2, "0") + RSet(Hex(Blue(Color)), 2, "0")
GTK3MinorVersion = GetGTK3MinorVersion()
If GTK3MinorVersion > 15
CSSData = "window.background {background-color: " + CSSColor + ";}"
ContainerWidget = WindowID(WindowID)
Else
CSSData = "GtkLayout {background-color: " + CSSColor + ";}"
ContainerWidget = g_list_nth_data_(gtk_container_get_children_(WindowID(WindowID)), 0)
ContainerWidget = g_list_nth_data_(gtk_container_get_children_(ContainerWidget), 0)
EndIf
CSSProvider = gtk_css_provider_new()
gtk_css_provider_load_from_data(CSSProvider, CSSData, -1, 0)
gtk_style_context_add_provider(gtk_widget_get_style_context(ContainerWidget),
CSSProvider, #GTK_STYLE_PROVIDER_PRIORITY_USER)
g_object_unref_(CSSProvider)
EndProcedure
OpenWindow(0, 100, 100, 350, 230, "Window with custom background color")
SetWindowBackColor(0, $EAD1B9)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow