def __init__(self, app): self.app = app self.filename = "" widgets = gtk.glade.XML(utils.locate_data_dir() + "chessmonk.glade") widgets.signal_autoconnect(self) self.window = widgets.get_widget("mainwindow") self.boardbox = widgets.get_widget("alignment_board_display") self.hpane = widgets.get_widget("hpane") self.vpane = widgets.get_widget("vpane") self.hpane.set_position(380) self.vpane.set_position(150) self.window.set_size_request(800, 600) try: icon = gtk.icon_theme_get_default().load_icon("chessmonk", 48, 0) self.window.set_icon(icon) except: print "Warning:", sys.exc_info()[1] # Move control buttons self.button_move_first = widgets.get_widget("button_move_first") self.button_move_back = widgets.get_widget("button_move_back") self.button_move_takeback = widgets.get_widget("button_move_takeback") self.button_move_forward = widgets.get_widget("button_move_forward") self.button_move_last = widgets.get_widget("button_move_last") from gtkboardview.BoardView import * self.boardview = BoardView() #self.board = self.boardview.board self.boardbox.add(self.boardview) self.boardview.board.connect('position-changed-event', self.position_changed_event) self.notationview = NotationView() self.notationview.board = self.boardview.board self.boardview.board.connect('position-changed-event', self.notationview.position_changed_event) widgets.get_widget('sw_notation').add(self.notationview) self.gamelist = GameList(self) #self.notebook = gtk.Notebook() #widgets.get_widget("notebook_box").add(self.notebook) #self.notebook.append_page(self.gamelist) widgets.get_widget("sw_gamelist").add(self.gamelist) self.window.show_all() self.button_move_takeback.hide() # TODO: reconsider
def __init__(self, app): Gtk.ApplicationWindow.__init__(self, application=app, title=app.fullname) self.set_wmclass (app.fullname, app.fullname) self.set_default_icon_name(app.simplename) self.app = app self.set_size_request(887, 640) self.set_position(Gtk.WindowPosition.CENTER) self.headerbar = HeaderBar () allgames = self.app.gamesdb.get_games () self.gamelist = GameList(allgames) mostusedgames = self.app.gamesdb.get_most_used_games ()[:20] self.mostusedgamelist = GameList(mostusedgames) self.gameview = GameView() self.set_titlebar (self.headerbar) self.stack = Gtk.Stack () self.stack.set_transition_type (Gtk.StackTransitionType.CROSSFADE) self.stack.show () self.stack.add_titled (self.mostusedgamelist, 'frequent', 'Frequently used') self.stack.add_titled (self.gamelist, 'all', 'All') self.stack.add (self.gameview) self.add(self.stack) self.switcher = Gtk.StackSwitcher() self.switcher.set_stack(self.stack) self.headerbar.previous_button.connect('clicked', self.on_previous_clicked) self.headerbar.add_games_button.connect('clicked', self.on_add_games_clicked) self.headerbar.play_game_button.connect('clicked', self.on_play_game_clicked) self.gamelist.connect('game_clicked', self.on_game_clicked) self.mostusedgamelist.connect('game_clicked', self.on_game_clicked) self.headerbar.show () self.switcher.show() self.gamelist.show () self.mostusedgamelist.show () self.gameview.show () self.set_mode ('list')
async def start(self, ctx): if not isinstance(ctx.channel, discord.channel.DMChannel): game = ctx.message.content.split(" ")[1] games = GameList.instance.get_games() open_games = GameList.instance.get_open_games() if game in open_games: game_IDs = GameList.get_all_IDs(game) playing_IDs = ameList.get_playing_IDs() for ID in game_IDs: if ID in playing_IDs: await ctx.send("{} is already playing a game!".format(ctx.message.guild.get_member(ID))) return creatorID = GameList.instance.get_creator(game) if ctx.author.id == creatorID: GameList.instance.start_game(game) await ctx.send("{} has been started!!".format(game)) await self.run(game, ctx) else: await ctx.send("{} does not have permission to start {}!".format(ctx.author, game)) if game in games: await ctx.send("{} has already started!".format(game)) else: await ctx.send("{} does not exist!".format(game)) else: await ctx.send("Please join a server to use this command.")
def play(self, game): id = GameList.get_game_reference (game) if id and (not (id in self.running_games) or self.running_games[id] == False): self.running_games[id] = True p = GameProcess(game) p.connect('game_started', self.on_game_started) p.connect('game_stopped', self.on_game_stopped) p.start()
def on_game_stopped(self, process, game, return_code, start_time, end_time): id = GameList.get_game_reference (game) self.running_games[id] = False time_played = end_time - start_time if return_code == 0 or time_played > 10: game_id = self.gamesdb.get_game_id (game.get_uri ()) #self.gamesdb.update_play_time (game_id, start_time, end_time) game.emit('played', start_time, end_time)
def __init__(self): super(GameHallPanel, self).__init__() layout = QVBoxLayout(self) layout.setAlignment(Qt.AlignTop) self.playerName = QLineEdit() self.playerName.setAlignment(Qt.AlignCenter) self.playerName.setFrame(False) self.playerName.setPlaceholderText('Player Name') self.playerName.setFocusPolicy(Qt.ClickFocus) self.playerName.setText(settings.value('player/name')) self.playerName.textChanged.connect(self._onPlayerNameChanged) layout.addWidget(self.playerName) self.gameList = GameList() self.mapList = MapList()
def main(self): self.opts.directory = os.path.normpath(self.opts.directory) os.chdir(self.opts.directory) self.config = ConfigParser.SafeConfigParser() self.config.read('mamematic.ini') gamelist = GameList() if self.opts.xml: gamelist.readxml(self.opts.xml) else: gamelist.readxml(self.config.get('mame','exec')) for g in gamelist: log.info(g) return(0)
def __init__(self): self.__root = root = Tk() root.title("飞机大战(达内科技)") from skycanvas import SkyCanvas #F画布 self.__canvas = canvas = SkyCanvas(root, width=480, height=654) canvas.pack() # 处理按键事件和鼠标事件 from gamelist import EventList # 创建能够接收控制事件的列表 (pause_button, hero_plane, self.__event_list = event_list = EventList() # 创建能够接收控制事件的列表 root.bind('<Key>', lambda event: event_list.on_key_down(event)) root.bind('<KeyRelease>', lambda event: event_list.on_key_up(event)) root.bind('<Button>', lambda event: event_list.on_mouse_down(event)) root.bind('<Motion>', lambda event: event_list.on_mouse_move(event)) root.bind('<ButtonRelease>', lambda event: event_list.on_mouse_up(event)) # 创建游戏中能接收定时器事5件的列表 from gamelist import TimerList self.__timer_list = time_list = TimerList() self.__timer_interval = 40 # 设定刷新时间为40ms self.__tick_count = 0 # 创建敌方武器对象列表 from gamelist import GameList self.__enemy_list = GameList() # 创建游戏方的武器对象列表 # self.player_list = GameList() self.create_backgound() self.__life_count = 3 # 生命数 # 创建飞机个数的图标 from planes_label import PlaneLabel self.__plane_label = PlaneLabel(canvas, count=self.__life_count) self.create_new_hero() # 创建得分标签: from score_label import ScoreLabel self.__score_label = ScoreLabel(canvas) self.__score = 0 # 创建暂停按钮 from pause_button import PauseButton self.__pause_btn = PauseButton(canvas, callback=self.pause_game) self.__event_list.append(self.__pause_btn) from enemy_plane import EnemyPlane1, EnemyPlane2, EnemyPlane3, EnemyPlane1_2 self.__random_list = [EnemyPlane1] * 10 + \ [EnemyPlane2] * 3 + [EnemyPlane3] + [EnemyPlane1_2] * 2 self.__min_list_len = len(self.__random_list) self.__random_list.extend([None] * 500) # self.__random_list = [EnemyPlane1] * 10 + [EnemyPlane2] * 3 + [EnemyPlane3] + [None] * 10 from startwindow import StartWindow self.__start_window = start_window = StartWindow( canvas, start_callback=self.start_game, destroy=self.destroy_object) event_list.append(start_window)
class MainApp: def __init__(self): self.__root = root = Tk() root.title("飞机大战(达内科技)") from skycanvas import SkyCanvas #F画布 self.__canvas = canvas = SkyCanvas(root, width=480, height=654) canvas.pack() # 处理按键事件和鼠标事件 from gamelist import EventList # 创建能够接收控制事件的列表 (pause_button, hero_plane, self.__event_list = event_list = EventList() # 创建能够接收控制事件的列表 root.bind('<Key>', lambda event: event_list.on_key_down(event)) root.bind('<KeyRelease>', lambda event: event_list.on_key_up(event)) root.bind('<Button>', lambda event: event_list.on_mouse_down(event)) root.bind('<Motion>', lambda event: event_list.on_mouse_move(event)) root.bind('<ButtonRelease>', lambda event: event_list.on_mouse_up(event)) # 创建游戏中能接收定时器事5件的列表 from gamelist import TimerList self.__timer_list = time_list = TimerList() self.__timer_interval = 40 # 设定刷新时间为40ms self.__tick_count = 0 # 创建敌方武器对象列表 from gamelist import GameList self.__enemy_list = GameList() # 创建游戏方的武器对象列表 # self.player_list = GameList() self.create_backgound() self.__life_count = 3 # 生命数 # 创建飞机个数的图标 from planes_label import PlaneLabel self.__plane_label = PlaneLabel(canvas, count=self.__life_count) self.create_new_hero() # 创建得分标签: from score_label import ScoreLabel self.__score_label = ScoreLabel(canvas) self.__score = 0 # 创建暂停按钮 from pause_button import PauseButton self.__pause_btn = PauseButton(canvas, callback=self.pause_game) self.__event_list.append(self.__pause_btn) from enemy_plane import EnemyPlane1, EnemyPlane2, EnemyPlane3, EnemyPlane1_2 self.__random_list = [EnemyPlane1] * 10 + \ [EnemyPlane2] * 3 + [EnemyPlane3] + [EnemyPlane1_2] * 2 self.__min_list_len = len(self.__random_list) self.__random_list.extend([None] * 500) # self.__random_list = [EnemyPlane1] * 10 + [EnemyPlane2] * 3 + [EnemyPlane3] + [None] * 10 from startwindow import StartWindow self.__start_window = start_window = StartWindow( canvas, start_callback=self.start_game, destroy=self.destroy_object) event_list.append(start_window) def create_backgound(self): from background import Background self.__background = background = Background(self.__canvas) self.__timer_list.append(background) def on_timer(self): # 再次启动定时器 self.timer_id = self.__canvas.after( self.__timer_interval, self.on_timer) # 让定时器重复启动 self.on_timer_tick() self.__tick_count += 1 if self.__tick_count == 25: self.__tick_count = 0 self.on_timer_second() def start_timer(self): # print("已启动定时器") self.timer_id = self.__canvas.after( self.__timer_interval, self.on_timer) def on_timer_tick(self): '''定时器触发时调用此方法''' # 刷新背景图 if self.__timer_list.on_timer(): return # 随机生成敌机 self.random_enemys() # 检测飞机得分及飞机是否飞机被摧毁 #if self.__hero_plane: # score = self.__hero_plane.check_attack( # self.__enemy_list.get_objs()) # self.increase_score(score) # Fred: What would happen when random list > list_len? def on_timer_second(self): '''定时器每秒钟调用一次此方法''' if len(self.__random_list) > self.__min_list_len: self.__random_list.pop() def start_game(self): self.__timer_list.append(self.__start_window) self.__event_list.remove(self.__start_window) del self.__start_window # ?????????????????????????????? self.start_timer() def pause_game(self): # print("游戏已暂暂停....") self.stop_timer() from resume_widget import ResumeWidet self.resume_widget = ResumeWidet( self.__canvas, resume_cb=self.begin_resume_game, destroy_cb=self.resume_game) self.__event_list.append(self.resume_widget) def begin_resume_game(self): '''开始恢复游戏进入恢复倒计时''' # print("游戏开始恢复!!!!!") self.__event_list.remove(self.resume_widget) self.__timer_list.append_head(self.resume_widget) self.start_timer() pass def resume_game(self): '''已恢复,正式开战''' # print("游戏已恢复!!!!!") self.__timer_list.remove(self.resume_widget) del self.resume_widget def __del__(self): self.stop_timer() def stop_timer(self): self.__canvas.after_cancel(self.timer_id) # 取消定时器 # print("定时器已取消!") def destroy_object(self, obj): """删除对象""" self.__timer_list.remove(obj) self.__event_list.remove(obj) self.__enemy_list.remove(obj) def create_new_hero(self): from heroplane import HeroPlane self.__hero_plane = hero_plane = HeroPlane( self.__canvas, destroy_cb=self.hero_crush) self.__event_list.append(hero_plane) self.__timer_list.append(hero_plane) self.__life_count -= 1 self.__plane_label.set_count(self.__life_count) def hero_crush(self, obj): '''飞机坠落''' # print('''飞机坠落''') self.destroy_object(self.__hero_plane) self.__hero_plane = None if self.__life_count > 0: self.create_new_hero() # print("剩余生命数为:", self.__life_count) else: self.game_over() def random_enemys(self): plane = random.choice(self.__random_list) if plane: ep = plane(self.__canvas, destroy_cb=self.destroy_object) self.__timer_list.append(ep) self.__enemy_list.append(ep) def run(self): # 进入主事件循环 self.__root.mainloop()
def __init__(self, client): self.client = client GameList.instance = GameList()
class Window(Gtk.ApplicationWindow): __gsignals__ = { 'play_clicked': (GObject.SIGNAL_RUN_FIRST, None, (object,)) } def __init__(self, app): Gtk.ApplicationWindow.__init__(self, application=app, title=app.fullname) self.set_wmclass (app.fullname, app.fullname) self.set_default_icon_name(app.simplename) self.app = app self.set_size_request(887, 640) self.set_position(Gtk.WindowPosition.CENTER) self.headerbar = HeaderBar () allgames = self.app.gamesdb.get_games () self.gamelist = GameList(allgames) mostusedgames = self.app.gamesdb.get_most_used_games ()[:20] self.mostusedgamelist = GameList(mostusedgames) self.gameview = GameView() self.set_titlebar (self.headerbar) self.stack = Gtk.Stack () self.stack.set_transition_type (Gtk.StackTransitionType.CROSSFADE) self.stack.show () self.stack.add_titled (self.mostusedgamelist, 'frequent', 'Frequently used') self.stack.add_titled (self.gamelist, 'all', 'All') self.stack.add (self.gameview) self.add(self.stack) self.switcher = Gtk.StackSwitcher() self.switcher.set_stack(self.stack) self.headerbar.previous_button.connect('clicked', self.on_previous_clicked) self.headerbar.add_games_button.connect('clicked', self.on_add_games_clicked) self.headerbar.play_game_button.connect('clicked', self.on_play_game_clicked) self.gamelist.connect('game_clicked', self.on_game_clicked) self.mostusedgamelist.connect('game_clicked', self.on_game_clicked) self.headerbar.show () self.switcher.show() self.gamelist.show () self.mostusedgamelist.show () self.gameview.show () self.set_mode ('list') def on_previous_clicked(self, button): self.set_mode ('list') def on_add_games_clicked(self, button): print ("add games clicked") def on_play_game_clicked(self, button): self.emit("play_clicked", self.game) def on_game_clicked(self, view, game): self.game = game self.gameview.set_game (game, self.app.gamesdb.get_play_info (game)) self.set_mode ('game') def set_mode (self, mode): if mode == 'list': self.stack.set_visible_child (self.gamelist) self.headerbar.previous_button.hide () self.headerbar.add_games_button.show () self.headerbar.play_game_button.hide () self.headerbar.set_title (self.app.fullname) self.headerbar.set_custom_title (self.switcher) elif mode == 'game': self.stack.set_visible_child (self.gameview) self.headerbar.previous_button.show () self.headerbar.add_games_button.hide () self.headerbar.play_game_button.show () self.headerbar.set_title (self.game.get_info ('common_title').get_property ('common_title')) self.headerbar.set_custom_title (None)
class MainWindow: def __init__(self, app): self.app = app self.filename = "" widgets = gtk.glade.XML(utils.locate_data_dir() + "chessmonk.glade") widgets.signal_autoconnect(self) self.window = widgets.get_widget("mainwindow") self.boardbox = widgets.get_widget("alignment_board_display") self.hpane = widgets.get_widget("hpane") self.vpane = widgets.get_widget("vpane") self.hpane.set_position(380) self.vpane.set_position(150) self.window.set_size_request(800, 600) try: icon = gtk.icon_theme_get_default().load_icon("chessmonk", 48, 0) self.window.set_icon(icon) except: print "Warning:", sys.exc_info()[1] # Move control buttons self.button_move_first = widgets.get_widget("button_move_first") self.button_move_back = widgets.get_widget("button_move_back") self.button_move_takeback = widgets.get_widget("button_move_takeback") self.button_move_forward = widgets.get_widget("button_move_forward") self.button_move_last = widgets.get_widget("button_move_last") from gtkboardview.BoardView import * self.boardview = BoardView() #self.board = self.boardview.board self.boardbox.add(self.boardview) self.boardview.board.connect('position-changed-event', self.position_changed_event) self.notationview = NotationView() self.notationview.board = self.boardview.board self.boardview.board.connect('position-changed-event', self.notationview.position_changed_event) widgets.get_widget('sw_notation').add(self.notationview) self.gamelist = GameList(self) #self.notebook = gtk.Notebook() #widgets.get_widget("notebook_box").add(self.notebook) #self.notebook.append_page(self.gamelist) widgets.get_widget("sw_gamelist").add(self.gamelist) self.window.show_all() self.button_move_takeback.hide() # TODO: reconsider def on_resize(self, widget): #self.boardview.on_resize() pass def on_rotate(self, widget): self.boardview.flip() def on_show_coordinates_toggle(self, widget): self.boardview.toggle_coordinates() def on_button_move_back_clicked(self, widget): self.boardview.board.move_back() def on_button_move_forward_clicked(self, widget): self.boardview.board.move_forward() def on_button_move_first_clicked(self, widget): self.boardview.board.move_first() def on_button_move_last_clicked(self, widget): self.boardview.board.move_last() def open_game(self, game): #game.notation.nodes = PGN.parse_string(game.notation_string) from gtkboardview import PGNfeeder PGNfeeder.feed(self.boardview.board, game.notation_string) #self.boardview.board.set_game(game) #self.boardview.update() self.notationview.update() def load_games(self, filename): self.gamelist.load(filename) self.open_game(self.gamelist.games[0]) self.filename = filename filebase = os.path.splitext(os.path.basename(filename))[0] self.window.set_title(filebase) def on_open(self, sender): fc = gtk.FileChooserDialog( title="Open", parent=self.window, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)) if self.filename: fc.set_filename(self.filename) result = fc.run() fc.hide() if result == gtk.RESPONSE_ACCEPT: self.load_games(fc.get_filename()) def on_save_board_image(self, sender): fc = gtk.FileChooserDialog( title="Save Image", parent=self.window, action=gtk.FILE_CHOOSER_ACTION_SAVE, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)) result = fc.run() fc.hide() if result == gtk.RESPONSE_ACCEPT: self.boardview.save_png(fc.get_filename()) def on_about(self, sender): ad = gtk.AboutDialog() ad.set_name("Chessmonk") ad.set_comments("Open Source Chess Viewer and Database Tool") ad.set_version(utils.get_version()) ad.set_copyright("Copyright © 2006 Daniel Borgmann") ad.set_authors([ "Daniel Borgmann <*****@*****.**>", "Nils R Grotnes <*****@*****.**>", ]) ad.set_license(utils.get_license()) ad.set_logo_icon_name("chessmonk") ad.run() def on_close(self, sender=None, event=None): gtk.main_quit() def position_changed_event(self, sender, new_position=None): print self.app.eco.get_name(new_position.get_FEN())
def __init__(self, app): self.app = app self.filename = "" self.data = Data() self.current_game = 0 self.UNSEEN_SCORE = 0 self.DONT_KNOW_SCORE = 1 self.FUZZY_SCORE = 2 self.GOT_IT_SCORE = 3 widgets = gtk.glade.XML(utils.locate_data_dir() + "chessmemory.glade") widgets.signal_autoconnect(self) self.window = widgets.get_widget("mainwindow") self.boardbox = widgets.get_widget("alignment_board_display") self.hpane = widgets.get_widget("hpane") self.vpane = widgets.get_widget("vpane") self.hpane.set_position(680) self.vpane.set_position(350) self.window.set_size_request(1440, 800) self.window.connect("key_press_event", self.key_press_event) self.window.set_events(gtk.gdk.KEY_PRESS_MASK) try: icon = gtk.icon_theme_get_default().load_icon("chessmemory", 48, 0) self.window.set_icon(icon) except: print "Warning:", sys.exc_info()[1] # Move control buttons self.button_move_first = widgets.get_widget("button_move_first") self.button_move_back = widgets.get_widget("button_move_back") self.button_move_takeback = widgets.get_widget("button_move_takeback") self.button_move_forward = widgets.get_widget("button_move_forward") self.button_move_last = widgets.get_widget("button_move_last") self.button_dont_know = widgets.get_widget("button_dont_know") self.button_fuzzy = widgets.get_widget("button_fuzzy") self.button_got_it = widgets.get_widget("button_got_it") self.boardview = BoardView(self) #self.board = self.boardview.board self.boardbox.add(self.boardview) self.boardview.board.connect('position-changed-event', self.position_changed_event) self.notationview = NotationView() self.notationview.board = self.boardview.board self.boardview.board.connect('position-changed-event', self.notationview.position_changed_event) widgets.get_widget('sw_notation').add(self.notationview) self.gamelist = GameList(self) #self.notebook = gtk.Notebook() #widgets.get_widget("notebook_box").add(self.notebook) #self.notebook.append_page(self.gamelist) widgets.get_widget("sw_gamelist").add(self.gamelist) self.window.show_all() self.button_move_takeback.hide() # TODO: reconsider
class MainWindow: def __init__(self, app): self.app = app self.filename = "" self.data = Data() self.current_game = 0 self.UNSEEN_SCORE = 0 self.DONT_KNOW_SCORE = 1 self.FUZZY_SCORE = 2 self.GOT_IT_SCORE = 3 widgets = gtk.glade.XML(utils.locate_data_dir() + "chessmemory.glade") widgets.signal_autoconnect(self) self.window = widgets.get_widget("mainwindow") self.boardbox = widgets.get_widget("alignment_board_display") self.hpane = widgets.get_widget("hpane") self.vpane = widgets.get_widget("vpane") self.hpane.set_position(680) self.vpane.set_position(350) self.window.set_size_request(1440, 800) self.window.connect("key_press_event", self.key_press_event) self.window.set_events(gtk.gdk.KEY_PRESS_MASK) try: icon = gtk.icon_theme_get_default().load_icon("chessmemory", 48, 0) self.window.set_icon(icon) except: print "Warning:", sys.exc_info()[1] # Move control buttons self.button_move_first = widgets.get_widget("button_move_first") self.button_move_back = widgets.get_widget("button_move_back") self.button_move_takeback = widgets.get_widget("button_move_takeback") self.button_move_forward = widgets.get_widget("button_move_forward") self.button_move_last = widgets.get_widget("button_move_last") self.button_dont_know = widgets.get_widget("button_dont_know") self.button_fuzzy = widgets.get_widget("button_fuzzy") self.button_got_it = widgets.get_widget("button_got_it") self.boardview = BoardView(self) #self.board = self.boardview.board self.boardbox.add(self.boardview) self.boardview.board.connect('position-changed-event', self.position_changed_event) self.notationview = NotationView() self.notationview.board = self.boardview.board self.boardview.board.connect('position-changed-event', self.notationview.position_changed_event) widgets.get_widget('sw_notation').add(self.notationview) self.gamelist = GameList(self) #self.notebook = gtk.Notebook() #widgets.get_widget("notebook_box").add(self.notebook) #self.notebook.append_page(self.gamelist) widgets.get_widget("sw_gamelist").add(self.gamelist) self.window.show_all() self.button_move_takeback.hide() # TODO: reconsider def on_resize(self, widget): #self.boardview.on_resize() pass def on_rotate(self, widget): self.boardview.flip() def key_press_event(self, widget, event): if gtk.gdk.keyval_name(event.keyval) == "Right": self.boardview.board.move_forward() elif gtk.gdk.keyval_name(event.keyval) == "Left": self.boardview.board.move_back() elif gtk.gdk.keyval_name(event.keyval) == "question": self.load_random_game() elif gtk.gdk.keyval_name(event.keyval) == "Return": self.on_button_got_it_clicked(self) elif gtk.gdk.keyval_name(event.keyval) == "space": self.on_button_fuzzy_clicked(self) elif gtk.gdk.keyval_name(event.keyval) == "Shift_L": self.on_button_dont_know_clicked(self) def on_show_coordinates_toggle(self, widget): self.boardview.toggle_coordinates() def on_button_move_back_clicked(self, widget): self.boardview.board.move_back() def on_button_move_forward_clicked(self, widget): self.boardview.board.move_forward() def on_button_move_first_clicked(self, widget): self.boardview.board.move_first() def on_button_move_last_clicked(self, widget): self.boardview.board.move_last() def on_button_dont_know_clicked(self, widget): self.data.set_score(self.current_game, self.DONT_KNOW_SCORE) self.gamelist.store[self.current_game][1] = self.DONT_KNOW_SCORE self.save_state() self.load_random_game() def on_button_fuzzy_clicked(self, widget): self.data.set_score(self.current_game, self.FUZZY_SCORE) self.gamelist.store[self.current_game][1] = self.FUZZY_SCORE self.save_state() self.load_random_game() def on_button_got_it_clicked(self, widget): self.data.set_score(self.current_game, self.GOT_IT_SCORE) self.gamelist.store[self.current_game][1] = self.GOT_IT_SCORE self.save_state() self.load_random_game() def load_random_game(self): random_index = randrange(0,len(self.gamelist.games)) self.open_game(self.gamelist.games[random_index]) def save_state(self): save_filename = self.filename + ".dat" f = open(save_filename, 'w') pickle.dump(self.data, f) def load_state(self): load_filename = self.filename + ".dat" try: f = open(load_filename) unpickler = pickle.Unpickler(f) self.data = unpickler.load() except: pass def open_game(self, game): game.notation.nodes = PGN.parse_string(game.notation_string) self.boardview.board.set_game(game) #self.boardview.update() self.notationview.update() self.current_game = game.index self.gamelist.set_cursor(game.index) self.data.inc_seen() # TODO P3: check for list of player names if game.keys['Black'] == 'Player' and self.boardview._flipped is False: self.boardview.flip() def load_games(self, filename): self.filename = filename self.load_state() self.gamelist.load(filename) #self.open_game(self.gamelist.games[0]) self.load_random_game() filebase = os.path.splitext(os.path.basename(filename))[0] self.window.set_title(filebase) def on_open(self, sender): fc = gtk.FileChooserDialog(title="Open", parent=self.window, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)) if self.filename: fc.set_filename(self.filename) result = fc.run() fc.hide() if result == gtk.RESPONSE_ACCEPT: self.load_games(fc.get_filename()) def on_save_board_image(self, sender): fc = gtk.FileChooserDialog(title="Save Image", parent=self.window, action=gtk.FILE_CHOOSER_ACTION_SAVE, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)) result = fc.run() fc.hide() if result == gtk.RESPONSE_ACCEPT: self.boardview.save_png(fc.get_filename()) def on_about(self, sender): ad = gtk.AboutDialog() ad.set_name("Chessmemory") ad.set_comments("Open Source Chess Viewer and Database Tool") ad.set_version(utils.get_version()) ad.set_copyright("Copyright © 2006 Daniel Borgmann") ad.set_authors([ "Daniel Borgmann <*****@*****.**>", "Nils R Grotnes <*****@*****.**>", ]) ad.set_license(utils.get_license()) ad.set_logo_icon_name("chessmemory") ad.run() def on_close(self, sender=None, event=None): gtk.main_quit() def position_changed_event(self, sender, new_position=None): print self.app.eco.get_name(new_position.get_FEN())