Better - force selection, gray out button
This commit is contained in:
@@ -65,6 +65,7 @@ class InstallerWindow(Adw.ApplicationWindow):
|
||||
# Initialize Pages
|
||||
self.welcome_page = WelcomePage()
|
||||
self.storage_page = StoragePage()
|
||||
self.storage_page.connect("disk-selected", self.on_disk_selected)
|
||||
self.install_mode_page = InstallModePage()
|
||||
self.partitioning_page = PartitioningPage()
|
||||
self.modules_page = ModulesPage()
|
||||
@@ -81,16 +82,29 @@ class InstallerWindow(Adw.ApplicationWindow):
|
||||
# Initialize view
|
||||
if self.page_ids:
|
||||
self.stack.set_visible_child_name(self.page_ids[0])
|
||||
self.update_buttons()
|
||||
|
||||
def add_page(self, widget, name):
|
||||
self.stack.add_named(widget, name)
|
||||
self.page_ids.append(name)
|
||||
|
||||
def on_disk_selected(self, page, device_name):
|
||||
self.update_buttons()
|
||||
|
||||
def update_buttons(self):
|
||||
# Back button state
|
||||
self.back_button.set_sensitive(self.current_page_index > 0)
|
||||
|
||||
# Next button label/state
|
||||
current_page_name = self.page_ids[self.current_page_index]
|
||||
|
||||
# Forced selection logic
|
||||
forced_selection = True
|
||||
if current_page_name == "storage":
|
||||
forced_selection = self.storage_page.get_selected_disk() is not None
|
||||
|
||||
self.next_button.set_sensitive(forced_selection)
|
||||
|
||||
if self.current_page_index == len(self.page_ids) - 1:
|
||||
self.next_button.set_label("Install")
|
||||
self.next_button.add_css_class("destructive-action")
|
||||
@@ -102,7 +116,7 @@ class InstallerWindow(Adw.ApplicationWindow):
|
||||
|
||||
def on_back_clicked(self, button):
|
||||
current_page = self.page_ids[self.current_page_index]
|
||||
|
||||
|
||||
# Default: go back one page
|
||||
next_prev_index = self.current_page_index - 1
|
||||
|
||||
@@ -123,16 +137,6 @@ class InstallerWindow(Adw.ApplicationWindow):
|
||||
|
||||
if current_page_name == "storage":
|
||||
selected_disk = self.storage_page.get_selected_disk()
|
||||
if not selected_disk:
|
||||
dialog = Adw.MessageDialog(
|
||||
transient_for=self,
|
||||
heading="No Disk Selected",
|
||||
body="Please select a storage device to proceed."
|
||||
)
|
||||
dialog.add_response("ok", "OK")
|
||||
dialog.present()
|
||||
return
|
||||
|
||||
self.partitioning_page.load_partitions(selected_disk)
|
||||
|
||||
next_index = self.current_page_index + 1
|
||||
|
||||
Reference in New Issue
Block a user