Esempio n. 1
0
def main():

    btn.add(0)
    button2.add(1)
    combo_a.add(2)
    radio_box.add(3)
    switch.add(4)

    btn.level = 1
    level = btn.level
    btn.config_set = True

    screen_color = (50,50,50)

    while True:

        if android:
            if android.check_pause():
                android.wait_for_resume()

        time = clock.tick(30)

        for event in pygame.event.get():
            sgc.event(event)
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == KEYDOWN and event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()

        level = btn.level
        if level == 2:
            if btn.config_set == False:
                screen_color = BLUE
                btn.remove(fade=False)
                radio_box.remove(fade=False)
                combo_a.remove(fade = False)
                scale.remove(fade=False)
                switch.remove(fade=False)
                print("configured 2nd screen settings")
                label.add()
# input of text not working with android soft keyboard
#                inputbox.add()
#                input_ok.add()
                btn.config_set = True
        # if inputbox.has_focus():
        #     if android:
        #         android.show_keyboard()
        # else:
        #     if android:
        #         android.hide_keyboard()

        screen.fill(screen_color)
        sgc.update(time)
        pygame.display.flip()
Esempio n. 2
0
	def process_events(self, events):
		for event in events:
			sgc.event(event)
			if event.type==pygame.KEYDOWN:
				if event.key==pygame.K_ESCAPE:
					self.finish()
			if event.type==pygame.MOUSEBUTTONDOWN:
				if event.button==1:
					for patron in self.people:
						if patron.rect.collidepoint(pygame.mouse.get_pos()):
							patron.on_click()
Esempio n. 3
0
 def Run(self):
     pygame.mixer.music.play(-1)
     
     while self.Active:
         time = self.clock.tick(40)
         
         if self.shippos[0]+2>735:
             self.shippos = (-10, 400)
             self.helpidx += 1
             if self.helpidx==len(self.helpimgs): self.helpidx = 0
         self.shippos = (self.shippos[0]+2, self.shippos[1])
         
         #if random.randrange(0,15)>10:
         #    self.Explosions.append(Explosion( (random.randrange(0,639), random.randrange(0,450)), random.randrange(15,65)))
         #print len(self.Explosions)
         
         for event in pygame.event.get():
             sgc.event(event)
             if event.type == pygame.KEYDOWN:
                 keystate = pygame.key.get_pressed()
                 if keystate[K_j]==1:
                     self.startgame()
                 if keystate[K_q]==1:
                     self.exitgame()
                 elif keystate[K_F11]==1:
                     self.FullScreen = not self.FullScreen
                     if self.FullScreen:
                         window = pygame.display.set_mode(self.ScreenSize, FULLSCREEN)
                     else:
                         window = pygame.display.set_mode(self.ScreenSize)
             if event.type == GUI:
                 pass
             elif event.type == QUIT:
                 exit()
         
         #self.background = pygame.Surface(self.Screen.get_size())
         
         #self.background = self.background.convert()
         
         #for e in self.Explosions:
         #    e.Draw(self.background)
         
         #self.Screen.blit(self.background, (0,0))
         sgc.update(time)
         #for e in self.Explosions:
         #    e.Update()
         #self.Explosions = [e for e in self.Explosions if e.Alive]
         
         self.Screen.blit(self.shipimg, self.shippos)
         self.Screen.blit(self.helpimgs[self.helpidx], (self.shippos[0]-193, self.shippos[1]) )
         self.Screen.blit(self.grndimg, (0,448))
         
         pygame.display.flip()
     pygame.mixer.music.stop()
Esempio n. 4
0
 def run(self):
     logger.info("Initialising pygame")
     pygame.init()
     pygame.font.init()
     clock = pygame.time.Clock()
     logger.info("Hiding Cursor")
     pygame.mouse.set_visible(False)
     logger.info("Setting screen size to %s", SCREEN_SIZE)
     #pygame.display.init()
     self.screen = pygame.display.set_mode(SCREEN_SIZE)
     controls = sgc.surface.Screen(SCREEN_SIZE)
     self.buttons = self.setup_menu(self.screen)
     for btn in self.buttons:
        btn['btn'].add(btn['index'])
     running_challenge = None
     
     # While loop to manage touch screen inputs
     with ControllerResource() as self.joystick:
         while True:
             time = clock.tick(30)
             pygame.display.update()
             sgc.update(time)
             if self.joystick.connected:
                 self.joystick_handler(self.joystick.check_presses())
             for event in pygame.event.get():
                 sgc.event(event)
                 if event.type== GUI:
                     if event.widget_type is "Button":
                         requested_challenge = self.button_handler(event)
                         for btn in self.buttons:
                             btn['btn'].remove(btn['index'])
                         if requested_challenge:
                             logger.info("about to stop a thread if there's one running")
                             if running_challenge:
                                 logger.info("about to stop thread")
                                 self.stop_threads(running_challenge)
                         if requested_challenge is not None and requested_challenge is not "Exit" and requested_challenge is not "Other":
                             running_challenge = self.launch_challenge(requested_challenge)
                             logger.info("challenge %s launched", running_challenge.name)
                         elif requested_challenge == "Exit":
                             sys.exit()
                 # ensure there is always a safe way to end the program
                 # if the touch screen fails
                 elif event.type== KEYDOWN:
                     if event.key == K_ESCAPE:
                         sys.exit()
                 elif event.type == (USEREVENT+1):
                     print event.message
                     self.screen.fill(BLACK)
                     for btn in self.buttons:
                         btn['btn'].add(btn['index'])
