lang barrier bypassed
This commit is contained in:
parent
fc9c39b087
commit
991b42ab49
@ -1,19 +1,11 @@
|
|||||||
use std::{cell::RefCell, env, rc::Rc, sync::OnceLock};
|
use std::{cell::RefCell, env, rc::Rc, sync::OnceLock};
|
||||||
|
|
||||||
use adw::{prelude::*, subclass::prelude::*, *};
|
use adw::{prelude::*, subclass::prelude::*, *};
|
||||||
use gtk::{glib as glib, Orientation::Horizontal, SizeGroup};
|
use gtk::{glib as glib, Orientation::Horizontal};
|
||||||
use glib::{clone, subclass::Signal, Properties};
|
use glib::{clone, subclass::Signal, Properties};
|
||||||
|
|
||||||
use crate::partitioning_page::FstabEntry;
|
use crate::partitioning_page::FstabEntry;
|
||||||
|
|
||||||
struct DriveSizeGroup(gtk::SizeGroup);
|
|
||||||
|
|
||||||
impl Default for DriveSizeGroup {
|
|
||||||
pub fn default(&self) -> Self {
|
|
||||||
DriveSizeGroup::
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ANCHOR: custom_button
|
// ANCHOR: custom_button
|
||||||
// Object holding the state
|
// Object holding the state
|
||||||
#[derive(Properties, Default)]
|
#[derive(Properties, Default)]
|
||||||
@ -30,7 +22,7 @@ pub struct DriveMountRow {
|
|||||||
#[property(get, set)]
|
#[property(get, set)]
|
||||||
partitionscroll: Rc<RefCell<gtk::ScrolledWindow>>,
|
partitionscroll: Rc<RefCell<gtk::ScrolledWindow>>,
|
||||||
#[property(get, set)]
|
#[property(get, set)]
|
||||||
sizegroup: Rc<RefCell<DriveSizeGroup>>,
|
sizegroup: Rc<RefCell<Option<gtk::SizeGroup>>>,
|
||||||
}
|
}
|
||||||
// ANCHOR_END: custom_button
|
// ANCHOR_END: custom_button
|
||||||
|
|
||||||
@ -132,6 +124,31 @@ impl ObjectImpl for DriveMountRow {
|
|||||||
|
|
||||||
obj.append(&partition_row_delete_button);
|
obj.append(&partition_row_delete_button);
|
||||||
|
|
||||||
|
obj.connect_sizegroup_notify(clone!(
|
||||||
|
#[weak]
|
||||||
|
obj,
|
||||||
|
#[weak]
|
||||||
|
partition_row_expander_adw_listbox,
|
||||||
|
#[weak]
|
||||||
|
mountpoint_entry_row,
|
||||||
|
#[weak]
|
||||||
|
mountopts_entry_row,
|
||||||
|
move |_|
|
||||||
|
{
|
||||||
|
match obj.sizegroup() {
|
||||||
|
Some(t) => {
|
||||||
|
t.add_widget(&partition_row_expander_adw_listbox);
|
||||||
|
t.add_widget(&mountpoint_entry_row);
|
||||||
|
t.add_widget(&mountopts_entry_row);
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
// Bind label to number
|
// Bind label to number
|
||||||
// `SYNC_CREATE` ensures that the label will be immediately set
|
// `SYNC_CREATE` ensures that the label will be immediately set
|
||||||
let obj = self.obj();
|
let obj = self.obj();
|
||||||
|
@ -36,6 +36,10 @@ pub fn manual_partitioning_page(
|
|||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
let drive_rows_size_group = gtk::SizeGroup::new(gtk::SizeGroupMode::Horizontal);
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
let content_box = gtk::Box::builder()
|
let content_box = gtk::Box::builder()
|
||||||
.orientation(gtk::Orientation::Vertical)
|
.orientation(gtk::Orientation::Vertical)
|
||||||
.hexpand(true)
|
.hexpand(true)
|
||||||
@ -77,7 +81,7 @@ pub fn manual_partitioning_page(
|
|||||||
partition_method_manual_fstab_entry_array_refcell,
|
partition_method_manual_fstab_entry_array_refcell,
|
||||||
move |_|
|
move |_|
|
||||||
{
|
{
|
||||||
drive_mounts_adw_listbox.append(&create_mount_row(&drive_mounts_adw_listbox, &partition_array_refcell.borrow(), &partition_changed_action, &used_partition_array_refcell, &do_used_part_check_refcell))
|
drive_mounts_adw_listbox.append(&create_mount_row(&drive_mounts_adw_listbox, &drive_rows_size_group, &partition_array_refcell.borrow(), &partition_changed_action, &used_partition_array_refcell, &do_used_part_check_refcell))
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -147,6 +151,7 @@ pub fn manual_partitioning_page(
|
|||||||
|
|
||||||
fn create_mount_row(
|
fn create_mount_row(
|
||||||
listbox: >k::ListBox,
|
listbox: >k::ListBox,
|
||||||
|
drive_rows_size_group: >k::SizeGroup,
|
||||||
partition_array: &Vec<Partition>,
|
partition_array: &Vec<Partition>,
|
||||||
partition_changed_action: &gio::SimpleAction,
|
partition_changed_action: &gio::SimpleAction,
|
||||||
used_partition_array_refcell: &Rc<RefCell<Vec<String>>>,
|
used_partition_array_refcell: &Rc<RefCell<Vec<String>>>,
|
||||||
@ -167,6 +172,8 @@ fn create_mount_row(
|
|||||||
|
|
||||||
row.set_deletable(true);
|
row.set_deletable(true);
|
||||||
|
|
||||||
|
row.set_sizegroup(drive_rows_size_group);
|
||||||
|
|
||||||
let null_checkbutton = gtk::CheckButton::builder().build();
|
let null_checkbutton = gtk::CheckButton::builder().build();
|
||||||
|
|
||||||
for partition in partition_array {
|
for partition in partition_array {
|
||||||
|
Loading…
Reference in New Issue
Block a user