Compare commits
271 Commits
6.17
...
6.17.0.271
| Author | SHA1 | Date | |
|---|---|---|---|
| 88e14a14d8 | |||
| b583d53f61 | |||
| fa79703f09 | |||
| e122d22ef8 | |||
| 34c070d37b | |||
| b9c5f2f988 | |||
| adb4ab80db | |||
| b55e36853e | |||
| 46c547a9b0 | |||
| 6c753a4a09 | |||
| 88417761ee | |||
| 5bff9be02c | |||
| de4c50bb2a | |||
| 5895fbcced | |||
| 5fc7f32b5a | |||
| a30500d665 | |||
| 9cd9e126a2 | |||
| 6d7da4f882 | |||
| bffa96a344 | |||
| 393df20e44 | |||
| 6acf2605bb | |||
| bd1524c362 | |||
| d9db6cc96a | |||
| 1f004edc6a | |||
| d6b9ea81de | |||
| d869f67126 | |||
| 92630baa6e | |||
| e8adc17543 | |||
| d72a03aeb4 | |||
| f5e75a7c4c | |||
| 2aa92d02d3 | |||
| b04e511767 | |||
| 34616cdbd3 | |||
| dfccf93175 | |||
| 34a62d74b5 | |||
| 41c48a5941 | |||
| c4f2d2894b | |||
| fc77c0e0ec | |||
| 99fa4e9c15 | |||
| 913a1078df | |||
| ed5e38727c | |||
| 28a5d5fcf2 | |||
| a96e9614c4 | |||
| 598d4faea0 | |||
| 3776ec0ef7 | |||
| 8a2546a83c | |||
| 566cb0f1cf | |||
| 6fee9e81e9 | |||
| 5ef6952c95 | |||
| 366306b8cc | |||
| 7d74ff010c | |||
| bb2a80f5e8 | |||
| 0c31f22fb4 | |||
| fb74356541 | |||
| ee18baed5e | |||
| 9f8b327aa8 | |||
| ba34df1a2e | |||
| 35584ebcba | |||
| dedc3af9d4 | |||
| 57652ce002 | |||
| 1f4f5e5030 | |||
| 0a6a43e139 | |||
| f930a2addb | |||
| 77f3ba0198 | |||
| 7dd98cd421 | |||
| 3ebf9d4b28 | |||
| eefc1412fa | |||
| a0f38b9442 | |||
| 123e96b872 | |||
| 14672d6f9b | |||
| ccc950a703 | |||
| aee59b6a05 | |||
| 1a5345f089 | |||
| 6ee705dd21 | |||
| fe197216b9 | |||
| 462730fcae | |||
| 972da30f8c | |||
| 5f07ce8c32 | |||
| 1940c98e67 | |||
| c1f8a23f17 | |||
| 7da459ae63 | |||
| 9125823bc9 | |||
| 188a0bac0a | |||
| 7d33f1663c | |||
| d3c075e11f | |||
| 2c984ed8f5 | |||
| 7f3563bcb0 | |||
| a6ab0e84e6 | |||
| d40dc4acc6 | |||
| d9d8eb4175 | |||
| 18df24da42 | |||
| 99f4b021d3 | |||
| 19bc668e0a | |||
| fe0a6a8e47 | |||
| d8c51b32b2 | |||
| 92b1a67e4a | |||
| 5a41588969 | |||
| 749236868a | |||
| c741f0cded | |||
| 638ecbbd2a | |||
| 697664de8f | |||
| b66379b203 | |||
| 92492d1198 | |||
| a325ea8bff | |||
| 4b3627a1e3 | |||
| 44ea36b475 | |||
| 1348a53fa8 | |||
| c34c8ebd3c | |||
| e2650d11dd | |||
| a73abc82e3 | |||
| d08933ce88 | |||
| 09ca171e81 | |||
| 7affd8cfbb | |||
| 73763275fb | |||
| 9d93ef10b5 | |||
| 6fd7fd89e5 | |||
| 3fa1dbe10e | |||
| f52735ef53 | |||
| 50988a167b | |||
| 60232028c2 | |||
| f1384edaf5 | |||
| bed8233afe | |||
| a1fd8c6d1c | |||
| 8868d6c99a | |||
| 293b191739 | |||
| ce4ebffd69 | |||
| b08a0daa10 | |||
| 3bd0557948 | |||
| 5ceb663fb3 | |||
| 8c684678c9 | |||
| 8749f3d178 | |||
| a001313516 | |||
| 4fc8554384 | |||
| 91f0b8452a | |||
| d1d71b8065 | |||
| 96929bce42 | |||
| 3c38654a8b | |||
| baeb458879 | |||
| 7ecb7a36a0 | |||
| a688687736 | |||
| 32c904935b | |||
| 1484505bd4 | |||
| cba6a15dda | |||
| c4cc830b7a | |||
| e83ec927de | |||
| caa9ebc25c | |||
| 9175fad5c1 | |||
| 13d8861459 | |||
| 7e7525e3d3 | |||
| 6e789307ef | |||
| ec8308b82c | |||
| f5efeec320 | |||
| 649fda046c | |||
| dcd829931c | |||
| d63f5ba134 | |||
| 647c1a026b | |||
| 3ea8d6a368 | |||
| 625a6afb1f | |||
| 9d8ccec0ee | |||
| 32554bf5e6 | |||
| a03c4d6f39 | |||
| eeefba5a45 | |||
| 22d87d62d6 | |||
| 8a1d6cd934 | |||
| 5769fbfb5a | |||
| 6912acaa3d | |||
| 1df3f281fd | |||
| f1c0df3156 | |||
| 6c5c1ff1bd | |||
| e37c0ac09b | |||
| c0572eb996 | |||
| 1b745a9c21 | |||
| cc855e3573 | |||
| 7089bb2d95 | |||
| 256d33e20f | |||
| d6b66629e0 | |||
| d813a1b58f | |||
| 7f6c8efb57 | |||
| af5420c949 | |||
| 5b28bc1bcd | |||
| 42d5d62575 | |||
| 525657843c | |||
| c4b15d9c84 | |||
| 099f3d5cc8 | |||
| 07b4407f03 | |||
| e8adb1b30b | |||
| 8995873089 | |||
| cda0083a3e | |||
| e32eae2946 | |||
| b6a1c28bfc | |||
| 457673a3bb | |||
| 10f2620590 | |||
| 9d9c924d82 | |||
| 23a7f8d00d | |||
| 259c010d4e | |||
| b728d85b00 | |||
| bf1e3af046 | |||
| bfb8bbfc29 | |||
| 259dd579eb | |||
| 8554a64c8b | |||
| 36c8ed2648 | |||
| a02ee4cef0 | |||
| 5e337bb971 | |||
| 4e2916c3f0 | |||
| c4ebac7fcf | |||
| 01899980a5 | |||
| 11c4f64f9d | |||
| 0334c56441 | |||
| f63731d18d | |||
| 33c07fc986 | |||
| 7a398bc847 | |||
| e9dbadab56 | |||
| 622bfa44fb | |||
| 73cfd1b29c | |||
| eae987f665 | |||
| bcd95d937c | |||
| 87fea5b4c7 | |||
| ee29f1c2c0 | |||
| 995d483072 | |||
| 5a209b0384 | |||
| db6911da6d | |||
| 2e2d29b0f5 | |||
| 77fc911f7e | |||
| a4f659387f | |||
| 33a452dab6 | |||
| d9b4d916c8 | |||
| 599cc25f7c | |||
| 4054cd1c72 | |||
| eb1f96ad20 | |||
| c1d1a766c7 | |||
| 2cb7632e96 | |||
| e14464081e | |||
| 49fa613b48 | |||
| c7dca40479 | |||
| d9d7801a50 | |||
| 44edd1c723 | |||
| a46ddc9e55 | |||
| c12560fed3 | |||
| f7dbfeec3f | |||
| 2b44ffe0e2 | |||
| 643fe8928b | |||
| a6f9d787ef | |||
| cf993a71da | |||
| 8f9ecee00a | |||
| 8ffe6eaad4 | |||
| 3256bd10b7 | |||
| 2b5bf3055e | |||
| 51743d03e6 | |||
| 50fdc88754 | |||
| f04f3e7961 | |||
| d38e96dfac | |||
| d09f5764bd | |||
| 608a55b942 | |||
| 0141ef770e | |||
| d936a9a28b | |||
| bc941d4e7a | |||
| a777919dcf | |||
| 73c9479474 | |||
| 179af6dffb | |||
| 8cab84384b | |||
| 92e0e32c83 | |||
| 0f73bda3a5 | |||
| e57842386c | |||
| b03f96a756 | |||
| 4d553c9db6 | |||
| 61f09261d4 | |||
| bf98392005 | |||
| 037686e7a1 | |||
| 9df83fb0ae | |||
| 1486757426 | |||
| b9671f7c77 |
@@ -5,15 +5,15 @@
|
||||
*.pyo
|
||||
|
||||
*~
|
||||
*.bak
|
||||
*.bak
|
||||
|
||||
saves
|
||||
tmp
|
||||
cache
|
||||
|
||||
log.txt
|
||||
errors.txt
|
||||
traceback.txt
|
||||
/errors.txt
|
||||
/traceback.txt
|
||||
|
||||
styles.txt
|
||||
|
||||
@@ -51,4 +51,4 @@ styles.txt
|
||||
dl
|
||||
renpy/vc_version.py
|
||||
.externalToolBuilders
|
||||
rapt-*
|
||||
rapt
|
||||
|
||||
@@ -4,46 +4,132 @@ The Ren'Py Visual Novel Engine
|
||||
|
||||
http://www.renpy.org
|
||||
|
||||
Ren'Py development takes place on the ``master`` branch, and occasionally
|
||||
on feature branches.
|
||||
|
||||
Branches
|
||||
========
|
||||
Getting Started
|
||||
===============
|
||||
|
||||
Ren'Py development takes place on two branches, ``master`` and
|
||||
``devel``, as well as the occasional feature branch.
|
||||
Ren'Py depends on a number of python modules written in Cython and C. For
|
||||
changes to Ren'Py that only involve python modules, you can use the modules
|
||||
found in the latest nightly build. Otherwise, you'll have to compile the
|
||||
modules yourself.
|
||||
|
||||
Master
|
||||
-----
|
||||
The development scripts assume a POSIX-like platform. The scripts should run
|
||||
on Linux or Mac OS X, and can be made to run on Windows using an environment
|
||||
like Msys.
|
||||
|
||||
The master branch contains code that can be run using the libraries in
|
||||
the latest (release or pre-release) version of Ren'Py. It's used for
|
||||
bugfixes and features that do not require C or Cython code to
|
||||
implement.
|
||||
Nightly Build
|
||||
-------------
|
||||
|
||||
After checking out master, run::
|
||||
Nightly builds can be downloaded from:
|
||||
|
||||
./after_checkout.sh <path-to-renpy>
|
||||
http://nightly.renpy.org
|
||||
|
||||
to link in the libraries from the most recent Ren'Py. (On Windows, you
|
||||
will need to run this under msys or cygwin.)
|
||||
Note that the latest nightly build is at the bottom of the list. Once you've
|
||||
unpacked the nightly, change into this repository, and run::
|
||||
|
||||
Ren'Py can then be run by running renpy.exe, renpy.sh, or renpy.app as
|
||||
appropriate.
|
||||
./after_checkout.sh <path-to-nightly>
|
||||
|
||||
Devel
|
||||
-----
|
||||
Once this script completes, you should be able to run Ren'Py using renpy.sh,
|
||||
renpy.app, or renpy.exe, as appropriate for your platform.
|
||||
|
||||
The devel branch contains code that requires a recompile of modules
|
||||
implemented in C or Cython. Building devel requires you to have the
|
||||
prerequisite libraries installed. Then set RENPY_DEPS_INSTALLED to
|
||||
a \::-separated list of paths containing dependencies. For example::
|
||||
If the current nightly build doesn't work, please wait 24 hours for a new
|
||||
build to occur. If that build still doesn't work, contact Tom (`pytom at bishoujo.us`,
|
||||
or @renpytom on twitter) to find out what's wrong.
|
||||
|
||||
export RENPY_DEPS_INSTALL=/usr::/usr/lib/x86_64-linux-gnu/
|
||||
The ``doc`` symlink will dangle until documentation is built, as described
|
||||
below.
|
||||
|
||||
Finally, change into the modules directory, and run::
|
||||
Compiling the Modules
|
||||
----------------------
|
||||
|
||||
python setup.py install
|
||||
Building the modules requires you have the many dependencies installed on
|
||||
your system. On Ubuntu, these dependencies can be installed with the
|
||||
command::
|
||||
|
||||
Ren'Py can then be run by using python to run renpy.py.
|
||||
apt-get install python-dev python-pygame libavcodec-dev libavformat-dev \
|
||||
libfreetype6-dev libglew1.6-dev libsdl1.2-dev libsdl-image1.2-dev \
|
||||
libfribidi-dev libswscale-dev libesd0-dev libpulse-dev
|
||||
|
||||
Other platforms may have an equivalent command. Otherwise, you'll need to
|
||||
build `renpy-deps <https://github.com/renpy/renpy-deps>`_.
|
||||
|
||||
We strongly suggest installing the Ren'Py modules into a Python
|
||||
virtualenv. `This page <http://dabapps.com/blog/introduction-to-pip-and-virtualenv-python/>`_
|
||||
describes how to install pip and the virtualenv tool, and set up a new virtualenv.
|
||||
|
||||
After activating the virtualenv, install cython::
|
||||
|
||||
pip install -U cython
|
||||
|
||||
Next, set RENPY_DEPS_INSTALL To a \::-separated list of paths containing the
|
||||
dependencies, and RENPY_CYTHON to the name of the cython command::
|
||||
|
||||
export RENPY_DEPS_INSTALL=/usr::/usr/lib/x86_64-linux-gnu/
|
||||
export RENPY_CYTHON=cython
|
||||
|
||||
Finally, change into the `modules` directory, and run::
|
||||
|
||||
python setup.py install
|
||||
|
||||
Ren'Py will be installed into the activated virtualenv. It can then be run
|
||||
using the command::
|
||||
|
||||
python -O renpy.py
|
||||
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
Building
|
||||
--------
|
||||
|
||||
Building the documentation requires Ren'Py to work. You'll either need to
|
||||
link in a nightly build, or compile the modules as described above. You'll
|
||||
also need the `Sphinx <http://sphinx-doc.org/>`_ documentation generator.
|
||||
If you have pip working, install Sphinx using::
|
||||
|
||||
pip install -U sphinx
|
||||
|
||||
Once Sphinx is installed, change into the ``sphinx`` directory inside the
|
||||
Ren'Py checkout and run::
|
||||
|
||||
./build.sh
|
||||
|
||||
Format
|
||||
------
|
||||
|
||||
Ren'Py's documentation consists of reStructuredText files found in sphinx/source, and
|
||||
generated documentation found in function docstrings scattered throughout the code. Do
|
||||
not edit the files in sphinx/source/inc directly, as they will be overwritten.
|
||||
|
||||
Docstrings may include tags on the first few lines:
|
||||
|
||||
\:doc: `section` `kind`
|
||||
Indicates that this functions should be documented. `section` gives
|
||||
the name of the include file the function will be documented in, while
|
||||
`kind` indicates the kind of object to be documented (one of ``function``,
|
||||
``method`` or ``class``. If omitted, `kind` will be auto-detected.
|
||||
\:name: `name`
|
||||
The name of the function to be documented. Function names are usually
|
||||
detected, so this is only necessary when a function has multiple aliases.
|
||||
\:args: `args`
|
||||
This overrides the detected argument list. It can be used if some arguments
|
||||
to the function are deprecated.
|
||||
|
||||
For example::
|
||||
|
||||
def warp_speed(factor, transwarp=False):
|
||||
"""
|
||||
:doc: warp
|
||||
:name: renpy.warp_speed
|
||||
:args: (factor)
|
||||
|
||||
Exceeds the speed of light.
|
||||
"""
|
||||
|
||||
renpy.engine.warp_drive.engage(factor)
|
||||
|
||||
|
||||
Contributing
|
||||
@@ -51,5 +137,5 @@ Contributing
|
||||
|
||||
For bug fixes, documentation improvements, and simple changes, just
|
||||
make a pull request. For more complex changes, it might make sense
|
||||
to file an issue so we can discuss the design.
|
||||
to file an issue first so we can discuss the design.
|
||||
|
||||
|
||||
@@ -8,8 +8,9 @@ import compileall
|
||||
import shutil
|
||||
import subprocess
|
||||
import argparse
|
||||
import glob
|
||||
|
||||
CWD = os.getcwdu()
|
||||
ROOT = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
def copy_tutorial_file(src, dest):
|
||||
"""
|
||||
@@ -59,7 +60,11 @@ def main():
|
||||
|
||||
s = subprocess.check_output([ "git", "describe", "--tags", "--dirty", "--match", match_version ])
|
||||
parts = s.strip().split("-")
|
||||
vc_version = int(parts[1])
|
||||
|
||||
if len(parts) <= 2:
|
||||
vc_version = 0
|
||||
else:
|
||||
vc_version = int(parts[1])
|
||||
|
||||
if parts[-1] == "dirty":
|
||||
vc_version += 1
|
||||
@@ -76,7 +81,7 @@ def main():
|
||||
|
||||
# Check that the versions match.
|
||||
full_version = ".".join(str(i) for i in renpy.version_tuple) #@UndefinedVariable
|
||||
if args.version != "experimental" \
|
||||
if args.version != "renpy-experimental" \
|
||||
and not args.version.startswith("renpy-nightly-") \
|
||||
and not full_version.startswith(args.version):
|
||||
|
||||
@@ -100,11 +105,35 @@ def main():
|
||||
|
||||
# Compile the various games.
|
||||
if not args.fast:
|
||||
for i in [ 'tutorial', 'launcher', 'templates/english', 'templates/japanese', 'the_question' ]:
|
||||
for i in [ 'tutorial', 'launcher', 'the_question' ] + glob.glob("templates/*"):
|
||||
print "Compiling", i
|
||||
subprocess.check_call(["./renpy.sh", i, "quit" ])
|
||||
|
||||
|
||||
# Kick off the rapt build.
|
||||
if not args.fast:
|
||||
out = open("/tmp/rapt_build.txt", "wb")
|
||||
|
||||
print("Building RAPT.")
|
||||
|
||||
android = os.path.abspath("android")
|
||||
|
||||
rapt_build = subprocess.Popen([
|
||||
os.path.join(android, "build_renpy.sh"),
|
||||
"renpy",
|
||||
ROOT,
|
||||
],
|
||||
cwd = android,
|
||||
stdout=out,
|
||||
stderr=out)
|
||||
|
||||
code = rapt_build.wait()
|
||||
|
||||
if code:
|
||||
print "RAPT build failed. The output is in /tmp/rapt_build.txt."
|
||||
sys.exit(1)
|
||||
else:
|
||||
print "RAPT build succeeded."
|
||||
|
||||
if not os.path.exists(destination):
|
||||
os.makedirs(destination)
|
||||
@@ -136,24 +165,6 @@ def main():
|
||||
print
|
||||
subprocess.check_call(cmd)
|
||||
|
||||
# Kick off the rapt build.
|
||||
if not args.fast:
|
||||
out = open("/tmp/rapt_build.txt", "wb")
|
||||
|
||||
print("Building RAPT in the background.")
|
||||
|
||||
android = os.path.abspath("android")
|
||||
|
||||
rapt_build = subprocess.Popen([
|
||||
os.path.join(android, "build_renpy.sh"),
|
||||
zip_version
|
||||
],
|
||||
cwd = android,
|
||||
stdout=out,
|
||||
stderr=out)
|
||||
else:
|
||||
rapt_build = None
|
||||
|
||||
# Sign the update.
|
||||
if not args.fast:
|
||||
subprocess.check_call([
|
||||
@@ -166,6 +177,9 @@ def main():
|
||||
# Write 7z.exe.
|
||||
sdk = "renpy-{}-sdk".format(zip_version)
|
||||
|
||||
if args.version.startswith("renpy-nightly-"):
|
||||
sdk = args.version + "-sdk"
|
||||
|
||||
if not args.fast:
|
||||
|
||||
# shutil.copy("renpy-ppc.zip", os.path.join(destination, "renpy-ppc.zip"))
|
||||
@@ -214,12 +228,5 @@ def main():
|
||||
|
||||
print
|
||||
|
||||
if rapt_build:
|
||||
code = rapt_build.wait()
|
||||
if code:
|
||||
print "RAPT build failed. The output is in /tmp/rapt_build.txt"
|
||||
else:
|
||||
print "RAPT build succeeded."
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# Checks for various abilities that might be taken away from us by
|
||||
# redistributors.
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
screen about:
|
||||
|
||||
@@ -14,7 +32,7 @@ screen about:
|
||||
|
||||
has vbox xfill True
|
||||
|
||||
add "logo.png" xalign 0.5 yoffset -5
|
||||
add "images/logo.png" xalign 0.5 yoffset -5
|
||||
|
||||
null height 15
|
||||
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
label add_file:
|
||||
|
||||
python hide:
|
||||
|
||||
@@ -1,17 +1,34 @@
|
||||
# Copyright 2004-2013 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python:
|
||||
ANDROID_NO_JDK = 0
|
||||
ANDROID_NO_RAPT = 1
|
||||
ANDROID_NO_RAPT = 0
|
||||
ANDROID_NO_JDK = 1
|
||||
ANDROID_NO_SDK = 2
|
||||
ANDROID_NO_KEY = 3
|
||||
ANDROID_NO_CONFIG = 4
|
||||
ANDROID_OK = 5
|
||||
|
||||
|
||||
NO_RAPT_TEXT = _("To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher.")
|
||||
NO_JDK_TEXT = _("A 32-bit Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}download and install the JDK{/a}, then restart the Ren'Py launcher.")
|
||||
NO_RAPT_TEXT = _("To build Android packages, please download RAPT (from {a=http://www.renpy.org/dl/android}here{/a}), unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher.")
|
||||
NO_SDK_TEXT = _("RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this.")
|
||||
NO_KEY_TEXT = _("RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore.")
|
||||
NO_CONFIG_TEXT = _("The current project has not been configured. Use \"Configure\" to configure it before building.")
|
||||
@@ -39,28 +56,14 @@ init python:
|
||||
|
||||
candidates = [ ]
|
||||
|
||||
for fn in os.listdir(config.renpy_base):
|
||||
if not fn.startswith("rapt-"):
|
||||
continue
|
||||
|
||||
if not os.path.isdir(os.path.join(config.renpy_base, fn)):
|
||||
continue
|
||||
|
||||
try:
|
||||
version = fn[5:]
|
||||
version = tuple(int(i) for i in version.split('.'))
|
||||
except ValueError:
|
||||
continue
|
||||
|
||||
candidates.append((version, fn))
|
||||
|
||||
if not candidates:
|
||||
RAPT_PATH = None
|
||||
else:
|
||||
RAPT_PATH = os.path.join(config.renpy_base, candidates[-1][1])
|
||||
RAPT_PATH = os.path.join(config.renpy_base, "rapt")
|
||||
|
||||
if os.path.isdir(RAPT_PATH):
|
||||
import sys
|
||||
sys.path.insert(0, os.path.join(RAPT_PATH, "buildlib"))
|
||||
else:
|
||||
RAPT_PATH = None
|
||||
RAPT_PATH is None
|
||||
|
||||
find_rapt()
|
||||
|
||||
@@ -72,6 +75,7 @@ init python:
|
||||
import rapt.configure
|
||||
import rapt.install_sdk
|
||||
import rapt.plat
|
||||
import rapt.interface
|
||||
else:
|
||||
rapt = None
|
||||
|
||||
@@ -80,10 +84,10 @@ init python:
|
||||
Determines the state of the android install, and returns it.
|
||||
"""
|
||||
|
||||
if renpy.windows and not "JAVA_HOME" in os.environ:
|
||||
return ANDROID_NO_JDK
|
||||
if RAPT_PATH is None:
|
||||
return ANDROID_NO_RAPT
|
||||
if renpy.windows and not "JAVA_HOME" in os.environ:
|
||||
return ANDROID_NO_JDK
|
||||
if not os.path.exists(os.path.join(RAPT_PATH, "android-sdk/extras/google/play_licensing")):
|
||||
return ANDROID_NO_SDK
|
||||
if not os.path.exists(os.path.join(RAPT_PATH, "android.keystore")):
|
||||
@@ -98,10 +102,10 @@ init python:
|
||||
Returns text corresponding to the state.
|
||||
"""
|
||||
|
||||
if state == ANDROID_NO_JDK:
|
||||
return NO_JDK_TEXT
|
||||
if state == ANDROID_NO_RAPT:
|
||||
return NO_RAPT_TEXT
|
||||
if state == ANDROID_NO_JDK:
|
||||
return NO_JDK_TEXT
|
||||
if state == ANDROID_NO_SDK:
|
||||
return NO_SDK_TEXT
|
||||
if state == ANDROID_NO_KEY:
|
||||
@@ -133,9 +137,16 @@ init python:
|
||||
with open(self.filename, "w"):
|
||||
pass
|
||||
|
||||
def log(self, msg):
|
||||
with open(self.filename, "a") as f:
|
||||
f.write("\n")
|
||||
f.write(msg)
|
||||
f.write("\n")
|
||||
|
||||
def info(self, prompt):
|
||||
self.info_msg = prompt
|
||||
interface.processing(prompt, pause=False)
|
||||
self.log(prompt)
|
||||
|
||||
def yesno(self, prompt, submessage=None):
|
||||
return interface.yesno(prompt, submessage=submessage)
|
||||
@@ -146,7 +157,10 @@ init python:
|
||||
|
||||
def terms(self, url, prompt):
|
||||
submessage = _("{a=%s}%s{/a}") % (url, url)
|
||||
return interface.yesno(prompt, submessage=submessage)
|
||||
|
||||
if not interface.yesno(prompt, submessage=submessage):
|
||||
self.fail("You must accept the terms and conditions to proceed.", edit=False)
|
||||
|
||||
|
||||
def input(self, prompt, empty=None):
|
||||
|
||||
@@ -164,18 +178,22 @@ init python:
|
||||
def choice(self, prompt, choices, default):
|
||||
return interface.choice(prompt, choices, default, cancel=Jump("android"))
|
||||
|
||||
def fail(self, prompt):
|
||||
def fail(self, prompt, edit=True):
|
||||
self.log(prompt)
|
||||
prompt = re.sub(r'(http://\S+)', r'{a=\1}\1{/a}', prompt)
|
||||
|
||||
# Open android.txt in the editor.
|
||||
editor.EditAbsolute(self.filename)()
|
||||
if edit:
|
||||
editor.EditAbsolute(self.filename)()
|
||||
|
||||
interface.error(prompt, label="android")
|
||||
|
||||
def success(self, prompt):
|
||||
self.log(prompt)
|
||||
interface.info(prompt, pause=False)
|
||||
|
||||
def final_success(self, prompt):
|
||||
self.log(prompt)
|
||||
interface.info(prompt, label="android")
|
||||
|
||||
def call(self, cmd, cancel=False, use_path=False):
|
||||
@@ -276,16 +294,19 @@ init python:
|
||||
p = project.current
|
||||
p.launch(env=env)
|
||||
|
||||
def update_android_json():
|
||||
def update_android_json(p, gui):
|
||||
"""
|
||||
Updates .android.json to include the google play information.
|
||||
|
||||
`p`
|
||||
The project to update json for.
|
||||
"""
|
||||
|
||||
project.current.update_dump(True)
|
||||
p.update_dump(True, gui=gui)
|
||||
|
||||
build = project.current.dump["build"]
|
||||
build = p.dump["build"]
|
||||
|
||||
filename = os.path.join(project.current.path, ".android.json")
|
||||
filename = os.path.join(p.path, ".android.json")
|
||||
|
||||
with open(filename, "r") as f:
|
||||
android_json = json.load(f)
|
||||
@@ -308,20 +329,30 @@ init python:
|
||||
with open(filename, "w") as f:
|
||||
json.dump(android_json, f)
|
||||
|
||||
def android_build(command):
|
||||
def android_build(command, p=None, gui=True):
|
||||
"""
|
||||
This actually builds the package.
|
||||
"""
|
||||
|
||||
update_android_json()
|
||||
if p is None:
|
||||
p = project.current
|
||||
|
||||
dist = project.current.temp_filename("android.dist")
|
||||
update_android_json(p, gui)
|
||||
|
||||
dist = p.temp_filename("android.dist")
|
||||
|
||||
if os.path.exists(dist):
|
||||
shutil.rmtree(dist)
|
||||
|
||||
if gui:
|
||||
reporter = distribute.GuiReporter()
|
||||
rapt_interface = AndroidInterface()
|
||||
else:
|
||||
reporter = distribute.TextReporter()
|
||||
rapt_interface = rapt.interface.Interface()
|
||||
|
||||
distribute.Distributor(project.current,
|
||||
reporter=distribute.GuiReporter(),
|
||||
reporter=reporter,
|
||||
packages=[ 'android' ],
|
||||
build_update=False,
|
||||
noarchive=True,
|
||||
@@ -330,12 +361,12 @@ init python:
|
||||
)
|
||||
|
||||
with interface.nolinks():
|
||||
rapt.build.build(AndroidInterface(), dist, command)
|
||||
rapt.build.build(rapt_interface, dist, command)
|
||||
|
||||
# The android support can stick unicode into os.environ. Fix that.
|
||||
init 100 python:
|
||||
for k, v in list(os.environ.items()):
|
||||
if isinstance(v, str):
|
||||
if not isinstance(v, str):
|
||||
os.environ[k] = renpy.fsencode(v)
|
||||
|
||||
screen android_process(interface):
|
||||
@@ -468,6 +499,11 @@ screen android:
|
||||
|
||||
|
||||
label android:
|
||||
|
||||
if RAPT_PATH is None:
|
||||
$ interface.yesno(_("Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"), no=Jump("front_page"))
|
||||
$ add_dlc("rapt", restart=True)
|
||||
|
||||
call screen android
|
||||
|
||||
|
||||
@@ -500,3 +536,21 @@ label android_build_and_install:
|
||||
$ android_build([ 'release', 'install' ])
|
||||
|
||||
jump android
|
||||
|
||||
init python:
|
||||
|
||||
def android_build_command():
|
||||
ap = renpy.arguments.ArgumentParser()
|
||||
ap.add_argument("project", help="The path to the project directory.")
|
||||
ap.add_argument("command", help="Commands to pass to ant. (Try 'release' 'install'.)", nargs='+')
|
||||
|
||||
args = ap.parse_args()
|
||||
|
||||
p = project.Project(args.project)
|
||||
|
||||
android_build(args.command, p=p, gui=False)
|
||||
|
||||
return False
|
||||
|
||||
renpy.arguments.register_command("android_build", android_build_command)
|
||||
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# Ren'Py archiver. This builds a Ren'Py archive file, and the
|
||||
# associated index file. These files are really easy to
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
# http://www.csn.ul.ie/~caolan/publink/winresdump/winresdump/doc/pefile.html
|
||||
# Contains a reasonable description of the format.
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python:
|
||||
import random
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# This file contains code that manages the distribution of Ren'Py games
|
||||
# and Ren'Py proper.
|
||||
@@ -313,6 +331,11 @@ init python in distribute:
|
||||
self.executable_name = build['executable_name']
|
||||
self.pretty_version = build['version']
|
||||
|
||||
if (" " in self.base_name) or (":" in self.base_name) or (";" in self.base_name):
|
||||
reporter.info(_("Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."), pause=True)
|
||||
self.log.close()
|
||||
return
|
||||
|
||||
# The destination directory.
|
||||
if destination is None:
|
||||
destination = build["destination"]
|
||||
@@ -559,7 +582,7 @@ init python in distribute:
|
||||
"""
|
||||
|
||||
SCRIPT_VERSION_RPY = os.path.join(config.gamedir, "script_version.rpy")
|
||||
SCRIPT_VERSION_RPYC = os.path.join(config.gamedir, "script_version.rpy")
|
||||
SCRIPT_VERSION_RPYC = os.path.join(config.gamedir, "script_version.rpyc")
|
||||
LICENSE_TXT = os.path.join(config.renpy_base, "LICENSE.txt")
|
||||
|
||||
if os.path.exists(SCRIPT_VERSION_RPY):
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python:
|
||||
class PackageToggle(Action):
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python:
|
||||
|
||||
import urllib2
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# Editor Support.
|
||||
#
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
define PROJECT_ADJUSTMENT = ui.adjustment()
|
||||
|
||||
@@ -25,14 +43,18 @@ init python:
|
||||
|
||||
def __call__(self):
|
||||
|
||||
directory = renpy.fsencode(self.directory)
|
||||
try:
|
||||
directory = renpy.fsencode(self.directory)
|
||||
|
||||
if renpy.windows:
|
||||
os.startfile(directory)
|
||||
elif renpy.macintosh:
|
||||
subprocess.Popen([ "open", directory ])
|
||||
else:
|
||||
subprocess.Popen([ "xdg-open", directory ])
|
||||
if renpy.windows:
|
||||
os.startfile(directory)
|
||||
elif renpy.macintosh:
|
||||
subprocess.Popen([ "open", directory ])
|
||||
else:
|
||||
subprocess.Popen([ "xdg-open", directory ])
|
||||
|
||||
except:
|
||||
pass
|
||||
|
||||
# Used for testing.
|
||||
def Relaunch():
|
||||
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 687 B After Width: | Height: | Size: 687 B |
|
Before Width: | Height: | Size: 96 B After Width: | Height: | Size: 96 B |
|
Before Width: | Height: | Size: 106 B After Width: | Height: | Size: 106 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
################################################################################
|
||||
# Interface actions.
|
||||
@@ -385,7 +403,7 @@ init python in interface:
|
||||
common(_("INFORMATION"), store.INFO_COLOR, message, submessage, pause0=True, **kwargs)
|
||||
|
||||
|
||||
def interaction(title, message, submessage=None, **kwargs):
|
||||
def interaction(title, message, submessage=None, pause=0, **kwargs):
|
||||
"""
|
||||
Put up on the screen while an interaction with an external program occurs.
|
||||
This shows the message, then immediately returns.
|
||||
@@ -398,9 +416,13 @@ init python in interface:
|
||||
|
||||
`submessage`
|
||||
An optional sub message.
|
||||
|
||||
`pause`
|
||||
The amount of time to pause for after showing the message.
|
||||
"""
|
||||
|
||||
common(title, store.INTERACTION_COLOR, message, submessage, pause0=True, **kwargs)
|
||||
common(title, store.INTERACTION_COLOR, message, submessage=None, pause=pause, show_screen=True, **kwargs)
|
||||
renpy.pause(pause)
|
||||
|
||||
def processing(message, submessage=None, complete=None, total=None, **kwargs):
|
||||
"""
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python in navigation:
|
||||
import store.interface as interface
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python:
|
||||
import shutil
|
||||
@@ -9,7 +27,7 @@ init python:
|
||||
|
||||
screen select_template:
|
||||
|
||||
default result = project.manager.get("template")
|
||||
default result = project.manager.get("english")
|
||||
|
||||
frame:
|
||||
style_group "l"
|
||||
@@ -81,7 +99,7 @@ label new_project:
|
||||
|
||||
# Delete the tmp directory, if it exists.
|
||||
if os.path.isdir(os.path.join(project_dir, "tmp")):
|
||||
os.path.rmtree(os.path.join(project_dir, "tmp"))
|
||||
shutil.rmtree(os.path.join(project_dir, "tmp"))
|
||||
|
||||
# Delete project.json, which must exist.
|
||||
os.unlink(os.path.join(project_dir, "project.json"))
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
## This file contains some of the options that can be changed to customize
|
||||
## your Ren'Py game. It only contains the most common options... there
|
||||
@@ -166,8 +184,8 @@ init -1 python hide:
|
||||
config.sound = False
|
||||
config.quit_action = Quit(confirm=False)
|
||||
config.gl_resize = False
|
||||
config.window_icon = "logo.png"
|
||||
config.windows_icon = "logo32.png"
|
||||
config.window_icon = "images/logo.png"
|
||||
config.windows_icon = "images/logo32.png"
|
||||
config.has_autosave = False
|
||||
config.log_enable = False
|
||||
config.mouse_hide_time = 86400 * 366
|
||||
@@ -223,6 +241,9 @@ init python:
|
||||
# correct for Ren'Py.
|
||||
|
||||
## Now, add the Ren'Py distribution in using classify_renpy.
|
||||
|
||||
build.classify_renpy("rapt/**", "rapt")
|
||||
|
||||
build.classify_renpy("**~", None)
|
||||
build.classify_renpy("**/#*", None)
|
||||
build.classify_renpy("**/thumbs.db", None)
|
||||
@@ -234,20 +255,36 @@ init python:
|
||||
build.classify_renpy("**.pyc", None)
|
||||
|
||||
build.classify_renpy("**/log.txt", None)
|
||||
build.classify_renpy("**/traceback.txt", None)
|
||||
build.classify_renpy("**/errors.txt", None)
|
||||
build.classify_renpy("**/saves/", None)
|
||||
build.classify_renpy("**/tmp/", None)
|
||||
build.classify_renpy("**/.Editra", None)
|
||||
|
||||
# main source.
|
||||
|
||||
def source_and_binary(pattern):
|
||||
"""
|
||||
Classifies source and binary files beginning with `pattern`.
|
||||
.pyo, .rpyc, .rpycm, and .rpyb go into binary, everything
|
||||
else goes into source.
|
||||
"""
|
||||
|
||||
build.classify_renpy(pattern + ".pyo", "binary")
|
||||
build.classify_renpy(pattern + ".rpyc", "binary")
|
||||
build.classify_renpy(pattern + ".rpymc", "binary")
|
||||
build.classify_renpy(pattern + ".rpyb", "binary")
|
||||
build.classify_renpy(pattern, "source")
|
||||
|
||||
build.classify_renpy("renpy.py", "source")
|
||||
build.classify_renpy("renpy/**", "source")
|
||||
source_and_binary("renpy/**")
|
||||
|
||||
# games.
|
||||
build.classify_renpy("launcher/game/theme/", None)
|
||||
build.classify_renpy("launcher/**", "source")
|
||||
build.classify_renpy("templates/**", "source")
|
||||
build.classify_renpy("the_question/**", "source")
|
||||
build.classify_renpy("tutorial/**", "source")
|
||||
source_and_binary("launcher/**")
|
||||
source_and_binary("templates/**")
|
||||
source_and_binary("the_question/**")
|
||||
source_and_binary("tutorial/**")
|
||||
|
||||
# docs.
|
||||
build.classify_renpy("doc/", "source")
|
||||
@@ -298,8 +335,9 @@ init python:
|
||||
build.package("sdk", "zip tar.bz2", "source binary")
|
||||
build.package("source", "tar.bz2", "source", update=False)
|
||||
|
||||
build.package("jedit", "zip", "jedit")
|
||||
build.package("jedit", "zip", "jedit", dlc=True)
|
||||
build.package("editra-linux", "tar.bz2", "editra-all editra-linux", dlc=True)
|
||||
build.package("editra-mac", "zip", "editra-all editra-mac", dlc=True)
|
||||
build.package("editra-windows", "zip", "editra-all editra-windows", dlc=True)
|
||||
build.package("rapt", "zip", "rapt", dlc=True)
|
||||
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python in distribute:
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#@PydevCodeAnalysisIgnore
|
||||
|
||||
|
||||
"""pefile, Portable Executable reader module
|
||||
|
||||
|
||||
@@ -15,10 +16,29 @@ To the best of my knowledge most of the abuses are handled gracefully.
|
||||
|
||||
Copyright (c) 2005, 2006, 2007, 2008, 2009 Ero Carrera <ero@dkbza.org>
|
||||
|
||||
All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
For detailed copyright information see the file COPYING in
|
||||
the root of the distribution archive.
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. The name of the author may not be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
__revision__ = "$LastChangedRevision: 63 $"
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python:
|
||||
if persistent.gl_enable is None:
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# Code that manages projects.
|
||||
|
||||
@@ -23,6 +41,15 @@ init python in project:
|
||||
import re
|
||||
import tempfile
|
||||
|
||||
if persistent.blurb is None:
|
||||
persistent.blurb = 0
|
||||
|
||||
LAUNCH_BLURBS = [
|
||||
_("After making changes to the script, press shift+R to reload your game."),
|
||||
_("Press shift+O (the letter) to access the console."),
|
||||
_("Press shift+D to access the developer menu."),
|
||||
]
|
||||
|
||||
class Project(object):
|
||||
|
||||
def __init__(self, path):
|
||||
@@ -188,7 +215,8 @@ init python in project:
|
||||
p = subprocess.Popen(cmd, env=environ)
|
||||
|
||||
if wait:
|
||||
p.wait()
|
||||
if p.wait():
|
||||
interface.error(_("Launching the project failed."), _("Please ensure that your project launches normally before running this command."))
|
||||
|
||||
def update_dump(self, force=False, gui=True):
|
||||
"""
|
||||
@@ -246,7 +274,7 @@ init python in project:
|
||||
except:
|
||||
continue
|
||||
|
||||
m = re.search(r".*#\s*TODO(\s*:\s*|\s+)(.*)", line, re.I)
|
||||
m = re.search(ur".*#\s*TODO(\s*:\s*|\s+)(.*)", line, re.I)
|
||||
|
||||
if m is None:
|
||||
continue
|
||||
@@ -258,7 +286,7 @@ init python in project:
|
||||
|
||||
while not todo_text or todo_text in todos:
|
||||
index += 1
|
||||
todo_text = "{0} ({1})".format(raw_todo_text, index)
|
||||
todo_text = u"{0} ({1})".format(raw_todo_text, index)
|
||||
|
||||
todos[todo_text] = [f, l]
|
||||
|
||||
@@ -480,8 +508,16 @@ init python in project:
|
||||
def get_sensitive(self):
|
||||
return self.project is not None
|
||||
|
||||
def post_launch(self):
|
||||
blurb = LAUNCH_BLURBS[persistent.blurb % len(LAUNCH_BLURBS)]
|
||||
persistent.blurb += 1
|
||||
|
||||
interface.interaction(_("Launching"), blurb, pause=2.5)
|
||||
|
||||
|
||||
def __call__(self):
|
||||
self.project.launch()
|
||||
renpy.invoke_in_new_context(self.post_launch)
|
||||
|
||||
class Rescan(Action):
|
||||
def __call__(self):
|
||||
@@ -535,17 +571,23 @@ label choose_projects_directory:
|
||||
|
||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
||||
choice = p.stdout.read()
|
||||
p.wait()
|
||||
|
||||
if choice:
|
||||
path = renpy.fsdecode(choice)
|
||||
code = p.wait()
|
||||
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
code = 0
|
||||
choice = ""
|
||||
path = None
|
||||
interface.error(_("Ren'Py was unable to run python with tkinter to choose the projects directory."), label=None)
|
||||
|
||||
interface.error(_("Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."), label=None)
|
||||
|
||||
if code:
|
||||
interface.error(_("Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."), label=None)
|
||||
|
||||
elif choice:
|
||||
path = renpy.fsdecode(choice)
|
||||
|
||||
if path is None:
|
||||
path = default_path
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init -1 python:
|
||||
|
||||
@@ -21,14 +39,14 @@ init -1 python:
|
||||
SCROLLBAR_HOVER = "#d86b45"
|
||||
|
||||
# An image used as a separator pattern.
|
||||
PATTERN = "pattern.png"
|
||||
PATTERN = "images/pattern.png"
|
||||
|
||||
# A displayable used for the background of everything.
|
||||
BACKGROUND = "background.png"
|
||||
BACKGROUND = "images/background.png"
|
||||
|
||||
# A displayable used for the background of windows
|
||||
# containing commands, preferences, and navigation info.
|
||||
WINDOW = Frame("window.png", 0, 0, tile=True)
|
||||
WINDOW = Frame("images/window.png", 0, 0, tile=True)
|
||||
|
||||
# A displayable used for the background of the projects list.
|
||||
PROJECTS_WINDOW = Null()
|
||||
@@ -45,8 +63,13 @@ init -1 python:
|
||||
# The color of input text.
|
||||
INPUT_COLOR = "#d86b45"
|
||||
|
||||
# FONTS/WEIGHTS
|
||||
LIGHT = "Roboto-Light.ttf"
|
||||
REGULAR = "Roboto-Regular.ttf"
|
||||
DARK = "Roboto-Medium.ttf"
|
||||
|
||||
init 1 python:
|
||||
|
||||
INDENT = 20
|
||||
HALF_INDENT = 10
|
||||
|
||||
@@ -61,243 +84,247 @@ init 1 python:
|
||||
HALF_SPACER_HEIGHT = 6
|
||||
HALF_SPACER = Null(height=HALF_SPACER_HEIGHT)
|
||||
|
||||
# FONTS/WEIGHTS
|
||||
LIGHT = "Roboto-Light.ttf"
|
||||
REGULAR = "Roboto-Regular.ttf"
|
||||
DARK = "Roboto-Medium.ttf"
|
||||
|
||||
# DIVIDING THE SCREEN
|
||||
ONETHIRD = 258
|
||||
TWOTHIRDS = 496
|
||||
ONEHALF = 377
|
||||
|
||||
# Default style.
|
||||
style.l_default = Style(style.default)
|
||||
style.l_default.font = LIGHT
|
||||
style.l_default.color = TEXT
|
||||
style.l_default.idle_color = IDLE
|
||||
style.l_default.hover_color = HOVER
|
||||
style.l_default.size = 18
|
||||
def checkbox(full, color):
|
||||
if full:
|
||||
return im.Twocolor("images/checkbox_full.png", color, color, yalign=0.5)
|
||||
else:
|
||||
return im.Twocolor("images/checkbox_empty.png", color, color, yalign=0.5)
|
||||
|
||||
style.l_text = Style(style.l_default)
|
||||
init 1:
|
||||
|
||||
style.l_button = Style(style.l_default)
|
||||
style.l_button_text = Style(style.l_default)
|
||||
style.l_button_text.insensitive_color = DISABLED
|
||||
style.l_button_text.selected_font = REGULAR
|
||||
# The default style.
|
||||
style l_default is default:
|
||||
font LIGHT
|
||||
color TEXT
|
||||
idle_color IDLE
|
||||
hover_color HOVER
|
||||
size 18
|
||||
|
||||
style l_text is l_default
|
||||
|
||||
style l_button is l_default
|
||||
style l_button_text is l_default:
|
||||
insensitive_color DISABLED
|
||||
selected_font REGULAR
|
||||
|
||||
# A small button, used at the bottom of the screen.
|
||||
style.l_link = Style(style.l_default)
|
||||
style.l_link_text = Style(style.l_default)
|
||||
style.l_link_text.size = 14
|
||||
style.l_link_text.font = LIGHT
|
||||
style l_link is l_default
|
||||
style l_link_text is l_default:
|
||||
size 14
|
||||
font LIGHT
|
||||
|
||||
# Action buttons on the bottom of the screen.
|
||||
style.l_right_button = Style(style.l_default)
|
||||
style.l_right_button.xalign = 1.0
|
||||
style.l_right_button.ypos = 600 - 128 + 12
|
||||
style.l_right_button.left_margin = 8 + INDENT
|
||||
style.l_right_button.right_margin = 10 + INDENT
|
||||
style.l_right_button_text = Style(style.l_default)
|
||||
style.l_right_button_text.size = 30
|
||||
style l_right_button is l_default:
|
||||
xalign 1.0
|
||||
ypos 600 - 128 + 12
|
||||
left_margin 8 + INDENT
|
||||
right_margin 10 + INDENT
|
||||
|
||||
style.l_left_button = Style(style.l_right_button)
|
||||
style.l_left_button.xalign = 0.0
|
||||
style.l_left_button_text = Style(style.l_right_button_text)
|
||||
style l_right_button_text is l_default:
|
||||
size 30
|
||||
|
||||
style l_left_button is l_right_button:
|
||||
xalign 0.0
|
||||
|
||||
style l_left_button_text is l_right_button_text
|
||||
|
||||
|
||||
# The root frame. This contains everything but the bottom navigation, back
|
||||
# button, and tooltip button.
|
||||
style.l_root = Style(style.l_default)
|
||||
style.l_root.background = BACKGROUND
|
||||
style.l_root.xpadding = 10
|
||||
style.l_root.top_padding = 64
|
||||
style.l_root.bottom_padding = 128
|
||||
# The root frame. This contains everything but the bottom navigation,
|
||||
# and buttons.
|
||||
style l_root is l_default:
|
||||
background BACKGROUND
|
||||
xpadding 10
|
||||
top_padding 64
|
||||
bottom_padding 128
|
||||
|
||||
# An inner window.
|
||||
style.l_window = Style(style.l_default)
|
||||
style l_window is l_default:
|
||||
background WINDOW
|
||||
left_padding 6
|
||||
xfill True
|
||||
yfill True
|
||||
|
||||
style.l_window.background = WINDOW
|
||||
# Normal size labels.
|
||||
style l_label is l_default:
|
||||
xfill True
|
||||
top_padding 10
|
||||
bottom_padding 8
|
||||
bottom_margin 12
|
||||
background SEPARATOR
|
||||
|
||||
style.l_window.left_padding = 6
|
||||
style.l_window.xfill = True
|
||||
style.l_window.yfill = True
|
||||
style l_label_text is l_default:
|
||||
size 24
|
||||
xpos INDENT
|
||||
yoffset 6
|
||||
|
||||
|
||||
# Normal-sized labels.
|
||||
style.l_label = Style(style.l_default)
|
||||
style.l_label.xfill = True
|
||||
style.l_label.top_padding = 10
|
||||
style.l_label.bottom_padding = 8
|
||||
style.l_label.bottom_margin = 12
|
||||
style.l_label.background = SEPARATOR
|
||||
style.l_label_text = Style(style.l_default)
|
||||
style.l_label_text.size = 24
|
||||
style.l_label_text.xpos = INDENT
|
||||
style.l_label_text.yoffset = 6
|
||||
style l_label_small is l_default:
|
||||
xfill True
|
||||
bottom_padding 8
|
||||
bottom_margin HALF_SPACER_HEIGHT
|
||||
background SEPARATOR
|
||||
|
||||
# Small labels.
|
||||
style.l_label_small = Style(style.l_default)
|
||||
style.l_label_small.xfill = True
|
||||
style.l_label_small.bottom_padding = 8
|
||||
style.l_label_small.bottom_margin = HALF_SPACER_HEIGHT
|
||||
style.l_label_small.background = SEPARATOR
|
||||
style.l_label_small_text = Style(style.l_default)
|
||||
style.l_label_small_text.xpos = INDENT
|
||||
style.l_label_small_text.yoffset = 6
|
||||
style.l_label_small_text.size = 20
|
||||
style l_label_small_text is l_default:
|
||||
xpos INDENT
|
||||
yoffset 6
|
||||
size 20
|
||||
|
||||
# Alternate labels. This nests inside an l_label, and gives a button
|
||||
# or label that's nested inside another label.
|
||||
style.l_alternate = Style(style.l_default)
|
||||
style.l_alternate.xalign = 1.0
|
||||
style.l_alternate.yalign = 1.0
|
||||
style.l_alternate.yoffset = 4
|
||||
style.l_alternate.right_margin = INDENT
|
||||
style.l_alternate_text = Style(style.l_default)
|
||||
style.l_alternate_text.size = 14
|
||||
style.l_alternate_text.font = LIGHT
|
||||
style.l_alternate_text.text_align = 1.0
|
||||
|
||||
style.l_small_button = Style(style.l_button)
|
||||
style.l_small_button_text = Style(style.l_button_text)
|
||||
style.l_small_button_text.size = 14
|
||||
style.l_small_text = Style(style.l_text)
|
||||
style.l_small_text.size = 14
|
||||
style l_alternate is l_default:
|
||||
xalign 1.0
|
||||
yalign 1.0
|
||||
yoffset 4
|
||||
right_margin INDENT
|
||||
|
||||
style l_alternate_text is l_default:
|
||||
size 14
|
||||
font LIGHT
|
||||
text_align 1.0
|
||||
|
||||
style l_small_button is l_button
|
||||
|
||||
style l_small_button_text is l_button_text:
|
||||
size 14
|
||||
|
||||
style l_small_text is l_text:
|
||||
size 14
|
||||
|
||||
# Indents its contents.
|
||||
style.l_indent = Style(style.l_default)
|
||||
style.l_indent.left_margin = INDENT
|
||||
style l_indent is l_default:
|
||||
left_margin INDENT
|
||||
|
||||
# Indents its contents and pads them vertically.
|
||||
style.l_indent_margin = Style(style.l_indent)
|
||||
style.l_indent_margin.ymargin = 6
|
||||
# Indents its contents and pads vertically.
|
||||
style l_indent_margin is l_indent:
|
||||
ymargin 6
|
||||
|
||||
# List button.
|
||||
style.l_list = Style(style.l_default)
|
||||
style.l_list.left_padding = HALF_INDENT
|
||||
style.l_list.xfill = True
|
||||
style.l_list.selected_background = REVERSE_IDLE
|
||||
style.l_list.selected_hover_background = REVERSE_HOVER
|
||||
style.l_list_text = Style(style.l_default)
|
||||
style.l_list_text.idle_color = IDLE
|
||||
style.l_list_text.hover_color = HOVER
|
||||
style.l_list_text.selected_idle_color = REVERSE_TEXT
|
||||
style.l_list_text.selected_hover_color = REVERSE_TEXT
|
||||
style.l_list_text.insensitive_color = DISABLED
|
||||
# Lists.
|
||||
style l_list is l_default:
|
||||
left_padding HALF_INDENT
|
||||
xfill True
|
||||
selected_background REVERSE_IDLE
|
||||
selected_hover_background REVERSE_HOVER
|
||||
|
||||
style.l_list2 = Style(style.l_list)
|
||||
style.l_list2.left_padding = HALF_INDENT + INDENT
|
||||
style.l_list2_text = Style(style.l_list_text)
|
||||
style l_list_text is l_default:
|
||||
idle_color IDLE
|
||||
hover_color HOVER
|
||||
selected_idle_color REVERSE_TEXT
|
||||
selected_hover_color REVERSE_TEXT
|
||||
insensitive_color DISABLED
|
||||
|
||||
style l_list2 is l_list:
|
||||
left_padding (HALF_INDENT + INDENT)
|
||||
|
||||
style l_list2_text is l_list_text
|
||||
|
||||
# Scrollbar.
|
||||
style.l_vscrollbar = Style(style.l_default)
|
||||
style.l_vscrollbar.thumb = Fixed(
|
||||
Solid(SCROLLBAR_IDLE, xmaximum=8, xalign=0.5),
|
||||
Image("vscrollbar_center.png", xalign=0.5, yalign=0.5),
|
||||
xmaximum = SCROLLBAR_SIZE)
|
||||
style.l_vscrollbar.hover_thumb = Fixed(
|
||||
Solid(SCROLLBAR_HOVER, xmaximum=8, xalign=0.5),
|
||||
Image("vscrollbar_center.png", xalign=0.5, yalign=0.5),
|
||||
xmaximum = SCROLLBAR_SIZE)
|
||||
style.l_vscrollbar.xmaximum = SCROLLBAR_SIZE
|
||||
style.l_vscrollbar.bar_vertical = True
|
||||
style.l_vscrollbar.bar_invert = True
|
||||
style.l_vscrollbar.unscrollable = "hide"
|
||||
|
||||
style l_vscrollbar is l_default:
|
||||
thumb Fixed(
|
||||
Solid(SCROLLBAR_IDLE, xmaximum=8, xalign=0.5),
|
||||
Image("images/vscrollbar_center.png", xalign=0.5, yalign=0.5),
|
||||
xmaximum = SCROLLBAR_SIZE)
|
||||
hover_thumb Fixed(
|
||||
Solid(SCROLLBAR_HOVER, xmaximum=8, xalign=0.5),
|
||||
Image("images/vscrollbar_center.png", xalign=0.5, yalign=0.5),
|
||||
xmaximum = SCROLLBAR_SIZE)
|
||||
xmaximum SCROLLBAR_SIZE
|
||||
bar_vertical True
|
||||
bar_invert True
|
||||
unscrollable "hide"
|
||||
|
||||
# Information window.
|
||||
style.l_info_vbox = Style(style.vbox)
|
||||
style.l_info_vbox.yalign = 0.5
|
||||
style.l_info_vbox.xalign = 0.5
|
||||
style.l_info_vbox.xfill = True
|
||||
style l_info_vbox is vbox:
|
||||
yalign 0.5
|
||||
xalign 0.5
|
||||
xfill True
|
||||
|
||||
style.l_info_frame = Style(style.l_default)
|
||||
style.l_info_frame.ypadding = 21
|
||||
style.l_info_frame.xfill = True
|
||||
style l_info_frame is l_default:
|
||||
ypadding 21
|
||||
xfill True
|
||||
background Fixed(
|
||||
INFO_WINDOW,
|
||||
Frame(PATTERN, 0, 0, tile=True, ymaximum=5, yalign=0.0, yoffset=8),
|
||||
Frame(PATTERN, 0, 0, tile=True, ymaximum=5, yalign=1.0, yoffset=-8),
|
||||
)
|
||||
yminimum 180
|
||||
ypos 75
|
||||
|
||||
style.l_info_frame.background = Fixed(
|
||||
INFO_WINDOW,
|
||||
Frame(PATTERN, 0, 0, tile=True, ymaximum=5, yalign=0.0, yoffset=8),
|
||||
Frame(PATTERN, 0, 0, tile=True, ymaximum=5, yalign=1.0, yoffset=-8),
|
||||
)
|
||||
style l_info_label is l_default:
|
||||
xalign 0.5
|
||||
ypos 75
|
||||
yanchor 1.0
|
||||
yoffset 12
|
||||
|
||||
style.l_info_frame.yminimum = 180
|
||||
style.l_info_frame.ypos = 75
|
||||
style l_info_label_text is l_default:
|
||||
size 36
|
||||
|
||||
style.l_info_label = Style(style.l_default)
|
||||
style.l_info_label.xalign = 0.5
|
||||
style.l_info_label.ypos = 75
|
||||
style.l_info_label.yanchor = 1.0
|
||||
style.l_info_label.yoffset = 12
|
||||
style.l_info_label_text = Style(style.l_default)
|
||||
style.l_info_label_text.size = 36
|
||||
style l_info_text is l_default:
|
||||
xalign 0.5
|
||||
|
||||
style.l_info_text = Style(style.l_default)
|
||||
style.l_info_text.xalign = 0.5
|
||||
style l_info_button is l_button:
|
||||
xalign 0.5
|
||||
xmargin 50
|
||||
|
||||
style.l_info_button = Style(style.l_button)
|
||||
style.l_info_button.xalign = 0.5
|
||||
style.l_info_button.xmargin = 50
|
||||
style.l_info_button_text = Style(style.l_button_text)
|
||||
style.l_info_button_text.text_align = 0.5
|
||||
style.l_info_button_text.layout = "subtitle"
|
||||
style l_info_button_text is l_button_text:
|
||||
text_align 0.5
|
||||
layout "subtitle"
|
||||
|
||||
# Code navigation
|
||||
style.l_navigation_button = Style(style.l_button)
|
||||
style.l_navigation_button.size_group = "navigation"
|
||||
style.l_navigation_button.right_margin = INDENT
|
||||
style.l_navigation_button.top_margin = 3
|
||||
style.l_navigation_button_text = Style(style.l_button_text)
|
||||
style.l_navigation_button_text.size = 14
|
||||
style.l_navigation_button_text.font = REGULAR
|
||||
# Progress bar.
|
||||
style l_progress_frame is l_default:
|
||||
background Frame(PATTERN, 0, 0, tile=True)
|
||||
ypadding 5
|
||||
|
||||
style.l_navigation_text = Style(style.l_text)
|
||||
style.l_navigation_text.size = 12
|
||||
style.l_navigation_text.font = LIGHT
|
||||
style.l_navigation_text.color = TEXT
|
||||
style l_progress_bar is l_default:
|
||||
left_bar REVERSE_IDLE
|
||||
right_bar Null()
|
||||
ymaximum 24
|
||||
|
||||
# Check boxes
|
||||
style.l_checkbox = Style(style.l_button)
|
||||
style.l_checkbox.left_padding = INDENT
|
||||
# Navigation.
|
||||
style l_navigation_button is l_button:
|
||||
size_group "navigation"
|
||||
right_margin INDENT
|
||||
top_margin 3
|
||||
|
||||
def checkbox(full, color):
|
||||
if full:
|
||||
return im.Twocolor("checkbox_full.png", color, color, yalign=0.5)
|
||||
else:
|
||||
return im.Twocolor("checkbox_empty.png", color, color, yalign=0.5)
|
||||
style l_navigation_button_text is l_button_text:
|
||||
size 14
|
||||
font REGULAR
|
||||
|
||||
style.l_checkbox.background = checkbox(False, IDLE)
|
||||
style.l_checkbox.hover_background = checkbox(False, HOVER)
|
||||
style.l_checkbox.selected_idle_background = checkbox(True, IDLE)
|
||||
style.l_checkbox.selected_hover_background = checkbox(True, HOVER)
|
||||
style.l_checkbox.insensitive_background = checkbox(False, DISABLED)
|
||||
style l_navigation_text is l_text:
|
||||
size 12
|
||||
font LIGHT
|
||||
color TEXT
|
||||
|
||||
style.l_checkbox_text = Style(style.l_button_text)
|
||||
style.l_checkbox_text.selected_font = LIGHT
|
||||
# Checkboxes.
|
||||
style l_checkbox is l_button:
|
||||
left_padding INDENT
|
||||
background checkbox(False, IDLE)
|
||||
hover_background checkbox(False, HOVER)
|
||||
selected_idle_background checkbox(True, IDLE)
|
||||
selected_hover_background checkbox(True, HOVER)
|
||||
insensitive_background checkbox(False, DISABLED)
|
||||
|
||||
# A normal button that lines up with checkboxes.
|
||||
style.l_nonbox = Style(style.l_button)
|
||||
style.l_nonbox.xpadding = INDENT
|
||||
style.l_nonbox_text = Style(style.l_button_text)
|
||||
style.l_nonbox_text.selected_font = LIGHT
|
||||
style l_checkbox_text is l_button_text:
|
||||
selected_font LIGHT
|
||||
|
||||
# A progress bar and its frame.
|
||||
style.l_progress_frame = Style(style.l_default)
|
||||
style.l_progress_frame.background = Frame(PATTERN, 0, 0, tile=True)
|
||||
style.l_progress_frame.ypadding = 5
|
||||
# Lines up with a checkbox.
|
||||
style l_nonbox is l_button:
|
||||
xpadding INDENT
|
||||
|
||||
style.l_progress_bar = Style(style.l_default)
|
||||
style.l_progress_bar.left_bar = REVERSE_IDLE
|
||||
style.l_progress_bar.right_bar = Null()
|
||||
style.l_progress_bar.ymaximum = 24
|
||||
style l_nonbox_text is l_button_text:
|
||||
selected_font LIGHT
|
||||
|
||||
# The projects window.
|
||||
style.l_projects = Style(style.l_default)
|
||||
style.l_projects.background = PROJECTS_WINDOW
|
||||
# Projects list.
|
||||
style l_projects is l_default:
|
||||
background PROJECTS_WINDOW
|
||||
|
||||
style.hyperlink_text.size = 18
|
||||
style.hyperlink_text.font = LIGHT
|
||||
style.hyperlink_text.color = IDLE
|
||||
style.hyperlink_text.hover_color = HOVER
|
||||
style hyperlink_text:
|
||||
size 18
|
||||
font LIGHT
|
||||
color IDLE
|
||||
hover_color HOVER
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2013 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
init python:
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python in theme_data:
|
||||
|
||||
@@ -554,6 +572,11 @@ init python in theme_data:
|
||||
## should take up the full height and width of the screen.
|
||||
gm_root = "%(gm_root)s",
|
||||
|
||||
## The fonts used by this theme. The default fonts may not be
|
||||
## suitable for non-English languages.
|
||||
regular_font = "_theme_awt/Quicksand-Regular.ttf",
|
||||
bold_font = "_theme_awt/Quicksand-Bold.ttf",
|
||||
|
||||
## And we're done with the theme. The theme will customize
|
||||
## various styles, so if we want to change them, we should
|
||||
## do so below.
|
||||
|
||||
@@ -1,7 +1,25 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# This is used on Linux and Mac to prompt the user for the projects
|
||||
# directory.
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
translate french strings:
|
||||
|
||||
# game/about.rpy:21
|
||||
old "[version!q]"
|
||||
new "[version!q]"
|
||||
|
||||
# game/about.rpy:25
|
||||
old "View license"
|
||||
new "Voir la licence"
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
translate french strings:
|
||||
|
||||
# game/add_file.rpy:7
|
||||
old "FILENAME"
|
||||
new "NOM DU FICHIER"
|
||||
|
||||
# game/add_file.rpy:7
|
||||
old "Enter the name of the script file to create."
|
||||
new "Entrez le nom du fichier de script à créer."
|
||||
|
||||
# game/add_file.rpy:10
|
||||
old "The filename must have the .rpy extension."
|
||||
new "Le fichier doit avoir l'extension .rpy."
|
||||
|
||||
# game/add_file.rpy:18
|
||||
old "The file already exists."
|
||||
new "Le fichier éxiste déjà."
|
||||
|
||||
# game/add_file.rpy:21
|
||||
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
|
||||
new "Ren'Py charge automatiquement tous les fichiers de script finissant par .rpy. Pour utiliser ce ficher\n#, définissez un label et faites un «jump» vers lui depuis un autre fichier.\n"
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
translate french strings:
|
||||
|
||||
# game/android.rpy:12
|
||||
old "To build Android packages, please download RAPT (from {a=http://www.renpy.org/dl/android}here{/a}), unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
|
||||
new "Pour construire les paquets Android, téléchargez RAPT (depuis {a=http://www.renpy.org/dl/android}here{/a}), dézippé le, et placez le dans le répertoire de Ren'Py. Puis, redémarrez Ren'Py."
|
||||
|
||||
# game/android.rpy:13
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
new "RAPT a été installé, mais vous devez installer le kit de développement Android pour pouvoir construire les paquets Android. Choisissez \"installer le kit de développement et créer les clés\" pour cela"
|
||||
|
||||
# game/android.rpy:14
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
|
||||
new "RAPT a été installé, mais aucune clé n'a été configurée. Créez une nouvelle clé, ou restaurez android.keystore."
|
||||
|
||||
# game/android.rpy:15
|
||||
old "The current project has not been configured. Use \"Configure\" to configure it before building."
|
||||
new "Le projet courant n'a pas été configuré. Choisissez \"Configurer\' pour effectuer la configuration."
|
||||
|
||||
# game/android.rpy:16
|
||||
old "Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device."
|
||||
new "Choisissez \"Construire\" pour construire le projet courant, ou connecté un appareil Android et choisissez \"Construire et Installer\" pour l'installer sur l'appareil."
|
||||
|
||||
# game/android.rpy:18
|
||||
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Tentative d'émulation d'un téléphone Android.\n\nLe touché est émulé via la souris, mails uniquement lorsque le bouton est pressé. La barre d'espace correspond au bouton menu, et la touche PageUp correspond au bouton retour."
|
||||
|
||||
# game/android.rpy:19
|
||||
old "Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Tentative d'émulation d'une tablette Android.\n\nLe touché est émulé via la souris, mails uniquement lorsque le bouton est pressé. La barre d'espace correspond au bouton menu, et la touche PageUp correspond au bouton retour."
|
||||
|
||||
# game/android.rpy:20
|
||||
old "Attempts to emulate an OUYA console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Tentative d'émulation d'une console OUYA.\n\nLe pad est émulé via les flèches du clavier. La touche Entrée correspond au bouton select, la barre d'espace au bouton menu, et la touche PageUp correspond au bouton retour."
|
||||
|
||||
# game/android.rpy:22
|
||||
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
|
||||
new "Télécharge et installe le kit de développement Android et les paquets supportés. Optionnellement, génère les clés requises pour signer le paquet."
|
||||
|
||||
# game/android.rpy:23
|
||||
old "Configures the package name, version, and other information about this project."
|
||||
new "Configure le nom du packet, sa version et d'autres informations à propos de ce projet."
|
||||
|
||||
# game/android.rpy:24
|
||||
old "Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details."
|
||||
new "Ouvre le fichier contenant les clés Google Play dans l'éditeur.\n\nCela est nécessaire uniquement si l'application utilise une expansion APK. Référez-vous à la documentation pour plus d'informations."
|
||||
|
||||
# game/android.rpy:25
|
||||
old "Builds the Android package."
|
||||
new "Construire le paquet Android."
|
||||
|
||||
# game/android.rpy:26
|
||||
old "Builds the Android package, and installs it on an Android device connected to your computer."
|
||||
new "Construire le paquet Android, et l'installer sur l'appareil Android connecté à votre ordinateur."
|
||||
|
||||
# game/android.rpy:142
|
||||
old "{a=%s}%s{/a}"
|
||||
new "{a=%s}%s{/a}"
|
||||
|
||||
# game/android.rpy:361
|
||||
old "Android: [project.current.name!q]"
|
||||
new "Android: [project.current.name!q]"
|
||||
|
||||
# game/android.rpy:381
|
||||
old "Emulation:"
|
||||
new "Émulateur:"
|
||||
|
||||
# game/android.rpy:389
|
||||
old "Phone"
|
||||
new "Téléphone"
|
||||
|
||||
# game/android.rpy:393
|
||||
old "Tablet"
|
||||
new "Tablette"
|
||||
|
||||
# game/android.rpy:397
|
||||
old "Television / OUYA"
|
||||
new "Télévision / OUYA"
|
||||
|
||||
# game/android.rpy:409
|
||||
old "Build:"
|
||||
new "Construire:"
|
||||
|
||||
# game/android.rpy:417
|
||||
old "Install SDK & Create Keys"
|
||||
new "Installer le kit de développement et créer les clés"
|
||||
|
||||
# game/android.rpy:421
|
||||
old "Configure"
|
||||
new "Configurer"
|
||||
|
||||
# game/android.rpy:425
|
||||
old "Build Package"
|
||||
new "Construire le paquet"
|
||||
|
||||
# game/android.rpy:429
|
||||
old "Build & Install"
|
||||
new "Construire et installer"
|
||||
|
||||
# game/android.rpy:13
|
||||
old "A 32-bit Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Un Kit de Développement Java (JDK) 32 bits est nécessaire pour construire les paquets pour Android depuis Windows. Le JDK n'est pas la même chose que le JRE, il est possible que Java soit installé sur votre machine sans le JDK.\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}Téléchargez et installez le JDK{/a}, puis relancer le lanceur Ren'Py."
|
||||
@@ -0,0 +1,41 @@
|
||||
translate french strings:
|
||||
|
||||
# game/choose_theme.rpy:274
|
||||
old "Could not change the theme. Perhaps options.rpy was changed too much."
|
||||
new "Impossible de changer le thème. Peut être que options.rpy a été trop modifié."
|
||||
|
||||
# game/choose_theme.rpy:332
|
||||
old "Display"
|
||||
new "Affichage"
|
||||
|
||||
# game/choose_theme.rpy:333
|
||||
old "Window"
|
||||
new "Fenêtre"
|
||||
|
||||
# game/choose_theme.rpy:334
|
||||
old "Fullscreen"
|
||||
new "Plein écran"
|
||||
|
||||
# game/choose_theme.rpy:335
|
||||
old "Planetarium"
|
||||
new "Planetarium"
|
||||
|
||||
# game/choose_theme.rpy:342
|
||||
old "Sound Volume"
|
||||
new "Volume sonore"
|
||||
|
||||
# game/choose_theme.rpy:376
|
||||
old "Choose Theme"
|
||||
new "Choisir un thème"
|
||||
|
||||
# game/choose_theme.rpy:389
|
||||
old "Theme"
|
||||
new "Thème"
|
||||
|
||||
# game/choose_theme.rpy:413
|
||||
old "Color Scheme"
|
||||
new "Agencement des couleurs"
|
||||
|
||||
# game/choose_theme.rpy:444
|
||||
old "Continue"
|
||||
new "Continuer"
|
||||
@@ -0,0 +1,281 @@
|
||||
translate french strings:
|
||||
|
||||
# renpy/common/00updater.rpy:1258
|
||||
old "Updater"
|
||||
new "Programme de mise à jour"
|
||||
|
||||
# renpy/common/00updater.rpy:1267
|
||||
old "This program is up to date."
|
||||
new "Ce programme est à jour."
|
||||
|
||||
# renpy/common/00updater.rpy:1269
|
||||
old "[u.version] is available. Do you want to install it?"
|
||||
new "La version [u.version]. Voulez-vous l'installer ?"
|
||||
|
||||
# renpy/common/00updater.rpy:1271
|
||||
old "Preparing to download the updates."
|
||||
new "Préparation du téléchargement de la mise à jour."
|
||||
|
||||
# renpy/common/00updater.rpy:1273
|
||||
old "Downloading the updates."
|
||||
new "Téléchargement de la mise à jour."
|
||||
|
||||
# renpy/common/00updater.rpy:1275
|
||||
old "Unpacking the updates."
|
||||
new "Dépaquetage de la mise à jour."
|
||||
|
||||
# renpy/common/00updater.rpy:1279
|
||||
old "The updates have been installed. The program will restart."
|
||||
new "La mise à jour a bien été effectuée. Le programme va redémarrer."
|
||||
|
||||
# renpy/common/00updater.rpy:1281
|
||||
old "The updates have been installed."
|
||||
new "La mise à jour a bien été effectuée."
|
||||
|
||||
# renpy/common/00updater.rpy:1283
|
||||
old "The updates were cancelled."
|
||||
new "La mise à jour a été annullée."
|
||||
|
||||
# renpy/common/_layout/classic_load_save.rpym:120
|
||||
old "Empty Slot."
|
||||
new "Emplacement vide."
|
||||
|
||||
# renpy/common/_layout/classic_load_save.rpym:152
|
||||
old "a"
|
||||
new "a"
|
||||
|
||||
# renpy/common/_layout/classic_load_save.rpym:161
|
||||
old "q"
|
||||
new "q"
|
||||
|
||||
# renpy/common/_layout/classic_joystick_preferences.rpym:76
|
||||
old "Joystick Mapping"
|
||||
new "Joystick"
|
||||
|
||||
# renpy/common/00layout.rpy:421
|
||||
old "Are you sure?"
|
||||
new "Êtes-vous sûr ?"
|
||||
|
||||
# renpy/common/00layout.rpy:422
|
||||
old "Are you sure you want to delete this save?"
|
||||
new "Êtes-vous sûr de vouloir supprimer cette sauvegarde ?"
|
||||
|
||||
# renpy/common/00layout.rpy:423
|
||||
old "Are you sure you want to overwrite your save?"
|
||||
new "Êtes-vous sûr de vouloir écraser cette sauvegarde ?"
|
||||
|
||||
# renpy/common/00layout.rpy:424
|
||||
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
|
||||
new "En effectuant ce chargement, vous perderez votre avancement non sauvegardé.\nÊtes-vous sûr de vouloire faire ça ?"
|
||||
|
||||
# renpy/common/00layout.rpy:425
|
||||
old "Are you sure you want to quit?"
|
||||
new "Êtes-vous sûr de vouloir quitter ?"
|
||||
|
||||
# renpy/common/00layout.rpy:426
|
||||
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
|
||||
new "Êtes-vous sûr de vouloir retourner au menu principal ?\nVous perdrez votre avancement non sauvegardé."
|
||||
|
||||
# renpy/common/00keymap.rpy:167
|
||||
old "Saved screenshot as %s."
|
||||
new "La capture d'écran a été enregistrée en tant que %s"
|
||||
|
||||
# renpy/common/00gltest.rpy:50
|
||||
old "Graphics Acceleration"
|
||||
new "Accélération graphique"
|
||||
|
||||
# renpy/common/00gltest.rpy:54
|
||||
old "Automatically Choose"
|
||||
new "Choix automatique"
|
||||
|
||||
# renpy/common/00gltest.rpy:59
|
||||
old "Force Angle/DirectX Renderer"
|
||||
new "Forcer le rendu Angle/DirectX"
|
||||
|
||||
# renpy/common/00gltest.rpy:63
|
||||
old "Force OpenGL Renderer"
|
||||
new "Forcer le rendu OpenGL"
|
||||
|
||||
# renpy/common/00gltest.rpy:67
|
||||
old "Force Software Renderer"
|
||||
new "Forcer le rendu logiciel"
|
||||
|
||||
# renpy/common/00gltest.rpy:73
|
||||
old "Changes will take effect the next time this program is run."
|
||||
new "Les changement seront pris en compte au prochin démarrage du programme."
|
||||
|
||||
# renpy/common/00gltest.rpy:77
|
||||
old "Quit"
|
||||
new "Quitter"
|
||||
|
||||
# renpy/common/00gltest.rpy:82
|
||||
old "Return"
|
||||
new "Retour"
|
||||
|
||||
# renpy/common/00gltest.rpy:112
|
||||
old "Performance Warning"
|
||||
new "Avertissement sur les performances"
|
||||
|
||||
# renpy/common/00gltest.rpy:117
|
||||
old "This computer is using software rendering."
|
||||
new "Cet ordinateur utilise le rendu logiciel."
|
||||
|
||||
# renpy/common/00gltest.rpy:119
|
||||
old "This computer is not using shaders."
|
||||
new "Cet ordinateur n'utilise pas les shaders."
|
||||
|
||||
# renpy/common/00gltest.rpy:121
|
||||
old "This computer is displaying graphics slowly."
|
||||
new "Cet ordinateur affiche lentement les graphismes."
|
||||
|
||||
# renpy/common/00gltest.rpy:123
|
||||
old "This computer has a problem displaying graphics: [problem]."
|
||||
new "Cet ordinateur rencontre des difficultés à afficher les graphismes: [problem]."
|
||||
|
||||
# renpy/common/00gltest.rpy:128
|
||||
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
|
||||
new "Les pilotes graphiques ne semblent pas à jour ou dysfonctionnent. Cela peut entraîner des ralentissements ou de mauvais affichages. Mettre à jour DirectX pourraît régler ce problème."
|
||||
|
||||
# renpy/common/00gltest.rpy:130
|
||||
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
|
||||
new "Les pilotes graphiques ne semblent pas à jour ou dysfonctionnent. Cela peut entraîner des ralentissements ou de mauvais affichages."
|
||||
|
||||
# renpy/common/00gltest.rpy:135
|
||||
old "Update DirectX"
|
||||
new "Mettre à jour DirectX"
|
||||
|
||||
# renpy/common/00gltest.rpy:141
|
||||
old "Continue, Show this warning again"
|
||||
new "Continer, Afficher cet avertissement la prochaine fois."
|
||||
|
||||
# renpy/common/00gltest.rpy:145
|
||||
old "Continue, Don't show warning again"
|
||||
new "Continer, Ne plus afficher cet avertissement."
|
||||
|
||||
# renpy/common/00gltest.rpy:171
|
||||
old "Updating DirectX."
|
||||
new "Mettre à jour de DirectX en cours"
|
||||
|
||||
# renpy/common/00gltest.rpy:175
|
||||
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
|
||||
new "La mise à jour de DirectX a débutée. Elle est sans doute minimisée dans la bare de tâche. Merci de suivre les instructions pour installer DirectX."
|
||||
|
||||
# renpy/common/00gltest.rpy:179
|
||||
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
|
||||
new "{b}Note:{/b} le programme d'installation de Microsoft's DirectX va, par defaut, installer la barre d'outils Bing. Si vous ne voulez pas de cette barre, décochez la case appropriée."
|
||||
|
||||
# renpy/common/00gltest.rpy:183
|
||||
old "When setup finishes, please click below to restart this program."
|
||||
new "Lorsque l'instllation sera terminée, cliquez ci-dessous pour redémarrer ce programme."
|
||||
|
||||
# renpy/common/00gltest.rpy:185
|
||||
old "Restart"
|
||||
new "Redémarrer"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:408
|
||||
old "An exception has occurred."
|
||||
new "Une exception a été levée."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:434
|
||||
old "Rollback"
|
||||
new "Revenir en arrière"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:436
|
||||
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
|
||||
new "Tenter de revenir en arrière, vous permet de sauvegarder ou de faire un autre choix."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:439
|
||||
old "Ignore"
|
||||
new "Ignorer"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:441
|
||||
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
|
||||
new "Ignorer l'exception vous permet de continuer. Cela entraîne généralement des erreurs additionelles."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:444
|
||||
old "Reload"
|
||||
new "Recharger"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:446
|
||||
old "Reloads the game from disk, saving and restoring game state if possible."
|
||||
new "Recharger le jeu depuis le disque dur and tenter de restaurer le jeu dans l'état actuel."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:448
|
||||
old "Open Traceback"
|
||||
new "Ouvrir la pile d'appel"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:450
|
||||
old "Opens the traceback.txt file in a text editor."
|
||||
new "Ouvrir traceback.txt dans un éditeur de texte."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:456
|
||||
old "Quits the game."
|
||||
new "Quitter le jeu."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:483
|
||||
old "Parsing the script failed."
|
||||
new "L'analyse du script a échouée."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:510
|
||||
old "Open Parse Errors"
|
||||
new "Ouvrir les erreurs d'analyse."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:512
|
||||
old "Opens the errors.txt file in a text editor."
|
||||
new "Ouvrir errors.txt dans un éditeur de texte."
|
||||
|
||||
# renpy/common/00action_file.rpy:118
|
||||
old "%b %d, %H:%M"
|
||||
new "%b %d, %H:%M"
|
||||
|
||||
# renpy/common/_compat/gamemenu.rpym:337
|
||||
old "Previous"
|
||||
new "Précédent"
|
||||
|
||||
# renpy/common/_compat/gamemenu.rpym:344
|
||||
old "Next"
|
||||
new "Suivant"
|
||||
|
||||
# renpy/common/00library.rpy:77
|
||||
old "Skip Mode"
|
||||
new "Mode rapide"
|
||||
|
||||
# renpy/common/00library.rpy:80
|
||||
old "Fast Skip Mode"
|
||||
new "Mode très rapide"
|
||||
|
||||
# renpy/common/00gallery.rpy:521
|
||||
old "Image [index] of [count] locked."
|
||||
new "Image [index] sur [count] verrouillée."
|
||||
|
||||
# renpy/common/00gallery.rpy:539
|
||||
old "prev"
|
||||
new "précédent"
|
||||
|
||||
# renpy/common/00gallery.rpy:540
|
||||
old "next"
|
||||
new "suivant"
|
||||
|
||||
# renpy/common/00gallery.rpy:541
|
||||
old "slideshow"
|
||||
new "diaporama"
|
||||
|
||||
# renpy/common/00gallery.rpy:542
|
||||
old "return"
|
||||
new "retour"
|
||||
|
||||
# renpy/common/00layout.rpy:427
|
||||
old "Are you sure you want to begin skipping?"
|
||||
new "Êtes-vous sûr de vouloir commencer à sauter certaines étapes ?"
|
||||
|
||||
# renpy/common/00layout.rpy:428
|
||||
old "Are you sure you want to skip to the next choice?"
|
||||
new "Êtes-vous sûr de vouloir sauter le prochain choix ?"
|
||||
|
||||
# renpy/common/00layout.rpy:429
|
||||
old "Are you sure you want to skip to unseen dialogue or the next choice?"
|
||||
new "Êtes-vous sûr de vouloir sauter des dialogues non lus or le prochain choix ?"
|
||||
|
||||
# renpy/common/00action_file.rpy:587
|
||||
old "Quick save complete."
|
||||
new "Sauvegarde rapide effectuée."
|
||||
@@ -0,0 +1,37 @@
|
||||
translate french strings:
|
||||
|
||||
# game/distribute.rpy:333
|
||||
old "Nothing to do."
|
||||
new "Rien à faire."
|
||||
|
||||
# game/distribute.rpy:337
|
||||
old "Scanning project files..."
|
||||
new "Scan des fichiers du projet..."
|
||||
|
||||
# game/distribute.rpy:344
|
||||
old "Scanning Ren'Py files..."
|
||||
new "Scan des fichiers Ren'Py..."
|
||||
|
||||
# game/distribute.rpy:494
|
||||
old "Archiving files..."
|
||||
new "Archivage des fichiers..."
|
||||
|
||||
# game/distribute.rpy:745
|
||||
old "Writing the [variant] [format] package."
|
||||
new "Écriture du paquet [variant] [format]."
|
||||
|
||||
# game/distribute.rpy:758
|
||||
old "Making the [variant] update zsync file."
|
||||
new "Création du fichier de mise à jour zsync [variant]."
|
||||
|
||||
# game/distribute.rpy:854
|
||||
old "Processed {b}[complete]{/b} of {b}[total]{/b} files."
|
||||
new "Traitement du fichier {b}[complete]{/b} sur {b}[total]{/b}."
|
||||
|
||||
# game/distribute.rpy:915
|
||||
old "All packages have been built.\n\nDue to the presence of permission information, unpacking and repacking the Linux and Macintosh distributions on Windows is not supported."
|
||||
new "Tous les paquets ont été contruits.\n\nDu fait de la présence des systèmes de permissions, il n'est pas possible de reconstruire les paquets construits sur GNU-Linux ou Mac OS sur Windows."
|
||||
|
||||
# game/distribute.rpy:358
|
||||
old "No packages are selected, so there's nothing to do."
|
||||
new "Aucun paquet sélectionné, il n'y a donc rien à faire."
|
||||
@@ -0,0 +1,41 @@
|
||||
translate french strings:
|
||||
|
||||
# game/distribute_gui.rpy:139
|
||||
old "Build Distributions: [project.current.name!q]"
|
||||
new "Construction des packets: [project.current.name!q]"
|
||||
|
||||
# game/distribute_gui.rpy:154
|
||||
old "Directory Name:"
|
||||
new "Nom du répertoire:"
|
||||
|
||||
# game/distribute_gui.rpy:158
|
||||
old "Executable Name:"
|
||||
new "Nom de l'exécutable:"
|
||||
|
||||
# game/distribute_gui.rpy:175
|
||||
old "Edit options.rpy"
|
||||
new "Éditer options.rpy"
|
||||
|
||||
# game/distribute_gui.rpy:176
|
||||
old "Refresh"
|
||||
new "Rafraichir"
|
||||
|
||||
# game/distribute_gui.rpy:193
|
||||
old "Build Packages:"
|
||||
new "Construire les packets:"
|
||||
|
||||
# game/distribute_gui.rpy:208
|
||||
old "Build Updates"
|
||||
new "Construire les mises à jour"
|
||||
|
||||
# game/distribute_gui.rpy:212
|
||||
old "Build"
|
||||
new "Construire"
|
||||
|
||||
# game/distribute_gui.rpy:219
|
||||
old "Errors were detected when running the project. Please ensure the project runs without errors before building distributions."
|
||||
new "Des erreurs ont été détectées lors de l'utilisation du projet. Assurez-vous qu'il n'y ait plus d'erreur avant de construire les packets."
|
||||
|
||||
# game/distribute_gui.rpy:236
|
||||
old "Your project does not contain build information. Would you like to add build information to the end of options.rpy?"
|
||||
new "Votre projet ne contient pas d'information pour la construction. Voulez-vous ajouter ces informations à la fin de options.rpy ?"
|
||||
@@ -0,0 +1,57 @@
|
||||
translate french strings:
|
||||
|
||||
# game/editor.rpy:120
|
||||
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input."
|
||||
new "{b}Recommendé.{/b} Un éditeur en version bêta avec une interface simple et des fonctionnalités d'assistance au développement. Editra manque pour le moment du support pour les textes en chinois, japonais et coréen."
|
||||
|
||||
# game/editor.rpy:121
|
||||
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython."
|
||||
new "{b}Recommendé.{/b} Un éditeur en version bêta avec une interface simple et des fonctionnalités d'assistance au développement. Editra manque pour le moment du support pour les textes en chinois, japonais et coréen. Sur GNU-Linux, Editra nécessite wxPython."
|
||||
|
||||
# game/editor.rpy:137
|
||||
old "The may have occured because wxPython is not installed on this system."
|
||||
new "Cela est sans doute arrivé car wxPython n'est pas installé sur ce système."
|
||||
|
||||
# game/editor.rpy:144
|
||||
old "Up to 22 MB download required."
|
||||
new "Jusqu'à 22 MB de téléchargement requis."
|
||||
|
||||
# game/editor.rpy:157
|
||||
old "1.8 MB download required."
|
||||
new "1.8 MB de réléchargement requis."
|
||||
|
||||
# game/editor.rpy:158
|
||||
old "This may have occured because Java is not installed on this system."
|
||||
new "Cela est sans doute arrivé car Java n'est pas installé sur ce système."
|
||||
|
||||
# game/editor.rpy:327
|
||||
old "An exception occured while launching the text editor:\n[exception!q]"
|
||||
new "Une exception a été levée lors du lancement de l'édieteur de texte :\n[exception!q]"
|
||||
|
||||
# game/editor.rpy:378
|
||||
old "Select Editor"
|
||||
new "Sélectionnez un éditeur"
|
||||
|
||||
# game/editor.rpy:393
|
||||
old "A text editor is the program you'll use to edit Ren'Py script files. Here, you can select the editor Ren'Py will use. If not already present, the editor will be automatically downloaded and installed."
|
||||
new "Un éditeur de texte est un logiciel que vous utilisez pour éditer les fichiers de script Ren'Py. Vous pouvez choisir l'édteur que Ren'Py utilise. Si ce n'est pas déjà le cas, l'éditeur sera automatiquement téléchargé et installé."
|
||||
|
||||
# game/editor.rpy:415
|
||||
old "Cancel"
|
||||
new "Annuler"
|
||||
|
||||
# game/editor.rpy:137
|
||||
old "This may have occured because wxPython is not installed on this system."
|
||||
new "Cela est sans doute dû au fait que wxPython n'est pas installé sur votre système."
|
||||
|
||||
# game/editor.rpy:155
|
||||
old "A mature editor that requires Java."
|
||||
new "Un éditeur éprouvé nécessitant Java."
|
||||
|
||||
# game/editor.rpy:164
|
||||
old "Invokes the editor your operating system has associated with .rpy files."
|
||||
new "Lance l'éditeur associé par votre systèmes aux fichiers .rpy."
|
||||
|
||||
# game/editor.rpy:180
|
||||
old "Prevents Ren'Py from opening a text editor."
|
||||
new "Empêche Ren'Py d'ouvrir un éditeur de texte."
|
||||
@@ -0,0 +1,81 @@
|
||||
translate french strings:
|
||||
|
||||
# game/front_page.rpy:79
|
||||
old "+ Create New Project"
|
||||
new "+ Créer un nouveau projet"
|
||||
|
||||
# game/front_page.rpy:111
|
||||
old "Tutorial"
|
||||
new "Tutoriel"
|
||||
|
||||
# game/front_page.rpy:112
|
||||
old "The Question"
|
||||
new "The Question"
|
||||
|
||||
# game/front_page.rpy:128
|
||||
old "Active Project"
|
||||
new "Projet actif"
|
||||
|
||||
# game/front_page.rpy:136
|
||||
old "Open Directory"
|
||||
new "Ouvrir le répertoire"
|
||||
|
||||
# game/front_page.rpy:141
|
||||
old "game"
|
||||
new "game"
|
||||
|
||||
# game/front_page.rpy:142
|
||||
old "base"
|
||||
new "base"
|
||||
|
||||
# game/front_page.rpy:148
|
||||
old "Edit File"
|
||||
new "Éditer le fichier"
|
||||
|
||||
# game/front_page.rpy:156
|
||||
old "All script files"
|
||||
new "Tous les fichiers de script"
|
||||
|
||||
# game/front_page.rpy:165
|
||||
old "Navigate Script"
|
||||
new "Naviguer dans le script"
|
||||
|
||||
# game/front_page.rpy:176
|
||||
old "Check Script (Lint)"
|
||||
new "Vérifier le script (Lint)"
|
||||
|
||||
# game/front_page.rpy:177
|
||||
old "Change Theme"
|
||||
new "Changer de thème"
|
||||
|
||||
# game/front_page.rpy:178
|
||||
old "Delete Persistent"
|
||||
new "Supprimer persistant"
|
||||
|
||||
# game/front_page.rpy:186
|
||||
old "Build Distributions"
|
||||
new "Construire les packets"
|
||||
|
||||
# game/front_page.rpy:188
|
||||
old "Generate Translations"
|
||||
new "Générer fichiers de traduction"
|
||||
|
||||
# game/front_page.rpy:204
|
||||
old "Checking script for potential problems..."
|
||||
new "Vérifier le script vis à vis des problèmes potentiels..."
|
||||
|
||||
# game/front_page.rpy:219
|
||||
old "Deleting persistent data..."
|
||||
new "Supprimer les données persistantes..."
|
||||
|
||||
# game/front_page.rpy:204
|
||||
old "Android"
|
||||
new "Android"
|
||||
|
||||
# game/front_page.rpy:206
|
||||
old "Extract Dialogue"
|
||||
new "Extraire dialogue"
|
||||
|
||||
# game/front_page.rpy:126
|
||||
old "[p.name!q] (template)"
|
||||
new "[p.name!q] (gabarit)"
|
||||
@@ -0,0 +1,85 @@
|
||||
translate french strings:
|
||||
|
||||
# game/interface.rpy:89
|
||||
old "Documentation"
|
||||
new "Documentation"
|
||||
|
||||
# game/interface.rpy:90
|
||||
old "Ren'Py Website"
|
||||
new "Site Web de Ren'Py"
|
||||
|
||||
# game/interface.rpy:91
|
||||
old "Ren'Py Games List"
|
||||
new "Liste des jeux Ren'Py"
|
||||
|
||||
# game/interface.rpy:92
|
||||
old "About"
|
||||
new "À propos"
|
||||
|
||||
# game/interface.rpy:99
|
||||
old "update"
|
||||
new "mise à jour"
|
||||
|
||||
# game/interface.rpy:101
|
||||
old "preferences"
|
||||
new "préférences"
|
||||
|
||||
# game/interface.rpy:102
|
||||
old "quit"
|
||||
new "quitter"
|
||||
|
||||
# game/interface.rpy:149
|
||||
old "Yes"
|
||||
new "Oui"
|
||||
|
||||
# game/interface.rpy:151
|
||||
old "No"
|
||||
new "Non"
|
||||
|
||||
# game/interface.rpy:181
|
||||
old "Due to package format limitations, non-ASCII file and directory names are not allowed."
|
||||
new "Les caractères non-ASCII ne sont pas autorisés pour les noms de fichiers et répertoires."
|
||||
|
||||
# game/interface.rpy:183
|
||||
old "[title]"
|
||||
new "[title]"
|
||||
|
||||
# game/interface.rpy:248
|
||||
old "ERROR"
|
||||
new "ERREUR"
|
||||
|
||||
# game/interface.rpy:280
|
||||
old "While [what!q], an error occured:"
|
||||
new "Pendant que [what!q], une erreur est arrivée:"
|
||||
|
||||
# game/interface.rpy:281
|
||||
old "[exception!q]"
|
||||
new "[exception!q]"
|
||||
|
||||
# game/interface.rpy:298
|
||||
old "Text input may not contain the {{ or [[ characters."
|
||||
new "Le texte ne devrait pas contenir les caractères {{ ou [[."
|
||||
|
||||
# game/interface.rpy:303
|
||||
old "File and directory names may not contain / or \\."
|
||||
new "Les noms de fichiers et répertoires ne devrait pas contenir / ou \\."
|
||||
|
||||
# game/interface.rpy:309
|
||||
old "File and directory names must consist of ASCII characters."
|
||||
new "Les noms de fichiers et de répertoires doivent contenir uniquement des caractères ASCII."
|
||||
|
||||
# game/interface.rpy:330
|
||||
old "INFORMATION"
|
||||
new "INFORMATION"
|
||||
|
||||
# game/interface.rpy:373
|
||||
old "PROCESSING"
|
||||
new "TRAITEMENT"
|
||||
|
||||
# game/interface.rpy:390
|
||||
old "QUESTION"
|
||||
new "QUESTION"
|
||||
|
||||
# game/interface.rpy:451
|
||||
old "CHOICE"
|
||||
new "CHOIX"
|
||||
@@ -0,0 +1,73 @@
|
||||
translate french strings:
|
||||
|
||||
# game/navigation.rpy:150
|
||||
old "Navigate: [project.current.name]"
|
||||
new "Navigation: [project.current.name]"
|
||||
|
||||
# game/navigation.rpy:159
|
||||
old "Order: "
|
||||
new "Ordre:"
|
||||
|
||||
# game/navigation.rpy:160
|
||||
old "alphabetical"
|
||||
new "alphabétique"
|
||||
|
||||
# game/navigation.rpy:162
|
||||
old "by-file"
|
||||
new "par fichier"
|
||||
|
||||
# game/navigation.rpy:164
|
||||
old "natural"
|
||||
new "naturel"
|
||||
|
||||
# game/navigation.rpy:168
|
||||
old "refresh"
|
||||
new "rafraichir"
|
||||
|
||||
# game/navigation.rpy:176
|
||||
old "Category:"
|
||||
new "Catégorie:"
|
||||
|
||||
# game/navigation.rpy:178
|
||||
old "files"
|
||||
new "fichiers"
|
||||
|
||||
# game/navigation.rpy:179
|
||||
old "labels"
|
||||
new "labels"
|
||||
|
||||
# game/navigation.rpy:180
|
||||
old "defines"
|
||||
new "définitions"
|
||||
|
||||
# game/navigation.rpy:181
|
||||
old "transforms"
|
||||
new "transformations"
|
||||
|
||||
# game/navigation.rpy:182
|
||||
old "screens"
|
||||
new "écrans"
|
||||
|
||||
# game/navigation.rpy:183
|
||||
old "callables"
|
||||
new "appelables"
|
||||
|
||||
# game/navigation.rpy:184
|
||||
old "TODOs"
|
||||
new "TODOs"
|
||||
|
||||
# game/navigation.rpy:223
|
||||
old "+ Add script file"
|
||||
new "+ Ajouter un fichier de script"
|
||||
|
||||
# game/navigation.rpy:231
|
||||
old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
|
||||
new "Aucun commentaire «TODO» trouvé.\n\nPour un créer un, écrivez \"# TODO\" dans le script."
|
||||
|
||||
# game/navigation.rpy:238
|
||||
old "The list of names is empty."
|
||||
new "La liste des noms est vide."
|
||||
|
||||
# game/navigation.rpy:243
|
||||
old "Launch Project"
|
||||
new "Lancer le projet"
|
||||
@@ -0,0 +1,33 @@
|
||||
translate french strings:
|
||||
|
||||
# game/new_project.rpy:22
|
||||
old "Choose Project Template"
|
||||
new "Choisissez un patron de projet"
|
||||
|
||||
# game/new_project.rpy:40
|
||||
old "Please select a template to use for your new project. Ren'Py ships with a default template that creates an English-language game with standard screens."
|
||||
new "Merci de sélectioner un patron à utiliser pour votre nouveau projet. Ren'Py est livré avec un patron par défaut qui créé un jeu en anglais avec des écrans standards."
|
||||
|
||||
# game/new_project.rpy:55
|
||||
old "PROJECT NAME"
|
||||
new "NOM DU PROJET"
|
||||
|
||||
# game/new_project.rpy:56
|
||||
old "Please enter the name of your project:"
|
||||
new "Entrez le nom de votre projet:"
|
||||
|
||||
# game/new_project.rpy:62
|
||||
old "The project name may not be empty."
|
||||
new "Le nom du projet ne doit pas être vide."
|
||||
|
||||
# game/new_project.rpy:67
|
||||
old "[project_name!q] already exists. Please choose a different project name."
|
||||
new "Le projet [project_name!q] éxiste déjà. Choisissez un nom de projet différend."
|
||||
|
||||
# game/new_project.rpy:70
|
||||
old "[project_dir!q] already exists. Please choose a different project name."
|
||||
new "Le projet [project_name!q] éxiste déjà. Choisissez un nom de projet différend."
|
||||
|
||||
# game/new_project.rpy:40
|
||||
old "Please select a template to use for your new project. The template sets the default font and the user interface language. If your language is not supported, choose 'english'."
|
||||
new "Sélectionnez un gabarit pour votre nouveau projet. Le gabarit définit la police par défaut, ainsi que la langue de l'interface. Si votre langue n'est pas supportée, sélectionnez 'english'."
|
||||
@@ -0,0 +1,69 @@
|
||||
translate french strings:
|
||||
|
||||
# game/preferences.rpy:40
|
||||
old "Launcher Preferences"
|
||||
new "Préférence du lanceur"
|
||||
|
||||
# game/preferences.rpy:61
|
||||
old "Projects Directory:"
|
||||
new "Répertoire des projets:"
|
||||
|
||||
# game/preferences.rpy:68
|
||||
old "[persistent.projects_directory!q]"
|
||||
new "[persistent.projects_directory!q]"
|
||||
|
||||
# game/preferences.rpy:70
|
||||
old "Not Set"
|
||||
new "Non précisé"
|
||||
|
||||
# game/preferences.rpy:84
|
||||
old "Text Editor:"
|
||||
new "Éditeur:"
|
||||
|
||||
# game/preferences.rpy:106
|
||||
old "Update Channel:"
|
||||
new "Version"
|
||||
|
||||
# game/preferences.rpy:126
|
||||
old "Navigation Options:"
|
||||
new "Options de navigation:"
|
||||
|
||||
# game/preferences.rpy:130
|
||||
old "Include private names"
|
||||
new "Inclure les noms privés"
|
||||
|
||||
# game/preferences.rpy:131
|
||||
old "Include library names"
|
||||
new "Inclure les noms des bibliothèques"
|
||||
|
||||
# game/preferences.rpy:141
|
||||
old "Launcher Options:"
|
||||
new "Options du lanceur:"
|
||||
|
||||
# game/preferences.rpy:145
|
||||
old "Hardware rendering"
|
||||
new "Rendu matériel"
|
||||
|
||||
# game/preferences.rpy:148
|
||||
old "Console output"
|
||||
new "Sortie console"
|
||||
|
||||
# game/preferences.rpy:165
|
||||
old "Actions:"
|
||||
new "Actions:"
|
||||
|
||||
# game/preferences.rpy:169
|
||||
old "Open launcher project"
|
||||
new "Ouvrir le projet lanceur"
|
||||
|
||||
# game/preferences.rpy:183
|
||||
old "Language:"
|
||||
new "Langue:"
|
||||
|
||||
# game/preferences.rpy:193
|
||||
old "Back"
|
||||
new "Retour"
|
||||
|
||||
# game/preferences.rpy:146
|
||||
old "Show templates"
|
||||
new "Montrer les gabarits"
|
||||
@@ -0,0 +1,25 @@
|
||||
translate french strings:
|
||||
|
||||
# game/project.rpy:196
|
||||
old "Ren'Py is scanning the project..."
|
||||
new "Ren'Py est en train de scanner le projet..."
|
||||
|
||||
# game/project.rpy:485
|
||||
old "PROJECTS DIRECTORY"
|
||||
new "RÉPERTOIRE DES PROJETS"
|
||||
|
||||
# game/project.rpy:485
|
||||
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
|
||||
new "Choisissez le répertoire des projets avec le sélecteur de fichier.\n{b}Il se peut que le sélecteur de fichier s'ouvre derière cette fenêtre.{/b}"
|
||||
|
||||
# game/project.rpy:485
|
||||
old "This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."
|
||||
new "Ce lanceur va scanner ce répertoire pour trouver des projets éxistants, créra les nouveaux projets dans ce répertoire, et placera les projets construits dans ce répertoire."
|
||||
|
||||
# game/project.rpy:525
|
||||
old "Ren'Py was unable to run python with tkinter to choose the projects directory."
|
||||
new "Ren'Py n'a pas pu lancer python avec le module tkinker pout choisir le répertoire des projets."
|
||||
|
||||
# game/project.rpy:529
|
||||
old "Ren'Py has set the projects directory to:"
|
||||
new "Le répertoire des projets vient d'être établit:"
|
||||
@@ -0,0 +1,6 @@
|
||||
translate french python:
|
||||
style.l_default.size = 16
|
||||
style.l_button_text.selected_bold = True
|
||||
style.l_navigation_text.bold = False
|
||||
make_style_backup()
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
translate french strings:
|
||||
|
||||
# game/translations.rpy:10
|
||||
old "Create or Update Translations"
|
||||
new "Créer ou mettre à jour les traductions"
|
||||
|
||||
# game/translations.rpy:10
|
||||
old "Please enter the name of the language for which you want to create or update translations."
|
||||
new "Entrez le nom de la langue pour laquelle vous voullez créer ou mettre à jour les traductions."
|
||||
|
||||
# game/translations.rpy:15
|
||||
old "The language name can not be the empty string."
|
||||
new "La langue ne peut pas être une chaîne vide."
|
||||
|
||||
# game/translations.rpy:26
|
||||
old "Ren'Py is generating translations...."
|
||||
new "Ren'Py est en train de générer les traductions..."
|
||||
|
||||
# game/translations.rpy:30
|
||||
old "Ren'Py has finished generating [language] translations."
|
||||
new "Ren'Py a fini de générer les fichiers de traductions pour [language]."
|
||||
|
||||
# game/translations.rpy:44
|
||||
old "What format would you like for the extracted dialogue?"
|
||||
new "Dans quel format souhaitez vous que le dialogue soit extrait ?"
|
||||
|
||||
# game/translations.rpy:56
|
||||
old "Ren'Py is extracting dialogue...."
|
||||
new "Ren'Py est en train d'extraire le dialogue...."
|
||||
|
||||
# game/translations.rpy:60
|
||||
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[format] in the base directory."
|
||||
new "Ren'Py a fini d'extraire le dialogue. Le dialogue extrait est disponible dans dialogue.[format] dans le répertoire de base."
|
||||
@@ -0,0 +1,85 @@
|
||||
translate french strings:
|
||||
|
||||
# game/updater.rpy:54
|
||||
old "Select Update Channel"
|
||||
new "Choisissez une version."
|
||||
|
||||
# game/updater.rpy:65
|
||||
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
|
||||
new "Choisissez une version."
|
||||
|
||||
# game/updater.rpy:70
|
||||
old "Release"
|
||||
new "version courrante."
|
||||
|
||||
# game/updater.rpy:76
|
||||
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
|
||||
new "{b}Recommendé.{/b} La version de Ren'Py qui devrait être utilisée pour créer de nouveaux jeux."
|
||||
|
||||
# game/updater.rpy:81
|
||||
old "Prerelease"
|
||||
new "Version de test"
|
||||
|
||||
# game/updater.rpy:87
|
||||
old "A preview of the next version of Ren'Py that can be used for testing and taking advantage of new features, but not for final releases of games."
|
||||
new "Un aperçu de la prochaine version de Ren'Py qui peut être utilisée pour faire des tests et profiter de toutes nouvelles fonctionnalitées, mais par pour créer de nouveaux jeux."
|
||||
|
||||
# game/updater.rpy:93
|
||||
old "Experimental"
|
||||
new "Expérimental"
|
||||
|
||||
# game/updater.rpy:99
|
||||
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
|
||||
new "Version expérimentale de Ren'Py. Vous ne devriez pas choisir cette version, à moins qu'un développeur de Ren'Py ne vous y invite."
|
||||
|
||||
# game/updater.rpy:119
|
||||
old "An error has occured:"
|
||||
new "Une erreur est apparue."
|
||||
|
||||
# game/updater.rpy:121
|
||||
old "Checking for updates."
|
||||
new "Vérifier les mises à jour."
|
||||
|
||||
# game/updater.rpy:123
|
||||
old "Ren'Py is up to date."
|
||||
new "Ren'Py est à jour."
|
||||
|
||||
# game/updater.rpy:125
|
||||
old "[u.version] is now available. Do you want to install it?"
|
||||
new "La version [u.version] est disponible. Voulez-vous l'installer ?"
|
||||
|
||||
# game/updater.rpy:127
|
||||
old "Preparing to download the update."
|
||||
new "Préparation du téléchargement de la mise à jour."
|
||||
|
||||
# game/updater.rpy:129
|
||||
old "Downloading the update."
|
||||
new "Téléchargement de la mise à jour."
|
||||
|
||||
# game/updater.rpy:131
|
||||
old "Unpacking the update."
|
||||
new "Dépaquetage de la mise à jour."
|
||||
|
||||
# game/updater.rpy:133
|
||||
old "Finishing up."
|
||||
new "Dernier réglages."
|
||||
|
||||
# game/updater.rpy:135
|
||||
old "The update has been installed. Ren'Py will restart."
|
||||
new "La mise à jour a bien été effectuée. Ren'Py va redémarrer."
|
||||
|
||||
# game/updater.rpy:137
|
||||
old "The update has been installed."
|
||||
new "La mise à jour a bien été effectuée."
|
||||
|
||||
# game/updater.rpy:139
|
||||
old "The update was cancelled."
|
||||
new "La mise à jour a été annullée."
|
||||
|
||||
# game/updater.rpy:156
|
||||
old "Ren'Py Update"
|
||||
new "Mise à jour de Ren'Py"
|
||||
|
||||
# game/updater.rpy:162
|
||||
old "Proceed"
|
||||
new "Continuer"
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate japanese strings:
|
||||
|
||||
# game/about.rpy:21
|
||||
|
||||
@@ -105,3 +105,11 @@ translate japanese strings:
|
||||
old "A 32-bit Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Windowsでは、Androidパッケージのビルドに32-bitのJava開発キットが必要です。JDKはJREとは異なるため、JDKが無くてもJavaが利用できます。\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}JDKのダウンロードとインストール{/a}を行い、Ren'Pyランチャーを再起動して下さい。"
|
||||
|
||||
# game/android.rpy:30
|
||||
old "To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
|
||||
new "Androidパッケージをビルドするには、RAPTをダウンロード・展開し、Ren'Pyのディレクトリーに設置して下さい。その後、Ren'Pyを再起動して下さい。"
|
||||
|
||||
# game/android.rpy:504
|
||||
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
|
||||
new "Androidアプリをパッケージングする前に、RAPT(Ren'Py Android Packaging Tool)をダウンロードする必要があります。今すぐダウンロードしますか?"
|
||||
|
||||
|
||||
@@ -37,3 +37,6 @@ translate japanese strings:
|
||||
old "No packages are selected, so there's nothing to do."
|
||||
new "パッケージが選択されていないため、何もすることがありません。"
|
||||
|
||||
# game/distribute.rpy:335
|
||||
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
|
||||
new "配布物のビルドに失敗しました:\n\nbuild.directory_name 変数にスペース、コロン、セミコロンを含めてはいけません。"
|
||||
|
||||
@@ -25,3 +25,31 @@ translate japanese strings:
|
||||
old "Ren'Py has set the projects directory to:"
|
||||
new "Ren'Py は以下にプロジェクトディレクトリーを設定します:"
|
||||
|
||||
# game/project.rpy:48
|
||||
old "After making changes to the script, press shift+R to reload your game."
|
||||
new "スクリプトに変更を加えた後、Shift+Rを押すとゲームをリロードします。"
|
||||
|
||||
# game/project.rpy:49
|
||||
old "Press shift+O (the letter) to access the console."
|
||||
new "Shift+O(英字)を押すとコンソールを表示します。"
|
||||
|
||||
# game/project.rpy:50
|
||||
old "Press shift+D to access the developer menu."
|
||||
new "Shift+Dを押すと開発者メニューを表示します。"
|
||||
|
||||
# game/project.rpy:219
|
||||
old "Launching the project failed."
|
||||
new "プロジェクトの起動に失敗しました。"
|
||||
|
||||
# game/project.rpy:219
|
||||
old "Please ensure that your project launches normally before running this command."
|
||||
new "このコマンドを実行する前に、プロジェクトが通常通り起動することを確認して下さい。"
|
||||
|
||||
# game/project.rpy:515
|
||||
old "Launching"
|
||||
new "起動中"
|
||||
|
||||
# game/project.rpy:584
|
||||
old "Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."
|
||||
new "Ren'Pyはプロジェクトディレクトリー選択のためのtkinterをPythonの実行時に読み込めませんでした。python-tkもしくはtkinterパッケージをインストールして下さい。"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate japanese python:
|
||||
translate japanese python:
|
||||
MTLC = "tl/japanese/MTLc3m.ttf"
|
||||
style.l_default.font = MTLC
|
||||
style.l_default.size = 16
|
||||
|
||||
@@ -85,3 +85,11 @@ translate japanese strings:
|
||||
old "Proceed"
|
||||
new "続行"
|
||||
|
||||
# game/updater.rpy:129
|
||||
old "Nightly"
|
||||
new "Nightly"
|
||||
|
||||
# game/updater.rpy:135
|
||||
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
|
||||
new "Ren'Pyの開発版で、極めて不安定です。これには最新の機能が含まれていますが、すべては動かないかもしれません。"
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/about.rpy:21
|
||||
old "[version!q]"
|
||||
new "[version!q]"
|
||||
|
||||
# game/about.rpy:25
|
||||
old "View license"
|
||||
new "Просмотреть лицензию"
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/add_file.rpy:7
|
||||
old "FILENAME"
|
||||
new "ИМЯ ФАЙЛА"
|
||||
|
||||
# game/add_file.rpy:7
|
||||
old "Enter the name of the script file to create."
|
||||
new "Введите имя файла сценария, который вы хотите создать."
|
||||
|
||||
# game/add_file.rpy:10
|
||||
old "The filename must have the .rpy extension."
|
||||
new "Имя должно иметь расширение .rpy."
|
||||
|
||||
# game/add_file.rpy:18
|
||||
old "The file already exists."
|
||||
new "Файл уже существует."
|
||||
|
||||
# game/add_file.rpy:21
|
||||
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
|
||||
new "# Ren'Py автоматически загружает все файлы сценариев, заканчивающиеся на .rpy\n#Чтобы использовать этот файл, определите метку и прыгните (jump) к ней из другого файла.\n"
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/android.rpy:13
|
||||
old "A 32-bit Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "32-разрядный инструментарий разработки Java требуется, чтобы построить Android-пакеты на Windows. JDK отличен от JRE, и возможно, у вас есть Java без JDK.\n\nПожалуйста, {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}загрузите и установите JDK{/a}, и перезапустите Ren'Py Launcher."
|
||||
|
||||
# game/android.rpy:14
|
||||
old "To build Android packages, please download RAPT (from {a=http://www.renpy.org/dl/android}here{/a}), unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
|
||||
new "Чтобы строить Android-пакеты, пожалуйста, загрузите RAPT ({a=http://www.renpy.org/dl/android}отсюда{/a}), распакуйте его, и поместите его в папку Ren'Py. После этого, перезапустите Ren'Py Launcher."
|
||||
|
||||
# game/android.rpy:15
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
new "RAPT установлен, но вам понадобится установить Android SDK до того, как вы сможете создавать Android-пакеты. Выберите Установить SDK, чтобы сделать это."
|
||||
|
||||
# game/android.rpy:16
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
|
||||
new "RAPT установлен, но отсутствует ключ. Пожалуйста, создайте новый ключ, или восстановите android.keystore."
|
||||
|
||||
# game/android.rpy:17
|
||||
old "The current project has not been configured. Use \"Configure\" to configure it before building."
|
||||
new "Текущий проект не настроен. Используйте \"Настроить\", чтобы настроить его перед сборкой."
|
||||
|
||||
# game/android.rpy:18
|
||||
old "Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device."
|
||||
new "Выберите \"Построить\", чтобы собрать текущий проект, или присоедините Android-устройство и выберите \"Построить и Установить\", чтобы собрать и установить его на устройстве."
|
||||
|
||||
# game/android.rpy:20
|
||||
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Пытается эмулировать Android-телефон.\n\nПрикосновения иммитируются мышью при зажатой кнопке. Escape назначен на кнопку меню, а PageUp - на кнопку назад."
|
||||
|
||||
# game/android.rpy:21
|
||||
old "Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Пытается эмулировать Android-планшет.\n\nПрикосновения иммитируются мышью при зажатой кнопке. Escape назначен на кнопку меню, а PageUp - на кнопку назад."
|
||||
|
||||
# game/android.rpy:22
|
||||
old "Attempts to emulate an OUYA console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Пытается эмулировать приставку OUYA.\n\nВвод контроллера назначен на клавиши со стрелками, Enter - на кнопку Select, Escape - на кнопку меню, а PageUp - на кнопку назад."
|
||||
|
||||
# game/android.rpy:24
|
||||
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
|
||||
new "Скачивает и устанавливает Android SDK и поддерживающие пакеты. При желании, создает ключи для подписи пакета."
|
||||
|
||||
# game/android.rpy:25
|
||||
old "Configures the package name, version, and other information about this project."
|
||||
new "Настраивает имя пакета, версию, и другую информацию о проекте."
|
||||
|
||||
# game/android.rpy:26
|
||||
old "Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details."
|
||||
new "Открывает файл, содержащий ключи Google Play в редакторе.\n\nЭто необходимо лишь для случаев, если приложение использует расширяющий APK. Прочтите документацию для больших деталей."
|
||||
|
||||
# game/android.rpy:27
|
||||
old "Builds the Android package."
|
||||
new "Собирает Android-пакет."
|
||||
|
||||
# game/android.rpy:28
|
||||
old "Builds the Android package, and installs it on an Android device connected to your computer."
|
||||
new "Собирает Android-пакет, устанавливает его на Android-устройстве, подключенном к компьютеру."
|
||||
|
||||
# game/android.rpy:148
|
||||
old "{a=%s}%s{/a}"
|
||||
new "{a=%s}%s{/a}"
|
||||
|
||||
# game/android.rpy:371
|
||||
old "Android: [project.current.name!q]"
|
||||
new "Android: [project.current.name!q]"
|
||||
|
||||
# game/android.rpy:391
|
||||
old "Emulation:"
|
||||
new "Эмуляция:"
|
||||
|
||||
# game/android.rpy:399
|
||||
old "Phone"
|
||||
new "Телефон"
|
||||
|
||||
# game/android.rpy:403
|
||||
old "Tablet"
|
||||
new "Планшет"
|
||||
|
||||
# game/android.rpy:407
|
||||
old "Television / OUYA"
|
||||
new "Телевидение / OUYA"
|
||||
|
||||
# game/android.rpy:419
|
||||
old "Build:"
|
||||
new "Собрать:"
|
||||
|
||||
# game/android.rpy:427
|
||||
old "Install SDK & Create Keys"
|
||||
new "Установить SDK и создать ключи"
|
||||
|
||||
# game/android.rpy:431
|
||||
old "Configure"
|
||||
new "Настроить"
|
||||
|
||||
# game/android.rpy:435
|
||||
old "Build Package"
|
||||
new "Собрать пакет"
|
||||
|
||||
# game/android.rpy:439
|
||||
old "Build & Install"
|
||||
new "Собрать и установить"
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/choose_theme.rpy:274
|
||||
old "Could not change the theme. Perhaps options.rpy was changed too much."
|
||||
new "Невозможно изменить тему. Возможно, options.rpy был сильно изменен."
|
||||
|
||||
# game/choose_theme.rpy:339
|
||||
old "Display"
|
||||
new "Экран"
|
||||
|
||||
# game/choose_theme.rpy:340
|
||||
old "Window"
|
||||
new "Окно"
|
||||
|
||||
# game/choose_theme.rpy:341
|
||||
old "Fullscreen"
|
||||
new "Полный экран"
|
||||
|
||||
# game/choose_theme.rpy:342
|
||||
old "Planetarium"
|
||||
new "Планетарий"
|
||||
|
||||
# game/choose_theme.rpy:349
|
||||
old "Sound Volume"
|
||||
new "Громкость звука"
|
||||
|
||||
# game/choose_theme.rpy:383
|
||||
old "Choose Theme"
|
||||
new "Выберите тему"
|
||||
|
||||
# game/choose_theme.rpy:396
|
||||
old "Theme"
|
||||
new "Тема"
|
||||
|
||||
# game/choose_theme.rpy:420
|
||||
old "Color Scheme"
|
||||
new "Цветовая схема"
|
||||
|
||||
# game/choose_theme.rpy:451
|
||||
old "Continue"
|
||||
new "Продолжить"
|
||||
|
||||
@@ -0,0 +1,324 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/_layout/classic_load_save.rpym:120
|
||||
old "Empty Slot."
|
||||
new "Пустой слот."
|
||||
|
||||
# renpy/common/_layout/classic_load_save.rpym:152
|
||||
old "a"
|
||||
new "a"
|
||||
|
||||
# renpy/common/_layout/classic_load_save.rpym:161
|
||||
old "q"
|
||||
new "q"
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/_layout/classic_joystick_preferences.rpym:76
|
||||
old "Joystick Mapping"
|
||||
new "Назначение джойстика"
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/00action_file.rpy:124
|
||||
old "%b %d, %H:%M"
|
||||
new "%b %d, %H:%M"
|
||||
|
||||
# renpy/common/00action_file.rpy:587
|
||||
old "Quick save complete."
|
||||
new "Быстрое сохранение завершено."
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/00layout.rpy:421
|
||||
old "Are you sure?"
|
||||
new "Вы уверены?"
|
||||
|
||||
# renpy/common/00layout.rpy:422
|
||||
old "Are you sure you want to delete this save?"
|
||||
new "Вы уверены, что хотите удалить это сохранение?"
|
||||
|
||||
# renpy/common/00layout.rpy:423
|
||||
old "Are you sure you want to overwrite your save?"
|
||||
new "Вы уверены, что хотите перезаписать ваше сохранение?"
|
||||
|
||||
# renpy/common/00layout.rpy:424
|
||||
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
|
||||
new "Загрузка игры приведет к потере несохраненного прогресса.\nВы уверены, что вы хотите это сделать?"
|
||||
|
||||
# renpy/common/00layout.rpy:425
|
||||
old "Are you sure you want to quit?"
|
||||
new "Вы уверены, что вы хотите выйти?"
|
||||
|
||||
# renpy/common/00layout.rpy:426
|
||||
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
|
||||
new "Вы уверены, что вы хотите вернуться в главное меню?\nЭто приведет к потере несохраненного прогресса."
|
||||
|
||||
# renpy/common/00layout.rpy:427
|
||||
old "Are you sure you want to begin skipping?"
|
||||
new "Вы уверены, что хотите начать пропуск?"
|
||||
|
||||
# renpy/common/00layout.rpy:428
|
||||
old "Are you sure you want to skip to the next choice?"
|
||||
new "Вы хотите пропустить все до следующего выбора?"
|
||||
|
||||
# renpy/common/00layout.rpy:429
|
||||
old "Are you sure you want to skip to unseen dialogue or the next choice?"
|
||||
new "Вы уверены, что хотите пропустить все до невиданного диалога или следующего выбора?"
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/_compat/gamemenu.rpym:337
|
||||
old "Previous"
|
||||
new "Предыдущий"
|
||||
|
||||
# renpy/common/_compat/gamemenu.rpym:344
|
||||
old "Next"
|
||||
new "Следующий"
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/00keymap.rpy:168
|
||||
old "Saved screenshot as %s."
|
||||
new "Скришнот сохранен как %s."
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/00updater.rpy:1258
|
||||
old "Updater"
|
||||
new "Обновление"
|
||||
|
||||
# renpy/common/00updater.rpy:1267
|
||||
old "This program is up to date."
|
||||
new "Это программа обновлена."
|
||||
|
||||
# renpy/common/00updater.rpy:1269
|
||||
old "[u.version] is available. Do you want to install it?"
|
||||
new "[u.version] доступна. Вы хотите её установить?"
|
||||
|
||||
# renpy/common/00updater.rpy:1271
|
||||
old "Preparing to download the updates."
|
||||
new "Подготовка к загрузке обновлений."
|
||||
|
||||
# renpy/common/00updater.rpy:1273
|
||||
old "Downloading the updates."
|
||||
new "Загрузка обновлений."
|
||||
|
||||
# renpy/common/00updater.rpy:1275
|
||||
old "Unpacking the updates."
|
||||
new "Распаковка обновлений."
|
||||
|
||||
# renpy/common/00updater.rpy:1279
|
||||
old "The updates have been installed. The program will restart."
|
||||
new "Обновления установлены. Программа будет перезапущена."
|
||||
|
||||
# renpy/common/00updater.rpy:1281
|
||||
old "The updates have been installed."
|
||||
new "Обновления были установлены."
|
||||
|
||||
# renpy/common/00updater.rpy:1283
|
||||
old "The updates were cancelled."
|
||||
new "Обновления были отменены."
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/00gltest.rpy:50
|
||||
old "Graphics Acceleration"
|
||||
new "Графическое Ускорение"
|
||||
|
||||
# renpy/common/00gltest.rpy:54
|
||||
old "Automatically Choose"
|
||||
new "Выбирать Автоматически"
|
||||
|
||||
# renpy/common/00gltest.rpy:59
|
||||
old "Force Angle/DirectX Renderer"
|
||||
new "Насильно Отображать Через Angle/DirectX"
|
||||
|
||||
# renpy/common/00gltest.rpy:63
|
||||
old "Force OpenGL Renderer"
|
||||
new "Насильно Отображать Через OpenGL"
|
||||
|
||||
# renpy/common/00gltest.rpy:67
|
||||
old "Force Software Renderer"
|
||||
new "Насильно Отображать Програмно"
|
||||
|
||||
# renpy/common/00gltest.rpy:73
|
||||
old "Changes will take effect the next time this program is run."
|
||||
new "Изменения вступят в силу при следующем запуске программы."
|
||||
|
||||
# renpy/common/00gltest.rpy:77
|
||||
old "Quit"
|
||||
new "Выйти"
|
||||
|
||||
# renpy/common/00gltest.rpy:82
|
||||
old "Return"
|
||||
new "Вернуться"
|
||||
|
||||
# renpy/common/00gltest.rpy:112
|
||||
old "Performance Warning"
|
||||
new "Предупреждение о Производительности"
|
||||
|
||||
# renpy/common/00gltest.rpy:117
|
||||
old "This computer is using software rendering."
|
||||
new "Этот компьютер использует програмный рендеринг."
|
||||
|
||||
# renpy/common/00gltest.rpy:119
|
||||
old "This computer is not using shaders."
|
||||
new "Этот компьютер не использует шейдеры."
|
||||
|
||||
# renpy/common/00gltest.rpy:121
|
||||
old "This computer is displaying graphics slowly."
|
||||
new "Этот компьютер медленно отображает графику."
|
||||
|
||||
# renpy/common/00gltest.rpy:123
|
||||
old "This computer has a problem displaying graphics: [problem]."
|
||||
new "У этого компьютера проблема с отображением графики: [problem]"
|
||||
|
||||
# renpy/common/00gltest.rpy:128
|
||||
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
|
||||
new "Графические драйвера устарели или работают неверно. Это может привести к медленному или неверному отображению графики. Обновление DirectX может решить эту проблему."
|
||||
|
||||
# renpy/common/00gltest.rpy:130
|
||||
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
|
||||
new "Графические драйвера устарели или работают неверно. Это может привести к медленному или неверному отображению графики."
|
||||
|
||||
# renpy/common/00gltest.rpy:135
|
||||
old "Update DirectX"
|
||||
new "Обновить DirectX"
|
||||
|
||||
# renpy/common/00gltest.rpy:141
|
||||
old "Continue, Show this warning again"
|
||||
new "Продолжить, Показать это предупреждение снова"
|
||||
|
||||
# renpy/common/00gltest.rpy:145
|
||||
old "Continue, Don't show warning again"
|
||||
new "Продолжить, Не показывать это предупреждение снова."
|
||||
|
||||
# renpy/common/00gltest.rpy:171
|
||||
old "Updating DirectX."
|
||||
new "Обновляется DirectX."
|
||||
|
||||
# renpy/common/00gltest.rpy:175
|
||||
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
|
||||
new "Установщик DirectX был запущен. Вероятно, он запустился в свернутом состоянии. Пожалуйста, следуйте инструкциям для установки DirectX."
|
||||
|
||||
# renpy/common/00gltest.rpy:179
|
||||
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
|
||||
new "{b}Предупреждение:{/b} Установщик DirectX по умолчанию попытается установить панель инструментов Bing. Если вы этого не хотите, снимите соответствующую галочку."
|
||||
|
||||
# renpy/common/00gltest.rpy:183
|
||||
old "When setup finishes, please click below to restart this program."
|
||||
new "По завершению установки, щелкните, чтобы перезапустить программу."
|
||||
|
||||
# renpy/common/00gltest.rpy:185
|
||||
old "Restart"
|
||||
new "Перезапустить"
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/00gallery.rpy:521
|
||||
old "Image [index] of [count] locked."
|
||||
new "Изображение [index] из [count] заблокированных."
|
||||
|
||||
# renpy/common/00gallery.rpy:539
|
||||
old "prev"
|
||||
new "пред"
|
||||
|
||||
# renpy/common/00gallery.rpy:540
|
||||
old "next"
|
||||
new "след"
|
||||
|
||||
# renpy/common/00gallery.rpy:541
|
||||
old "slideshow"
|
||||
new "слайдшоу"
|
||||
|
||||
# renpy/common/00gallery.rpy:542
|
||||
old "return"
|
||||
new "вернуться"
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/_errorhandling.rpym:408
|
||||
old "An exception has occurred."
|
||||
new "Возникло исключение."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:434
|
||||
old "Rollback"
|
||||
new "Вернуться назад"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:436
|
||||
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
|
||||
new "Пытается вернуться назад, позволяя вам сохраниться или выбрать другой выбор."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:439
|
||||
old "Ignore"
|
||||
new "Игнорировать"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:441
|
||||
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
|
||||
new "Игнорирует это исключение, позволяя вам продолжить. Это зачастую ведет к дополнительным ошибкам."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:444
|
||||
old "Reload"
|
||||
new "Перезагрузить"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:446
|
||||
old "Reloads the game from disk, saving and restoring game state if possible."
|
||||
new "Перезагружает игру с диска, сохраняя и восстанавливая состояние, если это возможно."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:448
|
||||
old "Open Traceback"
|
||||
new "Открыть Журнал"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:450
|
||||
old "Opens the traceback.txt file in a text editor."
|
||||
new "Открывает файл traceback.txt в текстовом редакторе."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:456
|
||||
old "Quits the game."
|
||||
new "Выходит из игры."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:483
|
||||
old "Parsing the script failed."
|
||||
new "Обработка сценария завершилась неудачно."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:510
|
||||
old "Open Parse Errors"
|
||||
new "Открыть Ошибки Обработки"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:512
|
||||
old "Opens the errors.txt file in a text editor."
|
||||
new "Открывает файл errors.txt в текстовом редакторе."
|
||||
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# renpy/common/00library.rpy:77
|
||||
old "Skip Mode"
|
||||
new "Режим Пропуска"
|
||||
|
||||
# renpy/common/00library.rpy:80
|
||||
old "Fast Skip Mode"
|
||||
new "Режим Быстрого Пропуска"
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/distribute.rpy:358
|
||||
old "No packages are selected, so there's nothing to do."
|
||||
new "Пакеты не выбраны. Делать нечего."
|
||||
|
||||
# game/distribute.rpy:363
|
||||
old "Scanning project files..."
|
||||
new "Сканирую файлы проекта..."
|
||||
|
||||
# game/distribute.rpy:373
|
||||
old "Scanning Ren'Py files..."
|
||||
new "Сканирую файлы Ren'Py..."
|
||||
|
||||
# game/distribute.rpy:421
|
||||
old "All packages have been built.\n\nDue to the presence of permission information, unpacking and repacking the Linux and Macintosh distributions on Windows is not supported."
|
||||
new "Все пакеты были построены.\n\nВ связи с наличием информации о правах доступа, не распаковывайте дистрибутивы для Linux и Macintosh на Windows."
|
||||
|
||||
# game/distribute.rpy:545
|
||||
old "Archiving files..."
|
||||
new "Архивирую файлы..."
|
||||
|
||||
# game/distribute.rpy:808
|
||||
old "Writing the [variant] [format] package."
|
||||
new "Пишу пакет [variant] [format]"
|
||||
|
||||
# game/distribute.rpy:821
|
||||
old "Making the [variant] update zsync file."
|
||||
new "Создаю файл zsync для обновления [variant]"
|
||||
|
||||
# game/distribute.rpy:917
|
||||
old "Processed {b}[complete]{/b} of {b}[total]{/b} files."
|
||||
new "Обработано {b}[complete]{/b} из {b}[total]{/b} файлов."
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/distribute_gui.rpy:139
|
||||
old "Build Distributions: [project.current.name!q]"
|
||||
new "Сборка Дистрибутивов: [project.current.name!q]"
|
||||
|
||||
# game/distribute_gui.rpy:154
|
||||
old "Directory Name:"
|
||||
new "Имя Папки:"
|
||||
|
||||
# game/distribute_gui.rpy:158
|
||||
old "Executable Name:"
|
||||
new "Имя исполняемого файла:"
|
||||
|
||||
# game/distribute_gui.rpy:167
|
||||
old "Actions:"
|
||||
new "Действия"
|
||||
|
||||
# game/distribute_gui.rpy:175
|
||||
old "Edit options.rpy"
|
||||
new "Редактировать options.rpy"
|
||||
|
||||
# game/distribute_gui.rpy:176
|
||||
old "Refresh"
|
||||
new "Обновить"
|
||||
|
||||
# game/distribute_gui.rpy:193
|
||||
old "Build Packages:"
|
||||
new "Построить пакеты:"
|
||||
|
||||
# game/distribute_gui.rpy:207
|
||||
old "Build Updates"
|
||||
new "Построить Обновления"
|
||||
|
||||
# game/distribute_gui.rpy:210
|
||||
old "Back"
|
||||
new "Назад"
|
||||
|
||||
# game/distribute_gui.rpy:211
|
||||
old "Build"
|
||||
new "Построить"
|
||||
|
||||
# game/distribute_gui.rpy:218
|
||||
old "Errors were detected when running the project. Please ensure the project runs without errors before building distributions."
|
||||
new "При запуске проекта произошли ошибки. Пожалуйста, убедитесь в том, что проект успешно запускается, перед созданием дистрибутивов."
|
||||
|
||||
# game/distribute_gui.rpy:235
|
||||
old "Your project does not contain build information. Would you like to add build information to the end of options.rpy?"
|
||||
new "Ваш проект не содержит информацию, необходимую для сборки. Добавить её к концу options.rpy?"
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/editor.rpy:120
|
||||
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input."
|
||||
new "{b}Рекомендуется.{/b} Beta-редактор с простым интерфейсом и возможностями, помогающими в разработке, такими, как проверка орфографии. Editra сейчас не поддерживает IME, необходимые для ввода Китайского, Японского и Корейского текстов."
|
||||
|
||||
# game/editor.rpy:121
|
||||
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython."
|
||||
new "{b}Рекомендуется.{/b} Beta-редактор с простым интерфейсом и возможностями, помогающими в разработке, такими, как проверка орфографии. Editra сейчас не поддерживает IME, необходимые для ввода Китайского, Японского и Корейского текстов. На Linux, Editra требует wxPython."
|
||||
|
||||
# game/editor.rpy:137
|
||||
old "This may have occured because wxPython is not installed on this system."
|
||||
new "Это могло случится, ибо wxPython не установлен на этой системе."
|
||||
|
||||
# game/editor.rpy:144
|
||||
old "Up to 22 MB download required."
|
||||
new "Требуется скачать 22 МБ."
|
||||
|
||||
# game/editor.rpy:155
|
||||
old "A mature editor that requires Java."
|
||||
new "Проверенный временем редактор. Требует Java."
|
||||
|
||||
# game/editor.rpy:157
|
||||
old "1.8 MB download required."
|
||||
new "Требуется скачать 1.8 МБ."
|
||||
|
||||
# game/editor.rpy:158
|
||||
old "This may have occured because Java is not installed on this system."
|
||||
new "Это могло случится, ибо Java не установлена на данной системе."
|
||||
|
||||
# game/editor.rpy:164
|
||||
old "Invokes the editor your operating system has associated with .rpy files."
|
||||
new "Включает тектсовый редактор, ассоциированный на вашей системе с фалйами .rpy."
|
||||
|
||||
# game/editor.rpy:180
|
||||
old "Prevents Ren'Py from opening a text editor."
|
||||
new "Не позволяет Ren'Py запускать тектсовый редактор."
|
||||
|
||||
# game/editor.rpy:327
|
||||
old "An exception occured while launching the text editor:\n[exception!q]"
|
||||
new "Возникла ошибка при запуске текстового редактора:\n[exception!q]"
|
||||
|
||||
# game/editor.rpy:423
|
||||
old "Select Editor"
|
||||
new "Выберите редактор"
|
||||
|
||||
# game/editor.rpy:438
|
||||
old "A text editor is the program you'll use to edit Ren'Py script files. Here, you can select the editor Ren'Py will use. If not already present, the editor will be automatically downloaded and installed."
|
||||
new "Тектсовый редактор - программа, необходимая для редактирования сценариев Ren'Py. Здесь, вы можете выбрать редактор, который Ren'Py будет использовать. Если такового нет, редактор будет автоматически загружен и установлен."
|
||||
|
||||
# game/editor.rpy:460
|
||||
old "Cancel"
|
||||
new "Отмена"
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/front_page.rpy:67
|
||||
old "refresh"
|
||||
new "обновить"
|
||||
|
||||
# game/front_page.rpy:94
|
||||
old "+ Create New Project"
|
||||
new "+ Добавить новый проект"
|
||||
|
||||
# game/front_page.rpy:106
|
||||
old "Launch Project"
|
||||
new "Запустить проект"
|
||||
|
||||
# game/front_page.rpy:122
|
||||
old "[p.name!q] (template)"
|
||||
new "[p.name!q] (образец)"
|
||||
|
||||
# game/front_page.rpy:138
|
||||
old "Tutorial"
|
||||
new "Обучение"
|
||||
|
||||
# game/front_page.rpy:139
|
||||
old "The Question"
|
||||
new "Вопрос"
|
||||
|
||||
# game/front_page.rpy:155
|
||||
old "Active Project"
|
||||
new "Активный Проект"
|
||||
|
||||
# game/front_page.rpy:163
|
||||
old "Open Directory"
|
||||
new "Открыть Папку"
|
||||
|
||||
# game/front_page.rpy:168
|
||||
old "game"
|
||||
new "game"
|
||||
|
||||
# game/front_page.rpy:169
|
||||
old "base"
|
||||
new "base"
|
||||
|
||||
# game/front_page.rpy:175
|
||||
old "Edit File"
|
||||
new "Редактировать Файл"
|
||||
|
||||
# game/front_page.rpy:183
|
||||
old "All script files"
|
||||
new "Все файлы сценариев"
|
||||
|
||||
# game/front_page.rpy:192
|
||||
old "Navigate Script"
|
||||
new "Навигация по Сценарию"
|
||||
|
||||
# game/front_page.rpy:203
|
||||
old "Check Script (Lint)"
|
||||
new "Проверить Сценарий (Lint)"
|
||||
|
||||
# game/front_page.rpy:204
|
||||
old "Change Theme"
|
||||
new "Сменить тему"
|
||||
|
||||
# game/front_page.rpy:205
|
||||
old "Delete Persistent"
|
||||
new "Очистить постоянные данные"
|
||||
|
||||
# game/front_page.rpy:213
|
||||
old "Build Distributions"
|
||||
new "Построить дистрибутивы"
|
||||
|
||||
# game/front_page.rpy:215
|
||||
old "Android"
|
||||
new "Android"
|
||||
|
||||
# game/front_page.rpy:216
|
||||
old "Generate Translations"
|
||||
new "Создать переводы"
|
||||
|
||||
# game/front_page.rpy:217
|
||||
old "Extract Dialogue"
|
||||
new "Извлечь диалог"
|
||||
|
||||
# game/front_page.rpy:233
|
||||
old "Checking script for potential problems..."
|
||||
new "Проверка потенциальных проблем сценария..."
|
||||
|
||||
# game/front_page.rpy:248
|
||||
old "Deleting persistent data..."
|
||||
new "Удаление постоянных данных..."
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/interface.rpy:89
|
||||
old "Documentation"
|
||||
new "Документация"
|
||||
|
||||
# game/interface.rpy:90
|
||||
old "Ren'Py Website"
|
||||
new "Сайт Ren'Py"
|
||||
|
||||
# game/interface.rpy:91
|
||||
old "Ren'Py Games List"
|
||||
new "Список Игр Ren'Py"
|
||||
|
||||
# game/interface.rpy:92
|
||||
old "About"
|
||||
new "О"
|
||||
|
||||
# game/interface.rpy:99
|
||||
old "update"
|
||||
new "обновить"
|
||||
|
||||
# game/interface.rpy:101
|
||||
old "preferences"
|
||||
new "настройки"
|
||||
|
||||
# game/interface.rpy:102
|
||||
old "quit"
|
||||
new "выйти"
|
||||
|
||||
# game/interface.rpy:174
|
||||
old "Yes"
|
||||
new "Да"
|
||||
|
||||
# game/interface.rpy:176
|
||||
old "No"
|
||||
new "Нет"
|
||||
|
||||
# game/interface.rpy:211
|
||||
old "Due to package format limitations, non-ASCII file and directory names are not allowed."
|
||||
new "В связи с ограничениями на форматы пакетов, не-ASCII имена файлов и папок недопустимы."
|
||||
|
||||
# game/interface.rpy:303
|
||||
old "ERROR"
|
||||
new "ОШИБКА"
|
||||
|
||||
# game/interface.rpy:332
|
||||
old "While [what!q], an error occured:"
|
||||
new "Пока [what!q], возникла ошибка:"
|
||||
|
||||
# game/interface.rpy:333
|
||||
old "[exception!q]"
|
||||
new "[exception!q]"
|
||||
|
||||
# game/interface.rpy:351
|
||||
old "Text input may not contain the {{ or [[ characters."
|
||||
new "Текст не должен содержать знаки {{ или [[."
|
||||
|
||||
# game/interface.rpy:356
|
||||
old "File and directory names may not contain / or \\."
|
||||
new "Имена файлов и папок не должны содержать / или \\."
|
||||
|
||||
# game/interface.rpy:362
|
||||
old "File and directory names must consist of ASCII characters."
|
||||
new "Имена файлов и папок должны состоять из знаков ASCII."
|
||||
|
||||
# game/interface.rpy:383
|
||||
old "INFORMATION"
|
||||
new "ИНФОРМАЦИЯ"
|
||||
|
||||
# game/interface.rpy:426
|
||||
old "PROCESSING"
|
||||
new "ОБРАБОТКА"
|
||||
|
||||
# game/interface.rpy:443
|
||||
old "QUESTION"
|
||||
new "ВОПРОС"
|
||||
|
||||
# game/interface.rpy:456
|
||||
old "CHOICE"
|
||||
new "ВЫБОР"
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/navigation.rpy:150
|
||||
old "Navigate: [project.current.name]"
|
||||
new "Навигация: [project.current.name]"
|
||||
|
||||
# game/navigation.rpy:159
|
||||
old "Order: "
|
||||
new "Порядок: "
|
||||
|
||||
# game/navigation.rpy:160
|
||||
old "alphabetical"
|
||||
new "алфавитный"
|
||||
|
||||
# game/navigation.rpy:162
|
||||
old "by-file"
|
||||
new "по-файлу"
|
||||
|
||||
# game/navigation.rpy:164
|
||||
old "natural"
|
||||
new "натуральный"
|
||||
|
||||
# game/navigation.rpy:176
|
||||
old "Category:"
|
||||
new "Категория:"
|
||||
|
||||
# game/navigation.rpy:178
|
||||
old "files"
|
||||
new "файлы"
|
||||
|
||||
# game/navigation.rpy:179
|
||||
old "labels"
|
||||
new "метки"
|
||||
|
||||
# game/navigation.rpy:180
|
||||
old "defines"
|
||||
new "определения"
|
||||
|
||||
# game/navigation.rpy:181
|
||||
old "transforms"
|
||||
new "трансформации"
|
||||
|
||||
# game/navigation.rpy:182
|
||||
old "screens"
|
||||
new "экраны"
|
||||
|
||||
# game/navigation.rpy:183
|
||||
old "callables"
|
||||
new "вызываемые"
|
||||
|
||||
# game/navigation.rpy:184
|
||||
old "TODOs"
|
||||
new "TODO"
|
||||
|
||||
# game/navigation.rpy:223
|
||||
old "+ Add script file"
|
||||
new "+ Добавить файл сценария"
|
||||
|
||||
# game/navigation.rpy:231
|
||||
old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
|
||||
new "Не найдено комментариев TODO.\n\nЧтобы создать такой, включите \"#TODO\" в вашем сценарии"
|
||||
|
||||
# game/navigation.rpy:238
|
||||
old "The list of names is empty."
|
||||
new "Список имен пуст."
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/new_project.rpy:22
|
||||
old "Choose Project Template"
|
||||
new "Выберите Образец Проекта"
|
||||
|
||||
# game/new_project.rpy:40
|
||||
old "Please select a template to use for your new project. The template sets the default font and the user interface language. If your language is not supported, choose 'english'."
|
||||
new "Пожалуйста, выберите образец, на котором основывать ваш проект. Образец задает шрифт и язык по умолчанию для интерфейса. Если ваш язык не поддерживается, выберите 'english'."
|
||||
|
||||
# game/new_project.rpy:55
|
||||
old "PROJECT NAME"
|
||||
new "ИМЯ ПРОЕКТА"
|
||||
|
||||
# game/new_project.rpy:56
|
||||
old "Please enter the name of your project:"
|
||||
new "Пожалуйтса, введите имя проекта:"
|
||||
|
||||
# game/new_project.rpy:62
|
||||
old "The project name may not be empty."
|
||||
new "Имя проекта не должно быть пустым."
|
||||
|
||||
# game/new_project.rpy:67
|
||||
old "[project_name!q] already exists. Please choose a different project name."
|
||||
new "[project_name!q] уже существует. Выберите другое имя проекта."
|
||||
|
||||
# game/new_project.rpy:70
|
||||
old "[project_dir!q] already exists. Please choose a different project name."
|
||||
new "[project_dir!q] уже существует. Выберите другое имя проекта."
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/preferences.rpy:40
|
||||
old "Launcher Preferences"
|
||||
new "Настройки Launcher"
|
||||
|
||||
# game/preferences.rpy:61
|
||||
old "Projects Directory:"
|
||||
new "Папка проектов:"
|
||||
|
||||
# game/preferences.rpy:68
|
||||
old "[persistent.projects_directory!q]"
|
||||
new "[persistent.projects_directory!q]"
|
||||
|
||||
# game/preferences.rpy:70
|
||||
old "Not Set"
|
||||
new "Не задано"
|
||||
|
||||
# game/preferences.rpy:84
|
||||
old "Text Editor:"
|
||||
new "Текстовый редактор:"
|
||||
|
||||
# game/preferences.rpy:106
|
||||
old "Update Channel:"
|
||||
new "Канал обновлений:"
|
||||
|
||||
# game/preferences.rpy:126
|
||||
old "Navigation Options:"
|
||||
new "Опции навигации:"
|
||||
|
||||
# game/preferences.rpy:130
|
||||
old "Include private names"
|
||||
new "Включать приватные имена"
|
||||
|
||||
# game/preferences.rpy:131
|
||||
old "Include library names"
|
||||
new "Включать имена библиотек"
|
||||
|
||||
# game/preferences.rpy:141
|
||||
old "Launcher Options:"
|
||||
new "Опции Launcher:"
|
||||
|
||||
# game/preferences.rpy:145
|
||||
old "Hardware rendering"
|
||||
new "Аппаратный рендеринг"
|
||||
|
||||
# game/preferences.rpy:146
|
||||
old "Show templates"
|
||||
new "Показывать образцы"
|
||||
|
||||
# game/preferences.rpy:149
|
||||
old "Console output"
|
||||
new "Вывод на консоль"
|
||||
|
||||
# game/preferences.rpy:170
|
||||
old "Open launcher project"
|
||||
new "Открыть проект launcher"
|
||||
|
||||
# game/preferences.rpy:184
|
||||
old "Language:"
|
||||
new "Язык:"
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/project.rpy:204
|
||||
old "Ren'Py is scanning the project..."
|
||||
new "Ren'Py сканирует проект..."
|
||||
|
||||
# game/project.rpy:508
|
||||
old "PROJECTS DIRECTORY"
|
||||
new "ДИРЕКТОРИЯ ПРОЕКТОВ"
|
||||
|
||||
# game/project.rpy:508
|
||||
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
|
||||
new "Пожалуйста, выберите директорию проектов, используя выбиратель директорий.\n{b}Он мог появится сзади этого окна.{/b}"
|
||||
|
||||
# game/project.rpy:508
|
||||
old "This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."
|
||||
new "Launcher будет искать проекты в этой директории, создавать новые проекты в этой директории, и размещать построенные проекты в этой директории."
|
||||
|
||||
# game/project.rpy:548
|
||||
old "Ren'Py was unable to run python with tkinter to choose the projects directory."
|
||||
new "Ren'Py не смогла запустить python с tkinter для выбора директории проектов."
|
||||
|
||||
# game/project.rpy:552
|
||||
old "Ren'Py has set the projects directory to:"
|
||||
new "Ren'Py установила директорию проектов на:"
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
translate russian python:
|
||||
|
||||
make_style_backup()
|
||||
@@ -0,0 +1,36 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/translations.rpy:10
|
||||
old "Create or Update Translations"
|
||||
new "Создать или Обновить Переводы"
|
||||
|
||||
# game/translations.rpy:10
|
||||
old "Please enter the name of the language for which you want to create or update translations."
|
||||
new "Пожалуйста, введите имя языка, для которого вы хотите создать или обновить переводы."
|
||||
|
||||
# game/translations.rpy:15
|
||||
old "The language name can not be the empty string."
|
||||
new "Имя языка не должно быть пустой строкой."
|
||||
|
||||
# game/translations.rpy:26
|
||||
old "Ren'Py is generating translations...."
|
||||
new "Ren'Py создает переводы..."
|
||||
|
||||
# game/translations.rpy:30
|
||||
old "Ren'Py has finished generating [language] translations."
|
||||
new "Ren'Py закончил создавать переводы для [language]."
|
||||
|
||||
# game/translations.rpy:44
|
||||
old "What format would you like for the extracted dialogue?"
|
||||
new "Какой формат вы желаете для извлеченного диалога?"
|
||||
|
||||
# game/translations.rpy:56
|
||||
old "Ren'Py is extracting dialogue...."
|
||||
new "Ren'Py извлекает диалог..."
|
||||
|
||||
# game/translations.rpy:60
|
||||
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[format] in the base directory."
|
||||
new "Ren'Py закончила извлечение диалога. Извлеченный диалог может быть найден в папке base, в подпапке dialogue.[format]."
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
# TODO: Translation updated at 2013-12-08 21:52
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/updater.rpy:54
|
||||
old "Select Update Channel"
|
||||
new "Выберите Канал Обновлений"
|
||||
|
||||
# game/updater.rpy:65
|
||||
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
|
||||
new "Канал Обновлений выбирает, какую версию Ren'Py скачает программа для обновления. Выберите канал обновлений:"
|
||||
|
||||
# game/updater.rpy:70
|
||||
old "Release"
|
||||
new "Релиз"
|
||||
|
||||
# game/updater.rpy:76
|
||||
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
|
||||
new "{b}Рекомендуется.{/b} Эта версия Ren'Py должна использоваться для всех новых игр."
|
||||
|
||||
# game/updater.rpy:81
|
||||
old "Prerelease"
|
||||
new "Пререлиз"
|
||||
|
||||
# game/updater.rpy:87
|
||||
old "A preview of the next version of Ren'Py that can be used for testing and taking advantage of new features, but not for final releases of games."
|
||||
new "Взгляд на следующую версию Ren'Py, которую можно использовать для тестирования и использования новых возможностей, но не для финальных релизов игр."
|
||||
|
||||
# game/updater.rpy:93
|
||||
old "Experimental"
|
||||
new "Экспериментальная"
|
||||
|
||||
# game/updater.rpy:99
|
||||
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
|
||||
new "Экспериментальные версии Ren'Py. Не выбирайте этот канал, если вас не просил об этом разработчик Ren'Py."
|
||||
|
||||
# game/updater.rpy:119
|
||||
old "An error has occured:"
|
||||
new "Возникла ошибка:"
|
||||
|
||||
# game/updater.rpy:121
|
||||
old "Checking for updates."
|
||||
new "Проверка обновлений."
|
||||
|
||||
# game/updater.rpy:123
|
||||
old "Ren'Py is up to date."
|
||||
new "Ren'Py обновлен."
|
||||
|
||||
# game/updater.rpy:125
|
||||
old "[u.version] is now available. Do you want to install it?"
|
||||
new "[u.version] доступна. Вы хотите её установить?"
|
||||
|
||||
# game/updater.rpy:127
|
||||
old "Preparing to download the update."
|
||||
new "Подготовка к обновлению."
|
||||
|
||||
# game/updater.rpy:129
|
||||
old "Downloading the update."
|
||||
new "Загрузка обновления."
|
||||
|
||||
# game/updater.rpy:131
|
||||
old "Unpacking the update."
|
||||
new "Распаковка обновления."
|
||||
|
||||
# game/updater.rpy:133
|
||||
old "Finishing up."
|
||||
new "Завершение."
|
||||
|
||||
# game/updater.rpy:135
|
||||
old "The update has been installed. Ren'Py will restart."
|
||||
new "Обновление было установлено. Ren'Py будет перезапущен."
|
||||
|
||||
# game/updater.rpy:137
|
||||
old "The update has been installed."
|
||||
new "Обновление было установлено."
|
||||
|
||||
# game/updater.rpy:139
|
||||
old "The update was cancelled."
|
||||
new "Обновление было отменено."
|
||||
|
||||
# game/updater.rpy:156
|
||||
old "Ren'Py Update"
|
||||
new "Обновление Ren'Py"
|
||||
|
||||
# game/updater.rpy:162
|
||||
old "Proceed"
|
||||
new "Продолжить"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/about.rpy:21
|
||||
old "[version!q]"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/add_file.rpy:7
|
||||
old "FILENAME"
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/android.rpy:12
|
||||
old "To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
|
||||
new "Para construir un paquete para Android, por favor descarga RAPT, descomprimelo y colocalo dentro de la carpeta de Ren'Py. Despues reinicia el launcher de Ren'Py."
|
||||
|
||||
# game/android.rpy:13
|
||||
old "A 32-bit Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Se necesita Java Development Kit de 32-bit para construir paquetes de Android en Windows. El JDK es diferente al JRE, es posible que tenga Java sin tener el JDK.\n\nPor favor {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}descarga e instala el JDK{/a}, después, reinicia Ren'Py."
|
||||
@@ -103,3 +107,8 @@ translate spanish strings:
|
||||
# game/android.rpy:435
|
||||
old "Build & Install"
|
||||
new "Construir & Instalar"
|
||||
|
||||
# game/android.rpy:486
|
||||
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
|
||||
new "Antes de empaquetar apps para Android, vas a necesitar descargar RAPT, Ren'Py Android Packaging Tool. ¿Quieres descargar RAPT ahora?"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/choose_theme.rpy:274
|
||||
old "Could not change the theme. Perhaps options.rpy was changed too much."
|
||||
|
||||
@@ -7,7 +7,7 @@ translate spanish strings:
|
||||
|
||||
# renpy/common/00action_file.rpy:587
|
||||
old "Quick save complete."
|
||||
new "Guardado rapido completado"
|
||||
new "Guardado rápido completado"
|
||||
|
||||
|
||||
#translation: renpy/common/00gallery.rpy
|
||||
@@ -320,3 +320,103 @@ translate spanish strings:
|
||||
# renpy/common/_layout/classic_load_save.rpym:161
|
||||
old "q"
|
||||
new "q"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:25
|
||||
old "Displayable Inspector"
|
||||
new "Displayable Inspector"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:31
|
||||
old "Nothing to inspect."
|
||||
new "Nada para inspeccionar."
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:40
|
||||
old "Size"
|
||||
new "Tamaño"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:45
|
||||
old "Style"
|
||||
new "Estilo"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:105
|
||||
old "Inspecting Styles of [displayable_name!q]"
|
||||
new "Inspeccionando estilos de [displayable_name!q]"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:117
|
||||
old "displayable:"
|
||||
new "visualizable:"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:124
|
||||
old " (no properties affect the displayable)"
|
||||
new " (no hay propiedades que afecten la visualización)"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:126
|
||||
old " (default properties omitted)"
|
||||
new " (propiedades por defecto omitidas)"
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:156
|
||||
old "<repr() failed>"
|
||||
new "<repr() fallido>"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:46
|
||||
old "Reload Game (Shift+R)"
|
||||
new "Reiniciar Juego (Shift+R)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:49
|
||||
old "Variable Viewer"
|
||||
new "Visor De Variables"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:52
|
||||
old "Theme Test"
|
||||
new "Probar Tema"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:58
|
||||
old "Image Location Picker"
|
||||
new "Image Location Picker"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:61
|
||||
old "Filename List"
|
||||
new "Lista De Archivos"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:307
|
||||
old "Undefined Images"
|
||||
new "Imagenes No Definidas"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:410
|
||||
old "Mouse position: %r"
|
||||
new "Posición del ratón: %r"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:412
|
||||
old "Right-click or escape to quit."
|
||||
new "Click-derecho o escape para salir."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:465
|
||||
old "Done"
|
||||
new "Hecho"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:44
|
||||
old "Developer Menu"
|
||||
new "Menú De Desarrollo"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:405
|
||||
old "Rectangle: %r"
|
||||
new "Rectángulo: %r"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:69
|
||||
old "Console (Shift+O)"
|
||||
new "Consola (Mayús.+O)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:81
|
||||
old "Show Image Load Log"
|
||||
new "Muestra registro de carga de imagen"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:84
|
||||
old "Hide Image Load Log"
|
||||
new "Oculta registro de carga de imagen"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:149
|
||||
old "No variables have changed since the game started."
|
||||
new "Ninguna variable ha cambiado desde el inicio del juego."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:152
|
||||
old "Return to the developer menu"
|
||||
new "Volver al menú de desarrollo"
|
||||
|
||||
@@ -31,3 +31,7 @@ translate spanish strings:
|
||||
# game/distribute.rpy:910
|
||||
old "Processed {b}[complete]{/b} of {b}[total]{/b} files."
|
||||
new "Procesados {b}[complete]{/b} de {b}[total]{/b} archivos."
|
||||
|
||||
# game/distribute.rpy:335
|
||||
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
|
||||
new "Ha fallado la construcción de distribuciones:\n\nLa variable build.directory_name no puede incluir espacios, dos puntos ni punto y coma."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/distribute_gui.rpy:139
|
||||
old "Build Distributions: [project.current.name!q]"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# description for the option: "Editra"
|
||||
# game/editor.rpy:120
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/font_page.rpy 65
|
||||
old "PROJECTS:"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/interface.rpy:89
|
||||
old "Documentation"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/navigation.rpy:150
|
||||
old "Navigate: [project.current.name]"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/new_project.rpy:22
|
||||
old "Choose Project Template"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/preferences.rpy:40
|
||||
old "Launcher Preferences"
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
translate spanish strings:
|
||||
|
||||
# game/project.rpy:201
|
||||
old "Launching the project failed."
|
||||
new "La ejecución del proyecto ha fallado."
|
||||
|
||||
# game/project.rpy:201
|
||||
old "Please ensure that your project launches normally before running this command."
|
||||
new "Por favor, asegurate de que tu proyecto se ejecuta normalmente antes de ejecutar este comando."
|
||||
|
||||
# game/project.rpy:204
|
||||
old "Ren'Py is scanning the project..."
|
||||
new "Ren'Py está escaneando el proyecto..."
|
||||
@@ -23,3 +31,24 @@ translate spanish strings:
|
||||
# game/project.rpy:547
|
||||
old "Ren'Py has set the projects directory to:"
|
||||
new "Ren'Py ha establecido el directorio de proyectos:"
|
||||
|
||||
# game/project.rpy:30
|
||||
old "After making changes to the script, press shift+R to reload your game."
|
||||
new "Despues de hacer cambios a un script, presiona shift+R para recargar tu juego."
|
||||
|
||||
# game/project.rpy:31
|
||||
old "Press shift+O (the letter) to access the console."
|
||||
new "Presiona shift+O (la letra) para acceder a la consola."
|
||||
|
||||
# game/project.rpy:32
|
||||
old "Press shift+D to access the developer menu."
|
||||
new "Presiona shift+D para acceder al menú de desarrollador."
|
||||
|
||||
# game/project.rpy:496
|
||||
old "Launching"
|
||||
new "Ejecutando"
|
||||
|
||||
# game/project.rpy:584
|
||||
old "Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."
|
||||
new "Ren'Py no puede ejecutar python con tkinter para escoger el directorio de proyectos. Por favor, installa el paquete python-tk o tkinter."
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
translate spanish python:
|
||||
translate spanish python:
|
||||
|
||||
make_style_backup()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/translations.rpy:10
|
||||
old "Create or Update Translations"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
translate spanish strings:
|
||||
translate spanish strings:
|
||||
|
||||
# game/updater.rpy:54
|
||||
old "Select Update Channel"
|
||||
@@ -32,6 +32,14 @@ translate spanish strings:
|
||||
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
|
||||
new "Versiones experimentales de Ren'Py. No debes seleccionar el canal a menos que te lo pida un desarrollador de Ren'Py."
|
||||
|
||||
# game/updater.rpy:106
|
||||
old "Nightly"
|
||||
new "Nightly"
|
||||
|
||||
# game/updater.rpy:112
|
||||
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
|
||||
new "Versión de desarrollo de Ren'Py. Puede tener las últimas características o puede no funcionar."
|
||||
|
||||
# game/updater.rpy:119
|
||||
old "An error has occured:"
|
||||
new "Ha ocurrido un error:"
|
||||
@@ -83,3 +91,4 @@ translate spanish strings:
|
||||
# game/updater.rpy:162
|
||||
old "Proceed"
|
||||
new "Seguir"
|
||||
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python:
|
||||
|
||||
if persistent.translate_language is None:
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python:
|
||||
# This can be one of None, "available", "not-available", or "error".
|
||||
@@ -12,7 +30,8 @@ init python:
|
||||
UPDATE_URLS = {
|
||||
"Release" : "http://update.renpy.org/release/updates.json",
|
||||
"Prerelease" : "http://update.renpy.org/prerelease/updates.json",
|
||||
"Experimental" : "http://update.renpy.org/experimental/updates.json"
|
||||
"Experimental" : "http://update.renpy.org/experimental/updates.json",
|
||||
"Nightly" : "http://nightly.renpy.org/current/updates.json",
|
||||
}
|
||||
|
||||
version_tuple = renpy.version(tuple=True)
|
||||
@@ -29,7 +48,7 @@ init python:
|
||||
|
||||
return name in updater.get_installed_packages()
|
||||
|
||||
def add_dlc(name):
|
||||
def add_dlc(name, restart=False):
|
||||
"""
|
||||
Adds the DLC package, if it doesn't already exist.
|
||||
|
||||
@@ -39,7 +58,12 @@ init python:
|
||||
if check_dlc(name):
|
||||
return True
|
||||
|
||||
return renpy.invoke_in_new_context(updater.update, DLC_URL, add=[name], public_key=PUBLIC_KEY, simulate=UPDATE_SIMULATE, restart=False)
|
||||
if persistent.update_channel == "Nightly":
|
||||
dlc_url = UPDATE_URLS["Nightly"]
|
||||
else:
|
||||
dlc_url = DLC_URL
|
||||
|
||||
return renpy.invoke_in_new_context(updater.update, dlc_url, add=[name], public_key=PUBLIC_KEY, simulate=UPDATE_SIMULATE, restart=restart)
|
||||
|
||||
screen update_channel:
|
||||
|
||||
@@ -99,6 +123,18 @@ screen update_channel:
|
||||
text _("Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer.") style "l_small_text"
|
||||
|
||||
|
||||
# Nightly
|
||||
add SPACER
|
||||
|
||||
textbutton _("Nightly") action [ SetField(persistent, "update_channel", "Nightly"), Jump("preferences") ]
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
text _("The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all.") style "l_small_text"
|
||||
|
||||
|
||||
textbutton _("Cancel") action Jump("preferences") style "l_left_button"
|
||||
|
||||
label update_preference:
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# See LICENSE.txt for license details.
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init python in util:
|
||||
import os
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# -*- python -*-
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
|
||||
@@ -1,3 +1,23 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
cdef extern from "fribidi/fribidi.h":
|
||||
int FRIBIDI_TYPE_LTR
|
||||
|
||||
@@ -0,0 +1,549 @@
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
from __future__ import print_function, unicode_literals, division, absolute_import
|
||||
|
||||
str = unicode # @ReservedAssignment
|
||||
|
||||
import collections
|
||||
import os
|
||||
|
||||
try:
|
||||
from io import StringIO
|
||||
except:
|
||||
from StringIO import StringIO
|
||||
|
||||
# Paths
|
||||
BASE = os.path.dirname(os.path.abspath(__file__))
|
||||
ROOT = os.path.dirname(BASE)
|
||||
|
||||
def sorted_dict(**kwargs):
|
||||
"""
|
||||
Constructs an ordered_dict from the keyword arguments in sorted order.
|
||||
"""
|
||||
|
||||
items = list(kwargs.items())
|
||||
return collections.OrderedDict(items)
|
||||
|
||||
################################################################################
|
||||
# Prefixes
|
||||
################################################################################
|
||||
|
||||
# A map from prefix name to Prefix object.
|
||||
prefixes = collections.OrderedDict()
|
||||
|
||||
class Prefix(object):
|
||||
def __init__(self, index, name, priority, alts):
|
||||
|
||||
# The index of where this prefix is stored in memory, or -1 if this
|
||||
# prefix isn't stored in memory.
|
||||
self.index = index
|
||||
|
||||
# The name of this prefix.
|
||||
self.name = name
|
||||
|
||||
# The priority of this prefix. When added at the same time, higher
|
||||
# priority prefixes take precendence over lower priority prefixes.
|
||||
self.priority = priority
|
||||
|
||||
# A list of prefix indexes that should be updated when this prefix is
|
||||
# updated, including this prefix.
|
||||
if index >= 0:
|
||||
self.alts = [ self.index ]
|
||||
self.alt_names = [ self.name ]
|
||||
else:
|
||||
self.alts = [ ]
|
||||
self.alt_names = [ ]
|
||||
|
||||
for i in alts:
|
||||
self.alts.append(prefixes[i].index)
|
||||
self.alt_names.append(i)
|
||||
|
||||
prefixes[name] = self
|
||||
|
||||
# The number of priority levels we have.
|
||||
PRIORITY_LEVELS = 4
|
||||
|
||||
# The number of prefixes we have.
|
||||
PREFIX_COUNT = 6
|
||||
|
||||
Prefix(5, 'selected_hover_', 3, [ ])
|
||||
Prefix(4, 'selected_idle_', 3, [ ])
|
||||
Prefix(3, 'selected_insensitive_', 3, [ ])
|
||||
Prefix(-3, 'selected_', 2, [ "selected_hover_", "selected_idle_", "selected_insensitive_" ])
|
||||
Prefix(2, 'hover_', 1, [ "selected_hover_" ])
|
||||
Prefix(1, 'idle_', 1, [ "selected_idle_" ] )
|
||||
Prefix(0, 'insensitive_', 1, [ "selected_insensitive_" ])
|
||||
Prefix(-4, '', 0, [ "selected_hover_", "selected_idle_", "selected_insensitive_", "idle_", "hover_", "insensitive_" ] )
|
||||
|
||||
Prefix(-2, 'activate_', 0, [ ])
|
||||
Prefix(-1, 'selected_activate_', 0, [ ])
|
||||
|
||||
|
||||
################################################################################
|
||||
# Style Properties
|
||||
################################################################################
|
||||
|
||||
# All the style properties we know about. This is a dict, that maps each style
|
||||
# to a function that is called when it is set, or None if no such function
|
||||
# is needed.
|
||||
style_properties = sorted_dict(
|
||||
activate_sound = None,
|
||||
aft_bar = 'none_is_null',
|
||||
aft_gutter = None,
|
||||
antialias = None,
|
||||
vertical = None,
|
||||
background = 'renpy.easy.displayable_or_none',
|
||||
bar_invert = None,
|
||||
bar_resizing = None,
|
||||
unscrollable = None,
|
||||
bar_vertical = None,
|
||||
black_color = 'renpy.easy.color',
|
||||
bold = None,
|
||||
bottom_margin = None,
|
||||
bottom_padding = None,
|
||||
box_layout = None,
|
||||
box_reverse = None,
|
||||
box_wrap = None,
|
||||
caret = 'renpy.easy.displayable_or_none',
|
||||
child = 'renpy.easy.displayable_or_none',
|
||||
clipping = None,
|
||||
color = 'renpy.easy.color',
|
||||
drop_shadow = None,
|
||||
drop_shadow_color = 'renpy.easy.color',
|
||||
first_indent = None,
|
||||
first_spacing = None,
|
||||
fit_first = None,
|
||||
focus_mask = None,
|
||||
focus_rect = None,
|
||||
font = None,
|
||||
fore_bar = 'none_is_null',
|
||||
fore_gutter = None,
|
||||
foreground = 'renpy.easy.displayable_or_none',
|
||||
hover_sound = None,
|
||||
hyperlink_functions=None,
|
||||
italic = None,
|
||||
justify = None,
|
||||
kerning = None,
|
||||
language = None,
|
||||
layout = None,
|
||||
line_leading = None,
|
||||
left_margin = None,
|
||||
line_overlap_split=None,
|
||||
left_padding = None,
|
||||
line_spacing = None,
|
||||
mouse = None,
|
||||
min_width = None,
|
||||
newline_indent = None,
|
||||
order_reverse = None,
|
||||
outlines = 'expand_outlines',
|
||||
rest_indent = None,
|
||||
right_margin = None,
|
||||
right_padding = None,
|
||||
ruby_style = None,
|
||||
size = None,
|
||||
size_group = None,
|
||||
slow_abortable = None,
|
||||
slow_cps = None,
|
||||
slow_cps_multiplier = None,
|
||||
spacing = None,
|
||||
strikethrough = None,
|
||||
subtitle_width = None,
|
||||
subpixel = None,
|
||||
text_y_fudge = None,
|
||||
text_align = None,
|
||||
thumb = 'none_is_null',
|
||||
thumb_offset = None,
|
||||
thumb_shadow = 'none_is_null',
|
||||
time_policy = None,
|
||||
top_margin = None,
|
||||
top_padding = None,
|
||||
underline = None,
|
||||
xanchor = 'expand_anchor',
|
||||
xfill = None,
|
||||
xmaximum = None,
|
||||
xminimum = None,
|
||||
xoffset = None,
|
||||
xpos = None,
|
||||
yanchor = 'expand_anchor',
|
||||
yfill = None,
|
||||
ymaximum = None,
|
||||
yminimum = None,
|
||||
yoffset = None,
|
||||
ypos = None,
|
||||
)
|
||||
|
||||
# A map from a style property to its index in the order of style_properties.
|
||||
style_property_index = collections.OrderedDict()
|
||||
for i, name in enumerate(style_properties):
|
||||
style_property_index[name] = i
|
||||
|
||||
style_property_count = len(style_properties)
|
||||
|
||||
# print("{} properties * {} prefixes = {} cache entries".format(
|
||||
# style_property_count, PREFIX_COUNT, style_property_count * PREFIX_COUNT))
|
||||
|
||||
# A list of synthetic style properties, where each property is expanded into
|
||||
# multiple style properties. Each property are mapped into a list of tuples,
|
||||
# with each consisting of:
|
||||
#
|
||||
# * The name of the style to assign.
|
||||
# * A string giving the name of a functon to call to get the value to assign, a constant
|
||||
# numeric value, or None to not change the argument.
|
||||
synthetic_properties = sorted_dict(
|
||||
xmargin = [
|
||||
('left_margin', None),
|
||||
('right_margin', None)
|
||||
],
|
||||
|
||||
ymargin = [
|
||||
('top_margin', None),
|
||||
('bottom_margin', None),
|
||||
],
|
||||
|
||||
xalign = [
|
||||
('xpos', None),
|
||||
('xanchor', None),
|
||||
],
|
||||
|
||||
yalign = [
|
||||
('ypos', None),
|
||||
('yanchor', None),
|
||||
],
|
||||
|
||||
xpadding = [
|
||||
('left_padding', None),
|
||||
('right_padding', None),
|
||||
],
|
||||
|
||||
ypadding = [
|
||||
('top_padding', None),
|
||||
('bottom_padding', None),
|
||||
],
|
||||
|
||||
minwidth = [ ('min_width', None) ],
|
||||
textalign = [ ('text_align', None) ],
|
||||
slow_speed = [ ('slow_cps', None) ],
|
||||
enable_hover = [ ],
|
||||
left_gutter = [ ('fore_gutter', None) ],
|
||||
right_gutter = [ ('aft_gutter', None) ],
|
||||
top_gutter = [ ('fore_gutter', None) ],
|
||||
bottom_gutter = [ ('aft_gutter', None) ],
|
||||
left_bar = [ ('fore_bar', None) ],
|
||||
right_bar = [ ('aft_bar', None) ],
|
||||
top_bar = [ ('fore_bar', None) ],
|
||||
bottom_bar = [ ('aft_bar', None) ],
|
||||
box_spacing = [ ( 'spacing', None ) ],
|
||||
box_first_spacing = [ ( 'first_spacing', None) ],
|
||||
|
||||
pos = [
|
||||
('xpos', 'index_0'),
|
||||
('ypos', 'index_1'),
|
||||
],
|
||||
|
||||
anchor = [
|
||||
('xanchor', 'index_0'),
|
||||
('yanchor', 'index_1'),
|
||||
],
|
||||
|
||||
# Conflicts w/ a variable used in the Style implementation.
|
||||
# offset = [
|
||||
# ('xoffset', index_0),
|
||||
# ('yoffset', index_1),
|
||||
# ],
|
||||
|
||||
align = [
|
||||
('xpos', 'index_0'),
|
||||
('ypos', 'index_1'),
|
||||
('xanchor', 'index_0'),
|
||||
('yanchor', 'index_1'),
|
||||
],
|
||||
|
||||
maximum = [
|
||||
('xmaximum', 'index_0'),
|
||||
('ymaximum', 'index_1'),
|
||||
],
|
||||
|
||||
minimum = [
|
||||
('xminimum', 'index_0'),
|
||||
('yminimum', 'index_1'),
|
||||
],
|
||||
|
||||
xsize = [
|
||||
('xminimum', None),
|
||||
('xmaximum', None),
|
||||
],
|
||||
|
||||
ysize = [
|
||||
('yminimum', None),
|
||||
('ymaximum', None),
|
||||
],
|
||||
|
||||
xysize = [
|
||||
('xminimum', 'index_0'),
|
||||
('xmaximum', 'index_0'),
|
||||
('yminimum', 'index_1'),
|
||||
('ymaximum', 'index_1'),
|
||||
],
|
||||
|
||||
area = [
|
||||
('xpos', 'index_0'),
|
||||
('ypos', 'index_1'),
|
||||
('xanchor', 0),
|
||||
('yanchor', 0),
|
||||
('xfill', True),
|
||||
('yfill', True),
|
||||
('xmaximum', 'index_2'),
|
||||
('ymaximum', 'index_3'),
|
||||
('xminimum', 'index_2'),
|
||||
('yminimum', 'index_3'),
|
||||
],
|
||||
|
||||
xcenter = [
|
||||
('xpos', None),
|
||||
('xanchor', 0.5),
|
||||
],
|
||||
|
||||
ycenter = [
|
||||
('ypos', None),
|
||||
('yanchor', 0.5),
|
||||
],
|
||||
)
|
||||
|
||||
all_properties = collections.OrderedDict()
|
||||
|
||||
for k, v in style_properties.items():
|
||||
all_properties[k] = [ (k, None) ]
|
||||
|
||||
all_properties.update(synthetic_properties)
|
||||
|
||||
################################################################################
|
||||
# Code Generation
|
||||
################################################################################
|
||||
|
||||
class CodeGen(object):
|
||||
"""
|
||||
Utility class for code generation.
|
||||
|
||||
`filename`
|
||||
The name of the file we code-generate into.
|
||||
`spew`
|
||||
If true, spew the generated code to stdout.
|
||||
"""
|
||||
|
||||
def __init__(self, filename, spew=False):
|
||||
self.filename = os.path.join(ROOT, filename)
|
||||
self.f = StringIO()
|
||||
self.depth = 0
|
||||
self.spew = spew
|
||||
|
||||
def close(self):
|
||||
|
||||
text = self.f.getvalue()
|
||||
|
||||
if os.path.exists(self.filename):
|
||||
with open(self.filename, "rb") as f:
|
||||
old = f.read()
|
||||
|
||||
if old == text:
|
||||
return
|
||||
|
||||
with open(self.filename, "wb") as f:
|
||||
f.write(text)
|
||||
|
||||
def write(self, s, *args, **kwargs):
|
||||
out = " " * self.depth
|
||||
out += s.format(*args, **kwargs)
|
||||
out = out.rstrip()
|
||||
|
||||
if self.spew:
|
||||
print(out)
|
||||
|
||||
out += "\n"
|
||||
self.f.write(out)
|
||||
|
||||
def indent(self):
|
||||
self.depth += 1
|
||||
|
||||
def dedent(self):
|
||||
self.depth -= 1
|
||||
|
||||
|
||||
def generate_constants():
|
||||
"""
|
||||
This generates code that defines the property functions.
|
||||
"""
|
||||
|
||||
g = CodeGen("module/gen/styleconstants.pxi")
|
||||
|
||||
g.write("DEF PRIORITY_LEVELS = {}", PRIORITY_LEVELS)
|
||||
g.write("DEF PREFIX_COUNT = {}", PREFIX_COUNT)
|
||||
g.write("DEF STYLE_PROPERTY_COUNT = {}", style_property_count)
|
||||
|
||||
for p in prefixes.values():
|
||||
if p.index < 0:
|
||||
continue
|
||||
|
||||
g.write("DEF {}PREFIX = {}", p.name.upper(), p.index * style_property_count)
|
||||
|
||||
for k in style_properties:
|
||||
g.write("DEF {}_INDEX = {}", k.upper(), style_property_index[k])
|
||||
|
||||
g.close()
|
||||
|
||||
def generate_property_function(g, prefix, propname, properties):
|
||||
name = prefix.name + propname
|
||||
|
||||
g.write("cdef int {name}_property(PyObject **cache, int *cache_priorities, int priority, object value) except -1:", name=name)
|
||||
g.indent()
|
||||
|
||||
g.write("priority += {}", prefix.priority)
|
||||
|
||||
for stylepropname, func in properties:
|
||||
value = "value"
|
||||
|
||||
g.write("")
|
||||
|
||||
if isinstance(func, str):
|
||||
g.write("v = {func}({value})", func=func, value=value)
|
||||
value = "v"
|
||||
elif func is not None:
|
||||
g.write("v = {}", func)
|
||||
value = "v"
|
||||
|
||||
propfunc = style_properties[stylepropname]
|
||||
|
||||
if propfunc is not None:
|
||||
g.write("v = {propfunc}({value})", propfunc=propfunc, value=value)
|
||||
value = "v"
|
||||
|
||||
for alt, alt_name in zip(prefix.alts, prefix.alt_names):
|
||||
g.write("assign({}, cache, cache_priorities, priority, <PyObject *> {}) # {}{}",
|
||||
alt * len(style_properties) + style_property_index[stylepropname],
|
||||
value, alt_name, stylepropname)
|
||||
|
||||
g.write("return 0")
|
||||
g.dedent()
|
||||
|
||||
g.write("")
|
||||
g.write('register_property_function("{}", {}_property)', name, name)
|
||||
g.write("")
|
||||
|
||||
pass
|
||||
|
||||
def generate_property_functions():
|
||||
"""
|
||||
This generates code that defines the property functions.
|
||||
"""
|
||||
|
||||
g = CodeGen("module/gen/stylepropertyfunctions.pxi")
|
||||
|
||||
for propname, proplist in all_properties.items():
|
||||
for prefix in sorted(prefixes.values(), key=lambda p : p.index):
|
||||
generate_property_function(g, prefix, propname, proplist)
|
||||
|
||||
g.close()
|
||||
|
||||
def generate_property(g, propname, prefix):
|
||||
"""
|
||||
This generates the code for a single property on the style object.
|
||||
"""
|
||||
|
||||
name = prefix.name + propname
|
||||
|
||||
g.write("property {}:", name)
|
||||
g.indent()
|
||||
|
||||
if name in style_properties:
|
||||
# __get__
|
||||
g.write("def __get__(self):")
|
||||
g.indent()
|
||||
g.write("return self._get({})", style_property_index[propname])
|
||||
g.dedent()
|
||||
|
||||
# __set__
|
||||
g.write("def __set__(self, value):")
|
||||
g.indent()
|
||||
g.write("self.properties.append({{ '{}' : value }})", name)
|
||||
g.dedent()
|
||||
|
||||
# __del__
|
||||
g.write("def __del__(self):")
|
||||
g.indent()
|
||||
g.write("self.delattr('{}')", name)
|
||||
g.dedent()
|
||||
|
||||
g.dedent()
|
||||
g.write("")
|
||||
|
||||
def generate_properties():
|
||||
|
||||
g = CodeGen("module/gen/styleproperties.pxi")
|
||||
|
||||
g.write("cdef class Style(StyleCore):")
|
||||
g.write("")
|
||||
|
||||
g.indent()
|
||||
|
||||
for propname in all_properties:
|
||||
for prefix in sorted(prefixes.values(), key=lambda p : p.index):
|
||||
generate_property(g, propname, prefix)
|
||||
|
||||
g.dedent()
|
||||
g.close()
|
||||
|
||||
def generate_sets():
|
||||
"""
|
||||
Generates code for sets of properties.
|
||||
"""
|
||||
|
||||
ap = collections.OrderedDict()
|
||||
|
||||
for k, v in all_properties.items():
|
||||
ap[k] = [ i[0] for i in v ]
|
||||
|
||||
prefix_priority = collections.OrderedDict()
|
||||
prefix_alts = collections.OrderedDict()
|
||||
|
||||
for p in prefixes.values():
|
||||
prefix_priority[p.name] = p.priority
|
||||
prefix_alts[p.name] = p.alt_names
|
||||
|
||||
g = CodeGen("module/gen/stylesets.pxi")
|
||||
|
||||
g.write("# This file is generated by generate_styles.py.")
|
||||
g.write("")
|
||||
g.write('exec """\\')
|
||||
g.write("all_properties = {}", ap)
|
||||
g.write("prefix_priority = {}", prefix_priority)
|
||||
g.write("prefix_alts = {}", prefix_alts)
|
||||
g.write('"""')
|
||||
g.close()
|
||||
|
||||
|
||||
def generate():
|
||||
generate_constants()
|
||||
generate_property_functions()
|
||||
generate_properties()
|
||||
generate_sets()
|
||||
|
||||
if __name__ == "__main__":
|
||||
generate()
|
||||
@@ -1,5 +1,5 @@
|
||||
# -*- python -*-
|
||||
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
|
||||
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
|
||||