Пример #1
0
    def __init__(self):

        # Defaults
        self.scale = 18
        self.tile_size = (self.scale, self.scale)
        self.emu = None
        self.prev_screen = 0
        self.fatal = False
        self.run_time = 1000 # 1000/this = Freq
        self.color_border = "white"
        self.color_fill = "white"
        self.color_back = "black"
        self.controls ={
            'KP_0':0x0, 'KP_1':0x1, 'KP_2':0x2, 'KP_3':0x3,
            'KP_4':0x4, 'KP_5':0x5, 'KP_6':0x6, 'KP_7':0x7,
            'KP_8':0x8, 'KP_9':0x9, 'KP_Divide':0xA, 'KP_Multiply':0xB,
            'KP_Subtract':0xC, 'KP_Add':0xD, 'KP_Enter':0xE, 'KP_Decimal':0xF}

        # Setup audio
        self.wave_file = pathjoin('tortilla8','sound','play.wav')
        self.audio_on = False
        if sa is None:
            print("SimpleAudio is missing from your system. You can install it " + \
                "via 'pip install simpleaudio'. Audio has been disabled.")
        else:
            try:
                self.wave_obj = sa.WaveObject.from_wave_file(self.wave_file)
                self.play_obj = None
                self.audio_playing = False
                self.audio_on = True
            except FileNotFoundError:
                print("An error occured while initalizing audo. Audio has been disabled.")

        # Init TK and canvas
        self.root = Tk()
        self.root.wm_title("Tortilla8 - A Chip8 Emulator")
        self.root.resizable(width=False, height=False)
        Frame.__init__(self, self.root)
        self.menubar = Menu(self.root)
        self.root.config(menu=self.menubar)
        self.root.update()
        self.screen = Canvas(self.root, width=Nacho.X_SIZE*self.scale, height=Nacho.Y_SIZE*self.scale)
        self.screen.create_rectangle( 0, 0, Nacho.X_SIZE*self.scale, Nacho.Y_SIZE*self.scale, fill=self.color_back )
        self.screen.pack()

        # Init TK Vars
        self.antiflicker = BooleanVar()
        self.antiflicker.set(True)
        self.lock_aspect = BooleanVar()
        self.lock_aspect.set(True)

        # Bind some functions
        self.root.bind("<KeyPress>", self.key_down)
        self.root.bind("<KeyRelease>", self.key_up)
        self.root.protocol("WM_DELETE_WINDOW", self.on_closing)

        # Populate the 'File' section
        filemenu = Menu(self.menubar, tearoff=0)
        filemenu.add_command(label="Load Rom", command=self.load)
        filemenu.add_command(label="Exit", command=self.on_closing)
        self.menubar.add_cascade(label="File", menu=filemenu)

        # Populate the 'Settings' section
        setmenu = Menu(self.menubar, tearoff=0)
        setmenu.add_command(label="Display", command=self.win_display_settings)
        setmenu.add_command(label="Emulation", command=self.win_emu_settings)
        if self.audio_on:
            setmenu.add_command(label="Audio", command=self.win_audio_settings)
        else:
            setmenu.add_command(label="Audio", command=self.win_audio_settings, state='disable')
        setmenu.add_checkbutton(label="Anti-Flicker", onvalue=True, offvalue=False, variable=self.antiflicker)
        self.menubar.add_cascade(label="Settings", menu=setmenu)

        # Populate the 'Help' section
        helpmenu = Menu(self.menubar, tearoff=0)
        helpmenu.add_command(label="PyPi Index",
            command=lambda:openweb("https://pypi.org/project/tortilla8"))
        helpmenu.add_command(label="Source Code",
            command=lambda:openweb("https://github.com/aanunez/tortilla8"))
        helpmenu.add_command(label="About", command=self.window_about)
        self.menubar.add_cascade(label="Help", menu=helpmenu)
Пример #2
0
def open_external():
    openweb('https://habr.com/ru/post/266831/')
Пример #3
0
 def openGithubSite(self):
     openweb(config.GITHUB_HOME)
 def openGithubSite(self):
     openweb(config.GITHUB_HOME)
     