Esempio n. 5
0
def main():
    SURFSPOTS=("capitola", "pleasure_point", "the_hook")
    clock = pygame.time.Clock()
    SCREENSIZE = (800, 600)
    SCREEN = pygame.display.set_mode(SCREENSIZE)
    sgc.surface.Screen(SCREENSIZE) # needed for SGC GUI toolkit
    fonts = {"widget": "fnt/Ubuntu-M.ttf", "title": "fnt/Ubuntu-M.ttf",
             "mono": "fnt/Ubuntu-M.ttf"}
    sgc.Font.set_fonts(fonts)

    forecast = Forecast(SURFSPOTS)
    graph = Graph()

    for fcast in forecast.f_list:
        fcast.add()
    forecast.change_day_btn.add()
    forecast.reset_day_btn.add()
    tide_data = get_tide()
    graph.update(tide_data)

    # get weather from Open Weather Map
    weather = Weather()
    weather.forecast()
   # pprint.pprint(weather.weath_cast)
    pprint.pprint(weather.w_dict)

    while True:
        if android:
            if android.check_pause():
                android.wait_for_resume()
        time = clock.tick(30)

        for event in pygame.event.get():
            sgc.event(event)
            if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN 
                                             and event.key == pygame.K_ESCAPE):
                pygame.quit()
                sys.exit()

        if forecast.change_day_btn.clicked or forecast.reset_day_btn.clicked:
            forecast = update_days(forecast)
            tide_data = get_tide(forecast.days)
            graph.update(tide_data)

        graph_surface = draw_tide_graph(SCREENSIZE, graph)
        SCREEN.fill((0,0,0))
        SCREEN.blit(graph_surface, (0,0))
        sgc.update(time)
        pygame.display.update()
Esempio n. 6
0
def main():
    while True:
        # A PGS4A program must include these two lines
        if android.check_pause():
            android.wait_for_resume()
        
        time = clock.tick(30)

        for event in pygame.event.get():
            sgc.event(event)
            if event.type == QUIT:
                sys.exit()
            elif event.type == KEYDOWN and event.key == K_ESCAPE:
                # Alternate way to exit the program in Android - back button
                sys.exit()
                
        screen.fill((0,0,0))
        sgc.update(time)
        pygame.display.flip()
Esempio n. 7
0
def main():
    while True:
        # A PGS4A program must include these two lines
        if android.check_pause():
            android.wait_for_resume()

        time = clock.tick(30)

        for event in pygame.event.get():
            sgc.event(event)
            if event.type == QUIT:
                sys.exit()
            elif event.type == KEYDOWN and event.key == K_ESCAPE:
                # Alternate way to exit the program in Android - back button
                sys.exit()

        screen.fill((0, 0, 0))
        sgc.update(time)
        pygame.display.flip()
Esempio n. 8
0
    def pygame_loop_cb(self):
        time = self.clock.tick(30)
        sgc.update(time)
        pygame.display.flip()

        for event in pygame.event.get():
            sgc.event(event)

            if event.type == pygame.QUIT:
                sys.exit()

            elif event.type == self.provider.PROVIDER_EVENT:
                if event.name == "photo":
                    self.show_image(event.image)
                    self.photo_object = event.photo_object
                    self.update_overlay()
                    logger.debug(self.photo_object)

                elif event.name == "error":
                    logger.error("Could not display photo: %s" % event.error)
                    if self.timer:
                        self.stop_slideshow()
                        self.start_slideshow()

            elif event.type == GUI:
                if event.widget == self.frame:
                    if self.overlay.active():
                        self.overlay.remove()
                        self.start_slideshow()
                    else:
                        self.stop_slideshow()
                        self.overlay.add()
                if event.widget == self.overlay.star_button:
                    self.toggle_star()
                if event.widget == self.overlay.remove_button:
                    self.toggle_remove()
                elif event.widget == self.overlay.back_button:
                    self.provider.next_photo(-1)
                elif event.widget == self.overlay.forward_button:
                    self.provider.next_photo(+1)

        return True
Esempio n. 9
0
 def pygame_event_managing(self, param_change_allowed):
     continuer = 1
     restart = False
     for event in pygame.event.get(
     ):  # On parcours la liste de tous les événements reçus
         sgc.event(event)
         if event.type == GUI:
             print(event)
         if event.type == pygame.KEYDOWN:
             if event.key == pygame.K_ESCAPE:
                 continuer = 0
             if event.key == pygame.K_r:
                 continuer = 0
                 restart = True
         elif event.type == QUIT:
             continuer = 0
         elif event.type == MOUSEBUTTONUP and param_change_allowed:
             self.current_mass_value = self.mass_scale.value
             self.current_charge_value = self.charge_scale.value
             self.current_dipole_moment = self.dipole_moment_scale.value
             self.current_polarizability = self.polarizability_scale.value
             self.current_stiffness = self.stiffness_scale.value
             self.current_friction = self.friction_scale.value
     return continuer, restart
Esempio n. 10
0
    pygame.display.init()
    pygame.font.init()

    screen = sgc.surface.Screen((640, 480))
    clock = pygame.time.Clock()

    # Basic widget, inherits behaviours from Simple
    widget = MyBasicWidget((200, 100),
                           pos=(10, 50),
                           label="Free label",
                           label_side="top")
    widget.add()

    other = MyWidget(pos=(200, 250), label="Custom")
    other.add(0)

    running = True
    while running:
        time = clock.tick(20)

        for event in pygame.event.get():
            if event.type == GUI:
                print("State: ", event.on)
            sgc.event(event)
            if event.type == QUIT:
                running = False

        screen.fill((0, 0, 100))
        sgc.update(time)
        pygame.display.flip()
Esempio n. 11
0
scale.add(order=4)

# Combo box
combo = sgc.Combo(pos=(400,400), values=("Option 1", "Option 2", "Another"))
combo.add(order=5)

# Selectable Label
label = sgc.Label(text="This is a selectable label", selectable=True)
label.rect.midtop = title.rect.midbottom
label.add()

while True:
    time = clock.tick(30)
    for event in pygame.event.get():
        # Send event to widgets
        sgc.event(event)
        if event.type == GUI:
            if event.widget_type is sgc.Button:
                print "Button event"
            if event.widget is button and event.gui_type == "click":
                button.config(col=[random.randrange(1,200) for x in range(3)])
            elif event.widget is input_box:
                clear()
        elif event.type == KEYDOWN:
            if event.key == K_f:
                fps.toggle()
        elif event.type == QUIT:
            exit()

    # Cleanup removed windows
    for widget in dialogs:
