
Contexte
Par défaut sous Linux, Renpy requière Tkinter (tk pour python) afin d’ouvrir une fenêtre permettant la sélection du dossier contenant les projets.

Je trouve personnellement que la fenêtre de base ne continents pas toute les fonctions dont j’ai besoin. J’ai donc modifié le code de Renpy afin d’ouvrir une fenêtre de sélection de fichier avec la bibliothèque Qt (PyQt) à la place.

Modification
Il suffit d’avoir la bibliothèque PyQt5 d’installé sur votre machine. Dans mon cas, utilisant une imprimante Hp avec l’utilitaire HpLib, PyQt5 est déja installé.
Le fichier à modifier s’appelle tkaskdir.py. Dans les sources de RenPy, il est localisé dans: launcher/game/
Voici le contenu du fichier non modifié:
#!/usr/bin/env python2
# This is used on Linux and Mac to prompt the user for the projects
# directory.
import sys
# Python3 and Python2-style imports.
try:
from tkinter import Tk
from tkinter.filedialog import askdirectory
except ImportError:
from Tkinter import Tk
from tkFileDialog import askdirectory
# Binary mode stdout for python23.
try:
sys.stdout = sys.stdout.buffer
except:
pass
# Create the TK canvas.
if __name__ == "__main__":
root = Tk()
root.withdraw()
result = askdirectory(initialdir=sys.argv[1], parent=root, title="Select Ren'Py Projects Directory")
if result == ():
result = ""
sys.stdout.write(result.encode("utf8"))
Et voici le code du fichier modifié:
#!/usr/bin/env python2
# This is used on Linux and Mac to prompt the user for the projects
# directory.
import sys
QtGui = None
try: from PyQt5.QtWidgets import QApplication, QFileDialog
except: pass
# Python3 and Python2-style imports.
try:
from tkinter import Tk
from tkinter.filedialog import askdirectory
except ImportError:
from Tkinter import Tk
from tkFileDialog import askdirectory
# Binary mode stdout for python23.
try:
sys.stdout = sys.stdout.buffer
except:
pass
if __name__ == "__main__":
if QApplication and QFileDialog:
# Create QtApplication and Qt directory window
app = QApplication(sys.argv)
result = QFileDialog().getExistingDirectory(directory=sys.argv[1], caption="Select Ren'Py Projects Directory")
if not result:
result = ""
app.quit()
else:
# Create the TK canvas.
root = Tk()
root.withdraw()
result = askdirectory(initialdir=sys.argv[1], parent=root, title="Select Ren'Py Projects Directory")
if result == ():
result = ""
sys.stdout.write(result.encode("utf8"))
PKGBUILD pour Archlinux / Manjaro
Si vous êtes sous Archlinux ou Manjaro, je suis parti du PKGBUILD officiel: https://git.archlinux.org/svntogit/community.git/tree/trunk?h=packages/renpy
Voici le PKGBUILD modifié
# $Id: PKGBUILD 371260 2018-08-13 09:13:06Z alucryd $
# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
# Contributor: Cravix <dr.neemous@gmail.com>
# Contributor: AlexanderR <rvacheva@nxt.ru>
# Contributor: zhn <zhangn1985@gmail.com>
pkgbase=renpy
pkgname=(
renpy
renpy-demos
)
pkgver=7.3.5
pkgrel=1
pkgdesc="The Ren'Py Visual Novel Engine"
arch=(x86_64)
url=https://www.renpy.org
license=(MIT)
depends=(
ffmpeg
glew
python2-pygame-sdl2
)
makedepends=(cython2)
optdepends=('atom: Default editor')
source=(
https://www.renpy.org/dl/${pkgver}/renpy-${pkgver}-source.tar.bz2
renpy
renpy.desktop
renpy.png
renpy-system-fribidi.patch
tkaskdir.py # Add Qt file chooser
)
sha256sums=('84d7f46b54b9204bf472cd533201380ff2c8669b7967b2c98c4bafbd1c2bd9aa'
'e10630ec0b5d0e479f20b15a4f5ceec8e6992dd8cbc7d3cd5c487da380858a28'
'fccde3461617a098a78d938d9db782d403eda410a84ab52825a597498ab95834'
'611edc07a40ccb8e04e8858847fc1d2a066d29c2ed54e5b357880a0605818dc5'
'c82d57331b8146ac3f76579f95e7cdca559f84919f96b35e9b19c25a5e2128b5'
'd6511ac6e9446f7db19153285a02b06b83dd89315421dbbe7bf4747c577cc718') # Add Qt file chooser
prepare() {
cd renpy-${pkgver}-source
sed 's/python/python2/' -i atom/Atom.edit.py launcher/game/tkaskdir.py
patch -Np1 -i ../renpy-system-fribidi.patch
cp "../tkaskdir.py" "launcher/game/tkaskdir.py" # Add Qt file chooser
}
build() {
cd renpy-${pkgver}-source
export RENPY_CYTHON=cython2
python2 module/setup.py build
}
package_renpy() {
optdepends=(
'renpy-demos: Tutorial and The Question demos'
'tk: Set projects directory'
)
cd renpy-${pkgver}-source
python2 module/setup.py install --root="${pkgdir}" --prefix=/usr --optimize=1 --skip-build
install -dm 755 "${pkgdir}"/usr/share/{renpy,doc}
cp -dr --no-preserve=ownership atom doc gui launcher renpy renpy.py "${pkgdir}"/usr/share/renpy/
ln -s /usr/share/renpy/doc "${pkgdir}"/usr/share/doc/renpy
install -Dm 755 ../renpy -t "${pkgdir}"/usr/bin/
install -Dm 644 ../renpy.desktop -t "${pkgdir}"/usr/share/applications/
install -Dm 644 ../renpy.png -t "${pkgdir}"/usr/share/pixmaps/
install -Dm 644 LICENSE.txt -t "${pkgdir}"/usr/share/licenses/renpy/
}
package_renpy-demos() {
depends=(renpy)
cd renpy-${pkgver}-source
install -dm 755 "${pkgdir}"/usr/share/renpy
cp -dr --no-preserve=ownership the_question tutorial "${pkgdir}"/usr/share/renpy/
install -dm 755 "${pkgdir}"/usr/share/licenses
ln -s renpy "${pkgdir}"/usr/share/licenses/renpy-demos
}
# vim: ts=2 sw=2 et: