Ejemplo n.º 1
0
    def __init__(self, parent):
        super(MenuBar, self).__init__(parent)
        self.container = Frame(parent, style="Gray.TFrame", height=75)
        self.container.pack_propagate(False)
        self.function = {'icon': "assets\\add-playlist.gif", 'href': 'rpl'}
        self.menu_btn = MenuButton(self.container, self.function['icon'])

        def gotoRegister(page):
            if page['kind'] == 'list':
                self.menu_btn.pack()
                self.menu_btn.unbind("<Button 1>")
                self.menu_btn.bind(
                    '<Button-1>', lambda _: Navigate.goto("r%s" %
                                                          (page['key'])))
            else:
                self.menu_btn.unpack()

        Navigate.addListener("__all__", gotoRegister)

        self.header = Label(self.container, style='HeaderGray.TLabel')
        self.header.pack(side='left', fill='y', padx=(15, 0))

        def changeHeader(page):
            self.header.configure(text=page['label'])

        Navigate.addListener('__all__', changeHeader)

        self.pack()
Ejemplo n.º 2
0
 def __init__(self, parent, titles, cb, isHeader=False):
     super(ListItem, self).__init__(parent)
     self.container = Frame(parent, style="DarkGray.TFrame")
     self.container.pack(fill='x')
     self.titles_container = Frame(self.container, style="DarkGray.TFrame")
     self.titles_container.pack(fill='x', expand=True)
     self.titles = []
     
     for title in titles:
         frame = Frame(self.titles_container, style='DarkGray.TFrame', height=60)
         frame.pack_propagate(False)
         frame.pack(fill='both', side='left', expand=True)
         label_class = 'HeaderLightGray.TLabel' if isHeader else 'DarkGray.TLabel'
         label = Label(frame, style=label_class, text=title)
         label.pack(fill='y', padx=(15, 0), pady=(20, 0))
         self.titles.append(frame)
     
     self.button_container = Frame(self.titles_container, style='DarkGray.TFrame', width=60)
     self.button_container.pack_propagate(False)
     self.button_container.pack(fill='y', side='left')
     
     if not isHeader:
         self.button = MenuButton(self.button_container, 'assets\\small-search.gif')
         if cb:
             self.button.bind('<Button-1>', cb)
         self.button.pack(fill='y')
     
     self.separator = Frame(self.container, height=1, style="SeparatorGray.TFrame")
     self.separator.pack(fill='x')
Ejemplo n.º 3
0
    def __init__(self, url, fromSave):
        '''
        Load a crossword puzzle from the specified url
        The url must lead to an html page formatted as those at 
        http://www.theguardian.com/crosswords/
        '''

        super(Crossword, self).__init__(resizable=True,
                                        width=1000,
                                        height=750,
                                        caption='XWord Online')

        self._grid = None
        self._acrossClues = None
        self._downClues = None
        self._clueLabels = []

        self._btnRefresh = MenuButton(self)
        self._btnRefresh.x = HORIZ_PADDING
        self._btnRefresh.y = self.height - VERT_PADDING - BUTTON_HEIGHT
        self._btnRefresh.width = BUTTON_WIDTH
        self._btnRefresh.height = BUTTON_HEIGHT
        self._btnRefresh.text = 'Refresh'
        self._btnRefresh.on_press = self.refresh

        self._btnLoadSaved = MenuButton(self)
        self._btnLoadSaved.x = self._btnRefresh.x + BUTTON_WIDTH + HORIZ_PADDING
        self._btnLoadSaved.y = self._btnRefresh.y
        self._btnLoadSaved.width = BUTTON_WIDTH
        self._btnLoadSaved.height = BUTTON_HEIGHT
        self._btnLoadSaved.text = 'Load Saved Puzzle'
        self._btnLoadSaved.on_press = self.loadPuzzleFromSave

        self._btnLoadFromSource = MenuButton(self)
        self._btnLoadFromSource.x = self._btnLoadSaved.x + BUTTON_WIDTH + HORIZ_PADDING
        self._btnLoadFromSource.y = self._btnLoadSaved.y
        self._btnLoadFromSource.width = BUTTON_WIDTH
        self._btnLoadFromSource.height = BUTTON_HEIGHT
        self._btnLoadFromSource.text = 'Load New Puzzle'
        self._btnLoadFromSource.on_press = self.loadPuzzleFromSource

        self._btnRand = MenuButton(self)
        self._btnRand.x = self._btnLoadFromSource.x + BUTTON_WIDTH + HORIZ_PADDING
        self._btnRand.y = self._btnLoadFromSource.y
        self._btnRand.width = BUTTON_WIDTH
        self._btnRand.height = BUTTON_HEIGHT
        self._btnRand.text = 'Random Puzzle'
        self._btnRand.on_press = self.loadRandomPuzzle

        self._controls = [
            self._btnRefresh, self._btnLoadSaved, self._btnLoadFromSource,
            self._btnRand
        ]

        if not fromSave:
            self.loadPuzzleFromSource(url)

        self._grid.beginUpdates()
Ejemplo n.º 4
0
    def __init__(self, parent):
        self.parent = parent
        self.container = Frame(parent, style="Black.TFrame", width=275)
        self.container.pack_propagate(False)
        self.container.pack(side='left', fill='y')

        self.header = Frame(self.container, height=75, style="Black.TFrame")
        self.header.pack_propagate(False)
        self.header.pack(side='top', fill='x')

        self.search_entry = Entry(self.header)
        self.search_entry.pack(side='left')
        self.search_button = MenuButton(self.header, "assets\\search.gif")

        def search(_):
            Navigate.current_search = self.search_entry.get()
            Navigate.goto('sg')

        self.search_button.bind('<Button-1>', search)

        list_pages = [
            page for page in Navigate.pages if page['kind'] == 'list'
        ]

        def navigate(opt):
            Navigate.goto(opt['key'])
            Navigate.current_search = ''

        self.options_list = list(
            map(
                lambda opt: OptionsList(self.container, opt['label'], lambda x:
                                        navigate(opt)), list_pages))

        def navigateCallback(page):
            for i, opt in enumerate(list_pages):
                if opt['kind'] == 'list':
                    self.options_list[i].text.configure(background="#000000")

                    if opt['key'] == page['key']:
                        self.options_list[i].text.configure(
                            background="#333333")

        for i, opt in enumerate(list_pages):
            if opt['kind'] == 'list':
                Navigate.addListener(opt['key'], navigateCallback)

        self.footer = Frame(self.container, height=75, style="Black.TFrame")
        self.footer.pack_propagate(False)
        self.footer.pack(side='bottom', fill='x')

        self.exit_button = MenuButton(self.footer, "assets\\exit.gif", False)
        self.exit_button.pack(side='bottom', anchor='w', fill='y', expand=True)
        self.exit_button.bind('<Button-1>', lambda _: Navigate.app.exit())
Ejemplo n.º 5
0
    def __init__(self, parent):
        super(ControlsBar, self).__init__(parent)
        self.container = Frame(parent, style="Gray.TFrame", height=75)
        self.container.pack_propagate(False)
        self.pack()

        self.nextBtn = MenuButton(self.container,
                                  'assets\\play-next-button.gif')
        self.nextBtn.pack(anchor='center', fill='y')

        self.playBtn = MenuButton(self.container, 'assets\\play-button.gif')
        self.playBtn.pack(anchor='center', fill='y')

        self.previousBtn = MenuButton(self.container,
                                      'assets\\play-previous-button.gif')
        self.previousBtn.pack(anchor='center', fill='y')
Ejemplo n.º 6
0
    if btn == btn_save:
        driver.star()
    elif btn == btn_shuffle:
        driver.shuffle()
    elif btn == btn_repeat:
        driver.repeat()
    elif btn == btn_prev:
        driver.prev()
    elif btn == btn_playpause:
        driver.playpause()
    elif btn == btn_next:
        driver.next()


menupos = [1, 1]
btn_save = MenuButton((0, 0), (190, 106), buttonclick, im_save)
btn_shuffle = MenuButton((1, 0), (222, 106), buttonclick, im_shuffle_off)
btn_repeat = MenuButton((2, 0), (254, 106), buttonclick, im_repeat_off)
btn_prev = MenuButton((0, 1), (173, 142), buttonclick, im_prev)
btn_playpause = MenuButton((1, 1), (206, 130), buttonclick, im_play)
btn_next = MenuButton((2, 1), (265, 142), buttonclick, im_next)
menubuttons = [
    btn_save, btn_shuffle, btn_repeat, btn_prev, btn_playpause, btn_next
]

commandlock = threading.Lock()
pendingcommands = []


def render_mono():
    # TODO: implement me