コード例 #1
0
    def load_disks(self):
        """ Load the disks within a thread """
        # Scan parts
        dm = self.info.owner.get_disk_manager()
        perms = self.info.owner.get_perms_manager()

        perms.up_permissions()
        self.prober = DriveProber(dm)
        self.info.prober = self.prober
        self.prober.probe()
        perms.down_permissions()

        # Currently the only GTK call here
        Gdk.threads_enter()
        self.info.owner.set_can_previous(True)
        can_continue = True

        if len(self.prober.drives) == 0:
            # No drives
            self.stack.set_visible_child_name("whoops")
            can_continue = False
        elif self.prober.is_broken_windows_uefi():
            self.stack.set_visible_child_name("broken-windows")
            self.can_continue = False
        else:
            # Let them choose
            self.stack.set_visible_child_name("chooser")
            self.can_continue = True
        self.spinner.stop()
        Gdk.threads_leave()

        if can_continue:
            GLib.idle_add(self.update_disks)
コード例 #2
0
    def load_disks(self):
        """ Load the disks within a thread """
        # Scan parts
        dm = self.info.owner.get_disk_manager()
        perms = self.info.owner.get_perms_manager()

        perms.up_permissions()
        self.prober = DriveProber(dm)
        self.info.prober = self.prober
        self.prober.probe()
        perms.down_permissions()

        # Currently the only GTK call here
        Gdk.threads_enter()
        self.info.owner.set_can_previous(True)
        can_continue = True

        if len(self.prober.drives) == 0:
            # No drives
            self.stack.set_visible_child_name("whoops")
            can_continue = False
        elif self.prober.is_broken_windows_uefi():
            self.stack.set_visible_child_name("broken-windows")
            self.can_continue = False
        else:
            # Let them choose
            self.stack.set_visible_child_name("chooser")
            self.can_continue = True
        self.spinner.stop()
        Gdk.threads_leave()

        if can_continue:
            GLib.idle_add(self.update_disks)
コード例 #3
0
class InstallerDiskLocationPage(BasePage):
    """ Disk location selection. """

    had_init = False
    spinner = None

    stack = None
    whoops = None
    chooser = None
    prober = None
    can_continue = False

    def __init__(self):
        BasePage.__init__(self)

        self.stack = Gtk.Stack()
        self.pack_start(self.stack, True, True, 0)

        self.spinner = LoadingPage()

        self.whoops = WhoopsPage()
        self.stack.add_named(self.whoops, "whoops")
        broken = BrokenWindowsPage(self)
        self.stack.add_named(broken, "broken-windows")
        self.stack.add_named(self.spinner, "loading")
        self.chooser = ChooserPage()
        self.stack.add_named(self.chooser, "chooser")

        self.stack.set_visible_child_name("loading")

    def get_title(self):
        return "Where should we install?"

    def get_sidebar_title(self):
        return "Disks"

    def get_name(self):
        return "disk-location"

    def get_icon_name(self, plasma=False):
        if plasma:
            return "drive-harddisk"
        return "disk-utility"

    def load_disks(self):
        """ Load the disks within a thread """
        # Scan parts
        dm = self.info.owner.get_disk_manager()
        perms = self.info.owner.get_perms_manager()

        perms.up_permissions()
        self.prober = DriveProber(dm)
        self.info.prober = self.prober
        self.prober.probe()
        perms.down_permissions()

        # Currently the only GTK call here
        Gdk.threads_enter()
        self.info.owner.set_can_previous(True)
        can_continue = True

        if len(self.prober.drives) == 0:
            # No drives
            self.stack.set_visible_child_name("whoops")
            can_continue = False
        elif self.prober.is_broken_windows_uefi():
            self.stack.set_visible_child_name("broken-windows")
            self.can_continue = False
        else:
            # Let them choose
            self.stack.set_visible_child_name("chooser")
            self.can_continue = True
        self.spinner.stop()
        Gdk.threads_leave()

        if can_continue:
            GLib.idle_add(self.update_disks)

    def update_disks(self):
        """ Thread load finished, update UI from discovered info """
        self.chooser.set_drives(self.info, self.prober)
        self.info.windows_present = False
        for drive in self.prober.drives:
            for os in drive.operating_systems:
                os_ = drive.operating_systems[os]
                if os_.otype == "windows":
                    self.info.windows_present = True
                    break

        # Allow forward navigation now
        self.info.owner.set_can_next(self.can_continue)
        return False

    def init_view(self):
        """ Prepare for viewing... """
        if self.had_init and not self.info.invalidated:
            return
        self.info.invalidated = False
        self.can_continue = False
        self.had_init = True
        self.stack.set_visible_child_name("loading")
        self.spinner.start()
        self.spinner.show_all()
        GLib.idle_add(self.prepare_view)

    def prepare_view(self):
        """ Do the real job after GTK has done things.. """
        self.info.owner.set_can_previous(False)
        self.queue_draw()

        t = threading.Thread(target=self.load_disks)
        t.daemon = True
        t.start()
        return False

    def prepare(self, info):
        self.info = info
        self.init_view()
        self.info.owner.set_can_next(self.can_continue)