Пример #5
0
def mainloop():
    while True:
        events = pygame.event.get()
        for event in events:
            if event.type == pygame.QUIT:
                terminate()
            elif event.type == pygame.KEYDOWN and not search_field.active:
                mp.update(event)
            elif event.type == pygame.MOUSEBUTTONDOWN and mp.sprite.rect.collidepoint(
                    event.pos):
                if event.button == 1:
                    point = mp.sprite.xy_into_ll(event.pos)

                    spot = MapSpot()
                    lonlat = '%f,%f' % point
                    spot.find_toponym(geocode=lonlat, ll=lonlat)

                    if api_switcher.checked:
                        api_switcher.switch()
                        api_switcher.update()

                    if spot.point and lonlat_distance(spot.point, point) <= 50:
                        mp.sprite.set_spot(spot, focus=False)
                        mp.sprite.update_image()

        buttons = pygame.mouse.get_pressed()
        keys = pygame.key.get_pressed()

        interface.update(events, buttons, keys)

        update_screen()
        mp.draw(screen)
        interface.draw(screen)

        pygame.display.flip()

        # input mode switcher
        if im_switcher.checked:
            interface.add(rt_label)
            interface.add(record_button)

            search_field.set_text('')
            interface.remove(search_field)
            interface.remove(search_button)
        else:
            interface.add(search_field)
            interface.add(search_button)

            rt_label.set_text('')
            rt_label.update()
            interface.remove(rt_label)
            interface.remove(record_button)

        # on search button click
        if search_button.pressed:
            request_text = search_field.text
            if request_text:
                spot = MapSpot()

                if api_switcher.checked:
                    spot.find_organization(text=request_text, type='biz')
                else:
                    spot.find_toponym(geocode=request_text)
                if spot.point:
                    # setting this spot on map
                    mp.sprite.set_spot(spot, focus=True)
                    mp.sprite.update_image()

        # on record button click
        if record_button.pressed:
            request_text = jarvis.listen()

            if request_text:
                spot = MapSpot()

                if api_switcher.checked:
                    spot.find_organization(text=request_text, type='biz')
                else:
                    spot.find_toponym(geocode=request_text)
                if spot.point:
                    rt_label.set_text(request_text)
                    rt_label.update()
                    # setting this spot on map
                    mp.sprite.set_spot(spot, focus=True)
                    mp.sprite.update_image()

        # on reset button click
        elif reset_button.pressed:
            record_button.pressed = False
            record_button.update()
            mp.sprite.set_spot(None)
            mp.sprite.update_image()

        # on home button click
        elif home_button.pressed:
            home_button.pressed = False
            home_button.update()
            mp.sprite.set_spot(mp.sprite.spot, focus=True)
            mp.sprite.update_image()

        # on help button click
        elif help_button.pressed:
            help_button.pressed = False
            help_button.update()
            openweb('http://localhost:8080/help')

        # on info button click
        elif info_button.pressed:
            info_button.pressed = False
            info_button.update()
            if mp.sprite.spot:
                text = 'No address found.'
                if mp.sprite.spot.toponym:
                    text_base = mp.sprite.spot.toponym
                    text = text_base['metaDataProperty']['GeocoderMetaData'][
                        'Address']['formatted']
                elif mp.sprite.spot.organization:
                    text_base = mp.sprite.spot.organization
                    text = text_base['properties']['CompanyMetaData'][
                        'address']
                jarvis.say(text)

                if dialog_window():
                    response = None
                    if mp.sprite.spot.toponym:
                        response = requests.get('http://localhost:8080/index',
                                                json={
                                                    'api':
                                                    'geocoder',
                                                    'response':
                                                    mp.sprite.spot.toponym
                                                })
                    elif mp.sprite.spot.organization:
                        response = requests.get('http://localhost:8080/index',
                                                json={
                                                    'api':
                                                    'geosearch',
                                                    'response':
                                                    mp.sprite.spot.organization
                                                })
                    with open('templates/info.html', 'w',
                              encoding='utf-8') as file:
                        file.write(response.text)
                    openweb('http://localhost:8080/information')

        clock.tick(20)
Пример #6
0
 def onOpenGithubProj(self):
     openweb(config.GITHUB_HOME)
Пример #7
0
 def on_but_register(self, event):
     openweb('https://sm.ms/register')