Begin working in root and home ratio selector
This commit is contained in:
parent
ede15c0d54
commit
44334bb034
@ -6,6 +6,9 @@ use adw::{prelude::*};
|
|||||||
use glib::{clone, closure_local};
|
use glib::{clone, closure_local};
|
||||||
use std::{rc::Rc, cell::RefCell};
|
use std::{rc::Rc, cell::RefCell};
|
||||||
|
|
||||||
|
const BOOT_AND_EFI_BYTE_SIZE: f64 = 1611661312.0;
|
||||||
|
const MINIMUM_ROOT_BYTE_SIZE: f64 = 40000000000.0;
|
||||||
|
|
||||||
pub fn automatic_partitioning_page(
|
pub fn automatic_partitioning_page(
|
||||||
main_carousel: &adw::Carousel,
|
main_carousel: &adw::Carousel,
|
||||||
partition_method_type_refcell: &Rc<RefCell<String>>,
|
partition_method_type_refcell: &Rc<RefCell<String>>,
|
||||||
@ -45,6 +48,158 @@ pub fn automatic_partitioning_page(
|
|||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
// Advanced
|
||||||
|
|
||||||
|
let advanced_box = gtk::Box::builder()
|
||||||
|
.orientation(gtk::Orientation::Vertical)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_box_viewport =
|
||||||
|
gtk::ScrolledWindow::builder()
|
||||||
|
.vexpand(true)
|
||||||
|
.hexpand(true)
|
||||||
|
.child(&advanced_box)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
let advanced_home_part_ratio_selection_box = gtk::Box::builder()
|
||||||
|
.orientation(gtk::Orientation::Horizontal)
|
||||||
|
.homogeneous(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_home_part_ratio_selection_frame = gtk::Frame::builder()
|
||||||
|
.label("/ to /home ratio")
|
||||||
|
.child(&advanced_home_part_ratio_selection_box)
|
||||||
|
.margin_top(5)
|
||||||
|
.margin_bottom(5)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_home_part_ratio_selection_slider= gtk::Scale::builder()
|
||||||
|
.draw_value(false)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
let advanced_home_seperation_selection_box = gtk::Box::builder()
|
||||||
|
.orientation(gtk::Orientation::Horizontal)
|
||||||
|
.homogeneous(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_home_seperation_selection_frame = gtk::Frame::builder()
|
||||||
|
.label("/home seperation")
|
||||||
|
.child(&advanced_home_seperation_selection_box)
|
||||||
|
.margin_top(5)
|
||||||
|
.margin_bottom(5)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_home_seperation_selection_checkbutton_subvol = gtk::CheckButton::builder()
|
||||||
|
.label("subvol")
|
||||||
|
.active(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_home_seperation_selection_checkbutton_partition = gtk::CheckButton::builder()
|
||||||
|
.label("partition")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_home_seperation_selection_checkbutton_none = gtk::CheckButton::builder()
|
||||||
|
.label("none")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
advanced_home_seperation_selection_checkbutton_partition.set_group(Some(&advanced_home_seperation_selection_checkbutton_subvol));
|
||||||
|
advanced_home_seperation_selection_checkbutton_none.set_group(Some(&advanced_home_seperation_selection_checkbutton_subvol));
|
||||||
|
|
||||||
|
advanced_home_seperation_selection_checkbutton_partition
|
||||||
|
.bind_property(
|
||||||
|
"active",
|
||||||
|
&advanced_home_part_ratio_selection_frame,
|
||||||
|
"sensitive",
|
||||||
|
)
|
||||||
|
.sync_create()
|
||||||
|
.build();
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
let advanced_filesystem_selection_box = gtk::Box::builder()
|
||||||
|
.orientation(gtk::Orientation::Horizontal)
|
||||||
|
.homogeneous(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_filesystem_selection_frame = gtk::Frame::builder()
|
||||||
|
.label("Filesystem")
|
||||||
|
.child(&advanced_filesystem_selection_box)
|
||||||
|
.margin_top(5)
|
||||||
|
.margin_bottom(5)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_filesystem_selection_checkbutton_btrfs = gtk::CheckButton::builder()
|
||||||
|
.label("BTRFS")
|
||||||
|
.active(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_filesystem_selection_checkbutton_ext4 = gtk::CheckButton::builder()
|
||||||
|
.label("EXT4")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let advanced_filesystem_selection_checkbutton_xfs = gtk::CheckButton::builder()
|
||||||
|
.label("XFS")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
advanced_filesystem_selection_checkbutton_btrfs
|
||||||
|
.bind_property(
|
||||||
|
"active",
|
||||||
|
&advanced_home_seperation_selection_checkbutton_subvol,
|
||||||
|
"sensitive",
|
||||||
|
)
|
||||||
|
.sync_create()
|
||||||
|
.build();
|
||||||
|
|
||||||
|
advanced_filesystem_selection_checkbutton_ext4.connect_toggled(clone!(
|
||||||
|
#[weak]
|
||||||
|
advanced_filesystem_selection_checkbutton_ext4,
|
||||||
|
#[weak]
|
||||||
|
advanced_home_seperation_selection_checkbutton_subvol,
|
||||||
|
#[weak]
|
||||||
|
advanced_home_seperation_selection_checkbutton_partition,
|
||||||
|
move |_|
|
||||||
|
{
|
||||||
|
if advanced_filesystem_selection_checkbutton_ext4.is_active() && advanced_home_seperation_selection_checkbutton_subvol.is_active() {
|
||||||
|
advanced_home_seperation_selection_checkbutton_partition.set_active(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
advanced_filesystem_selection_checkbutton_xfs.connect_toggled(clone!(
|
||||||
|
#[weak]
|
||||||
|
advanced_filesystem_selection_checkbutton_xfs,
|
||||||
|
#[weak]
|
||||||
|
advanced_home_seperation_selection_checkbutton_subvol,
|
||||||
|
#[weak]
|
||||||
|
advanced_home_seperation_selection_checkbutton_partition,
|
||||||
|
move |_|
|
||||||
|
{
|
||||||
|
if advanced_filesystem_selection_checkbutton_xfs.is_active() && advanced_home_seperation_selection_checkbutton_subvol.is_active() {
|
||||||
|
advanced_home_seperation_selection_checkbutton_partition.set_active(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
advanced_filesystem_selection_checkbutton_ext4.set_group(Some(&advanced_filesystem_selection_checkbutton_btrfs));
|
||||||
|
advanced_filesystem_selection_checkbutton_xfs.set_group(Some(&advanced_filesystem_selection_checkbutton_btrfs));
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
let advanced_expander = gtk::Expander::builder()
|
||||||
|
.child(&advanced_box_viewport)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
let devices_selection_expander_row = adw::ExpanderRow::builder()
|
let devices_selection_expander_row = adw::ExpanderRow::builder()
|
||||||
.name("status:disk=none,")
|
.name("status:disk=none,")
|
||||||
.build();
|
.build();
|
||||||
@ -185,6 +340,8 @@ pub fn automatic_partitioning_page(
|
|||||||
partition_method_automatic_disk_nodisk_error_label,
|
partition_method_automatic_disk_nodisk_error_label,
|
||||||
#[weak]
|
#[weak]
|
||||||
partition_method_automatic_disk_small_error_label,
|
partition_method_automatic_disk_small_error_label,
|
||||||
|
#[weak]
|
||||||
|
advanced_home_part_ratio_selection_slider,
|
||||||
#[strong]
|
#[strong]
|
||||||
partition_method_automatic_target_refcell,
|
partition_method_automatic_target_refcell,
|
||||||
#[strong]
|
#[strong]
|
||||||
@ -194,6 +351,14 @@ pub fn automatic_partitioning_page(
|
|||||||
move |_| {
|
move |_| {
|
||||||
disk_check(&device_button, &devices_selection_expander_row, &partition_method_automatic_disk_small_error_label, &device.block_name, device.block_size);
|
disk_check(&device_button, &devices_selection_expander_row, &partition_method_automatic_disk_small_error_label, &device.block_name, device.block_size);
|
||||||
partition_method_automatic_disk_nodisk_error_label.set_visible(false);
|
partition_method_automatic_disk_nodisk_error_label.set_visible(false);
|
||||||
|
let usable_disk_space = device.block_size - BOOT_AND_EFI_BYTE_SIZE;
|
||||||
|
let default_root_size = if (usable_disk_space * 40.0) / 100.0 > 100000000000.0 {
|
||||||
|
100000000000.0
|
||||||
|
} else {
|
||||||
|
MINIMUM_ROOT_BYTE_SIZE
|
||||||
|
};
|
||||||
|
advanced_home_part_ratio_selection_slider.set_range(MINIMUM_ROOT_BYTE_SIZE, device.block_size);
|
||||||
|
advanced_home_part_ratio_selection_slider.set_value(default_root_size);
|
||||||
*partition_method_automatic_target_refcell.borrow_mut() = String::from(&device.block_name);
|
*partition_method_automatic_target_refcell.borrow_mut() = String::from(&device.block_name);
|
||||||
if check_for_errors(&error_labels) {
|
if check_for_errors(&error_labels) {
|
||||||
automatic_partitioning_page.set_next_sensitive(true)
|
automatic_partitioning_page.set_next_sensitive(true)
|
||||||
@ -298,153 +463,6 @@ pub fn automatic_partitioning_page(
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Advanced
|
|
||||||
|
|
||||||
let advanced_box = gtk::Box::builder()
|
|
||||||
.orientation(gtk::Orientation::Vertical)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_box_viewport =
|
|
||||||
gtk::ScrolledWindow::builder()
|
|
||||||
.vexpand(true)
|
|
||||||
.hexpand(true)
|
|
||||||
.child(&advanced_box)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
let advanced_home_part_ratio_selection_box = gtk::Box::builder()
|
|
||||||
.orientation(gtk::Orientation::Horizontal)
|
|
||||||
.homogeneous(true)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_home_part_ratio_selection_frame = gtk::Frame::builder()
|
|
||||||
.label("/ to /home ratio")
|
|
||||||
.child(&advanced_home_part_ratio_selection_box)
|
|
||||||
.margin_top(5)
|
|
||||||
.margin_bottom(5)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_home_part_ratio_selection_slider= gtk::Scale::builder()
|
|
||||||
.build();
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
let advanced_home_seperation_selection_box = gtk::Box::builder()
|
|
||||||
.orientation(gtk::Orientation::Horizontal)
|
|
||||||
.homogeneous(true)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_home_seperation_selection_frame = gtk::Frame::builder()
|
|
||||||
.label("/home seperation")
|
|
||||||
.child(&advanced_home_seperation_selection_box)
|
|
||||||
.margin_top(5)
|
|
||||||
.margin_bottom(5)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_home_seperation_selection_checkbutton_subvol = gtk::CheckButton::builder()
|
|
||||||
.label("subvol")
|
|
||||||
.active(true)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_home_seperation_selection_checkbutton_partition = gtk::CheckButton::builder()
|
|
||||||
.label("partition")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_home_seperation_selection_checkbutton_none = gtk::CheckButton::builder()
|
|
||||||
.label("none")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
advanced_home_seperation_selection_checkbutton_partition.set_group(Some(&advanced_home_seperation_selection_checkbutton_subvol));
|
|
||||||
advanced_home_seperation_selection_checkbutton_none.set_group(Some(&advanced_home_seperation_selection_checkbutton_subvol));
|
|
||||||
|
|
||||||
advanced_home_seperation_selection_checkbutton_partition
|
|
||||||
.bind_property(
|
|
||||||
"active",
|
|
||||||
&advanced_home_part_ratio_selection_frame,
|
|
||||||
"sensitive",
|
|
||||||
)
|
|
||||||
.sync_create()
|
|
||||||
.build();
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
let advanced_filesystem_selection_box = gtk::Box::builder()
|
|
||||||
.orientation(gtk::Orientation::Horizontal)
|
|
||||||
.homogeneous(true)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_filesystem_selection_frame = gtk::Frame::builder()
|
|
||||||
.label("Filesystem")
|
|
||||||
.child(&advanced_filesystem_selection_box)
|
|
||||||
.margin_top(5)
|
|
||||||
.margin_bottom(5)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_filesystem_selection_checkbutton_btrfs = gtk::CheckButton::builder()
|
|
||||||
.label("BTRFS")
|
|
||||||
.active(true)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_filesystem_selection_checkbutton_ext4 = gtk::CheckButton::builder()
|
|
||||||
.label("EXT4")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let advanced_filesystem_selection_checkbutton_xfs = gtk::CheckButton::builder()
|
|
||||||
.label("XFS")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
advanced_filesystem_selection_checkbutton_btrfs
|
|
||||||
.bind_property(
|
|
||||||
"active",
|
|
||||||
&advanced_home_seperation_selection_checkbutton_subvol,
|
|
||||||
"sensitive",
|
|
||||||
)
|
|
||||||
.sync_create()
|
|
||||||
.build();
|
|
||||||
|
|
||||||
advanced_filesystem_selection_checkbutton_ext4.connect_toggled(clone!(
|
|
||||||
#[weak]
|
|
||||||
advanced_filesystem_selection_checkbutton_ext4,
|
|
||||||
#[weak]
|
|
||||||
advanced_home_seperation_selection_checkbutton_subvol,
|
|
||||||
#[weak]
|
|
||||||
advanced_home_seperation_selection_checkbutton_partition,
|
|
||||||
move |_|
|
|
||||||
{
|
|
||||||
if advanced_filesystem_selection_checkbutton_ext4.is_active() && advanced_home_seperation_selection_checkbutton_subvol.is_active() {
|
|
||||||
advanced_home_seperation_selection_checkbutton_partition.set_active(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
advanced_filesystem_selection_checkbutton_xfs.connect_toggled(clone!(
|
|
||||||
#[weak]
|
|
||||||
advanced_filesystem_selection_checkbutton_xfs,
|
|
||||||
#[weak]
|
|
||||||
advanced_home_seperation_selection_checkbutton_subvol,
|
|
||||||
#[weak]
|
|
||||||
advanced_home_seperation_selection_checkbutton_partition,
|
|
||||||
move |_|
|
|
||||||
{
|
|
||||||
if advanced_filesystem_selection_checkbutton_xfs.is_active() && advanced_home_seperation_selection_checkbutton_subvol.is_active() {
|
|
||||||
advanced_home_seperation_selection_checkbutton_partition.set_active(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
advanced_filesystem_selection_checkbutton_ext4.set_group(Some(&advanced_filesystem_selection_checkbutton_btrfs));
|
|
||||||
advanced_filesystem_selection_checkbutton_xfs.set_group(Some(&advanced_filesystem_selection_checkbutton_btrfs));
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
let advanced_expander = gtk::Expander::builder()
|
|
||||||
.child(&advanced_box_viewport)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
devices_selection_expander_row_viewport_listbox.append(&devices_selection_expander_row);
|
devices_selection_expander_row_viewport_listbox.append(&devices_selection_expander_row);
|
||||||
|
Loading…
Reference in New Issue
Block a user