def __init__(self, parent, title, app, player, gameid, **kw): self.app = app self.selected_game = None kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.top_frame = top_frame self.createBitmaps(top_frame, kw) # self.player = player or _("Demo games") self.top.wm_minsize(200, 200) self.button = kw.default # ##createChart = self.create3DBarChart createChart = self.createPieChart ##createChart = self.createSimpleChart ## if parent.winfo_screenwidth() < 800 or parent.winfo_screenheight() < 600: ## createChart = self.createPieChart ## createChart = self.createSimpleChart # self.font = self.app.getFont("default") self.tk_font = tkFont.Font(self.top, self.font) self.font_metrics = self.tk_font.metrics() self._calc_tabs() # won, lost = app.stats.getStats(player, gameid) createChart(app, won, lost, _("Total")) won, lost = app.stats.getSessionStats(player, gameid) createChart(app, won, lost, _("Current session")) # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, text, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # self.text_w = Tkinter.Text(top_frame, bd=1, relief="sunken", wrap="word", width=64, height=16) self.text_w.pack(side="left", fill="both", expand=True) ###self.text_w.pack(side='top', padx=kw.padx, pady=kw.pady) vbar = Tkinter.Scrollbar(top_frame) vbar.pack(side="right", fill="y") self.text_w["yscrollcommand"] = vbar.set vbar["command"] = self.text_w.yview # self.text = "" if text: self.text = text old_state = self.text_w["state"] self.text_w.config(state="normal") self.text_w.insert("insert", self.text) self.text_w.config(state=old_state) # focus = self.createButtons(bottom_frame, kw) focus = self.text_w self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, **kw) # top_box, bottom_box = self.createVBox() # label = gtk.Label('Please enter your name') label.show() top_box.pack_start(label) self.player_entry = gtk.Entry() self.player_entry.show() top_box.pack_start(self.player_entry, expand=False) completion = gtk.EntryCompletion() self.player_entry.set_completion(completion) model = gtk.ListStore(gobject.TYPE_STRING) for name in app.getAllUserNames(): iter = model.append() model.set(iter, 0, name) completion.set_model(model) completion.set_text_column(0) self.player_entry.set_text(app.opt.player) # self.confirm_quit_check = gtk.CheckButton(_('Confirm quit')) self.confirm_quit_check.show() top_box.pack_start(self.confirm_quit_check) self.confirm_quit_check.set_active(app.opt.confirm != 0) # self.update_stats_check = gtk.CheckButton(_('Update statistics and logs')) self.update_stats_check.show() top_box.pack_start(self.update_stats_check) self.update_stats_check.set_active(app.opt.update_player_stats != 0) # self.createButtons(bottom_box, kw) self.show_all() gtk.main()
def __init__(self, parent, title, app, gameid, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # self.app = app self.gameid = gameid self.random = None if self.TreeDataHolder_Class.data is None: self.TreeDataHolder_Class.data = self.TreeData_Class(app) # self.top.wm_minsize(200, 200) font = app.getFont("default") self.tree = self.Tree_Class(self, top_frame, key=gameid, font=font, default=kw.default) self.tree.frame.pack(fill='both', expand=True, padx=kw.padx, pady=kw.pady) # focus = self.createButtons(bottom_frame, kw) focus = self.tree.frame self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, player, gameid, **kw): self.app = app self.selected_game = None kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.top_frame = top_frame self.createBitmaps(top_frame, kw) # self.player = player or _("Demo games") self.top.wm_minsize(200, 200) self.button = kw.default # # createChart = self.create3DBarChart createChart = self.createPieChart # createChart = self.createSimpleChart # if parent.winfo_screenwidth() < 800 or parent.winfo_screenheight() < # 600: # createChart = self.createPieChart # createChart = self.createSimpleChart # self.font = self.app.getFont("default") self.tk_font = tkFont.Font(self.top, self.font) self.font_metrics = self.tk_font.metrics() self._calc_tabs() # won, lost = app.stats.getStats(player, gameid) createChart(app, won, lost, _("Total")) won, lost = app.stats.getSessionStats(player, gameid) createChart(app, won, lost, _("Current session")) # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) # self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) frame.columnconfigure(0, weight=1) self.demo_sleep_var = Tkinter.DoubleVar() self.demo_sleep_var.set(app.opt.timeouts['demo']) self.hint_sleep_var = Tkinter.DoubleVar() self.hint_sleep_var.set(app.opt.timeouts['hint']) self.raise_card_sleep_var = Tkinter.DoubleVar() self.raise_card_sleep_var.set(app.opt.timeouts['raise_card']) self.highlight_piles_sleep_var = Tkinter.DoubleVar() self.highlight_piles_sleep_var.set(app.opt.timeouts['highlight_piles']) self.highlight_cards_sleep_var = Tkinter.DoubleVar() self.highlight_cards_sleep_var.set(app.opt.timeouts['highlight_cards']) self.highlight_samerank_sleep_var = Tkinter.DoubleVar() self.highlight_samerank_sleep_var.set( app.opt.timeouts['highlight_samerank']) # # Tkinter.Label(frame, text='Set delays in seconds').grid( # row=0, column=0, columnspan=2) row = 0 for title, var in ( (_('Demo:'), self.demo_sleep_var), (_('Hint:'), self.hint_sleep_var), (_('Raise card:'), self.raise_card_sleep_var), (_('Highlight piles:'), self.highlight_piles_sleep_var), (_('Highlight cards:'), self.highlight_cards_sleep_var), (_('Highlight same rank:'), self.highlight_samerank_sleep_var), ): Tkinter.Label(frame, text=title, anchor='w').grid(row=row, column=0, sticky='we') widget = Tkinter.Scale(frame, from_=0.2, to=9.9, resolution=0.1, orient='horizontal', length="3i", variable=var, takefocus=0) widget.grid(row=row, column=1) row += 1 # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout) # self.demo_timeout = self.demo_sleep_var.get() self.hint_timeout = self.hint_sleep_var.get() self.raise_card_timeout = self.raise_card_sleep_var.get() self.highlight_piles_timeout = self.highlight_piles_sleep_var.get() self.highlight_cards_timeout = self.highlight_cards_sleep_var.get() self.highlight_samerank_timeout = \ self.highlight_samerank_sleep_var.get()
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) frame.columnconfigure(0, weight=1) self.text_var = Tkinter.StringVar() self.text_var.set(app.opt.colors['text']) self.piles_var = Tkinter.StringVar() self.piles_var.set(app.opt.colors['piles']) self.cards_1_var = Tkinter.StringVar() self.cards_1_var.set(app.opt.colors['cards_1']) self.cards_2_var = Tkinter.StringVar() self.cards_2_var.set(app.opt.colors['cards_2']) self.samerank_1_var = Tkinter.StringVar() self.samerank_1_var.set(app.opt.colors['samerank_1']) self.samerank_2_var = Tkinter.StringVar() self.samerank_2_var.set(app.opt.colors['samerank_2']) self.hintarrow_var = Tkinter.StringVar() self.hintarrow_var.set(app.opt.colors['hintarrow']) self.not_matching_var = Tkinter.StringVar() self.not_matching_var.set(app.opt.colors['not_matching']) # row = 0 for title, var in ( (_('Text foreground:'), self.text_var), (_('Highlight piles:'), self.piles_var), (_('Highlight cards 1:'), self.cards_1_var), (_('Highlight cards 2:'), self.cards_2_var), (_('Highlight same rank 1:'), self.samerank_1_var), (_('Highlight same rank 2:'), self.samerank_2_var), (_('Hint arrow:'), self.hintarrow_var), (_('Highlight not matching:'), self.not_matching_var), ): Tkinter.Label(frame, text=title, anchor='w', ).grid(row=row, column=0, sticky='we') l = Tkinter.Label(frame, width=10, height=2, bg=var.get(), textvariable=var) l.grid(row=row, column=1, padx=5) b = Tkinter.Button(frame, text=_('Change...'), width=10, command=lambda l=l: self.selectColor(l)) b.grid(row=row, column=2) row += 1 # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout) # self.text_color = self.text_var.get() self.piles_color = self.piles_var.get() self.cards_1_color = self.cards_1_var.get() self.cards_2_color = self.cards_2_var.get() self.samerank_1_color = self.samerank_1_var.get() self.samerank_2_color = self.samerank_2_var.get() self.hintarrow_color = self.hintarrow_var.get() self.not_matching_color = self.not_matching_var.get()
def __init__(self, parent, title, top, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) cnf = { 'master': top_frame, 'highlightthickness': 1, 'highlightbackground': 'black', } frame = Tkinter.Frame(**cnf) frame.pack(expand=True, fill='both', padx=10, pady=10) frame.columnconfigure(0, weight=1) cnf['master'] = frame cnf['text'] = _('N') l = Tkinter.Label(**cnf) l.grid(row=0, column=0, sticky='ew') cnf['text'] = _('Game number') l = Tkinter.Label(**cnf) l.grid(row=0, column=1, sticky='ew') cnf['text'] = _('Started at') l = Tkinter.Label(**cnf) l.grid(row=0, column=2, sticky='ew') cnf['text'] = _('Result') l = Tkinter.Label(**cnf) l.grid(row=0, column=3, sticky='ew') row = 1 for i in top: # N cnf['text'] = str(row) l = Tkinter.Label(**cnf) l.grid(row=row, column=0, sticky='ew') # Game number cnf['text'] = '#' + str(i.game_number) l = Tkinter.Label(**cnf) l.grid(row=row, column=1, sticky='ew') # Start time t = time.strftime('%Y-%m-%d %H:%M', time.localtime(i.game_start_time)) cnf['text'] = t l = Tkinter.Label(**cnf) l.grid(row=row, column=2, sticky='ew') # Result if isinstance(i.value, float): # time s = format_time(i.value) else: # moves s = str(i.value) cnf['text'] = s l = Tkinter.Label(**cnf) l.grid(row=row, column=3, sticky='ew') row += 1 focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, top, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) cnf = {'master': top_frame, 'highlightthickness': 1, 'highlightbackground': 'black', } frame = Tkinter.Frame(**cnf) frame.pack(expand=True, fill='both', padx=10, pady=10) frame.columnconfigure(0, weight=1) cnf['master'] = frame cnf['text'] = _('N') l = Tkinter.Label(**cnf) l.grid(row=0, column=0, sticky='ew') cnf['text'] = _('Game number') l = Tkinter.Label(**cnf) l.grid(row=0, column=1, sticky='ew') cnf['text'] = _('Started at') l = Tkinter.Label(**cnf) l.grid(row=0, column=2, sticky='ew') cnf['text'] = _('Result') l = Tkinter.Label(**cnf) l.grid(row=0, column=3, sticky='ew') row = 1 for i in top: # N cnf['text'] = str(row) l = Tkinter.Label(**cnf) l.grid(row=row, column=0, sticky='ew') # Game number cnf['text'] = '#'+str(i.game_number) l = Tkinter.Label(**cnf) l.grid(row=row, column=1, sticky='ew') # Start time t = time.strftime('%Y-%m-%d %H:%M', time.localtime(i.game_start_time)) cnf['text'] = t l = Tkinter.Label(**cnf) l.grid(row=row, column=2, sticky='ew') # Result if isinstance(i.value, float): # time s = format_time(i.value) else: # moves s = str(i.value) cnf['text'] = s l = Tkinter.Label(**cnf) l.grid(row=row, column=3, sticky='ew') row += 1 focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) self.app = app # self.update_stats_var = Tkinter.BooleanVar() self.update_stats_var.set(app.opt.update_player_stats != 0) self.confirm_var = Tkinter.BooleanVar() self.confirm_var.set(app.opt.confirm != 0) self.win_animation_var = Tkinter.BooleanVar() self.win_animation_var.set(app.opt.win_animation != 0) # frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) widget = Tkinter.Label( frame, text=_("\nPlease enter your name"), #justify='left', anchor='w', takefocus=0) widget.grid(row=0, column=0, columnspan=2, sticky='ew', padx=0, pady=5) w = kw.get("e_width", 30) # width in characters self.player_var = Tkinter.Entry(frame, exportselection=1, width=w) self.player_var.insert(0, app.opt.player) self.player_var.grid(row=1, column=0, sticky='ew', padx=0, pady=5) widget = Tkinter.Button(frame, text=_('Choose...'), command=self.selectUserName) widget.grid(row=1, column=1, padx=5, pady=5) widget = Tkinter.Checkbutton(frame, variable=self.confirm_var, anchor='w', text=_("Confirm quit")) widget.grid(row=2, column=0, columnspan=2, sticky='ew', padx=0, pady=5) widget = Tkinter.Checkbutton(frame, variable=self.update_stats_var, anchor='w', text=_("Update statistics and logs")) widget.grid(row=3, column=0, columnspan=2, sticky='ew', padx=0, pady=5) ### widget = Tkinter.Checkbutton(frame, variable=self.win_animation_var, ### text="Win animation") ### widget.pack(side='top', padx=kw.padx, pady=kw.pady) frame.columnconfigure(0, weight=1) # self.player = self.player_var.get() self.confirm = self.confirm_var.get() self.update_stats = self.update_stats_var.get() self.win_animation = self.win_animation_var.get() # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) #self.createBitmaps(top_frame, kw) frame = ttk.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) frame.columnconfigure(0, weight=1) self.demo_sleep_var = Tkinter.DoubleVar() self.demo_sleep_var.set(app.opt.timeouts['demo']) self.hint_sleep_var = Tkinter.DoubleVar() self.hint_sleep_var.set(app.opt.timeouts['hint']) self.raise_card_sleep_var = Tkinter.DoubleVar() self.raise_card_sleep_var.set(app.opt.timeouts['raise_card']) self.highlight_piles_sleep_var = Tkinter.DoubleVar() self.highlight_piles_sleep_var.set(app.opt.timeouts['highlight_piles']) self.highlight_cards_sleep_var = Tkinter.DoubleVar() self.highlight_cards_sleep_var.set(app.opt.timeouts['highlight_cards']) self.highlight_samerank_sleep_var = Tkinter.DoubleVar() self.highlight_samerank_sleep_var.set(app.opt.timeouts['highlight_samerank']) # lframe = ttk.LabelFrame(frame, text=_('Set delays in seconds'), padding=(10, 5)) lframe.pack(expand=True, fill='both', padx=4) row = 0 for title, var in ( (_('Demo:'), self.demo_sleep_var), (_('Hint:'), self.hint_sleep_var), (_('Raise card:'), self.raise_card_sleep_var), (_('Highlight piles:'), self.highlight_piles_sleep_var), (_('Highlight cards:'), self.highlight_cards_sleep_var), (_('Highlight same rank:'), self.highlight_samerank_sleep_var), ): ttk.Label(lframe, text=title, anchor='w' ).grid(row=row, column=0, sticky='we') widget = PysolScale(lframe, from_=0.2, to=9.9, value=var.get(), resolution=0.1, orient='horizontal', length="3i", variable=var, takefocus=0) widget.grid(row=row, column=1) row += 1 # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout) # self.demo_timeout = self.demo_sleep_var.get() self.hint_timeout = self.hint_sleep_var.get() self.raise_card_timeout = self.raise_card_sleep_var.get() self.highlight_piles_timeout = self.highlight_piles_sleep_var.get() self.highlight_cards_timeout = self.highlight_cards_sleep_var.get() self.highlight_samerank_timeout = self.highlight_samerank_sleep_var.get()
def __init__(self, parent, title, app, manager, key=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # if key is None: key = manager.getSelected() self.app = app self.manager = manager self.key = key self.table_color = app.opt.colors['table'] if self.TreeDataHolder_Class.data is None: self.TreeDataHolder_Class.data = self.TreeData_Class(manager, key) # self.top.wm_minsize(400, 200) if self.top.winfo_screenwidth() >= 800: w1, w2 = 200, 400 else: w1, w2 = 200, 300 font = app.getFont("default") padx, pady = 4, 4 frame = Tkinter.Frame(top_frame) frame.pack(fill='both', expand=True, padx=kw.padx - padx, pady=kw.pady - pady) self.tree = self.Tree_Class(self, frame, key=key, default=kw.default, font=font, width=w1) self.tree.frame.pack(side="left", fill='both', expand=False, padx=padx, pady=pady) self.preview = MfxScrolledCanvas(frame, width=w2, hbar=0, vbar=0) self.preview.pack(side="right", fill='both', expand=True, padx=padx, pady=pady) self.preview.canvas.preview = 1 # create a preview of the current state self.preview_key = -1 self.updatePreview(key) # focus = self.createButtons(bottom_frame, kw) focus = self.tree.frame self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, manager, key=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, **kw) # top_box, bottom_box = self.createHBox() # if key is None: key = manager.getSelected() self.app = app self.manager = manager self.key = key self.preview_key = -1 self.all_keys = [] if self._cardset_store is None: self._createStore() #padx, pady = kw.padx, kw.pady padx, pady = 5, 5 # left # paned hpaned = gtk.HPaned() self.hpaned = hpaned hpaned.show() top_box.pack_start(hpaned, expand=True, fill=True) # tree treeview = PysolTreeView(self, self._cardset_store) self.treeview = treeview hpaned.pack1(treeview.scrolledwindow, True, True) ##treeview.treeview.expand_all() # right sw = gtk.ScrolledWindow() sw.show() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) hpaned.pack2(sw, True, True) ##self.scrolledwindow = sw # self.preview = MfxCanvas(self) self.preview.show() sw.add(self.preview) #hpaned.pack2(self.preview, True, True) self.preview.setTile(app, app.tabletile_index, force=True) # hpaned.set_position(240) self.createButtons(bottom_box, kw) ##~self.updatePreview(key) self.show_all() gtk.main()
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) # self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill="both", padx=5, pady=10) frame.columnconfigure(0, weight=1) self.demo_sleep_var = Tkinter.DoubleVar() self.demo_sleep_var.set(app.opt.timeouts["demo"]) self.hint_sleep_var = Tkinter.DoubleVar() self.hint_sleep_var.set(app.opt.timeouts["hint"]) self.raise_card_sleep_var = Tkinter.DoubleVar() self.raise_card_sleep_var.set(app.opt.timeouts["raise_card"]) self.highlight_piles_sleep_var = Tkinter.DoubleVar() self.highlight_piles_sleep_var.set(app.opt.timeouts["highlight_piles"]) self.highlight_cards_sleep_var = Tkinter.DoubleVar() self.highlight_cards_sleep_var.set(app.opt.timeouts["highlight_cards"]) self.highlight_samerank_sleep_var = Tkinter.DoubleVar() self.highlight_samerank_sleep_var.set(app.opt.timeouts["highlight_samerank"]) # # Tkinter.Label(frame, text='Set delays in seconds').grid(row=0, column=0, columnspan=2) row = 0 for title, var in ( (_("Demo:"), self.demo_sleep_var), (_("Hint:"), self.hint_sleep_var), (_("Raise card:"), self.raise_card_sleep_var), (_("Highlight piles:"), self.highlight_piles_sleep_var), (_("Highlight cards:"), self.highlight_cards_sleep_var), (_("Highlight same rank:"), self.highlight_samerank_sleep_var), ): Tkinter.Label(frame, text=title, anchor="w").grid(row=row, column=0, sticky="we") widget = Tkinter.Scale( frame, from_=0.2, to=9.9, resolution=0.1, orient="horizontal", length="3i", variable=var, takefocus=0 ) widget.grid(row=row, column=1) row += 1 # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout) # self.demo_timeout = self.demo_sleep_var.get() self.hint_timeout = self.hint_sleep_var.get() self.raise_card_timeout = self.raise_card_sleep_var.get() self.highlight_piles_timeout = self.highlight_piles_sleep_var.get() self.highlight_cards_timeout = self.highlight_cards_sleep_var.get() self.highlight_samerank_timeout = self.highlight_samerank_sleep_var.get()
def __init__(self, parent, title, app, player, gameid, **kw): kw = self.initKw(kw) title = _('Statistics') MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) self.font = app.getFont('default') self.tkfont = tkFont.Font(parent, self.font) self.font_metrics = self.tkfont.metrics() style = ttk.Style(parent) heading_font = style.lookup('Heading', 'font') # treeview heading self.heading_tkfont = tkFont.Font(parent, heading_font) self.selected_game = None top_frame, bottom_frame = self.createFrames(kw) notebook = ttk.Notebook(top_frame) notebook.pack(expand=True, fill='both', padx=10, pady=10) self.notebook_tabs = [] single_frame = SingleGameFrame(self, notebook, app, player, gameid) notebook.add(single_frame, text=_('Current game')) self.notebook_tabs.append(single_frame._w) all_frame = AllGamesFrame(self, notebook, app, player) notebook.add(all_frame, text=_('All games')) self.all_games_frame = all_frame self.notebook_tabs.append(all_frame._w) top_frame = TopFrame(self, notebook, app, player, gameid) notebook.add(top_frame, text=TOP_TITLE) self.notebook_tabs.append(top_frame._w) if player is not None: progr_frame = ProgressionFrame(self, notebook, app, player, gameid) notebook.add(progr_frame, text=_('Progression')) self.notebook_tabs.append(progr_frame._w) if StatsDialog.SELECTED_TAB < len(self.notebook_tabs): notebook.select(StatsDialog.SELECTED_TAB) bind(notebook, '<<NotebookTabChanged>>', self.tabChanged) ##notebook.enableTraversal() self.notebook = notebook focus = self.createButtons(bottom_frame, kw) self.tabChanged() # configure buttons state self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) self.app = app # self.update_stats_var = Tkinter.BooleanVar() self.update_stats_var.set(app.opt.update_player_stats != 0) self.confirm_var = Tkinter.BooleanVar() self.confirm_var.set(app.opt.confirm != 0) self.win_animation_var = Tkinter.BooleanVar() self.win_animation_var.set(app.opt.win_animation != 0) # frame = ttk.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) widget = ttk.Label(frame, text=_("\nPlease enter your name"), takefocus=0) widget.grid(row=0, column=0, columnspan=2, sticky='ew', padx=0, pady=5) # w = kw.get("e_width", 30) # width in characters names = self.app.getAllUserNames() self.player_var = ttk.Combobox(frame, width=w, values=tuple(names)) self.player_var.current(names.index(app.opt.player)) self.player_var.grid(row=1, column=0, sticky='ew', padx=0, pady=5) # widget = ttk.Checkbutton(frame, variable=self.confirm_var, text=_("Confirm quit")) widget.grid(row=2, column=0, columnspan=2, sticky='ew', padx=0, pady=5) widget = ttk.Checkbutton(frame, variable=self.update_stats_var, text=_("Update statistics and logs")) widget.grid(row=3, column=0, columnspan=2, sticky='ew', padx=0, pady=5) # widget = ttk.Checkbutton(frame, variable=self.win_animation_var, # text="Win animation") # widget.pack(side='top', padx=kw.padx, pady=kw.pady) frame.columnconfigure(0, weight=1) # self.player = self.player_var.get() self.confirm = self.confirm_var.get() self.update_stats = self.update_stats_var.get() self.win_animation = self.win_animation_var.get() # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) self.app = app # self.update_stats_var = Tkinter.BooleanVar() self.update_stats_var.set(app.opt.update_player_stats != 0) self.confirm_var = Tkinter.BooleanVar() self.confirm_var.set(app.opt.confirm != 0) self.win_animation_var = Tkinter.BooleanVar() self.win_animation_var.set(app.opt.win_animation != 0) # frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill="both", padx=5, pady=10) widget = Tkinter.Label( frame, text=_("\nPlease enter your name"), # justify='left', anchor='w', takefocus=0, ) widget.grid(row=0, column=0, columnspan=2, sticky="ew", padx=0, pady=5) w = kw.get("e_width", 30) # width in characters self.player_var = Tkinter.Entry(frame, exportselection=1, width=w) self.player_var.insert(0, app.opt.player) self.player_var.grid(row=1, column=0, sticky="ew", padx=0, pady=5) widget = Tkinter.Button(frame, text=_("Choose..."), command=self.selectUserName) widget.grid(row=1, column=1, padx=5, pady=5) widget = Tkinter.Checkbutton(frame, variable=self.confirm_var, anchor="w", text=_("Confirm quit")) widget.grid(row=2, column=0, columnspan=2, sticky="ew", padx=0, pady=5) widget = Tkinter.Checkbutton( frame, variable=self.update_stats_var, anchor="w", text=_("Update statistics and logs") ) widget.grid(row=3, column=0, columnspan=2, sticky="ew", padx=0, pady=5) ### widget = Tkinter.Checkbutton(frame, variable=self.win_animation_var, ### text="Win animation") ### widget.pack(side='top', padx=kw.padx, pady=kw.pady) frame.columnconfigure(0, weight=1) # self.player = self.player_var.get() self.confirm = self.confirm_var.get() self.update_stats = self.update_stats_var.get() self.win_animation = self.win_animation_var.get() # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, player, **kw): lines = 25 #if parent and parent.winfo_screenheight() < 600: # lines = 20 # self.font = app.getFont(self.FONT_TYPE) font = tkFont.Font(parent, self.font) self.font_metrics = font.metrics() self.CHAR_H = self.font_metrics['linespace'] self.CHAR_W = font.measure('M') self.app = app # self.player = player self.title = title self.sort_by = 'name' self.selected_game = None # kwdefault(kw, width=self.CHAR_W * 64, height=lines * self.CHAR_H) kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # self.top.wm_minsize(200, 200) self.button = kw.default # self.sc = AllGames_StatsDialogScrolledCanvas(top_frame, width=kw.width, height=kw.height) self.sc.pack(fill='both', expand=True, padx=kw.padx, pady=kw.pady) # self.nodes = {} self.canvas = self.sc.canvas self.canvas.dialog = self bind(self.canvas, "<1>", self.singleClick) self.fillCanvas(player, title) bbox = self.canvas.bbox("all") ##print bbox ##self.canvas.config(scrollregion=bbox) dx, dy = 4, 0 self.canvas.config(scrollregion=(-dx, -dy, bbox[2] + dx, bbox[3] + dy)) self.canvas.xview_moveto(-dx) self.canvas.yview_moveto(self.YVIEW) # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, player, **kw): lines = 25 #if parent and parent.winfo_screenheight() < 600: # lines = 20 # self.font = app.getFont(self.FONT_TYPE) font = tkFont.Font(parent, self.font) self.font_metrics = font.metrics() self.CHAR_H = self.font_metrics['linespace'] self.CHAR_W = font.measure('M') self.app = app # self.player = player self.title = title self.sort_by = 'name' self.selected_game = None # kwdefault(kw, width=self.CHAR_W*64, height=lines*self.CHAR_H) kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # self.top.wm_minsize(200, 200) self.button = kw.default # self.sc = AllGames_StatsDialogScrolledCanvas(top_frame, width=kw.width, height=kw.height) self.sc.pack(fill='both', expand=True, padx=kw.padx, pady=kw.pady) # self.nodes = {} self.canvas = self.sc.canvas self.canvas.dialog = self bind(self.canvas, "<1>", self.singleClick) self.fillCanvas(player, title) bbox = self.canvas.bbox("all") ##print bbox ##self.canvas.config(scrollregion=bbox) dx, dy = 4, 0 self.canvas.config(scrollregion=(-dx,-dy,bbox[2]+dx,bbox[3]+dy)) self.canvas.xview_moveto(-dx) self.canvas.yview_moveto(self.YVIEW) # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) self.app = app # self.update_stats_var = Tkinter.BooleanVar() self.update_stats_var.set(app.opt.update_player_stats != 0) self.confirm_var = Tkinter.BooleanVar() self.confirm_var.set(app.opt.confirm != 0) self.win_animation_var = Tkinter.BooleanVar() self.win_animation_var.set(app.opt.win_animation != 0) # frame = ttk.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) widget = ttk.Label(frame, text=_("\nPlease enter your name"), takefocus=0) widget.grid(row=0, column=0, columnspan=2, sticky='ew', padx=0, pady=5) # w = kw.get("e_width", 30) # width in characters names = self.app.getAllUserNames() self.player_var = ttk.Combobox(frame, width=w, values=tuple(names)) self.player_var.current(names.index(app.opt.player)) self.player_var.grid(row=1, column=0, sticky='ew', padx=0, pady=5) # widget = ttk.Checkbutton(frame, variable=self.confirm_var, text=_("Confirm quit")) widget.grid(row=2, column=0, columnspan=2, sticky='ew', padx=0, pady=5) widget = ttk.Checkbutton(frame, variable=self.update_stats_var, text=_("Update statistics and logs")) widget.grid(row=3, column=0, columnspan=2, sticky='ew', padx=0, pady=5) ### widget = ttk.Checkbutton(frame, variable=self.win_animation_var, ### text="Win animation") ### widget.pack(side='top', padx=kw.padx, pady=kw.pady) frame.columnconfigure(0, weight=1) # self.player = self.player_var.get() self.confirm = self.confirm_var.get() self.update_stats = self.update_stats_var.get() self.win_animation = self.win_animation_var.get() # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, manager, key=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # if key is None: key = manager.getSelected() self.manager = manager self.key = key #padx, pady = kw.padx, kw.pady padx, pady = 5, 5 if self.TreeDataHolder_Class.data is None: self.TreeDataHolder_Class.data = self.TreeData_Class(manager, key) # self.top.wm_minsize(400, 200) if self.top.winfo_screenwidth() >= 800: w1, w2 = 216, 400 else: w1, w2 = 200, 300 paned_window = Tkinter.PanedWindow(top_frame) paned_window.pack(expand=True, fill='both') left_frame = Tkinter.Frame(paned_window) right_frame = Tkinter.Frame(paned_window) paned_window.add(left_frame) paned_window.add(right_frame) font = app.getFont("default") self.tree = self.Tree_Class(self, left_frame, key=key, default=kw.default, font=font, width=w1) self.tree.frame.pack(fill='both', expand=True, padx=padx, pady=pady) self.preview = MfxScrolledCanvas(right_frame, width=w2) self.preview.setTile(app, app.tabletile_index, force=True) self.preview.pack(fill='both', expand=True, padx=padx, pady=pady) self.preview.canvas.preview = 1 # create a preview of the current state self.preview_key = -1 self.preview_images = [] self.updatePreview(key) # focus = self.createButtons(bottom_frame, kw) focus = self.tree.frame self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) frame.columnconfigure(0, weight=1) self.fonts = {} row = 0 for fn, title in ( ##('default', _('Default')), ('sans', _('HTML: ')), ('small', _('Small: ')), ('fixed', _('Fixed: ')), ('canvas_default', _('Tableau default: ')), ('canvas_fixed', _('Tableau fixed: ')), ('canvas_large', _('Tableau large: ')), ('canvas_small', _('Tableau small: ')), ): font = app.opt.fonts[fn] self.fonts[fn] = font Tkinter.Label(frame, text=title, anchor='w').grid(row=row, column=0, sticky='we') if font: title = ' '.join( [str(i) for i in font if i not in ('roman', 'normal')]) elif font is None: title = 'Default' l = Tkinter.Label(frame, font=font, text=title) l.grid(row=row, column=1) b = Tkinter.Button( frame, text=_('Change...'), width=10, command=lambda l=l, fn=fn: self.selectFont(l, fn)) b.grid(row=row, column=2) row += 1 # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, gameid, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # self.app = app self.gameid = gameid self.random = None if self.TreeDataHolder_Class.data is None: self.TreeDataHolder_Class.data = self.TreeData_Class(app) # self.top.wm_minsize(200, 200) font = app.getFont("default") self.tree = self.Tree_Class(self, top_frame, key=gameid, font=font, default=kw.default) self.tree.frame.pack(fill="both", expand=True, padx=kw.padx, pady=kw.pady) # focus = self.createButtons(bottom_frame, kw) focus = self.tree.frame self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, manager, key=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # if key is None: key = manager.getSelected() self.app = app self.manager = manager self.key = key self.table_color = app.opt.colors['table'] if self.TreeDataHolder_Class.data is None: self.TreeDataHolder_Class.data = self.TreeData_Class(manager, key) # self.top.wm_minsize(400, 200) if self.top.winfo_screenwidth() >= 800: w1, w2 = 200, 400 else: w1, w2 = 200, 300 font = app.getFont("default") padx, pady = 4, 4 frame = Tkinter.Frame(top_frame) frame.pack(fill='both', expand=True, padx=kw.padx-padx, pady=kw.pady-pady) self.tree = self.Tree_Class(self, frame, key=key, default=kw.default, font=font, width=w1) self.tree.frame.pack(side="left", fill='both', expand=False, padx=padx, pady=pady) self.preview = MfxScrolledCanvas(frame, width=w2, hbar=0, vbar=0) self.preview.pack(side="right", fill='both', expand=True, padx=padx, pady=pady) self.preview.canvas.preview = 1 # create a preview of the current state self.preview_key = -1 self.updatePreview(key) # focus = self.createButtons(bottom_frame, kw) focus = self.tree.frame self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, usernames=[], **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # listbox = Tkinter.Listbox(top_frame) listbox.pack(side="left", fill="both", expand=True) scrollbar = Tkinter.Scrollbar(top_frame) scrollbar.pack(side="right", fill="y") listbox.configure(yscrollcommand=scrollbar.set) scrollbar.configure(command=listbox.yview) self.username = None self.listbox = listbox bind(listbox, "<<ListboxSelect>>", self.updateUserName) # for un in usernames: listbox.insert("end", un) focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, usernames=[], **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # listbox = Tkinter.Listbox(top_frame) listbox.pack(side='left', fill='both', expand=True) scrollbar = Tkinter.Scrollbar(top_frame) scrollbar.pack(side='right', fill='y') listbox.configure(yscrollcommand=scrollbar.set) scrollbar.configure(command=listbox.yview) self.username = None self.listbox = listbox bind(listbox, '<<ListboxSelect>>', self.updateUserName) # for un in usernames: listbox.insert('end', un) focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, player, **kw): self.font = app.getFont('default') self.tkfont = tkFont.Font(parent, self.font) style = ttk.Style(parent) heading_font = style.lookup('Heading', 'font') # treeview heading self.heading_tkfont = tkFont.Font(parent, heading_font) self.font_metrics = self.tkfont.metrics() self.CHAR_H = self.font_metrics['linespace'] self.CHAR_W = self.tkfont.measure('M') kw = self.initKw(kw) title = _('Log') MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) ##self.selected_game = None top_frame, bottom_frame = self.createFrames(kw) notebook = ttk.Notebook(top_frame) notebook.pack(expand=True, fill='both', padx=10, pady=10) self.notebook_tabs = [] full_frame = FullLogFrame(self, notebook, app, player) notebook.add(full_frame, text=_('Full log')) self.notebook_tabs.append(full_frame._w) session_frame = SessionLogFrame(self, notebook, app, player) notebook.add(session_frame, text=_('Session log')) self.notebook_tabs.append(session_frame._w) notebook.select(LogDialog.SELECTED_TAB) ## bind(notebook, '<<NotebookTabChanged>>', self.tabChanged) self.notebook = notebook focus = self.createButtons(bottom_frame, kw) ##self.tabChanged() # configure buttons state self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) frame.columnconfigure(0, weight=1) self.fonts = {} row = 0 for fn, title in (##('default', _('Default')), ('sans', _('HTML: ')), ('small', _('Small: ')), ('fixed', _('Fixed: ')), ('canvas_default', _('Tableau default: ')), ('canvas_fixed', _('Tableau fixed: ')), ('canvas_large', _('Tableau large: ')), ('canvas_small', _('Tableau small: ')), ): font = app.opt.fonts[fn] self.fonts[fn] = font Tkinter.Label(frame, text=title, anchor='w' ).grid(row=row, column=0, sticky='we') if font: title = ' '.join([str(i) for i in font if i not in ('roman', 'normal')]) elif font is None: title = 'Default' l = Tkinter.Label(frame, font=font, text=title) l.grid(row=row, column=1) b = Tkinter.Button(frame, text=_('Change...'), width=10, command=lambda l=l, fn=fn: self.selectFont(l, fn)) b.grid(row=row, column=2) row += 1 # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, manager, key=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, **kw) # top_box, bottom_box = self.createHBox() # if key is None: key = manager.getSelected() self.app = app self.manager = manager self.key = key self.preview_key = -1 self.all_keys = [] self.table_color = app.opt.colors['table'] # paned hpaned = gtk.HPaned() self.hpaned = hpaned hpaned.show() top_box.pack_start(hpaned, expand=True, fill=True) # model = self._createStore(manager, key) treeview = PysolTreeView(self, model) self.treeview = treeview hpaned.pack1(treeview.scrolledwindow, True, True) treeview.treeview.expand_all() # self.preview = MfxCanvas(top_box) # width=w2 hpaned.pack2(self.preview, True, True) self.preview.show() hpaned.set_position(240) self.createButtons(bottom_box, kw) self.updatePreview(key) self.show_all() gtk.main()
def __init__(self, parent, title, app, gameid, top, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) cnf = { 'master': top_frame, 'padding': (4, 1), } frame = ttk.Frame(**cnf) frame.pack(expand=True, fill='both', padx=10, pady=10) frame.columnconfigure(0, weight=1) cnf['master'] = frame cnf['text'] = _('N') l = ttk.Label(**cnf) l.grid(row=0, column=0, sticky='ew') if gameid == 'all': cnf['text'] = _('Game') l = ttk.Label(**cnf) l.grid(row=0, column=1, sticky='ew') cnf['text'] = _('Game number') l = ttk.Label(**cnf) l.grid(row=0, column=2, sticky='ew') cnf['text'] = _('Started at') l = ttk.Label(**cnf) l.grid(row=0, column=3, sticky='ew') cnf['text'] = _('Result') l = ttk.Label(**cnf) l.grid(row=0, column=4, sticky='ew') row = 1 for i in top: # N cnf['text'] = str(row) l = ttk.Label(**cnf) l.grid(row=row, column=0, sticky='ew') if gameid == 'all': name = app.getGameTitleName(i.gameid) if name is None: name = _("** UNKNOWN %d **") % i.gameid cnf['text'] = name l = ttk.Label(**cnf) l.grid(row=row, column=1, sticky='ew') # Game number cnf['text'] = '#' + str(i.game_number) l = ttk.Label(**cnf) l.grid(row=row, column=2, sticky='ew') # Start time t = time.strftime('%Y-%m-%d %H:%M', time.localtime(i.game_start_time)) cnf['text'] = t l = ttk.Label(**cnf) l.grid(row=row, column=3, sticky='ew') # Result if isinstance(i.value, float): # time s = format_time(i.value) else: # moves s = str(i.value) cnf['text'] = s l = ttk.Label(**cnf) l.grid(row=row, column=4, sticky='ew') row += 1 focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = ttk.Frame(top_frame) frame.pack(expand=True, fill='both', padx=10, pady=10) frame.columnconfigure(0, weight=1) notebook = ttk.Notebook(frame) notebook.pack(expand=True, fill='both') for w in WizardWidgets: if isinstance(w, basestring): frame = ttk.Frame(notebook) notebook.add(frame, text=w, sticky='nsew', padding=5) frame.columnconfigure(1, weight=1) row = 0 continue ttk.Label(frame, text=w.label).grid(row=row, column=0) if w.widget == 'preset': if w.variable is None: w.variable = Tkinter.StringVar() values = [_(v) for v in w.values] default = _(w.default) values.remove(default) values.sort() values.insert(0, default) callback = lambda e, w=w: self.presetSelected(e, w) cb = PysolCombo(frame, values=tuple(values), textvariable=w.variable, exportselection=False, selectcommand=callback, state='readonly', width=32) cb.grid(row=row, column=1, sticky='ew', padx=2, pady=2) elif w.widget == 'entry': if w.variable is None: w.variable = Tkinter.StringVar() en = ttk.Entry(frame, textvariable=w.variable) en.grid(row=row, column=1, sticky='ew', padx=2, pady=2) elif w.widget == 'menu': if w.variable is None: w.variable = Tkinter.StringVar() values = [_(v) for v in w.values] cb = PysolCombo(frame, values=tuple(values), textvariable=w.variable, exportselection=False, state='readonly', width=32) cb.grid(row=row, column=1, sticky='ew', padx=2, pady=2) elif w.widget == 'spin': if w.variable is None: w.variable = Tkinter.IntVar() else: # delete all trace callbacks for mod, cbname in w.variable.trace_vinfo(): w.variable.trace_vdelete(mod, cbname) from_, to = w.values ##s = Spinbox(frame, textvariable=w.variable, from_=from_, to=to) s = PysolScale(frame, from_=from_, to=to, resolution=1, orient='horizontal', variable=w.variable) s.grid(row=row, column=1, sticky='ew', padx=2, pady=2) elif w.widget == 'check': if w.variable is None: w.variable = Tkinter.BooleanVar() ch = ttk.Checkbutton(frame, variable=w.variable, takefocus=False) ch.grid(row=row, column=1, sticky='ew', padx=2, pady=2) if w.current_value is None: v = w.default else: v = w.current_value if w.widget in ('menu', 'preset'): v = _(v) w.variable.set(v) row += 1 focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, init_font, **kw): # print init_font kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) self.font_family = 'Helvetica' self.font_size = 12 self.font_weight = 'normal' self.font_slant = 'roman' if init_font is not None: assert 2 <= len(init_font) <= 4 assert isinstance(init_font[1], int) self.font_family, self.font_size = init_font[:2] if len(init_font) > 2: if init_font[2] in ['bold', 'normal']: self.font_weight = init_font[2] elif init_font[2] in ['italic', 'roman']: self.font_slant = init_font[2] else: raise ValueError('invalid font style: ' + init_font[2]) if len(init_font) > 3: if init_font[3] in ['bold', 'normal']: self.font_weight = init_font[3] elif init_font[2] in ['italic', 'roman']: self.font_slant = init_font[3] else: raise ValueError('invalid font style: ' + init_font[3]) # self.family_var = Tkinter.StringVar() self.weight_var = Tkinter.BooleanVar() self.weight_var.set(self.font_weight == 'bold') self.slant_var = Tkinter.BooleanVar() self.slant_var.set(self.font_slant == 'italic') self.size_var = Tkinter.IntVar() self.size_var.set(self.font_size) # frame = ttk.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) frame.columnconfigure(0, weight=1) # frame.rowconfigure(1, weight=1) self.entry = ttk.Entry(frame) self.entry.grid(row=0, column=0, columnspan=2, sticky='news') self.entry.insert('end', _('abcdefghABCDEFGH')) self.list_box = Tkinter.Listbox(frame, width=36, exportselection=False) sb = ttk.Scrollbar(frame) self.list_box.configure(yscrollcommand=sb.set) sb.configure(command=self.list_box.yview) self.list_box.grid(row=1, column=0, sticky='news') # rowspan=4 sb.grid(row=1, column=1, sticky='ns') bind(self.list_box, '<<ListboxSelect>>', self.fontupdate) # self.list_box.focus() cb1 = ttk.Checkbutton(frame, text=_('Bold'), command=self.fontupdate, variable=self.weight_var) cb1.grid(row=2, column=0, columnspan=2, sticky='we') cb2 = ttk.Checkbutton(frame, text=_('Italic'), command=self.fontupdate, variable=self.slant_var) cb2.grid(row=3, column=0, columnspan=2, sticky='we') sc = PysolScale(frame, from_=6, to=40, resolution=1, label=_('Size:'), orient='horizontal', command=self.fontupdate, variable=self.size_var) sc.grid(row=4, column=0, columnspan=2, sticky='news') # font_families = list(tkFont.families()) font_families.sort() selected = -1 n = 0 self.list_box.insert('end', *font_families) for font in font_families: if font.lower() == self.font_family.lower(): selected = n break n += 1 if selected >= 0: self.list_box.select_set(selected) self.list_box.see(selected) # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout) self.font = (self.font_family, self.font_size, self.font_slant, self.font_weight)
def __init__(self, parent, title, cardset, images, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = ttk.Frame(top_frame) frame.pack(fill="both", expand=True, padx=5, pady=10) # # row = 0 info_frame = ttk.LabelFrame(frame, text=_('About cardset')) info_frame.grid(row=row, column=0, columnspan=2, sticky='ew', padx=0, pady=5, ipadx=5, ipady=5) row += 1 styles = nationalities = year = None if cardset.si.styles: styles = '\n'.join([CSI.STYLE[i] for i in cardset.si.styles]) if cardset.si.nationalities: nationalities = '\n'.join([CSI.NATIONALITY[i] for i in cardset.si.nationalities]) if cardset.year: year = str(cardset.year) frow = 0 for n, t in ( ##('Version:', str(cardset.version)), (_('Type:'), CSI.TYPE[cardset.type]), (_('Styles:'), styles), (_('Nationality:'), nationalities), (_('Year:'), year), ##(_('Number of cards:'), str(cardset.ncards)), (_('Size:'), '%d x %d' % (cardset.CARDW, cardset.CARDH)), ): if t is not None: l = ttk.Label(info_frame, text=n, anchor='w', justify='left') l.grid(row=frow, column=0, sticky='nw', padx=4) l = ttk.Label(info_frame, text=t, anchor='w', justify='left') l.grid(row=frow, column=1, sticky='nw', padx=4) frow += 1 if images: try: from random import choice im = choice(images) f = os.path.join(cardset.dir, cardset.backname) self.back_image = loadImage(file=f) # store the image l = ttk.Label(info_frame, image=im, padding=5) l.grid(row=0, column=2, rowspan=frow+1, sticky='ne') l = ttk.Label(info_frame, image=self.back_image, padding=(0,5,5,5)) # left margin = 0 l.grid(row=0, column=3, rowspan=frow+1, sticky='ne') info_frame.columnconfigure(2, weight=1) info_frame.rowconfigure(frow, weight=1) except: traceback.print_exc() pass if USE_PIL: padx = 4 pady = 0 settings_frame = ttk.LabelFrame(frame, text=_('Settings')) settings_frame.grid(row=row, column=0, columnspan=2, sticky='ew', padx=0, pady=5, ipadx=5, ipady=5) row += 1 var = Tkinter.IntVar() self.x_offset = PysolScale( settings_frame, label=_('X offset:'), from_=5, to=40, resolution=1, orient='horizontal', variable=var, value=cardset.CARD_XOFFSET, #command=self._updateScale ) self.x_offset.grid(row=0, column=0, sticky='ew', padx=padx, pady=pady) var = Tkinter.IntVar() self.y_offset = PysolScale( settings_frame, label=_('Y offset:'), from_=5, to=40, resolution=1, orient='horizontal', variable=var, value=cardset.CARD_YOFFSET, #command=self._updateScale ) self.y_offset.grid(row=1, column=0, sticky='ew', padx=padx, pady=pady) row += 1 ##bg = top_frame["bg"] bg = 'white' text_w = Tkinter.Text(frame, bd=1, relief="sunken", wrap="word", padx=4, width=64, height=16, bg=bg) text_w.grid(row=row, column=0, sticky='nsew') sb = ttk.Scrollbar(frame) sb.grid(row=row, column=1, sticky='ns') text_w.configure(yscrollcommand=sb.set) sb.configure(command=text_w.yview) frame.columnconfigure(0, weight=1) frame.rowconfigure(1, weight=1) # text = '' f = os.path.join(cardset.dir, "COPYRIGHT") try: text = open(f).read() except: pass if text: text_w.config(state="normal") text_w.insert("insert", text) text_w.config(state="disabled") # focus = self.createButtons(bottom_frame, kw) #focus = text_w self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, cardset, images, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(fill="both", expand=True, padx=5, pady=10) # # info_frame = Tkinter.LabelFrame(frame, text=_('About cardset')) info_frame.grid(row=0, column=0, columnspan=2, sticky='ew', padx=0, pady=5, ipadx=5, ipady=5) styles = nationalities = year = None if cardset.si.styles: styles = '\n'.join([CSI.STYLE[i] for i in cardset.si.styles]) if cardset.si.nationalities: nationalities = '\n'.join([CSI.NATIONALITY[i] for i in cardset.si.nationalities]) if cardset.year: year = str(cardset.year) row = 0 for n, t in ( ##('Version:', str(cardset.version)), (_('Type:'), CSI.TYPE[cardset.type]), (_('Styles:'), styles), (_('Nationality:'), nationalities), (_('Year:'), year), ##(_('Number of cards:'), str(cardset.ncards)), (_('Size:'), '%d x %d' % (cardset.CARDW, cardset.CARDH)), ): if t is not None: l = Tkinter.Label(info_frame, text=n, anchor='w', justify='left') l.grid(row=row, column=0, sticky='nw') l = Tkinter.Label(info_frame, text=t, anchor='w', justify='left') l.grid(row=row, column=1, sticky='nw') row += 1 if images: try: from random import choice im = choice(images) f = os.path.join(cardset.dir, cardset.backname) self.back_image = loadImage(file=f) canvas = Tkinter.Canvas(info_frame, width=2*im.width()+30, height=im.height()+2) canvas.create_image(10, 1, image=im, anchor='nw') canvas.create_image(im.width()+20, 1, image=self.back_image, anchor='nw') canvas.grid(row=0, column=2, rowspan=row+1, sticky='ne') info_frame.columnconfigure(2, weight=1) info_frame.rowconfigure(row, weight=1) except: pass ##bg = top_frame["bg"] bg = 'white' text_w = Tkinter.Text(frame, bd=1, relief="sunken", wrap="word", padx=4, width=64, height=16, bg=bg) text_w.grid(row=1, column=0, sticky='nsew') sb = Tkinter.Scrollbar(frame) sb.grid(row=1, column=1, sticky='ns') text_w.configure(yscrollcommand=sb.set) sb.configure(command=text_w.yview) frame.columnconfigure(0, weight=1) frame.rowconfigure(1, weight=1) # text = '' f = os.path.join(cardset.dir, "COPYRIGHT") try: text = open(f).read() except: pass if text: text_w.config(state="normal") text_w.insert("insert", text) text_w.config(state="disabled") # focus = self.createButtons(bottom_frame, kw) #focus = text_w self.mainloop(focus, kw.timeout)
def __init__(self, parent, app, **kw): self.parent = parent self.app = app title = TITLE + " - FreeCell Solver" kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # self.solving_methods = { "A*": "a-star", "Breadth-First Search": "bfs", "Depth-First Search": "soft-dfs", # default "A randomized DFS": "random-dfs", ##'"Soft" DFS': 'soft-dfs', } self.games = {} # key: gamename; value: gameid # frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill="both", padx=4, pady=4) frame.columnconfigure(1, weight=1) # row = 0 Tkinter.Label(frame, text=_("Game:"), anchor="w").grid(row=row, column=0, sticky="ew", padx=2, pady=2) games = app.getGamesForSolver() gamenames = [""] for id in games: name = app.getGameTitleName(id) gamenames.append(name) self.games[name] = id gamenames.sort() self.gamenames = gamenames self.games_var = var = Tkinter.StringVar() om = Tkinter.OptionMenu(frame, var, command=self.gameSelected, *gamenames) om.grid(row=row, column=1, sticky="ew", padx=2, pady=2) n = len(gamenames) cb_max = int(self.top.winfo_screenheight() / 23) cb_max = n / (n / cb_max + 1) for i in xrange(cb_max, n, cb_max): om["menu"].entryconfig(i, columnbreak=True) # row += 1 Tkinter.Label(frame, text=_("Solving method:"), anchor="w").grid(row=row, column=0, sticky="ew", padx=2, pady=2) ##sm = self.solving_methods.values() ##sm.sort() sm = [ "A*", "Breadth-First Search", "Depth-First Search", "A randomized DFS", ##'"Soft" DFS' ] self.solving_method_var = var = Tkinter.StringVar() var.set("Depth-First Search") om = Tkinter.OptionMenu(frame, var, *sm) om.grid(row=row, column=1, sticky="ew", padx=2, pady=2) # row += 1 Tkinter.Label(frame, text=_("Preset:"), anchor="w").grid(row=row, column=0, sticky="ew", padx=2, pady=2) presets = app.opt.solver_presets self.presets = presets self.preset_var = var = Tkinter.StringVar() var.set("none") om = Tkinter.OptionMenu(frame, var, *presets) om.grid(row=row, column=1, sticky="ew", padx=2, pady=2) # row += 1 self.max_iters_var = Tkinter.IntVar() self.max_iters_var.set(10e4) Tkinter.Label(frame, text=_("Max iterations:"), anchor="w").grid(row=row, column=0, sticky="ew", padx=2, pady=2) spin = Tkinter.Spinbox(frame, bg="white", from_=1000, to=10e6, increment=1000, textvariable=self.max_iters_var) spin.grid(row=row, column=1, sticky="w", padx=2, pady=2) # row += 1 self.max_depth_var = Tkinter.IntVar() self.max_depth_var.set(1000) Tkinter.Label(frame, text=_("Max depth:"), anchor="w").grid(row=row, column=0, sticky="ew", padx=2, pady=2) spin = Tkinter.Spinbox(frame, bg="white", from_=100, to=10000, increment=100, textvariable=self.max_depth_var) spin.grid(row=row, column=1, sticky="w", padx=2, pady=2) # row += 1 self.progress_var = Tkinter.BooleanVar() self.progress_var.set(True) w = Tkinter.Checkbutton(frame, variable=self.progress_var, text=_("Show progress"), anchor="w") w.grid(row=row, column=0, columnspan=2, sticky="ew", padx=2, pady=2) # label_frame = Tkinter.LabelFrame(top_frame, text=_("Progress")) label_frame.pack(expand=True, fill="both", padx=6, pady=2) # label_frame.columnconfigure(0, weight=1) label_frame.columnconfigure(1, weight=1) # frow = 0 Tkinter.Label(label_frame, text=_("Iteration:"), anchor="w").grid( row=frow, column=0, sticky="ew", padx=4, pady=2 ) lb = Tkinter.Label(label_frame, anchor="w") lb.grid(row=frow, column=1, sticky="ew", padx=4, pady=2) self.iter_label = lb frow += 1 Tkinter.Label(label_frame, text=_("Depth:"), anchor="w").grid(row=frow, column=0, sticky="ew", padx=4, pady=2) lb = Tkinter.Label(label_frame, anchor="w") lb.grid(row=frow, column=1, sticky="ew", padx=4, pady=2) self.depth_label = lb frow += 1 Tkinter.Label(label_frame, text=_("Stored-States:"), anchor="w").grid( row=frow, column=0, sticky="ew", padx=4, pady=2 ) lb = Tkinter.Label(label_frame, anchor="w") lb.grid(row=frow, column=1, sticky="ew", padx=4, pady=2) self.states_label = lb # lb = Tkinter.Label(top_frame, anchor="w") lb.pack(expand=True, fill="x", padx=6, pady=4) self.result_label = lb # focus = self.createButtons(bottom_frame, kw) self.start_button = self.buttons[0] self.play_button = self.buttons[1] self._reset() self.connectGame(self.app.game) self.mainloop(focus, kw.timeout, transient=False)
def __init__(self, parent, title, app, player, gameid, **kw): font_name = app.getFont('default') font = tkFont.Font(parent, font_name) tkfont = tkFont.Font(parent, font) font_metrics = font.metrics() measure = tkfont.measure self.text_height = font_metrics['linespace'] self.text_width = measure('XX.XX.XX') self.items = [] self.formatter = ProgressionFormatter(app, player, gameid) kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) frame.columnconfigure(0, weight=1) # constants self.canvas_width, self.canvas_height = 600, 250 if parent.winfo_screenwidth() < 800 or \ parent.winfo_screenheight() < 600: self.canvas_width, self.canvas_height = 400, 200 self.xmargin, self.ymargin = 10, 10 self.graph_dx, self.graph_dy = 10, 10 self.played_color = '#ff7ee9' self.won_color = '#00dc28' self.percent_color = 'blue' # create canvas self.canvas = canvas = Tkinter.Canvas(frame, bg='#dfe8ff', highlightthickness=1, highlightbackground='black', width=self.canvas_width, height=self.canvas_height) canvas.pack(side='left', padx=5) # dir = os.path.join('images', 'stats') try: fn = app.dataloader.findImage('progression', dir) self.bg_image = loadImage(fn) canvas.create_image(0, 0, image=self.bg_image, anchor='nw') except: pass # tw = max(measure(_('Games/day')), measure(_('Games/week')), measure(_('% won'))) self.left_margin = self.xmargin+tw/2 self.right_margin = self.xmargin+tw/2 self.top_margin = 15+self.text_height self.bottom_margin = 15+self.text_height+10+self.text_height # x0, y0 = self.left_margin, self.canvas_height-self.bottom_margin x1, y1 = self.canvas_width-self.right_margin, self.top_margin canvas.create_rectangle(x0, y0, x1, y1, fill='white') # horizontal axis canvas.create_line(x0, y0, x1, y0, width=3) # left vertical axis canvas.create_line(x0, y0, x0, y1, width=3) t = _('Games/day') self.games_text_id = canvas.create_text(x0-4, y1-4, anchor='s', text=t) # right vertical axis canvas.create_line(x1, y0, x1, y1, width=3) canvas.create_text(x1+4, y1-4, anchor='s', text=_('% won')) # caption d = self.text_height x, y = self.xmargin, self.canvas_height-self.ymargin canvas.create_rectangle(x, y, x+d, y-d, outline='black', fill=self.played_color) x += d+5 canvas.create_text(x, y, anchor='sw', text=_('Played')) x += measure(_('Played'))+20 canvas.create_rectangle(x, y, x+d, y-d, outline='black', fill=self.won_color) x += d+5 canvas.create_text(x, y, anchor='sw', text=_('Won')) x += measure(_('Won'))+20 canvas.create_rectangle(x, y, x+d, y-d, outline='black', fill=self.percent_color) x += d+5 canvas.create_text(x, y, anchor='sw', text=_('% won')) # right frame right_frame = Tkinter.Frame(frame) right_frame.pack(side='left', fill='x', padx=5) self.all_games_variable = var = Tkinter.StringVar() var.set('all') b = Tkinter.Radiobutton(right_frame, text=_('All games'), variable=var, value='all', command=self.updateGraph, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) b = Tkinter.Radiobutton(right_frame, text=_('Current game'), variable=var, value='current', command=self.updateGraph, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) label_frame = Tkinter.LabelFrame(right_frame, text=_('Statistics for')) label_frame.pack(side='top', fill='x', pady=10) self.variable = var = Tkinter.StringVar() var.set('week') for v, t in ( ('week', _('Last 7 days')), ('month', _('Last month')), ('year', _('Last year')), ('all', _('All time')), ): b = Tkinter.Radiobutton(label_frame, text=t, variable=var, value=v, command=self.updateGraph, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) label_frame = Tkinter.LabelFrame(right_frame, text=_('Show graphs')) label_frame.pack(side='top', fill='x') self.played_graph_var = Tkinter.BooleanVar() self.played_graph_var.set(True) b = Tkinter.Checkbutton(label_frame, text=_('Played'), command=self.updateGraph, variable=self.played_graph_var, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) self.won_graph_var = Tkinter.BooleanVar() self.won_graph_var.set(True) b = Tkinter.Checkbutton(label_frame, text=_('Won'), command=self.updateGraph, variable=self.won_graph_var, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) self.percent_graph_var = Tkinter.BooleanVar() self.percent_graph_var.set(True) b = Tkinter.Checkbutton(label_frame, text=_('% won'), command=self.updateGraph, variable=self.percent_graph_var, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) self.updateGraph() focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=10, pady=10) frame.columnconfigure(0, weight=1) notebook = TabPageSet(frame) notebook.pack(expand=True, fill='both') for w in WizardWidgets: if isinstance(w, basestring): notebook.AddPage(w) frame = Tkinter.Frame(notebook.pages[w]['page']) frame.pack(expand=True, fill='both', padx=2, pady=4) frame.columnconfigure(1, weight=1) row = 0 continue Tkinter.Label(frame, text=w.label).grid(row=row, column=0, padx=2) if w.widget == 'preset': if w.variable is None: w.variable = Tkinter.StringVar() values = [_(v) for v in w.values] default = _(w.default) values.remove(default) values.sort() values.insert(0, default) def callback(v, w=w): return self.presetSelected(v, w) om = Tkinter.OptionMenu(frame, w.variable, command=callback, *values) om.grid(row=row, column=1, sticky='ew', padx=2) elif w.widget == 'entry': if w.variable is None: w.variable = Tkinter.StringVar() en = Tkinter.Entry(frame, textvariable=w.variable) en.grid(row=row, column=1, sticky='ew', padx=2) elif w.widget == 'menu': if w.variable is None: w.variable = Tkinter.StringVar() values = [_(v) for v in w.values] om = Tkinter.OptionMenu(frame, w.variable, *values) om.grid(row=row, column=1, sticky='ew', padx=2) elif w.widget == 'spin': if w.variable is None: w.variable = Tkinter.IntVar() from_, to = w.values s = Tkinter.Scale(frame, from_=from_, to=to, resolution=1, orient='horizontal', length=200, variable=w.variable) s.grid(row=row, column=1, sticky='ew', padx=2) elif w.widget == 'check': if w.variable is None: w.variable = Tkinter.BooleanVar() ch = Tkinter.Checkbutton(frame, variable=w.variable, takefocus=False, anchor='w') ch.grid(row=row, column=1, sticky='ew', padx=2, pady=2) if w.current_value is None: v = w.default else: v = w.current_value if w.widget in ('menu', 'preset', 'entry'): v = _(v) w.variable.set(v) row += 1 notebook.ChangePage() focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, cardset, images, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(fill="both", expand=True, padx=5, pady=10) # # info_frame = Tkinter.LabelFrame(frame, text=_('About cardset')) info_frame.grid(row=0, column=0, columnspan=2, sticky='ew', padx=0, pady=5, ipadx=5, ipady=5) styles = nationalities = year = None if cardset.si.styles: styles = '\n'.join([CSI.STYLE[i] for i in cardset.si.styles]) if cardset.si.nationalities: nationalities = '\n'.join( [CSI.NATIONALITY[i] for i in cardset.si.nationalities]) if cardset.year: year = str(cardset.year) row = 0 for n, t in ( ##('Version:', str(cardset.version)), (_('Type:'), CSI.TYPE[cardset.type]), (_('Styles:'), styles), (_('Nationality:'), nationalities), (_('Year:'), year), ##(_('Number of cards:'), str(cardset.ncards)), (_('Size:'), '%d x %d' % (cardset.CARDW, cardset.CARDH)), ): if t is not None: l = Tkinter.Label(info_frame, text=n, anchor='w', justify='left') l.grid(row=row, column=0, sticky='nw') l = Tkinter.Label(info_frame, text=t, anchor='w', justify='left') l.grid(row=row, column=1, sticky='nw') row += 1 if images: try: from random import choice im = choice(images) f = os.path.join(cardset.dir, cardset.backname) self.back_image = loadImage(file=f) canvas = Tkinter.Canvas(info_frame, width=2 * im.width() + 30, height=im.height() + 2) canvas.create_image(10, 1, image=im, anchor='nw') canvas.create_image(im.width() + 20, 1, image=self.back_image, anchor='nw') canvas.grid(row=0, column=2, rowspan=row + 1, sticky='ne') info_frame.columnconfigure(2, weight=1) info_frame.rowconfigure(row, weight=1) except: pass ##bg = top_frame["bg"] bg = 'white' text_w = Tkinter.Text(frame, bd=1, relief="sunken", wrap="word", padx=4, width=64, height=16, bg=bg) text_w.grid(row=1, column=0, sticky='nsew') sb = Tkinter.Scrollbar(frame) sb.grid(row=1, column=1, sticky='ns') text_w.configure(yscrollcommand=sb.set) sb.configure(command=text_w.yview) frame.columnconfigure(0, weight=1) frame.rowconfigure(1, weight=1) # text = '' f = os.path.join(cardset.dir, "COPYRIGHT") try: text = open(f).read() except: pass if text: text_w.config(state="normal") text_w.insert("insert", text) text_w.config(state="disabled") # focus = self.createButtons(bottom_frame, kw) #focus = text_w self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, init_font, **kw): ##print init_font kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) self.font_family = 'Helvetica' self.font_size = 12 self.font_weight = 'normal' self.font_slant = 'roman' if init_font is not None: assert 2 <= len(init_font) <= 4 assert isinstance(init_font[1], int) self.font_family, self.font_size = init_font[:2] if len(init_font) > 2: if init_font[2] in ['bold', 'normal']: self.font_weight = init_font[2] elif init_font[2] in ['italic', 'roman']: self.font_slant = init_font[2] else: raise ValueError('invalid font style: '+init_font[2]) if len(init_font) > 3: if init_font[3] in ['bold', 'normal']: self.font_weight = init_font[3] elif init_font[2] in ['italic', 'roman']: self.font_slant = init_font[3] else: raise ValueError('invalid font style: '+init_font[3]) #self.family_var = Tkinter.StringVar() self.weight_var = Tkinter.BooleanVar() self.slant_var = Tkinter.BooleanVar() self.size_var = Tkinter.IntVar() frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) frame.columnconfigure(0, weight=1) #frame.rowconfigure(1, weight=1) self.entry = Tkinter.Entry(frame, bg='white') self.entry.grid(row=0, column=0, columnspan=2, sticky='news') self.entry.insert('end', _('abcdefghABCDEFGH')) self.list_box = Tkinter.Listbox(frame, width=36, exportselection=False) sb = Tkinter.Scrollbar(frame) self.list_box.configure(yscrollcommand=sb.set) sb.configure(command=self.list_box.yview) self.list_box.grid(row=1, column=0, sticky='news') # rowspan=4 sb.grid(row=1, column=1, sticky='ns') bind(self.list_box, '<<ListboxSelect>>', self.fontupdate) ##self.list_box.focus() cb1 = Tkinter.Checkbutton(frame, anchor='w', text=_('Bold'), command=self.fontupdate, variable=self.weight_var) cb1.grid(row=2, column=0, columnspan=2, sticky='we') cb2 = Tkinter.Checkbutton(frame, anchor='w', text=_('Italic'), command=self.fontupdate, variable=self.slant_var) cb2.grid(row=3, column=0, columnspan=2, sticky='we') sc = Tkinter.Scale(frame, from_=6, to=40, resolution=1, #label='Size', orient='horizontal', command=self.fontupdate, variable=self.size_var) sc.grid(row=4, column=0, columnspan=2, sticky='news') # self.size_var.set(self.font_size) self.weight_var.set(self.font_weight == 'bold') self.slant_var.set(self.font_slant == 'italic') font_families = list(tkFont.families()) font_families.sort() selected = -1 n = 0 self.list_box.insert('end', *font_families) for font in font_families: if font.lower() == self.font_family.lower(): selected = n break n += 1 if selected >= 0: self.list_box.select_set(selected) self.list_box.see(selected) # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout) self.font = (self.font_family, self.font_size, self.font_slant, self.font_weight)
def __init__(self, parent, title, app, player, gameid, **kw): font_name = app.getFont('default') font = tkFont.Font(parent, font_name) tkfont = tkFont.Font(parent, font) font_metrics = font.metrics() measure = tkfont.measure self.text_height = font_metrics['linespace'] self.text_width = measure('XX.XX.XX') self.items = [] self.formatter = ProgressionFormatter(app, player, gameid) kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=10) frame.columnconfigure(0, weight=1) # constants self.canvas_width, self.canvas_height = 600, 250 if parent.winfo_screenwidth() < 800 or \ parent.winfo_screenheight() < 600: self.canvas_width, self.canvas_height = 400, 200 self.xmargin, self.ymargin = 10, 10 self.graph_dx, self.graph_dy = 10, 10 self.played_color = '#ff7ee9' self.won_color = '#00dc28' self.percent_color = 'blue' # create canvas self.canvas = canvas = Tkinter.Canvas(frame, bg='#dfe8ff', highlightthickness=1, highlightbackground='black', width=self.canvas_width, height=self.canvas_height) canvas.pack(side='left', padx=5) # dir = os.path.join('images', 'stats') try: fn = app.dataloader.findImage('progression', dir) self.bg_image = loadImage(fn) canvas.create_image(0, 0, image=self.bg_image, anchor='nw') except: pass # tw = max(measure(_('Games/day')), measure(_('Games/week')), measure(_('% won'))) self.left_margin = self.xmargin+tw/2 self.right_margin = self.xmargin+tw/2 self.top_margin = 15+self.text_height self.bottom_margin = 15+self.text_height+10+self.text_height # x0, y0 = self.left_margin, self.canvas_height-self.bottom_margin x1, y1 = self.canvas_width-self.right_margin, self.top_margin canvas.create_rectangle(x0, y0, x1, y1, fill='white') # horizontal axis canvas.create_line(x0, y0, x1, y0, width=3) # left vertical axis canvas.create_line(x0, y0, x0, y1, width=3) t = _('Games/day') self.games_text_id = canvas.create_text(x0-4, y1-4, anchor='s', text=t) # right vertical axis canvas.create_line(x1, y0, x1, y1, width=3) canvas.create_text(x1+4, y1-4, anchor='s', text=_('% won')) # caption d = self.text_height x, y = self.xmargin, self.canvas_height-self.ymargin id = canvas.create_rectangle(x, y, x+d, y-d, outline='black', fill=self.played_color) x += d+5 canvas.create_text(x, y, anchor='sw', text=_('Played')) x += measure(_('Played'))+20 id = canvas.create_rectangle(x, y, x+d, y-d, outline='black', fill=self.won_color) x += d+5 canvas.create_text(x, y, anchor='sw', text=_('Won')) x += measure(_('Won'))+20 id = canvas.create_rectangle(x, y, x+d, y-d, outline='black', fill=self.percent_color) x += d+5 canvas.create_text(x, y, anchor='sw', text=_('% won')) # right frame right_frame = Tkinter.Frame(frame) right_frame.pack(side='left', fill='x', padx=5) self.all_games_variable = var = Tkinter.StringVar() var.set('all') b = Tkinter.Radiobutton(right_frame, text=_('All games'), variable=var, value='all', command=self.updateGraph, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) b = Tkinter.Radiobutton(right_frame, text=_('Current game'), variable=var, value='current', command=self.updateGraph, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) label_frame = Tkinter.LabelFrame(right_frame, text=_('Statistics for')) label_frame.pack(side='top', fill='x', pady=10) self.variable = var = Tkinter.StringVar() var.set('week') for v, t in ( ('week', _('Last 7 days')), ('month', _('Last month')), ('year', _('Last year')), ('all', _('All time')), ): b = Tkinter.Radiobutton(label_frame, text=t, variable=var, value=v, command=self.updateGraph, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) label_frame = Tkinter.LabelFrame(right_frame, text=_('Show graphs')) label_frame.pack(side='top', fill='x') self.played_graph_var = Tkinter.BooleanVar() self.played_graph_var.set(True) b = Tkinter.Checkbutton(label_frame, text=_('Played'), command=self.updateGraph, variable=self.played_graph_var, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) self.won_graph_var = Tkinter.BooleanVar() self.won_graph_var.set(True) b = Tkinter.Checkbutton(label_frame, text=_('Won'), command=self.updateGraph, variable=self.won_graph_var, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) self.percent_graph_var = Tkinter.BooleanVar() self.percent_graph_var.set(True) b = Tkinter.Checkbutton(label_frame, text=_('% won'), command=self.updateGraph, variable=self.percent_graph_var, justify='left', anchor='w' ) b.pack(fill='x', expand=True, padx=3, pady=1) self.updateGraph() focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, player, gameid, **kw): self.app = app kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=10, pady=10) frame.columnconfigure(0, weight=1) if (player in app.stats.games_stats and gameid in app.stats.games_stats[player] and app.stats.games_stats[player][gameid].time_result.top): Tkinter.Label(frame, text=_('Minimum')).grid(row=0, column=1) Tkinter.Label(frame, text=_('Maximum')).grid(row=0, column=2) Tkinter.Label(frame, text=_('Average')).grid(row=0, column=3) ##Tkinter.Label(frame, text=_('Total')).grid(row=0, column=4) s = app.stats.games_stats[player][gameid] row = 1 ll = [ (_('Playing time:'), format_time(s.time_result.min), format_time(s.time_result.max), format_time(s.time_result.average), format_time(s.time_result.total), s.time_result.top, ), (_('Moves:'), s.moves_result.min, s.moves_result.max, round(s.moves_result.average, 2), s.moves_result.total, s.moves_result.top, ), (_('Total moves:'), s.total_moves_result.min, s.total_moves_result.max, round(s.total_moves_result.average, 2), s.total_moves_result.total, s.total_moves_result.top, ), ] ## if s.score_result.min: ## ll.append(('Score:', ## s.score_result.min, ## s.score_result.max, ## round(s.score_result.average, 2), ## s.score_result.top, ## )) ## if s.score_casino_result.min: ## ll.append(('Casino Score:', ## s.score_casino_result.min, ## s.score_casino_result.max, ## round(s.score_casino_result.average, 2), )) for l, min, max, avr, tot, top in ll: Tkinter.Label(frame, text=l).grid(row=row, column=0) Tkinter.Label(frame, text=str(min)).grid(row=row, column=1) Tkinter.Label(frame, text=str(max)).grid(row=row, column=2) Tkinter.Label(frame, text=str(avr)).grid(row=row, column=3) ##Tkinter.Label(frame, text=str(tot)).grid(row=row, column=4) b = Tkinter.Button(frame, text=TOP_TITLE+' ...', width=10, command=lambda top=top: self.showTop(top)) b.grid(row=row, column=5) row += 1 else: Tkinter.Label(frame, text=_('No TOP for this game')).pack() focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): self.app = app kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # self.saved_opt = app.opt.copy() self.sound = Tkinter.BooleanVar() self.sound.set(app.opt.sound != 0) self.sound_mode = Tkinter.BooleanVar() self.sound_mode.set(app.opt.sound_mode != 0) self.sample_volume = Tkinter.IntVar() self.sample_volume.set(app.opt.sound_sample_volume) self.music_volume = Tkinter.IntVar() self.music_volume.set(app.opt.sound_music_volume) self.samples = [ ('areyousure', _('Are You Sure'), Tkinter.BooleanVar()), ('deal', _('Deal'), Tkinter.BooleanVar()), ('dealwaste', _('Deal waste'), Tkinter.BooleanVar()), ('turnwaste', _('Turn waste'), Tkinter.BooleanVar()), ('startdrag', _('Start drag'), Tkinter.BooleanVar()), ('drop', _('Drop'), Tkinter.BooleanVar()), ('droppair', _('Drop pair'), Tkinter.BooleanVar()), ('autodrop', _('Auto drop'), Tkinter.BooleanVar()), ('flip', _('Flip'), Tkinter.BooleanVar()), ('autoflip', _('Auto flip'), Tkinter.BooleanVar()), ('move', _('Move'), Tkinter.BooleanVar()), ('nomove', _('No move'), Tkinter.BooleanVar()), ('undo', _('Undo'), Tkinter.BooleanVar()), ('redo', _('Redo'), Tkinter.BooleanVar()), ('autopilotlost', _('Autopilot lost'), Tkinter.BooleanVar()), ('autopilotwon', _('Autopilot won'), Tkinter.BooleanVar()), ('gamefinished', _('Game finished'), Tkinter.BooleanVar()), ('gamelost', _('Game lost'), Tkinter.BooleanVar()), ('gamewon', _('Game won'), Tkinter.BooleanVar()), ('gameperfect', _('Perfect game'), Tkinter.BooleanVar()), ] # frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=5, pady=5) frame.columnconfigure(1, weight=1) # row = 0 w = Tkinter.Checkbutton(frame, variable=self.sound, text=_("Sound enabled"), anchor='w') w.grid(row=row, column=0, columnspan=2, sticky='ew') # if os.name == "nt" and pysolsoundserver: row += 1 w = Tkinter.Checkbutton(frame, variable=self.sound_mode, text=_("Use DirectX for sound playing"), command=self.mOptSoundDirectX, anchor='w') w.grid(row=row, column=0, columnspan=2, sticky='ew') # if app.audio.CAN_PLAY_MUSIC: # and app.startup_opt.sound_mode > 0: row += 1 w = Tkinter.Label(frame, text=_('Sample volume:')) w.grid(row=row, column=0, sticky='w', padx=5) w = Tkinter.Scale(frame, from_=0, to=128, resolution=1, orient='horizontal', takefocus=0, length="3i", #label=_('Sample volume'), variable=self.sample_volume) w.grid(row=row, column=1, sticky='ew', padx=5) row += 1 w = Tkinter.Label(frame, text=_('Music volume:')) w.grid(row=row, column=0, sticky='w', padx=5) w = Tkinter.Scale(frame, from_=0, to=128, resolution=1, orient='horizontal', takefocus=0, length="3i", #label=_('Music volume'), variable=self.music_volume) w.grid(row=row, column=1, sticky='ew', padx=5) else: # remove "Apply" button kw.strings[1] = None # frame = Tkinter.LabelFrame(top_frame, text=_('Enable samles'), padx=5, pady=5) frame.pack(expand=True, fill='both', padx=5, pady=5) frame.columnconfigure(0, weight=1) frame.columnconfigure(1, weight=1) # row = 0 col = 0 for n, t, v in self.samples: v.set(app.opt.sound_samples[n]) w = Tkinter.Checkbutton(frame, text=t, anchor='w', variable=v) w.grid(row=row, column=col, sticky='ew') if col == 1: col = 0 row += 1 else: col = 1 # top_frame.columnconfigure(1, weight=1) # focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, gameid, bookmark=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, **kw) # self.app = app self.gameid = gameid self.bookmark = bookmark self.random = None # if self.game_store is None: self.createGameStore() # top_box, bottom_box = self.createHBox() # paned hpaned = gtk.HPaned() self.hpaned = hpaned hpaned.show() top_box.pack_start(hpaned, expand=True, fill=True) # left self.treeview = PysolTreeView(self, self.game_store) hpaned.pack1(self.treeview.scrolledwindow, True, True) # right table = gtk.Table(2, 2, False) table.show() hpaned.pack2(table, True, True) # frames frame = gtk.Frame(label=_('About game')) frame.show() table.attach(frame, 0, 1, 0, 1, gtk.FILL, gtk.FILL, 0, 0) frame.set_border_width(4) info_frame = gtk.Table(2, 7, False) info_frame.show() frame.add(info_frame) info_frame.set_border_width(4) # frame = gtk.Frame(label=_('Statistics')) frame.show() table.attach(frame, 1, 2, 0, 1, gtk.FILL, gtk.FILL, 0, 0) frame.set_border_width(4) stats_frame = gtk.Table(2, 6, False) stats_frame.show() frame.add(stats_frame) stats_frame.set_border_width(4) # info self.info_labels = {} for n, t, f, row in ( ('name', _('Name:'), info_frame, 0), ('altnames', _('Alternate names:'), info_frame, 1), ('category', _('Category:'), info_frame, 2), ('type', _('Type:'), info_frame, 3), ('skill_level', _('Skill level:'), info_frame, 4), ('decks', _('Decks:'), info_frame, 5), ('redeals', _('Redeals:'), info_frame, 6), # ('played', _('Played:'), stats_frame, 0), ('won', _('Won:'), stats_frame, 1), ('lost', _('Lost:'), stats_frame, 2), ('time', _('Playing time:'), stats_frame, 3), ('moves', _('Moves:'), stats_frame, 4), ('percent', _('% won:'), stats_frame, 5), ): title_label = gtk.Label() title_label.show() title_label.set_text(t) title_label.set_alignment(0., 0.) title_label.set_property('xpad', 2) title_label.set_property('ypad', 2) f.attach(title_label, 0, 1, row, row+1, gtk.FILL, 0, 0, 0) text_label = gtk.Label() text_label.show() text_label.set_alignment(0., 0.) text_label.set_property('xpad', 2) text_label.set_property('ypad', 2) f.attach(text_label, 1, 2, row, row+1, gtk.FILL, 0, 0, 0) self.info_labels[n] = (title_label, text_label) # canvas self.preview = MfxCanvas(self) self.preview.show() table.attach( self.preview, 0, 2, 1, 2, gtk.EXPAND | gtk.FILL | gtk.SHRINK, gtk.EXPAND | gtk.FILL | gtk.SHRINK, 0, 0) self.preview.set_border_width(4) self.preview.setTile(app, app.tabletile_index, force=True) # set the scale factor self.preview.preview = 2 # create a preview of the current game self.preview_key = -1 self.preview_game = None self.preview_app = None # ~ self.updatePreview(gameid, animations=0) # ~ SelectGameTreeWithPreview.html_viewer = None self.connect('unrealize', self._unrealizeEvent) self.createButtons(bottom_box, kw) self._restoreSettings() self.show_all() gtk.main()
def __init__(self, parent, title, app, gameid, bookmark=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, **kw) # self.app = app self.gameid = gameid self.bookmark = bookmark self.random = None # if self.game_store is None: self.createGameStore() # top_box, bottom_box = self.createHBox() # paned hpaned = gtk.HPaned() self.hpaned = hpaned hpaned.show() top_box.pack_start(hpaned, expand=True, fill=True) # left self.treeview = PysolTreeView(self, self.game_store) hpaned.pack1(self.treeview.scrolledwindow, True, True) # right table = gtk.Table(2, 2, False) table.show() hpaned.pack2(table, True, True) # frames frame = gtk.Frame(label=_('About game')) frame.show() table.attach(frame, 0, 1, 0, 1, gtk.FILL, gtk.FILL, 0, 0) frame.set_border_width(4) info_frame = gtk.Table(2, 7, False) info_frame.show() frame.add(info_frame) info_frame.set_border_width(4) # frame = gtk.Frame(label=_('Statistics')) frame.show() table.attach(frame, 1, 2, 0, 1, gtk.FILL, gtk.FILL, 0, 0) frame.set_border_width(4) stats_frame = gtk.Table(2, 6, False) stats_frame.show() frame.add(stats_frame) stats_frame.set_border_width(4) # info self.info_labels = {} i = 0 for n, t, f, row in ( ('name', _('Name:'), info_frame, 0), ('altnames', _('Alternate names:'), info_frame, 1), ('category', _('Category:'), info_frame, 2), ('type', _('Type:'), info_frame, 3), ('skill_level', _('Skill level:'), info_frame, 4), ('decks', _('Decks:'), info_frame, 5), ('redeals', _('Redeals:'), info_frame, 6), # ('played', _('Played:'), stats_frame, 0), ('won', _('Won:'), stats_frame, 1), ('lost', _('Lost:'), stats_frame, 2), ('time', _('Playing time:'), stats_frame, 3), ('moves', _('Moves:'), stats_frame, 4), ('percent', _('% won:'), stats_frame, 5), ): title_label = gtk.Label() title_label.show() title_label.set_text(t) title_label.set_alignment(0., 0.) title_label.set_property('xpad', 2) title_label.set_property('ypad', 2) f.attach(title_label, 0, 1, row, row+1, gtk.FILL, 0, 0, 0) text_label = gtk.Label() text_label.show() text_label.set_alignment(0., 0.) text_label.set_property('xpad', 2) text_label.set_property('ypad', 2) f.attach(text_label, 1, 2, row, row+1, gtk.FILL, 0, 0, 0) self.info_labels[n] = (title_label, text_label) # canvas self.preview = MfxCanvas(self) self.preview.show() table.attach(self.preview, 0, 2, 1, 2, gtk.EXPAND|gtk.FILL|gtk.SHRINK, gtk.EXPAND|gtk.FILL|gtk.SHRINK, 0, 0) self.preview.set_border_width(4) self.preview.setTile(app, app.tabletile_index, force=True) # set the scale factor self.preview.preview = 2 # create a preview of the current game self.preview_key = -1 self.preview_game = None self.preview_app = None ##~ self.updatePreview(gameid, animations=0) ##~ SelectGameTreeWithPreview.html_viewer = None self.connect('unrealize', self._unrealizeEvent) self.createButtons(bottom_box, kw) self._restoreSettings() self.show_all() gtk.main()
def __init__(self, parent, title, app, manager, key=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # if key is None: key = manager.getSelected() self.manager = manager self.key = key self.app = app self.cardset_values = None # padx, pady = kw.padx, kw.pady padx, pady = 5, 5 if self.TreeDataHolder_Class.data is None: self.TreeDataHolder_Class.data = self.TreeData_Class(manager, key) # self.top.wm_minsize(400, 200) if self.top.winfo_screenwidth() >= 800: w1, w2 = 240, 400 else: w1, w2 = 200, 300 paned_window = ttk.PanedWindow(top_frame, orient='horizontal') paned_window.pack(expand=True, fill='both') left_frame = ttk.Frame(paned_window) right_frame = ttk.Frame(paned_window) paned_window.add(left_frame) paned_window.add(right_frame) font = app.getFont("default") self.tree = self.Tree_Class(self, left_frame, key=key, default=kw.default, font=font, width=w1) self.tree.frame.grid(row=0, column=0, sticky='nsew', padx=padx, pady=pady) if USE_PIL: # var = Tkinter.DoubleVar() var.set(app.opt.scale_x) self.scale_x = PysolScale(left_frame, label=_('Scale X:'), from_=0.5, to=4.0, resolution=0.1, orient='horizontal', variable=var, value=app.opt.scale_x, command=self._updateScale) self.scale_x.grid(row=1, column=0, sticky='ew', padx=padx, pady=pady) # var = Tkinter.DoubleVar() var.set(app.opt.scale_y) self.scale_y = PysolScale(left_frame, label=_('Scale Y:'), from_=0.5, to=4.0, resolution=0.1, orient='horizontal', variable=var, value=app.opt.scale_y, command=self._updateScale) self.scale_y.grid(row=2, column=0, sticky='ew', padx=padx, pady=pady) # self.auto_scale = Tkinter.BooleanVar() self.auto_scale.set(app.opt.auto_scale) check = ttk.Checkbutton(left_frame, text=_('Auto scaling'), variable=self.auto_scale, takefocus=False, command=self._updateAutoScale) check.grid(row=3, column=0, columnspan=2, sticky='ew', padx=padx, pady=pady) # self.preserve_aspect = Tkinter.BooleanVar() self.preserve_aspect.set(app.opt.preserve_aspect_ratio) self.aspect_check = ttk.Checkbutton( left_frame, text=_('Preserve aspect ratio'), variable=self.preserve_aspect, takefocus=False, # command=self._updateScale ) self.aspect_check.grid(row=4, column=0, sticky='ew', padx=padx, pady=pady) self._updateAutoScale() # left_frame.rowconfigure(0, weight=1) left_frame.columnconfigure(0, weight=1) # self.preview = MfxScrolledCanvas(right_frame, width=w2) self.preview.setTile(app, app.tabletile_index, force=True) self.preview.pack(fill='both', expand=True, padx=padx, pady=pady) self.preview.canvas.preview = 1 # create a preview of the current state self.preview_key = -1 self.preview_images = [] self.scale_images = [] self.updatePreview(key) # focus = self.createButtons(bottom_frame, kw) focus = self.tree.frame self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, manager, key=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # if key is None: key = manager.getSelected() self.manager = manager self.key = key self.app = app #padx, pady = kw.padx, kw.pady padx, pady = 5, 5 if self.TreeDataHolder_Class.data is None: self.TreeDataHolder_Class.data = self.TreeData_Class(manager, key) # self.top.wm_minsize(400, 200) if self.top.winfo_screenwidth() >= 800: w1, w2 = 240, 400 else: w1, w2 = 200, 300 paned_window = Tkinter.PanedWindow(top_frame) paned_window.pack(expand=True, fill='both') left_frame = Tkinter.Frame(paned_window) right_frame = Tkinter.Frame(paned_window) paned_window.add(left_frame) paned_window.add(right_frame) font = app.getFont("default") self.tree = self.Tree_Class(self, left_frame, key=key, default=kw.default, font=font, width=w1) self.tree.frame.grid(row=0, column=0, sticky='nsew', padx=padx, pady=pady) if USE_PIL: # var = Tkinter.DoubleVar() var.set(app.opt.scale_x) self.scale_x = Tkinter.Scale( left_frame, label=_('Scale X:'), from_=0.5, to=4.0, resolution=0.1, orient='horizontal', variable=var, #value=app.opt.scale_x, command=self._updateScale) self.scale_x.grid(row=1, column=0, sticky='ew', padx=padx, pady=pady) # var = Tkinter.DoubleVar() var.set(app.opt.scale_y) self.scale_y = Tkinter.Scale( left_frame, label=_('Scale Y:'), from_=0.5, to=4.0, resolution=0.1, orient='horizontal', variable=var, #value=app.opt.scale_y, command=self._updateScale) self.scale_y.grid(row=2, column=0, sticky='ew', padx=padx, pady=pady) # self.auto_scale = Tkinter.BooleanVar() self.auto_scale.set(app.opt.auto_scale) check = Tkinter.Checkbutton( left_frame, text=_('Auto scaling'), variable=self.auto_scale, takefocus=False, command=self._updateAutoScale ) check.grid(row=3, column=0, columnspan=2, sticky='w', padx=padx, pady=pady) # self.preserve_aspect = Tkinter.BooleanVar() self.preserve_aspect.set(app.opt.preserve_aspect_ratio) self.aspect_check = Tkinter.Checkbutton( left_frame, text=_('Preserve aspect ratio'), variable=self.preserve_aspect, takefocus=False, #command=self._updateScale ) self.aspect_check.grid(row=4, column=0, sticky='w', padx=padx, pady=pady) self._updateAutoScale() # left_frame.rowconfigure(0, weight=1) left_frame.columnconfigure(0, weight=1) # self.preview = MfxScrolledCanvas(right_frame, width=w2) self.preview.setTile(app, app.tabletile_index, force=True) self.preview.pack(fill='both', expand=True, padx=padx, pady=pady) self.preview.canvas.preview = 1 # create a preview of the current state self.preview_key = -1 self.preview_images = [] self.scale_images = [] self.updatePreview(key) # focus = self.createButtons(bottom_frame, kw) focus = self.tree.frame self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = ttk.Frame(top_frame) frame.pack(expand=True, fill="both", padx=10, pady=10) frame.columnconfigure(0, weight=1) notebook = ttk.Notebook(frame) notebook.pack(expand=True, fill="both") for w in WizardWidgets: if isinstance(w, basestring): frame = ttk.Frame(notebook) notebook.add(frame, text=w, sticky="nsew", padding=5) frame.columnconfigure(1, weight=1) row = 0 continue ttk.Label(frame, text=w.label).grid(row=row, column=0) if w.widget == "preset": if w.variable is None: w.variable = Tkinter.StringVar() values = [_(v) for v in w.values] default = _(w.default) values.remove(default) values.sort() values.insert(0, default) callback = lambda e, w=w: self.presetSelected(e, w) cb = PysolCombo( frame, values=tuple(values), textvariable=w.variable, exportselection=False, selectcommand=callback, state="readonly", width=32, ) cb.grid(row=row, column=1, sticky="ew", padx=2, pady=2) elif w.widget == "entry": if w.variable is None: w.variable = Tkinter.StringVar() en = ttk.Entry(frame, textvariable=w.variable) en.grid(row=row, column=1, sticky="ew", padx=2, pady=2) elif w.widget == "menu": if w.variable is None: w.variable = Tkinter.StringVar() values = [_(v) for v in w.values] cb = PysolCombo( frame, values=tuple(values), textvariable=w.variable, exportselection=False, state="readonly", width=32, ) cb.grid(row=row, column=1, sticky="ew", padx=2, pady=2) elif w.widget == "spin": if w.variable is None: w.variable = Tkinter.IntVar() else: # delete all trace callbacks for mod, cbname in w.variable.trace_vinfo(): w.variable.trace_vdelete(mod, cbname) from_, to = w.values ##s = Spinbox(frame, textvariable=w.variable, from_=from_, to=to) s = PysolScale(frame, from_=from_, to=to, resolution=1, orient="horizontal", variable=w.variable) s.grid(row=row, column=1, sticky="ew", padx=2, pady=2) elif w.widget == "check": if w.variable is None: w.variable = Tkinter.BooleanVar() ch = ttk.Checkbutton(frame, variable=w.variable, takefocus=False) ch.grid(row=row, column=1, sticky="ew", padx=2, pady=2) if w.current_value is None: v = w.default else: v = w.current_value if w.widget in ("menu", "preset"): v = _(v) w.variable.set(v) row += 1 focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, cardset, images, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = ttk.Frame(top_frame) frame.pack(fill="both", expand=True, padx=5, pady=10) # # row = 0 info_frame = ttk.LabelFrame(frame, text=_('About cardset')) info_frame.grid(row=row, column=0, columnspan=2, sticky='ew', padx=0, pady=5, ipadx=5, ipady=5) row += 1 styles = nationalities = year = None if cardset.si.styles: styles = '\n'.join([CSI.STYLE[i] for i in cardset.si.styles]) if cardset.si.nationalities: nationalities = '\n'.join( [CSI.NATIONALITY[i] for i in cardset.si.nationalities]) if cardset.year: year = str(cardset.year) frow = 0 for n, t in ( # ('Version:', str(cardset.version)), (_('Type:'), CSI.TYPE[cardset.type]), (_('Styles:'), styles), (_('Nationality:'), nationalities), (_('Year:'), year), # (_('Number of cards:'), str(cardset.ncards)), (_('Size:'), '%d x %d' % (cardset.CARDW, cardset.CARDH)), ): if t is not None: l = ttk.Label(info_frame, text=n, anchor='w', justify='left') l.grid(row=frow, column=0, sticky='nw', padx=4) l = ttk.Label(info_frame, text=t, anchor='w', justify='left') l.grid(row=frow, column=1, sticky='nw', padx=4) frow += 1 if images: try: from random import choice im = choice(images) f = os.path.join(cardset.dir, cardset.backname) self.back_image = loadImage(file=f) # store the image l = ttk.Label(info_frame, image=im, padding=5) l.grid(row=0, column=2, rowspan=frow + 1, sticky='ne') l = ttk.Label(info_frame, image=self.back_image, padding=(0, 5, 5, 5)) # left margin = 0 l.grid(row=0, column=3, rowspan=frow + 1, sticky='ne') info_frame.columnconfigure(2, weight=1) info_frame.rowconfigure(frow, weight=1) except: pass if USE_PIL: padx = 4 pady = 0 settings_frame = ttk.LabelFrame(frame, text=_('Settings')) settings_frame.grid(row=row, column=0, columnspan=2, sticky='ew', padx=0, pady=5, ipadx=5, ipady=5) row += 1 var = Tkinter.IntVar() self.x_offset = PysolScale( settings_frame, label=_('X offset:'), from_=5, to=40, resolution=1, orient='horizontal', variable=var, value=cardset.CARD_XOFFSET, # command=self._updateScale ) self.x_offset.grid(row=0, column=0, sticky='ew', padx=padx, pady=pady) var = Tkinter.IntVar() self.y_offset = PysolScale( settings_frame, label=_('Y offset:'), from_=5, to=40, resolution=1, orient='horizontal', variable=var, value=cardset.CARD_YOFFSET, # command=self._updateScale ) self.y_offset.grid(row=1, column=0, sticky='ew', padx=padx, pady=pady) row += 1 # bg = top_frame["bg"] bg = 'white' text_w = Tkinter.Text(frame, bd=1, relief="sunken", wrap="word", padx=4, width=64, height=16, bg=bg) text_w.grid(row=row, column=0, sticky='nsew') sb = ttk.Scrollbar(frame) sb.grid(row=row, column=1, sticky='ns') text_w.configure(yscrollcommand=sb.set) sb.configure(command=text_w.yview) frame.columnconfigure(0, weight=1) frame.rowconfigure(1, weight=1) # text = '' f = os.path.join(cardset.dir, "COPYRIGHT") try: text = open(f).read() except: pass if text: text_w.config(state="normal") text_w.insert("insert", text) text_w.config(state="disabled") # focus = self.createButtons(bottom_frame, kw) # focus = text_w self.mainloop(focus, kw.timeout)
def __init__(self, parent, app, **kw): self.parent = parent self.app = app title = TITLE+' - FreeCell Solver' kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # self.solving_methods = { 'A*': 'a-star', 'Breadth-First Search': 'bfs', 'Depth-First Search': 'soft-dfs', # default 'A randomized DFS': 'random-dfs', ##'"Soft" DFS': 'soft-dfs', } self.games = {} # key: gamename; value: gameid # frame = ttk.Frame(top_frame) frame.pack(expand=True, fill='both', padx=4, pady=4) frame.columnconfigure(1, weight=1) # row = 0 ttk.Label(frame, text=_('Game:'), anchor='w' ).grid(row=row, column=0, sticky='ew', padx=2, pady=2) games = app.getGamesForSolver() gamenames = [''] for id in games: name = app.getGameTitleName(id) gamenames.append(name) self.games[name] = id gamenames.sort() self.gamenames = gamenames cb = PysolCombo(frame, values=tuple(gamenames), selectcommand=self.gameSelected, state='readonly', width=40) cb.grid(row=row, column=1, sticky='ew', padx=2, pady=2) self.games_var = cb # row += 1 ttk.Label(frame, text=_('Solving method:'), anchor='w' ).grid(row=row, column=0, sticky='ew', padx=2, pady=2) ##sm = self.solving_methods.values() ##sm.sort() sm = ['A*', 'Breadth-First Search', 'Depth-First Search', 'A randomized DFS', ##'"Soft" DFS' ] cb = PysolCombo(frame, values=tuple(sm), state='readonly') cb.grid(row=row, column=1, sticky='ew', padx=2, pady=2) cb.current(sm.index('Depth-First Search')) self.solving_method_var = cb # row += 1 ttk.Label(frame, text=_('Preset:'), anchor='w' ).grid(row=row, column=0, sticky='ew', padx=2, pady=2) presets = [ 'none', 'abra-kadabra', 'cool-jives', 'crooked-nose', 'fools-gold', 'good-intentions', 'hello-world', 'john-galt-line', 'rin-tin-tin', 'yellow-brick-road', ] self.presets = presets cb = PysolCombo(frame, values=tuple(presets), state='readonly') cb.grid(row=row, column=1, sticky='ew', padx=2, pady=2) cb.current(0) self.preset_var = cb # row += 1 self.max_iters_var = Tkinter.IntVar() self.max_iters_var.set(10e4) ttk.Label(frame, text=_('Max iterations:'), anchor='w' ).grid(row=row, column=0, sticky='ew', padx=2, pady=2) spin = Tkinter.Spinbox(frame, bg='white', from_=1000, to=10e6, increment=1000, textvariable=self.max_iters_var) spin.grid(row=row, column=1, sticky='w', padx=2, pady=2) # row += 1 self.max_depth_var = Tkinter.IntVar() self.max_depth_var.set(1000) ttk.Label(frame, text=_('Max depth:'), anchor='w' ).grid(row=row, column=0, sticky='ew', padx=2, pady=2) spin = Tkinter.Spinbox(frame, bg='white', from_=100, to=10000, increment=100, textvariable=self.max_depth_var) spin.grid(row=row, column=1, sticky='w', padx=2, pady=2) # row += 1 self.progress_var = Tkinter.BooleanVar() self.progress_var.set(True) w = ttk.Checkbutton(frame, variable=self.progress_var, text=_('Show progress')) w.grid(row=row, column=0, columnspan=2, sticky='ew', padx=2, pady=2) # label_frame = ttk.LabelFrame(top_frame, text=_('Progress')) label_frame.pack(expand=True, fill='both', padx=6, pady=2) #label_frame.columnconfigure(0, weight=1) label_frame.columnconfigure(1, weight=1) # frow = 0 ttk.Label(label_frame, text=_('Iteration:'), anchor='w' ).grid(row=frow, column=0, sticky='ew', padx=4, pady=2) lb = ttk.Label(label_frame, anchor='w') lb.grid(row=frow, column=1, sticky='ew', padx=4, pady=2) self.iter_label = lb frow += 1 ttk.Label(label_frame, text=_('Depth:'), anchor='w' ).grid(row=frow, column=0, sticky='ew', padx=4, pady=2) lb = ttk.Label(label_frame, anchor='w') lb.grid(row=frow, column=1, sticky='ew', padx=4, pady=2) self.depth_label = lb frow += 1 ttk.Label(label_frame, text=_('Stored-States:'), anchor='w' ).grid(row=frow, column=0, sticky='ew', padx=4, pady=2) lb = ttk.Label(label_frame, anchor='w') lb.grid(row=frow, column=1, sticky='ew', padx=4, pady=2) self.states_label = lb # lb = ttk.Label(top_frame, anchor='w') lb.pack(expand=True, fill='x', padx=6, pady=4) self.result_label = lb # focus = self.createButtons(bottom_frame, kw) self.start_button = self.buttons[0] self.play_button = self.buttons[1] self._reset() self.connectGame(self.app.game) self.mainloop(focus, kw.timeout, transient=False)
def __init__(self, parent, title, app, gameid, bookmark=None, **kw): kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) # self.app = app self.gameid = gameid self.bookmark = bookmark self.random = None if self.TreeDataHolder_Class.data is None: self.TreeDataHolder_Class.data = self.TreeData_Class(app) # self.top.wm_minsize(400, 200) sw = self.top.winfo_screenwidth() if sw >= 1100: w1, w2 = 250, 600 elif sw >= 900: w1, w2 = 250, 500 elif sw >= 800: w1, w2 = 220, 480 else: w1, w2 = 200, 300 ##print sw, w1, w2 w2 = max(200, min(w2, 10 + 12 * (app.subsampled_images.CARDW + 10))) ##print sw, w1, w2 ##padx, pady = kw.padx, kw.pady padx, pady = kw.padx / 2, kw.pady / 2 # PanedWindow paned_window = Tkinter.PanedWindow(top_frame) paned_window.pack(expand=True, fill='both') left_frame = Tkinter.Frame(paned_window) right_frame = Tkinter.Frame(paned_window) paned_window.add(left_frame) paned_window.add(right_frame) # Tree font = app.getFont("default") self.tree = self.Tree_Class(self, left_frame, key=gameid, default=kw.default, font=font, width=w1) self.tree.frame.pack(padx=padx, pady=pady, expand=True, fill='both') # LabelFrame info_frame = Tkinter.LabelFrame(right_frame, text=_('About game')) stats_frame = Tkinter.LabelFrame(right_frame, text=_('Statistics')) info_frame.grid(row=0, column=0, padx=padx, pady=pady, ipadx=padx, ipady=pady, sticky='nws') stats_frame.grid(row=0, column=1, padx=padx, pady=pady, ipadx=padx, ipady=pady, sticky='nws') # Info self.info_labels = {} i = 0 for n, t, f, row in ( ('name', _('Name:'), info_frame, 0), ('altnames', _('Alternate names:'), info_frame, 1), ('category', _('Category:'), info_frame, 2), ('type', _('Type:'), info_frame, 3), ('skill_level', _('Skill level:'), info_frame, 4), ('decks', _('Decks:'), info_frame, 5), ('redeals', _('Redeals:'), info_frame, 6), # ('played', _('Played:'), stats_frame, 0), ('won', _('Won:'), stats_frame, 1), ('lost', _('Lost:'), stats_frame, 2), ('time', _('Playing time:'), stats_frame, 3), ('moves', _('Moves:'), stats_frame, 4), ('percent', _('% won:'), stats_frame, 5), ): title_label = Tkinter.Label(f, text=t, justify='left', anchor='w') title_label.grid(row=row, column=0, sticky='nw') text_label = Tkinter.Label(f, justify='left', anchor='w') text_label.grid(row=row, column=1, sticky='nw') self.info_labels[n] = (title_label, text_label) ##info_frame.columnconfigure(1, weight=1) info_frame.rowconfigure(6, weight=1) stats_frame.rowconfigure(6, weight=1) # Canvas self.preview = MfxScrolledCanvas(right_frame, width=w2) self.preview.setTile(app, app.tabletile_index, force=True) self.preview.grid(row=1, column=0, columnspan=3, padx=padx, pady=pady, sticky='nsew') right_frame.columnconfigure(1, weight=1) right_frame.rowconfigure(1, weight=1) # focus = self.createButtons(bottom_frame, kw) # set the scale factor self.preview.canvas.preview = 2 # create a preview of the current game self.preview_key = -1 self.preview_game = None self.preview_app = None self.updatePreview(gameid, animations=0) ##focus = self.tree.frame self.mainloop(focus, kw.timeout)
def __init__(self, parent, title, app, player, gameid, **kw): self.app = app kw = self.initKw(kw) MfxDialog.__init__(self, parent, title, kw.resizable, kw.default) top_frame, bottom_frame = self.createFrames(kw) self.createBitmaps(top_frame, kw) frame = Tkinter.Frame(top_frame) frame.pack(expand=True, fill='both', padx=10, pady=10) frame.columnconfigure(0, weight=1) if (player in app.stats.games_stats and gameid in app.stats.games_stats[player] and app.stats.games_stats[player][gameid].time_result.top): Tkinter.Label(frame, text=_('Minimum')).grid(row=0, column=1) Tkinter.Label(frame, text=_('Maximum')).grid(row=0, column=2) Tkinter.Label(frame, text=_('Average')).grid(row=0, column=3) # Tkinter.Label(frame, text=_('Total')).grid(row=0, column=4) s = app.stats.games_stats[player][gameid] row = 1 ll = [ (_('Playing time:'), format_time(s.time_result.min), format_time(s.time_result.max), format_time(s.time_result.average), format_time(s.time_result.total), s.time_result.top, ), (_('Moves:'), s.moves_result.min, s.moves_result.max, round(s.moves_result.average, 2), s.moves_result.total, s.moves_result.top, ), (_('Total moves:'), s.total_moves_result.min, s.total_moves_result.max, round(s.total_moves_result.average, 2), s.total_moves_result.total, s.total_moves_result.top, ), ] # if s.score_result.min: # ll.append(('Score:', # s.score_result.min, # s.score_result.max, # round(s.score_result.average, 2), # s.score_result.top, # )) # if s.score_casino_result.min: # ll.append(('Casino Score:', # s.score_casino_result.min, # s.score_casino_result.max, # round(s.score_casino_result.average, 2), )) for l, min, max, avr, tot, top in ll: Tkinter.Label(frame, text=l).grid(row=row, column=0) Tkinter.Label(frame, text=str(min)).grid(row=row, column=1) Tkinter.Label(frame, text=str(max)).grid(row=row, column=2) Tkinter.Label(frame, text=str(avr)).grid(row=row, column=3) # Tkinter.Label(frame, text=str(tot)).grid(row=row, column=4) b = Tkinter.Button(frame, text=TOP_TITLE+' ...', width=10, command=lambda top=top: self.showTop(top)) b.grid(row=row, column=5) row += 1 else: Tkinter.Label(frame, text=_('No TOP for this game')).pack() focus = self.createButtons(bottom_frame, kw) self.mainloop(focus, kw.timeout)