diff --git a/.gitignore b/.gitignore index 6f66c74..54e9e18 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -*.zip \ No newline at end of file +*.zip +*.swp diff --git a/client.py b/client.py index 660b17a..0ff71ad 100644 --- a/client.py +++ b/client.py @@ -1,6 +1,7 @@ import tkinter import customtkinter import PIL +import data_backend customtkinter.set_appearance_mode("dark") customtkinter.set_default_color_theme("blue") @@ -18,50 +19,65 @@ img = PIL.ImageTk.PhotoImage(img) buttons = [] -def create_button(): +def switch_to_game_details(software): + '''Switch to the details of the clicked tile''' + pass - button = customtkinter.CTkButton(app, image=img, width=200, height=300, command=lambda: button_click(button), - border_width=0, corner_radius=0, border_spacing=0, text="Test Title LOLOLOL", - fg_color="transparent", compound="top", anchor="s") +def create_main_window_tile(software): + '''Create the main window tile''' + + button = customtkinter.CTkButton(app, image=img, width=200, height=300, + command=lambda: switch_to_game_details(game), + border_width=0, corner_radius=0, border_spacing=0, + text="Test Title LOLOLOL", + fg_color="transparent", compound="top", anchor="s") return button -def button_click(): - print(button.cget("image")) - def update_button_positions(event=None): + '''Sets the tile positions initially and on resize''' global last_geometry + # check vs old location # new_geometry = app.winfo_geometry() if last_geometry[0] == new_geometry[0] and last_geometry[1] == new_geometry[1]: return else: last_geometry = new_geometry - # Calculate the number of columns based on the current width of the window + # Calculate the number of columns based on the current width of the window # num_columns = app.winfo_width() // 201 # Adjust 100 as needed for button width - # window became too slow # + # window became too small # if num_columns == 0: return - + # calculated and set positions for i, button in enumerate(buttons): grid_info_current = button.grid_info() column_new = i % num_columns row_new = i // num_columns - if grid_info_current.get("row") and grid_info_current["row"] == row_new and grid_info_current["column"] == column_new: + if(grid_info_current.get("row") and grid_info_current["row"] == row_new + and grid_info_current["column"] == column_new): continue else: button.grid(row=i // num_columns, column=i % num_columns, sticky="we") -for i in range(0,5): - button = create_button() - buttons.append(button) +if __init__ == "__main__": -app.bind("", update_button_positions) -update_button_positions() -app.mainloop() \ No newline at end of file + # define data backend # + db = data_backend.LocalFS(None, None, "./cache", remote_root_dir="example_software_root") + + # create tiles from meta files # + for software in db.find_all_metadata(): + create_main_window_tile(software) + + # set update listener & update positions # + app.bind("", update_button_positions) + update_button_positions() + + # run app # + app.mainloop() diff --git a/software.py b/software.py new file mode 100644 index 0000000..6eb15c4 --- /dev/null +++ b/software.py @@ -0,0 +1,13 @@ +class Software: + + def __init__(self, directory): + + self.directory = directory + self.info_file = + + self.genre = + self.title = + self.description = + self.dependencies = + self.link_only = + self.extra_files =