Exemple #1
0
    def __init__(self, parent):
        tk.Frame.__init__(self, parent, background=style.w)
        self.yes_command = None

        self.usertext = scrolledText(self,
                                     wrap='word',
                                     font=style.hugeboldtext,
                                     padx=4 * style.offset,
                                     pady=4 * style.offset)
        self.usertext.place(relwidth=1,
                            relheight=1,
                            height=-(style.buttonsize + 2 * style.offset))

        self.yesnobuttonframe = tk.Frame(self,
                                         background=style.w,
                                         borderwidth=0,
                                         highlightthickness=0)
        self.yesnobuttonframe.place(relx=0.5,
                                    rely=1,
                                    y=-(style.buttonsize + style.offset),
                                    width=300,
                                    x=-150,
                                    height=style.buttonsize)

        self.yesbutton = button(self.yesnobuttonframe,
                                callback=self.on_yes,
                                text_string="Yes",
                                background=style.lg)
        self.yesbutton.place(relx=0, relwidth=0.33, relheight=1)

        self.nobutton = button(self.yesnobuttonframe,
                               callback=self.on_no,
                               text_string="No",
                               background=style.lg)
        self.nobutton.place(relx=0.67, relwidth=0.33, relheight=1)
Exemple #2
0
 def makeWidgets(self, *args):
     label(self, TOP, 'PyCalc Plus - Subclass')
     CalcGui.makeWidgets(self, *args)
     frm = frame(self, BOTTOM)
     extras = [('sqrt', 'sqrt(%s)'),
               ('x^2 ', '(%s)**2'),
               ('x^3 ', '(%s)**3'),
               ('1/x ', '1.0/(%s)')]
     for (lab, expr) in extras:
         button(frm, LEFT, lab, (lambda expr=expr: self.onExtra(expr)))
     button(frm, LEFT, ' pi ', self.onPi)
Exemple #3
0
 def onMakeCmdline(self):
     new = Toplevel()  # new top-level window
     new.title('PyCalc command line')  # arbitrary Python code
     frm = frame(new, TOP)  # only the Entry expands
     label(frm, LEFT, '>>>').pack(expand=NO)
     var = StringVar()
     ent = entry(frm, LEFT, var, width=40)
     onButton = (lambda: self.onCmdline(var, ent))
     onReturn = (lambda event: self.onCmdline(var, ent))
     button(frm, RIGHT, 'Run', onButton).pack(expand=NO)
     ent.bind('<Return>', onReturn)
     var.set(self.text.get())
Exemple #4
0
 def __init__(self, **args):
     Toplevel.__init__(self)
     label(self, TOP, 'PyCalc Plus - Container')
     self.calc = CalcGui(self, **args)
     frm = frame(self, BOTTOM)
     extras = [('sqrt', 'sqrt(%s)'),
               ('x^2 ',  '(%s)**2'),
               ('x^3 ',  '(%s)**3'),
               ('1/x ',  '1.0/(%s)')]
     for (lab, expr) in extras:
         button(frm, LEFT, lab, (lambda expr=expr: self.onExtra(expr)))
     button(frm, LEFT, ' pi ', self.onPi)
Exemple #5
0
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent, background=style.color_1)
        self.exit_callback = threader.exit

        self.usertext = ThemedLabel(self,
                                    text="Exit?",
                                    font=style.hugeboldtext,
                                    anchor="center",
                                    background=style.color_1,
                                    foreground=style.w)
        self.usertext.place(relwidth=1,
                            relheight=1,
                            height=-(style.buttonsize + 2 * style.offset))

        self.yesnobuttonframe = tk.Frame(self,
                                         background=style.color_1,
                                         borderwidth=0,
                                         highlightthickness=0)
        self.yesnobuttonframe.place(relx=0.5,
                                    rely=1,
                                    y=-(style.buttonsize + style.offset),
                                    width=300,
                                    x=-150,
                                    height=style.buttonsize)

        self.yesbutton = button(self.yesnobuttonframe,
                                callback=self.on_yes,
                                text_string="Yes",
                                background=style.color_2)
        self.yesbutton.place(relx=0.33, relwidth=0.34, relheight=1)
Exemple #6
0
    def __init__(self, parent, controller, framework, category_frame, repo,
                 callback, status_handler):
        self.controller = controller
        self.parent = parent
        self.framework = framework
        self.category_frame = category_frame
        self.repo = repo
        self.name = repo["name"]
        self.callback = callback
        self.status_handler = status_handler
        self.active = True
        self.image_sharer = image_sharer
        self.imageset = False
        self.base_x = None  #Stores the base x location to build the button from for dynamic building
        self.base_y = None  #Stores the base y location to build the button from for dynamic building
        self.canvas = None
        self.placed = False
        self.thumbnailheight = None
        self.thumbnailwidth = None
        ThemedFrame.__init__(self, parent, background=style.w)

        self.buttonobj = button(self,
                                image_object=None,
                                callback=lambda: self.callback(repo),
                                background=style.color_2)
        self.buttonobj.place(relheight=1, relwidth=1)

        #Placeholders used by the category frame when building the button, fixes the disappearing text issue
        self.buttontitlelabel = None  #Placeholder used for the button title
        self.buttonauthorlabel = None  #Placeholder for the button author
        self.buttonversionlabel = None  #Placeholder for the current cersion
        self.buttonseparator = None  #Placeholder for underline in each button
        self.buttonstatuslabel = None  #Placeholder for download / version status

        self.update_button_sizes()