Esempio n. 12
0
def main():

    pg.init()
    done = False
    screen = pg.display.set_mode((SCREEN_LENGTH, SCREEN_WIDTH))
    screen_rect = screen.get_rect()
    pg.display.set_caption('Medieval RPG')
    clock = pg.time.Clock()
    playerSpeed = 4
    game_map = GameMap(screen, 'home.xlsx', 'art/characters.png',
                       'art/basictiles.png', 'art/things.png', 'art/dead.png')
    clock = pg.time.Clock()

    player = game_map.get_player_sprites()

    friend_sprites = game_map.get_friend_sprites()
    enemy_sprites = game_map.get_enemy_sprites()
    blocked_sprites = game_map.get_blocked_sprites()
    item_sprites = game_map.get_item_sprites()
    door_sprites = game_map.get_door_sprites()
    animated_sprites = game_map.get_animated_sprites()
    exit_sprites = game_map.get_exit_sprites()
    used_sprites = []
    used_sprites_locs = set()
    all_sprites_list = pg.sprite.Group()
    all_sprites_list.add(player)
    all_sprites_list.add(friend_sprites)
    all_sprites_list.add(blocked_sprites)
    all_sprites_list.add(item_sprites)
    all_sprites_list.add(door_sprites)
    all_sprites_list.add(animated_sprites)
    all_sprites_list.add(enemy_sprites)
    all_sprites_list.add(used_sprites)

    first_trader = friend_sprites[0]
    first_trader.trader_model.add_inventory(Jewel())
    first_trader.trader_model.add_inventory(Jewel())
    first_trader.trader_model.add_inventory(Armor())

    gui_screen = sgc.surface.Screen((SCREEN_LENGTH, SCREEN_WIDTH))
    my_font = pg.font.SysFont("Arial", 30)
    my_font_2 = pg.font.SysFont("Arial", 20)

    inventory_gui = InventoryGUI(gui_screen, my_font, player)

    trader_gui = TraderGUI(gui_screen, my_font_2, player, first_trader)

    trader_gui.update_trader_inventory_gui(first_trader.trader_model.inventory)

    player.player_model.add_inventory(Jewel())
    inventory_gui.update_inventory_gui(player.player_model.inventory)
    trader_gui.update_player_inventory_gui(player.player_model.inventory)

    stats_gui = StatsGUI(gui_screen, my_font, player)

    # Initialize all battle guis
    all_battle_guis = []
    for enemy in enemy_sprites:
        all_battle_guis.append(BattleGUI(gui_screen, my_font, player, enemy))
    battle_gui = all_battle_guis[0]

    # apply it to text on a label
    label = my_font.render("Python and Pygame are Fun!", 1,
                           pg.Color('#000000'))

    while not done:

        time = clock.tick(60)

        player.lastMove = -1

        for event in pg.event.get():
            sgc.event(event)
            if event.type == GUI:
                if event.gui_type == "click" and event.widget is trader_gui.sell_button:
                    trader_gui.execute_sell()
                if event.gui_type == "click" and event.widget is trader_gui.buy_button:
                    trader_gui.execute_buy()
                if event.gui_type == "click" and event.widget is battle_gui.attack_option:
                    battle_gui.execute_attack()
                if event.gui_type == "click" and event.widget is battle_gui.retreat_option:
                    battle_gui.execute_retreat()
                if event.gui_type == "click" and event.widget is inventory_gui.quit_button:
                    inventory_gui.active = False
                if event.gui_type == "click" and event.widget is inventory_gui.drop_button:
                    inventory_gui.execute_drop()
            elif event.type == pg.QUIT:
                done = True
            elif event.type == pg.KEYDOWN:
                if event.key == pg.K_q and inventory_gui.active:
                    inventory_gui.active = False
                    inventory_gui.hide()
                if event.key == pg.K_q and trader_gui.active:
                    trader_gui.active = False
                    trader_gui.hide()
                    player.rect.x = player.prev_x
                    player.rect.y = player.prev_y
                if event.key == pg.K_q and stats_gui.active:
                    stats_gui.active = False
                    stats_gui.hide()
                if event.key == pg.K_i and not inventory_gui.active:
                    inventory_gui.active = True
                    inventory_gui.update_inventory_gui(
                        player.player_model.inventory)
                    inventory_gui.show()
                    trader_gui.hide()
                    stats_gui.hide()
                    battle_gui.hide()

                if event.key == pg.K_t and not trader_gui.active:
                    trader_gui.active = True
                    trader_gui.update_player_inventory_gui(
                        player.player_model.inventory)
                    trader_gui.show()
                    inventory_gui.hide()
                    stats_gui.hide()
                    battle_gui.hide()

                if event.key == pg.K_p and not stats_gui.active:
                    stats_gui.active = True
                    stats_gui.update_stats()
                    stats_gui.show()
                    inventory_gui.hide()
                    trader_gui.hide()
                    battle_gui.hide()

        keys = pg.key.get_pressed()
        gui_on = stats_gui.active or inventory_gui.active or trader_gui.active or battle_gui.active
        if (keys[pg.K_LEFT] or keys[pg.K_a]) and not gui_on:
            player.move_left(playerSpeed)

        if (keys[pg.K_RIGHT] or keys[pg.K_d]) and not gui_on:
            player.move_right(playerSpeed)

        if (keys[pg.K_DOWN] or keys[pg.K_s]) and not gui_on:
            player.move_down(playerSpeed)

        if (keys[pg.K_UP] or keys[pg.K_w]) and not gui_on:
            player.move_up(playerSpeed)

        for sprite in blocked_sprites[:]:
            if player.rect.colliderect(sprite.rect):
                player.rect.x = player.prev_x
                player.rect.y = player.prev_y

        for idx, friend in enumerate(friend_sprites[:]):
            if player.rect.colliderect(friend.rect) and not trader_gui.active:
                trader_gui.active = True
                trader_gui.update_player_inventory_gui(
                    player.player_model.inventory)
                trader_gui.show()
                inventory_gui.hide()
                stats_gui.hide()
                battle_gui.hide()

                # Trader logic ---
                #player.rect.x = player.prev_x
                #player.rect.y = player.prev_y
                #sprite.display_label = True
                #sprite.start_display_time = datetime.now()

        for idx, enemy in enumerate(enemy_sprites[:]):
            if player.rect.colliderect(enemy.rect) and enemy.alive:
                player.rect.x = player.prev_x
                player.rect.y = player.prev_y
                battle_gui = all_battle_guis[idx]
                battle_gui.active = True
                inventory_gui.hide()
                trader_gui.hide()
                stats_gui.hide()
                battle_gui.show()
                enemy.pause_patrol = True

        for sprite in item_sprites[:]:
            if player.rect.colliderect(
                    sprite.rect) and sprite not in used_sprites:
                player.player_model.process_item(sprite.item_model)
                used_sprites.append(sprite)
                used_sprites_locs.add((sprite.rect.x, sprite.rect.y))
                sprite.kill()

        for sprite in door_sprites[:]:
            if player.rect.colliderect(sprite.rect):
                sprite.image = sprite.openImg.convert_alpha()
            else:
                sprite.image = sprite.closeImg.convert_alpha()

        for sprite in exit_sprites[:]:
            if player.rect.colliderect(sprite.rect):
                player.teleport(0, 0)
                game_map = GameMap(screen, 'cave.xlsx', 'art/characters.png',
                                   'art/basictiles.png', 'art/things.png',
                                   'art/dead.png')
                friend_sprites = game_map.get_friend_sprites()
                enemy_sprites = game_map.get_enemy_sprites()
                blocked_sprites = game_map.get_blocked_sprites()
                item_sprites = game_map.get_item_sprites()
                door_sprites = game_map.get_door_sprites()
                animated_sprites = game_map.get_animated_sprites()
                exit_sprites = game_map.get_exit_sprites()
                used_sprites = []
                used_sprites_locs = set()
                all_sprites_list = pg.sprite.Group()
                all_sprites_list.add(player)
                all_sprites_list.add(friend_sprites)
                all_sprites_list.add(blocked_sprites)
                all_sprites_list.add(item_sprites)
                all_sprites_list.add(door_sprites)
                all_sprites_list.add(animated_sprites)
                all_sprites_list.add(enemy_sprites)
                all_sprites_list.add(used_sprites)

        game_map.render_display(used_sprites_locs)
        all_sprites_list.update()
        all_sprites_list.draw(screen)
        player.rest()

        for sprite in friend_sprites[:]:
            if sprite.display_label:
                label = my_font.render(sprite.label, 1, pg.Color('#000000'))
                screen.blit(label, (150, 0))
                if (datetime.now() - sprite.start_display_time).seconds > 3:
                    sprite.display_label = False

        if inventory_gui.active or trader_gui.active or stats_gui.active or battle_gui.active:
            gui_screen.fill((0, 0, 0))
            sgc.update(time)

        pg.display.flip()
        clock.tick(30)
Esempio n. 13
0
    def input(self, event):
        Screen.input(self, event)
        sgc.event(event)
        if self.sizeScale.value != self.lastScaleVal:
            self.initpred.config(max=self.sizeScale.value**2)
            self.initprey.config(max=self.sizeScale.value**2)
            self.lv_scale.config(max=self.sizeScale.value * 50)
        if event.type == GUI:
            if event.gui_type == "click" and event.widget is self.runButton:
                if self.initprey.value + self.initpred.value > self.sizeScale.value**2:
                    print(
                        "Population too large for configuration, please select smaller values of predators and prey."
                    )
                else:
                    self.window.add_to_stack(
                        WorldScreen(self.sizeScale.value, self.window,
                                    float(self.alpha.text),
                                    float(self.beta.text),
                                    float(self.gamma.text),
                                    float(self.delta.text),
                                    [self.initprey.value, self.initpred.value],
                                    self.killRangeSlider.value))
            elif event.gui_type == "click" and event.widget is self.run_lv_button:
                self.tmp_world = monte.World(self.sizeScale.value)
                self.tmp_world.randSpawnPrey(float(self.alpha.text), 0.1, 50,
                                             1, self.initprey.value)
                self.tmp_world.randSpawnPredator(
                    float(self.beta.text) / self.initpred.value,
                    0.1 / self.initpred.value,
                    float(self.delta.text) / float(self.beta.text) *
                    (self.initpred.value / self.initprey.value),
                    0.1 * (self.initpred.value / self.initprey.value),
                    1 / float(self.gamma.text), 1, self.initpred.value,
                    self.killRangeSlider.value)
                for i in range(self.lv_timelimit.value):
                    self.tmp_world.step()
                s0 = [
                    self.initprey.value / self.lv_scale.value,
                    self.initpred.value / self.lv_scale.value
                ]
                t, ans = lv.lotkavolterragraph(float(self.alpha.text),
                                               float(self.beta.text),
                                               float(self.gamma.text),
                                               float(self.delta.text), s0,
                                               self.lv_timelimit.value + 1)

                ans *= self.lv_scale.value
                fig = plt.figure(figsize=[4.8, 4.8], dpi=100)
                fig.gca().plot(t, ans[:, 0], "g-")
                fig.gca().plot(t[::10], self.tmp_world.preyCounter, "r-")
                fig.savefig("output/" + dt.now().ctime().replace(":", " ") +
                            "output_lvpry.png")
                fig2 = plt.figure(figsize=[4.8, 4.8], dpi=100)
                fig2.gca().plot(t, ans[:, 1], "g-")
                fig2.gca().plot(t[::10], self.tmp_world.predCounter, "r-")
                fig2.savefig("output/" + dt.now().ctime().replace(":", " ") +
                             "output_lvpred.png")
                chi = sps.chisquare(self.tmp_world.preyCounter, ans[::10, 0])
                print(chi)
                plt.close(fig2)
                plt.close(fig)
            elif event.gui_type == "click" and event.widget is self.repeatButtons:
                alp, bet, gam, delt = float(self.alpha.text), float(
                    self.beta.text), float(self.gamma.text), float(
                        self.delta.text)
                mstprey = []
                mstpred = []
                time = tme.time()
                vals = {
                    'initpred': self.initpred.value,
                    'initprey': self.initprey.value,
                    'killRange': self.killRangeSlider.value,
                    'sizeScale': self.sizeScale.value,
                    'limit': self.lv_timelimit.value,
                    'alp': alp,
                    'bet': bet,
                    'gam': gam,
                    'delt': delt
                }

                a = []
                for i in range(self.repeats.value):
                    a.append(pool.apply_async(run_repeats, args=(
                        vals,
                        time,
                    )))
                    time += 1
                for a_res in a:
                    b = a_res.get()
                    mstpred.append(b[0])
                    mstprey.append(b[1])
                # get median - sort each point in terms of value
                mstprey = np.swapaxes(mstprey, 0, 1)
                mstpred = np.swapaxes(mstpred, 0, 1)
                meanPrey = np.array([np.mean(a) for a in mstprey])
                meanPred = np.array([np.mean(a) for a in mstpred])
                predErr = np.array([sps.sem(a) for a in mstpred])
                preyErr = np.array([sps.sem(a) for a in mstprey])
                # plot median graph and percentiles
                t = np.arange(0, self.lv_timelimit.value + 1)
                preypercent = plt.figure(figsize=[4.9, 4.9], dpi=100)
                predpercent = plt.figure(figsize=[4.9, 4.9], dpi=100)
                preypercent.gca().plot(t, meanPrey, 'g-')
                preypercent.gca().plot(t, meanPrey + 2 * preyErr, 'g:')
                preypercent.gca().plot(t, meanPrey - 2 * preyErr, 'g:')
                preypercent.gca().set_xlabel("Time")
                preypercent.gca().set_ylabel("Population")

                predpercent.gca().plot(t, meanPred, 'r-')
                predpercent.gca().plot(t, meanPred + 2 * predErr, 'r:')
                predpercent.gca().plot(t, meanPred - 2 * predErr, 'r:')
                predpercent.gca().set_xlabel("Time")
                predpercent.gca().set_ylabel("Population")
                preypercent.savefig("output/" +
                                    dt.now().ctime().replace(":", " ") +
                                    "mc_pry_output.png")
                predpercent.savefig("output/" +
                                    dt.now().ctime().replace(":", " ") +
                                    "mc_pred_output.png")
                plt.close(preypercent)
                plt.close(predpercent)
Esempio n. 14
0
 def process_events(self, events):
     for event in events:
         sgc.event(event)
         for i in self.widgets.keys():
             self.widgets[i].wai.on_event(event)
             self.widgets[i].wai.on_tick()
Esempio n. 15
0
	def process_events(self, events):
		for event in events:
			sgc.event(event)
			for i in self.widgets.keys():
				self.widgets[i].wai.on_event(event)
				self.widgets[i].wai.on_tick()
Esempio n. 16
0
def main():
    # Global variables & constants
    global ZMQ_TIMEOUT
    ZMQ_TIMEOUT = 2.4
    
    # Start information provider
    global pageInfo
    pageInfo = pageInfoProvider()
    pageInfo.daemon = True
    pageInfo.start()
    # Start MABx message receiver
#     mabxMsg = carserver.carInfo('MABx Messages', 1, 99999,['Code'],[''])
#     mabxMsg.daemon = True
#     mabxMsg.start()  

    # Pygame surfaces
    global screen
    screen = sgc.surface.Screen((LCDW, LCDH))
    clock = pygame.time.Clock()
    
    # Fill background
    global background
    background = pygame.Surface(screen.get_size())
    background = background.convert()
    background.fill((20, 25, 25))
    
    # Start threads that depend on Pygame
    # Homebrew notification manager
    global notify
    notify = notificationMgr()
    notify.daemon = True
    # Air conditioning manager
    global hvac
    hvac = carserver.hvacMgr('hvac', 5556)
    hvac.daemon = True
    hvac.start()
    
    # Text data is handled by the page thing
    infoFont = pygame.font.Font(os.path.join('res', 'Ticketing.otf'), 42)
    
    # Put on the button row
    btnFont = pygame.font.Font(os.path.join('res', 'OSP-DIN.ttf'), 28)
    acbtnFont = pygame.font.Font(os.path.join('res', 'OSP-DIN.ttf'), 22)
    btnLabel = ['ESS', 'HVAC', 'MABx', 'TM4', 'Top Bar test', 'Override Msg']
    btnPos = [25, LCDH - 80]
    
    # Painstakingly defining each button
    i = 0
    btn0 = sgc.Button(label=btnLabel[i], pos=(btnPos[0], btnPos[1]), col=(225, 128, 0), label_font=(btnFont))
    btn0.on_click = test_btn0
     
    i += 1
    btnPos[0] += 120
    btn1 = sgc.Button(label=btnLabel[i], pos=(btnPos[0], btnPos[1]), col=(107, 28, 214), label_font=(btnFont))
    btn1.on_click = test_btn1
     
    i += 1
    btnPos[0] += 120
    btn2 = sgc.Button(label=btnLabel[i], pos=(btnPos[0], btnPos[1]), col=(0, 180, 0), label_font=(btnFont))
    btn2.on_click = test_btn2
     
    i += 1
    btnPos[0] += 120
    btn3 = sgc.Button(label=btnLabel[i], pos=(btnPos[0], btnPos[1]), col=(0, 180, 0), label_font=(btnFont))
    btn3.on_click = test_btn3
 
    i += 1
    btnPos[0] += 120
    btn4 = sgc.Button(label=btnLabel[i], pos=(btnPos[0], btnPos[1]), col=(0, 180, 0), label_font=(btnFont))
    btn4.on_click = test_btn4
    
    i += 1
    btnPos[0] += 120
    btn5 = sgc.Button(label=btnLabel[i], pos=(btnPos[0], btnPos[1]), col=(0, 180, 0), label_font=(btnFont))
    btn5.on_click = test_btn5
    
    btnDismiss = sgc.Button(label="Dismiss", pos=(25, 405), col=(1, 1, 1), label_font=(btnFont))
    btnDismiss.on_click = dismiss_overlay
    
    acbtnPos = [25, 100]
    global acbtnOn
    acbtnOn = sgc.Switch(label="AC", pos=(acbtnPos[0], acbtnPos[1]), label_font=(acbtnFont), label_side="top")
    
    acbtnPos[0] += 140
    global acbtnTemp
    acbtnTemp = sgc.Scale(label="Temperature", pos=(acbtnPos[0], acbtnPos[1]), label_font=(acbtnFont), label_side="top", min=hvac.MIN_TEMP, max=hvac.MAX_TEMP)
    
    acbtnPos[0] += 260
    global acbtnFanSpd
    acbtnFanSpd = sgc.Scale(label="Fan Speed", pos=(acbtnPos[0], acbtnPos[1]), label_font=(acbtnFont), label_side="top")
    
    acbtnPos = [25, 180]
    global acbtnRecirc
    acbtnRecirc = sgc.Switch(label="Recirc", pos=(acbtnPos[0], acbtnPos[1]), label_font=(acbtnFont), label_side="top")
    
    notify.start()  # Display the welcome message and start notification mgr
    showMenuButton = True
    showACButton = False
    pageInfo.setPage(0)
    notify.send(-1, 'MalibuTake2 main Pygame loop started')
    
    while True:
        sgctime = clock.tick(30)
    
        for event in pygame.event.get():
            sgc.event(event)
            if event.type == GUI:
                print(event)
            if event.type == QUIT  or (event.type == KEYDOWN and event.key == K_ESCAPE):
                exit()
            if event.type == MOUSEBUTTONDOWN:
                if event.button == 1:
                    if event.pos[1] <= 60: # If click is in the top 60 pixels, go to message centre
                        pageInfo.setPage(9)

        # Button handlers
        if showMenuButton:
            btnDismiss.remove(1)
            btn0.add(0)
            btn1.add(0)
            btn2.add(0)
            btn3.add(0)
            btn4.add(0)
            btn5.add(0)
        elif not showMenuButton:
            btn0.remove(0)
            btn1.remove(0)
            btn2.remove(0)
            btn3.remove(0)
            btn4.remove(0)
            btn5.remove(0)
            
        if showACButton:
            hvac.pauseThread = False
            acbtnOn.add(0)
            acbtnTemp.add(0)
            acbtnFanSpd.add(0)
            acbtnRecirc.add(0)
        else:
            hvac.pauseThread = True
            acbtnOn.remove(0)
            acbtnTemp.remove(0)
            acbtnFanSpd.remove(0)
            acbtnRecirc.remove(0)
        
#         if pageInfo.activePage == 1:
#             afsd.add(0)
#         else:
#             asdf.remove(0)

        # Notifications are ran independently. Let's check on them:
        if notify.overlayActive:  # Overlay notification page
            showACButton = False
            showMenuButton = False     
            btn0.remove       
            dispScreen = pygame.display.set_mode([LCDW, LCDH])
            
            pygame.draw.rect(dispScreen, (200, 200, 200), (0, 0, LCDW, LCDH), 0)
            pygame.draw.rect(dispScreen, (200, 10, 10), (0, 0, LCDW, LCDH), 24)
            
            warnFont = pygame.font.Font(os.path.join('res', 'OSP-DIN.ttf'), 56)
            warnTxtPos = background.get_rect()
            warnTxtPos.left = 50
            warnTxtPos.centery = 320

            dispScreen.blit(warnFont.render(notify.OverlayText, 1, (180, 0, 0)), warnTxtPos)
            btnDismiss.add(0)
            
        elif pageInfo.activePage == 1:  # HVAC Page
            showACButton = True
            showMenuButton = True
            screen.blit(background, (0, 60))  # redraws background to cover everything up. 60 pixels top bar. 
            
            hvac.update([acbtnOn.state, acbtnTemp.value, acbtnFanSpd.value, acbtnRecirc.state])
         #   dispScreen = pygame.display.set_mode([LCDW,LCDH])
         
        elif pageInfo.activePage == 9:  # Message Centre
            showACButton = False
            showMenuButton = True
            
            screen.blit(background, (0, 60))  # redraws background to cover everything up. 60 pixels top bar. 
            thisLinePos = screen.get_rect()
            thisLinePos.top = 80
            thisLineColour = (190, 190, 190)
            thisLineKind = '?'
            
            msgListFont = pygame.font.Font(os.path.join('res', 'SourceSansPro-Regular.otf'), 24)
            
            listStart = len(notify.msgQueue) - 30
            if(listStart < 1): listStart = 1  # Anything above 0, because that's the logo 
            
            for i in xrange(listStart, len(notify.msgQueue)):
                
                kind = notify.msgQueue[i][1]
        
                if kind == -1:
                    thisLineColour = (190, 190, 190)
                    thisLineKind = 'LOG'
                elif kind == 1:
                    thisLineColour = (90, 90, 190)
                    thisLineKind = 'INFO'
                elif kind == 2:
                    thisLineColour = (255, 230, 82)
                    thisLineKind = 'CAUT'
                elif kind == 3:
                    thisLineColour = (200, 0, 0)
                    thisLineKind = 'WARN'
                
                thisLinePos.left = 25
                screen.blit(msgListFont.render(str(i), 1, thisLineColour), thisLinePos)
                thisLinePos.left += 30
                screen.blit(msgListFont.render(datetime.datetime.fromtimestamp(notify.msgQueue[i][0]).strftime('%H:%M:%S'), 1, thisLineColour), thisLinePos)
                thisLinePos.left += 90
                screen.blit(msgListFont.render(thisLineKind, 1, thisLineColour), thisLinePos)
                thisLinePos.left += 70
                screen.blit(msgListFont.render(notify.msgQueue[i][2], 1, thisLineColour), thisLinePos)
                thisLinePos.centery += 25
            
        else:  # Normal information page
            showACButton = False
            showMenuButton = True
            
            screen.blit(background, (0, 60))  # redraws background to cover everything up. 60 pixels top bar. 
            thisLinePos = screen.get_rect()
            thisLinePos.top = 80
            
#             print mabxMsg.data
#             print pageInfo.zmq_receiver.data
            
            for i in xrange(0, pageInfo.getDataLen()):
                thisLinePos.left = 25
                screen.blit(infoFont.render(str(pageInfo.zmq_receiver.data[0][i]), 1, (0, 144, 0)), thisLinePos)
                thisLinePos.left += LCDW * 0.3
                screen.blit(infoFont.render(str(pageInfo.zmq_receiver.data[1][i]), 1, (0, 222, 0)), thisLinePos)
                thisLinePos.left += LCDW * 0.4
                screen.blit(infoFont.render(str(pageInfo.zmq_receiver.data[2][i]), 1, (155, 155, 155)), thisLinePos)
                thisLinePos.centery += 50
            
        
        sgc.update(sgctime)
        pygame.display.flip()