コード例 #4
0
class InstallerDiskLocationPage(BasePage):
    """ Disk location selection. """

    had_init = False
    spinner = None

    stack = None
    whoops = None
    chooser = None
    prober = None
    can_continue = False

    def __init__(self):
        BasePage.__init__(self)

        self.stack = Gtk.Stack()
        self.pack_start(self.stack, True, True, 0)

        self.spinner = LoadingPage()

        self.whoops = WhoopsPage()
        self.stack.add_named(self.whoops, "whoops")
        broken = BrokenWindowsPage(self)
        self.stack.add_named(broken, "broken-windows")
        self.stack.add_named(self.spinner, "loading")
        self.chooser = ChooserPage()
        self.stack.add_named(self.chooser, "chooser")

        self.stack.set_visible_child_name("loading")

    def get_title(self):
        return "Where should we install?"

    def get_name(self):
        return "disk-location"

    def get_icon_name(self):
        return "drive-harddisk-system-symbolic"

    def load_disks(self):
        """ Load the disks within a thread """
        # Scan parts
        dm = self.info.owner.get_disk_manager()
        perms = self.info.owner.get_perms_manager()

        perms.up_permissions()
        self.prober = DriveProber(dm)
        self.info.prober = self.prober
        self.prober.probe()
        perms.down_permissions()

        # Currently the only GTK call here
        Gdk.threads_enter()
        self.info.owner.set_can_previous(True)
        can_continue = True

        if len(self.prober.drives) == 0:
            # No drives
            self.stack.set_visible_child_name("whoops")
            can_continue = False
        elif self.prober.is_broken_windows_uefi():
            self.stack.set_visible_child_name("broken-windows")
            self.can_continue = False
        else:
            # Let them choose
            self.stack.set_visible_child_name("chooser")
            self.can_continue = True
        self.spinner.stop()
        Gdk.threads_leave()

        if can_continue:
            GLib.idle_add(self.update_disks)

    def update_disks(self):
        """ Thread load finished, update UI from discovered info """
        self.chooser.set_drives(self.info, self.prober)
        self.info.windows_present = False
        for drive in self.prober.drives:
            for os in drive.operating_systems:
                os_ = drive.operating_systems[os]
                if os_.otype == "windows":
                    self.info.windows_present = True
                    break

        # Allow forward navigation now
        self.info.owner.set_can_next(self.can_continue)
        return False

    def init_view(self):
        """ Prepare for viewing... """
        if self.had_init and not self.info.invalidated:
            return
        self.info.invalidated = False
        self.can_continue = False
        self.had_init = True
        self.stack.set_visible_child_name("loading")
        self.spinner.start()
        self.spinner.show_all()
        GLib.idle_add(self.prepare_view)

    def prepare_view(self):
        """ Do the real job after GTK has done things.. """
        self.info.owner.set_can_previous(False)
        self.queue_draw()

        t = threading.Thread(target=self.load_disks)
        t.daemon = True
        t.start()
        return False

    def prepare(self, info):
        self.info = info
        self.init_view()
        self.info.owner.set_can_next(self.can_continue)