Exemple #7
0
    def __init__(self, parent):
        tk.Frame.__init__(self, parent, background=style.color_1)

        self.usertext = scrolledText(self,
                                     wrap='word',
                                     font=style.hugeboldtext,
                                     padx=4 * style.offset,
                                     pady=4 * style.offset,
                                     background=style.color_1,
                                     foreground=style.w)
        self.usertext.place(relwidth=1,
                            relheight=1,
                            height=-(style.buttonsize + 2 * style.offset))

        self.yesnobuttonframe = tk.Frame(self,
                                         background=style.color_1,
                                         borderwidth=0,
                                         highlightthickness=0)
        self.yesnobuttonframe.place(relx=0.5,
                                    rely=1,
                                    y=-(style.buttonsize + style.offset),
                                    width=300,
                                    x=-150,
                                    height=style.buttonsize)

        self.yesbutton = button(self.yesnobuttonframe,
                                callback=self.hide,
                                text_string="OK",
                                background=style.color_2)
        self.yesbutton.place(relx=0.5,
                             x=-50,
                             width=100,
                             height=style.buttonsize)
Exemple #8
0
 def __init__(self, parent=None):
     Frame.__init__(self, parent)
     self.pack()
     self.config(width=100)
     import widgets
     widgets.button(self, text='quit', command=self.quit)
     widgets.button(self, text='help', command=self.help)
     widgets.button(self, text='clone', command=self.clone)
     widgets.button(self, text='browse', command=self.browser)
Exemple #9
0
    def makeMenuBar(self):
        '''
        make menu bar at the top
        expand=no fill=x so same width on resize
        '''
        menubar = widgets.frame(self, relief=SUNKEN, bd=2)

        for (name, key, items) in self.menuBar:
            mbutton = Menubutton(menubar, text=name, underline=key)
            mbutton.pack(side=LEFT)
            pulldown = Menu(mbutton)
            self.addMenuItems(pulldown, items)
            mbutton.config(menu=pulldown)

        if self.helpButton:
            widgets.button(menubar,
                           text='Help',
                           cursor='gumby',
                           relief=FLAT,
                           command=self.help,
                           side=RIGHT)
Exemple #10
0
    def makeWidgets(self, fg, bg, font):  # 7 frames plus text-entry
        self.entry = entry(self, TOP, self.text)  # font, color configurable
        self.entry.config(font=font)  # 3.0: make display larger
        self.entry.config(justify=RIGHT)  # 3.0: on right, not left
        for row in self.Operands:
            frm = frame(self, TOP)
            for char in row:
                button(frm,
                       LEFT,
                       char,
                       lambda op=char: self.onOperand(op),
                       fg=fg,
                       bg=bg,
                       font=font)

        frm = frame(self, TOP)
        for char in self.Operators:
            button(frm,
                   LEFT,
                   char,
                   lambda op=char: self.onOperator(op),
                   fg=bg,
                   bg=fg,
                   font=font)

        frm = frame(self, TOP)
        button(frm, LEFT, 'dot ', lambda: self.onOperand('.'))
        button(frm, LEFT, ' E+ ',
               lambda: self.text.set(self.text.get() + 'E+'))
        button(frm, LEFT, ' E- ',
               lambda: self.text.set(self.text.get() + 'E-'))
        button(frm, LEFT, 'cmd ', self.onMakeCmdline)
        button(frm, LEFT, 'help', self.help)
        button(frm, LEFT, 'quit', self.quit)  # from guimixin

        frm = frame(self, BOTTOM)
        button(frm, LEFT, 'eval ', self.onEval)
        button(frm, LEFT, 'hist ', self.onHist)
        button(frm, LEFT, 'clear', self.onClear)
Exemple #11
0
 def makeMainBox(self):
     frm = frame(self, TOP)
     frm.config(bd=2)
     button(frm, LEFT, 'next', self.onNext)  # next in list
     button(frm, LEFT, 'prev', self.onPrev)  # backup in list
     button(frm, LEFT, 'find', self.onFind)  # find from key
     frm = frame(self, TOP)
     self.keytext = StringVar()  # current record's key
     label(frm, LEFT, 'KEY=>')  # change before 'find'
     entry(frm, LEFT, self.keytext)
     frm = frame(self, TOP)
     frm.config(bd=2)
     button(frm, LEFT, 'store', self.onStore)  # updated entry data
     button(frm, LEFT, 'new', self.onNew)  # clear fields
     button(frm, LEFT, 'index', self.onMakeList)  # show key list
     button(frm, LEFT, 'delete', self.onDelete)  # show key list
     button(self, BOTTOM, 'quit', self.quit)  # from guimixin
Exemple #12
0
    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()
Exemple #13
0
    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)
Exemple #14
0
    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)
Exemple #15
0
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent, background=style.color_2)
        self.settings = settings
        self.controller = controller

        self.settings_page_header = ThemedLabel(
            self,
            label_text="Most settings will not take effect until next launch",
            background=style.color_2,
            label_font=style.mediumboldtext)
        self.settings_page_header.place(y=style.offset,
                                        x=style.offset,
                                        height=style.buttonsize -
                                        2 * style.offset,
                                        relwidth=1,
                                        width=-2 * style.offset)

        thumbnail_sizes = ["tiny", "small", "medium", "large", "huge"]
        self.thumbnail_size_dropdown = customOptionMenu(self, thumbnail_sizes)
        self.thumbnail_size_dropdown.place(y=style.offset + style.buttonsize,
                                           x=style.offset,
                                           height=style.buttonsize -
                                           2 * style.offset,
                                           width=200 - style.offset)
        self.thumbnail_size_dropdown_label = ThemedLabel(
            self,
            label_text="~ Tile Size\n(No restart)",
            background=style.color_2)
        self.thumbnail_size_dropdown_label.place(
            y=style.offset + style.buttonsize,
            x=200 + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=401)

        thread_levels = [x for x in range(1, 17)]
        self.gui_threads_dropdown = customOptionMenu(self, thread_levels)
        self.gui_threads_dropdown.place(
            y=2 * (style.offset + style.buttonsize),
            x=style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=200 - style.offset)
        self.gui_threads_dropdown_label = ThemedLabel(
            self,
            label_text="~ Max threads\n(No restart)",
            background=style.color_2)
        self.gui_threads_dropdown_label.place(
            y=2 * (style.offset + style.buttonsize),
            x=200 + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=401)

        maximized_options = ["fullscreen", "maximized", "windowed"]
        self.maximized_on_launch_dropdown = customOptionMenu(
            self, maximized_options)
        self.maximized_on_launch_dropdown.place(
            y=3 * (style.offset + style.buttonsize),
            x=style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=200 - style.offset)
        self.maximized_dropdown_label = ThemedLabel(
            self, label_text="~ Maximized on launch", background=style.color_2)
        self.maximized_dropdown_label.place(
            y=3 * (style.offset + style.buttonsize),
            x=200 + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=401)

        self.topmost_dropdown = customOptionMenu(self, truefalse_options)
        self.topmost_dropdown.place(y=4 * (style.offset + style.buttonsize),
                                    x=style.offset,
                                    height=style.buttonsize - 2 * style.offset,
                                    width=200 - style.offset)
        self.topmost_dropdown_label = ThemedLabel(
            self, label_text="~ Keep window topmost", background=style.color_2)
        self.topmost_dropdown_label.place(
            y=4 * (style.offset + style.buttonsize),
            x=200 + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=401)

        self.borderless_dropdown = customOptionMenu(self, truefalse_options)
        self.borderless_dropdown.place(y=5 * (style.offset + style.buttonsize),
                                       x=style.offset,
                                       height=style.buttonsize -
                                       2 * style.offset,
                                       width=200 - style.offset)
        self.borderless_dropdown_label = ThemedLabel(
            self,
            label_text="~ Borderless window (broken on some systems)",
            background=style.color_2)
        self.borderless_dropdown_label.place(
            y=5 * (style.offset + style.buttonsize),
            x=200 + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=401)

        self.clear_cache_button = button(self,
                                         callback=self.clear_cache,
                                         text_string="- clear cache -",
                                         background=style.color_1,
                                         font=style.smalltext)
        self.clear_cache_button.place(y=6 * (style.offset + style.buttonsize),
                                      x=style.offset,
                                      height=style.buttonsize -
                                      2 * style.offset,
                                      width=200 - style.offset)
        self.clear_cache_label = ThemedLabel(
            self,
            label_text="~ Clear image and json cache?",
            background=style.color_2)
        self.clear_cache_label.place(y=6 * (style.offset + style.buttonsize),
                                     x=200 + style.offset,
                                     height=style.buttonsize -
                                     2 * style.offset,
                                     width=401)

        self.savebutton = button(self,
                                 callback=self.save,
                                 text_string="Save",
                                 background=style.color_1)
        self.savebutton.place(relx=0.5,
                              x=-0.5 * style.sidecolumnwidth,
                              width=style.sidecolumnwidth,
                              height=style.buttonsize,
                              rely=1,
                              y=-(style.offset + style.buttonsize))
        #Bind frame raise
        self.bind("<<ShowFrame>>", self.configure)
        self.yesno = yesnoPage(self)
        self.okpage = usermessagePage(self)
Exemple #16
0
    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)
Exemple #17
0
    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)
Exemple #18
0
    def __init__(self, parent, controller):
        self.controller = controller
        self.appstore_handler = store_handler
        self.repo_parser = repo_parser
        self.current_file_path = None
        self.originaljson = None
        self.currentjson = None
        self.ok_to_load = True
        self.json_name = None
        self.changes = None
        self.progress_string = None
        self.gui_title = None
        self.errors = []

        ThemedFrame.__init__(self, parent, background=style.color_2)
        self.bind("<<ShowFrame>>", self.update_apply_frame)

        #LEFT COLUMN________________________________
        self.presets_listbox_label = ThemedLabel(
            self,
            label_text="Bundles:",
            background=style.color_2,
            foreground=style.lg,
            label_font=style.largeboldtext)
        self.presets_listbox_label.place(relx=0.0,
                                         relwidth=0.5,
                                         height=style.buttonsize -
                                         2 * style.offset,
                                         x=+style.offset,
                                         width=-2 * style.offset)

        image_file = os.path.join(assetsfolder, "trash.png")
        button_image = Image.open(image_file)
        buttonsize = style.buttonsize - 4 * style.offset
        #Resizes and saves image if it's the wrong size for faster loads in the future
        if not button_image.size[0] == [buttonsize, buttonsize]:
            button_image = button_image.resize((buttonsize, buttonsize),
                                               Image.ANTIALIAS)
        self.trash_image = ImageTk.PhotoImage(button_image)

        self.delete_preset_button = button(self,
                                           callback=self.delete,
                                           image_object=self.trash_image,
                                           background=style.color_1)
        self.delete_preset_button.place(
            relx=0.5,
            x=-(style.buttonsize - 2 * style.offset),
            y=+style.offset,
            width=style.buttonsize - 3 * style.offset,
            height=style.buttonsize - 3 * style.offset)

        self.presets_listbox = scrollingTkListbox(self,
                                                  borderwidth=0,
                                                  highlightthickness=0,
                                                  background=style.w,
                                                  foreground=style.b,
                                                  exportselection=False)
        self.presets_listbox.place(
            relx=0.0,
            relwidth=0.5,
            relheight=1,
            y=style.buttonsize - style.offset,
            x=+style.offset,
            width=-2 * style.offset,
            height=-(2.5 * style.buttonsize + 2 * style.offset))

        self.new_preset_entry = entrybox(
            self,
            placeholder="New bundle name (No extension)",
            callback=self.update_json)
        self.new_preset_entry.place(
            relx=0.0,
            x=+style.offset,
            relwidth=0.5,
            height=0.5 * style.buttonsize,
            rely=1,
            y=-(2 * style.offset + 1.5 * style.buttonsize),
            width=-(3 * style.offset + 0.5 * style.buttonsize))

        self.new_preset_button = button(self,
                                        callback=self.new,
                                        text_string="+",
                                        background=style.color_1)
        self.new_preset_button.place(
            relx=0.5,
            x=-(style.offset + 0.5 * style.buttonsize),
            width=0.5 * style.buttonsize,
            height=0.5 * style.buttonsize,
            rely=1,
            y=-(2 * style.offset + 1.5 * style.buttonsize))

        self.loadbutton = button(self,
                                 callback=self.load,
                                 text_string="Load",
                                 background=style.color_1)
        self.loadbutton.place(relx=0.0,
                              x=+style.offset,
                              relwidth=0.5,
                              height=style.buttonsize,
                              rely=1,
                              y=-(style.offset + style.buttonsize),
                              width=-2 * style.offset)

        self.divider = ThemedFrame(self, background=style.lg)
        self.divider.place(relx=0.5,
                           width=2,
                           relheight=1,
                           height=-2 * style.offset,
                           y=+style.offset,
                           x=-1)

        self.column_select_frame = ThemedFrame(self, background=style.color_2)
        self.column_select_frame.place(relx=0.5,
                                       x=+style.offset,
                                       width=-2 * style.offset,
                                       relwidth=0.5,
                                       height=style.buttonsize,
                                       y=+style.offset)

        self.editor_button = button(self.column_select_frame,
                                    callback=lambda: self.show_frame("editor"),
                                    text_string="Edit",
                                    background=style.color_1,
                                    borderwidth=1)
        self.editor_button.place(relheight=1,
                                 relwidth=0.33,
                                 relx=0,
                                 width=-0.5 * style.offset)

        self.applier_button = button(
            self.column_select_frame,
            callback=lambda: self.show_frame("applier"),
            text_string="Apply",
            background=style.color_1,
            borderwidth=1)
        self.applier_button.place(relheight=1,
                                  relwidth=0.34,
                                  relx=0.33,
                                  x=+0.5 * style.offset,
                                  width=-style.offset)

        self.build_button = button(self.column_select_frame,
                                   callback=lambda: self.show_frame("builder"),
                                   text_string="Build",
                                   background=style.color_1,
                                   borderwidth=1)
        self.build_button.place(relheight=1,
                                relwidth=0.33,
                                relx=0.67,
                                x=+0.5 * style.offset,
                                width=-0.5 * style.offset)

        self.buttonmap = {
            "editor": self.editor_button,
            "applier": self.applier_button,
            "builder": self.build_button
        }

        self.button_divider = ThemedFrame(self, background=style.lg)
        self.button_divider.place(relx=0.5,
                                  x=+style.offset,
                                  width=-2 * style.offset,
                                  relwidth=0.5,
                                  height=1,
                                  y=style.buttonsize + 2 * style.offset)

        self.content_frame = ThemedFrame(self, background=style.color_2)
        self.content_frame.place(
            relx=0.5,
            relwidth=0.5,
            width=-2 * style.offset,
            x=+style.offset,
            relheight=1,
            y=style.buttonsize + 3 * style.offset + 1,
            height=-(style.buttonsize + 4 * style.offset + 1))

        #EDITOR COLUMN________________________________
        self.editor_frame = ThemedFrame(self.content_frame,
                                        background=style.color_2)

        self.preset_name = entrybox(self.editor_frame,
                                    placeholder="Bundle Name",
                                    callback=self.update_json)
        self.preset_name.place(height=0.5 * style.buttonsize, relwidth=1)

        self.author_name = entrybox(self.editor_frame,
                                    placeholder="Bundle Author",
                                    callback=self.update_json)
        self.author_name.place(y=1 * (style.offset + 0.5 * style.buttonsize),
                               height=0.5 * style.buttonsize,
                               relwidth=1)

        self.preset_package_version = entrybox(
            self.editor_frame,
            placeholder="Bundle Package Version",
            callback=self.update_json)
        self.preset_package_version.place(
            y=2 * (style.offset + 0.5 * style.buttonsize),
            height=0.5 * style.buttonsize,
            relwidth=1)

        self.packages_listbox_and_json_output_preview_frame = ThemedFrame(
            self.editor_frame, background=style.color_2)
        self.packages_listbox_and_json_output_preview_frame.place(
            y=3 * (style.offset + 0.5 * style.buttonsize),
            relheight=1,
            height=-(2 * style.buttonsize + 7 * style.offset),
            relwidth=1)

        self.packages_listbox_label = ThemedLabel(
            self.packages_listbox_and_json_output_preview_frame,
            label_text="Packages:",
            background=style.color_2,
            foreground=style.lg,
            label_font=style.mediumboldtext)
        self.packages_listbox_label.place(relwidth=1,
                                          height=style.buttonsize -
                                          2 * style.offset)

        self.packages_listbox = scrollingTkListbox(
            self.packages_listbox_and_json_output_preview_frame,
            borderwidth=0,
            highlightthickness=0,
            background=style.w,
            foreground=style.b,
            exportselection=False,
            selectmode='multiple')
        self.packages_listbox.place(
            y=style.buttonsize - 2 * style.offset,
            relwidth=1,
            relheight=0.5,
            height=-(style.offset + style.buttonsize - 2 * style.offset))
        self.packages_listbox.bind('<<ListboxSelect>>', self.update_json)

        self.output_divider = ThemedFrame(
            self.packages_listbox_and_json_output_preview_frame,
            background=style.lg)
        self.output_divider.place(relwidth=1, height=1, rely=0.5)

        self.output_json_label = ThemedLabel(
            self.packages_listbox_and_json_output_preview_frame,
            label_text="Output:",
            background=style.color_2,
            foreground=style.lg,
            label_font=style.mediumboldtext)
        self.output_json_label.place(rely=0.5,
                                     y=+style.offset + 1,
                                     relwidth=1,
                                     height=style.buttonsize -
                                     2 * style.offset)

        self.output_json = themedScrollingText(
            self.packages_listbox_and_json_output_preview_frame,
            font=style.smalltext)
        self.output_json.place(relwidth=1,
                               rely=0.5,
                               relheight=0.5,
                               height=-(style.buttonsize + style.offset),
                               y=style.buttonsize)

        self.savebutton = button(self.editor_frame,
                                 callback=self.save,
                                 text_string="Save",
                                 background=style.color_1)
        self.savebutton.place(relwidth=1,
                              height=style.buttonsize,
                              rely=1,
                              y=-(style.buttonsize))

        #APPLIER COLUMN_______________________________
        self.applier_frame = ThemedFrame(self.content_frame,
                                         background=style.color_2)

        self.applier_bundle_label = ThemedLabel(self.applier_frame,
                                                label_text="BUNDLE: ",
                                                anchor="w",
                                                background=style.color_2,
                                                foreground=style.lg,
                                                label_font=style.smallboldtext)
        self.applier_bundle_label.place(height=0.5 * style.buttonsize -
                                        style.offset)

        self.applier_selected_bundle_label = ThemedLabel(
            self.applier_frame,
            label_text="test",
            anchor="e",
            background=style.color_2,
            foreground=style.w,
            label_font=style.smallboldtext)
        self.applier_selected_bundle_label.place(
            x=self.applier_bundle_label.winfo_reqwidth(),
            height=0.5 * style.buttonsize - 1 * style.offset)

        self.applier_sd_label = ThemedLabel(self.applier_frame,
                                            label_text="SD: ",
                                            anchor="w",
                                            background=style.color_2,
                                            foreground=style.lg,
                                            label_font=style.smallboldtext)
        self.applier_sd_label.place(y=0.5 * style.buttonsize,
                                    height=0.5 * style.buttonsize -
                                    1 * style.offset)

        self.applier_selected_sd_label = ThemedLabel(
            self.applier_frame,
            label_text="test",
            anchor="e",
            background=style.color_2,
            foreground=style.w,
            label_font=style.smallboldtext)
        self.applier_selected_sd_label.place(
            y=0.5 * style.buttonsize,
            x=self.applier_sd_label.winfo_reqwidth(),
            height=0.5 * style.buttonsize - 1 * style.offset)

        self.applier_header_divider = ThemedFrame(self.applier_frame,
                                                  background=style.lg)
        self.applier_header_divider.place(y=1 * style.buttonsize,
                                          relwidth=1,
                                          height=1)

        self.applier_listboxes_frame = ThemedFrame(self.applier_frame,
                                                   background=style.color_2)
        self.applier_listboxes_frame.place(
            y=1 * style.buttonsize + 1 * style.offset + 1,
            relheight=1,
            height=-(2 * style.buttonsize + 1 + style.offset),
            relwidth=1)

        self.applier_to_be_installed_frame = ThemedFrame(
            self.applier_listboxes_frame, background=style.color_2)
        self.applier_to_be_installed_frame.place(relwidth=1,
                                                 relheight=0.33,
                                                 height=-style.offset)
        self.applier_to_be_installed_label = ThemedLabel(
            self.applier_to_be_installed_frame,
            label_text="To be installed:",
            background=style.color_2,
            foreground=style.lg,
            label_font=style.smallboldtext)
        self.applier_to_be_installed_label.place(
            relwidth=1, height=0.5 * style.buttonsize - style.offset)
        self.applier_to_be_installed_listbox = scrollingTkListbox(
            self.applier_to_be_installed_frame,
            borderwidth=0,
            highlightthickness=0,
            background=style.w,
            foreground=style.b,
            exportselection=False,
            selectmode='multiple')
        self.applier_to_be_installed_listbox.place(
            y=0.5 * style.buttonsize - 1 * style.offset,
            relwidth=1,
            relheight=1,
            height=-(0.5 * style.buttonsize - 3 * style.offset))
        # self.applier_to_be_installed_listbox.bind('<<ListboxSelect>>', self.update_json)

        self.applier_to_be_updated_frame = ThemedFrame(
            self.applier_listboxes_frame, background=style.color_2)
        self.applier_to_be_updated_frame.place(relwidth=1,
                                               relheight=0.34,
                                               rely=0.33,
                                               height=-style.offset)
        self.applier_to_be_updated_label = ThemedLabel(
            self.applier_to_be_updated_frame,
            label_text="To be updated:",
            background=style.color_2,
            foreground=style.lg,
            label_font=style.smallboldtext)
        self.applier_to_be_updated_label.place(relwidth=1,
                                               height=0.5 * style.buttonsize -
                                               style.offset)
        self.applier_to_be_updated_listbox = scrollingTkListbox(
            self.applier_to_be_updated_frame,
            borderwidth=0,
            highlightthickness=0,
            background=style.w,
            foreground=style.b,
            exportselection=False,
            selectmode='multiple')
        self.applier_to_be_updated_listbox.place(
            y=0.5 * style.buttonsize - 1 * style.offset,
            relwidth=1,
            relheight=1,
            height=-(0.5 * style.buttonsize - 3 * style.offset))
        # self.applier_to_be_installed_listbox.bind('<<ListboxSelect>>', self.update_json)

        self.applier_to_be_unchanged_frame = ThemedFrame(
            self.applier_listboxes_frame, background=style.color_2)
        self.applier_to_be_unchanged_frame.place(relwidth=1,
                                                 relheight=0.33,
                                                 rely=0.67,
                                                 height=-style.offset)
        self.applier_to_be_unchanged_label = ThemedLabel(
            self.applier_to_be_unchanged_frame,
            label_text="Unchanged:",
            background=style.color_2,
            foreground=style.lg,
            label_font=style.smallboldtext)
        self.applier_to_be_unchanged_label.place(
            relwidth=1, height=0.5 * style.buttonsize - style.offset)
        self.applier_to_be_unchanged_listbox = scrollingTkListbox(
            self.applier_to_be_unchanged_frame,
            borderwidth=0,
            highlightthickness=0,
            background=style.w,
            foreground=style.b,
            exportselection=False,
            selectmode='multiple')
        self.applier_to_be_unchanged_listbox.place(
            y=0.5 * style.buttonsize - 1 * style.offset,
            relwidth=1,
            relheight=1,
            height=-(0.5 * style.buttonsize - 3 * style.offset))
        # self.applier_to_be_installed_listbox.bind('<<ListboxSelect>>', self.update_json)

        self.applier_apply_button = button(self.applier_frame,
                                           callback=self.apply,
                                           text_string="Apply",
                                           background=style.color_1)
        self.applier_apply_button.place(relwidth=1,
                                        height=style.buttonsize,
                                        rely=1,
                                        y=-(style.buttonsize))

        #BUILDER COLUMN_______________________________
        self.builder_frame = ThemedFrame(self.content_frame,
                                         background=style.color_2)

        for package in self.repo_parser.all:
            self.packages_listbox.insert("end", package["package"])

        self.frames = [{
            "frame": self.editor_frame,
            "text": "editor",
        }, {
            "frame": self.applier_frame,
            "text": "applier"
        }, {
            "frame": self.builder_frame,
            "text": "builder"
        }]

        self.content_frames = {}

        def make_frames_and_add(frame_list):
            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)

        make_frames_and_add(self.frames)

        self.show_frame("editor")

        self.yesno = yesnoPage(self)
        self.usermessage = usermessagePage(self)
        self.progress_bar = progressFrame(self)
        self.update_json()
        self.reload_presets()
        self.update_sd_path()
    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()
Exemple #20
0
class CalcGuiPlus(Toplevel):
    def __init__(self, **args):
        Toplevel.__init__(self)
        label(self, TOP, 'PyCalc Plus - Container')
        self.calc = CalcGui(self, **args)
        frm = frame(self, BOTTOM)
        extras = [('sqrt', 'sqrt(%s)'),
                  ('x^2 ',  '(%s)**2'),
                  ('x^3 ',  '(%s)**3'),
                  ('1/x ',  '1.0/(%s)')]
        for (lab, expr) in extras:
            button(frm, LEFT, lab, (lambda expr=expr: self.onExtra(expr)))
        button(frm, LEFT, ' pi ', self.onPi)

    def onExtra(self, expr):
        text = self.calc.text
        eval = self.calc.eval
        try:
            text.set(eval.runstring(expr % text.get()))
        except:
            text.set('ERROR')

    def onPi(self):
        self.calc.text.set(self.calc.eval.runstring('pi'))

if __name__ == '__main__':
    root = Tk()
    button(root, TOP, 'Quit', root.quit)
    CalcGuiPlus(**getCalcArgs()).mainloop()       # -bg,-fg to calcgui
Exemple #21
0
	def update_page(self,repo):
		self.selected_version = None
		self.repo = repo

		try:
			package = repo["store_equivalent"]
		except:
			package = repo["software"]

		github_content = repo["github_content"]

		version = github_content[0]["tag_name"]

		self.column_title.set("Title: {}".format(repo["name"]))

		self.column_author.set("Author: {}".format(repo["author"]))
		self.column_version.set("Latest Version: {}".format(github_content[0]["tag_name"]))
		try:
			self.column_license.set("License: {}".format(repo["license"]))
		except:
			self.column_license.set("License: N/A")

		installed = self.local_packages_handler.get_package_version(self.repo["store_equivalent"])
		if installed:
			self.column_installed_version.set("Downloaded: {}".format(installed))
		else:
			self.column_installed_version.set("Not downloaded")



		self.column_package.set("Package: {}".format(package))
		self.column_downloads.set("Downloads: {}".format(repo["downloads"]))
		self.column_updated.set("Updated: {}".format(github_content[0]["created_at"]))

		self.content_frame_details.configure(state="normal")
		self.content_frame_details.delete('1.0', "end")

		#Makes newlines in details print correctly. Hacky but :shrug:
		details = repo["description"].replace("\\n", """
"""
			)
		self.content_frame_details.insert("1.0", details)
		self.content_frame_details.configure(state="disabled")


		self.header_label.set(repo["name"])
		self.header_author.set(repo["author"])

		if not self.column_inject_button:
			self.column_inject_button = button(self.column_body, 
				callback = self.trigger_inject, 
				text_string = "INJECT", 
				font=style.mediumboldtext, 
				background=style.color_2
			)

		#Hides or places the uninstalll button if not installed or installed respectively
		#get_package_entry returns none if no package is found or if the sd path is not set
		if self.local_packages_handler.get_package_entry(package):
			self.column_inject_button.place(rely=1,relx=0.5,x = - 1.5 * (style.buttonsize), y = - 1 * (style.buttonsize + style.offset), width = 3 * style.buttonsize, height = style.buttonsize)
			self.column_install_button.settext("CHANGE")
		else:
			self.column_inject_button.place_forget()
			if self.column_install_button:
				self.column_install_button.settext("Download")

		def do_update_banner():
			self.bannerimage = getScreenImage(package)
			if self.bannerimage:
				self.update_banner(self.bannerimage)
			else:
				self.update_banner(notfoundimage)
				print("failed to download screenshot for {}".format(package))

		self.update_releases_listbox()
			
		self.controller.async_threader.do_async(do_update_banner)
