加载与保存配置文件,并显示
This commit is contained in:
parent
46f336a5c6
commit
b012ae991c
1 changed files with 112 additions and 55 deletions
143
manage.py
143
manage.py
|
@ -1,8 +1,9 @@
|
||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from json import dump
|
from json import dump, load
|
||||||
import subprocess
|
import subprocess
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
|
from tkinter import filedialog
|
||||||
from tkinter.ttk import *
|
from tkinter.ttk import *
|
||||||
|
|
||||||
config = ConfigParser()
|
config = ConfigParser()
|
||||||
|
@ -29,11 +30,6 @@ def set_default_config(config: ConfigParser, options: dict[str, list[str]]) -> N
|
||||||
config.write(f)
|
config.write(f)
|
||||||
|
|
||||||
|
|
||||||
config.read("config.ini")
|
|
||||||
if not check_config_valid(config, options):
|
|
||||||
set_default_config(config, options)
|
|
||||||
|
|
||||||
|
|
||||||
def generate_db(config: ConfigParser) -> None:
|
def generate_db(config: ConfigParser) -> None:
|
||||||
local_dir = Path(config["file"]["local"])
|
local_dir = Path(config["file"]["local"])
|
||||||
categories = Path(local_dir, "categories")
|
categories = Path(local_dir, "categories")
|
||||||
|
@ -51,7 +47,9 @@ def generate_db(config: ConfigParser) -> None:
|
||||||
|
|
||||||
# generate_db(config)
|
# generate_db(config)
|
||||||
|
|
||||||
sync_all_command = [
|
|
||||||
|
def sync_all_command() -> list[str]:
|
||||||
|
return [
|
||||||
config["ftp"]["lftp"],
|
config["ftp"]["lftp"],
|
||||||
f'-e mirror -R -e --parallel=10 {config["file"]["local"]} {config["file"]["remote"]}; exit',
|
f'-e mirror -R -e --parallel=10 {config["file"]["local"]} {config["file"]["remote"]}; exit',
|
||||||
"-u",
|
"-u",
|
||||||
|
@ -59,7 +57,9 @@ sync_all_command = [
|
||||||
config["ftp"]["host"],
|
config["ftp"]["host"],
|
||||||
]
|
]
|
||||||
|
|
||||||
sync_files_command = [
|
|
||||||
|
def sync_files_command() -> list[str]:
|
||||||
|
return [
|
||||||
config["ftp"]["lftp"],
|
config["ftp"]["lftp"],
|
||||||
f'-e mirror -R -e --parallel=10 {config["file"]["local"]}/categories {config["file"]["remote"]}/categories; exit',
|
f'-e mirror -R -e --parallel=10 {config["file"]["local"]}/categories {config["file"]["remote"]}/categories; exit',
|
||||||
"-u",
|
"-u",
|
||||||
|
@ -68,62 +68,119 @@ sync_files_command = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def tfunc(txt: str) -> None:
|
def select_lftp(_: Event) -> None:
|
||||||
print(txt)
|
file_path = filedialog.askopenfilename()
|
||||||
|
config["ftp"]["lftp"] = file_path
|
||||||
|
lftp_entry.delete(0, END)
|
||||||
|
lftp_entry.insert(0, file_path)
|
||||||
|
|
||||||
|
|
||||||
|
def select_local(_: Event) -> None:
|
||||||
|
file_path = filedialog.askdirectory()
|
||||||
|
config["file"]["local"] = file_path
|
||||||
|
local_entry.delete(0, END)
|
||||||
|
local_entry.insert(0, file_path)
|
||||||
|
|
||||||
|
|
||||||
|
def load_config(_: Event) -> None:
|
||||||
|
config.read("config.ini")
|
||||||
|
if not check_config_valid(config, options):
|
||||||
|
set_default_config(config, options)
|
||||||
|
host_entry.delete(0, END)
|
||||||
|
host_entry.insert(0, config["ftp"]["host"])
|
||||||
|
user_entry.delete(0, END)
|
||||||
|
user_entry.insert(0, config["ftp"]["user"])
|
||||||
|
pass_entry.delete(0, END)
|
||||||
|
pass_entry.insert(0, config["ftp"]["pass"])
|
||||||
|
lftp_entry.delete(0, END)
|
||||||
|
lftp_entry.insert(0, config["ftp"]["lftp"])
|
||||||
|
local_entry.delete(0, END)
|
||||||
|
local_entry.insert(0, config["file"]["local"])
|
||||||
|
remote_entry.delete(0, END)
|
||||||
|
remote_entry.insert(0, config["file"]["remote"])
|
||||||
|
|
||||||
|
|
||||||
|
def get_config() -> None:
|
||||||
|
config["ftp"]["host"] = host_entry.get()
|
||||||
|
config["ftp"]["user"] = user_entry.get()
|
||||||
|
config["ftp"]["pass"] = pass_entry.get()
|
||||||
|
config["ftp"]["lftp"] = lftp_entry.get()
|
||||||
|
config["file"]["local"] = local_entry.get()
|
||||||
|
config["file"]["remote"] = remote_entry.get()
|
||||||
|
|
||||||
|
|
||||||
|
def save_config(_: Event) -> None:
|
||||||
|
get_config()
|
||||||
|
with open("config.ini", "w") as f:
|
||||||
|
config.write(f)
|
||||||
|
|
||||||
|
|
||||||
# print(subprocess.run(sync_files_command))
|
# print(subprocess.run(sync_files_command))
|
||||||
|
|
||||||
|
config.read("config.ini")
|
||||||
|
if not check_config_valid(config, options):
|
||||||
|
set_default_config(config, options)
|
||||||
|
|
||||||
root = Tk()
|
root = Tk()
|
||||||
|
|
||||||
ftp_header_frm = Frame(root)
|
ftp_frm = Frame(root, border=1)
|
||||||
ftp_header_frm.grid(row=0, column=0)
|
ftp_frm.grid(row=0, column=0, pady=10, padx=10)
|
||||||
|
|
||||||
Label(ftp_header_frm, text="FTP Settings").grid(row=0, column=0, padx=5, pady=5)
|
Label(ftp_frm, text="FTP Settings").grid(row=0, column=0, columnspan=3)
|
||||||
|
|
||||||
ftp_settings_frm = Frame(root)
|
Label(ftp_frm, text="Host", width=10).grid(row=1, column=0)
|
||||||
ftp_settings_frm.grid(row=1, column=0)
|
host_entry = Entry(ftp_frm, width=40)
|
||||||
|
|
||||||
Label(ftp_settings_frm, text="Host").grid(row=0, column=0, padx=5, pady=5)
|
|
||||||
host_entry = Entry(ftp_settings_frm)
|
|
||||||
host_entry.insert(0, config["ftp"]["host"])
|
host_entry.insert(0, config["ftp"]["host"])
|
||||||
host_entry.grid(row=0, column=1, padx=5, pady=5)
|
host_entry.grid(row=1, column=1, columnspan=2)
|
||||||
|
|
||||||
Label(ftp_settings_frm, text="Username").grid(row=1, column=0, padx=5, pady=5)
|
Label(ftp_frm, text="Username", width=10).grid(row=2, column=0)
|
||||||
user_entry = Entry(ftp_settings_frm)
|
user_entry = Entry(ftp_frm, width=40)
|
||||||
user_entry.insert(0, config["ftp"]["user"])
|
user_entry.insert(0, config["ftp"]["user"])
|
||||||
user_entry.grid(row=1, column=1, padx=5, pady=5)
|
user_entry.grid(row=2, column=1, columnspan=2)
|
||||||
|
|
||||||
Label(ftp_settings_frm, text="Password").grid(row=2, column=0, padx=5, pady=5)
|
Label(ftp_frm, text="Password", width=10).grid(row=3, column=0)
|
||||||
pass_entry = Entry(ftp_settings_frm)
|
pass_entry = Entry(ftp_frm, width=40, show="*")
|
||||||
pass_entry.insert(0, config["ftp"]["pass"])
|
pass_entry.insert(0, config["ftp"]["pass"])
|
||||||
pass_entry.grid(row=2, column=1, padx=5, pady=5)
|
pass_entry.grid(row=3, column=1, columnspan=2)
|
||||||
|
|
||||||
Label(ftp_settings_frm, text="lftp Path").grid(row=3, column=0, padx=5, pady=5)
|
Label(ftp_frm, text="lftp Path", width=10).grid(row=4, column=0)
|
||||||
lftp_entry = Entry(ftp_settings_frm)
|
lftp_entry = Entry(ftp_frm, width=29)
|
||||||
lftp_entry.insert(0, config["ftp"]["lftp"])
|
lftp_entry.insert(0, config["ftp"]["lftp"])
|
||||||
lftp_entry.grid(row=3, column=1, padx=5, pady=5)
|
lftp_entry.grid(row=4, column=1)
|
||||||
|
lftp_select_btn = Button(ftp_frm, text="Select...", width=10)
|
||||||
|
lftp_select_btn.grid(row=4, column=2)
|
||||||
|
lftp_select_btn.bind("<Button-1>", select_lftp)
|
||||||
|
|
||||||
file_header_frm = Frame(root)
|
file_frm = Frame(root)
|
||||||
file_header_frm.grid(row=2, column=0)
|
file_frm.grid(row=1, column=0, pady=10, padx=10)
|
||||||
|
|
||||||
Label(file_header_frm, text="File Path Settings").grid(
|
Label(file_frm, text="File Path Settings").grid(row=0, column=0, columnspan=3)
|
||||||
row=0, column=0, columnspan=2, padx=5, pady=5
|
|
||||||
)
|
|
||||||
|
|
||||||
file_settings_frm = Frame(root)
|
Label(file_frm, text="Local Path", width=12).grid(row=1, column=0)
|
||||||
file_settings_frm.grid(row=3, column=0)
|
local_entry = Entry(file_frm, width=27)
|
||||||
|
|
||||||
Label(file_settings_frm, text="Local Path").grid(row=0, column=0, padx=5, pady=5)
|
|
||||||
local_entry = Entry(file_settings_frm)
|
|
||||||
local_entry.insert(0, config["file"]["local"])
|
local_entry.insert(0, config["file"]["local"])
|
||||||
local_entry.grid(row=0, column=1, padx=5, pady=5)
|
local_entry.grid(row=1, column=1)
|
||||||
|
local_select_btn = Button(file_frm, text="Select...", width=10)
|
||||||
|
local_select_btn.grid(row=1, column=2)
|
||||||
|
local_select_btn.bind("<Button-1>", select_local)
|
||||||
|
|
||||||
Label(file_settings_frm, text="Remote Path").grid(row=1, column=0, padx=5, pady=5)
|
Label(file_frm, text="Remote Path", width=12).grid(row=2, column=0)
|
||||||
remote_entry = Entry(file_settings_frm)
|
remote_entry = Entry(file_frm, width=38)
|
||||||
remote_entry.insert(0, config["file"]["remote"])
|
remote_entry.insert(0, config["file"]["remote"])
|
||||||
remote_entry.grid(row=1, column=1, padx=5, pady=5)
|
remote_entry.grid(row=2, column=1, columnspan=2)
|
||||||
|
|
||||||
|
actions_frm = Frame(root)
|
||||||
|
actions_frm.grid(row=2, column=0, pady=10, padx=10)
|
||||||
|
|
||||||
|
load_btn = Button(actions_frm, text="Load Config", width=12)
|
||||||
|
load_btn.grid(row=0, column=0)
|
||||||
|
load_btn.bind("<Button-1>", load_config)
|
||||||
|
|
||||||
|
save_btn = Button(actions_frm, text="Save Config", width=12)
|
||||||
|
save_btn.grid(row=0, column=1)
|
||||||
|
save_btn.bind("<Button-1>", save_config)
|
||||||
|
|
||||||
|
Button(actions_frm, text="Sync all Files", width=12).grid(row=0, column=2)
|
||||||
|
Button(actions_frm, text="Sync PDF Files", width=12).grid(row=0, column=3)
|
||||||
|
|
||||||
# Button(ftp_settings_frm, text="Save Config").grid(row=5, column=0, columnspan=2, padx=5, pady=5)
|
|
||||||
root.mainloop()
|
root.mainloop()
|
||||||
|
|
Loading…
Reference in a new issue