1
0
Fork 0
mirror of https://github.com/shlomif/PySolFC.git synced 2025-04-05 00:02:29 -04:00

finish removing dependency on six (#403)

* finish removing dependency on six

* fix tkinter.FileDialog

* fix filedialog <> FileDialog
This commit is contained in:
Alexandre Detiste 2024-10-23 00:11:32 +02:00 committed by GitHub
parent b3cdb7e4b8
commit f360600fcd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
32 changed files with 64 additions and 89 deletions

View file

@ -118,19 +118,18 @@ per the instructions above.
At the moment, this only works on POSIX (Linux, FreeBSD and similar) systems.
Windows and Mac users - you'll need to chip in with a script for your system.
#### 1 - Install build prerequisites: six and pysol-cards
#### 1 - Install build prerequisite: pysol-cards
This is kind of stupid and maybe it can be fixed in the future, but for now:
```
pip install six
pip install pysol-cards
```
You may want to use your OS distribution package system instead, for example:
```
sudo apt-get install python3-six
sudo apt-get install python3-pysol-cards
```
For Pillow compilation, libjpeg headers and libraries need to be available:

View file

@ -3,11 +3,10 @@
See the HTML 2.0 specification:
http://www.w3.org/hypertext/WWW/MarkUp/html-spec/html-spec_toc.html
"""
import html.parser as html_parser
from pysollib.formatter import AS_IS
from six.moves import html_parser
class HTMLParseError(RuntimeError):
"""Error raised when an HTML document can't be parsed."""

View file

@ -2092,7 +2092,7 @@ class PysolMenubarTk:
idir, ifile = "", ""
if not idir:
idir = self.app.dn.savegames
# d = tkFileDialog.Open()
# d = tkinter.filedialog.Open()
# filename = d.show(filetypes=self.FILETYPES,
# defaultextension=self.DEFAULTEXTENSION,
# initialdir=idir, initialfile=ifile)

View file

@ -1,4 +1,4 @@
from six.moves import tkinter_ttk as ttk
import tkinter.ttk as ttk
from .tkwidget import MfxDialog

View file

@ -22,14 +22,13 @@
# ---------------------------------------------------------------------------
import tkinter
import tkinter.font
import tkinter.ttk as ttk
from pysollib.mfxutil import KwStruct
from pysollib.mygettext import _
from pysollib.ui.tktile.tkutil import bind
from six.moves import tkinter_font
from six.moves import tkinter_ttk as ttk
from .tkwidget import MfxDialog
from .tkwidget import PysolScale
@ -109,7 +108,7 @@ class FontChooserDialog(MfxDialog):
command=self.fontupdate, variable=self.size_var)
sc.grid(row=4, column=0, columnspan=2, sticky='news')
#
font_families = list(tkinter_font.families())
font_families = list(tkinter.font.families())
font_families.sort()
selected = -1
n = 0

View file

@ -21,6 +21,8 @@
#
# ---------------------------------------------------------------------------##
import tkinter.ttk as ttk
from pysollib.mygettext import _, n_
from pysollib.settings import TITLE
from pysollib.ui.tktile.findcarddialog import connect_game_find_card_dialog
@ -32,8 +34,6 @@ from pysollib.ui.tktile.menubar import MfxMenu, PysolMenubarTkCommon
from pysollib.ui.tktile.solverdialog import connect_game_solver_dialog
from pysollib.util import CARDSET
from six.moves import tkinter_ttk as ttk
from .selectgame import SelectGameDialog, SelectGameDialogWithPreview
from .selecttile import SelectTileDialogWithPreview
from .soundoptionsdialog import SoundOptionsDialog

View file

@ -22,12 +22,11 @@
# ---------------------------------------------------------------------------##
import tkinter
import tkinter.ttk as ttk
from pysollib.mfxutil import KwStruct
from pysollib.mygettext import _
from six.moves import tkinter_ttk as ttk
from .tkwidget import MfxDialog

View file

@ -22,12 +22,11 @@
# ---------------------------------------------------------------------------
import tkinter
import tkinter.ttk as ttk
from pysollib.ui.tktile.tkconst import EVENT_HANDLED
from pysollib.ui.tktile.tkutil import makeToplevel, setTransient
from six.moves import tkinter_ttk as ttk
# ************************************************************************
# * a simple progress bar
# ************************************************************************

View file

