Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
 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)