You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jade-gui/jade_gui/functions/partition_screen.py

106 lines
3.9 KiB
Python

# partition_screen.py
#
# Copyright 2022 user
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License only.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import subprocess, shutil
from gi.repository import Gtk, Adw
from gettext import gettext as _
from jade_gui.utils import disks
from jade_gui.utils.command import CommandUtils
from jade_gui.widgets.partition import PartitionEntry
from jade_gui.classes.partition import Partition
from jade_gui.classes.jade_screen import JadeScreen
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/partition_screen.ui")
class PartitionScreen(JadeScreen, Adw.Bin):
__gtype_name__ = "PartitionScreen"
disk_list = Gtk.Template.Child()
open_bash = Gtk.Template.Child()
open_gparted = Gtk.Template.Child()
partition_list = Gtk.Template.Child()
reload_partitions = Gtk.Template.Child()
manual_partitioning = Gtk.Template.Child()
automatic_partitioning = Gtk.Template.Child()
manual_partitioning_page = Gtk.Template.Child()
automatic_partitioning_page = Gtk.Template.Child()
selected_partition = None
move_to_summary = False
def __init__(self, window, application, **kwargs):
super().__init__(**kwargs)
self.window = window
self.disk_list.connect("row_selected", self.row_selected)
self.manual_partitioning.connect("clicked", self.switch_manual_partitioning)
self.reload_partitions.connect("clicked", self.check_partitions)
self.automatic_partitioning.connect(
"clicked", self.switch_automatic_partitioning
)
self.open_bash.connect("clicked", self.bash)
self.open_gparted.connect("clicked", self.gparted)
def gparted(self, widget):
CommandUtils.run_command(["pkexec", "gparted"])
def bash(self, widget):
CommandUtils.run_command(["kgx", "-e", "/usr/bin/bash"])
def check_partitions(self, widget):
self.partition_list.select_all()
print(self.partition_list.get_row_at_index(2))
for i in range(0, len(self.window.available_partitions)):
self.partition_list.remove(self.partition_list.get_row_at_index(0))
self.available_partitions = disks.get_partitions()
self.window.available_partitions = self.available_partitions
for partition in self.available_partitions:
self.partition_list.append(
PartitionEntry(
window=self,
partition=Partition(
partition=partition,
mountpoint="",
filesystem="",
size=disks.get_disk_size(partition),
),
application=None,
)
)
def switch_automatic_partitioning(self, widget):
self.automatic_partitioning_page.set_visible(True)
self.manual_partitioning_page.set_visible(False)
self.set_valid(False)
self.window.partition_mode = "Auto"
def switch_manual_partitioning(self, widget):
self.automatic_partitioning_page.set_visible(False)
self.manual_partitioning_page.set_visible(True)
self.set_valid(False)
self.window.partition_mode = "Manual"
def row_selected(self, widget, row):
if row is not None:
print(row.get_title())
row.select_button.set_active(True)
self.selected_partition = row
self.set_valid(True)
else:
print("ERROR: invalid row slected")