@ -23,6 +23,7 @@
import os
import tkinter
import tkinter.ttk as ttk
from pysollib.mfxutil import KwStruct, USE_PIL
from pysollib.mygettext import _
@ -32,8 +33,6 @@ from pysollib.ui.tktile.tkcanvas import MfxCanvasImage
from pysollib.ui.tktile.tkutil import bind, loadImage
from pysollib.util import CARDSET
from six.moves import tkinter_ttk as ttk
from .selecttree import SelectDialogTreeCanvas
from .selecttree import SelectDialogTreeLeaf, SelectDialogTreeNode
from .tkwidget import MfxDialog, MfxScrolledCanvas, PysolCombo, PysolScale

View file

@ -23,6 +23,7 @@
import os
import tkinter
import tkinter.ttk as ttk
from collections import UserList
from pysollib.gamedb import GI
@ -33,8 +34,6 @@ from pysollib.resource import CSI
from pysollib.ui.tktile.selecttree import SelectDialogTreeData
from pysollib.ui.tktile.tkutil import bind, unbind_destroy
from six.moves import tkinter_ttk as ttk
from .selecttree import SelectDialogTreeCanvas
from .selecttree import SelectDialogTreeLeaf, SelectDialogTreeNode
from .tkwidget import MfxDialog, MfxScrolledCanvas, PysolCombo

View file

