Port to adaptive dialogs

This commit is contained in:
kramo
2024-02-17 09:58:03 +01:00
parent b086766b77
commit 35d85a607f
2 changed files with 17 additions and 21 deletions

View File

@@ -40,7 +40,7 @@ class Importer(ErrorProducer):
progressbar: Gtk.ProgressBar progressbar: Gtk.ProgressBar
import_statuspage: Adw.StatusPage import_statuspage: Adw.StatusPage
import_dialog: Adw.MessageDialog import_dialog: Adw.AlertDialog
summary_toast: Optional[Adw.Toast] = None summary_toast: Optional[Adw.Toast] = None
sources: set[Source] sources: set[Source]
@@ -53,7 +53,7 @@ class Importer(ErrorProducer):
removed_game_ids: set[str] removed_game_ids: set[str]
imported_game_ids: set[str] imported_game_ids: set[str]
close_req_id: int close_attempt_id: int
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
@@ -145,20 +145,17 @@ class Importer(ErrorProducer):
title=_("Importing Games…"), title=_("Importing Games…"),
child=self.progressbar, child=self.progressbar,
) )
self.import_dialog = Adw.Window( self.import_dialog = Adw.Dialog(
content=self.import_statuspage, child=self.import_statuspage,
modal=True, content_width=350,
default_width=350, can_close=False,
default_height=-1,
transient_for=shared.win,
deletable=False,
) )
self.close_req_id = self.import_dialog.connect( self.close_attempt_id = self.import_dialog.connect(
"close-request", lambda *_: shared.win.close() "close-attempt", lambda *_: shared.win.close()
) )
self.import_dialog.present() self.import_dialog.present(shared.win)
def source_task_thread_func(self, data: tuple) -> None: def source_task_thread_func(self, data: tuple) -> None:
"""Source import task code""" """Source import task code"""
@@ -282,9 +279,9 @@ class Importer(ErrorProducer):
self.imported_game_ids = shared.store.new_game_ids self.imported_game_ids = shared.store.new_game_ids
shared.store.new_game_ids = set() shared.store.new_game_ids = set()
shared.store.duplicate_game_ids = set() shared.store.duplicate_game_ids = set()
# Disconnect the close-request signal that closes the main window # Disconnect the close-attempt signal that closes the main window
self.import_dialog.disconnect(self.close_req_id) self.import_dialog.disconnect(self.close_attempt_id)
self.import_dialog.close() self.import_dialog.force_close()
self.__class__.summary_toast = self.create_summary_toast() self.__class__.summary_toast = self.create_summary_toast()
self.create_error_dialog() self.create_error_dialog()
shared.win.get_application().lookup_action("import").set_enabled(True) shared.win.get_application().lookup_action("import").set_enabled(True)
@@ -317,13 +314,12 @@ class Importer(ErrorProducer):
return return
# Create error dialog # Create error dialog
dialog = Adw.MessageDialog() dialog = Adw.AlertDialog()
dialog.set_heading(_("Warning")) dialog.set_heading(_("Warning"))
dialog.add_response("close", _("Dismiss")) dialog.add_response("close", _("Dismiss"))
dialog.add_response("open_preferences_import", _("Preferences")) dialog.add_response("open_preferences_import", _("Preferences"))
dialog.set_default_response("open_preferences_import") dialog.set_default_response("open_preferences_import")
dialog.connect("response", self.dialog_response_callback) dialog.connect("response", self.dialog_response_callback)
dialog.set_transient_for(shared.win)
if len(errors) == 1: if len(errors) == 1:
dialog.set_heading((error := next(iter(errors)))[0]) dialog.set_heading((error := next(iter(errors)))[0])
@@ -342,7 +338,7 @@ class Importer(ErrorProducer):
dialog.set_body(_("The following errors occured during import:")) dialog.set_body(_("The following errors occured during import:"))
dialog.set_extra_child(list_box) dialog.set_extra_child(list_box)
dialog.present() dialog.present(shared.win)
def undo_import(self, *_args: Any) -> None: def undo_import(self, *_args: Any) -> None:
for game_id in self.imported_game_ids: for game_id in self.imported_game_ids:

View File

@@ -28,12 +28,12 @@ def create_dialog(
body: str, body: str,
extra_option: Optional[str] = None, extra_option: Optional[str] = None,
extra_label: Optional[str] = None, extra_label: Optional[str] = None,
) -> Adw.MessageDialog: ) -> Adw.AlertDialog:
dialog = Adw.MessageDialog.new(win, heading, body) dialog = Adw.AlertDialog.new(heading, body)
dialog.add_response("dismiss", _("Dismiss")) dialog.add_response("dismiss", _("Dismiss"))
if extra_option: if extra_option:
dialog.add_response(extra_option, _(extra_label)) dialog.add_response(extra_option, _(extra_label))
dialog.present() dialog.choose(win)
return dialog return dialog