def __init__(self, parent, controller): self.controller = controller self.appstore_handler = store_handler self.repo_parser = repo_parser self.current_frame = None self.current_frame_name = None self.last_selection = None self.last_sort_option = None self.updater = updater activeFrame.__init__(self, parent, controller) self.column = ThemedFrame(self, background=style.color_1) self.column.place(relx=0, rely=0, width=style.sidecolumnwidth, relheight=1) self.column_header = ThemedFrame(self.column, background=style.color_1) self.column_header.place(relx=0, rely=0, relwidth=1, height=style.headerheight) self.column_header_title = ThemedLabel(self.column_header, "HBUpdater\nGPLv3", anchor="n", label_font=style.giantboldtext, background=style.color_1) self.column_header_title.place(relx=0, rely=0, relwidth=1, relheight=1, height=-(style.offset + 1), y=+style.offset) self.column_header_separator = ThemedLabel(self.column_header, "", background=style.w) self.column_header_separator.place(x=style.offset, rely=1, y=-1, relwidth=1, width=-2 * style.offset) self.column_body = ThemedFrame(self.column, background=style.color_1) self.column_body.place( relx=0, relwidth=1, y=style.headerheight, relheight=1, height=-(style.headerheight + style.footerheight)) self.category_listbox = ThemedListbox(self.column_body, foreground=style.w) self.category_listbox.configure(activestyle="none") self.category_listbox.place(relwidth=1, relheight=1) self.category_listbox.bind('<<ListboxSelect>>', self.select_frame) self.column_footer = ThemedFrame(self.column, background=style.color_1) self.column_footer.place(relx=0, rely=1, relwidth=1, height=style.footerheight, y=-style.footerheight) self.column_set_sd = button(self.column_footer, callback=self.set_sd, text_string="Select SD Root", font=style.mediumtext, background=style.color_2).place( relwidth=1, relheight=0.5, y=style.offset, x=style.offset, width=-2 * style.offset, height=-2 * style.offset) self.column_sd_status_label = ThemedLabel( self.column_footer, "SD: Not Set", anchor="w", label_font=style.giantboldtext, background=style.color_1, foreground=style.pathdisplaytextcolor) self.column_sd_status_label.place(x=style.offset, relheight=0.5, rely=0.5, height=-style.offset, relwidth=1, width=-2 * style.offset) self.content_frame = ThemedFrame(self) self.content_frame.place(x=style.sidecolumnwidth, width=-style.sidecolumnwidth, rely=0, relheight=1, relwidth=1) self.content_frame_header = ThemedFrame(self.content_frame) self.content_frame_header.place(relx=0, rely=0, relwidth=1, height=style.searchboxheight) self.category_label = ThemedLabel(self.content_frame_header, "", anchor="nw", label_font=style.giantboldtext, background=style.color_1, foreground=style.lg) self.category_label.place(x=+style.offset, relx=0, rely=0, relheight=1, height=-(style.offset + 1), y=+style.offset) self.content_frame_header_search_bar = searchBox( self.content_frame_header, command=self.search, entry_background=style.color_2, borderwidth=0, entry_foreground=style.w) self.selected_sort_method = tk.StringVar() self.selected_sort_method.set(SORT_OPTIONS[0]) self.content_frame_header_sort_method_dropdown = tk.OptionMenu( self.content_frame_header, self.selected_sort_method, *SORT_OPTIONS) self.content_frame_header_sort_method_dropdown.configure( foreground=style.w) self.content_frame_header_sort_method_dropdown.configure( background=style.color_2) self.content_frame_header_sort_method_dropdown.configure( highlightthickness=0) self.content_frame_header_sort_method_dropdown.configure(borderwidth=0) #The various content gets stacked on top of each other here. self.content_stacking_frame = ThemedFrame(self.content_frame) self.content_stacking_frame.place( relx=0, y=(style.searchboxheight + style.offset), relwidth=1, relheight=1, height=-(style.searchboxheight + style.offset)) all_frame = categoryFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.all) media_frame = categoryFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.media) emus_frame = categoryFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.emulators) games_frame = categoryFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.games) tools_frame = categoryFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.homebrew) python_frame = categoryFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.nxpythonlist) cfw_frame = categoryFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.customfirmwarelist) installed_frame = installed_categoryFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.all) self.presets_frame = presets_frame = presetsPage( self.content_stacking_frame, self.controller) injector_frame = injector_categoryFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.payloadlist) help_frame = helpFrame(self.content_stacking_frame) about_frame = aboutFrame(self.content_stacking_frame) readme_frame = readmeFrame(self.content_stacking_frame) settings_frame = settingsPage(self.content_stacking_frame, self.controller) exit_frame = exitPage(self.content_stacking_frame, self.controller) self.category_frames = [ all_frame, media_frame, emus_frame, games_frame, tools_frame, python_frame, cfw_frame, installed_frame, injector_frame ] self.frames = [ { "frame": all_frame, "text": "All Apps" }, { "frame": games_frame, "text": "Games" }, { "frame": emus_frame, "text": "Emulators" }, { "frame": tools_frame, "text": "Homebrew" }, { "frame": media_frame, "text": "Media" }, { "frame": python_frame, "text": "Python" }, { "frame": cfw_frame, "text": "Custom Firmware" }, { "frame": installed_frame, "text": "Installed" }, # { # "frame" : presets_frame, # "text" : "Bundles (Beta)" # }, { "frame": injector_frame, "text": "RCM Injector" }, { "frame": help_frame, "text": "HELP" }, { "frame": about_frame, "text": "ABOUT" }, { "frame": readme_frame, "text": "README", }, { "frame": settings_frame, "text": "SETTINGS" }, { "frame": exit_frame, "text": "EXIT" } ] self.all_frames = [] self.content_frames = {} def make_frames_and_add_to_list(frame_list, listbox): for f in frame_list: page_name = f["text"] frame = f["frame"] self.content_frames[page_name] = frame frame.place(relx=0, rely=0, relwidth=1, relheight=1) listbox.insert("end", " {}".format(page_name)) self.all_frames.append(f) make_frames_and_add_to_list(self.frames, self.category_listbox) self.category_listbox.select_set( 0) #sets focus on the first item in listbox self.category_listbox.event_generate("<<ListboxSelect>>") self.show_frame("All Apps") if self.updater.status: print(self.updater.status) self.yesnoPage = yesnoPage(self) self.yesnoPage.getanswer( "An update is available, would you like to download it?\nPatch notes:\n{}" .format(self.updater.status), self.updater.update) self.loaded() self.add_on_refresh_callback(self.update_sd_path) self.add_on_tick_callback(self.update_sd_path) self.sort_check_loop()
def __init__(self, parent, controller): activeFrame.__init__(self, parent, controller) self.controller = controller self.appstore_handler = Store_handler self.package_parser = Parser self.selected_version = None self.version_index = None self.package = None self.bind("<Configure>", self.on_configure) self.column = ThemedFrame(self, background=style.color_1) self.column.place(relx=1, rely=0, width=style.sidecolumnwidth, relheight=1, x=-style.sidecolumnwidth) self.column_body = ThemedFrame(self.column, background=style.color_1) self.column_body.place(relwidth=1, relheight=1) self.column_title = ThemedLabel(self.column_body, "", anchor="w", font=style.mediumboldtext, foreground=style.w, background=style.color_1) self.column_title.place(x=style.offset, width=-style.offset, rely=0, relwidth=1, height=style.detailspagemultiplier) self.column_author = ThemedLabel(self.column_body, "", anchor="w", font=style.smalltext, foreground=style.w, background=style.color_1) self.column_author.place(x=style.offset, width=-style.offset, y=style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_version = ThemedLabel(self.column_body, "", anchor="w", font=style.smalltext, foreground=style.w, background=style.color_1) self.column_version.place(x=style.offset, width=-style.offset, y=1.333 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_license = ThemedLabel(self.column_body, "", anchor="w", font=style.smalltext, foreground=style.w, background=style.color_1) self.column_license.place(x=style.offset, width=-style.offset, y=1.666 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_package = ThemedLabel(self.column_body, "", anchor="w", font=style.smalltext, foreground=style.w, background=style.color_1) self.column_package.place(x=style.offset, width=-style.offset, y=2.000 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_downloads = ThemedLabel(self.column_body, "", anchor="w", font=style.smalltext, foreground=style.w, background=style.color_1) self.column_downloads.place(x=style.offset, width=-style.offset, y=2.333 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_updated = ThemedLabel(self.column_body, "", anchor="w", font=style.smalltext, foreground=style.w, background=style.color_1) self.column_updated.place(x=style.offset, width=-style.offset, y=2.666 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) # self.column_separator_top = ThemedLabel(self.column_body, "", background=style.lg) # self.column_separator_top.place(rely=1,relwidth = 1, x = + style.offset, y = - 3 * (style.buttonsize + style.offset) - 3 * style.offset - style.buttonsize - 1 - 0.5 * style.buttonsize, width = - 2 * style.offset, height = 1) # self.column_separator_bot = ThemedLabel(self.column_body, "", background=style.lg) # self.column_separator_bot.place(rely=1,relwidth = 1, x = + style.offset, y = - 3 * (style.buttonsize + style.offset) - style.offset - 1, width = - 2 * style.offset, height = 1) self.column_open_url_button = button( self.column_body, callback=self.trigger_open_tab, text_string="VISIT PAGE", font=style.mediumboldtext, background=style.color_2, ).place(rely=1, relwidth=1, x=+style.offset, y=-3 * (style.buttonsize + style.offset), width=-2 * style.offset, height=style.buttonsize) self.column_install_button = button(self.column_body, callback=self.trigger_install, text_string="INSTALL", font=style.mediumboldtext, background=style.color_2) self.column_install_button.place(rely=1, relwidth=1, x=+style.offset, y=-2 * (style.buttonsize + style.offset), width=-2 * style.offset, height=style.buttonsize) self.column_uninstall_button = button(self.column_body, callback=self.trigger_uninstall, text_string="UNINSTALL", font=style.mediumboldtext, background=style.color_2) self.back_image = ImageTk.PhotoImage( Image.open("assets/return.png").resize( (style.buttonsize, style.buttonsize), Image.ANTIALIAS)) self.column_backbutton = button(self.column_body, image_object=self.back_image, callback=self.leave, background=style.color_1) self.column_backbutton.place(rely=1, relx=1, x=-(style.buttonsize + style.offset), y=-(style.buttonsize + style.offset)) # self.column_backbutton_ttp = tooltip(self.column_backbutton,"Back to list") self.content_frame = ThemedFrame(self, background=style.color_2) self.content_frame.place(x=0, width=-style.sidecolumnwidth, rely=0, relheight=1, relwidth=1) self.content_frame_header = ThemedFrame(self.content_frame, background=style.color_2) self.content_frame_header.place(x=style.offset, width=-2 * style.offset, rely=0, relwidth=1, height=style.detailspagemultiplier) self.content_frame_body = ThemedFrame(self.content_frame, background=style.color_2) self.content_frame_body.place(x=style.offset, width=-2 * style.offset, y=style.detailspagemultiplier, relwidth=1, height=-style.detailspagemultiplier, relheight=1) self.content_banner_image_frame = ThemedFrame(self.content_frame, background=style.color_2) self.content_banner_image_frame.place( x=0, y=+style.detailspagemultiplier, relwidth=1, height=-style.detailspagemultiplier, relheight=0.4) self.content_banner_image = ThemedLabel( self.content_banner_image_frame, "", background=style.color_2, foreground=style.w, anchor="center", wraplength=None) self.content_banner_image.place(x=0, y=0, relwidth=1, relheight=1) self.content_frame_details = scrolledText(self.content_frame_body, wrap='word', font=style.smalltext, background=style.lg) self.content_frame_details.place(rely=0.4, relx=0, relwidth=1, relheight=0.6, x=+style.offset, width=-2 * (style.offset), height=-style.offset) #Displays app name self.header_label = ThemedLabel(self.content_frame_header, "", anchor="w", font=style.giantboldtext, background=style.color_2, foreground=style.b) self.header_label.place(rely=0, y=0, relheight=0.65) #Displays app name self.header_author = ThemedLabel(self.content_frame_header, "", anchor="w", font=style.smalltext, background=style.color_2, foreground=style.color_1) self.header_author.place(rely=0.65, y=0, relheight=0.35) self.progress_bar = progressFrame(self) self.yesnoPage = yesnoPage(self)
def __init__(self, parent, controller): self.controller = controller self.appstore_handler = Store_handler self.repo_parser = Parser self.current_frame = None self.current_frame_name = None self.last_selection = None self.last_sort_option = None self.updater = updater activeFrame.__init__(self, parent, controller) self.column = ThemedFrame(self, background=style.color_1) self.column.place(relx=0, rely=0, width=style.sidecolumnwidth, relheight=1) self.column_header = ThemedFrame(self.column, background=style.color_1) self.column_header.place(relx=0, rely=0, relwidth=1, height=style.column_headerheight) self.column_header_title = ThemedLabel(self.column_header, "Appstore\nWorkbench\nGPLv3", anchor="center", font=style.largeboldtext, background=style.color_1) self.column_header_title.place(relx=0, rely=0, relwidth=1, relheight=1, height=-(style.offset + 1), y=+style.offset) self.column_header_separator = ThemedLabel(self.column_header, "", background=style.w) self.column_header_separator.place(x=style.offset, rely=1, y=-1, relwidth=1, width=-2 * style.offset) self.column_body = ThemedFrame(self.column, background=style.color_1) self.column_body.place( relx=0, relwidth=1, y=style.column_headerheight, relheight=1, height=-(style.column_headerheight + style.footerheight)) self.category_listbox = ThemedListbox(self.column_body, foreground=style.w) self.category_listbox.configure(activestyle="none") self.category_listbox.place(relwidth=1, relheight=1) self.category_listbox.bind('<<ListboxSelect>>', self.select_frame) self.column_footer = ThemedFrame(self.column, background=style.color_1) self.column_footer.place(relx=0, rely=1, relwidth=1, height=2 * style.listbox_footer_height, y=-2 * style.listbox_footer_height) self.column_set_sd = button(self.column_footer, callback=self.set_sd, text_string="Select SD Root", font=style.mediumtext, background=style.color_2).place( relwidth=1, y=0, x=style.offset, width=-2 * style.offset, height=style.listbox_footer_height) self.column_sd_status_label = ThemedLabel( self.column_footer, "SD - Not Set", anchor="center", font=style.smalltext, background=style.color_1, foreground=style.pathdisplaytextcolor) self.column_sd_status_label.place( x=style.offset, relwidth=1, width=-2 * style.offset, y=-style.listbox_footer_height, height=style.listbox_footer_height, rely=1, ) self.content_frame = ThemedFrame(self) self.content_frame.place(x=style.sidecolumnwidth, width=-style.sidecolumnwidth, rely=0, relheight=1, relwidth=1) self.content_frame_header = ThemedFrame(self.content_frame) self.content_frame_header.place(relx=0, rely=0, relwidth=1, height=style.searchboxheight) self.category_label = ThemedLabel(self.content_frame_header, "", anchor="nw", font=style.giantboldtext, background=style.color_1, foreground=style.lg) self.category_label.place(x=+style.offset, relx=0, rely=0, relheight=1, height=-(style.offset + 1), y=+style.offset) self.content_frame_header_search_bar = searchBox( self.content_frame_header, command=self.search, entry_background=style.color_2, borderwidth=0, entry_foreground=style.w) self.selected_sort_method = tk.StringVar() self.selected_sort_method.set(SORT_OPTIONS[0]) self.content_frame_header_sort_method_dropdown = tk.OptionMenu( self.content_frame_header, self.selected_sort_method, *SORT_OPTIONS) self.content_frame_header_sort_method_dropdown.configure( foreground=style.w) self.content_frame_header_sort_method_dropdown.configure( background=style.color_2) self.content_frame_header_sort_method_dropdown.configure( highlightthickness=0) self.content_frame_header_sort_method_dropdown.configure(borderwidth=0) #The various content gets stacked on top of each other here. self.content_stacking_frame = ThemedFrame(self.content_frame) self.content_stacking_frame.place( relx=0, y=(style.searchboxheight + style.offset), relwidth=1, relheight=1, height=-(style.searchboxheight + style.offset)) all_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.all) tools_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.tools) emus_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.emus) games_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.games) installed_frame = installedcategorylistFrame( self.content_stacking_frame, self.controller, self, self.repo_parser.all) # help_frame = helpFrame(self.content_stacking_frame) # about_frame = aboutFrame(self.content_stacking_frame) # readme_frame = readmeFrame(self.content_stacking_frame) settings_frame = settingsPage(self.content_stacking_frame, self.controller) exit_frame = exitPage(self.content_stacking_frame, self.controller) self.category_frames = [ all_frame, tools_frame, emus_frame, games_frame, installed_frame ] self.frames = [ { "frame": all_frame, "text": "All Apps" }, { "frame": tools_frame, "text": "Tools" }, { "frame": emus_frame, "text": "Emulators" }, { "frame": games_frame, "text": "Games" }, ] if config.CONSOLE in [config.WII, config.WII_OSC]: misc_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.misc) self.category_frames.append(misc_frame) self.frames.extend([ { "frame": misc_frame, "text": "Misc" }, ]) elif config.CONSOLE == config.SWITCH: legacy_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.legacy) themes_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.themes) advanced_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.advanced) self.category_frames.append(legacy_frame) self.category_frames.append(themes_frame) self.category_frames.append(advanced_frame) self.frames.extend([ { "frame": advanced_frame, "text": "Advanced Homebrew" }, { "frame": themes_frame, "text": "Themes" }, { "frame": legacy_frame, "text": "Legacy" }, ]) elif config.CONSOLE == config.WIIU: misc_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.misc) advanced_frame = categorylistFrame(self.content_stacking_frame, self.controller, self, self.repo_parser.advanced) self.category_frames.append(misc_frame) self.category_frames.append(advanced_frame) self.frames.extend([ { "frame": advanced_frame, "text": "Advanced Homebrew" }, { "frame": misc_frame, "text": "Misc" }, ]) else: raise "Invalid Console" self.frames.extend([ { "frame": installed_frame, "text": "Installed" }, # { # "frame" : help_frame, # "text" : "HELP" # }, # { # "frame" : about_frame, # "text" : "ABOUT" # }, # { # "frame" : readme_frame, # "text" : "README", # }, { "frame": settings_frame, "text": "SETTINGS" }, { "frame": exit_frame, "text": "EXIT" } ]) self.all_frames = [] self.content_frames = {} def make_frames_and_add_to_list(frame_list, listbox): for f in frame_list: page_name = f["text"] frame = f["frame"] self.content_frames[page_name] = frame frame.place(relx=0, rely=0, relwidth=1, relheight=1) listbox.insert("end", " {}".format(page_name)) self.all_frames.append(f) threader.do_async(lambda: make_frames_and_add_to_list( self.frames, self.category_listbox)) self.category_listbox.select_set( 0) #sets focus on the first item in listbox self.category_listbox.event_generate("<<ListboxSelect>>") self.show_frame("All Apps") if self.updater.status: print(self.updater.status) self.yesnoPage = yesnoPage(self) self.yesnoPage.getanswer( "An update is available, would you like to download it?\nPatch notes:\n{}" .format(self.updater.status), self.updater.update) self.loaded() self.add_on_refresh_callback(self.update_sd_path) self.add_on_tick_callback(self.update_sd_path) self.sort_check_loop()
def __init__(self, parent, controller): activeFrame.__init__(self, parent, controller) self.controller = controller self.appstore_handler = controller.appstore_handler self.repo_parser = controller.repo_parser self.repo = None #------------------------------ self.column = ThemedFrame(self, background=style.light_color) self.column.place(relx=1, rely=0, width=style.sidecolumnwidth, relheight=1, x=-style.sidecolumnwidth) self.column_body = ThemedFrame(self.column, background=style.light_color) self.column_body.place(relwidth=1, relheight=1) self.column_title = ThemedLabel(self.column_body, "", anchor="w", label_font=style.mediumboldtext, foreground=style.w, background=style.light_color) self.column_title.place(x=5, width=-5, rely=0, relwidth=1, height=style.headerheight) #------------------------------ self.column_author = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.light_color) self.column_author.place(x=5, width=-5, y=style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_version = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.light_color) self.column_version.place(x=5, width=-5, y=1.333 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_license = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.light_color) self.column_license.place(x=5, width=-5, y=1.666 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) #------------------------------ #------------------------------ self.column_package = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.light_color) self.column_package.place(x=5, width=-5, y=2.333 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_downloads = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.light_color) self.column_downloads.place(x=5, width=-5, y=2.666 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_updated = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.light_color) self.column_updated.place(x=5, width=-5, y=3.00 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) #------------------------------ #------------------------------ self.column_downloaded = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.light_color) self.column_downloaded.place(x=5, width=-5, y=3.66 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) #------------------------------ self.column_extracted = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.light_color) self.column_extracted.place(x=5, width=-5, y=4 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_open_url_button = button( self.column_body, callback=self.trigger_open_tab, text_string="VISIT PAGE", font=style.mediumboldtext, background=style.dark_color).place( rely=1, relx=0.5, x=-1.5 * (style.buttonsize), y=-4 * (style.buttonsize + style.offset), width=3 * style.buttonsize, height=style.buttonsize) self.column_install_button = button(self.column_body, callback=self.trigger_install, text_string="INSTALL", font=style.mediumboldtext, background=style.dark_color) self.column_install_button.place(rely=1, relx=0.5, x=-1.5 * (style.buttonsize), y=-3 * (style.buttonsize + style.offset), width=3 * style.buttonsize, height=style.buttonsize) self.column_uninstall_button = button(self.column_body, callback=self.trigger_uninstall, text_string="UNINSTALL", font=style.mediumboldtext, background=style.dark_color) self.back_image = ImageTk.PhotoImage( Image.open(locations.backimage).resize( (style.buttonsize, style.buttonsize), Image.ANTIALIAS)) self.column_backbutton = button(self.column_body, image_object=self.back_image, callback=self.leave, background=style.light_color) self.column_backbutton.place(rely=1, relx=1, x=-(style.buttonsize + style.offset), y=-(style.buttonsize + style.offset)) self.column_backbutton_ttp = tooltip(self.column_backbutton, "Back to list") self.content_frame = ThemedFrame(self, background=style.w) self.content_frame.place(x=0, width=-style.sidecolumnwidth, rely=0, relheight=1, relwidth=1) self.content_frame_header = ThemedFrame(self.content_frame, background=style.w) self.content_frame_header.place(x=style.offset, width=-2 * style.offset, rely=0, relwidth=1, height=style.detailspagemultiplier) self.content_frame_body = ThemedFrame(self.content_frame, background=style.w) self.content_frame_body.place(x=style.offset, width=-2 * style.offset, y=style.detailspagemultiplier, relwidth=1, height=-style.detailspagemultiplier, relheight=1) self.content_banner_image = ThemedLabel(self.content_frame_body, "", background=style.w, foreground=style.w, anchor="center", wraplength=None) self.content_banner_image.place(x=0, y=0, relwidth=1, relheight=0.5) self.content_frame_details = scrolledText(self.content_frame_body, wrap='word', font=style.smalltext) self.content_frame_details.place(rely=0.5, relx=0, relwidth=1, relheight=0.5, x=+style.offset, width=-2 * (style.offset), height=-style.offset) #Displays app name self.header_label = ThemedLabel(self.content_frame_header, "", anchor="w", label_font=style.giantboldtext, background=style.w, foreground=style.b) self.header_label.place(rely=0, y=0, relheight=0.65) #Displays app name self.header_author = ThemedLabel(self.content_frame_header, "", anchor="w", label_font=style.smalltext, background=style.w, foreground=style.light_color) self.header_author.place(rely=0.65, y=0, relheight=0.35) self.progress_bar = progressFrame(self) self.yesnoPage = yesnoPage(self)
def __init__(self, parent, controller): activeFrame.__init__(self, parent, controller) self.controller = controller self.appstore_handler = controller.appstore_handler self.repo_parser = controller.repo_parser self.selected_version = None self.version_index = None self.repo = None self.bind("<Configure>", self.on_configure) #------------------------------ self.column = ThemedFrame(self, background=style.color_1) self.column.place(relx=1, rely=0, width=style.sidecolumnwidth, relheight=1, x=-style.sidecolumnwidth) self.column_body = ThemedFrame(self.column, background=style.color_1) self.column_body.place(relwidth=1, relheight=1) self.column_title = ThemedLabel(self.column_body, "", anchor="w", label_font=style.mediumboldtext, foreground=style.w, background=style.color_1) self.column_title.place(x=5, width=-5, rely=0, relwidth=1, height=style.detailspagemultiplier) #------------------------------ self.column_author = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_author.place(x=5, width=-5, y=style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_version = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_version.place(x=5, width=-5, y=1.333 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_license = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_license.place(x=5, width=-5, y=1.666 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) #------------------------------ #------------------------------ self.column_package = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_package.place(x=5, width=-5, y=2.333 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_downloads = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_downloads.place(x=5, width=-5, y=2.666 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_updated = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_updated.place(x=5, width=-5, y=3.00 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) #------------------------------ self.releases_listbox = ScrolledThemedListBox(self.column_body) self.releases_listbox.configure(activestyle="none") self.releases_listbox.place( relwidth=1, y=3.66 * style.detailspagemultiplier, relheight=1, height=-(3.66 * style.detailspagemultiplier + 3 * (style.buttonsize + style.offset) + style.offset)) self.releases_listbox.bind('<<ListboxSelect>>', self.select_version) self.column_open_url_button = button( self.column_body, callback=self.trigger_open_tab, text_string="VISIT PAGE", font=style.mediumboldtext, background=style.color_2, ).place(rely=1, relx=0.5, x=-1.5 * (style.buttonsize), y=-3 * (style.buttonsize + style.offset), width=3 * style.buttonsize, height=style.buttonsize) self.column_install_button = button(self.column_body, callback=self.trigger_install, text_string="INSTALL", font=style.mediumboldtext, background=style.color_2) self.column_install_button.place(rely=1, relx=0.5, x=-1.5 * (style.buttonsize), y=-2 * (style.buttonsize + style.offset), width=3 * style.buttonsize, height=style.buttonsize) self.column_uninstall_button = button(self.column_body, callback=self.trigger_uninstall, text_string="UNINSTALL", font=style.mediumboldtext, background=style.color_2) self.back_image = ImageTk.PhotoImage( Image.open(locations.backimage).resize( (style.buttonsize, style.buttonsize), Image.ANTIALIAS)) self.column_backbutton = button(self.column_body, image_object=self.back_image, callback=self.leave, background=style.color_1) self.column_backbutton.place(rely=1, relx=1, x=-(style.buttonsize + style.offset), y=-(style.buttonsize + style.offset)) # self.column_backbutton_ttp = tooltip(self.column_backbutton,"Back to list") self.content_frame = ThemedFrame(self, background=style.color_2) self.content_frame.place(x=0, width=-style.sidecolumnwidth, rely=0, relheight=1, relwidth=1) self.content_frame_header = ThemedFrame(self.content_frame, background=style.color_2) self.content_frame_header.place(x=style.offset, width=-2 * style.offset, rely=0, relwidth=1, height=style.detailspagemultiplier) self.content_frame_body = ThemedFrame(self.content_frame, background=style.color_2) self.content_frame_body.place(x=style.offset, width=-2 * style.offset, y=style.detailspagemultiplier, relwidth=1, height=-style.detailspagemultiplier, relheight=1) self.content_banner_image_frame = ThemedFrame(self.content_frame, background=style.color_2) self.content_banner_image_frame.place( x=0, y=+style.detailspagemultiplier, relwidth=1, height=-style.detailspagemultiplier, relheight=0.4) self.content_banner_image = ThemedLabel( self.content_banner_image_frame, "", background=style.color_2, foreground=style.w, anchor="center", wraplength=None) self.content_banner_image.place(x=0, y=0, relwidth=1, relheight=1) self.content_frame_details = scrolledText(self.content_frame_body, wrap='word', font=style.smalltext, background=style.lg) self.content_frame_details.place(rely=0.4, relx=0, relwidth=1, relheight=0.25, x=+style.offset, width=-2 * (style.offset), height=-style.offset) self.content_frame_patch_notes_label = ThemedLabel( self.content_frame_body, "Release notes:", anchor="w", label_font=style.mediumboldtext, foreground=style.b, background=style.color_2) self.content_frame_patch_notes_label.place( relx=0.5, width=self.content_frame_patch_notes_label.winfo_reqwidth(), rely=0.65, y=+style.offset, x=-0.5 * self.content_frame_patch_notes_label.winfo_reqwidth(), height=0.33 * style.detailspagemultiplier) self.content_frame_version_details = scrolledText( self.content_frame_body, wrap='word', font=style.smalltext, background=style.lg) self.content_frame_version_details.place( rely=0.65, y=+style.offset + 0.33 * style.detailspagemultiplier, relx=0, relwidth=1, relheight=0.35, height=-(2 * style.offset + 0.33 * style.detailspagemultiplier), x=+style.offset, width=-2 * (style.offset)) #Displays app name self.header_label = ThemedLabel(self.content_frame_header, "", anchor="w", label_font=style.giantboldtext, background=style.color_2, foreground=style.b) self.header_label.place(rely=0, y=0, relheight=0.65) #Displays app name self.header_author = ThemedLabel(self.content_frame_header, "", anchor="w", label_font=style.smalltext, background=style.color_2, foreground=style.color_1) self.header_author.place(rely=0.65, y=0, relheight=0.35) self.progress_bar = progressFrame(self) self.yesnoPage = yesnoPage(self)
def __init__(self, parent, controller): activeFrame.__init__(self, parent, controller) self.controller = controller self.appstore_handler = store_handler self.repo_parser = repo_parser self.selected_version = None self.version_index = None self.repo = None self.package = None self.bind("<Configure>", self.on_configure) self.column = ThemedFrame(self, background=style.color_1) self.column.place(relx=1, rely=0, width=style.sidecolumnwidth, relheight=1, x=-style.sidecolumnwidth) self.column_body = ThemedFrame(self.column, background=style.color_1) self.column_body.place(relwidth=1, relheight=1) self.column_title = ThemedLabel(self.column_body, "", anchor="w", label_font=style.mediumboldtext, foreground=style.w, background=style.color_1) self.column_title.place(x=style.offset, width=-style.offset, rely=0, relwidth=1, height=style.detailspagemultiplier) self.column_author = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_author.place(x=style.offset, width=-style.offset, y=style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_version = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_version.place(x=style.offset, width=-style.offset, y=1.333 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_license = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_license.place(x=style.offset, width=-style.offset, y=1.666 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_package = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_package.place(x=style.offset, width=-style.offset, y=2.000 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_downloads = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_downloads.place(x=style.offset, width=-style.offset, y=2.333 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_updated = ThemedLabel(self.column_body, "", anchor="w", label_font=style.smalltext, foreground=style.w, background=style.color_1) self.column_updated.place(x=style.offset, width=-style.offset, y=2.666 * style.detailspagemultiplier, relwidth=1, height=0.333 * style.detailspagemultiplier) self.column_separator_top = ThemedLabel(self.column_body, "", background=style.lg) self.column_separator_top.place( rely=1, relwidth=1, x=+style.offset, y=-3 * (style.buttonsize + style.offset) - 3 * style.offset - style.buttonsize - 1 - 0.5 * style.buttonsize, width=-2 * style.offset, height=1) self.tags_menu_label = ThemedLabel(self.column_body, "Releases:", anchor="w", label_font=style.smallboldtext, foreground=style.w, background=style.color_1) self.tags_menu_label.place(rely=1, relwidth=1, x=+style.offset, y=-3 * (style.buttonsize + style.offset) - 2 * style.offset - style.buttonsize - 1 - 0.5 * style.buttonsize, width=-2 * style.offset, height=0.5 * style.buttonsize) self.TAGS_LIST = ["You shouldn't be seeing this"] self.selected_tag_name = tk.StringVar() self.selected_tag_name.set(None) self.tags_dropdown = tk.OptionMenu(self.column_body, self.selected_tag_name, *self.TAGS_LIST) self.tags_dropdown.configure(foreground=style.w) self.tags_dropdown.configure(background=style.color_2) self.tags_dropdown.configure(highlightthickness=0) self.tags_dropdown.configure(borderwidth=0) self.tags_dropdown.place(rely=1, relwidth=1, x=+style.offset, y=-3 * (style.buttonsize + style.offset) - 2 * style.offset - style.buttonsize - 1, width=-2 * style.offset, height=style.buttonsize) self.column_separator_bot = ThemedLabel(self.column_body, "", background=style.lg) self.column_separator_bot.place( rely=1, relwidth=1, x=+style.offset, y=-3 * (style.buttonsize + style.offset) - style.offset - 1, width=-2 * style.offset, height=1) self.column_open_url_button = button( self.column_body, callback=self.trigger_open_tab, text_string="VISIT PAGE", font=style.mediumboldtext, background=style.color_2, ).place(rely=1, relwidth=1, x=+style.offset, y=-3 * (style.buttonsize + style.offset), width=-2 * style.offset, height=style.buttonsize) self.column_install_button = button(self.column_body, callback=self.trigger_install, text_string="INSTALL", font=style.mediumboldtext, background=style.color_2) self.column_install_button.place(rely=1, relwidth=1, x=+style.offset, y=-2 * (style.buttonsize + style.offset), width=-2 * style.offset, height=style.buttonsize) self.column_uninstall_button = button(self.column_body, callback=self.trigger_uninstall, text_string="UNINSTALL", font=style.mediumboldtext, background=style.color_2) self.back_image = ImageTk.PhotoImage( Image.open(locations.backimage).resize( (style.buttonsize, style.buttonsize), Image.ANTIALIAS)) self.column_backbutton = button(self.column_body, image_object=self.back_image, callback=self.leave, background=style.color_1) self.column_backbutton.place(rely=1, relx=1, x=-(style.buttonsize + style.offset), y=-(style.buttonsize + style.offset)) # self.column_backbutton_ttp = tooltip(self.column_backbutton,"Back to list") self.content_frame = ThemedFrame(self, background=style.color_2) self.content_frame.place(x=0, width=-style.sidecolumnwidth, rely=0, relheight=1, relwidth=1) self.content_frame_header = ThemedFrame(self.content_frame, background=style.color_2) self.content_frame_header.place(x=style.offset, width=-2 * style.offset, rely=0, relwidth=1, height=style.detailspagemultiplier) self.content_frame_body = ThemedFrame(self.content_frame, background=style.color_2) self.content_frame_body.place(x=style.offset, width=-2 * style.offset, y=style.detailspagemultiplier, relwidth=1, height=-style.detailspagemultiplier, relheight=1) self.content_banner_image_frame = ThemedFrame(self.content_frame, background=style.color_2) self.content_banner_image_frame.place( x=0, y=+style.detailspagemultiplier, relwidth=1, height=-style.detailspagemultiplier, relheight=0.4) self.content_banner_image = ThemedLabel( self.content_banner_image_frame, "", background=style.color_2, foreground=style.w, anchor="center", wraplength=None) self.content_banner_image.place(x=0, y=0, relwidth=1, relheight=1) self.content_frame_details = scrolledText(self.content_frame_body, wrap='word', font=style.smalltext, background=style.lg) self.content_frame_details.place(rely=0.4, relx=0, relwidth=1, relheight=0.25, x=+style.offset, width=-2 * (style.offset), height=-style.offset) self.content_frame_patch_notes_label = ThemedLabel( self.content_frame_body, "Release notes:", anchor="w", label_font=style.mediumboldtext, foreground=style.b, background=style.color_2) self.content_frame_patch_notes_label.place( relx=0.5, width=self.content_frame_patch_notes_label.winfo_reqwidth(), rely=0.65, y=+style.offset, x=-0.5 * self.content_frame_patch_notes_label.winfo_reqwidth(), height=0.33 * style.detailspagemultiplier) self.content_frame_version_details = scrolledText( self.content_frame_body, wrap='word', font=style.smalltext, background=style.lg) self.content_frame_version_details.place( rely=0.65, y=+style.offset + 0.33 * style.detailspagemultiplier, relx=0, relwidth=1, relheight=0.35, height=-(2 * style.offset + 0.33 * style.detailspagemultiplier), x=+style.offset, width=-2 * (style.offset)) #Displays app name self.header_label = ThemedLabel(self.content_frame_header, "", anchor="w", label_font=style.giantboldtext, background=style.color_2, foreground=style.b) self.header_label.place(rely=0, y=0, relheight=0.65) #Displays app name self.header_author = ThemedLabel(self.content_frame_header, "", anchor="w", label_font=style.smalltext, background=style.color_2, foreground=style.color_1) self.header_author.place(rely=0.65, y=0, relheight=0.35) self.progress_bar = progressFrame(self) self.yesnoPage = yesnoPage(self)