[NEW] newgui
This commit is contained in:
parent
938a1ea71d
commit
736fd3b049
@ -1,6 +1,7 @@
|
|||||||
import platform
|
import platform
|
||||||
from tkinter import *
|
|
||||||
from tkinter import ttk
|
from tkinter import ttk
|
||||||
|
from customtkinter import *
|
||||||
|
from CTkMenuBar import *
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from app.utils_drive import *
|
from app.utils_drive import *
|
||||||
@ -15,9 +16,12 @@ class App:
|
|||||||
drive_tree = None
|
drive_tree = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
set_default_color_theme("dark-blue")
|
||||||
|
set_appearance_mode("dark")
|
||||||
|
|
||||||
self.OS_TYPE = platform.system()
|
self.OS_TYPE = platform.system()
|
||||||
|
|
||||||
self.root = Tk()
|
self.root = CTk()
|
||||||
self.root.title("Disk Eraser")
|
self.root.title("Disk Eraser")
|
||||||
self.root.geometry("700x300")
|
self.root.geometry("700x300")
|
||||||
self.root.minsize(700, 300)
|
self.root.minsize(700, 300)
|
||||||
@ -27,33 +31,36 @@ class App:
|
|||||||
self.root.mainloop()
|
self.root.mainloop()
|
||||||
|
|
||||||
def __load_menus(self):
|
def __load_menus(self):
|
||||||
main_menu = Menu()
|
bg_color = self.root._apply_appearance_mode(ThemeManager.theme["CTkFrame"]["fg_color"])
|
||||||
|
|
||||||
help_menu = Menu(tearoff=0)
|
main_menu = CTkMenuBar(self.root, bg_color=bg_color)
|
||||||
help_menu.add_command(label="Содержание")
|
|
||||||
help_menu.add_separator()
|
help_menu = main_menu.add_cascade("Справка")
|
||||||
help_menu.add_command(label="О программе")
|
|
||||||
|
dropdown1 = CustomDropdownMenu(widget=help_menu)
|
||||||
main_menu.add_cascade(label="Справка", menu=help_menu)
|
dropdown1.add_option(option="Содержание")
|
||||||
|
dropdown1.add_separator()
|
||||||
|
dropdown1.add_option(option="О программе")
|
||||||
|
|
||||||
self.root.config(menu=main_menu)
|
self.root.config(menu=main_menu)
|
||||||
|
|
||||||
self.bottom_frame = ttk.Frame(borderwidth=1, relief=SOLID, padding=[3, 5])
|
self.bottom_frame = CTkFrame(self.root, height=10000)
|
||||||
|
|
||||||
self.erase_button = ttk.Button(
|
self.erase_button = CTkButton(
|
||||||
self.bottom_frame, text="Стереть диск", command=self.__erase_drive)
|
self.bottom_frame, text="Стереть диск", command=self.__erase_drive)
|
||||||
self.erase_button.pack(side=RIGHT)
|
self.erase_button.pack(side=RIGHT)
|
||||||
|
|
||||||
update_button = ttk.Button(
|
update_button = CTkButton(
|
||||||
self.bottom_frame, text="Обновить", command=self.__update_drives)
|
self.bottom_frame, text="Обновить", command=self.__update_drives)
|
||||||
update_button.pack(side=RIGHT, padx=5)
|
update_button.pack(side=RIGHT, padx=5)
|
||||||
|
|
||||||
self.method_box = ttk.Combobox(master=self.bottom_frame, values=list(erasing_methods.keys()), state="readonly")
|
self.method_box = CTkComboBox(master=self.bottom_frame, values=list(erasing_methods.keys()), state="readonly")
|
||||||
self.method_box.pack(side=RIGHT, padx=6)
|
self.method_box.pack(side=RIGHT, padx=6)
|
||||||
|
|
||||||
method_label = ttk.Label(master=self.bottom_frame, text="Метод: ")
|
method_label = CTkLabel(master=self.bottom_frame, text="Метод: ")
|
||||||
method_label.pack(padx=5, side=RIGHT)
|
method_label.pack(padx=5, side=RIGHT)
|
||||||
|
|
||||||
self.bottom_frame.pack(side=BOTTOM, fill=X)
|
self.bottom_frame.pack(side=BOTTOM, fill=BOTH, padx=5, pady=5)
|
||||||
|
|
||||||
def __update_drives(self):
|
def __update_drives(self):
|
||||||
self.drive_tree.delete(*self.drive_tree.get_children())
|
self.drive_tree.delete(*self.drive_tree.get_children())
|
||||||
@ -84,6 +91,19 @@ class App:
|
|||||||
|
|
||||||
def __init_table(self):
|
def __init_table(self):
|
||||||
|
|
||||||
|
###Treeview Customisation (theme colors are selected)
|
||||||
|
bg_color = self.root._apply_appearance_mode(ThemeManager.theme["CTkFrame"]["fg_color"])
|
||||||
|
text_color = self.root._apply_appearance_mode(ThemeManager.theme["CTkLabel"]["text_color"])
|
||||||
|
selected_color = self.root._apply_appearance_mode(ThemeManager.theme["CTkButton"]["fg_color"])
|
||||||
|
|
||||||
|
treestyle = ttk.Style()
|
||||||
|
treestyle.theme_use()
|
||||||
|
treestyle.configure("Treeview", background=bg_color, foreground=text_color, fieldbackground=bg_color, borderwidth=0)
|
||||||
|
treestyle.map('Treeview', background=[('selected', bg_color)], foreground=[('selected', selected_color)])
|
||||||
|
treestyle.configure("Treeview.Heading", background=bg_color, foreground=text_color, fieldbackground=bg_color, borderwidth=0)
|
||||||
|
treestyle.map('Treeview.Heading', background=[('selected', bg_color)], foreground=[('selected', selected_color)])
|
||||||
|
self.root.bind("<<TreeviewSelect>>", lambda event: self.root.focus_set())
|
||||||
|
|
||||||
# определяем столбцы
|
# определяем столбцы
|
||||||
columns = ("index", "name", "type", "capacity", "serial_num")
|
columns = ("index", "name", "type", "capacity", "serial_num")
|
||||||
self.drive_tree = ttk.Treeview(
|
self.drive_tree = ttk.Treeview(
|
||||||
@ -121,7 +141,7 @@ class App:
|
|||||||
if self.selected is not None:
|
if self.selected is not None:
|
||||||
self.erase_button.configure(state='disabled')
|
self.erase_button.configure(state='disabled')
|
||||||
thread = None
|
thread = None
|
||||||
self.progressbar = ttk.Progressbar(master=self.bottom_frame, orient="horizontal", length=250)
|
self.progressbar = CTkProgressBar(master=self.bottom_frame, orientation="horizontal", width=250)
|
||||||
self.progressbar.pack(side=LEFT, padx=6, pady=6)
|
self.progressbar.pack(side=LEFT, padx=6, pady=6)
|
||||||
for drive in self.drives:
|
for drive in self.drives:
|
||||||
if drive.index == self.selected[0]:
|
if drive.index == self.selected[0]:
|
||||||
|
|||||||
@ -53,26 +53,15 @@ class Drive():
|
|||||||
self.index = index
|
self.index = index
|
||||||
|
|
||||||
def erase(self, method, progress=0) -> Thread:
|
def erase(self, method, progress=0) -> Thread:
|
||||||
if method == "2 прохода":
|
t = Thread(target=self.__erasing, args=(progress,))
|
||||||
method_ = self.__erasing_2
|
|
||||||
elif method == "Случайные данные":
|
|
||||||
method = self.__erasing_random
|
|
||||||
t = Thread(target=method_, args=(progress,))
|
|
||||||
t.start()
|
t.start()
|
||||||
return t
|
return t
|
||||||
|
|
||||||
def __erasing_2(self, progress):
|
def __erasing(self, progress):
|
||||||
len_write = 0
|
len_write = 0
|
||||||
|
write_size = self.block_size*256
|
||||||
with open(self.path, "wb") as drive:
|
with open(self.path, "wb") as drive:
|
||||||
while len_write < self.capacity:
|
while len_write < self.capacity:
|
||||||
# drive.write(b"\x00"*self.block_size)
|
# drive.write(b"\x00"*self.block_size)
|
||||||
len_write += self.block_size*64
|
len_write += write_size
|
||||||
progress["value"] = int(len_write/self.capacity * 100)
|
progress.set(len_write/self.capacity)
|
||||||
|
|
||||||
def __erasing_2(self, progress):
|
|
||||||
len_write = 0
|
|
||||||
with open(self.path, "wb") as drive:
|
|
||||||
while len_write < self.capacity:
|
|
||||||
# drive.write(b"\x00"*self.block_size)
|
|
||||||
len_write += self.block_size*64
|
|
||||||
progress["value"] = int(len_write/self.capacity * 100)
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user