Code: Alles auswählen
MessageRequester("Hinweis","Es gibt nichts zu tun."+Chr(13)+"(Noch keine Daten gelesen)", #PB_MessageRequester_Ok | #PB_MessageRequester_Info)
Danke.
Code: Alles auswählen
MessageRequester("Hinweis","Es gibt nichts zu tun."+Chr(13)+"(Noch keine Daten gelesen)", #PB_MessageRequester_Ok | #PB_MessageRequester_Info)
Code: Alles auswählen
;-TOP
ImportC ""
gtk_message_dialog_new(GtkWindow, GtkDialogFlags, GtkMessageType, GtkButtonsType, message_format.p-utf8) ;, ... type)
EndImport
If OpenWindow(0, 100, 80, 400, 300, "Window")
dialog = gtk_message_dialog_new(0, #GTK_DIALOG_MODAL, #GTK_MESSAGE_INFO, #GTK_BUTTONS_OK, "Hello")
gtk_window_set_title_(dialog, "Info");
result = gtk_dialog_run_(dialog);
gtk_widget_destroy_(dialog);
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
Mit Subsystem "gtk2" werden auch auf dem RaspberryPi Icons angezeigt. Bei GTK3 sind in Dialogen - im Gegensatz zu GTK2 - keine Icons mehr vorgesehen:pickelrobert hat geschrieben: ↑10.09.2022 09:07 Bei
werden keine Icons angezeigt. Was habe ich übersehen?Code: Alles auswählen
MessageRequester("Hinweis","Es gibt nichts zu tun."+Chr(13)+"(Noch keine Daten gelesen)", #PB_MessageRequester_Ok | #PB_MessageRequester_Info)
Danke.
Emmanuele Bassi (einer der Hauptentwickler von GTK3) hat geschrieben:GTK does not use icons in message dialogs.
If you want to show an icon, you’ll have to create your own GtkDialog and pack widgets inside its content area yourself.
Es ist ein zusätzliches Feature, dass auch bei GTK3 In Dialogen Icons angezeigt werden. Möglicherweise zeigen nur bestimmte Ubuntu-Distributionen oder davon abgeleitete Distributionen standardmäßig Icons in Dialogen an, wenn diese einen speziellen Ubuntu-Patch für Unity installiert haben. Dann sollten allerdings nur Ubuntu-Distributionen oder davon abgeleitete Distributionen in GTK3-Dialogen standardmäßig ein Icon anzeigen. Ich werde morgen einmal verschiedene Distributionen daraufhin testen. Oder Fred oder freak haben diesen oder einen ähnlichen Patch in PureBasic für alle Linux-Distributionen mit Assembler-Backend für GTK3 implementiert.
Doch es geht, wenn man es richtig macht... (erfolgreich getestet mit GTK3 unter Linux Mint 19.3 'Tricia' und Raspbian GNU/Linux 11 (Bullseye) ARM32):
Code: Alles auswählen
EnableExplicit
Define Box.I
Define ContentArea.I
Define Dialog.I
Define Image.I
Define Label.I
ImportC ""
gtk_box_new(Orientation.I, Spacing.I)
gtk_box_pack_start(*Box.GtkBox, *Child.GtkWidget, Expand.I, Fill.I,
Padding.I)
gtk_dialog_get_content_area(*Dialog.GtkDialog)
gtk_dialog_new_with_buttons(Title.P-UTF8, *ParentWindow.GtkWindow,
Flags.I, ButtonText1.P-UTF8, ResponseType.I, Terminator.I = 0)
gtk_image_set_from_icon_name(*Image.GtkImage, IconName.P-UTF8, Size.I)
EndImport
OpenWindow(0, 100, 80, 220, 170, "Window")
; ----- Dialog erstellen
Dialog = gtk_dialog_new_with_buttons("RaspberryPi", 0, #GTK_DIALOG_MODAL,
"OK", #GTK_RESPONSE_OK)
; ----- Label und Image erstellen
Label = gtk_label_new_("Dialog mit Icon in GTK3")
Image = gtk_image_new_()
; ----- Info-Icon in Image eintragen
gtk_image_set_from_icon_name(Image, "dialog-information",
#GTK_ICON_SIZE_DIALOG)
; ----- GtkBox erstellen
Box = gtk_box_new(#GTK_ORIENTATION_HORIZONTAL, 1)
; ----- Label und Image in GtkBox packen
gtk_box_pack_start(Box, Image, #True, #True, 10)
gtk_box_pack_start_(Box, Label, #True, #True, 10)
; ----- GtkBox in Dialog-Container eintragen
ContentArea = gtk_dialog_get_content_area(Dialog)
gtk_container_add_(ContentArea, Box)
; ----- Dialog anzeigen
gtk_widget_show_all_(Dialog)
gtk_dialog_run_(Dialog)
gtk_widget_destroy_(Dialog)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow[/code-PB]
Ein GtkDialog in Verbindung mit einer GtkBox.
Hier ist die versprochene Auswertung verschiedener Linux-Distributionen daraufhin, ob sie in GTK3 in einem MessageRequester mit #PB_MessageRequester_Info ein Icon anzeigen [+] oder nicht [-]: