RR: Fix the new bs issues

This commit is contained in:
Ward from fusion-voyager-3 2024-02-19 20:44:10 +03:00
parent fc546fbc23
commit 87ae8a7c37
17 changed files with 256 additions and 159 deletions

View File

@ -4,10 +4,10 @@ export LANG=en_US.UTF8
set -e set -e
DISK="$(cat "/tmp/pika-installer-gtk4-target-auto.txt")" S_DISK="$(cat "/tmp/pika-installer-gtk4-target-auto.txt")"
LOCALE="$(cat "/tmp/pika-installer-gtk4-lang.txt")" S_LOCALE="$(cat "/tmp/pika-installer-gtk4-lang.txt")"
KEYBOARD="$(cat "/tmp/pika-installer-gtk4-keyboard.txt")" S_KEYBOARD="$(cat "/tmp/pika-installer-gtk4-keyboard.txt")"
TIMEZONE="$(cat "/tmp/pika-installer-gtk4-timezone.txt")" S_TIMEZONE="$(cat "/tmp/pika-installer-gtk4-timezone.txt")"
p3_size=$(echo "scale=2 ; $(cat /tmp/pika-installer-p3-size.txt) / 1024 / 1024" | bc | cut -f1 -d".") p3_size=$(echo "scale=2 ; $(cat /tmp/pika-installer-p3-size.txt) / 1024 / 1024" | bc | cut -f1 -d".")
@ -15,83 +15,83 @@ touch "/tmp/pika-installer-gtk4-status-parting.txt"
if [[ ! -f "/tmp/pika-installer-gtk4-target-automatic-luks.txt" ]] if [[ ! -f "/tmp/pika-installer-gtk4-target-automatic-luks.txt" ]]
then then
for part in $(sudo /usr/lib/pika/pika-installer-gtk4/scripts/partition-utility.sh get_partitions | grep ${DISK}); do for part in $(sudo /usr/lib/pika/pika-installer-gtk4/scripts/partition-utility.sh get_partitions | grep ${S_DISK}); do
PARTITION="/dev/$part" PARTITION="/dev/$part"
sudo swapoff $PARTITION || true sudo swapoff $PARTITION || true
done done
wipefs -af /dev/${DISK} wipefs -af /dev/${S_DISK}
# Partition the drives # Partition the drives
parted -s -a optimal /dev/${DISK} mklabel gpt \ parted -s -a optimal /dev/${S_DISK} mklabel gpt \
mkpart "linux-efi" 1MiB 513Mib \ mkpart "linux-efi" 1MiB 513Mib \
mkpart "linux-boot" 513Mib 1537Mib \ mkpart "linux-boot" 513Mib 1537Mib \
mkpart "linux-root" 1537Mib "$p3_size"Mib \ mkpart "linux-root" 1537Mib "$p3_size"Mib \
mkpart "linux-home" "$p3_size"Mib 100% \ mkpart "linux-home" "$p3_size"Mib 100% \
print print
# add p to partition if it's nvme # add p to partition if it's nvme
if echo ${DISK} | grep -i "nvme" if echo ${S_DISK} | grep -i "nvme"
then then
# #
sleep 10 sleep 10
# Add filesystems # Add filesystems
yes | mkfs -t vfat -F 32 /dev/${DISK}p1 yes | mkfs -t vfat -F 32 /dev/${S_DISK}p1
yes | mkfs -t ext4 /dev/${DISK}p2 yes | mkfs -t ext4 /dev/${S_DISK}p2
yes | mkfs.btrfs -f /dev/${DISK}p3 yes | mkfs.btrfs -f /dev/${S_DISK}p3
yes | mkfs.btrfs -f /dev/${DISK}p4 yes | mkfs.btrfs -f /dev/${S_DISK}p4
sleep 2 sleep 2
# Begin Mounting # Begin Mounting
mkdir -p /media/pika-install-mount mkdir -p /media/pika-install-mount
mount /dev/${DISK}p3 /media/pika-install-mount/ mount /dev/${S_DISK}p3 /media/pika-install-mount/
mkdir -p /media/pika-install-mount/home mkdir -p /media/pika-install-mount/home
mount /dev/${DISK}p4 /media/pika-install-mount/home mount /dev/${S_DISK}p4 /media/pika-install-mount/home
mkdir -p /media/pika-install-mount/boot mkdir -p /media/pika-install-mount/boot
mount /dev/${DISK}p2 /media/pika-install-mount/boot mount /dev/${S_DISK}p2 /media/pika-install-mount/boot
mkdir -p /media/pika-install-mount/boot/efi mkdir -p /media/pika-install-mount/boot/efi
mount /dev/${DISK}p1 /media/pika-install-mount/boot/efi mount /dev/${S_DISK}p1 /media/pika-install-mount/boot/efi
pikainstall -r /media/pika-install-mount/ -l ${LOCALE} -k ${KEYBOARD} -t ${TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1 pikainstall -r /media/pika-install-mount/ -l ${S_LOCALE} -k ${S_KEYBOARD} -t ${S_TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1
else else
sleep 10 sleep 10
# Add filesystems # Add filesystems
yes | mkfs -t vfat -F 32 /dev/${DISK}1 yes | mkfs -t vfat -F 32 /dev/${S_DISK}1
yes | mkfs -t ext4 /dev/${DISK}2 yes | mkfs -t ext4 /dev/${S_DISK}2
yes | mkfs.btrfs -f /dev/${DISK}3 yes | mkfs.btrfs -f /dev/${S_DISK}3
yes | mkfs.btrfs -f /dev/${DISK}4 yes | mkfs.btrfs -f /dev/${S_DISK}4
sleep 2 sleep 2
# Begin Mounting # Begin Mounting
mkdir -p /media/pika-install-mount mkdir -p /media/pika-install-mount
mount /dev/${DISK}3 /media/pika-install-mount/ mount /dev/${S_DISK}3 /media/pika-install-mount/
mkdir -p /media/pika-install-mount/home mkdir -p /media/pika-install-mount/home
mount /dev/${DISK}4 /media/pika-install-mount/home mount /dev/${S_DISK}4 /media/pika-install-mount/home
mkdir -p /media/pika-install-mount/boot mkdir -p /media/pika-install-mount/boot
mount /dev/${DISK}2 /media/pika-install-mount/boot mount /dev/${S_DISK}2 /media/pika-install-mount/boot
mkdir -p /media/pika-install-mount/boot/efi mkdir -p /media/pika-install-mount/boot/efi
mount /dev/${DISK}1 /media/pika-install-mount/boot/efi mount /dev/${S_DISK}1 /media/pika-install-mount/boot/efi
pikainstall -r /media/pika-install-mount/ -l ${LOCALE} -k ${KEYBOARD} -t ${TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1 pikainstall -r /media/pika-install-mount/ -l ${S_LOCALE} -k ${S_KEYBOARD} -t ${S_TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1
fi fi
else else
LUKS_KEY="$(cat "/tmp/pika-installer-gtk4-target-automatic-luks.txt")" S_LUKS_KEY="$(cat "/tmp/pika-installer-gtk4-target-automatic-luks.txt")"
for part in $(sudo /usr/lib/pika/pika-installer-gtk4/scripts/partition-utility.sh get_partitions | grep ${DISK}); do for part in $(sudo /usr/lib/pika/pika-installer-gtk4/scripts/partition-utility.sh get_partitions | grep ${S_DISK}); do
PARTITION="/dev/$part" PARTITION="/dev/$part"
sudo swapoff $PARTITION || true sudo swapoff $PARTITION || true
done done
wipefs -af /dev/${DISK} wipefs -af /dev/${S_DISK}
# Partition the drives # Partition the drives
parted -s -a optimal /dev/${DISK} mklabel gpt \ parted -s -a optimal /dev/${S_DISK} mklabel gpt \
mkpart "linux-efi" 1MiB 513Mib \ mkpart "linux-efi" 1MiB 513Mib \
mkpart "linux-boot" 513Mib 1537Mib \ mkpart "linux-boot" 513Mib 1537Mib \
mkpart "linux-root" 1537Mib "$p3_size"Mib \ mkpart "linux-root" 1537Mib "$p3_size"Mib \
mkpart "linux-home" "$p3_size"Mib 100% \ mkpart "linux-home" "$p3_size"Mib 100% \
print print
# add p to partition if it's nvme # add p to partition if it's nvme
if echo ${DISK} | grep -i "nvme" if echo ${S_DISK} | grep -i "nvme"
then then
sleep 10 sleep 10
# Add filesystems # Add filesystems
yes | mkfs -t vfat -F 32 /dev/${DISK}p1 yes | mkfs -t vfat -F 32 /dev/${S_DISK}p1
yes | mkfs -t ext4 /dev/${DISK}p2 yes | mkfs -t ext4 /dev/${S_DISK}p2
printf ${LUKS_KEY} | cryptsetup -q -v --type luks2 luksFormat /dev/${DISK}p3 printf ${S_LUKS_KEY} | cryptsetup -q -v --type luks2 luksFormat /dev/${S_DISK}p3
printf ${LUKS_KEY} | cryptsetup -q -v --type luks2 luksFormat /dev/${DISK}p4 printf ${S_LUKS_KEY} | cryptsetup -q -v --type luks2 luksFormat /dev/${S_DISK}p4
printf ${LUKS_KEY} | cryptsetup -q -v luksOpen /dev/${DISK}p3 crypt_root printf ${S_LUKS_KEY} | cryptsetup -q -v luksOpen /dev/${S_DISK}p3 crypt_root
printf ${LUKS_KEY} | cryptsetup -q -v luksOpen /dev/${DISK}p4 crypt_home printf ${S_LUKS_KEY} | cryptsetup -q -v luksOpen /dev/${S_DISK}p4 crypt_home
yes | mkfs.btrfs -f /dev/mapper/crypt_root yes | mkfs.btrfs -f /dev/mapper/crypt_root
yes | mkfs.btrfs -f /dev/mapper/crypt_home yes | mkfs.btrfs -f /dev/mapper/crypt_home
sleep 2 sleep 2
@ -101,19 +101,19 @@ else
mkdir -p /media/pika-install-mount/home mkdir -p /media/pika-install-mount/home
mount /dev/mapper/crypt_home /media/pika-install-mount/home mount /dev/mapper/crypt_home /media/pika-install-mount/home
mkdir -p /media/pika-install-mount/boot mkdir -p /media/pika-install-mount/boot
mount /dev/${DISK}p2 /media/pika-install-mount/boot mount /dev/${S_DISK}p2 /media/pika-install-mount/boot
mkdir -p /media/pika-install-mount/boot/efi mkdir -p /media/pika-install-mount/boot/efi
mount /dev/${DISK}p1 /media/pika-install-mount/boot/efi mount /dev/${S_DISK}p1 /media/pika-install-mount/boot/efi
pikainstall -r /media/pika-install-mount/ -c ${LUKS_KEY} -l ${LOCALE} -k ${KEYBOARD} -t ${TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1 pikainstall -r /media/pika-install-mount/ -c ${S_LUKS_KEY} -l ${S_LOCALE} -k ${S_KEYBOARD} -t ${S_TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1
else else
sleep 10 sleep 10
# Add filesystems # Add filesystems
yes | mkfs -t vfat -F 32 /dev/${DISK}1 yes | mkfs -t vfat -F 32 /dev/${S_DISK}1
yes | mkfs -t ext4 /dev/${DISK}2 yes | mkfs -t ext4 /dev/${S_DISK}2
printf ${LUKS_KEY} | cryptsetup -q -v --type luks2 luksFormat /dev/${DISK}3 printf ${S_LUKS_KEY} | cryptsetup -q -v --type luks2 luksFormat /dev/${S_DISK}3
printf ${LUKS_KEY} | cryptsetup -q -v --type luks2 luksFormat /dev/${DISK}4 printf ${S_LUKS_KEY} | cryptsetup -q -v --type luks2 luksFormat /dev/${S_DISK}4
printf ${LUKS_KEY} | cryptsetup -q -v luksOpen /dev/${DISK}3 crypt_root printf ${S_LUKS_KEY} | cryptsetup -q -v luksOpen /dev/${S_DISK}3 crypt_root
printf ${LUKS_KEY} | cryptsetup -q -v luksOpen /dev/${DISK}4 crypt_home printf ${S_LUKS_KEY} | cryptsetup -q -v luksOpen /dev/${S_DISK}4 crypt_home
yes | mkfs.btrfs -f /dev/mapper/crypt_root yes | mkfs.btrfs -f /dev/mapper/crypt_root
yes | mkfs.btrfs -f /dev/mapper/crypt_home yes | mkfs.btrfs -f /dev/mapper/crypt_home
sleep 2 sleep 2
@ -123,9 +123,9 @@ else
mkdir -p /media/pika-install-mount/home mkdir -p /media/pika-install-mount/home
mount /dev/mapper/crypt_home /media/pika-install-mount/home mount /dev/mapper/crypt_home /media/pika-install-mount/home
mkdir -p /media/pika-install-mount/boot mkdir -p /media/pika-install-mount/boot
mount /dev/${DISK}2 /media/pika-install-mount/boot mount /dev/${S_DISK}2 /media/pika-install-mount/boot
mkdir -p /media/pika-install-mount/boot/efi mkdir -p /media/pika-install-mount/boot/efi
mount /dev/${DISK}1 /media/pika-install-mount/boot/efi mount /dev/${S_DISK}1 /media/pika-install-mount/boot/efi
pikainstall -r /media/pika-install-mount/ -c ${LUKS_KEY} -l ${LOCALE} -k ${KEYBOARD} -t ${TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1 pikainstall -r /media/pika-install-mount/ -c ${S_LUKS_KEY} -l ${S_LOCALE} -k ${S_KEYBOARD} -t ${S_TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1
fi fi
fi fi

View File

@ -6,12 +6,12 @@ exec &> >(tee /tmp/pika-installer-gtk4-log)
if [[ -f /tmp/pika-installer-gtk4-target-manual.txt ]] if [[ -f /tmp/pika-installer-gtk4-target-manual.txt ]]
then then
sudo /usr/lib/pika/pika-installer-gtk4/scripts/manual-partition-install.sh sudo /usr/lib/pika/pika-installer-gtk4/scripts/manual-partition-install.sh || touch /tmp/pika-installer-gtk4-fail.txt
else else
if [[ -f /tmp/pika-installer-gtk4-target-auto.txt ]] if [[ -f /tmp/pika-installer-gtk4-target-auto.txt ]]
then then
sudo /usr/lib/pika/pika-installer-gtk4/scripts/automatic-partition-install.sh sudo /usr/lib/pika/pika-installer-gtk4/scripts/automatic-partition-install.sh || touch /tmp/pika-installer-gtk4-fail.txt
else else
echo "critical installer error" && exit 1 && touch /tmp/pika-installer-gtk4-fail.txt echo "critical installer error" && touch /tmp/pika-installer-gtk4-fail.txt && exit 1
fi fi
fi fi

View File

@ -4,9 +4,9 @@ export LANG=en_US.UTF8
set -e set -e
LOCALE="$(cat "/tmp/pika-installer-gtk4-lang.txt")" S_LOCALE="$(cat "/tmp/pika-installer-gtk4-lang.txt")"
KEYBOARD="$(cat "/tmp/pika-installer-gtk4-keyboard.txt")" S_KEYBOARD="$(cat "/tmp/pika-installer-gtk4-keyboard.txt")"
TIMEZONE="$(cat "/tmp/pika-installer-gtk4-timezone.txt")" S_TIMEZONE="$(cat "/tmp/pika-installer-gtk4-timezone.txt")"
touch "/tmp/pika-installer-gtk4-status-parting.txt" touch "/tmp/pika-installer-gtk4-status-parting.txt"
@ -57,7 +57,7 @@ done
if [[ ! -f "/tmp/pika-installer-gtk4-crypttab" ]] if [[ ! -f "/tmp/pika-installer-gtk4-crypttab" ]]
then then
pikainstall -r /media/pika-install-mount/ --manual 1 -l ${LOCALE} -k ${KEYBOARD} -t ${TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1 pikainstall -r /media/pika-install-mount/ --manual 1 -l ${S_LOCALE} -k ${S_KEYBOARD} -t ${S_TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1
else else
pikainstall -r /media/pika-install-mount/ --manual 2 -l ${LOCALE} -k ${KEYBOARD} -t ${TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1 pikainstall -r /media/pika-install-mount/ --manual 2 -l ${S_LOCALE} -k ${S_KEYBOARD} -t ${S_TIMEZONE} && touch /tmp/pika-installer-gtk4-successful.txt || touch /tmp/pika-installer-gtk4-fail.txt && exit 1
fi fi

View File

@ -321,3 +321,10 @@ msgstr "Done"
msgid "partitioning" msgid "partitioning"
msgstr "Partitioning" msgstr "Partitioning"
msgid "luks2_password_confirm"
msgstr "Confirm LUKS Password"
msgid "luks_not_match"
msgstr "The LUKS Passwords do not match!"

View File

@ -6,7 +6,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::{gettext}; use gettextrs::gettext;
use std::io::BufRead; use std::io::BufRead;
use std::io::BufReader; use std::io::BufReader;
@ -127,6 +127,15 @@ pub fn automatic_partitioning(
.build(); .build();
partition_method_automatic_luks_error_label.add_css_class("small_error_text"); partition_method_automatic_luks_error_label.add_css_class("small_error_text");
let partition_method_automatic_luks_error2_label = gtk::Label::builder()
.label(gettext("luks_not_match"))
.halign(Align::Start)
.valign(Align::End)
.vexpand(true)
.visible(false)
.build();
partition_method_automatic_luks_error2_label.add_css_class("small_error_text");
let partition_method_automatic_luks_box = gtk::Box::builder() let partition_method_automatic_luks_box = gtk::Box::builder()
.orientation(Orientation::Horizontal) .orientation(Orientation::Horizontal)
.build(); .build();
@ -153,6 +162,21 @@ pub fn automatic_partitioning(
.sensitive(false) .sensitive(false)
.build(); .build();
let partition_method_automatic_luks_password_confirm_entry = adw::PasswordEntryRow::builder()
.title(gettext("luks2_password_confirm"))
.hexpand(true)
.sensitive(true)
.visible(false)
.build();
let _partition_method_automatic_luks_password = partition_method_automatic_luks_password_entry
.bind_property(
"sensitive",
&partition_method_automatic_luks_password_confirm_entry,
"visible",
)
.sync_create()
.build();
let partition_method_automatic_target_buffer = gtk::TextBuffer::builder().build(); let partition_method_automatic_target_buffer = gtk::TextBuffer::builder().build();
let partition_method_automatic_luks_buffer = gtk::TextBuffer::builder().build(); let partition_method_automatic_luks_buffer = gtk::TextBuffer::builder().build();
@ -207,59 +231,102 @@ pub fn automatic_partitioning(
})); }));
} }
partition_method_automatic_luks_checkbutton.connect_toggled(clone!(@weak partition_method_automatic_luks_checkbutton, @weak partition_method_automatic_luks_password_entry, @weak partition_method_automatic_disk_error_label, @weak partition_method_automatic_luks_error_label, @weak bottom_next_button, @weak partition_method_automatic_target_buffer, @weak partition_method_automatic_luks_buffer => move |_| { partition_method_automatic_luks_checkbutton.connect_toggled(clone!(@weak partition_method_automatic_luks_error2_label,@weak partition_method_automatic_luks_checkbutton, @weak partition_method_automatic_luks_password_confirm_entry, @weak partition_method_automatic_luks_password_entry, @weak partition_method_automatic_disk_error_label, @weak partition_method_automatic_luks_error_label, @weak bottom_next_button, @weak partition_method_automatic_target_buffer, @weak partition_method_automatic_luks_buffer => move |_| {
if partition_method_automatic_luks_checkbutton.is_active() == true { if partition_method_automatic_luks_checkbutton.is_active() == true {
partition_method_automatic_luks_password_entry.set_sensitive(true); partition_method_automatic_luks_password_entry.set_sensitive(true);
if partition_method_automatic_luks_password_entry.text() != partition_method_automatic_luks_password_confirm_entry.text() {
partition_method_automatic_luks_error2_label.set_visible(true)
} else {
partition_method_automatic_luks_error2_label.set_visible(false)
}
if partition_method_automatic_luks_password_entry.text().to_string().is_empty() { if partition_method_automatic_luks_password_entry.text().to_string().is_empty() {
partition_method_automatic_luks_error_label.set_visible(true); partition_method_automatic_luks_error_label.set_visible(true);
bottom_next_button.set_sensitive(false); bottom_next_button.set_sensitive(false);
} else { } else {
partition_method_automatic_luks_error_label.set_visible(false); partition_method_automatic_luks_error_label.set_visible(false);
if partition_method_automatic_disk_error_label.get_visible() { if !partition_method_automatic_disk_error_label.get_visible() && !partition_method_automatic_luks_error_label.get_visible() && !partition_method_automatic_luks_error2_label.get_visible() {
// bottom_next_button.set_sensitive(true);
} else { } else {
bottom_next_button.set_sensitive(true); bottom_next_button.set_sensitive(false);
} }
} }
} else { } else {
partition_method_automatic_luks_password_entry.set_sensitive(false); partition_method_automatic_luks_password_entry.set_sensitive(false);
partition_method_automatic_luks_error_label.set_visible(false); partition_method_automatic_luks_error_label.set_visible(false);
if partition_method_automatic_disk_error_label.get_visible() { partition_method_automatic_luks_error2_label.set_visible(false);
// if !partition_method_automatic_disk_error_label.get_visible() && !partition_method_automatic_luks_error_label.get_visible() && !partition_method_automatic_luks_error2_label.get_visible() {
} else {
bottom_next_button.set_sensitive(true); bottom_next_button.set_sensitive(true);
} else {
bottom_next_button.set_sensitive(false);
} }
} }
})); }));
partition_method_automatic_luks_password_entry.connect_changed(clone!(@weak partition_method_automatic_luks_checkbutton, @weak partition_method_automatic_luks_password_entry, @weak partition_method_automatic_disk_error_label, @weak partition_method_automatic_luks_error_label, @weak bottom_next_button, @weak partition_method_automatic_luks_buffer => move |_| { partition_method_automatic_luks_password_entry.connect_changed(clone!(@weak partition_method_automatic_luks_error2_label,@weak partition_method_automatic_luks_checkbutton, @weak partition_method_automatic_luks_password_confirm_entry, @weak partition_method_automatic_luks_password_entry, @weak partition_method_automatic_disk_error_label, @weak partition_method_automatic_luks_error_label, @weak bottom_next_button, @weak partition_method_automatic_target_buffer, @weak partition_method_automatic_luks_buffer => move |_| {
if partition_method_automatic_luks_checkbutton.is_active() == true { if partition_method_automatic_luks_checkbutton.is_active() == true {
partition_method_automatic_luks_password_entry.set_sensitive(true); partition_method_automatic_luks_password_entry.set_sensitive(true);
if partition_method_automatic_luks_password_entry.text().to_string().is_empty() { if partition_method_automatic_luks_password_entry.text() != partition_method_automatic_luks_password_confirm_entry.text() {
partition_method_automatic_luks_error_label.set_visible(true); partition_method_automatic_luks_error2_label.set_visible(true)
bottom_next_button.set_sensitive(false);
} else {
partition_method_automatic_luks_error_label.set_visible(false);
if partition_method_automatic_disk_error_label.get_visible() {
//
} else { } else {
partition_method_automatic_luks_buffer.set_text(&partition_method_automatic_luks_password_entry.text().to_string()); partition_method_automatic_luks_error2_label.set_visible(false)
}
if partition_method_automatic_luks_password_entry.text().to_string().is_empty() {
partition_method_automatic_luks_error_label.set_visible(true);
bottom_next_button.set_sensitive(false);
} else {
partition_method_automatic_luks_error_label.set_visible(false);
if !partition_method_automatic_disk_error_label.get_visible() && !partition_method_automatic_luks_error_label.get_visible() && !partition_method_automatic_luks_error2_label.get_visible() {
bottom_next_button.set_sensitive(true); bottom_next_button.set_sensitive(true);
} else {
bottom_next_button.set_sensitive(false);
}
}
} else {
partition_method_automatic_luks_password_entry.set_sensitive(false);
partition_method_automatic_luks_error_label.set_visible(false);
partition_method_automatic_luks_error2_label.set_visible(false);
if !partition_method_automatic_disk_error_label.get_visible() && !partition_method_automatic_luks_error_label.get_visible() && !partition_method_automatic_luks_error2_label.get_visible() {
bottom_next_button.set_sensitive(true);
} else {
bottom_next_button.set_sensitive(false);
} }
} }
} else { }));
partition_method_automatic_luks_password_entry.set_sensitive(false);
partition_method_automatic_luks_error_label.set_visible(false); partition_method_automatic_luks_password_confirm_entry.connect_changed(clone!(@weak partition_method_automatic_luks_error2_label,@weak partition_method_automatic_luks_checkbutton, @weak partition_method_automatic_luks_password_confirm_entry, @weak partition_method_automatic_luks_password_entry, @weak partition_method_automatic_disk_error_label, @weak partition_method_automatic_luks_error_label, @weak bottom_next_button, @weak partition_method_automatic_target_buffer, @weak partition_method_automatic_luks_buffer => move |_| {
if partition_method_automatic_disk_error_label.get_visible() { if partition_method_automatic_luks_checkbutton.is_active() == true {
// partition_method_automatic_luks_password_entry.set_sensitive(true);
if partition_method_automatic_luks_password_entry.text() != partition_method_automatic_luks_password_confirm_entry.text() {
partition_method_automatic_luks_error2_label.set_visible(true)
} else {
partition_method_automatic_luks_error2_label.set_visible(false)
}
if partition_method_automatic_luks_password_entry.text().to_string().is_empty() {
partition_method_automatic_luks_error_label.set_visible(true);
bottom_next_button.set_sensitive(false);
} else {
partition_method_automatic_luks_error_label.set_visible(false);
if !partition_method_automatic_disk_error_label.get_visible() && !partition_method_automatic_luks_error_label.get_visible() && !partition_method_automatic_luks_error2_label.get_visible() {
bottom_next_button.set_sensitive(true);
} else {
bottom_next_button.set_sensitive(false);
}
}
} else { } else {
partition_method_automatic_luks_buffer.set_text(&partition_method_automatic_luks_password_entry.text().to_string()); partition_method_automatic_luks_password_entry.set_sensitive(false);
bottom_next_button.set_sensitive(true); partition_method_automatic_luks_error_label.set_visible(false);
partition_method_automatic_luks_error2_label.set_visible(false);
if !partition_method_automatic_disk_error_label.get_visible() && !partition_method_automatic_luks_error_label.get_visible() && !partition_method_automatic_luks_error2_label.get_visible() {
bottom_next_button.set_sensitive(true);
} else {
bottom_next_button.set_sensitive(false);
}
} }
} }));
}));
partition_method_automatic_luks_listbox.append(&partition_method_automatic_luks_password_entry); partition_method_automatic_luks_listbox.append(&partition_method_automatic_luks_password_entry);
partition_method_automatic_luks_listbox
.append(&partition_method_automatic_luks_password_confirm_entry);
partition_method_automatic_luks_box.append(&partition_method_automatic_luks_checkbutton); partition_method_automatic_luks_box.append(&partition_method_automatic_luks_checkbutton);
partition_method_automatic_luks_box.append(&partition_method_automatic_luks_listbox); partition_method_automatic_luks_box.append(&partition_method_automatic_luks_listbox);
partition_method_automatic_header_box.append(&partition_method_automatic_header_text); partition_method_automatic_header_box.append(&partition_method_automatic_header_text);
@ -270,6 +337,7 @@ pub fn automatic_partitioning(
partition_method_automatic_main_box.append(&devices_selection_expander_row_viewport_listbox); partition_method_automatic_main_box.append(&devices_selection_expander_row_viewport_listbox);
partition_method_automatic_main_box.append(&partition_method_automatic_luks_box); partition_method_automatic_main_box.append(&partition_method_automatic_luks_box);
partition_method_automatic_main_box.append(&partition_method_automatic_luks_error_label); partition_method_automatic_main_box.append(&partition_method_automatic_luks_error_label);
partition_method_automatic_main_box.append(&partition_method_automatic_luks_error2_label);
partition_method_automatic_main_box.append(&partition_method_automatic_disk_error_label); partition_method_automatic_main_box.append(&partition_method_automatic_disk_error_label);
partitioning_stack.add_titled( partitioning_stack.add_titled(

View File

@ -6,7 +6,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::{gettext}; use gettextrs::gettext;
use std::path::Path; use std::path::Path;
@ -128,7 +128,11 @@ pub fn build_ui(app: &adw::Application) {
partitioning_page(&done_main_box, &install_main_box, &content_stack, &window); partitioning_page(&done_main_box, &install_main_box, &content_stack, &window);
//// Add the install_main_box as page: install_page, Give it nice title //// Add the install_main_box as page: install_page, Give it nice title
content_stack.add_titled(&install_main_box, Some("install_page"), &gettext("installation")); content_stack.add_titled(
&install_main_box,
Some("install_page"),
&gettext("installation"),
);
// Add done_page.rs as a page for content_stack // Add done_page.rs as a page for content_stack
content_stack.add_titled(&done_main_box, Some("done_page"), &gettext("done")); content_stack.add_titled(&done_main_box, Some("done_page"), &gettext("done"));

View File

@ -6,16 +6,13 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use crate::config::{DISTRO_ICON}; use crate::config::DISTRO_ICON;
use gettextrs::{gettext}; use gettextrs::gettext;
use std::path::Path; use std::path::Path;
use std::process::Command; use std::process::Command;
pub fn done_page( pub fn done_page(done_main_box: &gtk::Box, window: &adw::ApplicationWindow) {
done_main_box: &gtk::Box,
window: &adw::ApplicationWindow,
) {
// the header box for the installation_successful page // the header box for the installation_successful page
let done_header_box = gtk::Box::builder() let done_header_box = gtk::Box::builder()
.orientation(Orientation::Horizontal) .orientation(Orientation::Horizontal)

View File

@ -1,14 +1,10 @@
use std::{ use std::{cell::RefCell, rc::Rc, sync::OnceLock};
cell::{RefCell},
rc::Rc,
sync::OnceLock,
};
use adw::{prelude::*, subclass::prelude::*, *}; use adw::{prelude::*, subclass::prelude::*, *};
use glib::{clone, subclass::Signal, Properties}; use glib::{clone, subclass::Signal, Properties};
use gtk::{glib, Orientation::Horizontal}; use gtk::{glib, Orientation::Horizontal};
use gettextrs::{gettext}; use gettextrs::gettext;
// ANCHOR: custom_button // ANCHOR: custom_button
// Object holding the state // Object holding the state

View File

@ -6,7 +6,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::{gettext}; use gettextrs::gettext;
pub fn efi_error_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack) { pub fn efi_error_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack) {
// the header box for the efi_error page // the header box for the efi_error page

View File

@ -6,7 +6,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::{gettext}; use gettextrs::gettext;
pub fn eula_page(content_stack: &gtk::Stack) { pub fn eula_page(content_stack: &gtk::Stack) {
// create the bottom box for next and back buttons // create the bottom box for next and back buttons

View File

@ -10,7 +10,7 @@ use gtk::*;
use vte::prelude::*; use vte::prelude::*;
use vte::*; use vte::*;
use gettextrs::{gettext}; use gettextrs::gettext;
use crate::done_page::done_page; use crate::done_page::done_page;
@ -21,8 +21,8 @@ use std::path::Path;
use std::rc::Rc; use std::rc::Rc;
use crate::manual_partitioning::DriveMount; use crate::manual_partitioning::DriveMount;
use serde::*;
use duct::*; use duct::*;
use serde::*;
#[derive(PartialEq, Debug, Eq, Hash, Clone, Serialize, Deserialize)] #[derive(PartialEq, Debug, Eq, Hash, Clone, Serialize, Deserialize)]
struct CrypttabEntry { struct CrypttabEntry {
@ -40,7 +40,9 @@ pub fn install_page(
let mut _iter_count = 0; let mut _iter_count = 0;
_iter_count = 0; _iter_count = 0;
let mut unlocked_array: Vec<String> = Default::default(); let mut unlocked_array: Vec<String> = Default::default();
manual_drive_mount_array.borrow_mut().sort_by_key(|p| p.clone().mountpoint); manual_drive_mount_array
.borrow_mut()
.sort_by_key(|p| p.clone().mountpoint);
for partitions in manual_drive_mount_array.borrow_mut().iter() { for partitions in manual_drive_mount_array.borrow_mut().iter() {
let new_crypt = if partitions.mountpoint != "/" let new_crypt = if partitions.mountpoint != "/"
&& !unlocked_array.contains(&partitions.partition) && !unlocked_array.contains(&partitions.partition)
@ -78,8 +80,7 @@ pub fn install_page(
) )
.build(); .build();
crypttab_dialog.add_response("crypttab_dialog_boot", &gettext("unlock_boot_manually")); crypttab_dialog.add_response("crypttab_dialog_boot", &gettext("unlock_boot_manually"));
crypttab_dialog crypttab_dialog.add_response("crypttab_dialog_auto", &gettext("unlock_boot_manual"));
.add_response("crypttab_dialog_auto", &gettext("unlock_boot_manual"));
crypttab_dialog.set_response_enabled("crypttab_dialog_auto", false); crypttab_dialog.set_response_enabled("crypttab_dialog_auto", false);
crypttab_password.connect_apply(clone!(@weak crypttab_password, @strong partitions, @weak crypttab_dialog => move |_| { crypttab_password.connect_apply(clone!(@weak crypttab_password, @strong partitions, @weak crypttab_dialog => move |_| {
let (luks_manual_password_sender, luks_manual_password_receiver) = async_channel::unbounded(); let (luks_manual_password_sender, luks_manual_password_receiver) = async_channel::unbounded();
@ -269,14 +270,15 @@ pub fn install_page(
"/dev/".to_owned() "/dev/".to_owned()
+ &partitions.partition + &partitions.partition
+ &gettext("mounted_on_detail") + &gettext("mounted_on_detail")
+ &partitions.mountpoint + &partitions.mountpoint,
) )
.build(); .build();
install_confirm_details_boxed_list.append(&confirm_row); install_confirm_details_boxed_list.append(&confirm_row);
} }
} else { } else {
let install_confirm_detail_target = let install_confirm_detail_target = adw::ActionRow::builder()
adw::ActionRow::builder().title(gettext("install_target_detail")).build(); .title(gettext("install_target_detail"))
.build();
install_confirm_detail_target.set_subtitle( install_confirm_detail_target.set_subtitle(
&fs::read_to_string("/tmp/pika-installer-gtk4-target-auto.txt") &fs::read_to_string("/tmp/pika-installer-gtk4-target-auto.txt")
.expect("Unable to read file"), .expect("Unable to read file"),
@ -338,7 +340,8 @@ pub fn install_page(
} else { } else {
_p1_row_text = _p1_row_text =
"512 MB ".to_owned() + target_block_device + "1" + " as fat32" + " on /boot/efi"; "512 MB ".to_owned() + target_block_device + "1" + " as fat32" + " on /boot/efi";
_p2_row_text = "1 GB ".to_owned() + target_block_device + "2" + " as ext4" + " on /boot"; _p2_row_text =
"1 GB ".to_owned() + target_block_device + "2" + " as ext4" + " on /boot";
_p3_row_text = pretty_bytes::converter::convert(_target_p3_size) _p3_row_text = pretty_bytes::converter::convert(_target_p3_size)
+ " " + " "
+ target_block_device + target_block_device
@ -352,10 +355,18 @@ pub fn install_page(
+ " as btrfs" + " as btrfs"
+ " on /home"; + " on /home";
} }
let install_confirm_p1 = adw::ActionRow::builder().title(_p1_row_text.clone()).build(); let install_confirm_p1 = adw::ActionRow::builder()
let install_confirm_p2 = adw::ActionRow::builder().title(_p2_row_text.clone()).build(); .title(_p1_row_text.clone())
let install_confirm_p3 = adw::ActionRow::builder().title(_p3_row_text.clone()).build(); .build();
let install_confirm_p4 = adw::ActionRow::builder().title(_p4_row_text.clone()).build(); let install_confirm_p2 = adw::ActionRow::builder()
.title(_p2_row_text.clone())
.build();
let install_confirm_p3 = adw::ActionRow::builder()
.title(_p3_row_text.clone())
.build();
let install_confirm_p4 = adw::ActionRow::builder()
.title(_p4_row_text.clone())
.build();
// / install_confirm_selection_box appends // / install_confirm_selection_box appends
//// add live and install media button to install page selections //// add live and install media button to install page selections
install_confirm_details_boxed_list.append(&install_confirm_detail_language); install_confirm_details_boxed_list.append(&install_confirm_detail_language);

View File

@ -6,7 +6,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::{gettext}; use gettextrs::gettext;
use std::io::BufRead; use std::io::BufRead;
use std::io::BufReader; use std::io::BufReader;
@ -242,7 +242,11 @@ pub fn keyboard_page(content_stack: &gtk::Stack) {
// / Content stack appends // / Content stack appends
//// Add the keyboard_main_box as page: keyboard_page, Give it nice title //// Add the keyboard_main_box as page: keyboard_page, Give it nice title
content_stack.add_titled(&keyboard_main_box, Some("keyboard_page"), &gettext("keyboard")); content_stack.add_titled(
&keyboard_main_box,
Some("keyboard_page"),
&gettext("keyboard"),
);
let keyboard_data_buffer_clone = keyboard_data_buffer.clone(); let keyboard_data_buffer_clone = keyboard_data_buffer.clone();

View File

@ -8,8 +8,8 @@ use gdk::Display;
use gtk::*; use gtk::*;
mod config; mod config;
use config::{APP_ID, GETTEXT_PACKAGE, LOCALEDIR};
use gettextrs::{gettext, LocaleCategory}; use gettextrs::{gettext, LocaleCategory};
use config::{GETTEXT_PACKAGE, LOCALEDIR, APP_ID};
mod automatic_partitioning; mod automatic_partitioning;
mod build_ui; mod build_ui;
@ -28,10 +28,7 @@ mod welcome_page;
/// main function /// main function
fn main() { fn main() {
let application = adw::Application::new( let application = adw::Application::new(Some(APP_ID), Default::default());
Some(APP_ID),
Default::default(),
);
application.connect_startup(|app| { application.connect_startup(|app| {
// The CSS "magic" happens here. // The CSS "magic" happens here.
let provider = CssProvider::new(); let provider = CssProvider::new();
@ -45,7 +42,8 @@ fn main() {
); );
// Prepare i18n // Prepare i18n
gettextrs::setlocale(LocaleCategory::LcAll, ""); gettextrs::setlocale(LocaleCategory::LcAll, "");
gettextrs::bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR).expect("Unable to bind the text domain"); gettextrs::bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR)
.expect("Unable to bind the text domain");
gettextrs::textdomain(GETTEXT_PACKAGE).expect("Unable to switch to the text domain"); gettextrs::textdomain(GETTEXT_PACKAGE).expect("Unable to switch to the text domain");
// Fallback if no translation present // Fallback if no translation present
if gettext("pikaos_installer") == "pikaos_installer" { if gettext("pikaos_installer") == "pikaos_installer" {
@ -57,4 +55,4 @@ fn main() {
}); });
application.run(); application.run();
} }

View File

@ -7,19 +7,18 @@ use glib::*;
use gtk::*; use gtk::*;
use std::thread; use std::thread;
use gettextrs::{gettext}; use gettextrs::gettext;
use std::cell::{RefCell}; use std::cell::RefCell;
use std::rc::Rc; use std::rc::Rc;
use duct::cmd; use duct::cmd;
use std::{ use std::{
collections::HashSet, collections::HashSet,
hash::Hash, hash::Hash,
io::{BufRead, BufReader}, io::{BufRead, BufReader},
process::{Command}, process::Command,
time::{Duration}, time::Duration,
}; };
use crate::drive_mount_row::DriveMountRow; use crate::drive_mount_row::DriveMountRow;
@ -132,7 +131,7 @@ pub fn manual_partitioning(
partitioning_stack: &gtk::Stack, partitioning_stack: &gtk::Stack,
bottom_next_button: &gtk::Button, bottom_next_button: &gtk::Button,
manual_drive_mount_array: &Rc<RefCell<Vec<DriveMount>>>, manual_drive_mount_array: &Rc<RefCell<Vec<DriveMount>>>,
) { ) -> gtk::Button {
let part_table_array: Rc<RefCell<Vec<String>>> = Default::default(); let part_table_array: Rc<RefCell<Vec<String>>> = Default::default();
let check_part_unique = Rc::new(RefCell::new(true)); let check_part_unique = Rc::new(RefCell::new(true));
@ -216,14 +215,14 @@ pub fn manual_partitioning(
.build(); .build();
let partition_method_manual_selection_text = gtk::Label::builder() let partition_method_manual_selection_text = gtk::Label::builder()
.label(gettext("manual_part_note")) .label(gettext("manual_part_note"))
.halign(gtk::Align::Center) .halign(gtk::Align::Center)
.hexpand(true) .hexpand(true)
.margin_top(15) .margin_top(15)
.margin_bottom(15) .margin_bottom(15)
.margin_start(15) .margin_start(15)
.margin_end(15) .margin_end(15)
.build(); .build();
partition_method_manual_selection_text.add_css_class("medium_sized_text"); partition_method_manual_selection_text.add_css_class("medium_sized_text");
let partition_refresh_button = gtk::Button::builder() let partition_refresh_button = gtk::Button::builder()
@ -257,7 +256,6 @@ pub fn manual_partitioning(
.valign(Align::End) .valign(Align::End)
.vexpand(true) .vexpand(true)
.visible(false) .visible(false)
.label(gettext("fstab_status_valid"))
.build(); .build();
partition_method_manual_valid_label.add_css_class("small_valid_text"); partition_method_manual_valid_label.add_css_class("small_valid_text");
@ -291,7 +289,12 @@ pub fn manual_partitioning(
partition_err_check(&partition_method_manual_error_label, &partition_method_manual_valid_label, &manual_drive_mount_array); partition_err_check(&partition_method_manual_error_label, &partition_method_manual_valid_label, &manual_drive_mount_array);
})); }));
partition_refresh_button.connect_clicked(clone!(@weak drive_mounts_adw_listbox,@strong part_table_array, @strong manual_drive_mount_array => move |_| { partition_refresh_button.connect_clicked(clone!(@weak partition_method_manual_error_label, @weak partition_method_manual_valid_label,@weak drive_mounts_adw_listbox,@strong part_table_array, @strong manual_drive_mount_array => move |_| {
partition_method_manual_error_label.set_label("");
partition_method_manual_error_label.set_widget_name("");
partition_method_manual_error_label.set_visible(false);
partition_method_manual_valid_label.set_label("");
partition_method_manual_valid_label.set_visible(false);
while let Some(row) = drive_mounts_adw_listbox.last_child() { while let Some(row) = drive_mounts_adw_listbox.last_child() {
if row.widget_name() == "DriveMountRow" { if row.widget_name() == "DriveMountRow" {
drive_mounts_adw_listbox.remove(&row); drive_mounts_adw_listbox.remove(&row);
@ -423,7 +426,7 @@ pub fn manual_partitioning(
"partition_method_manual_page", "partition_method_manual_page",
); );
//return(partition_method_manual_target_buffer, partition_method_manual_luks_buffer, partition_method_manual_luks_password_entry) return partition_refresh_button;
} }
fn partition_err_check( fn partition_err_check(
@ -459,9 +462,7 @@ fn partition_err_check(
} }
if empty_mountpoint == false { if empty_mountpoint == false {
if &partition_method_manual_error_label.widget_name() if &partition_method_manual_error_label.widget_name() == "err1" {
== "err1"
{
partition_method_manual_error_label.set_visible(false); partition_method_manual_error_label.set_visible(false);
} }
if manual_drive_mount_array_ref.len() if manual_drive_mount_array_ref.len()
@ -485,8 +486,7 @@ fn partition_err_check(
} }
} else { } else {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label partition_method_manual_error_label.set_label(&gettext("fstab_no_mountpoint_err"));
.set_label(&gettext("fstab_no_mountpoint_err"));
partition_method_manual_error_label.set_widget_name("err1"); partition_method_manual_error_label.set_widget_name("err1");
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
} }
@ -494,14 +494,12 @@ fn partition_err_check(
if empty_partition == true { if empty_partition == true {
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label partition_method_manual_error_label.set_label(&gettext("fstab_no_partition_err"));
.set_label(&gettext("fstab_no_partition_err"));
partition_method_manual_error_label.set_widget_name("err2"); partition_method_manual_error_label.set_widget_name("err2");
partition_method_manual_error_label.set_visible(true); partition_method_manual_error_label.set_visible(true);
} }
} else { } else {
if partition_method_manual_error_label.widget_name() == "err2" if partition_method_manual_error_label.widget_name() == "err2" {
{
partition_method_manual_error_label.set_visible(false); partition_method_manual_error_label.set_visible(false);
} }
} }
@ -614,7 +612,11 @@ fn partition_err_check(
partition_method_manual_error_label.set_visible(false); partition_method_manual_error_label.set_visible(false);
} }
} }
if partition_fs == "vfat" || partition_fs == "ntfs" || partition_fs == "swap" || partition_fs == "exfat" { if partition_fs == "vfat"
|| partition_fs == "ntfs"
|| partition_fs == "swap"
|| partition_fs == "exfat"
{
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_badfs") &(gettext("fstab_badfs")
@ -646,7 +648,11 @@ fn partition_err_check(
partition_method_manual_error_label.set_visible(false); partition_method_manual_error_label.set_visible(false);
} }
} }
if partition_fs == "vfat" || partition_fs == "ntfs" || partition_fs == "swap" || partition_fs == "exfat" { if partition_fs == "vfat"
|| partition_fs == "ntfs"
|| partition_fs == "swap"
|| partition_fs == "exfat"
{
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_error_label.set_label( partition_method_manual_error_label.set_label(
&(gettext("fstab_badfs") &(gettext("fstab_badfs")
@ -699,6 +705,7 @@ fn partition_err_check(
} }
} }
if !partition_method_manual_error_label.is_visible() { if !partition_method_manual_error_label.is_visible() {
partition_method_manual_valid_label.set_label(&gettext("fstab_status_valid"));
partition_method_manual_valid_label.set_visible(true) partition_method_manual_valid_label.set_visible(true)
} else { } else {
partition_method_manual_valid_label.set_visible(false) partition_method_manual_valid_label.set_visible(false)

View File

@ -7,7 +7,7 @@ use glob::glob;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::{gettext}; use gettextrs::gettext;
use crate::automatic_partitioning::automatic_partitioning; use crate::automatic_partitioning::automatic_partitioning;
use crate::install_page::install_page; use crate::install_page::install_page;
@ -21,7 +21,7 @@ use std::rc::Rc;
use duct::*; use duct::*;
use crate::{manual_partitioning}; use crate::manual_partitioning;
use manual_partitioning::DriveMount; use manual_partitioning::DriveMount;
@ -216,7 +216,7 @@ pub fn partitioning_page(
); );
let partitioning_page_automatic_partitioning = let partitioning_page_automatic_partitioning =
automatic_partitioning(&partitioning_stack, &bottom_next_button); automatic_partitioning(&partitioning_stack, &bottom_next_button);
let _partitioning_page_manual_partitioning = manual_partitioning( let partitioning_page_manual_partitioning = manual_partitioning(
&partitioning_stack, &partitioning_stack,
&bottom_next_button, &bottom_next_button,
&manual_drive_mount_array, &manual_drive_mount_array,
@ -250,6 +250,7 @@ pub fn partitioning_page(
content_stack.set_visible_child_name("keyboard_page"); content_stack.set_visible_child_name("keyboard_page");
partitioning_stack.set_visible_child_name("partition_method_select_page"); partitioning_stack.set_visible_child_name("partition_method_select_page");
bottom_next_button.set_sensitive(false); bottom_next_button.set_sensitive(false);
partitioning_page_manual_partitioning.emit_clicked();
})); }));
bottom_next_button.connect_clicked(clone!(@weak content_stack, @weak partitioning_stack, @weak install_main_box, @weak window, @weak done_main_box => move |_| { bottom_next_button.connect_clicked(clone!(@weak content_stack, @weak partitioning_stack, @weak install_main_box, @weak window, @weak done_main_box => move |_| {

View File

@ -6,7 +6,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::{gettext}; use gettextrs::gettext;
use std::io::BufRead; use std::io::BufRead;
use std::io::BufReader; use std::io::BufReader;
@ -213,7 +213,11 @@ pub fn timezone_page(content_stack: &gtk::Stack) {
// / Content stack appends // / Content stack appends
//// Add the timezone_main_box as page: timezone_page, Give it nice title //// Add the timezone_main_box as page: timezone_page, Give it nice title
content_stack.add_titled(&timezone_main_box, Some("timezone_page"), &gettext("timezone")); content_stack.add_titled(
&timezone_main_box,
Some("timezone_page"),
&gettext("timezone"),
);
let timezone_data_buffer_clone = timezone_data_buffer.clone(); let timezone_data_buffer_clone = timezone_data_buffer.clone();

View File

@ -7,7 +7,7 @@ use glib::*;
/// Use all libadwaita libraries (libadwaita -> adw because cargo) /// Use all libadwaita libraries (libadwaita -> adw because cargo)
use gtk::*; use gtk::*;
use gettextrs::{gettext}; use gettextrs::gettext;
pub fn welcome_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack) { pub fn welcome_page(window: &adw::ApplicationWindow, content_stack: &gtk::Stack) {
// the header box for the welcome page // the header box for the welcome page