[gnome-boxes/WIP/reinstate-gnome-nightly: 2/3] assistant, media-manager: Make "GNOME OS" use the identify OS page




commit 4908394fcc64126f6b78a86dbe204622373e5432
Author: Felipe Borges <felipeborges gnome org>
Date:   Fri Aug 7 12:59:02 2020 +0200

    assistant, media-manager: Make "GNOME OS" use the identify OS page
    
    Instead of having a GNOME OS specific file chooser, now picking an
    image that contains GNOME OS and marking it as "GNOME OS" in the
    Identify an OS page (introduced in fa8b93e251) will work.
    
    Fixes #578

 data/recommended-downloads.xml      |  2 +-
 src/assistant/index-page.vala       | 15 ---------------
 src/assistant/preparation-page.vala | 13 ++++++++-----
 src/media-manager.vala              |  9 +++++++++
 4 files changed, 18 insertions(+), 21 deletions(-)
---
diff --git a/data/recommended-downloads.xml b/data/recommended-downloads.xml
index 4ba1edd8..31d8546b 100644
--- a/data/recommended-downloads.xml
+++ b/data/recommended-downloads.xml
@@ -9,7 +9,6 @@
   available.
  -->
 <list>
-  <os_id>http://gnome.org/gnome/nightly</os_id>
   <os_id>http://redhat.com/rhel/8.2</os_id>
   <os_id>http://fedoraproject.org/fedora/32</os_id>
   <os_id>http://fedoraproject.org/silverblue/32</os_id>
@@ -17,4 +16,5 @@
   <os_id>http://opensuse.org/opensuse/15.1</os_id>
   <os_id>http://debian.org/debian/10</os_id>
   <os_id>http://endlessos.com/eos/3.7</os_id>
+  <os_id>http://gnome.org/gnome/nightly</os_id>
 </list>
diff --git a/src/assistant/index-page.vala b/src/assistant/index-page.vala
index 38cda2f2..c3c1e09d 100644
--- a/src/assistant/index-page.vala
+++ b/src/assistant/index-page.vala
@@ -126,21 +126,6 @@ private async void on_featured_media_selected (Gtk.ListBoxRow row) {
 
         if (entry.os != null && entry.os.id.has_prefix ("http://redhat.com/rhel/";)) {
             (new RHELDownloadDialog (dialog, entry).run ());
-        } else if (entry.os != null && entry.os.id.has_prefix ("http://gnome.org/gnome/";)) {
-            var file_chooser = new Gtk.FileChooserNative (_("Select the GNOME Nightly VM image"),
-                                                          App.app.main_window,
-                                                          Gtk.FileChooserAction.OPEN,
-                                                          _("Select"), _("Cancel"));
-            file_chooser.bind_property ("visible", dialog, "visible", BindingFlags.INVERT_BOOLEAN);
-            if (file_chooser.run () == Gtk.ResponseType.ACCEPT) {
-                try {
-                    var media = yield new InstalledMedia.gnome_nightly (file_chooser.get_filename ());
-                    done (media);
-                    return;
-                } catch (GLib.Error error) {
-                    warning ("Failed to create GNOME Nightly config for '%s': %s", file_chooser.get_filename 
(), error.message);
-                }
-            }
         } else {
             DownloadsHub.get_instance ().add_item (entry);
         }
diff --git a/src/assistant/preparation-page.vala b/src/assistant/preparation-page.vala
index 59f95d04..7d05f646 100644
--- a/src/assistant/preparation-page.vala
+++ b/src/assistant/preparation-page.vala
@@ -31,19 +31,22 @@
         }
     }
 
-    public void setup (InstallerMedia media, Osinfo.Os? os = null) {
+    public async void setup (InstallerMedia media, Osinfo.Os? os = null) {
         try {
             var media_manager = MediaManager.get_instance ();
-            this.media = media_manager.create_installer_media_from_media (media, os);
-
+            if (os != null && os.id.has_prefix ("http://gnome.org";)) {
+                this.media = yield media_manager.create_installer_media_for_gnome_os (media, os);
+            } else {
+                this.media = media_manager.create_installer_media_from_media (media, os);
+            }
         } catch (GLib.Error error) {
             warning ("Failed to setup installation media '%s': %s", media.device_file, error.message);
         }
 
-        if (media.os == null) {
+        if (this.media.os == null) {
             stack.visible_child = identify_os_page;
         } else {
-            prepare.begin (media);
+            prepare.begin (this.media);
         }
     }
 
diff --git a/src/media-manager.vala b/src/media-manager.vala
index 79b198c3..48484452 100644
--- a/src/media-manager.vala
+++ b/src/media-manager.vala
@@ -219,6 +219,15 @@ public InstallerMedia create_installer_media_from_media (InstallerMedia media, O
         return create_unattended_installer (media);
     }
 
+    public async InstallerMedia create_installer_media_for_gnome_os (InstallerMedia media, Os? os = null) 
throws GLib.Error {
+        try {
+            return yield new InstalledMedia.gnome_nightly (media.device_file);
+        } catch (GLib.Error error) {
+            warning ("Failed to create GNOME Nightly config for '%s': %s", media.device_file, error.message);
+            return create_installer_media_from_media (media, os);
+        }
+    }
+
     private MediaManager () {
 #if !FLATPAK
         client = new GUdev.Client ({"block"});


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]