Initial commit
This commit is contained in:
commit
9d38821726
4 changed files with 118 additions and 0 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
.vscode/
|
||||
__pycache__/
|
||||
venv/
|
||||
plan.svg
|
||||
1
README.txt
Normal file
1
README.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
A simple app that manages your downloads folder.
|
||||
89
app.py
Normal file
89
app.py
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
"""Download utility app."""
|
||||
|
||||
__name__ = "__main__"
|
||||
__author__ = "Gull"
|
||||
|
||||
import tkinter as tk
|
||||
from tkinter import ttk # Modern widgets
|
||||
import file_manager as fm
|
||||
|
||||
debug_mode = False
|
||||
|
||||
def set_debug_mode(value):
|
||||
if type(value) == None:
|
||||
debug_mode = not debug_mode
|
||||
else:
|
||||
debug_mode = value
|
||||
|
||||
class App(tk.Tk):
|
||||
def __init__(self, width=600, height=400):
|
||||
super().__init__()
|
||||
self.title("Download Utils")
|
||||
self.fm = fm.Manager()
|
||||
self.gui()
|
||||
|
||||
screen_width = self.winfo_screenwidth()
|
||||
screen_height = self.winfo_screenheight()
|
||||
|
||||
center_x = int(screen_width / 2 - width / 2)
|
||||
center_y = int(screen_height / 2 - height / 2)
|
||||
|
||||
self.geometry(f"{width}x{height}+{center_x}+{center_y}")
|
||||
|
||||
def update_file_list(self):
|
||||
for n in range(self.listbox_file.size(), 0, -1):
|
||||
self.listbox_file.delete(n - 1)
|
||||
self.fm.update_file_list()
|
||||
for v in self.fm.filelist:
|
||||
self.listbox_file.insert(tk.END, v)
|
||||
|
||||
def gui(self):
|
||||
self.gui_menu()
|
||||
self.gui_side()
|
||||
self.gui_main()
|
||||
|
||||
def gui_menu(self):
|
||||
a_menu = tk.Menu(self) # First arg is always the parent
|
||||
self.config(menu=a_menu)
|
||||
|
||||
a_menu_file = tk.Menu(a_menu)
|
||||
a_menu_file.add_command(label="Open")
|
||||
a_menu_file.add_command(label="Exit", command=self.destroy)
|
||||
|
||||
a_menu.add_cascade(
|
||||
label="File",
|
||||
menu=a_menu_file,
|
||||
underline=0
|
||||
)
|
||||
|
||||
a_menu_settings = tk.Menu(a_menu)
|
||||
a_menu_settings.add_command(label="Save Config")
|
||||
|
||||
a_menu.add_cascade(
|
||||
label="Settings",
|
||||
menu=a_menu_settings,
|
||||
underline=0
|
||||
)
|
||||
|
||||
def gui_side(self):
|
||||
a_side = ttk.Frame(self, width=80, style="TLabel")
|
||||
a_side.pack(side=tk.LEFT, fill=tk.Y)
|
||||
|
||||
tk_style = ttk.Style(self)
|
||||
tk_style.configure("TLabel", background="#bbbbbb")
|
||||
|
||||
def gui_main(self):
|
||||
a_content = ttk.Frame(self)
|
||||
|
||||
a_button = ttk.Button(a_content, text="Refresh", command=self.update_file_list)
|
||||
a_button.pack(side=tk.TOP)
|
||||
|
||||
self.listbox_file = tk.Listbox(a_content, height=20)
|
||||
self.update_file_list()
|
||||
self.listbox_file.pack(padx=10, pady=10, side=tk.LEFT, expand=True, fill=tk.BOTH)
|
||||
|
||||
a_content.pack(side=tk.LEFT, expand=True, fill=tk.BOTH)
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = App()
|
||||
app.mainloop()
|
||||
24
file_manager.py
Normal file
24
file_manager.py
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
"""File manager for the app."""
|
||||
|
||||
__author__ = "Gull"
|
||||
|
||||
import os
|
||||
import json
|
||||
|
||||
class Manager:
|
||||
def __init__(self):
|
||||
self.dir = self.get_directory()
|
||||
self.filelist = []
|
||||
|
||||
def get_directory(self):
|
||||
dir = os.path.expanduser("~")
|
||||
dir = os.path.join(dir, "Downloads")
|
||||
if os.path.exists(dir): # Needs error handling
|
||||
return dir
|
||||
|
||||
def update_file_list(self):
|
||||
self.filelist.clear()
|
||||
with os.scandir(self.dir) as scan:
|
||||
for entry in scan:
|
||||
if entry.is_file():
|
||||
self.filelist.append(entry.name)
|
||||
Loading…
Add table
Add a link
Reference in a new issue