Use GtkFileChooserNative

Use GtkFileChooserNative [1] instead of GtkFileChooserDialog [2]
to integrate better with the platform (e.g. use the portal
implementation when run with GTK_USE_PORTAL=1, resulting in
the KDE Frameworks implementation being used when
xdg-desktop-portal-kde is in use). Quoting from
the GtkFileChooserDialog doc [2]:

> If you want to integrate well with the platform you should use the
> GtkFileChooserNative API, which will use a platform-specific dialog if
> available and fall back to GtkFileChooserDialog otherwise.

Also replace the use of GTK_STOCK_CANCEL [3] and GTK_STOCK_OPEN [4]
which were deprecated in GTK 3.10:

Both, the `accept_label` and `cancel_label` params of
`Gtk.FileChooserNative.new` can be `None` to use the default
text ("Open", "Cancel"). [5]

Adjust the only caller (in `vmmVMWindow#_takeScreenshot`)
that was passing an explicit label/icon name for the
accept button to pass `_("_Save")` as label, rather than
the also deprecated Gtk.STOCK_SAVE [6].
(GtkFileChooserDialog has special handling for Gtk.STOCK_SAVE
etc., but that's not generally the case for native dialogs).

Rename the method param from `choose_button` to `choose_label`
to make clearer that this is a label.

[1] https://docs.gtk.org/gtk3/class.FileChooserNative.html
[2] https://docs.gtk.org/gtk3/class.FileChooserDialog.html
[3] https://docs.gtk.org/gtk3/const.STOCK_CANCEL.html
[4] https://docs.gtk.org/gtk3/const.STOCK_OPEN.html
[5] http://pygobject-doc.gitee.io/pgi-docs/Gtk-3.0/classes/FileChooserNative.html#Gtk.FileChooserNative.new
[6] https://docs.gtk.org/gtk3/const.STOCK_SAVE.html

Fixes #315
This commit is contained in:
Michael Weghorn 2024-03-20 07:41:29 +01:00 committed by Cole Robinson
parent 231a3dbc87
commit db1b2fbce3
2 changed files with 6 additions and 14 deletions

View File

@ -234,7 +234,7 @@ class vmmErrorDialog(vmmGObject):
def browse_local(self, dialog_name, start_folder=None,
_type=None, dialog_type=None,
choose_button=None, default_name=None,
choose_label=None, default_name=None,
confirm_overwrite=False):
"""
Helper function for launching a filechooser
@ -246,19 +246,11 @@ class vmmErrorDialog(vmmGObject):
"""
if dialog_type is None:
dialog_type = Gtk.FileChooserAction.OPEN
if choose_button is None:
choose_button = Gtk.STOCK_OPEN
buttons = (Gtk.STOCK_CANCEL,
Gtk.ResponseType.CANCEL,
choose_button,
Gtk.ResponseType.ACCEPT)
fcdialog = Gtk.FileChooserDialog(title=dialog_name,
fcdialog = Gtk.FileChooserNative.new(title=dialog_name,
parent=self.get_parent(),
action=dialog_type,
buttons=buttons)
fcdialog.set_default_response(Gtk.ResponseType.ACCEPT)
accept_label=choose_label)
if default_name:
fcdialog.set_current_name(default_name)

View File

@ -558,7 +558,7 @@ class vmmVMWindow(vmmGObjectUI):
_("Save Virtual Machine Screenshot"),
_type=("png", _("PNG files")),
dialog_type=Gtk.FileChooserAction.SAVE,
choose_button=Gtk.STOCK_SAVE,
choose_label=_("_Save"),
start_folder=start_folder,
default_name=default,
confirm_overwrite=True)