Exemple #22
0
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent, background=style.color_2)
        self.settings = settings
        self.controller = controller

        self.settings_page_header = ThemedLabel(
            self,
            text="Most settings will not take effect until next launch",
            background=style.color_2,
            font=style.mediumboldtext)
        self.settings_page_header.place(y=style.offset,
                                        x=style.offset,
                                        height=style.buttonsize -
                                        2 * style.offset,
                                        relwidth=1,
                                        width=-2 * style.offset)

        consoles = [config.WII, config.WII_OSC, config.WIIU, config.SWITCH]
        self.console_dropdown = customOptionMenu(self, consoles)
        self.console_dropdown.place(y=1 * (style.offset + style.buttonsize),
                                    x=style.offset,
                                    height=style.buttonsize - 2 * style.offset,
                                    width=dropdown_width - style.offset)
        self.console_dropdown_label = ThemedLabel(
            self,
            text="~ Console - Repo\n(Needs restart)",
            background=style.color_2)
        self.console_dropdown_label.place(
            y=1 * (style.offset + style.buttonsize),
            x=dropdown_width + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=label_width)

        thread_levels = [x for x in range(1, 17)]
        self.gui_threads_dropdown = customOptionMenu(self, thread_levels)
        self.gui_threads_dropdown.place(
            y=2 * (style.offset + style.buttonsize),
            x=style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=dropdown_width - style.offset)
        self.gui_threads_dropdown_label = ThemedLabel(
            self, text="~ Max threads\n(No restart)", background=style.color_2)
        self.gui_threads_dropdown_label.place(
            y=2 * (style.offset + style.buttonsize),
            x=dropdown_width + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=label_width)

        maximized_options = ["fullscreen", "maximized", "windowed"]
        self.maximized_on_launch_dropdown = customOptionMenu(
            self, maximized_options)
        self.maximized_on_launch_dropdown.place(
            y=3 * (style.offset + style.buttonsize),
            x=style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=dropdown_width - style.offset)
        self.maximized_dropdown_label = ThemedLabel(
            self, text="~ Maximized on launch", background=style.color_2)
        self.maximized_dropdown_label.place(
            y=3 * (style.offset + style.buttonsize),
            x=dropdown_width + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=label_width)

        self.topmost_dropdown = customOptionMenu(self, truefalse_options)
        self.topmost_dropdown.place(y=4 * (style.offset + style.buttonsize),
                                    x=style.offset,
                                    height=style.buttonsize - 2 * style.offset,
                                    width=dropdown_width - style.offset)
        self.topmost_dropdown_label = ThemedLabel(self,
                                                  text="~ Keep window topmost",
                                                  background=style.color_2)
        self.topmost_dropdown_label.place(
            y=4 * (style.offset + style.buttonsize),
            x=dropdown_width + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=label_width)

        self.borderless_dropdown = customOptionMenu(self, truefalse_options)
        self.borderless_dropdown.place(y=5 * (style.offset + style.buttonsize),
                                       x=style.offset,
                                       height=style.buttonsize -
                                       2 * style.offset,
                                       width=dropdown_width - style.offset)
        self.borderless_dropdown_label = ThemedLabel(
            self,
            text="~ Borderless window\n(broken on some systems)",
            background=style.color_2)
        self.borderless_dropdown_label.place(
            y=5 * (style.offset + style.buttonsize),
            x=dropdown_width + style.offset,
            height=style.buttonsize - 2 * style.offset,
            width=label_width)

        self.savebutton = button(self,
                                 callback=self.save,
                                 text_string="Save",
                                 background=style.color_1)
        self.savebutton.place(relx=0.5,
                              x=-0.5 * style.sidecolumnwidth,
                              width=style.sidecolumnwidth,
                              height=style.buttonsize,
                              rely=1,
                              y=-(style.offset + style.buttonsize))
        #Bind frame raise
        self.bind("<<ShowFrame>>", self.configure)
        self.yesno = yesnoPage(self)
        self.okpage = usermessagePage(self)