@ -23,6 +23,8 @@
import os
import tkinter
import tkinter.colorchooser
import tkinter.ttk as ttk
from pysollib.mfxutil import KwStruct, USE_PIL
from pysollib.mygettext import _
@ -30,9 +32,6 @@ from pysollib.resource import TTI
from pysollib.ui.tktile.selecttree import SelectDialogTreeData
from pysollib.ui.tktile.tkutil import bind
from six.moves import tkinter_colorchooser
from six.moves import tkinter_ttk as ttk
from .selecttree import SelectDialogTreeCanvas
from .selecttree import SelectDialogTreeLeaf, SelectDialogTreeNode
from .tkwidget import MfxDialog, MfxScrolledCanvas, PysolCombo
@ -282,7 +281,7 @@ class SelectTileDialogWithPreview(MfxDialog):
self.tree.n_expansions = 1 # save xyview in any case
if button == 10: # "Solid color..."
try:
c = tkinter_colorchooser.askcolor(
c = tkinter.colorchooser.askcolor(
master=self.top,
initialcolor=self.table_color,
title=_("Select table color"))

View file

@ -23,6 +23,7 @@
import os
import tkinter
import tkinter.ttk as ttk
from pysollib.mfxutil import KwStruct
from pysollib.mygettext import _
@ -30,8 +31,6 @@ from pysollib.pysolaudio import pysolsoundserver
from pysollib.settings import TITLE
from pysollib.ui.tktile.tkconst import EVENT_HANDLED
from six.moves import tkinter_ttk as ttk
from .tkwidget import MfxDialog, MfxMessageDialog
from .tkwidget import PysolScale

View file

@ -25,11 +25,10 @@
import os
import sys
import tkinter
import tkinter.ttk as ttk
from pysollib.mygettext import _
from six.moves import tkinter_ttk as ttk
from .tkwidget import MfxTooltip
if __name__ == '__main__':

View file

@ -22,12 +22,11 @@
# ---------------------------------------------------------------------------##
import tkinter
import tkinter.ttk as ttk
from pysollib.mfxutil import KwStruct
from pysollib.mygettext import _
from six.moves import tkinter_ttk as ttk
from .tkwidget import MfxDialog, PysolScale

View file

@ -24,13 +24,12 @@
import os
import sys
import tkinter
import tkinter.ttk as ttk
from pysollib.mfxutil import Struct
from pysollib.mygettext import _
from pysollib.ui.tktile.tkhtml import Base_HTMLViewer
from six.moves import tkinter_ttk as ttk
from .statusbar import HtmlStatusbar
from .tkwidget import MfxMessageDialog

View file

@ -24,6 +24,8 @@
import os
import time
import tkinter
import tkinter.font
import tkinter.ttk as ttk
from pysollib.mfxutil import KwStruct
from pysollib.mfxutil import format_time
@ -32,9 +34,6 @@ from pysollib.settings import TOP_TITLE
from pysollib.stats import ProgressionFormatter, PysolStatsFormatter
from pysollib.ui.tktile.tkutil import bind, loadImage
from six.moves import tkinter_font
from six.moves import tkinter_ttk as ttk
from .tkwidget import MfxDialog, MfxMessageDialog
@ -54,11 +53,11 @@ class StatsDialog(MfxDialog):
MfxDialog.__init__(self, parent, title, kw.resizable, kw.default)
self.font = app.getFont('default')
self.tkfont = tkinter_font.Font(parent, self.font)
self.tkfont = tkinter.font.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 = tkinter_font.Font(parent, heading_font)
self.heading_tkfont = tkinter.font.Font(parent, heading_font)
self.selected_game = None
@ -502,10 +501,10 @@ class LogDialog(MfxDialog):
def __init__(self, parent, title, app, player, **kw):
self.font = app.getFont('default')
self.tkfont = tkinter_font.Font(parent, self.font)
self.tkfont = tkinter.font.Font(parent, self.font)
style = ttk.Style(parent)
heading_font = style.lookup('Heading', 'font') # treeview heading
self.heading_tkfont = tkinter_font.Font(parent, heading_font)
self.heading_tkfont = tkinter.font.Font(parent, heading_font)
self.font_metrics = self.tkfont.metrics()
self.CHAR_H = self.font_metrics['linespace']

View file

@ -25,6 +25,8 @@ import locale
import os
import time
import tkinter
import tkinter.font
import tkinter.ttk as ttk
import traceback
from pysollib.mfxutil import KwStruct, destruct, kwdefault, openURL
@ -35,9 +37,6 @@ from pysollib.ui.tktile.tkutil import after, after_cancel
from pysollib.ui.tktile.tkutil import bind, unbind_destroy
from pysollib.ui.tktile.tkutil import makeToplevel, setTransient
from six.moves import tkinter_font
from six.moves import tkinter_ttk as ttk
# ************************************************************************
# * abstract base class for the dialogs in this module
# ************************************************************************
@ -313,7 +312,7 @@ class PysolAboutDialog(MfxMessageDialog):
# font_name = msg.lookup('TLabel', 'font')
font_name = 'TkDefaultFont'
font = tkinter_font.Font(parent, name=font_name, exists=True)
font = tkinter.font.Font(parent, name=font_name, exists=True)
font = font.copy()
font.configure(underline=True)
url_label = ttk.Label(frame, text=kw.url, font=font,

View file

@ -23,6 +23,7 @@
import os
import tkinter
import tkinter.ttk as ttk
from pysollib.mfxutil import Image, ImageOps, ImageTk
from pysollib.mygettext import _, n_
@ -33,8 +34,6 @@ from pysollib.ui.tktile.tkutil import loadImage
from pysollib.util import IMAGE_EXTENSIONS
from pysollib.winsystems import TkSettings
from six.moves import tkinter_ttk as ttk
from .tkwidget import MfxTooltip

View file

@ -22,14 +22,13 @@
# ---------------------------------------------------------------------------
import tkinter
import tkinter.ttk as ttk
from pysollib.mfxutil import KwStruct
from pysollib.mygettext import _
from pysollib.wizardpresets import presets
from pysollib.wizardutil import WizardWidgets
from six.moves import tkinter_ttk as ttk
from .tkwidget import MfxDialog
from .tkwidget import PysolCombo, PysolScale

View file

@ -22,14 +22,13 @@
# ---------------------------------------------------------------------------##
import tkinter
import tkinter.font
from pysollib.mfxutil import KwStruct
from pysollib.mygettext import _
from pysollib.tk.tkwidget import MfxDialog
from pysollib.ui.tktile.tkutil import bind
from six.moves import tkinter_font
class FontChooserDialog(MfxDialog):
def __init__(self, parent, title, init_font, **kw):
@ -101,7 +100,7 @@ class FontChooserDialog(MfxDialog):
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(tkinter_font.families())
font_families = list(tkinter.font.families())
font_families.sort()
selected = -1
n = 0

View file

@ -22,13 +22,12 @@
# ---------------------------------------------------------------------------##
import tkinter
import tkinter.colorchooser
from pysollib.mfxutil import KwStruct
from pysollib.mygettext import _
from pysollib.ui.tktile.selecttree import SelectDialogTreeData
from six.moves import tkinter_colorchooser
from .selecttree import SelectDialogTreeCanvas
from .selecttree import SelectDialogTreeLeaf, SelectDialogTreeNode
from .tkwidget import MfxDialog, MfxScrolledCanvas
@ -176,7 +175,7 @@ class SelectTileDialogWithPreview(MfxDialog):
self.tree.n_expansions = 1 # save xyview in any case
if button == 1: # "Solid color..."
try:
c = tkinter_colorchooser.askcolor(
c = tkinter.colorchooser.askcolor(
master=self.top,
initialcolor=self.table_color,
title=_("Select table color"))

View file

@ -24,6 +24,7 @@
import os
import time
import tkinter
import tkinter.font
from pysollib.mfxutil import KwStruct, kwdefault
from pysollib.mfxutil import format_time
@ -32,8 +33,6 @@ from pysollib.settings import TOP_TITLE
from pysollib.stats import ProgressionFormatter, PysolStatsFormatter
from pysollib.ui.tktile.tkutil import bind, loadImage
from six.moves import tkinter_font
from .tkwidget import MfxDialog, MfxMessageDialog
from .tkwidget import MfxScrolledCanvas
@ -63,7 +62,7 @@ class SingleGame_StatsDialog(MfxDialog):
# createChart = self.createSimpleChart
#
self.font = self.app.getFont("default")
self.tk_font = tkinter_font.Font(self.top, self.font)
self.tk_font = tkinter.font.Font(self.top, self.font)
self.font_metrics = self.tk_font.metrics()
self._calc_tabs()
#
@ -313,7 +312,7 @@ class CanvasFormatter(PysolStatsFormatter):
tw = 15*self.w
# tw = 160
self._tabs = [tw]
font = tkinter_font.Font(self.canvas, self.font)
font = tkinter.font.Font(self.canvas, self.font)
for t in arg[1:]:
tw = font.measure(t)+20
self._tabs.append(tw)
@ -460,7 +459,7 @@ class AllGames_StatsDialog(MfxDialog):
# lines = 20
#
self.font = app.getFont(self.FONT_TYPE)
font = tkinter_font.Font(parent, self.font)
font = tkinter.font.Font(parent, self.font)
self.font_metrics = font.metrics()
self.CHAR_H = self.font_metrics['linespace']
self.CHAR_W = font.measure('M')
@ -816,8 +815,8 @@ class ProgressionDialog(MfxDialog):
def __init__(self, parent, title, app, player, gameid, **kw):
font_name = app.getFont('default')
font = tkinter_font.Font(parent, font_name)
tkfont = tkinter_font.Font(parent, font)
font = tkinter.font.Font(parent, font_name)
tkfont = tkinter.font.Font(parent, font)
font_metrics = font.metrics()
measure = tkfont.measure
self.text_height = font_metrics['linespace']

View file

@ -23,6 +23,7 @@
import time
import tkinter
import tkinter.font
import traceback
from pysollib.mfxutil import KwStruct, destruct, kwdefault, openURL
@ -33,8 +34,6 @@ from pysollib.ui.tktile.tkutil import after, after_cancel
from pysollib.ui.tktile.tkutil import bind, unbind_destroy
from pysollib.ui.tktile.tkutil import makeToplevel, setTransient
from six.moves import tkinter_font
# ************************************************************************
# * abstract base class for the dialogs in this module
# ************************************************************************
@ -307,7 +306,7 @@ class PysolAboutDialog(MfxMessageDialog):
width=kw.width)
msg.pack(fill='both', expand=True)
font = tkinter_font.Font(parent, app.getFont('default'))
font = tkinter.font.Font(parent, app.getFont('default'))
font.configure(underline=True)
url_label = tkinter.Label(frame, text=kw.url, font=font,
foreground='blue', cursor='hand2')

View file

@ -22,12 +22,11 @@
# ---------------------------------------------------------------------------
import tkinter
from tkinter.colorchooser import askcolor
from pysollib.mfxutil import KwStruct
from pysollib.mygettext import _
from six.moves.tkinter_colorchooser import askcolor
class BaseColorsDialog:
def _calcFrame(self):

View file

@ -4,6 +4,7 @@ import platform
import re
import sys
import tkinter
import tkinter.filedialog
from pysollib.gamedb import GI
from pysollib.hint import PySolHintLayoutImportError
@ -18,8 +19,6 @@ from pysollib.ui.tktile.tkconst import EVENT_PROPAGATE
from pysollib.ui.tktile.tkconst import STATUSBAR_ITEMS, TOOLBAR_BUTTONS
from pysollib.ui.tktile.tkutil import after_idle, bind
from six.moves import tkinter_tkfiledialog
def createToolbarMenu(menubar, menu):
tearoff = menu.cget('tearoff')
@ -1440,7 +1439,7 @@ class PysolMenubarTkCommon:
idir, ifile = "", ""
if not idir:
idir = self.app.dn.savegames
d = tkinter_tkfiledialog.Open()
d = tkinter.filedialog.Open()
filename = d.show(filetypes=self.FILETYPES,
defaultextension=self.DEFAULTEXTENSION,
initialdir=idir, initialfile=ifile)
@ -1477,7 +1476,7 @@ Unsupported game for export.
if not idir:
idir = self.app.dn.boards
# print self.game.filename, ifile
d = tkinter_tkfiledialog.SaveAs()
d = tkinter.filedialog.SaveAs()
filename = d.show(filetypes=self.FILETYPES,
defaultextension=self.DEFAULTEXTENSION,
initialdir=idir, initialfile=ifile)
@ -1509,7 +1508,7 @@ Unsupported game for import.
idir, ifile = "", ""
if not idir:
idir = self.app.dn.boards
d = tkinter_tkfiledialog.Open()
d = tkinter.filedialog.Open()
key = 'PYSOL_DEBUG_IMPORT'
if key not in os.environ:
filename = d.show(filetypes=self.FILETYPES,
@ -1556,7 +1555,7 @@ Unsupported game for import.
if not idir:
idir = self.app.dn.savegames
# print self.game.filename, ifile
d = tkinter_tkfiledialog.SaveAs()
d = tkinter.filedialog.SaveAs()
filename = d.show(filetypes=self.FILETYPES,
defaultextension=self.DEFAULTEXTENSION,
initialdir=idir, initialfile=ifile)

View file

@ -26,7 +26,7 @@
# ************************************************************************
# imports
from six.moves import tkinter_font
import tkinter.font
class BaseSelectDialogTreeLeaf:
@ -111,7 +111,7 @@ class BaseSelectDialogTreeCanvas:
self.style.height = 14 # height of symbol
if font:
self.style.font = font
f = tkinter_font.Font(parent, font)
f = tkinter.font.Font(parent, font)
h = f.metrics()["linespace"]
self.style.disty = max(self.style.width, h)

View file

@ -24,13 +24,12 @@
import os
import re
import tkinter
import tkinter.font
from pysollib.mfxutil import Image, ImageDraw, ImageOps, ImageTk, \
get_default_resampling
from pysollib.settings import TITLE, WIN_SYSTEM
from six.moves import tkinter_font
# ************************************************************************
# * window manager util
@ -498,4 +497,4 @@ def resizeBottom(image, maskimage, color='white', backfile=None):
# ************************************************************************
def get_text_width(text, font, root=None):
return tkinter_font.Font(root=root, font=font).measure(text)
return tkinter.font.Font(root=root, font=font).measure(text)

View file

@ -34,7 +34,7 @@ from pysollib.settings import VERSION
if TOOLKIT == 'tk':
from pysollib.ui.tktile.tkutil import loadImage
if USE_TILE:
from six.moves import tkinter_ttk as ttk
import tkinter.ttk as ttk
def init_tile(app, top):
@ -74,7 +74,7 @@ def get_font_name(font):
if (TOOLKIT == 'kivy'):
return "helvetica 12"
from six.moves.tkinter_font import Font
from tkinter.font import Font
font_name = None
try:
f = Font(font=font)

View file

@ -25,7 +25,7 @@ from pysollib.settings import TOOLKIT, USE_TILE
from pysollib.winsystems.common import BaseTkSettings, base_init_root_window
if USE_TILE:
from six.moves import tkinter_ttk as ttk
import tkinter.ttk as ttk
def init_root_window(root, app):

View file

@ -33,7 +33,7 @@ from pysollib.winsystems.common import \
if TOOLKIT == 'tk':
if USE_TILE:
from six.moves import tkinter_ttk as ttk
import tkinter.ttk as ttk
# ************************************************************************
@ -71,10 +71,10 @@ def init_root_window(root, app):
except Exception:
traceback.print_exc()
else:
from six.moves import tkinter_tkfiledialog
tkinter_tkfiledialog.Open.command = 'ttk::getOpenFile'
tkinter_tkfiledialog.SaveAs.command = 'ttk::getSaveFile'
tkinter_tkfiledialog.Directory.command = 'ttk::chooseDirectory'
import tkinter.filedialog
tkinter.filedialog.Open.command = 'ttk::getOpenFile'
tkinter.filedialog.SaveAs.command = 'ttk::getSaveFile'
tkinter.filedialog.Directory.command = 'ttk::chooseDirectory'
style = ttk.Style(root)
color = style.lookup('.', 'background')

View file

@ -9,12 +9,11 @@
import os
import tkinter
import tkinter.filedialog
from glob import glob
from PIL import Image, ImageTk
from six.moves import tkinter_tkfiledialog as filedialog # messagebox
cardset_type = {
'1': 'French',
@ -175,7 +174,7 @@ def on_mousewheel(event):
def select_dir():
global data_dir
dialog = filedialog.Directory(root)
dialog = tkinter.filedialog.Directory(root)
directory = dialog.show()
if directory:
data_dir = os.path.normpath(directory)

View file

@ -78,7 +78,6 @@ kw = {
'attrs>=18.2.0',
'configobj',
'pysol_cards',
'six',
],
'long_description': long_description,
'license': 'GPL',