diff -Nru renpy-6.99.14.1+dfsg/atom/Atom.edit.py renpy-6.99.14.3+dfsg/atom/Atom.edit.py --- renpy-6.99.14.1+dfsg/atom/Atom.edit.py 1970-01-01 00:00:00.000000000 +0000 +++ renpy-6.99.14.3+dfsg/atom/Atom.edit.py 2018-02-21 07:52:30.000000000 +0000 @@ -0,0 +1,85 @@ +#!/usr/bin/env python + +# The path to a copy of Atom that's been installed globally, if one exists. +# This is overidden by RENPY_ATOM, if set. If either is given, that is used +# and no special handing of the .atom directory is performed. +ATOM = None + +import sys +import os +import subprocess +import platform +import shutil + +import renpy + + +class Editor(renpy.editor.Editor): + + has_projects = True + + def get_atom(self): + """ + Returns the path to the atom executable, if None. Also takes care + of setting up the .atom directory if it's not available. + """ + + atom = os.environ.get("RENPY_ATOM", ATOM) + + if atom is not None: + return atom + + DIR = os.path.abspath(os.path.dirname(__file__)) + + if renpy.windows: + atom = os.path.join(DIR, "atom-windows", "atom.exe") + elif renpy.macintosh: + atom = os.path.join(DIR, "Atom.app", "Contents", "Resources", "app", "atom.sh") + else: + atom = os.path.join(DIR, "atom-linux-" + platform.machine(), "atom") + + default_dot_atom = os.path.join(DIR, "default-dot-atom") + dot_atom = os.path.join(DIR, ".atom") + + if not os.path.exists(dot_atom) and os.path.exists(default_dot_atom): + shutil.copytree(default_dot_atom, dot_atom) + + return atom + + def begin(self, new_window=False, **kwargs): + self.args = [ ] + + def open(self, filename, line=None, **kwargs): + + if line: + filename = "{}:{}".format(filename, line) + + self.args.append(filename) + + def open_project(self, project): + self.args.append(project) + + def end(self, **kwargs): + + atom = self.get_atom() + + self.args.reverse() + + args = [ atom ] + self.args + args = [ renpy.exports.fsencode(i) for i in args ] + + subprocess.Popen(args) + + +def main(): + e = Editor() + e.begin() + + for i in sys.argv[1:]: + e.open(i) + + e.end() + + +if __name__ == "__main__": + main() diff -Nru renpy-6.99.14.1+dfsg/debian/changelog renpy-6.99.14.3+dfsg/debian/changelog --- renpy-6.99.14.1+dfsg/debian/changelog 2018-02-08 17:46:23.000000000 +0000 +++ renpy-6.99.14.3+dfsg/debian/changelog 2018-04-12 23:01:40.000000000 +0000 @@ -1,3 +1,11 @@ +renpy (6.99.14.3+dfsg-1) unstable; urgency=medium + + * Team upload. + * New upstream version 6.99.14.3+dfsg. + * Declare compliance with Debian Policy 4.1.4. + + -- Markus Koschany Fri, 13 Apr 2018 01:01:40 +0200 + renpy (6.99.14.1+dfsg-1) unstable; urgency=medium * Team upload. diff -Nru renpy-6.99.14.1+dfsg/debian/control renpy-6.99.14.3+dfsg/debian/control --- renpy-6.99.14.1+dfsg/debian/control 2018-02-08 17:46:23.000000000 +0000 +++ renpy-6.99.14.3+dfsg/debian/control 2018-04-12 23:01:40.000000000 +0000 @@ -28,7 +28,7 @@ python-sphinx, python-sphinx-bootstrap-theme, zlib1g-dev -Standards-Version: 4.1.3 +Standards-Version: 4.1.4 Homepage: http://www.renpy.org/ XS-Python-Version: >= 2.6 Vcs-Git: https://anonscm.debian.org/git/pkg-games/renpy.git diff -Nru renpy-6.99.14.1+dfsg/gui/game/gui.rpy renpy-6.99.14.3+dfsg/gui/game/gui.rpy --- renpy-6.99.14.1+dfsg/gui/game/gui.rpy 2018-01-10 01:48:11.000000000 +0000 +++ renpy-6.99.14.3+dfsg/gui/game/gui.rpy 2018-03-30 13:17:57.000000000 +0000 @@ -227,6 +227,8 @@ define gui.slot_button_text_size = gui.scale(14) define gui.slot_button_text_xalign = 0.5 define gui.slot_button_text_idle_color = gui.idle_small_color +define gui.slot_button_text_selected_idle_color = gui.selected_color +define gui.slot_button_text_selected_hover_color = gui.hover_color ## The width and height of thumbnails used by the save slots. define config.thumbnail_width = gui.scale(256) diff -Nru renpy-6.99.14.1+dfsg/gui/game/screens.rpy renpy-6.99.14.3+dfsg/gui/game/screens.rpy --- renpy-6.99.14.1+dfsg/gui/game/screens.rpy 2018-01-10 01:48:11.000000000 +0000 +++ renpy-6.99.14.3+dfsg/gui/game/screens.rpy 2018-03-04 01:27:28.000000000 +0000 @@ -442,6 +442,7 @@ scrollbars "vertical" mousewheel True draggable True + pagekeys True side_yfill True @@ -457,6 +458,7 @@ scrollbars "vertical" mousewheel True draggable True + pagekeys True side_yfill True diff -Nru renpy-6.99.14.1+dfsg/launcher/game/editor.rpy renpy-6.99.14.3+dfsg/launcher/game/editor.rpy --- renpy-6.99.14.1+dfsg/launcher/game/editor.rpy 2018-01-31 03:26:45.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/editor.rpy 2018-03-22 05:42:08.000000000 +0000 @@ -140,19 +140,47 @@ Creates the list of FancyEditorInfo objects. """ + import platform + global fancy_editors scan_all() fei = fancy_editors = [ ] + # Atom. + AD = _("(Recommended) A modern and approachable text editor.") + + if renpy.windows: + dlc = "atom-windows" + installed = os.path.exists(os.path.join(config.basedir, "atom/atom-windows")) + elif renpy.macintosh: + dlc = "atom-mac" + installed = os.path.exists(os.path.join(config.basedir, "atom/Atom.app")) + else: + dlc = "atom-linux" + installed = os.path.exists(os.path.join(config.basedir, "atom/atom-linux-" + platform.machine())) + + e = FancyEditorInfo( + 0, + "Atom", + AD, + dlc, + _("Up to 150 MB download required."), + None) + + e.installed = e.installed and installed + + fei.append(e) + + # Editra. - ED = _("{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.") - EDL = _("{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.") + ED = _("A mature editor. Editra lacks the IME support required for Chinese, Japanese, and Korean text input.") + EDL = _("A mature editor. Editra lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython.") if renpy.windows: dlc = "editra-windows" - installed = os.path.exists(os.path.join(config.basedir, "editra/Editra-win32")) + installed = os.path.exists(os.path.join(config.basedir, "editra/editra.exe")) description = ED error_message = None elif renpy.macintosh: @@ -174,7 +202,7 @@ _("Up to 22 MB download required."), error_message) - e.installed = e.installed or installed + e.installed = e.installed and installed fei.append(e) @@ -195,7 +223,7 @@ None)) for k in editors: - if k in [ "Editra", "jEdit", "System Editor", "None" ]: + if k in [ "Atom", "Editra", "jEdit", "System Editor", "None" ]: continue fei.append(FancyEditorInfo( @@ -307,7 +335,7 @@ class Edit(Action): - alt = "Edit [text]." + alt = _("Edit [text].") def __init__(self, filename, line=None, check=False): """ @@ -410,8 +438,6 @@ Opens all scripts that are part of the current project in a web browser. """ - alt = "Edit [text]." - def __init__(self): return @@ -444,6 +470,42 @@ exception = traceback.format_exception_only(type(e), e)[-1][:-1] renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception) + + class EditProject(Action): + """ + Opens the project's base directory in an editor. + """ + + def __call__(self): + + if not check_editor(): + return + + try: + + e = renpy.editor.editor + + e.begin() + e.open_project(project.current.path) + e.end() + + except Exception, e: + exception = traceback.format_exception_only(type(e), e)[-1][:-1] + renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception) + + + def CanEditProject(): + """ + Returns True if EditProject can be used. + """ + + try: + e = renpy.editor.editor + return e.has_projects + except: + return False + + screen editor: frame: diff -Nru renpy-6.99.14.1+dfsg/launcher/game/front_page.rpy renpy-6.99.14.3+dfsg/launcher/game/front_page.rpy --- renpy-6.99.14.1+dfsg/launcher/game/front_page.rpy 2018-01-29 23:26:21.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/front_page.rpy 2018-02-23 05:47:41.000000000 +0000 @@ -211,7 +211,10 @@ textbutton "gui.rpy" action editor.Edit("game/gui.rpy", check=True) textbutton "screens.rpy" action editor.Edit("game/screens.rpy", check=True) - textbutton _("All script files") action editor.EditAll() + if editor.CanEditProject(): + textbutton _("Open project") action editor.EditProject() + else: + textbutton _("All script files") action editor.EditAll() add SPACER diff -Nru renpy-6.99.14.1+dfsg/launcher/game/gui7.rpy renpy-6.99.14.3+dfsg/launcher/game/gui7.rpy --- renpy-6.99.14.1+dfsg/launcher/game/gui7.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/gui7.rpy 2018-03-26 00:20:37.000000000 +0000 @@ -290,6 +290,7 @@ if gui_color: textbutton _("Continue") action Return(True) style "l_right_button" + key "input_enter" action Return(True) label change_gui: @@ -442,7 +443,7 @@ python hide: if gui.project_system_font: with open(os.path.join(project.current.gamedir, "tl/None/common.rpym"), "ab") as f: - f.write("define gui.system_font = {!r}\r\n".format(gui.project_system_font)) + f.write("define gui.system_font = {!r}\r\n".format(gui.project_system_font).encode("utf-8")) label gui_generate_images: @@ -450,7 +451,7 @@ python: interface.processing(_("Updating the project...")) - project.current.launch([ 'gui_images' ], env={ "RENPY_VARIANT" : "small phone" } ) - project.current.launch([ 'gui_images' ]) + project.current.launch([ 'gui_images' ], env={ "RENPY_VARIANT" : "small phone" }, wait=True) + project.current.launch([ 'gui_images' ], wait=True) jump front_page diff -Nru renpy-6.99.14.1+dfsg/launcher/game/itch.rpy renpy-6.99.14.3+dfsg/launcher/game/itch.rpy --- renpy-6.99.14.1+dfsg/launcher/game/itch.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/itch.rpy 2018-02-25 17:44:15.000000000 +0000 @@ -126,7 +126,9 @@ butler, "push", filename, - itch_project + ":" + build["version"] + "-" + channel, + itch_project + ":" + channel, + "--userversion", + build["version"], ) cc.run() diff -Nru renpy-6.99.14.1+dfsg/launcher/game/navigation.rpy renpy-6.99.14.3+dfsg/launcher/game/navigation.rpy --- renpy-6.99.14.1+dfsg/launcher/game/navigation.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/navigation.rpy 2018-03-22 05:39:47.000000000 +0000 @@ -166,6 +166,7 @@ frame style "l_label": has hbox xfill True text _("Navigate: [project.current.display_name!q]") style "l_label_text" + alt _("Navigate Script") frame: style "l_alternate" @@ -192,6 +193,7 @@ hbox: spacing HALF_INDENT text _("Category:") + alt "" textbutton _("files") action navigation.ChangeKind("file") textbutton _("labels") action navigation.ChangeKind("label") diff -Nru renpy-6.99.14.1+dfsg/launcher/game/options.rpy renpy-6.99.14.3+dfsg/launcher/game/options.rpy --- renpy-6.99.14.1+dfsg/launcher/game/options.rpy 2018-01-24 01:20:02.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/options.rpy 2018-02-25 03:26:41.000000000 +0000 @@ -269,6 +269,22 @@ build.classify_renpy("**/thumbs.db", None) build.classify_renpy("**/.*", None) + # Atom rules. These have to be very early, since Atom uses names like + # tmp for packages. + build.classify_renpy("atom/", "atom-all source_only") + build.classify_renpy("atom/Atom.edit.py", "atom-all source_only") + build.classify_renpy("atom/default-dot-atom/**", "atom-all") + build.classify_renpy("atom/atom-windows/**", "atom-windows") + build.classify_renpy("atom/Atom.app/**", "atom-mac") + build.classify_renpy("atom/atom-linux**", "atom-linux") + + try: + with open(os.path.join(config.renpy_base, "atom", "executable.txt")) as f: + for l in f: + build.executable(l.strip()) + except: + pass + build.classify_renpy("rapt/**", "rapt") build.classify_renpy("renios/prototype/base/", None) @@ -292,6 +308,7 @@ build.classify_renpy("**/tmp/", None) build.classify_renpy("**/.Editra", None) + # main source. def source_and_binary(pattern, source="source", binary="binary"): @@ -373,11 +390,9 @@ build.classify_renpy("editra/Editra-mac.app/**", "editra-mac") build.classify_renpy("editra/lib/**", "editra-windows") build.classify_renpy("editra/editra.exe", "editra-windows") - - - # Executable rules. build.executable("editra/Editra/Editra") + # Packages. build.packages = [ ] @@ -386,9 +401,15 @@ build.package("raspi", "tar.bz2", "raspi", dlc=True, update=False) 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("atom-linux", "tar.bz2", "atom-all atom-linux", dlc=True) + build.package("atom-mac", "zip", "atom-all atom-mac", dlc=True) + build.package("atom-windows", "zip", "atom-all atom-windows", dlc=True) + build.package("rapt", "zip", "rapt", dlc=True) build.package("renios", "zip", "renios", dlc=True) diff -Nru renpy-6.99.14.1+dfsg/launcher/game/package_formats.rpy renpy-6.99.14.3+dfsg/launcher/game/package_formats.rpy --- renpy-6.99.14.1+dfsg/launcher/game/package_formats.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/package_formats.rpy 2018-03-18 17:55:59.000000000 +0000 @@ -32,7 +32,7 @@ from zipfile import crc32 - zlib.Z_DEFAULT_COMPRESSION = 9 + zlib.Z_DEFAULT_COMPRESSION = 5 class ZipFile(zipfile.ZipFile): diff -Nru renpy-6.99.14.1+dfsg/launcher/game/project.rpy renpy-6.99.14.3+dfsg/launcher/game/project.rpy --- renpy-6.99.14.1+dfsg/launcher/game/project.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/project.rpy 2018-02-24 19:26:59.000000000 +0000 @@ -95,6 +95,10 @@ self.dump_mtime = 0 def get_dump_filename(self): + + if os.path.exists(os.path.join(self.gamedir, "saves")): + return os.path.join(self.gamedir, "saves", "navigation.json") + self.make_tmp() return os.path.join(self.tmp, "navigation.json") diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/piglatin/common.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/piglatin/common.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/piglatin/common.rpy 2018-01-29 23:28:58.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/piglatin/common.rpy 2018-03-22 05:42:58.000000000 +0000 @@ -157,10 +157,54 @@ old "%b %d, %H:%M" new "%bay %day, %Hay:%May" - # 00action_file.rpy:852 + # 00action_file.rpy:344 + old "Save slot %s: [text]" + new "Avesay otslay %say: [text]" + + # 00action_file.rpy:417 + old "Load slot %s: [text]" + new "Oadlay otslay %say: [text]" + + # 00action_file.rpy:459 + old "Delete slot [text]" + new "Eleteday otslay [text]" + + # 00action_file.rpy:539 + old "File page auto" + new "Ilefay agepay autoay" + + # 00action_file.rpy:541 + old "File page quick" + new "Ilefay agepay uickqay" + + # 00action_file.rpy:543 + old "File page [text]" + new "Ilefay agepay [text]" + + # 00action_file.rpy:733 + old "Next file page." + new "Extnay ilefay agepay." + + # 00action_file.rpy:797 + old "Previous file page." + new "Reviouspay ilefay agepay." + + # 00action_file.rpy:858 old "Quick save complete." new "Uickqay avesay ompletecay." + # 00action_file.rpy:876 + old "Quick save." + new "Uickqay avesay." + + # 00action_file.rpy:895 + old "Quick load." + new "Uickqay oadlay." + + # 00action_other.rpy:344 + old "Language [text]" + new "Anguagelay [text]" + # 00director.rpy:703 old "The interactive director is not enabled here." new "Hetay interactiveay irectorday isay otnay enableday erehay." @@ -305,23 +349,203 @@ old "Self-voicing enabled. " new "Elfsay-oicingvay enableday. " - # 00library.rpy:183 + # 00library.rpy:150 + old "bar" + new "arbay" + + # 00library.rpy:151 + old "selected" + new "electedsay" + + # 00library.rpy:152 + old "viewport" + new "iewportvay" + + # 00library.rpy:153 + old "horizontal scroll" + new "orizontalhay crollsay" + + # 00library.rpy:154 + old "vertical scroll" + new "erticalvay crollsay" + + # 00library.rpy:155 + old "activate" + new "activateay" + + # 00library.rpy:156 + old "deactivate" + new "eactivateday" + + # 00library.rpy:157 + old "increase" + new "increaseay" + + # 00library.rpy:158 + old "decrease" + new "ecreaseday" + + # 00library.rpy:193 old "Skip Mode" new "Kipsay Odemay" - # 00library.rpy:269 + # 00library.rpy:279 old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}." new "Histay rogrampay ontainscay eefray oftwaresay underay aay umbernay ofay icenseslay, includingay hetay Itmay Icenselay anday Nugay Esserlay Eneralgay Ublicpay Icenselay. Aay ompletecay istlay ofay oftwaresay, includingay inkslay otay ullfay ourcesay odecay, ancay ebay oundfay {a=https://www.renpy.org/l/license}erehay{/a}." - # 00preferences.rpy:475 + # 00preferences.rpy:207 + old "display" + new "isplayday" + + # 00preferences.rpy:219 + old "transitions" + new "ansitionstray" + + # 00preferences.rpy:228 + old "skip transitions" + new "kipsay ansitionstray" + + # 00preferences.rpy:230 + old "video sprites" + new "ideovay pritessay" + + # 00preferences.rpy:239 + old "show empty window" + new "owshay emptyay indowway" + + # 00preferences.rpy:248 + old "text speed" + new "exttay peedsay" + + # 00preferences.rpy:256 + old "joystick" + new "oystickjay" + + # 00preferences.rpy:256 + old "joystick..." + new "oystickjay..." + + # 00preferences.rpy:263 + old "skip" + new "kipsay" + + # 00preferences.rpy:266 + old "skip unseen [text]" + new "kipsay unseenay [text]" + + # 00preferences.rpy:271 + old "skip unseen text" + new "kipsay unseenay exttay" + + # 00preferences.rpy:273 + old "begin skipping" + new "eginbay kippingsay" + + # 00preferences.rpy:277 + old "after choices" + new "afteray oiceschay" + + # 00preferences.rpy:284 + old "skip after choices" + new "kipsay afteray oiceschay" + + # 00preferences.rpy:286 + old "auto-forward time" + new "autoay-orwardfay imetay" + + # 00preferences.rpy:300 + old "auto-forward" + new "autoay-orwardfay" + + # 00preferences.rpy:307 + old "Auto forward" + new "Utoaay orwardfay" + + # 00preferences.rpy:310 + old "auto-forward after click" + new "autoay-orwardfay afteray ickclay" + + # 00preferences.rpy:319 + old "automatic move" + new "automaticay ovemay" + + # 00preferences.rpy:328 + old "wait for voice" + new "aitway orfay oicevay" + + # 00preferences.rpy:337 + old "voice sustain" + new "oicevay ustainsay" + + # 00preferences.rpy:346 + old "self voicing" + new "elfsay oicingvay" + + # 00preferences.rpy:355 + old "clipboard voicing" + new "ipboardclay oicingvay" + + # 00preferences.rpy:364 + old "debug voicing" + new "ebugday oicingvay" + + # 00preferences.rpy:373 + old "emphasize audio" + new "emphasizeay audioay" + + # 00preferences.rpy:382 + old "rollback side" + new "ollbackray idesay" + + # 00preferences.rpy:392 + old "gl powersave" + new "glay owersavepay" + + # 00preferences.rpy:398 + old "gl framerate" + new "glay ameratefray" + + # 00preferences.rpy:401 + old "gl tearing" + new "glay earingtay" + + # 00preferences.rpy:413 + old "music volume" + new "usicmay olumevay" + + # 00preferences.rpy:414 + old "sound volume" + new "oundsay olumevay" + + # 00preferences.rpy:415 + old "voice volume" + new "oicevay olumevay" + + # 00preferences.rpy:416 + old "mute music" + new "utemay usicmay" + + # 00preferences.rpy:417 + old "mute sound" + new "utemay oundsay" + + # 00preferences.rpy:418 + old "mute voice" + new "utemay oicevay" + + # 00preferences.rpy:419 + old "mute all" + new "utemay allay" + + # 00preferences.rpy:498 old "Clipboard voicing enabled. Press 'shift+C' to disable." new "Lipboardcay oicingvay enableday. Resspay 'iftshay+Cay' otay isableday." - # 00preferences.rpy:477 + # 00preferences.rpy:500 old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable." new "Elfsay-oicingvay ouldway aysay \"[renpy.display.tts.last]\". Resspay 'altay+iftshay+Vay' otay isableday." - # 00preferences.rpy:479 + # 00preferences.rpy:502 old "Self-voicing enabled. Press 'v' to disable." new "Elfsay-oicingvay enableday. Resspay 'vay' otay isableday." @@ -337,67 +561,67 @@ old "An error is being simulated." new "Naay erroray isay eingbay imulatedsay." - # 00updater.rpy:667 + # 00updater.rpy:672 old "Either this project does not support updating, or the update status file was deleted." new "Ithereay histay rojectpay oesday otnay upportsay updatingay, oray hetay updateay atusstay ilefay asway eletedday." - # 00updater.rpy:681 + # 00updater.rpy:686 old "This account does not have permission to perform an update." new "Histay accountay oesday otnay avehay ermissionpay otay erformpay anay updateay." - # 00updater.rpy:684 + # 00updater.rpy:689 old "This account does not have permission to write the update log." new "Histay accountay oesday otnay avehay ermissionpay otay riteway hetay updateay oglay." - # 00updater.rpy:711 + # 00updater.rpy:716 old "Could not verify update signature." new "Ouldcay otnay erifyvay updateay ignaturesay." - # 00updater.rpy:986 + # 00updater.rpy:991 old "The update file was not downloaded." new "Hetay updateay ilefay asway otnay ownloadedday." - # 00updater.rpy:1004 + # 00updater.rpy:1009 old "The update file does not have the correct digest - it may have been corrupted." new "Hetay updateay ilefay oesday otnay avehay hetay orrectcay igestday - itay aymay avehay eenbay orruptedcay." - # 00updater.rpy:1060 + # 00updater.rpy:1065 old "While unpacking {}, unknown type {}." new "Hileway unpackingay {}, unknownay ypetay {}." - # 00updater.rpy:1407 + # 00updater.rpy:1412 old "Updater" new "Pdateruay" - # 00updater.rpy:1418 + # 00updater.rpy:1423 old "This program is up to date." new "Histay rogrampay isay upay otay ateday." - # 00updater.rpy:1420 + # 00updater.rpy:1425 old "[u.version] is available. Do you want to install it?" new "[u.version] isay availableay. Oday ouyay antway otay installay itay?" - # 00updater.rpy:1422 + # 00updater.rpy:1427 old "Preparing to download the updates." new "Reparingpay otay ownloadday hetay updatesay." - # 00updater.rpy:1424 + # 00updater.rpy:1429 old "Downloading the updates." new "Ownloadingday hetay updatesay." - # 00updater.rpy:1426 + # 00updater.rpy:1431 old "Unpacking the updates." new "Npackinguay hetay updatesay." - # 00updater.rpy:1430 + # 00updater.rpy:1435 old "The updates have been installed. The program will restart." new "Hetay updatesay avehay eenbay installeday. Hetay rogrampay illway estartray." - # 00updater.rpy:1432 + # 00updater.rpy:1437 old "The updates have been installed." new "Hetay updatesay avehay eenbay installeday." - # 00updater.rpy:1434 + # 00updater.rpy:1439 old "The updates were cancelled." new "Hetay updatesay ereway ancelledcay." diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/piglatin/developer.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/piglatin/developer.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/piglatin/developer.rpy 2018-01-29 23:28:58.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/piglatin/developer.rpy 2018-03-22 05:42:58.000000000 +0000 @@ -69,23 +69,23 @@ old "Type to filter: " new "Ypetay otay ilterfay: " - # _developer/developer.rpym:572 + # _developer/developer.rpym:575 old "Textures: [tex_count] ([tex_size_mb:.1f] MB)" new "Exturestay: [tex_count] ([tex_size_mb:.1f] Bmay)" - # _developer/developer.rpym:576 + # _developer/developer.rpym:579 old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)" new "Mageiay achecay: [cache_pct:.1f]% ([cache_size_mb:.1f] Bmay)" - # _developer/developer.rpym:586 + # _developer/developer.rpym:589 old "✔ " new "✔ " - # _developer/developer.rpym:589 + # _developer/developer.rpym:592 old "✘ " new "✘ " - # _developer/developer.rpym:594 + # _developer/developer.rpym:597 old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}" new "\n{color=#cfc}✔ redictedpay imageay (oodgay){/color}\n{color=#fcc}✘ unpredicteday imageay (adbay){/color}\n{color=#fff}Ragday otay ovemay.{/color}" diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/piglatin/launcher.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/piglatin/launcher.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/piglatin/launcher.rpy 2018-01-29 23:28:58.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/piglatin/launcher.rpy 2018-03-22 05:42:58.000000000 +0000 @@ -365,51 +365,71 @@ old "This is probably because Ren'Py is running directly from a Macintosh drive image. To fix this, quit this launcher, copy the entire %s folder somewhere else on your computer, and run Ren'Py again." new "Histay isay robablypay ecausebay Enray'Ypay isay unningray irectlyday omfray aay Acintoshmay riveday imageay. Otay ixfay histay, uitqay histay auncherlay, opycay hetay entireay %say olderfay omewheresay elseay onay ouryay omputercay, anday unray Enray'Ypay againay." - # editor.rpy:150 - 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}Ecommendedray.{/b} Aay etabay editoray ithway anay easyay otay useay interfaceay anday eaturesfay hattay aiday inay evelopmentday, uchsay asay pellsay-eckingchay. Ditraeay urrentlycay ackslay hetay Meiay upportsay equiredray orfay Hinesecay, Apanesejay, anday Oreankay exttay inputay." - - # editor.rpy:151 - 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}Ecommendedray.{/b} Aay etabay editoray ithway anay easyay otay useay interfaceay anday eaturesfay hattay aiday inay evelopmentday, uchsay asay pellsay-eckingchay. Ditraeay urrentlycay ackslay hetay Meiay upportsay equiredray orfay Hinesecay, Apanesejay, anday Oreankay exttay inputay. Noay Inuxlay, Ditraeay equiresray xPythonway." + # editor.rpy:152 + old "(Recommended) A modern and approachable text editor." + new "(Ecommendedray) Aay odernmay anday approachableay exttay editoray." + + # editor.rpy:164 + old "Up to 150 MB download required." + new "Puay otay 501ay Bmay ownloadday equiredray." + + # editor.rpy:178 + old "A mature editor. Editra lacks the IME support required for Chinese, Japanese, and Korean text input." + new "Aay aturemay editoray. Ditraeay ackslay hetay Meiay upportsay equiredray orfay Hinesecay, Apanesejay, anday Oreankay exttay inputay." + + # editor.rpy:179 + old "A mature editor. Editra lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython." + new "Aay aturemay editoray. Ditraeay ackslay hetay Meiay upportsay equiredray orfay Hinesecay, Apanesejay, anday Oreankay exttay inputay. Noay Inuxlay, Ditraeay equiresray xPythonway." - # editor.rpy:167 + # editor.rpy:195 old "This may have occured because wxPython is not installed on this system." new "Histay aymay avehay occureday ecausebay xPythonway isay otnay installeday onay histay ystemsay." - # editor.rpy:169 + # editor.rpy:197 old "Up to 22 MB download required." new "Puay otay 22ay Bmay ownloadday equiredray." - # editor.rpy:182 + # editor.rpy:210 old "A mature editor that requires Java." new "Aay aturemay editoray hattay equiresray Avajay." - # editor.rpy:182 + # editor.rpy:210 old "1.8 MB download required." new "1ay.8ay Bmay ownloadday equiredray." - # editor.rpy:182 + # editor.rpy:210 old "This may have occured because Java is not installed on this system." new "Histay aymay avehay occureday ecausebay Avajay isay otnay installeday onay histay ystemsay." - # editor.rpy:191 + # editor.rpy:219 + old "System Editor" + new "Ystemsay Ditoreay" + + # editor.rpy:219 old "Invokes the editor your operating system has associated with .rpy files." new "Nvokesiay hetay editoray ouryay operatingay ystemsay ashay associateday ithway .pyray ilesfay." - # editor.rpy:207 + # editor.rpy:235 + old "None" + new "Onenay" + + # editor.rpy:235 old "Prevents Ren'Py from opening a text editor." new "Reventspay Enray'Ypay omfray openingay aay exttay editoray." - # editor.rpy:359 + # editor.rpy:338 + old "Edit [text]." + new "Diteay [text]." + + # editor.rpy:387 old "An exception occured while launching the text editor:\n[exception!q]" new "Naay exceptionay occureday hileway aunchinglay hetay exttay editoray:\n[exception!q]" - # editor.rpy:457 + # editor.rpy:519 old "Select Editor" new "Electsay Ditoreay" - # editor.rpy:472 + # editor.rpy:534 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 "Aay exttay editoray isay hetay rogrampay ouyay'llay useay otay editay Enray'Ypay criptsay ilesfay. Erehay, ouyay ancay electsay hetay editoray Enray'Ypay illway useay. Fiay otnay alreadyay resentpay, hetay editoray illway ebay automaticallyay ownloadedday anday installeday." @@ -477,63 +497,67 @@ old "Edit File" new "Diteay Ilefay" - # front_page.rpy:214 + # front_page.rpy:215 + old "Open project" + new "Penoay rojectpay" + + # front_page.rpy:217 old "All script files" new "Llaay criptsay ilesfay" - # front_page.rpy:218 + # front_page.rpy:221 old "Actions" new "Ctionsaay" - # front_page.rpy:227 + # front_page.rpy:230 old "Navigate Script" new "Avigatenay Criptsay" - # front_page.rpy:228 + # front_page.rpy:231 old "Check Script (Lint)" new "Heckcay Criptsay (Intlay)" - # front_page.rpy:231 + # front_page.rpy:234 old "Change/Update GUI" new "Hangecay/Pdateuay Uigay" - # front_page.rpy:233 + # front_page.rpy:236 old "Change Theme" new "Hangecay Hemetay" - # front_page.rpy:236 + # front_page.rpy:239 old "Delete Persistent" new "Eleteday Ersistentpay" - # front_page.rpy:245 + # front_page.rpy:248 old "Build Distributions" new "Uildbay Istributionsday" - # front_page.rpy:247 + # front_page.rpy:250 old "Android" new "Ndroidaay" - # front_page.rpy:248 + # front_page.rpy:251 old "iOS" new "iOSay" - # front_page.rpy:249 + # front_page.rpy:252 old "Generate Translations" new "Enerategay Ranslationstay" - # front_page.rpy:250 + # front_page.rpy:253 old "Extract Dialogue" new "Xtracteay Ialogueday" - # front_page.rpy:267 + # front_page.rpy:270 old "Checking script for potential problems..." new "Heckingcay criptsay orfay otentialpay roblemspay..." - # front_page.rpy:282 + # front_page.rpy:285 old "Deleting persistent data..." new "Eletingday ersistentpay ataday..." - # front_page.rpy:290 + # front_page.rpy:293 old "Recompiling all rpy files into rpyc files..." new "Ecompilingray allay pyray ilesfay intoay pycray ilesfay..." @@ -805,63 +829,63 @@ old "Navigate: [project.current.display_name!q]" new "Avigatenay: [project.current.display_name!q]" - # navigation.rpy:177 + # navigation.rpy:178 old "Order: " new "Rderoay: " - # navigation.rpy:178 + # navigation.rpy:179 old "alphabetical" new "alphabeticalay" - # navigation.rpy:180 + # navigation.rpy:181 old "by-file" new "ybay-ilefay" - # navigation.rpy:182 + # navigation.rpy:183 old "natural" new "aturalnay" - # navigation.rpy:194 + # navigation.rpy:195 old "Category:" new "Ategorycay:" - # navigation.rpy:196 + # navigation.rpy:198 old "files" new "ilesfay" - # navigation.rpy:197 + # navigation.rpy:199 old "labels" new "abelslay" - # navigation.rpy:198 + # navigation.rpy:200 old "defines" new "efinesday" - # navigation.rpy:199 + # navigation.rpy:201 old "transforms" new "ansformstray" - # navigation.rpy:200 + # navigation.rpy:202 old "screens" new "creenssay" - # navigation.rpy:201 + # navigation.rpy:203 old "callables" new "allablescay" - # navigation.rpy:202 + # navigation.rpy:204 old "TODOs" new "Odostay" - # navigation.rpy:241 + # navigation.rpy:243 old "+ Add script file" new "+ Ddaay criptsay ilefay" - # navigation.rpy:249 + # navigation.rpy:251 old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script." new "Onay Odotay ommentscay oundfay.\n\nOtay reatecay oneay, includeay \"# Odotay\" inay ouryay criptsay." - # navigation.rpy:256 + # navigation.rpy:258 old "The list of names is empty." new "Hetay istlay ofay amesnay isay emptyay." @@ -1013,139 +1037,139 @@ old "Have you backed up your projects recently?" new "Avehay ouyay ackedbay upay ouryay rojectspay ecentlyray?" - # project.rpy:276 + # project.rpy:280 old "Launching the project failed." new "Aunchinglay hetay rojectpay ailedfay." - # project.rpy:276 + # project.rpy:280 old "Please ensure that your project launches normally before running this command." new "Leasepay ensureay hattay ouryay rojectpay auncheslay ormallynay eforebay unningray histay ommandcay." - # project.rpy:292 + # project.rpy:296 old "Ren'Py is scanning the project..." new "Enray'Ypay isay canningsay hetay rojectpay..." - # project.rpy:721 + # project.rpy:725 old "Launching" new "Aunchinglay" - # project.rpy:755 + # project.rpy:759 old "PROJECTS DIRECTORY" new "Rojectspay Irectoryday" - # project.rpy:755 + # project.rpy:759 old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}" new "Leasepay oosechay hetay rojectspay irectoryday usingay hetay irectoryday ooserchay.\n{b}Hetay irectoryday ooserchay aymay avehay openeday ehindbay histay indowway.{/b}" - # project.rpy:755 + # project.rpy:759 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 "Histay auncherlay illway cansay orfay rojectspay inay histay irectoryday, illway reatecay ewnay rojectspay inay histay irectoryday, anday illway aceplay uiltbay rojectspay intoay histay irectoryday." - # project.rpy:760 + # project.rpy:764 old "Ren'Py has set the projects directory to:" new "Enray'Ypay ashay etsay hetay rojectspay irectoryday otay:" - # translations.rpy:92 + # translations.rpy:91 old "Translations: [project.current.display_name!q]" new "Ranslationstay: [project.current.display_name!q]" - # translations.rpy:133 + # translations.rpy:132 old "The language to work with. This should only contain lower-case ASCII characters and underscores." new "Hetay anguagelay otay orkway ithway. Histay ouldshay onlyay ontaincay owerlay-asecay Sciiaay aracterschay anday underscoresay." - # translations.rpy:159 + # translations.rpy:158 old "Generate empty strings for translations" new "Enerategay emptyay ringsstay orfay anslationstray" - # translations.rpy:177 + # translations.rpy:176 old "Generates or updates translation files. The files will be placed in game/tl/[persistent.translate_language!q]." new "Eneratesgay oray updatesay anslationtray ilesfay. Hetay ilesfay illway ebay acedplay inay amegay/ltay/[persistent.translate_language!q]." - # translations.rpy:197 + # translations.rpy:196 old "Extract String Translations" new "Xtracteay Tringsay Ranslationstay" - # translations.rpy:199 + # translations.rpy:198 old "Merge String Translations" new "Ergemay Tringsay Ranslationstay" - # translations.rpy:204 + # translations.rpy:203 old "Replace existing translations" new "Eplaceray existingay anslationstray" - # translations.rpy:205 + # translations.rpy:204 old "Reverse languages" new "Everseray anguageslay" - # translations.rpy:209 + # translations.rpy:208 old "Update Default Interface Translations" new "Pdateuay Efaultday Nterfaceiay Ranslationstay" - # translations.rpy:229 + # translations.rpy:228 old "The extract command allows you to extract string translations from an existing project into a temporary file.\n\nThe merge command merges extracted translations into another project." new "Hetay extractay ommandcay allowsay ouyay otay extractay ringstay anslationstray omfray anay existingay rojectpay intoay aay emporarytay ilefay.\n\nHetay ergemay ommandcay ergesmay extracteday anslationstray intoay anotheray rojectpay." - # translations.rpy:253 + # translations.rpy:252 old "Ren'Py is generating translations...." new "Enray'Ypay isay eneratinggay anslationstray...." - # translations.rpy:264 + # translations.rpy:263 old "Ren'Py has finished generating [language] translations." new "Enray'Ypay ashay inishedfay eneratinggay [language] anslationstray." - # translations.rpy:277 + # translations.rpy:276 old "Ren'Py is extracting string translations..." new "Enray'Ypay isay extractingay ringstay anslationstray..." - # translations.rpy:280 + # translations.rpy:279 old "Ren'Py has finished extracting [language] string translations." new "Enray'Ypay ashay inishedfay extractingay [language] ringstay anslationstray." - # translations.rpy:300 + # translations.rpy:299 old "Ren'Py is merging string translations..." new "Enray'Ypay isay ergingmay ringstay anslationstray..." - # translations.rpy:303 + # translations.rpy:302 old "Ren'Py has finished merging [language] string translations." new "Enray'Ypay ashay inishedfay ergingmay [language] ringstay anslationstray." - # translations.rpy:314 + # translations.rpy:313 old "Updating default interface translations..." new "Pdatinguay efaultday interfaceay anslationstray..." - # translations.rpy:343 + # translations.rpy:342 old "Extract Dialogue: [project.current.display_name!q]" new "Xtracteay Ialogueday: [project.current.display_name!q]" - # translations.rpy:359 + # translations.rpy:358 old "Format:" new "Ormatfay:" - # translations.rpy:367 + # translations.rpy:366 old "Tab-delimited Spreadsheet (dialogue.tab)" new "Abtay-elimitedday Preadsheetsay (ialogueday.abtay)" - # translations.rpy:368 + # translations.rpy:367 old "Dialogue Text Only (dialogue.txt)" new "Ialogueday Exttay Nlyoay (ialogueday.xttay)" - # translations.rpy:381 + # translations.rpy:380 old "Strip text tags from the dialogue." new "Tripsay exttay agstay omfray hetay ialogueday." - # translations.rpy:382 + # translations.rpy:381 old "Escape quotes and other special characters." new "Scapeeay uotesqay anday otheray pecialsay aracterschay." - # translations.rpy:383 + # translations.rpy:382 old "Extract all translatable strings, not just dialogue." new "Xtracteay allay anslatabletray ringsstay, otnay ustjay ialogueday." - # translations.rpy:411 + # translations.rpy:410 old "Ren'Py is extracting dialogue...." new "Enray'Ypay isay extractingay ialogueday...." - # translations.rpy:415 + # translations.rpy:414 old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[persistent.dialogue_format] in the base directory." new "Enray'Ypay ashay inishedfay extractingay ialogueday. Hetay extracteday ialogueday ancay ebay oundfay inay ialogueday.[persistent.dialogue_format] inay hetay asebay irectoryday." diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/piglatin/screens.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/piglatin/screens.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/piglatin/screens.rpy 2018-01-29 23:28:58.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/piglatin/screens.rpy 2018-03-22 05:42:58.000000000 +0000 @@ -205,471 +205,471 @@ old "## Reserve space for the navigation section." new "## Eserveray pacesay orfay hetay avigationnay ectionsay." - # screens.rpy:471 + # screens.rpy:473 old "Return" new "Eturnray" - # screens.rpy:534 + # screens.rpy:536 old "## About screen" new "## Boutaay creensay" - # screens.rpy:536 + # screens.rpy:538 old "## This screen gives credit and copyright information about the game and Ren'Py." new "## Histay creensay ivesgay reditcay anday opyrightcay informationay aboutay hetay amegay anday Enray'Ypay." - # screens.rpy:539 + # screens.rpy:541 old "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen." new "## Heretay'say othingnay pecialsay aboutay histay creensay, anday encehay itay alsoay ervessay asay anay exampleay ofay owhay otay akemay aay ustomcay creensay." - # screens.rpy:546 + # screens.rpy:548 old "## This use statement includes the game_menu screen inside this one. The vbox child is then included inside the viewport inside the game_menu screen." new "## Histay useay atementstay includesay hetay ame_menugay creensay insideay histay oneay. Hetay boxvay ildchay isay hentay includeday insideay hetay iewportvay insideay hetay ame_menugay creensay." - # screens.rpy:556 + # screens.rpy:558 old "Version [config.version!t]\n" new "Ersionvay [config.version!t]\n" - # screens.rpy:558 + # screens.rpy:560 old "## gui.about is usually set in options.rpy." new "## uigay.aboutay isay usuallyay etsay inay optionsay.pyray." - # screens.rpy:562 + # screens.rpy:564 old "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]" new "Ademay ithway {a=https://www.renpy.org/}Enray'Ypay{/a} [renpy.version_only].\n\n[renpy.license!t]" - # screens.rpy:565 + # screens.rpy:567 old "## This is redefined in options.rpy to add text to the about screen." new "## Histay isay edefinedray inay optionsay.pyray otay adday exttay otay hetay aboutay creensay." - # screens.rpy:577 + # screens.rpy:579 old "## Load and Save screens" new "## Oadlay anday Avesay creenssay" - # screens.rpy:579 + # screens.rpy:581 old "## These screens are responsible for letting the player save the game and load it again. Since they share nearly everything in common, both are implemented in terms of a third screen, file_slots." new "## Hesetay creenssay areay esponsibleray orfay ettinglay hetay ayerplay avesay hetay amegay anday oadlay itay againay. Incesay heytay areshay earlynay everythingay inay ommoncay, othbay areay implementeday inay ermstay ofay aay hirdtay creensay, ile_slotsfay." - # screens.rpy:583 + # screens.rpy:585 old "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load" new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#avesay ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#oadlay" - # screens.rpy:602 + # screens.rpy:604 old "Page {}" new "Agepay {}" - # screens.rpy:602 + # screens.rpy:604 old "Automatic saves" new "Utomaticaay avessay" - # screens.rpy:602 + # screens.rpy:604 old "Quick saves" new "Uickqay avessay" - # screens.rpy:608 + # screens.rpy:610 old "## This ensures the input will get the enter event before any of the buttons do." new "## Histay ensuresay hetay inputay illway etgay hetay enteray eventay eforebay anyay ofay hetay uttonsbay oday." - # screens.rpy:612 + # screens.rpy:614 old "## The page name, which can be edited by clicking on a button." new "## Hetay agepay amenay, hichway ancay ebay editeday ybay ickingclay onay aay uttonbay." - # screens.rpy:624 + # screens.rpy:626 old "## The grid of file slots." new "## Hetay idgray ofay ilefay otsslay." - # screens.rpy:644 + # screens.rpy:646 old "{#file_time}%A, %B %d %Y, %H:%M" new "{#file_time}%Aay, %Bay %day %Yay, %Hay:%May" - # screens.rpy:644 + # screens.rpy:646 old "empty slot" new "emptyay otslay" - # screens.rpy:652 + # screens.rpy:654 old "## Buttons to access other pages." new "## Uttonsbay otay accessay otheray agespay." - # screens.rpy:661 + # screens.rpy:663 old "<" new "<" - # screens.rpy:664 + # screens.rpy:666 old "{#auto_page}A" new "{#auto_page}Aay" - # screens.rpy:667 + # screens.rpy:669 old "{#quick_page}Q" new "{#quick_page}Qay" - # screens.rpy:669 + # screens.rpy:671 old "## range(1, 10) gives the numbers from 1 to 9." new "## angeray(1ay, 01ay) ivesgay hetay umbersnay omfray 1ay otay 9ay." - # screens.rpy:673 + # screens.rpy:675 old ">" new ">" - # screens.rpy:708 + # screens.rpy:710 old "## Preferences screen" new "## Referencespay creensay" - # screens.rpy:710 + # screens.rpy:712 old "## The preferences screen allows the player to configure the game to better suit themselves." new "## Hetay referencespay creensay allowsay hetay ayerplay otay onfigurecay hetay amegay otay etterbay uitsay hemselvestay." - # screens.rpy:713 + # screens.rpy:715 old "## https://www.renpy.org/doc/html/screen_special.html#preferences" new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#referencespay" - # screens.rpy:730 + # screens.rpy:732 old "Display" new "Isplayday" - # screens.rpy:731 + # screens.rpy:733 old "Window" new "Indowway" - # screens.rpy:732 + # screens.rpy:734 old "Fullscreen" new "Ullscreenfay" - # screens.rpy:736 + # screens.rpy:738 old "Rollback Side" new "Ollbackray Idesay" - # screens.rpy:737 + # screens.rpy:739 old "Disable" new "Isableday" - # screens.rpy:738 + # screens.rpy:740 old "Left" new "Eftlay" - # screens.rpy:739 + # screens.rpy:741 old "Right" new "Ightray" - # screens.rpy:744 + # screens.rpy:746 old "Unseen Text" new "Nseenuay Exttay" - # screens.rpy:745 + # screens.rpy:747 old "After Choices" new "Fteraay Hoicescay" - # screens.rpy:746 + # screens.rpy:748 old "Transitions" new "Ransitionstay" - # screens.rpy:748 + # screens.rpy:750 old "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences." new "## Dditionalaay boxesvay ofay ypetay \"adio_prefray\" oray \"eck_prefchay\" ancay ebay addeday erehay, otay adday additionalay reatorcay-efinedday referencespay." - # screens.rpy:759 + # screens.rpy:761 old "Text Speed" new "Exttay Peedsay" - # screens.rpy:763 + # screens.rpy:765 old "Auto-Forward Time" new "Utoaay-Orwardfay Imetay" - # screens.rpy:770 + # screens.rpy:772 old "Music Volume" new "Usicmay Olumevay" - # screens.rpy:777 + # screens.rpy:779 old "Sound Volume" new "Oundsay Olumevay" - # screens.rpy:783 + # screens.rpy:785 old "Test" new "Esttay" - # screens.rpy:787 + # screens.rpy:789 old "Voice Volume" new "Oicevay Olumevay" - # screens.rpy:798 + # screens.rpy:800 old "Mute All" new "Utemay Llaay" - # screens.rpy:874 + # screens.rpy:876 old "## History screen" new "## Istoryhay creensay" - # screens.rpy:876 + # screens.rpy:878 old "## This is a screen that displays the dialogue history to the player. While there isn't anything special about this screen, it does have to access the dialogue history stored in _history_list." new "## Histay isay aay creensay hattay isplaysday hetay ialogueday istoryhay otay hetay ayerplay. Hileway heretay isnay'tay anythingay pecialsay aboutay histay creensay, itay oesday avehay otay accessay hetay ialogueday istoryhay oredstay inay history_list_ay." - # screens.rpy:880 + # screens.rpy:882 old "## https://www.renpy.org/doc/html/history.html" new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/istoryhay.tmlhay" - # screens.rpy:886 + # screens.rpy:888 old "## Avoid predicting this screen, as it can be very large." new "## Voidaay redictingpay histay creensay, asay itay ancay ebay eryvay argelay." - # screens.rpy:897 + # screens.rpy:899 old "## This lays things out properly if history_height is None." new "## Histay ayslay hingstay outay roperlypay ifay istory_heighthay isay Onenay." - # screens.rpy:906 + # screens.rpy:908 old "## Take the color of the who text from the Character, if set." new "## Aketay hetay olorcay ofay hetay howay exttay omfray hetay Haractercay, ifay etsay." - # screens.rpy:914 + # screens.rpy:916 old "The dialogue history is empty." new "Hetay ialogueday istoryhay isay emptyay." - # screens.rpy:917 + # screens.rpy:919 old "## This determines what tags are allowed to be displayed on the history screen." new "## Histay eterminesday hatway agstay areay alloweday otay ebay isplayedday onay hetay istoryhay creensay." - # screens.rpy:964 + # screens.rpy:966 old "## Help screen" new "## Elphay creensay" - # screens.rpy:966 + # screens.rpy:968 old "## A screen that gives information about key and mouse bindings. It uses other screens (keyboard_help, mouse_help, and gamepad_help) to display the actual help." new "## Aay creensay hattay ivesgay informationay aboutay eykay anday ousemay indingsbay. Tiay usesay otheray creenssay (eyboard_helpkay, ouse_helpmay, anday amepad_helpgay) otay isplayday hetay actualay elphay." - # screens.rpy:985 + # screens.rpy:987 old "Keyboard" new "Eyboardkay" - # screens.rpy:986 + # screens.rpy:988 old "Mouse" new "Ousemay" - # screens.rpy:989 + # screens.rpy:991 old "Gamepad" new "Amepadgay" - # screens.rpy:1002 + # screens.rpy:1004 old "Enter" new "Ntereay" - # screens.rpy:1003 + # screens.rpy:1005 old "Advances dialogue and activates the interface." new "Dvancesaay ialogueday anday activatesay hetay interfaceay." - # screens.rpy:1006 + # screens.rpy:1008 old "Space" new "Pacesay" - # screens.rpy:1007 + # screens.rpy:1009 old "Advances dialogue without selecting choices." new "Dvancesaay ialogueday ithoutway electingsay oiceschay." - # screens.rpy:1010 + # screens.rpy:1012 old "Arrow Keys" new "Rrowaay Eyskay" - # screens.rpy:1011 + # screens.rpy:1013 old "Navigate the interface." new "Avigatenay hetay interfaceay." - # screens.rpy:1014 + # screens.rpy:1016 old "Escape" new "Scapeeay" - # screens.rpy:1015 + # screens.rpy:1017 old "Accesses the game menu." new "Ccessesaay hetay amegay enumay." - # screens.rpy:1018 + # screens.rpy:1020 old "Ctrl" new "Trlcay" - # screens.rpy:1019 + # screens.rpy:1021 old "Skips dialogue while held down." new "Kipssay ialogueday hileway eldhay ownday." - # screens.rpy:1022 + # screens.rpy:1024 old "Tab" new "Abtay" - # screens.rpy:1023 + # screens.rpy:1025 old "Toggles dialogue skipping." new "Ogglestay ialogueday kippingsay." - # screens.rpy:1026 + # screens.rpy:1028 old "Page Up" new "Agepay Puay" - # screens.rpy:1027 + # screens.rpy:1029 old "Rolls back to earlier dialogue." new "Ollsray ackbay otay earlieray ialogueday." - # screens.rpy:1030 + # screens.rpy:1032 old "Page Down" new "Agepay Ownday" - # screens.rpy:1031 + # screens.rpy:1033 old "Rolls forward to later dialogue." new "Ollsray orwardfay otay aterlay ialogueday." - # screens.rpy:1035 + # screens.rpy:1037 old "Hides the user interface." new "Ideshay hetay useray interfaceay." - # screens.rpy:1039 + # screens.rpy:1041 old "Takes a screenshot." new "Akestay aay creenshotsay." - # screens.rpy:1043 + # screens.rpy:1045 old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}." new "Ogglestay assistiveay {a=https://www.renpy.org/l/voicing}elfsay-oicingvay{/a}." - # screens.rpy:1049 + # screens.rpy:1051 old "Left Click" new "Eftlay Lickcay" - # screens.rpy:1053 + # screens.rpy:1055 old "Middle Click" new "Iddlemay Lickcay" - # screens.rpy:1057 + # screens.rpy:1059 old "Right Click" new "Ightray Lickcay" - # screens.rpy:1061 + # screens.rpy:1063 old "Mouse Wheel Up\nClick Rollback Side" new "Ousemay Heelway Puay\nLickcay Ollbackray Idesay" - # screens.rpy:1065 + # screens.rpy:1067 old "Mouse Wheel Down" new "Ousemay Heelway Ownday" - # screens.rpy:1072 + # screens.rpy:1074 old "Right Trigger\nA/Bottom Button" new "Ightray Riggertay\nAay/Ottombay Uttonbay" - # screens.rpy:1076 + # screens.rpy:1078 old "Left Trigger\nLeft Shoulder" new "Eftlay Riggertay\nEftlay Houldersay" - # screens.rpy:1080 + # screens.rpy:1082 old "Right Shoulder" new "Ightray Houldersay" - # screens.rpy:1085 + # screens.rpy:1087 old "D-Pad, Sticks" new "Day-Adpay, Tickssay" - # screens.rpy:1089 + # screens.rpy:1091 old "Start, Guide" new "Tartsay, Uidegay" - # screens.rpy:1093 + # screens.rpy:1095 old "Y/Top Button" new "Yay/Optay Uttonbay" - # screens.rpy:1096 + # screens.rpy:1098 old "Calibrate" new "Alibratecay" - # screens.rpy:1124 + # screens.rpy:1126 old "## Additional screens" new "## Dditionalaay creenssay" - # screens.rpy:1128 + # screens.rpy:1130 old "## Confirm screen" new "## Onfirmcay creensay" - # screens.rpy:1130 + # screens.rpy:1132 old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question." new "## Hetay onfirmcay creensay isay alledcay henway Enray'Ypay antsway otay askay hetay ayerplay aay esyay oray onay uestionqay." - # screens.rpy:1133 + # screens.rpy:1135 old "## https://www.renpy.org/doc/html/screen_special.html#confirm" new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#onfirmcay" - # screens.rpy:1137 + # screens.rpy:1139 old "## Ensure other screens do not get input while this screen is displayed." new "## Nsureeay otheray creenssay oday otnay etgay inputay hileway histay creensay isay isplayedday." - # screens.rpy:1161 + # screens.rpy:1163 old "Yes" new "Esyay" - # screens.rpy:1162 + # screens.rpy:1164 old "No" new "Onay" - # screens.rpy:1164 + # screens.rpy:1166 old "## Right-click and escape answer \"no\"." new "## Ightray-ickclay anday escapeay answeray \"onay\"." - # screens.rpy:1191 + # screens.rpy:1193 old "## Skip indicator screen" new "## Kipsay indicatoray creensay" - # screens.rpy:1193 + # screens.rpy:1195 old "## The skip_indicator screen is displayed to indicate that skipping is in progress." new "## Hetay kip_indicatorsay creensay isay isplayedday otay indicateay hattay kippingsay isay inay rogresspay." - # screens.rpy:1196 + # screens.rpy:1198 old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator" new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#kipsay-indicatoray" - # screens.rpy:1208 + # screens.rpy:1210 old "Skipping" new "Kippingsay" - # screens.rpy:1215 + # screens.rpy:1217 old "## This transform is used to blink the arrows one after another." new "## Histay ansformtray isay useday otay inkblay hetay arrowsay oneay afteray anotheray." - # screens.rpy:1242 + # screens.rpy:1244 old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it." new "## Eway avehay otay useay aay ontfay hattay ashay hetay Lackbay Ightray-Ointingpay Mallsay Riangletay yphglay inay itay." - # screens.rpy:1247 + # screens.rpy:1249 old "## Notify screen" new "## Otifynay creensay" - # screens.rpy:1249 + # screens.rpy:1251 old "## The notify screen is used to show the player a message. (For example, when the game is quicksaved or a screenshot has been taken.)" new "## Hetay otifynay creensay isay useday otay owshay hetay ayerplay aay essagemay. (Orfay exampleay, henway hetay amegay isay uicksavedqay oray aay creenshotsay ashay eenbay akentay.)" - # screens.rpy:1252 + # screens.rpy:1254 old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen" new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#otifynay-creensay" - # screens.rpy:1286 + # screens.rpy:1288 old "## NVL screen" new "## Vlnay creensay" - # screens.rpy:1288 + # screens.rpy:1290 old "## This screen is used for NVL-mode dialogue and menus." new "## Histay creensay isay useday orfay Vlnay-odemay ialogueday anday enusmay." - # screens.rpy:1290 + # screens.rpy:1292 old "## https://www.renpy.org/doc/html/screen_special.html#nvl" new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#vlnay" - # screens.rpy:1301 + # screens.rpy:1303 old "## Displays dialogue in either a vpgrid or the vbox." new "## Isplaysday ialogueday inay eitheray aay pgridvay oray hetay boxvay." - # screens.rpy:1314 + # screens.rpy:1316 old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True, as it is above." new "## Isplaysday hetay enumay, ifay ivengay. Hetay enumay aymay ebay isplayedday incorrectlyay ifay onfigcay.arrator_menunay isay etsay otay Ruetay, asay itay isay aboveay." - # screens.rpy:1344 + # screens.rpy:1346 old "## This controls the maximum number of NVL-mode entries that can be displayed at once." new "## Histay ontrolscay hetay aximummay umbernay ofay Vlnay-odemay entriesay hattay ancay ebay isplayedday atay onceay." - # screens.rpy:1406 + # screens.rpy:1408 old "## Mobile Variants" new "## Obilemay Ariantsvay" - # screens.rpy:1413 + # screens.rpy:1415 old "## Since a mouse may not be present, we replace the quick menu with a version that uses fewer and bigger buttons that are easier to touch." new "## Incesay aay ousemay aymay otnay ebay resentpay, eway eplaceray hetay uickqay enumay ithway aay ersionvay hattay usesay ewerfay anday iggerbay uttonsbay hattay areay easieray otay ouchtay." - # screens.rpy:1429 + # screens.rpy:1431 old "Menu" new "Enumay" diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/russian/common.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/russian/common.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/russian/common.rpy 2018-01-10 01:48:10.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/russian/common.rpy 2018-03-25 22:06:34.000000000 +0000 @@ -153,14 +153,58 @@ old "{#month_short}Dec" new "{#month_short}Дек" - # 00action_file.rpy:235 + # 00action_file.rpy:237 old "%b %d, %H:%M" new "%d %b, %H:%M" - # 00action_file.rpy:825 + # 00action_file.rpy:344 + old "Save slot %s: [text]" + new "Слот сохранения %s: [text]" + + # 00action_file.rpy:417 + old "Load slot %s: [text]" + new "Слот загрузки %s: [text]" + + # 00action_file.rpy:459 + old "Delete slot [text]" + new "Удалить слот [text]" + + # 00action_file.rpy:539 + old "File page auto" + new "Автосохранения" + + # 00action_file.rpy:541 + old "File page quick" + new "Быстрые сохранения" + + # 00action_file.rpy:543 + old "File page [text]" + new "Страница сохранений [text]" + + # 00action_file.rpy:733 + old "Next file page." + new "Следующая страница сохранений" + + # 00action_file.rpy:797 + old "Previous file page." + new "Предыдущая страница сохранений" + + # 00action_file.rpy:858 old "Quick save complete." new "Быстрое сохранение завершено." + # 00action_file.rpy:876 + old "Quick save." + new "Быстрое сохранение" + + # 00action_file.rpy:895 + old "Quick load." + new "Быстрая загрузка" + + # 00action_other.rpy:344 + old "Language [text]" + new "Язык [text]" + # 00director.rpy:703 old "The interactive director is not enabled here." new "Интерактивный директор недоступен." @@ -285,11 +329,11 @@ old "Are you sure you want to skip unseen dialogue to the next choice?" new "Вы уверены, что хотите пропустить непрочитанные диалоги до следующего выбора?" - # 00keymap.rpy:255 + # 00keymap.rpy:258 old "Failed to save screenshot as %s." new "Провалена попытка сохранить скриншот как %s." - # 00keymap.rpy:267 + # 00keymap.rpy:270 old "Saved screenshot as %s." new "Скриншот сохранён как %s." @@ -299,29 +343,209 @@ # 00library.rpy:147 old "Clipboard voicing enabled. " - new "Озвучка буфера обмена включена. " + new "Озвучка буфера обмена включена." # 00library.rpy:148 old "Self-voicing enabled. " - new "Синтезатор речи включён. " + new "Синтезатор речи включён." + + # 00library.rpy:150 + old "bar" + new ". Полоса настройки" + + # 00library.rpy:151 + old "selected" + new ". На данный момент это выбрано" + + # 00library.rpy:152 + old "viewport" + new "порт просмотра" + + # 00library.rpy:153 + old "horizontal scroll" + new ". горизонтальная полоса прокрутки" - # 00library.rpy:183 + # 00library.rpy:154 + old "vertical scroll" + new ". вертикальная полоса прокрутки" + + # 00library.rpy:155 + old "activate" + new "элемент активирован" + + # 00library.rpy:156 + old "deactivate" + new "элемент деактивирован" + + # 00library.rpy:157 + old "increase" + new "больше" ### но полоса прокрутки тоже здесь! + + # 00library.rpy:158 + old "decrease" + new "меньше" ### + + # 00library.rpy:193 old "Skip Mode" new "Режим Пропуска" - # 00library.rpy:266 + # 00library.rpy:279 old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}." new "Эта программа содержит свободное и открытое программное обеспечение под несколькими лицензиями, включая лицензию MIT и GNU Lesser General Public. Полный список лицензий, включая ссылки на полный исходный код, можно найти {a=https://www.renpy.org/l/license}здесь{/a}." - # 00preferences.rpy:472 + # 00preferences.rpy:207 + old "display" + new "режим экрана" + + # 00preferences.rpy:219 + old "transitions" + new "переходы" + + # 00preferences.rpy:228 + old "skip transitions" + new "пропускать переходы" + + # 00preferences.rpy:230 + old "video sprites" + new "видео-спрайты" + + # 00preferences.rpy:239 + old "show empty window" + new "показывать пустое окно диалога" + + # 00preferences.rpy:248 + old "text speed" + new "скорость текста" + + # 00preferences.rpy:256 + old "joystick" + new "джойстик" + + # 00preferences.rpy:256 + old "joystick..." + new "джойстик..." + + # 00preferences.rpy:263 + old "skip" + new "пропускать" + + # 00preferences.rpy:266 + old "skip unseen [text]" + new "пропускать весь [text]" ### + + # 00preferences.rpy:271 + old "skip unseen text" + new "пропускать весь текст" + + # 00preferences.rpy:273 + old "begin skipping" + new "начать пропуск" + + # 00preferences.rpy:277 + old "after choices" + new "после выборов" + + # 00preferences.rpy:284 + old "skip after choices" + new "пропускать после выборов" + + # 00preferences.rpy:286 + old "auto-forward time" + new "скорость авточтения" + + # 00preferences.rpy:300 + old "auto-forward" + new "авточтение" ### + + # 00preferences.rpy:307 + old "Auto forward" + new "Авточтение" ### + + # 00preferences.rpy:310 + old "auto-forward after click" + new "продолжать авточтение после клика" + + # 00preferences.rpy:319 + old "automatic move" + new "автоматически передвигать мышь к кнопке" ### + + # 00preferences.rpy:328 + old "wait for voice" + new "ждать голос" + + # 00preferences.rpy:337 + old "voice sustain" + new "не останавливать голос" + + # 00preferences.rpy:346 + old "self voicing" + new "озвучка через синтезатор речи" + + # 00preferences.rpy:355 + old "clipboard voicing" + new "синтез речи из буфера обмена" + + # 00preferences.rpy:364 + old "debug voicing" + new "режим дебага синтеза речи" + + # 00preferences.rpy:373 + old "emphasize audio" + new "усилить громкость заранее заданных звуковых каналов за счёт приглушения остальных каналов" + + # 00preferences.rpy:382 + old "rollback side" + new "сторона отката" + + # 00preferences.rpy:392 + old "gl powersave" + new "настройка графики. Экономия энергии" + + # 00preferences.rpy:398 + old "gl framerate" + new "настройка графики. Частота кадров" + + # 00preferences.rpy:401 + old "gl tearing" + new "настройка графики. Разрывание кадров" + + # 00preferences.rpy:413 + old "music volume" + new "громкость музыки" + + # 00preferences.rpy:414 + old "sound volume" + new "громкость звуков" + + # 00preferences.rpy:415 + old "voice volume" + new "громкость голоса" + + # 00preferences.rpy:416 + old "mute music" + new "без музыки" + + # 00preferences.rpy:417 + old "mute sound" + new "без звуков" + + # 00preferences.rpy:418 + old "mute voice" + new "без голоса" + + # 00preferences.rpy:419 + old "mute all" + new "режим без звука" + + # 00preferences.rpy:498 old "Clipboard voicing enabled. Press 'shift+C' to disable." new "Озвучка буфера обмена включена. Нажмите 'shift+C', чтобы отключить её." - # 00preferences.rpy:474 + # 00preferences.rpy:500 old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable." new "Синтезатор речи должен сказать \"[renpy.display.tts.last]\". Нажмите 'alt+shift+V', чтобы отключить его." - # 00preferences.rpy:476 + # 00preferences.rpy:502 old "Self-voicing enabled. Press 'v' to disable." new "Синтезатор речи включён. Нажмите 'v', чтобы отключить его." @@ -337,67 +561,67 @@ old "An error is being simulated." new "Симулируется ошибка." - # 00updater.rpy:667 + # 00updater.rpy:672 old "Either this project does not support updating, or the update status file was deleted." new "Или этот проект не поддерживает обновление, или файл статуса обновления был удалён." - # 00updater.rpy:681 + # 00updater.rpy:686 old "This account does not have permission to perform an update." new "У этого аккаунта нет прав проводить обновление." - # 00updater.rpy:684 + # 00updater.rpy:689 old "This account does not have permission to write the update log." new "У этого аккаунта нет прав писать лог обновления." - # 00updater.rpy:711 + # 00updater.rpy:716 old "Could not verify update signature." new "Не могу верифицировать подпись обновления." - # 00updater.rpy:986 + # 00updater.rpy:991 old "The update file was not downloaded." new "Файл обновления не был загружен." - # 00updater.rpy:1004 + # 00updater.rpy:1009 old "The update file does not have the correct digest - it may have been corrupted." new "Файл обновления не содержит корректного дайджеста — он может быть повреждён." - # 00updater.rpy:1060 + # 00updater.rpy:1065 old "While unpacking {}, unknown type {}." new "При распаковке {} обнаружен неизвестный тип {}." - # 00updater.rpy:1407 + # 00updater.rpy:1412 old "Updater" new "Обновление" - # 00updater.rpy:1418 + # 00updater.rpy:1423 old "This program is up to date." new "Эта программа обновлена." - # 00updater.rpy:1420 + # 00updater.rpy:1425 old "[u.version] is available. Do you want to install it?" new "[u.version] доступна. Вы хотите её установить?" - # 00updater.rpy:1422 + # 00updater.rpy:1427 old "Preparing to download the updates." new "Подготовка к загрузке обновлений." - # 00updater.rpy:1424 + # 00updater.rpy:1429 old "Downloading the updates." new "Загрузка обновлений." - # 00updater.rpy:1426 + # 00updater.rpy:1431 old "Unpacking the updates." new "Распаковка обновлений." - # 00updater.rpy:1430 + # 00updater.rpy:1435 old "The updates have been installed. The program will restart." new "Обновления установлены. Программа будет перезапущена." - # 00updater.rpy:1432 + # 00updater.rpy:1437 old "The updates have been installed." new "Обновления были установлены." - # 00updater.rpy:1434 + # 00updater.rpy:1439 old "The updates were cancelled." new "Обновления были отменены." diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/russian/developer.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/russian/developer.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/russian/developer.rpy 2018-01-30 00:59:51.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/russian/developer.rpy 2018-03-25 22:06:34.000000000 +0000 @@ -69,23 +69,23 @@ old "Type to filter: " new "Текущий фильтр: " - # _developer/developer.rpym:572 + # _developer/developer.rpym:575 old "Textures: [tex_count] ([tex_size_mb:.1f] MB)" new "Текстур: [tex_count] ([tex_size_mb:.1f] МБ)" - # _developer/developer.rpym:576 + # _developer/developer.rpym:579 old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)" new "Кеш изображений: [cache_pct:.1f]% ([cache_size_mb:.1f] МБ)" - # _developer/developer.rpym:586 + # _developer/developer.rpym:589 old "✔ " new "✔ " - # _developer/developer.rpym:589 + # _developer/developer.rpym:592 old "✘ " new "✘ " - # _developer/developer.rpym:594 + # _developer/developer.rpym:597 old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}" new "\n{color=#cfc}✔ предсказанное изображение (хорошо){/color}\n{color=#fcc}✘ внезапное изображение (плохо){/color}\n{color=#fff}Нажмите, чтобы передвинуть.{/color}" diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/russian/error.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/russian/error.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/russian/error.rpy 2018-01-10 01:48:10.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/russian/error.rpy 2018-03-25 22:06:34.000000000 +0000 @@ -33,87 +33,87 @@ old "Powersave" new "Экономия энергии" - # 00gltest.rpy:149 + # 00gltest.rpy:145 old "Framerate" new "Частота кадров" - # 00gltest.rpy:153 + # 00gltest.rpy:149 old "Screen" new "Экранная" - # 00gltest.rpy:157 + # 00gltest.rpy:153 old "60" new "60" - # 00gltest.rpy:161 + # 00gltest.rpy:157 old "30" new "30" - # 00gltest.rpy:167 + # 00gltest.rpy:163 old "Tearing" new "Разрывание кадров" - # 00gltest.rpy:183 + # 00gltest.rpy:179 old "Changes will take effect the next time this program is run." new "Изменения вступят в силу при следующем запуске программы." - # 00gltest.rpy:217 + # 00gltest.rpy:213 old "Performance Warning" new "Предупреждение Производительности" - # 00gltest.rpy:222 + # 00gltest.rpy:218 old "This computer is using software rendering." new "Этот компьютер использует программный рендеринг." - # 00gltest.rpy:224 + # 00gltest.rpy:220 old "This computer is not using shaders." new "Этот компьютер не использует шейдеры." - # 00gltest.rpy:226 + # 00gltest.rpy:222 old "This computer is displaying graphics slowly." new "Этот компьютер медленно отображает графику." - # 00gltest.rpy:228 + # 00gltest.rpy:224 old "This computer has a problem displaying graphics: [problem]." new "У этого компьютера проблема с отображением графики: [problem]" - # 00gltest.rpy:233 + # 00gltest.rpy:229 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 может решить эту проблему." - # 00gltest.rpy:235 + # 00gltest.rpy:231 old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display." new "Графические драйвера устарели или работают неверно. Это может привести к медленному или неверному отображению графики." - # 00gltest.rpy:240 + # 00gltest.rpy:236 old "Update DirectX" new "Обновить DirectX" - # 00gltest.rpy:246 + # 00gltest.rpy:242 old "Continue, Show this warning again" new "Продолжить, Показать это предупреждение снова" - # 00gltest.rpy:250 + # 00gltest.rpy:246 old "Continue, Don't show warning again" new "Продолжить, Не показывать это предупреждение снова." - # 00gltest.rpy:268 + # 00gltest.rpy:264 old "Updating DirectX." new "Обновляю DirectX." - # 00gltest.rpy:272 + # 00gltest.rpy:268 old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX." new "Установщик DirectX был запущен. Возможно, что он запустился в свёрнутом состоянии. Пожалуйста, следуйте инструкциям для установки DirectX." - # 00gltest.rpy:276 + # 00gltest.rpy:272 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. Если вы этого не хотите, снимите соответствующую галочку." - # 00gltest.rpy:280 + # 00gltest.rpy:276 old "When setup finishes, please click below to restart this program." new "По завершению установки, щёлкните, чтобы перезапустить программу." - # 00gltest.rpy:282 + # 00gltest.rpy:278 old "Restart" new "Перезапустить" @@ -141,75 +141,75 @@ old "Back (B)" new "Back (B)" - # _errorhandling.rpym:523 + # _errorhandling.rpym:528 old "Open" new "Журнал" - # _errorhandling.rpym:525 + # _errorhandling.rpym:530 old "Opens the traceback.txt file in a text editor." new "Открывает файл traceback.txt в текстовом редакторе." - # _errorhandling.rpym:527 + # _errorhandling.rpym:532 old "Copy" new "Копировать" - # _errorhandling.rpym:529 + # _errorhandling.rpym:534 old "Copies the traceback.txt file to the clipboard." new "Копирует файл traceback.txt в буфер обмена." - # _errorhandling.rpym:556 + # _errorhandling.rpym:561 old "An exception has occurred." new "Возникло исключение." - # _errorhandling.rpym:576 + # _errorhandling.rpym:581 old "Rollback" new "Назад" - # _errorhandling.rpym:578 + # _errorhandling.rpym:583 old "Attempts a roll back to a prior time, allowing you to save or choose a different choice." new "Пытается вернуться назад, позволяя вам сохраниться или принять другой выбор." - # _errorhandling.rpym:581 + # _errorhandling.rpym:586 old "Ignore" new "Игнорировать" - # _errorhandling.rpym:585 + # _errorhandling.rpym:590 old "Ignores the exception, allowing you to continue." new "Игнорирует это исключение, позволяя вам продолжить." - # _errorhandling.rpym:587 + # _errorhandling.rpym:592 old "Ignores the exception, allowing you to continue. This often leads to additional errors." new "Игнорирует это исключение, позволяя вам продолжить. Зачастую это ведёт к дополнительным ошибкам." - # _errorhandling.rpym:591 + # _errorhandling.rpym:596 old "Reload" new "Перезагрузить" - # _errorhandling.rpym:593 + # _errorhandling.rpym:598 old "Reloads the game from disk, saving and restoring game state if possible." new "Перезагружает игру с диска, сохраняя и восстанавливая её состояние, если это возможно." - # _errorhandling.rpym:596 + # _errorhandling.rpym:601 old "Console" new "Консоль" - # _errorhandling.rpym:598 + # _errorhandling.rpym:603 old "Opens a console to allow debugging the problem." new "Открывает консоль, позволяющую отладить проблему." - # _errorhandling.rpym:608 + # _errorhandling.rpym:613 old "Quits the game." new "Выходит из игры." - # _errorhandling.rpym:632 + # _errorhandling.rpym:637 old "Parsing the script failed." new "Обработка сценария завершилась неудачно." - # _errorhandling.rpym:658 + # _errorhandling.rpym:663 old "Opens the errors.txt file in a text editor." new "Открывает файл errors.txt в текстовом редакторе." - # _errorhandling.rpym:662 + # _errorhandling.rpym:667 old "Copies the errors.txt file to the clipboard." new "Копирует файл errors.txt в буфер обмена." diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/russian/launcher.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/russian/launcher.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/russian/launcher.rpy 2018-01-31 03:26:45.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/russian/launcher.rpy 2018-03-25 22:06:34.000000000 +0000 @@ -365,59 +365,71 @@ old "This is probably because Ren'Py is running directly from a Macintosh drive image. To fix this, quit this launcher, copy the entire %s folder somewhere else on your computer, and run Ren'Py again." new "Вероятно, это из-за того, что Ren'Py запущена напрямую из образа диска Mac. Чтобы исправить это, выйдите из лаунчера и скопируйте всю папку %s куда-нибудь ещё на компьютер и снова запустите Ren'Py." - # editor.rpy:150 - 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} Бета-редактор с простым интерфейсом и возможностями, помогающими в разработке, такими, как проверка орфографии. Editra на данный момент не поддерживает IME, необходимые для ввода Китайского, Японского и Корейского текстов." - - # editor.rpy:151 - 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} Бета-редактор с простым интерфейсом и возможностями, помогающими в разработке, такими, как проверка орфографии. Editra на данный момент не поддерживает IME, необходимые для ввода Китайского, Японского и Корейского текстов. На Linux, Editra требует wxPython." + # editor.rpy:152 + old "(Recommended) A modern and approachable text editor." + new "(Рекомендуется) Современный, доступный текстовый редактор." + + # editor.rpy:164 + old "Up to 150 MB download required." + new "Требуется скачать 150 МБ." + + # editor.rpy:178 + old "A mature editor. Editra lacks the IME support required for Chinese, Japanese, and Korean text input." + new "Старый, проверенный бета-редактор. Editra на данный момент не поддерживает IME, необходимые для ввода Китайского, Японского и Корейского текстов." + + # editor.rpy:179 + old "A mature editor. Editra lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython." + new "Старый, проверенный бета-редактор. Editra на данный момент не поддерживает IME, необходимые для ввода Китайского, Японского и Корейского текстов. На Linux, Editra требует wxPython." - # editor.rpy:167 + # editor.rpy:195 old "This may have occured because wxPython is not installed on this system." new "Это могло случиться из-за того, что wxPython не установлен на этой системе." - # editor.rpy:169 + # editor.rpy:197 old "Up to 22 MB download required." new "Требуется скачать 22 МБ." - # editor.rpy:182 + # editor.rpy:210 old "A mature editor that requires Java." new "Проверенный временем редактор. Требует Java." - # editor.rpy:182 + # editor.rpy:210 old "1.8 MB download required." new "Требуется скачать 1.8 МБ." - # editor.rpy:182 + # editor.rpy:210 old "This may have occured because Java is not installed on this system." new "Это могло случиться из-за того, что Java не установлена в данной системе." - # editor.rpy:191 + # editor.rpy:219 old "System Editor" new "Системный" - # editor.rpy:191 + # editor.rpy:219 old "Invokes the editor your operating system has associated with .rpy files." new "Включает текстовый редактор, ассоциированный в вашей системе с файлами .rpy." - # editor.rpy:207 + # editor.rpy:235 old "None" new "Нет" - # editor.rpy:207 + # editor.rpy:235 old "Prevents Ren'Py from opening a text editor." new "Не позволяет Ren'Py запускать текстовый редактор." - # editor.rpy:359 + # editor.rpy:338 + old "Edit [text]." + new "Редактировать [text]" + + # editor.rpy:387 old "An exception occured while launching the text editor:\n[exception!q]" new "Возникла ошибка при запуске текстового редактора:\n[exception!q]" - # editor.rpy:457 + # editor.rpy:519 old "Select Editor" new "Выберите редактор" - # editor.rpy:472 + # editor.rpy:534 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. Если такового нет, редактор будет автоматически загружен и установлен." @@ -485,63 +497,67 @@ old "Edit File" new "Редактировать Файл" - # front_page.rpy:214 + # front_page.rpy:215 + old "Open project" + new "Открыть проект" + + # front_page.rpy:217 old "All script files" new "все файлы сценария" - # front_page.rpy:218 + # front_page.rpy:221 old "Actions" new "Действия с Проектом" - # front_page.rpy:227 + # front_page.rpy:230 old "Navigate Script" new "Навигация по cценарию" - # front_page.rpy:228 + # front_page.rpy:231 old "Check Script (Lint)" new "Проверить скрипт (Lint)" - # front_page.rpy:231 + # front_page.rpy:234 old "Change/Update GUI" new "Изменить/Обновить GUI" - # front_page.rpy:233 + # front_page.rpy:236 old "Change Theme" new "Сменить тему" - # front_page.rpy:236 + # front_page.rpy:239 old "Delete Persistent" new "Очистить постоянные" - # front_page.rpy:245 + # front_page.rpy:248 old "Build Distributions" new "Построить дистрибутивы" - # front_page.rpy:247 + # front_page.rpy:250 old "Android" new "Android" - # front_page.rpy:248 + # front_page.rpy:251 old "iOS" new "iOS" - # front_page.rpy:249 + # front_page.rpy:252 old "Generate Translations" new "Создать переводы" - # front_page.rpy:250 + # front_page.rpy:253 old "Extract Dialogue" new "Извлечь диалог" - # front_page.rpy:267 + # front_page.rpy:270 old "Checking script for potential problems..." new "Проверка потенциальных проблем сценария..." - # front_page.rpy:282 + # front_page.rpy:285 old "Deleting persistent data..." new "Удаление постоянных данных..." - # front_page.rpy:290 + # front_page.rpy:293 old "Recompiling all rpy files into rpyc files..." new "Перекомпиляция всех файлов rpy в файлы rpyc..." @@ -817,59 +833,59 @@ old "Order: " new "Порядок: " - # navigation.rpy:178 + # navigation.rpy:179 old "alphabetical" new "алфавитный" - # navigation.rpy:180 + # navigation.rpy:181 old "by-file" new "по файлу" - # navigation.rpy:182 + # navigation.rpy:183 old "natural" new "натуральный" - # navigation.rpy:194 + # navigation.rpy:195 old "Category:" new "Категория:" - # navigation.rpy:196 + # navigation.rpy:198 old "files" new "файлы" - # navigation.rpy:197 + # navigation.rpy:199 old "labels" new "метки" - # navigation.rpy:198 + # navigation.rpy:200 old "defines" new "определения" - # navigation.rpy:199 + # navigation.rpy:201 old "transforms" new "трансформации" - # navigation.rpy:200 + # navigation.rpy:202 old "screens" new "экраны" - # navigation.rpy:201 + # navigation.rpy:203 old "callables" new "вызываемые" - # navigation.rpy:202 + # navigation.rpy:204 old "TODOs" new "TODO" - # navigation.rpy:241 + # navigation.rpy:243 old "+ Add script file" new "+ Добавить файл сценария" - # navigation.rpy:249 + # navigation.rpy:251 old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script." new "Не найдено комментариев TODO.\n\nЧтобы создать такой, включите \"#TODO\" в ваш сценарий" - # navigation.rpy:256 + # navigation.rpy:258 old "The list of names is empty." new "Список имён пуст." @@ -1021,139 +1037,139 @@ old "Have you backed up your projects recently?" new "Давно сохраняли свои проекты?" - # project.rpy:276 + # project.rpy:280 old "Launching the project failed." new "Запуск проекта провален." - # project.rpy:276 + # project.rpy:280 old "Please ensure that your project launches normally before running this command." new "Пожалуйста, убедитесь, что ваш проект нормально запускается перед использованием этой команды." - # project.rpy:292 + # project.rpy:296 old "Ren'Py is scanning the project..." new "Ren'Py сканирует проект..." - # project.rpy:721 + # project.rpy:725 old "Launching" new "Запускаю" - # project.rpy:755 + # project.rpy:759 old "PROJECTS DIRECTORY" new "ДИРЕКТОРИЯ ПРОЕКТОВ" - # project.rpy:755 + # project.rpy:759 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}" - # project.rpy:755 + # project.rpy:759 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 "Лаунчер будет искать проекты в этой директории, создавать новые проекты в этой директории, и размещать построенные проекты в этой директории." - # project.rpy:760 + # project.rpy:764 old "Ren'Py has set the projects directory to:" new "Ren'Py установила директорию проектов на:" - # translations.rpy:92 + # translations.rpy:91 old "Translations: [project.current.display_name!q]" new "Переводы: [project.current.display_name!q]" - # translations.rpy:133 + # translations.rpy:132 old "The language to work with. This should only contain lower-case ASCII characters and underscores." new "Язык работы. Он должен содержать только не-заглавные символы ASCII и подчёркивания." - # translations.rpy:159 + # translations.rpy:158 old "Generate empty strings for translations" new "Генерировать пустые строки для переводов" - # translations.rpy:177 + # translations.rpy:176 old "Generates or updates translation files. The files will be placed in game/tl/[persistent.translate_language!q]." new "Генерирует или обновляет файлы переводов. Файлы будут помещены в game/tl/[persistent.translate_language!q]." - # translations.rpy:197 + # translations.rpy:196 old "Extract String Translations" new "Извлечь Строки Для Перевода" - # translations.rpy:199 + # translations.rpy:198 old "Merge String Translations" new "Объединить Строки Перевода" - # translations.rpy:204 + # translations.rpy:203 old "Replace existing translations" new "Заменить существующие переводы" - # translations.rpy:205 + # translations.rpy:204 old "Reverse languages" new "Обратить языки" - # translations.rpy:209 + # translations.rpy:208 old "Update Default Interface Translations" new "Обновить Базовый Перевод Интерфейса" - # translations.rpy:229 + # translations.rpy:228 old "The extract command allows you to extract string translations from an existing project into a temporary file.\n\nThe merge command merges extracted translations into another project." new "Команда извлечения позволяет вам извлечь переводимые строки из существующего проекта во временный файл.\n\nКоманда объединения объединяет извлечённые переводы в другой перевод." - # translations.rpy:253 + # translations.rpy:252 old "Ren'Py is generating translations...." new "Ren'Py создаёт переводы..." - # translations.rpy:264 + # translations.rpy:263 old "Ren'Py has finished generating [language] translations." new "Ren'Py закончила создавать перевод для [language]." - # translations.rpy:277 + # translations.rpy:276 old "Ren'Py is extracting string translations..." new "Ren'Py извлекает переводимые строки..." - # translations.rpy:280 + # translations.rpy:279 old "Ren'Py has finished extracting [language] string translations." new "Ren'Py завершила извлечение [language] строк перевода." - # translations.rpy:300 + # translations.rpy:299 old "Ren'Py is merging string translations..." new "Ren'Py объединяет строки перевода..." - # translations.rpy:303 + # translations.rpy:302 old "Ren'Py has finished merging [language] string translations." new "Ren'Py завершила объединение [language] строк перевода." - # translations.rpy:314 + # translations.rpy:313 old "Updating default interface translations..." new "Обновляю базовый перевод интерфейса..." - # translations.rpy:343 + # translations.rpy:342 old "Extract Dialogue: [project.current.display_name!q]" new "Извлечь диалог: [project.current.display_name!q]" - # translations.rpy:359 + # translations.rpy:358 old "Format:" new "Формат:" - # translations.rpy:367 + # translations.rpy:366 old "Tab-delimited Spreadsheet (dialogue.tab)" new "Табулированная таблица (dialogue.tab)" - # translations.rpy:368 + # translations.rpy:367 old "Dialogue Text Only (dialogue.txt)" new "Только текст диалога (dialogue.txt)" - # translations.rpy:381 + # translations.rpy:380 old "Strip text tags from the dialogue." new "Убрать текстовые теги из диалога." - # translations.rpy:382 + # translations.rpy:381 old "Escape quotes and other special characters." new "Включать кавычки и регулярные выражения." - # translations.rpy:383 + # translations.rpy:382 old "Extract all translatable strings, not just dialogue." new "Извлечь все переводимые строки, не только диалог." - # translations.rpy:411 + # translations.rpy:410 old "Ren'Py is extracting dialogue...." new "Ren'Py извлекает диалог..." - # translations.rpy:415 + # translations.rpy:414 old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[persistent.dialogue_format] in the base directory." new "Ren'Py завершила извлечение диалога. Извлечённый диалог можно найти в файле dialogue.[persistent.dialogue_format] в директории проекта." diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/russian/obsolete.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/russian/obsolete.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/russian/obsolete.rpy 1970-01-01 00:00:00.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/russian/obsolete.rpy 2018-03-05 00:02:41.000000000 +0000 @@ -0,0 +1,27 @@ + +translate russian strings: + + # _layout/classic_joystick_preferences.rpym:94 + old "Joystick Mapping" + new "Раскладка джойстика" + + # _layout/classic_load_save.rpym:138 + old "Empty Slot." + new "Пустой слот" + + # _layout/classic_load_save.rpym:170 + old "a" + new "а" + + # _layout/classic_load_save.rpym:179 + old "q" + new "б" + + # _compat/gamemenu.rpym:355 + old "Previous" + new "Назад" + + # _compat/gamemenu.rpym:362 + old "Next" + new "Далее" + diff -Nru renpy-6.99.14.1+dfsg/launcher/game/tl/russian/screens.rpy renpy-6.99.14.3+dfsg/launcher/game/tl/russian/screens.rpy --- renpy-6.99.14.1+dfsg/launcher/game/tl/russian/screens.rpy 2018-01-10 01:48:10.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/tl/russian/screens.rpy 2018-03-25 22:06:34.000000000 +0000 @@ -209,91 +209,91 @@ old "Return" new "Вернуться" - # screens.rpy:534 + # screens.rpy:536 old "## About screen" new "## Экран Об игре" - # screens.rpy:536 + # screens.rpy:538 old "## This screen gives credit and copyright information about the game and Ren'Py." new "## Этот экран показывает авторскую информацию об игре и Ren'Py." - # screens.rpy:539 + # screens.rpy:541 old "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen." new "## В этом экране нет ничего особенного, и он служит только примером того, каким можно сделать свой экран." - # screens.rpy:546 + # screens.rpy:548 old "## This use statement includes the game_menu screen inside this one. The vbox child is then included inside the viewport inside the game_menu screen." new "## Этот оператор включает игровое меню внутрь этого экрана. Дочерний vbox включён в порт просмотра внутри экрана игрового меню." - # screens.rpy:556 + # screens.rpy:558 old "Version [config.version!t]\n" new "Версия [config.version!t]\n" - # screens.rpy:558 + # screens.rpy:560 old "## gui.about is usually set in options.rpy." new "## gui.about обычно установлено в options.rpy." - # screens.rpy:562 + # screens.rpy:564 old "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]" new "Сделано с помощью {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]" - # screens.rpy:565 + # screens.rpy:567 old "## This is redefined in options.rpy to add text to the about screen." new "## Это переустанавливается в options.rpy для добавления текста на экран Об игре." - # screens.rpy:577 + # screens.rpy:579 old "## Load and Save screens" new "## Экраны загрузки и сохранения" - # screens.rpy:579 + # screens.rpy:581 old "## These screens are responsible for letting the player save the game and load it again. Since they share nearly everything in common, both are implemented in terms of a third screen, file_slots." new "## Эти экраны ответственны за возможность сохранять и загружать игру. Так как они почти одинаковые, оба реализованы по правилам третьего экрана — file_slots." - # screens.rpy:583 + # screens.rpy:585 old "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load" new "## https://www.renpy.org/doc/html/screen_special.html#save \n https://www.renpy.org/doc/html/screen_special.html#load" - # screens.rpy:602 + # screens.rpy:604 old "Page {}" new "{} страница" - # screens.rpy:602 + # screens.rpy:604 old "Automatic saves" new "Автосохранения" - # screens.rpy:602 + # screens.rpy:604 old "Quick saves" new "Быстрые сохранения" - # screens.rpy:608 + # screens.rpy:610 old "## This ensures the input will get the enter event before any of the buttons do." - new "## Это гарантирует, что ввод будет иметь приоритет над любой другой кнопкой на событие входа." ### + new "## Это гарантирует, что ввод будет принимать enter перед остальными кнопками." - # screens.rpy:612 + # screens.rpy:614 old "## The page name, which can be edited by clicking on a button." new "## Номер страницы, который может быть изменён посредством клика на кнопку." - # screens.rpy:624 + # screens.rpy:626 old "## The grid of file slots." new "## Таблица слотов." - # screens.rpy:644 + # screens.rpy:646 old "{#file_time}%A, %B %d %Y, %H:%M" new "{#file_time}%A, %d %B %Y, %H:%M" - # screens.rpy:644 + # screens.rpy:646 old "empty slot" new "Пустой слот" - # screens.rpy:652 + # screens.rpy:654 old "## Buttons to access other pages." new "## Кнопки для доступа к другим страницам." - # screens.rpy:661 + # screens.rpy:663 old "<" new "<" - # screens.rpy:664 + # screens.rpy:666 old "{#auto_page}A" new "{#auto_page}А" @@ -301,375 +301,375 @@ old "{#quick_page}Q" new "{#quick_page}Б" - # screens.rpy:669 + # screens.rpy:671 old "## range(1, 10) gives the numbers from 1 to 9." new "## range(1, 10) задаёт диапазон значений от 1 до 9." - # screens.rpy:673 + # screens.rpy:675 old ">" new ">" - # screens.rpy:708 + # screens.rpy:710 old "## Preferences screen" new "## Экран настроек" - # screens.rpy:710 + # screens.rpy:712 old "## The preferences screen allows the player to configure the game to better suit themselves." new "## Экран настроек позволяет игроку настраивать игру под себя." - # screens.rpy:713 + # screens.rpy:715 old "## https://www.renpy.org/doc/html/screen_special.html#preferences" new "## https://www.renpy.org/doc/html/screen_special.html#preferences" - # screens.rpy:730 + # screens.rpy:732 old "Display" new "Режим экрана" - # screens.rpy:731 + # screens.rpy:733 old "Window" new "Оконный" - # screens.rpy:732 + # screens.rpy:734 old "Fullscreen" new "Полный" - # screens.rpy:736 + # screens.rpy:738 old "Rollback Side" new "Сторона отката" - # screens.rpy:737 + # screens.rpy:739 old "Disable" new "Отключено" - # screens.rpy:738 + # screens.rpy:740 old "Left" new "Левая" - # screens.rpy:739 + # screens.rpy:741 old "Right" new "Правая" - # screens.rpy:744 + # screens.rpy:746 old "Unseen Text" new "Всего текста" - # screens.rpy:745 + # screens.rpy:747 old "After Choices" new "После выборов" - # screens.rpy:746 + # screens.rpy:748 old "Transitions" new "Переходов" - # screens.rpy:748 + # screens.rpy:750 old "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences." new "## Дополнительные vbox'ы типа \"radio_pref\" или \"check_pref\" могут быть добавлены сюда для добавления новых настроек." - # screens.rpy:759 + # screens.rpy:761 old "Text Speed" new "Скорость текста" - # screens.rpy:763 + # screens.rpy:765 old "Auto-Forward Time" new "Скорость авточтения" - # screens.rpy:770 + # screens.rpy:772 old "Music Volume" new "Громкость музыки" - # screens.rpy:777 + # screens.rpy:779 old "Sound Volume" new "Громкость звуков" - # screens.rpy:783 + # screens.rpy:785 old "Test" new "Тест" - # screens.rpy:787 + # screens.rpy:789 old "Voice Volume" new "Громкость голоса" - # screens.rpy:798 + # screens.rpy:800 old "Mute All" new "Без звука" - # screens.rpy:874 + # screens.rpy:876 old "## History screen" new "## Экран истории" - # screens.rpy:876 + # screens.rpy:878 old "## This is a screen that displays the dialogue history to the player. While there isn't anything special about this screen, it does have to access the dialogue history stored in _history_list." new "## Этот экран показывает игроку историю диалогов. Хотя в этом экране нет ничего особенного, он имеет доступ к истории диалогов, хранимом в _history_list." - # screens.rpy:880 + # screens.rpy:882 old "## https://www.renpy.org/doc/html/history.html" new "## https://www.renpy.org/doc/html/history.html" - # screens.rpy:886 + # screens.rpy:888 old "## Avoid predicting this screen, as it can be very large." new "## Избегайте предсказывания этого экрана, так как он может быть очень массивным." - # screens.rpy:897 + # screens.rpy:899 old "## This lays things out properly if history_height is None." new "## Это всё правильно уравняет, если history_height будет установлен на None." - # screens.rpy:906 + # screens.rpy:908 old "## Take the color of the who text from the Character, if set." new "## Берёт цвет из who параметра персонажа, если он установлен." - # screens.rpy:914 + # screens.rpy:916 old "The dialogue history is empty." new "История диалогов пуста." - # screens.rpy:917 + # screens.rpy:919 old "## This determines what tags are allowed to be displayed on the history screen." new "## Это определяет, какие теги могут отображаться на экране истории." - # screens.rpy:964 + # screens.rpy:966 old "## Help screen" new "## Экран помощи" - # screens.rpy:966 + # screens.rpy:968 old "## A screen that gives information about key and mouse bindings. It uses other screens (keyboard_help, mouse_help, and gamepad_help) to display the actual help." new "## Экран, дающий информацию о клавишах управления. Он использует другие экраны (keyboard_help, mouse_help, и gamepad_help), чтобы показывать актуальную помощь." - # screens.rpy:985 + # screens.rpy:987 old "Keyboard" new "Клавиатура" - # screens.rpy:986 + # screens.rpy:988 old "Mouse" new "Мышь" - # screens.rpy:989 + # screens.rpy:991 old "Gamepad" new "Геймпад" - # screens.rpy:1002 + # screens.rpy:1004 old "Enter" new "Enter" - # screens.rpy:1003 + # screens.rpy:1005 old "Advances dialogue and activates the interface." new "Прохождение диалогов, активация интерфейса." - # screens.rpy:1006 + # screens.rpy:1008 old "Space" new "Пробел" - # screens.rpy:1007 + # screens.rpy:1009 old "Advances dialogue without selecting choices." new "Прохождение диалогов без возможности делать выбор." - # screens.rpy:1010 + # screens.rpy:1012 old "Arrow Keys" new "Стрелки" - # screens.rpy:1011 + # screens.rpy:1013 old "Navigate the interface." new "Навигация по интерфейсу." - # screens.rpy:1014 + # screens.rpy:1016 old "Escape" new "Esc" - # screens.rpy:1015 + # screens.rpy:1017 old "Accesses the game menu." new "Вход в игровое меню." - # screens.rpy:1018 + # screens.rpy:1020 old "Ctrl" new "Ctrl" - # screens.rpy:1019 + # screens.rpy:1021 old "Skips dialogue while held down." new "Пропускает диалоги, пока зажат." - # screens.rpy:1022 + # screens.rpy:1024 old "Tab" new "Tab" - # screens.rpy:1023 + # screens.rpy:1025 old "Toggles dialogue skipping." new "Включает режим пропуска." - # screens.rpy:1026 + # screens.rpy:1028 old "Page Up" new "Page Up" - # screens.rpy:1027 + # screens.rpy:1029 old "Rolls back to earlier dialogue." new "Откат назад по сюжету игры." - # screens.rpy:1030 + # screens.rpy:1032 old "Page Down" new "Page Down" - # screens.rpy:1031 + # screens.rpy:1033 old "Rolls forward to later dialogue." new "Откатывает предыдущее действие вперёд." - # screens.rpy:1035 + # screens.rpy:1037 old "Hides the user interface." new "Скрывает интерфейс пользователя." - # screens.rpy:1039 + # screens.rpy:1041 old "Takes a screenshot." new "Делает снимок экрана." - # screens.rpy:1043 + # screens.rpy:1045 old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}." new "Включает поддерживаемый {a=https://www.renpy.org/l/voicing}синтезатор речи{/a}." - # screens.rpy:1049 + # screens.rpy:1051 old "Left Click" new "Левый клик" - # screens.rpy:1053 + # screens.rpy:1055 old "Middle Click" new "Клик колёсиком" - # screens.rpy:1057 + # screens.rpy:1059 old "Right Click" new "Правый клик" - # screens.rpy:1061 + # screens.rpy:1063 old "Mouse Wheel Up\nClick Rollback Side" new "Колёсико вверх\nКлик на сторону отката" - # screens.rpy:1065 + # screens.rpy:1067 old "Mouse Wheel Down" new "Колёсико вниз" - # screens.rpy:1072 + # screens.rpy:1074 old "Right Trigger\nA/Bottom Button" new "Правый триггер\nA/Нижняя кнопка" - # screens.rpy:1076 + # screens.rpy:1078 old "Left Trigger\nLeft Shoulder" new "Левый Триггер\nЛевый Бампер" - # screens.rpy:1080 + # screens.rpy:1082 old "Right Shoulder" new "Правый бампер" - # screens.rpy:1085 + # screens.rpy:1087 old "D-Pad, Sticks" new "Крестовина, Стики" - # screens.rpy:1089 + # screens.rpy:1091 old "Start, Guide" new "Start, Guide" - # screens.rpy:1093 + # screens.rpy:1095 old "Y/Top Button" new "Y/Верхняя кнопка" - # screens.rpy:1096 + # screens.rpy:1098 old "Calibrate" new "Калибровка" - # screens.rpy:1124 + # screens.rpy:1126 old "## Additional screens" new "## Дополнительные экраны" - # screens.rpy:1128 + # screens.rpy:1130 old "## Confirm screen" new "## Экран подтверждения" - # screens.rpy:1130 + # screens.rpy:1132 old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question." new "## Экран подтверждения вызывается, когда Ren'Py хочет спросить у игрока вопрос Да или Нет." - # screens.rpy:1133 + # screens.rpy:1135 old "## https://www.renpy.org/doc/html/screen_special.html#confirm" new "## https://www.renpy.org/doc/html/screen_special.html#confirm" - # screens.rpy:1137 + # screens.rpy:1139 old "## Ensure other screens do not get input while this screen is displayed." new "## Гарантирует, что другие экраны будут недоступны, пока показан этот экран." - # screens.rpy:1161 + # screens.rpy:1163 old "Yes" new "Да" - # screens.rpy:1162 + # screens.rpy:1164 old "No" new "Нет" - # screens.rpy:1164 + # screens.rpy:1166 old "## Right-click and escape answer \"no\"." new "## Правый клик и esc, как ответ \"Нет\"." - # screens.rpy:1191 + # screens.rpy:1193 old "## Skip indicator screen" new "## Экран индикатора пропуска" - # screens.rpy:1193 + # screens.rpy:1195 old "## The skip_indicator screen is displayed to indicate that skipping is in progress." new "## Экран индикатора пропуска появляется для того, чтобы показать, что идёт пропуск." - # screens.rpy:1196 + # screens.rpy:1198 old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator" new "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator" - # screens.rpy:1208 + # screens.rpy:1210 old "Skipping" new "Пропускаю" - # screens.rpy:1215 + # screens.rpy:1217 old "## This transform is used to blink the arrows one after another." new "## Эта трансформация используется, чтобы мигать стрелками одна за другой." - # screens.rpy:1242 + # screens.rpy:1244 old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it." new "## Нам надо использовать шрифт, имеющий в себе символ U+25B8 (стрелку выше)." - # screens.rpy:1247 + # screens.rpy:1249 old "## Notify screen" new "## Экран уведомлений" - # screens.rpy:1249 + # screens.rpy:1251 old "## The notify screen is used to show the player a message. (For example, when the game is quicksaved or a screenshot has been taken.)" new "## Экран уведомлений используется, чтобы показать игроку оповещение. (Например, когда игра автосохранилась, или был сделан скриншот)" - # screens.rpy:1252 + # screens.rpy:1254 old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen" new "## https://www.renpy.org/doc/html/screen_special.html#notify-screen" - # screens.rpy:1286 + # screens.rpy:1288 old "## NVL screen" new "## Экран NVL" - # screens.rpy:1288 + # screens.rpy:1290 old "## This screen is used for NVL-mode dialogue and menus." new "## Этот экран используется в диалогах и меню режима NVL." - # screens.rpy:1290 + # screens.rpy:1292 old "## https://www.renpy.org/doc/html/screen_special.html#nvl" new "## https://www.renpy.org/doc/html/screen_special.html#nvl" - # screens.rpy:1301 + # screens.rpy:1303 old "## Displays dialogue in either a vpgrid or the vbox." new "## Показывает диалог или в vpgrid, или в vbox." - # screens.rpy:1314 + # screens.rpy:1316 old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True, as it is above." new "## Показывает меню, если есть. Меню может показываться некорректно, если config.narrator_menu установлено на True." - # screens.rpy:1344 + # screens.rpy:1346 old "## This controls the maximum number of NVL-mode entries that can be displayed at once." new "## Это контролирует максимальное число строк NVL, могущих показываться за раз." - # screens.rpy:1406 + # screens.rpy:1408 old "## Mobile Variants" new "## Мобильные варианты" - # screens.rpy:1413 + # screens.rpy:1415 old "## Since a mouse may not be present, we replace the quick menu with a version that uses fewer and bigger buttons that are easier to touch." new "## Раз мышь может не использоваться, мы заменили быстрое меню версией, использующей меньше кнопок, но больших по размеру, чтобы их было легче касаться." - # screens.rpy:1429 + # screens.rpy:1431 old "Menu" new "Меню" diff -Nru renpy-6.99.14.1+dfsg/launcher/game/translations.rpy renpy-6.99.14.3+dfsg/launcher/game/translations.rpy --- renpy-6.99.14.1+dfsg/launcher/game/translations.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/launcher/game/translations.rpy 2018-02-08 22:23:47.000000000 +0000 @@ -68,7 +68,6 @@ os.unlink(write_test) except: - raise tempdir = tempfile.mkdtemp() strings_json = os.path.join(tempdir, "strings.json") diff -Nru renpy-6.99.14.1+dfsg/renpy/ast.py renpy-6.99.14.3+dfsg/renpy/ast.py --- renpy-6.99.14.1+dfsg/renpy/ast.py 2018-01-07 23:47:17.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/ast.py 2018-03-29 17:08:43.000000000 +0000 @@ -479,6 +479,15 @@ # Does nothing by default. return + warp = False + + def can_warp(self): + """ + Returns true if this should be run while warping, False otherwise. + """ + + return self.warp + def say_menu_with(expression, callback): """ @@ -831,7 +840,12 @@ super(Python, self).__init__(loc) self.hide = hide - self.code = PyCode(python_code, loc=loc, mode='exec') + + if hide: + self.code = PyCode(python_code, loc=loc, mode='hide') + else: + self.code = PyCode(python_code, loc=loc, mode='exec') + self.store = store def diff_info(self): @@ -882,7 +896,12 @@ super(EarlyPython, self).__init__(loc) self.hide = hide - self.code = PyCode(python_code, loc=loc, mode='exec') + + if hide: + self.code = PyCode(python_code, loc=loc, mode='hide') + else: + self.code = PyCode(python_code, loc=loc, mode='exec') + self.store = store def diff_info(self): @@ -1089,6 +1108,8 @@ 'atl', ] + warp = True + def __init__(self, loc, imspec, atl=None): """ @param imspec: A triple consisting of an image name (itself a @@ -1120,6 +1141,8 @@ class ShowLayer(Node): + warp = True + __slots__ = [ 'layer', 'at_list', @@ -1164,6 +1187,8 @@ 'atl', ] + warp = True + def __init__(self, loc, imgspec, layer, atl=None): """ @param imspec: A triple consisting of an image name (itself a @@ -1214,6 +1239,8 @@ 'imspec', ] + warp = True + def __init__(self, loc, imgspec): """ @param imspec: A triple consisting of an image name (itself a @@ -1838,6 +1865,13 @@ def get_code(self, dialogue_filter=None): return self.line + def can_warp(self): + + if self.call("warp"): + return True + + return False + def create_store(name): if name not in renpy.config.special_namespaces: @@ -2001,7 +2035,10 @@ d.ever_been_changed.add("_defaults_set") if self.varname not in defaults_set: - d[self.varname] = renpy.python.py_eval_bytecode(self.code.bytecode) + + if start or (self.varname not in d.ever_been_changed): + d[self.varname] = renpy.python.py_eval_bytecode(self.code.bytecode) + d.ever_been_changed.add(self.varname) defaults_set.add(self.varname) @@ -2068,15 +2105,17 @@ __slots__ = [ "identifier", + "alternate", "language", "block", "after", ] - def __init__(self, loc, identifier, language, block): + def __init__(self, loc, identifier, language, block, alternate=None): super(Translate, self).__init__(loc) self.identifier = identifier + self.alternate = alternate self.language = language self.block = block @@ -2101,6 +2140,9 @@ if self.after is old: self.after = new + def lookup(self): + return renpy.game.script.translator.lookup_translate(self.identifier, getattr(self, "alternate", None)) + def execute(self): statement_name("translate") @@ -2114,18 +2156,19 @@ renpy.game.seen_translates_count += 1 renpy.game.new_translates_count += 1 - next_node(renpy.game.script.translator.lookup_translate(self.identifier)) + next_node(self.lookup()) renpy.game.context().translate_identifier = self.identifier + renpy.game.context().alternate_translate_identifier = getattr(self, "alternate", None) renpy.game.context().translate_block_language = self.language def predict(self): - node = renpy.game.script.translator.lookup_translate(self.identifier) + node = self.lookup() return [ node ] def scry(self): rv = Scry() - rv._next = renpy.game.script.translator.lookup_translate(self.identifier) + rv._next = self.lookup() return rv def get_children(self, f): @@ -2157,6 +2200,7 @@ statement_name("end translate") renpy.game.context().translate_identifier = None + renpy.game.context().alternate_translate_identifier = None renpy.game.context().translate_block_language = None diff -Nru renpy-6.99.14.1+dfsg/renpy/atl.py renpy-6.99.14.3+dfsg/renpy/atl.py --- renpy-6.99.14.1+dfsg/renpy/atl.py 2018-01-21 19:21:50.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/atl.py 2018-03-14 15:47:16.000000000 +0000 @@ -480,12 +480,13 @@ block = self.atl.compile(self.context) - if len(block.statements) == 1 and isinstance(block.statements[0], Interpolation): - - interp = block.statements[0] - - if interp.duration == 0 and interp.properties: - self.properties = interp.properties[:] + if all( + isinstance(statement, Interpolation) and statement.duration == 0 + for statement in block.statements + ): + self.properties = [] + for interp in block.statements: + self.properties.extend(interp.properties) if not constant and renpy.display.predict.predicting: self.predict_block = block @@ -538,6 +539,10 @@ events.append(self.transform_event) self.last_transform_event = self.transform_event + if self.transform_event in renpy.config.repeat_transform_events: + self.transform_event = None + self.last_transform_event = None + old_exception_info = renpy.game.exception_info if (self.atl_st_offset is None) or (st - self.atl_st_offset) < 0: diff -Nru renpy-6.99.14.1+dfsg/renpy/audio/music.py renpy-6.99.14.3+dfsg/renpy/audio/music.py --- renpy-6.99.14.1+dfsg/renpy/audio/music.py 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/audio/music.py 2018-03-25 18:43:28.000000000 +0000 @@ -172,6 +172,9 @@ if isinstance(filenames, basestring): filenames = [ filenames ] + if renpy.config.skipping == "fast": + stop(channel) + with renpy.audio.audio.lock: try: diff -Nru renpy-6.99.14.1+dfsg/renpy/character.py renpy-6.99.14.3+dfsg/renpy/character.py --- renpy-6.99.14.1+dfsg/renpy/character.py 2018-01-11 05:38:35.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/character.py 2018-03-09 04:18:29.000000000 +0000 @@ -957,6 +957,9 @@ renpy.store._side_image_attributes = attrs + if not interact: + renpy.store._side_image_attributes_reset = True + if renpy.config.voice_tag_callback is not None: renpy.config.voice_tag_callback(self.voice_tag) diff -Nru renpy-6.99.14.1+dfsg/renpy/common/000statements.rpy renpy-6.99.14.3+dfsg/renpy/common/000statements.rpy --- renpy-6.99.14.1+dfsg/renpy/common/000statements.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/000statements.rpy 2018-03-25 18:10:28.000000000 +0000 @@ -39,7 +39,17 @@ python early hide: - # Music play - The example of a full statement. + def warp_audio(p): + """ + Determines if we should play this statement while warping. + """ + + if p.get("channel", None) is not None: + channel = eval(p["channel"]) + else: + channel = "music" + + return renpy.music.is_music(channel) def parse_play_music(l): @@ -139,7 +149,8 @@ parse=parse_play_music, execute=execute_play_music, predict=predict_play_music, - lint=lint_play_music) + lint=lint_play_music, + warp=warp_audio) # From here on, we'll steal bits of other statements when defining other # statements. @@ -187,7 +198,8 @@ renpy.register_statement('queue music', parse=parse_queue_music, execute=execute_queue_music, - lint=lint_play_music) + lint=lint_play_music, + warp=warp_audio) def parse_stop_music(l): fadeout = "None" @@ -220,12 +232,25 @@ renpy.register_statement('stop music', parse=parse_stop_music, - execute=execute_stop_music) + execute=execute_stop_music, + warp=warp_audio) # Sound statements. They share alot with the equivalent music # statements. + def warp_sound(p): + """ + Determines if we should play this statement while warping. + """ + + if p.get("channel", None) is not None: + channel = eval(p["channel"]) + else: + channel = "sound" + + return renpy.music.is_music(channel) + def execute_play_sound(p): if p["channel"] is not None: @@ -252,7 +277,8 @@ renpy.register_statement('play sound', parse=parse_play_music, execute=execute_play_sound, - lint=lint_play_sound) + lint=lint_play_sound, + warp=warp_sound) def execute_queue_sound(p): if p["channel"] is not None: @@ -271,7 +297,8 @@ renpy.register_statement('queue sound', parse=parse_queue_music, execute=execute_queue_sound, - lint=lint_play_sound) + lint=lint_play_sound, + warp=warp_sound) def execute_stop_sound(p): if p["channel"] is not None: @@ -285,7 +312,8 @@ renpy.register_statement('stop sound', parse=parse_stop_music, - execute=execute_stop_sound) + execute=execute_stop_sound, + warp=warp_sound) # Generic play/queue/stop statements. These take a channel name as @@ -345,17 +373,20 @@ parse=parse_play_generic, execute=execute_play_music, predict=predict_play_music, - lint=lint_play_generic) + lint=lint_play_generic, + warp=warp_audio) renpy.register_statement('queue', parse=parse_queue_generic, execute=execute_queue_music, - lint=lint_play_generic) + lint=lint_play_generic, + warp=warp_audio) renpy.register_statement('stop', parse=parse_stop_generic, execute=execute_stop_music, - lint=lint_stop_generic) + lint=lint_stop_generic, + warp=warp_audio) @@ -399,6 +430,9 @@ # Should we predict screens? config.predict_screen_statements = True + def warp_true(): + return True + def parse_show_call_screen(l): # Parse a name. @@ -498,7 +532,8 @@ parse=parse_show_call_screen, execute=execute_show_screen, predict=predict_screen, - lint=lint_screen) + lint=lint_screen, + warp=warp_true) renpy.register_statement("call screen", parse=parse_show_call_screen, @@ -508,4 +543,5 @@ renpy.register_statement("hide screen", parse=parse_hide_screen, - execute=execute_hide_screen) + execute=execute_hide_screen, + warp=warp_true) diff -Nru renpy-6.99.14.1+dfsg/renpy/common/000window.rpy renpy-6.99.14.3+dfsg/renpy/common/000window.rpy --- renpy-6.99.14.1+dfsg/renpy/common/000window.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/000window.rpy 2018-03-29 05:14:16.000000000 +0000 @@ -54,7 +54,7 @@ if trans is False: trans = config.window_show_transition - if _preferences.show_empty_window: + if _preferences.show_empty_window and (not renpy.game.after_rollback): renpy.with_statement(None) store._window = True renpy.with_statement(trans) @@ -79,7 +79,7 @@ if trans is False: trans = config.window_hide_transition - if _preferences.show_empty_window: + if _preferences.show_empty_window and (not renpy.game.after_rollback): renpy.with_statement(None) store._window = False renpy.with_statement(trans) @@ -164,13 +164,16 @@ renpy.register_statement('window show', parse=parse_window, execute=execute_window_show, - lint=lint_window) + lint=lint_window, + warp=lambda : True) renpy.register_statement('window hide', parse=parse_window, execute=execute_window_hide, - lint=lint_window) + lint=lint_window, + warp=lambda : True) renpy.register_statement('window auto', parse=parse_window_auto, - execute=execute_window_auto) + execute=execute_window_auto, + warp=lambda : True) diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00action_file.rpy renpy-6.99.14.3+dfsg/renpy/common/00action_file.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00action_file.rpy 2018-01-13 15:25:47.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00action_file.rpy 2018-03-22 02:27:51.000000000 +0000 @@ -341,7 +341,7 @@ self.page = page self.cycle = cycle - self.alt = "Save slot %s: [text]" % (name,) + self.alt = __("Save slot %s: [text]") % (name,) def __call__(self): @@ -414,7 +414,7 @@ self.page = page self.newest = newest - self.alt = "Load slot %s: [text]" % (name,) + self.alt = __("Load slot %s: [text]") % (name,) def __call__(self): @@ -456,7 +456,7 @@ If true, prompts before deleting a file. """ - alt = "Delete slot [text]" + alt = _("Delete slot [text]") def __init__(self, name, confirm=True, page=None): self.name = name @@ -534,7 +534,13 @@ def __init__(self, page): self.page = str(page) - self.alt = "File page [text]" + + if page == "auto": + self.alt = _("File page auto") + elif page == "quick": + self.alt = _("File page quick") + else: + self.alt = _("File page [text]") def __call__(self): if not self.get_sensitive(): @@ -724,7 +730,7 @@ If true, we can go to the first page when on the last file page if max is set. """ - alt = "Next file page" + alt = _("Next file page.") def __init__(self, max=None, wrap=False): @@ -788,7 +794,7 @@ If true, we can go to the last page when on the first file page if max is set. """ - alt = "Previous file page" + alt = _("Previous file page.") def __init__(self, max=None, wrap=False): @@ -867,7 +873,7 @@ Notify(message), ] - rv[0].alt = "Quick save." + rv[0].alt = _("Quick save.") if not getattr(renpy.context(), "_menu", False): rv.insert(0, FileTakeScreenshot()) @@ -886,7 +892,7 @@ """ rv = FileLoad(1, page="quick", confirm=confirm, newest=False) - rv.alt = "Quick load." + rv.alt = _("Quick load.") return rv init 1050 python hide: diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00action_other.rpy renpy-6.99.14.3+dfsg/renpy/common/00action_other.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00action_other.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00action_other.rpy 2018-03-22 02:20:00.000000000 +0000 @@ -33,6 +33,11 @@ def __init__(self, action): self.action = action + try: + self.alt = action.alt + except: + pass + def __call__(self): return self.action.__call__() @@ -336,7 +341,7 @@ the default language of the game script. """ - alt = "Language [text]" + alt = _("Language [text]") def __init__(self, language): self.language = language diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00build.rpy renpy-6.99.14.3+dfsg/renpy/common/00build.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00build.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00build.rpy 2018-03-08 02:06:21.000000000 +0000 @@ -132,6 +132,7 @@ ("dialogue.txt", None), ("dialogue.tab", None), ("profile_screen.txt", None), + ("files.txt", None), ("tmp/", None), ("game/saves/", None), diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00gui.rpy renpy-6.99.14.3+dfsg/renpy/common/00gui.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00gui.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00gui.rpy 2018-03-27 21:56:32.000000000 +0000 @@ -186,6 +186,8 @@ renpy.pure("gui.SetPreference") renpy.pure("gui.TogglePreference") + # The extension used for auto-defined images. + button_image_extension = ".png" def button_properties(kind): """ @@ -241,9 +243,9 @@ backgrounds = [ ] if kind != "button": - backgrounds.append("gui/button/" + kind[:-7] + "_[prefix_]background.png") + backgrounds.append("gui/button/" + kind[:-7] + "_[prefix_]background" + button_image_extension) - backgrounds.append("gui/button/[prefix_]background.png") + backgrounds.append("gui/button/[prefix_]background" + button_image_extension) if renpy.variant("small"): backgrounds = [ i.replace("gui/button", "gui/phone/button") for i in backgrounds ] + backgrounds diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00library.rpy renpy-6.99.14.3+dfsg/renpy/common/00library.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00library.rpy 2018-01-24 02:58:43.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00library.rpy 2018-03-22 02:34:52.000000000 +0000 @@ -147,6 +147,16 @@ _("Clipboard voicing enabled. ") _("Self-voicing enabled. ") + _("bar") + _("selected") + _("viewport") + _("horizontal scroll") + _("vertical scroll") + _("activate") + _("deactivate") + _("increase") + _("decrease") + def sv(what, interact=True): """ Uses the narrator to speak `what` iff self-voicing is enabled. @@ -284,7 +294,78 @@ # Record the builtins. renpy.lint.renpy_builtins = set(globals()) - renpy.lint.renpy_builtins.remove('menu') + + for i in """ +adv +anim +blinds +center +default +default_transition +dissolve +ease +easeinbottom +easeinleft +easeinright +easeintop +easeoutbottom +easeoutleft +easeoutright +easeouttop +fade +hpunch +irisin +irisout +left +menu +mouse_visible +move +moveinbottom +moveinleft +moveinright +moveintop +moveoutbottom +moveoutleft +moveoutright +moveouttop +name_only +nvl +nvl_variant +offscreenleft +offscreenright +pixellate +pushdown +pushleft +pushright +pushup +right +save_name +slideawaydown +slideawayleft +slideawayright +slideawayup +slidedown +slideleft +slideright +slideup +squares +suppress_overlay +sv +top +topleft +topright +truecenter +vpunch +wipedown +wipeleft +wiperight +wipeup +zoomin +zoominout +zoomout +""".split(): + + renpy.lint.renpy_builtins.remove(i) # After init, make some changes based on if config.developer is True. init 1700 python hide: diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00nvl_mode.rpy renpy-6.99.14.3+dfsg/renpy/common/00nvl_mode.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00nvl_mode.rpy 2018-01-21 03:46:40.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00nvl_mode.rpy 2018-03-14 15:47:16.000000000 +0000 @@ -237,11 +237,29 @@ nvl_show_core() def nvl_show(with_): + """ + :doc: nvl + + The python equivalent of the ``nvl show`` statement. + + `with_` + The transition to use to show the NVL-mode window. + """ + nvl_show_core() renpy.with_statement(with_) store._last_say_who = "nvl" def nvl_hide(with_): + """ + :doc: nvl + + The python equivalent of the ``nvl hide`` statement. + + `with_` + The transition to use to hide the NVL-mode window. + """ + nvl_show_core() renpy.with_statement(None) renpy.with_statement(with_) @@ -348,7 +366,10 @@ else: checkpoint = True - self.push_nvl_list(who, what, multiple=multiple) + if multiple is not None: + self.push_nvl_list(who, what, multiple=multiple) + else: + self.push_nvl_list(who, what) renpy.display_say( who, @@ -362,7 +383,10 @@ def do_done(self, who, what, multiple=None): - self.push_nvl_list(who, what, multiple=multiple) + if multiple is not None: + self.push_nvl_list(who, what, multiple=multiple) + else: + self.push_nvl_list(who, what) if multiple is None: start = -1 @@ -407,6 +431,12 @@ kind=adv) def nvl_clear(): + """ + :doc: nvl + + The python equivalent of the ``nvl clear`` statement. + """ + store.nvl_list = [ ] # Run clear at the start of the game. @@ -414,6 +444,16 @@ def nvl_menu(items): + """ + :doc: nvl + + A Python function that displays a menu in NVL style. This is rarely + used directly. Instead, it's assigned to the :var:`menu` variable, + using something like:: + + define menu = nvl_menu + """ + renpy.mode('nvl_menu') diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00preferences.rpy renpy-6.99.14.3+dfsg/renpy/common/00preferences.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00preferences.rpy 2018-01-26 22:42:37.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00preferences.rpy 2018-03-25 21:20:24.000000000 +0000 @@ -204,7 +204,7 @@ def get(): - if name == "display": + if name == _("display"): if value == "fullscreen": return SetField(_preferences, "fullscreen", True) elif value == "window": @@ -216,7 +216,7 @@ elif isinstance(value, (int, float)): return __DisplayAction(value) - elif name == "transitions": + elif name == _("transitions"): if value == "all": return SetField(_preferences, "transitions", 2) @@ -225,9 +225,9 @@ elif value == "none": return SetField(_preferences, "transitions", 0) elif value == "toggle": - return ToggleField(_preferences, "transitions", true_value=2, false_value=0) + return ToggleField(_preferences, "transitions", true_value=2, false_value=0), _("skip transitions") - elif name == "video sprites": + elif name == _("video sprites"): if value == "show": return SetField(_preferences, "video_image_fallback", False) @@ -236,7 +236,7 @@ elif value == "toggle": return ToggleField(_preferences, "video_image_fallback") - elif name == "show empty window": + elif name == _("show empty window"): if value == "show": return SetField(_preferences, "show_empty_window", True) @@ -245,7 +245,7 @@ elif value == "toggle": return ToggleField(_preferences, "show_empty_window") - elif name == "text speed": + elif name == _("text speed"): if value is None: bar_range = range or 200 @@ -253,36 +253,37 @@ elif isinstance(value, int): return SetField(_preferences, "text_cps", value) - elif name == "joystick" or name == "joystick...": + elif name == _("joystick") or name == _("joystick..."): if renpy.display.joystick.enabled or config.always_has_joystick: return ShowMenu("joystick_preferences") else: return None - elif name == "skip": + elif name == _("skip"): if value == "all messages" or value == "all": - return SetField(_preferences, "skip_unseen", True) + return SetField(_preferences, "skip_unseen", True), _("skip unseen [text]") + elif value == "seen messages" or value == "seen": - return SetField(_preferences, "skip_unseen", False) + return SetField(_preferences, "skip_unseen", False), _("skip unseen [text]") elif value == "toggle": - return ToggleField(_preferences, "skip_unseen") + return ToggleField(_preferences, "skip_unseen"), _("skip unseen text") - elif name == "begin skipping": + elif name == _("begin skipping"): return Skip() - elif name == "after choices": + elif name == _("after choices"): if value == "keep skipping" or value == "keep" or value == "skip": return SetField(_preferences, "skip_after_choices", True) elif value == "stop skipping" or value == "stop": return SetField(_preferences, "skip_after_choices", False) elif value == "toggle": - return ToggleField(_preferences, "skip_after_choices") + return ToggleField(_preferences, "skip_after_choices"), _("skip after choices") - elif name == "auto-forward time": + elif name == _("auto-forward time"): if value is None: @@ -296,16 +297,17 @@ elif isinstance(value, int): return SetField(_preferences, "afm_time", value) - elif name == "auto-forward": + elif name == _("auto-forward"): if value == "enable": return SetField(_preferences, "afm_enable", True) elif value == "disable": return SetField(_preferences, "afm_enable", False) elif value == "toggle": - return ToggleField(_preferences, "afm_enable") + return ToggleField(_preferences, "afm_enable"), _("Auto forward") + - elif name == "auto-forward after click": + elif name == _("auto-forward after click"): if value == "enable": return SetField(_preferences, "afm_after_click", True) @@ -314,7 +316,7 @@ elif value == "toggle": return ToggleField(_preferences, "afm_after_click") - elif name == "automatic move": + elif name == _("automatic move"): if value == "enable": return SetField(_preferences, "mouse_move", True) @@ -323,7 +325,7 @@ elif value == "toggle": return ToggleField(_preferences, "mouse_move") - elif name == "wait for voice": + elif name == _("wait for voice"): if value == "enable": return SetField(_preferences, "wait_voice", True) @@ -332,7 +334,7 @@ elif value == "toggle": return ToggleField(_preferences, "wait_voice") - elif name == "voice sustain": + elif name == _("voice sustain"): if value == "enable": return SetField(_preferences, "voice_sustain", True) @@ -341,7 +343,7 @@ elif value == "toggle": return ToggleField(_preferences, "voice_sustain") - elif name == "self voicing": + elif name == _("self voicing"): if value == "enable": return SetField(_preferences, "self_voicing", True) @@ -350,7 +352,7 @@ elif value == "toggle": return ToggleField(_preferences, "self_voicing") - elif name == "clipboard voicing": + elif name == _("clipboard voicing"): if value == "enable": return SetField(_preferences, "self_voicing", "clipboard") @@ -359,7 +361,7 @@ elif value == "toggle": return ToggleField(_preferences, "self_voicing", true_value="clipboard") - elif name == "debug voicing": + elif name == _("debug voicing"): if value == "enable": return SetField(_preferences, "self_voicing", "debug") @@ -368,7 +370,7 @@ elif value == "toggle": return ToggleField(_preferences, "self_voicing", true_value="debug") - elif name == "emphasize audio": + elif name == _("emphasize audio"): if value == "enable": return SetField(_preferences, "emphasize_audio", True) @@ -377,7 +379,7 @@ elif value == "toggle": return ToggleField(_preferences, "emphasize_audio") - elif name == "rollback side": + elif name == _("rollback side"): if value in [ "left", "right", "disable" ]: if renpy.mobile: @@ -387,16 +389,16 @@ return SetField(_preferences, field, value) - elif name == "gl powersave": + elif name == _("gl powersave"): if value == "toggle": return [ ToggleField(_preferences, "gl_powersave"), _DisplayReset() ] else: return [ SetField(_preferences, "gl_powersave", value), _DisplayReset() ] - elif name == "gl framerate": + elif name == _("gl framerate"): return [ SetField(_preferences, "gl_framerate", value), _DisplayReset() ] - elif name == "gl tearing": + elif name == _("gl tearing"): return [ SetField(_preferences, "gl_tearing", value), _DisplayReset() ] mixer_names = { @@ -406,31 +408,45 @@ "all" : _preferences.get_all_mixers(), } + # Make these available to the translation system + if False: + _("music volume") + _("sound volume") + _("voice volume") + _("mute music") + _("mute sound") + _("mute voice") + _("mute all") + n = name.split() if n[-1] == "volume": if len(n) == 3 and n[0] == "mixer": + alt = n[1] + " volume" mixer = n[1] elif len(n) == 2: + alt = n[0] + " volume" mixer = mixer_names.get(n[0], n[0]) if value is None: - return MixerValue(mixer) + return MixerValue(mixer), alt else: - return SetMixer(mixer, value) + return SetMixer(mixer, value), __(alt) + " [text]" if n[-1] == "mute": if len(n) == 3 and n[0] == "mixer": + alt = "mute " + n[1] mixer = n[1] elif len(n) == 2: + alt = "mute " + n[0] mixer = mixer_names.get(n[0], n[0]) if value == "enable": - return SetMute(mixer, True) + return SetMute(mixer, True), __(alt) + " [text]" elif value == "disable": - return SetMute(mixer, False) + return SetMute(mixer, False), __(alt) + " [text]" elif value == "toggle": - return ToggleMute(mixer) + return ToggleMute(mixer), alt else: raise Exception("Preference(%r, %r) is unknown." % (name , value)) @@ -438,7 +454,16 @@ rv = get() if rv is not None: - rv.alt = name + " [text]" + + if isinstance(rv, tuple): + rv, alt = rv + else: + alt = None + + if alt is not None: + rv.alt = __(alt) + else: + rv.alt = __(name) + " [text]" return rv diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00start.rpy renpy-6.99.14.3+dfsg/renpy/common/00start.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00start.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00start.rpy 2018-03-25 14:42:03.000000000 +0000 @@ -196,6 +196,10 @@ renpy.block_rollback() call _gl_test + + python hide: + renpy.warp.warp() + call _load_reload_game from _call__load_reload_game_1 python hide: diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00updater.rpy renpy-6.99.14.3+dfsg/renpy/common/00updater.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00updater.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00updater.rpy 2018-02-22 06:03:19.000000000 +0000 @@ -654,7 +654,12 @@ rv = os.path.join(self.app, "/".join(path[1:])) return rv - return os.path.join(self.base, name) + rv = os.path.join(self.base, name) + + if renpy.windows: + rv = "\\\\?\\" + rv.replace("/", "\\") + + return rv def load_state(self): """ diff -Nru renpy-6.99.14.1+dfsg/renpy/common/00voice.rpy renpy-6.99.14.3+dfsg/renpy/common/00voice.rpy --- renpy-6.99.14.1+dfsg/renpy/common/00voice.rpy 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/00voice.rpy 2018-03-15 04:23:25.000000000 +0000 @@ -305,9 +305,14 @@ self.tag = _voice.tag if not self.filename and config.auto_voice: - tlid = renpy.game.context().translate_identifier - if tlid is not None: + for tlid in [ + renpy.game.context().translate_identifier, + renpy.game.context().alternate_translate_identifier, + ]: + + if tlid is None: + continue if isinstance(config.auto_voice, (str, unicode)): fn = config.auto_voice.format(id=tlid) @@ -323,6 +328,8 @@ else: self.filename = fn + break + self.tlid = tlid if self.filename: diff -Nru renpy-6.99.14.1+dfsg/renpy/common/_developer/developer.rpym renpy-6.99.14.3+dfsg/renpy/common/_developer/developer.rpym --- renpy-6.99.14.1+dfsg/renpy/common/_developer/developer.rpym 2018-01-25 04:43:09.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/common/_developer/developer.rpym 2018-03-08 01:36:40.000000000 +0000 @@ -518,7 +518,10 @@ python hide: import os - f = file("files.txt", "w") + + FILES_TXT = os.path.join(renpy.config.basedir, "files.txt") + + f = file(FILES_TXT, "w") for dirname, dirs, files in os.walk(config.gamedir): @@ -533,7 +536,7 @@ f.close() - renpy.launch_editor(["files.txt"], transient=1) + renpy.launch_editor([ FILES_TXT ], transient=1) return diff -Nru renpy-6.99.14.1+dfsg/renpy/config.py renpy-6.99.14.3+dfsg/renpy/config.py --- renpy-6.99.14.1+dfsg/renpy/config.py 2018-01-26 00:40:25.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/config.py 2018-03-25 18:19:33.000000000 +0000 @@ -873,6 +873,12 @@ # Should we predict everything in a ConditionSwitch? conditionswitch_predict_all = False +# Transform events to deliver each time one happens. +repeat_transform_events = [ "show", "replace", "update" ] + +# How many statements should we warp through? +warp_limit = 1000 + del os del collections diff -Nru renpy-6.99.14.1+dfsg/renpy/defaultstore.py renpy-6.99.14.3+dfsg/renpy/defaultstore.py --- renpy-6.99.14.1+dfsg/renpy/defaultstore.py 2018-02-01 05:34:33.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/defaultstore.py 2018-03-09 04:12:31.000000000 +0000 @@ -421,6 +421,7 @@ # Used to store the side image attributes. _side_image_attributes = None +_side_image_attributes_reset = False # True if we're in the main_menu, False otherwise. This controls autosave, # among other things. diff -Nru renpy-6.99.14.1+dfsg/renpy/display/behavior.py renpy-6.99.14.3+dfsg/renpy/display/behavior.py --- renpy-6.99.14.1+dfsg/renpy/display/behavior.py 2018-01-23 06:22:13.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/display/behavior.py 2018-04-03 00:15:22.000000000 +0000 @@ -21,6 +21,7 @@ # This contains various Displayables that handle events. +from __future__ import print_function import renpy.display import renpy.audio @@ -88,31 +89,41 @@ while part[0] in MODIFIERS: modifiers.add(part.pop(0)) + key = "_".join(part) + if "repeat" in modifiers: rv += " and (ev.repeat)" else: rv += " and (not ev.repeat)" - if "alt" in modifiers: - rv += " and (ev.mod & %d)" % pygame.KMOD_ALT - else: - rv += " and not (ev.mod & %d)" % pygame.KMOD_ALT + if key not in [ "K_LALT", "K_RALT" ]: - if "meta" in modifiers: - rv += " and (ev.mod & %d)" % pygame.KMOD_META - else: - rv += " and not (ev.mod & %d)" % pygame.KMOD_META + if "alt" in modifiers: + rv += " and (ev.mod & %d)" % pygame.KMOD_ALT + else: + rv += " and not (ev.mod & %d)" % pygame.KMOD_ALT - if "ctrl" in modifiers: - rv += " and (ev.mod & %d)" % pygame.KMOD_CTRL - else: - rv += " and not (ev.mod & %d)" % pygame.KMOD_CTRL + if key not in [ "K_LGUI", "K_RGUI" ]: + + if "meta" in modifiers: + rv += " and (ev.mod & %d)" % pygame.KMOD_META + else: + rv += " and not (ev.mod & %d)" % pygame.KMOD_META - if "shift" in modifiers: - rv += " and (ev.mod & %d)" % pygame.KMOD_SHIFT + if key not in [ "K_LCTRL", "K_RCTRL" ]: - if "noshift" in modifiers: - rv += " and not (ev.mod & %d)" % pygame.KMOD_SHIFT + if "ctrl" in modifiers: + rv += " and (ev.mod & %d)" % pygame.KMOD_CTRL + else: + rv += " and not (ev.mod & %d)" % pygame.KMOD_CTRL + + if key not in [ "K_LSHIFT", "K_RSHIFT" ]: + + if "shift" in modifiers: + rv += " and (ev.mod & %d)" % pygame.KMOD_SHIFT + + if "noshift" in modifiers: + rv += " and not (ev.mod & %d)" % pygame.KMOD_SHIFT if len(part) == 1: if len(part[0]) != 1: @@ -130,8 +141,6 @@ else: return "(False)" - key = "_".join(part) - rv += " and ev.key == %d)" % (getattr(pygame.constants, key)) return rv @@ -909,7 +918,12 @@ return "" def _tts_all(self): - return self._tts_common(alt(self.action)) + rv = self._tts_common(alt(self.action)) + + if self.is_selected(): + rv += " " + renpy.minstore.__("selected") + + return rv # Reimplementation of the TextButton widget as a Button and a Text # widget. @@ -1221,7 +1235,7 @@ if not self.editable: return None - if pygame.key.get_mods() & pygame.KMOD_LALT: + if (ev.type == pygame.KEYDOWN) and (pygame.key.get_mods() & pygame.KMOD_LALT) and (not ev.unicode): return None l = len(self.content) @@ -1766,7 +1780,7 @@ ignore_event = False if not grabbed and map_event(ev, "bar_activate"): - renpy.display.tts.speak("activate") + renpy.display.tts.speak(renpy.minstore.__("activate")) renpy.display.focus.set_grab(self) self.set_style_prefix("selected_hover_", True) just_grabbed = True @@ -1783,12 +1797,12 @@ decrease = "bar_left" if map_event(ev, decrease): - renpy.display.tts.speak("decrease") + renpy.display.tts.speak(renpy.minstore.__("decrease")) value -= self.adjustment.step ignore_event = True if map_event(ev, increase): - renpy.display.tts.speak("increase") + renpy.display.tts.speak(renpy.minstore.__("increase")) value += self.adjustment.step ignore_event = True @@ -1819,16 +1833,18 @@ value = int(value) if value < 0: + renpy.display.tts.speak("") value = 0 if value > range: + renpy.display.tts.speak("") value = range if invert: value = range - value if grabbed and not just_grabbed and map_event(ev, "bar_deactivate"): - renpy.display.tts.speak("deactivate") + renpy.display.tts.speak(renpy.minstore.__("deactivate")) self.set_style_prefix("hover_", True) renpy.display.focus.set_grab(None) ignore_event = True @@ -1855,9 +1871,9 @@ if self.value is not None: alt = self.value.alt else: - alt = "Bar" + alt = "" - return self._tts_common(alt) + return self._tts_common(alt) + renpy.minstore.__("bar") class Conditional(renpy.display.layout.Container): diff -Nru renpy-6.99.14.1+dfsg/renpy/display/core.py renpy-6.99.14.3+dfsg/renpy/display/core.py --- renpy-6.99.14.1+dfsg/renpy/display/core.py 2018-01-26 01:49:30.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/display/core.py 2018-03-25 18:31:05.000000000 +0000 @@ -1864,6 +1864,9 @@ if self.safe_mode: renderer = "sw" + if (renderer == "angle") and (not renpy.windows): + renderer = "auto" + renpy.config.renderer = renderer if renderer == "auto": @@ -2220,6 +2223,10 @@ scene_lists.replace_transient() scene_lists.shown_window = False + if renpy.store._side_image_attributes_reset: + renpy.store._side_image_attributes = None + renpy.store._side_image_attributes_reset = False + def set_transition(self, transition, layer=None, force=False): """ Sets the transition that will be performed as part of the next @@ -2383,9 +2390,13 @@ anim = renpy.config.mouse[getattr(renpy.store, 'default_mouse', 'default')] img, x, y = anim[self.ticks % len(anim)] - tex = renpy.display.im.load_image(img) + rend = renpy.display.im.load_image(img) - return False, x, y, tex + tex = rend.children[0][0] + xo = rend.children[0][1] + yo = rend.children[0][2] + + return False, x - xo, y - yo, tex def set_mouse_pos(self, x, y, duration): """ @@ -2647,6 +2658,10 @@ if renpy.game.log is not None: renpy.game.log.did_interaction = True + if renpy.store._side_image_attributes_reset: + renpy.store._side_image_attributes = None + renpy.store._side_image_attributes_reset = False + def consider_gc(self): """ Considers if we should peform a garbage collection. @@ -2717,7 +2732,12 @@ step += 1 continue - result = self.prediction_coroutine.send(expensive) + try: + result = self.prediction_coroutine.send(expensive) + except ValueError: + # Saw this happen once during a quit, giving a + # ValueError: generator already executing + result = None if result is None: self.prediction_coroutine = None diff -Nru renpy-6.99.14.1+dfsg/renpy/display/image.py renpy-6.99.14.3+dfsg/renpy/display/image.py --- renpy-6.99.14.1+dfsg/renpy/display/image.py 2018-01-24 04:33:49.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/display/image.py 2018-03-15 05:21:24.000000000 +0000 @@ -853,7 +853,21 @@ return None if len(matches) == 1: - return matches[0] + + rv = matches[0] + + d = images.get(rv, None) + ca = getattr(d, "_choose_attributes", None) + + if ca is not None: + + required = set() + optional = set(i for i in optional if i not in rv) + tag = " ".join(rv) + + rv = rv + ca(tag, required, optional) + + return rv if exception_name: raise Exception("Showing '" + " ".join(exception_name) + "' is ambiguous, possible images include: " + ", ".join(" ".join(i) for i in matches)) diff -Nru renpy-6.99.14.1+dfsg/renpy/display/im.py renpy-6.99.14.3+dfsg/renpy/display/im.py --- renpy-6.99.14.1+dfsg/renpy/display/im.py 2018-01-25 04:42:55.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/display/im.py 2018-04-04 01:04:53.000000000 +0000 @@ -704,7 +704,7 @@ class Composite(ImageBase): """ - :doc: im_im + :undocumented: This image manipulator composites multiple images together to form a single image. @@ -774,7 +774,7 @@ class Scale(ImageBase): """ - :doc: im_im + :undocumented: An image manipulator that scales `im` (an image manipulator) to `width` and `height`. @@ -1715,10 +1715,10 @@ """ :doc: udd_utility - Loads the image manipulator `im` using the image cache, and returns a texture. + Loads the image manipulator `im` using the image cache, and returns a render. """ - return cache.get(image(im), texture=True) + return cache.get(image(im), render=True) def load_surface(im): diff -Nru renpy-6.99.14.1+dfsg/renpy/display/layout.py renpy-6.99.14.3+dfsg/renpy/display/layout.py --- renpy-6.99.14.1+dfsg/renpy/display/layout.py 2018-02-01 04:19:06.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/display/layout.py 2018-04-04 02:50:49.000000000 +0000 @@ -259,8 +259,9 @@ return False -def LiveComposite(size, *args, **properties): +def Composite(size, *args, **properties): """ + :name: Composite :doc: disp_imagelike This creates a new displayable of `size`, by compositing other @@ -276,7 +277,7 @@ :: - image eileen composite = LiveComposite( + image eileen composite = Composite( (300, 600), (0, 0), "body.png", (0, 0), "clothes.png", @@ -299,8 +300,13 @@ return rv +LiveComposite = Composite + + class Position(Container): """ + :undocumented: + Controls the placement of a displayable on the screen, using supplied position properties. This is the non-curried form of Position, which should be used when the user has directly created @@ -1263,8 +1269,8 @@ for i in child: renpy.display.predict.displayable(i) - else: - renpy.display.predict.displayable(child) + else: + renpy.display.predict.displayable(child) except: pass @@ -1450,19 +1456,23 @@ return None -def LiveCrop(rect, child, **properties): +def Crop(rect, child, **properties): """ :doc: disp_imagelike + :name: Crop This created a displayable by cropping `child` to `rect`, where `rect` is an (x, y, width, height) tuple. :: - image eileen cropped = LiveCrop((0, 0, 300, 300), "eileen happy") + image eileen cropped = Crop((0, 0, 300, 300), "eileen happy") """ return renpy.display.motion.Transform(child, crop=rect, **properties) +LiveCrop = Crop + + class Side(Container): possible_positions = set([ 'tl', 't', 'tr', 'r', 'br', 'b', 'bl', 'l', 'c']) @@ -1739,15 +1749,16 @@ return self.child.get_placement() -class LiveTile(Container): +class Tile(Container): """ :doc: disp_imagelike + :name: Tile Tiles `child` until it fills the area allocated to this displayable. :: - image bg tile = LiveTile("bg.png") + image bg tile = Tile("bg.png") """ @@ -1783,6 +1794,9 @@ return rv +LiveTile = Tile + + class Flatten(Container): """ :doc: disp_imagelike @@ -1833,11 +1847,7 @@ opaque where `child` and `mask` are both opaque. The `child` and `mask` parameters may be arbitrary displayables. The - size of the AlphaMask is the size of the overlap between `child` and - `mask`. - - Note that this takes different arguments from :func:`im.AlphaMask`, - which uses the mask's color channel. + size of the AlphaMask is the size of `child`. """ def __init__(self, child, mask, **properties): @@ -1846,24 +1856,19 @@ self.add(child) self.mask = renpy.easy.displayable(mask) self.null = None - self.size = None def render(self, width, height, st, at): cr = renpy.display.render.render(self.child, width, height, st, at) - mr = renpy.display.render.render(self.mask, width, height, st, at) - - cw, ch = cr.get_size() - mw, mh = mr.get_size() + w, h = cr.get_size() - w = min(cw, mw) - h = min(ch, mh) - size = (w, h) + mr = renpy.display.render.Render(w, h) + mr.place(self.mask, main=False) - if self.size != size: - self.null = Null(w, h) + if self.null is None: + self.null = Fixed() - nr = renpy.display.render.render(self.null, width, height, st, at) + nr = renpy.display.render.render(self.null, w, h, st, at) rv = renpy.display.render.Render(w, h, opaque=False) diff -Nru renpy-6.99.14.1+dfsg/renpy/display/screen.py renpy-6.99.14.3+dfsg/renpy/display/screen.py --- renpy-6.99.14.1+dfsg/renpy/display/screen.py 2018-01-28 23:40:37.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/display/screen.py 2018-03-27 01:42:50.000000000 +0000 @@ -285,7 +285,20 @@ class is responsible for managing the display of a screen. """ - nosave = [ 'screen', 'child', 'children', 'transforms', 'widgets', 'old_widgets', 'hidden_widgets', 'old_transforms', 'cache', 'profile', 'phase', 'use_cache' ] + nosave = [ + 'screen', + 'child', + 'children', + 'transforms', + 'widgets', + 'old_widgets', + 'hidden_widgets', + 'old_transforms', + 'cache', + 'miss_cache', + 'profile', + 'phase', + 'use_cache' ] restarting = False hiding = False @@ -302,6 +315,7 @@ self.cache = { } self.phase = UPDATE self.use_cache = { } + self.miss_cache = { } self.profile = profile.get(self.screen_name, None) @@ -362,6 +376,11 @@ else: self.use_cache = { } + # A version of the cache that's used when we have a screen that is + # being displayed with the same tag with a cached copy of the screen + # we want to display. + self.miss_cache = { } + # What widgets and transforms were the last time this screen was # updated. Used to communicate with the ui module, and only # valid during an update - not used at other times. @@ -604,6 +623,9 @@ self.old_transforms = None self.old_transfers = True + if self.miss_cache: + self.miss_cache.clear() + # Deal with the case where the screen version changes. if (self.cache.get(NAME, None) is not old_cache) and (self.current_transform_event is None) and (self.phase == UPDATE): self.current_transform_event = "update" @@ -1057,6 +1079,7 @@ if old_d and old_d.cache: d.cache = old_d.cache + d.miss_cache = cache_get(screen, _args, kwargs) d.phase = UPDATE else: d.cache = cache_get(screen, _args, kwargs) diff -Nru renpy-6.99.14.1+dfsg/renpy/display/swdraw.py renpy-6.99.14.3+dfsg/renpy/display/swdraw.py --- renpy-6.99.14.1+dfsg/renpy/display/swdraw.py 2018-01-26 00:43:47.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/display/swdraw.py 2018-03-16 01:27:43.000000000 +0000 @@ -1046,6 +1046,9 @@ cx = int(cx) cy = int(cy) + if cx < 0 or cy < 0: + return False + cw, ch = child.get_size() if cx >= cw or cy >= ch: return False diff -Nru renpy-6.99.14.1+dfsg/renpy/display/video.py renpy-6.99.14.3+dfsg/renpy/display/video.py --- renpy-6.99.14.1+dfsg/renpy/display/video.py 2018-01-25 06:52:33.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/display/video.py 2018-03-06 03:38:22.000000000 +0000 @@ -186,6 +186,14 @@ return rv +def default_play_callback(old, new): # @UnusedVariable + + renpy.audio.music.play(new._play, channel=new.channel, loop=True, synchro_start=True) + + if new.mask: + renpy.audio.music.play(new.mask, channel=new.mask_channel, loop=True, synchro_start=True) + + class Movie(renpy.display.core.Displayable): """ :doc: movie @@ -232,6 +240,33 @@ sprites.) Users can also choose to fall back to this image as a preference if video is too taxing for their system. + ``play_callback`` + If not None, a function that's used to start the movies playing. + (This may do things like queue a transition between sprites, if + desired.) It's called with the following arguments: + + `old` + The old Movie object, or None if the movie is not playing. + `new` + The new Movie object. + + A movie object has the `play` parameter available as ``_play``, + while the ``channel``, ``mask``, and ``mask_channel`` fields + correspond to the given parameters. + + Generally, this will want to use :func:`renpy.music.play` to start + the movie playing on the given channel, with synchro_start=True. + A minimal implementation is:: + + def play_callback(old, new): + + renpy.music.play(new._play, channel=new.channel, loop=True, synchro_start=True) + + if new.mask: + renpy.music.play(new.mask, channel=new.mask_channel, loop=True, synchro_start=True) + + + This displayable will be transparent when the movie is not playing. """ @@ -244,6 +279,8 @@ image = None + play_callback = None + def ensure_channel(self, name): if name is None: @@ -254,7 +291,7 @@ renpy.audio.music.register_channel(name, renpy.config.movie_mixer, loop=True, stop_on_mute=False, movie=True) - def __init__(self, fps=24, size=None, channel="movie", play=None, mask=None, mask_channel=None, image=None, **properties): + def __init__(self, fps=24, size=None, channel="movie", play=None, mask=None, mask_channel=None, image=None, play_callback=None, **properties): super(Movie, self).__init__(**properties) global auto_channel_serial @@ -280,6 +317,8 @@ self.image = renpy.easy.displayable_or_none(image) + self.play_callback = play_callback + if (self.channel == "movie") and (renpy.config.hw_video) and renpy.mobile: raise Exception("Movie(channel='movie') doesn't work on mobile when config.hw_video is true. (Use a different channel argument.)") @@ -342,10 +381,11 @@ if self._play != old_play: if self._play: - renpy.audio.music.play(self._play, channel=self.channel, loop=True, synchro_start=True) - if self.mask: - renpy.audio.music.play(self.mask, channel=self.mask_channel, loop=True, synchro_start=True) + if self.play_callback is not None: + self.play_callback(old, self) + else: + default_play_callback(old, self) else: renpy.audio.music.stop(channel=self.channel) diff -Nru renpy-6.99.14.1+dfsg/renpy/dump.py renpy-6.99.14.3+dfsg/renpy/dump.py --- renpy-6.99.14.1+dfsg/renpy/dump.py 2018-01-07 23:47:17.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/dump.py 2018-02-24 19:35:19.000000000 +0000 @@ -242,7 +242,14 @@ pass if args.json_dump != "-": - with file(args.json_dump, "w") as f: + new = args.json_dump + ".new" + + with file(new, "w") as f: json.dump(result, f) + + if os.path.exists(args.json_dump): + os.unlink(args.json_dump) + + os.rename(new, args.json_dump) else: json.dump(result, sys.stdout, indent=2) diff -Nru renpy-6.99.14.1+dfsg/renpy/editor.py renpy-6.99.14.3+dfsg/renpy/editor.py --- renpy-6.99.14.1+dfsg/renpy/editor.py 2018-01-07 23:47:17.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/editor.py 2018-02-08 23:22:59.000000000 +0000 @@ -66,7 +66,7 @@ def open(self, filename, line=None, **kwargs): # @ReservedAssignment """ - Ensures `path` is open in the editor. This may be called multiple + Ensures `filename` is open in the editor. This may be called multiple times per transaction. `line` @@ -77,6 +77,14 @@ should be given focus in a tabbed editor environment. """ + # This should be set to True if the editor supports projects. + has_projects = False + + def open_project(self, directory): + """ + Opens `directory` as a project in the editor. + """ + class SystemEditor(Editor): diff -Nru renpy-6.99.14.1+dfsg/renpy/execution.py renpy-6.99.14.3+dfsg/renpy/execution.py --- renpy-6.99.14.1+dfsg/renpy/execution.py 2018-01-18 02:20:48.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/execution.py 2018-03-29 18:12:39.000000000 +0000 @@ -130,7 +130,7 @@ does participates in rollback. """ - __version__ = 15 + __version__ = 16 nosave = [ 'next_node' ] @@ -188,6 +188,9 @@ if version < 15: self.abnormal_stack = [ False ] * len(self.return_stack) + if version < 16: + self.alternate_translate_identifier = None + def __init__(self, rollback, context=None, clear=False): """ `clear` @@ -293,6 +296,9 @@ # The identifier of the current translate block. self.translate_identifier = None + # The alternate identifier of the current translate block. + self.alternate_translate_identifier = None + # The language of the current translate block. self.translate_block_language = None @@ -437,6 +443,9 @@ developer = renpy.config.developer tracing = sys.gettrace() is not None + # Is this the first time through the loop? + first = True + while node: this_node = node @@ -455,7 +464,7 @@ if ll_entry not in self.line_log: self.line_log.append(ll_entry) - if self.force_checkpoint or (node.rollback == "force"): + if first or self.force_checkpoint or (node.rollback == "force"): update_rollback = True force_rollback = True elif not renpy.config.all_nodes_rollback and (node.rollback == "never"): @@ -465,12 +474,14 @@ update_rollback = True force_rollback = False + first = False + if update_rollback: if self.rollback and renpy.game.log: renpy.game.log.begin(force=force_rollback) - if self.force_checkpoint: + if self.rollback and self.force_checkpoint: renpy.game.log.checkpoint(hard=False) self.force_checkpoint = False diff -Nru renpy-6.99.14.1+dfsg/renpy/exports.py renpy-6.99.14.3+dfsg/renpy/exports.py --- renpy-6.99.14.1+dfsg/renpy/exports.py 2018-01-24 00:46:29.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/exports.py 2018-03-25 02:24:29.000000000 +0000 @@ -232,6 +232,9 @@ Returns true if we can rollback. """ + if not renpy.config.rollback_enabled: + return False + return renpy.game.log.can_rollback() @@ -491,7 +494,7 @@ :doc: image_func Return a tuple giving the image attributes for the image with `tag`. If - the image is now showing, returns None. + the image is not showing, returns None. `layer` The layer to check. If None, uses the default layer for `tag`. @@ -947,6 +950,7 @@ **kwargs): """ :doc: se_menu + :name: renpy.display_menu :args: (items, interact=True, screen="choice") This displays a menu to the user. `items` should be a list of 2-item tuples. @@ -2647,6 +2651,11 @@ renpy.exports.mode('screen') + with_none = renpy.config.implicit_with_none + + if "_with_none" in kwargs: + with_none = kwargs.pop("_with_none") + show_screen(_screen_name, _transient=True, *args, **kwargs) roll_forward = renpy.exports.roll_forward_info() @@ -2658,11 +2667,6 @@ renpy.exports.checkpoint(rv) - with_none = renpy.config.implicit_with_none - - if "_with_none" in kwargs: - with_none = kwargs.pop("_with_none") - if with_none: renpy.game.interface.do_with(None, None) @@ -3509,3 +3513,19 @@ else: old_battery = False return False + + +def get_say_image_tag(): + """ + :doc: image_func + + Returns the tag corresponding to the currently speaking character (the + `image` argument given to that character). Returns None if no character + is speaking or the current speaking character does not have a corresponding + image tag. + """ + + if renpy.store._side_image_attributes is None: + return None + + return renpy.store._side_image_attributes[0] diff -Nru renpy-6.99.14.1+dfsg/renpy/__init__.py renpy-6.99.14.3+dfsg/renpy/__init__.py --- renpy-6.99.14.1+dfsg/renpy/__init__.py 2018-02-04 17:49:07.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/__init__.py 2018-03-29 00:11:13.000000000 +0000 @@ -41,7 +41,7 @@ vc_version = 0 # The tuple giving the version number. -version_tuple = (6, 99, 14, 1, vc_version) +version_tuple = (6, 99, 14, 3, vc_version) # The name of this version. version_name = "A funny thing happened." diff -Nru renpy-6.99.14.1+dfsg/renpy/main.py renpy-6.99.14.3+dfsg/renpy/main.py --- renpy-6.99.14.1+dfsg/renpy/main.py 2018-01-24 00:11:20.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/main.py 2018-03-25 14:39:23.000000000 +0000 @@ -122,16 +122,6 @@ game.context().goto_label(start_label) - # Perhaps warp. - warp_label = renpy.warp.warp() - - if warp_label is not None: - - game.context().goto_label(warp_label) - game.context().call('_after_warp') - - renpy.config.skipping = None - try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") @@ -391,6 +381,10 @@ game.persistent = renpy.persistent.init() game.preferences = game.persistent._preferences + for i in renpy.game.persistent._seen_translates: # @UndefinedVariable + if i in renpy.game.script.translator.default_translates: + renpy.game.seen_translates_count += 1 + if game.persistent._virtual_size: renpy.config.screen_width, renpy.config.screen_height = game.persistent._virtual_size @@ -450,10 +444,6 @@ game.persistent._virtual_size = renpy.config.screen_width, renpy.config.screen_height - for i in renpy.game.persistent._seen_translates: # @UndefinedVariable - if i in renpy.game.script.translator.default_translates: - renpy.game.seen_translates_count += 1 - log_clock("Running init code") renpy.pyanalysis.load_cache() diff -Nru renpy-6.99.14.1+dfsg/renpy/persistent.py renpy-6.99.14.3+dfsg/renpy/persistent.py --- renpy-6.99.14.1+dfsg/renpy/persistent.py 2018-01-07 23:47:17.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/persistent.py 2018-03-03 17:19:28.000000000 +0000 @@ -490,7 +490,7 @@ break try: - rv = loads(file(fn).read()) + rv = loads(file(fn, "rb").read()) except: rv = _MultiPersistent() diff -Nru renpy-6.99.14.1+dfsg/renpy/python.py renpy-6.99.14.3+dfsg/renpy/python.py --- renpy-6.99.14.1+dfsg/renpy/python.py 2018-01-16 06:42:14.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/python.py 2018-03-29 18:27:40.000000000 +0000 @@ -86,6 +86,7 @@ from renpy.pydict import DictItems, find_changes EMPTY_DICT = { } +EMPTY_SET = set() class StoreDict(dict): @@ -123,26 +124,48 @@ self.old = DictItems(self) - def get_changes(self): + def get_changes(self, cycle): """ For every key that has changed since begin() was called, returns a dictionary mapping the key to its value when begin was called, or deleted if it did not exist when begin was called. - As a side-effect, updates self.ever_been_changed. + As a side-effect, updates self.ever_been_changed, and returns the + changes to ever_been_changed as well. + + `cycle` + If true, this cycles the old changes to the new changes. If + False, does not. """ new = DictItems(self) rv = find_changes(self.old, new, deleted) - self.old = new + + if cycle: + self.old = new if rv is None: - return EMPTY_DICT + return EMPTY_DICT, EMPTY_SET - for k in rv: - self.ever_been_changed.add(k) + delta_ebc = set() - return rv + if cycle: + + for k in rv: + if k not in self.ever_been_changed: + self.ever_been_changed.add(k) + delta_ebc.add(k) + + return rv, delta_ebc + + +def begin_stores(): + """ + Calls .begin on every store dict. + """ + + for sd in store_dicts.itervalues(): + sd.begin() # A map from the name of a store dict to the corresponding StoreDict object. @@ -472,18 +495,23 @@ wrap_node = WrapNode() -def set_filename(filename, offset, tree): - """Set the filename attribute to filename on every node in tree""" - worklist = [tree] - while worklist: - node = worklist.pop(0) - node.filename = filename - - lineno = getattr(node, 'lineno', None) - if lineno is not None: - node.lineno = lineno + offset +def wrap_hide(tree): + """ + Wraps code inside a python hide or python early hide block inside a + function, so it gets its own scope that works the way Python expects + it to. + """ + + hide = ast.parse("""\ +def _execute_python_hide(): pass; +_execute_python_hide() +""") + + for i in ast.walk(hide): + ast.copy_location(i, hide.body[0]) - worklist.extend(node.getChildNodes()) + hide.body[0].body = tree.body + tree.body = hide.body unicode_re = re.compile(ur'[\u0080-\uffff]') @@ -604,15 +632,23 @@ try: line_offset = lineno - 1 + if mode == "hide": + py_mode = "exec" + else: + py_mode = mode + try: flags = new_compile_flags - tree = compile(source, filename, mode, ast.PyCF_ONLY_AST | flags, 1) + tree = compile(source, filename, py_mode, ast.PyCF_ONLY_AST | flags, 1) except: flags = old_compile_flags - tree = compile(source, filename, mode, ast.PyCF_ONLY_AST | flags, 1) + tree = compile(source, filename, py_mode, ast.PyCF_ONLY_AST | flags, 1) tree = wrap_node.visit(tree) + if mode == "hide": + wrap_hide(tree) + ast.fix_missing_locations(tree) ast.increment_lineno(tree, lineno - 1) @@ -621,7 +657,7 @@ if ast_node: return tree.body - rv = compile(tree, filename, mode, flags, 1) + rv = compile(tree, filename, py_mode, flags, 1) if cache: py_compile_cache[key] = rv @@ -643,6 +679,11 @@ return marshal.dumps(code) +def py_compile_hide_bytecode(source, **kwargs): + code = py_compile(source, 'hide', cache=False, **kwargs) + return marshal.dumps(code) + + def py_compile_eval_bytecode(source, **kwargs): source = source.strip() code = py_compile(source, 'eval', cache=False, **kwargs) @@ -1077,7 +1118,7 @@ execution of this element. """ - __version__ = 4 + __version__ = 5 identifier = None @@ -1095,6 +1136,10 @@ # A map of maps name -> (variable -> value) self.stores = { } + # A map from store name to the changes to ever_been_changed that + # need to be reverted. + self.delta_ebc = { } + # If true, we retain the data in this rollback when a load occurs. self.retain_after_load = False @@ -1130,6 +1175,9 @@ if version < 4: self.hard_checkpoint = self.checkpoint + if version < 5: + self.delta_ebc = { } + def purge_unreachable(self, reachable, wait): """ Adds objects that are reachable from the store of this @@ -1190,7 +1238,7 @@ for name, changes in self.stores.iteritems(): store = store_dicts.get(name, None) if store is None: - return + continue for name, value in changes.iteritems(): if value is deleted: @@ -1199,6 +1247,14 @@ else: store[name] = value + for name, changes in self.delta_ebc.iteritems(): + + store = store_dicts.get(name, None) + if store is None: + continue + + store.ever_been_changed -= changes + rng.pushback(self.random) renpy.game.contexts.pop() @@ -1306,16 +1362,27 @@ # We only begin a checkpoint if the previous statement reached a checkpoint, # or an interaction took place. (Or we're forced.) - if (not force) and (self.current and not self.current.checkpoint) and (not self.did_interaction): + ignore = True + + if force: + ignore = False + elif self.did_interaction: + ignore = False + elif self.current is not None: + if self.current.checkpoint: + ignore = False + elif self.current.retain_after_load: + ignore = False + + if ignore: return self.did_interaction = False if self.current is not None: - self.complete() + self.complete(True) else: - for sd in store_dicts.itervalues(): - sd.begin() + begin_stores() # If the log is too long, prune it. if len(self.log) > renpy.config.rollback_length: @@ -1346,19 +1413,22 @@ self.rolled_forward = False - def complete(self): + def complete(self, begin=False): """ Called after a node is finished executing, before a save begins, or right before a rollback is attempted. This may be called more than once between calls to begin, and should always be called after an update to the store but before a rollback occurs. + + `begin` + Should be true if called from begin(). """ # Update self.current.stores with the changes from each store. # Also updates .ever_been_changed. for name, sd in store_dicts.iteritems(): - self.current.stores[name] = sd.get_changes() + self.current.stores[name], self.current.delta_ebc[name] = sd.get_changes(begin) # Update the list of mutated objects and what we need to do to # restore them. @@ -1498,7 +1568,7 @@ if (self.current.context.current == fwd_name and data == fwd_data and (keep_rollback or self.rolled_forward) - ): + ): self.forward.pop(0) else: self.forward = [ ] @@ -1528,8 +1598,12 @@ when the game is loaded. """ + if renpy.display.predict.predicting: + return + self.retain_after_load_flag = True self.current.retain_after_load = True + renpy.game.context().force_checkpoint = True def fix_rollback(self): if not self.rollback_is_fixed and len(self.log) > 1: @@ -1682,6 +1756,8 @@ renpy.game.contexts.extend(other_contexts) + begin_stores() + # Restart the context or the top context. if replace_context: @@ -1706,7 +1782,7 @@ """ # Purge unreachable objects, so we don't save them. - self.complete() + self.complete(False) roots = self.get_roots() self.purge_unreachable(roots, wait=wait) diff -Nru renpy-6.99.14.1+dfsg/renpy/screenlang.py renpy-6.99.14.3+dfsg/renpy/screenlang.py --- renpy-6.99.14.1+dfsg/renpy/screenlang.py 2018-02-04 10:47:35.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/screenlang.py 2018-02-11 01:40:04.000000000 +0000 @@ -80,9 +80,6 @@ if parser: parser.add(self) -# Used to generate the documentation -all_keyword_names = set() - class Keyword(object): """ @@ -92,11 +89,10 @@ def __init__(self, name): self.name = name - all_keyword_names.add(self.name) - if parser: parser.add(self) + STYLE_PREFIXES = [ '', 'insensitive_', @@ -119,9 +115,6 @@ def __init__(self, name): self.name = name - for j in STYLE_PREFIXES: - all_keyword_names.add(j + self.name) - if parser: parser.add(self) @@ -135,9 +128,6 @@ self.prefix = prefix self.name = name - for j in STYLE_PREFIXES: - all_keyword_names.add(prefix + j + self.name) - if parser: parser.add(self) @@ -922,6 +912,7 @@ def parse(self, l, name): return self.parse_exec("pass", l.number) + PassParser("pass") @@ -940,6 +931,7 @@ return self.parse_exec(code, l.number) + DefaultParser("default") @@ -981,6 +973,7 @@ return self.parse_exec(code, lineno) + UseParser("use") @@ -1044,6 +1037,7 @@ return [ rv ] + IfParser("if") @@ -1118,6 +1112,7 @@ return rv + ForParser("for") @@ -1143,6 +1138,7 @@ return self.parse_exec(python_code, lineno) + PythonParser("$", True) PythonParser("python", False) @@ -1358,6 +1354,7 @@ return screen + screen_parser = ScreenParser() screen_parser.add(all_statements) diff -Nru renpy-6.99.14.1+dfsg/renpy/script.py renpy-6.99.14.3+dfsg/renpy/script.py --- renpy-6.99.14.1+dfsg/renpy/script.py 2018-01-16 06:40:11.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/script.py 2018-03-04 06:00:35.000000000 +0000 @@ -805,6 +805,8 @@ if i.mode == 'exec': code = renpy.python.py_compile_exec_bytecode(i.source, filename=i.location[0], lineno=i.location[1]) + elif i.mode == 'hide': + code = renpy.python.py_compile_hide_bytecode(i.source, filename=i.location[0], lineno=i.location[1]) elif i.mode == 'eval': code = renpy.python.py_compile_eval_bytecode(i.source, filename=i.location[0], lineno=i.location[1]) diff -Nru renpy-6.99.14.1+dfsg/renpy/sl2/slast.py renpy-6.99.14.3+dfsg/renpy/sl2/slast.py --- renpy-6.99.14.1+dfsg/renpy/sl2/slast.py 2018-01-13 17:12:23.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/sl2/slast.py 2018-03-30 03:19:51.000000000 +0000 @@ -105,7 +105,15 @@ # A cache associated with this context. The cache maps from # statement serial to information associated with the statement. - self.cache = { } + self.new_cache = { } + + # The old cache, used to take information from the old version of + # this displayable. + self.old_cache = { } + + # The miss cache, used to take information that isn't present in + # old_cache. + self.miss_cache = { } # The number of times a particular use statement has been called # in the current screen. We use this to generate a unique name for @@ -152,6 +160,10 @@ # to speed things up. self.unlikely = False + # The old and new generations of the use_cache. + self.new_use_cache = { } + self.old_use_cache = { } + def add(self, d, key): self.children.append(d) @@ -652,10 +664,12 @@ screen = renpy.ui.screen - cache = context.cache.get(self.serial, None) + cache = context.old_cache.get(self.serial, None) or context.miss_cache.get(self.serial, None) if not isinstance(cache, SLCache): - context.cache[self.serial] = cache = SLCache() + cache = SLCache() + + context.new_cache[self.serial] = cache copy_on_change = cache.copy_on_change @@ -811,7 +825,7 @@ if self.scope: keywords["scope"] = ctx.scope - if self.replaces and context.updating: + if self.replaces and ctx.updating: keywords['replaces'] = old_main # Pass the context @@ -1394,11 +1408,17 @@ value = [ 0 ] - newcaches = {} - oldcaches = context.cache.get(self.serial, newcaches) + newcaches = { } + + oldcaches = context.old_cache.get(self.serial, newcaches) or { } if not isinstance(oldcaches, dict): - oldcaches = newcaches + oldcaches = { } + + misscaches = context.miss_cache.get(self.serial, newcaches) or { } + + if not isinstance(misscaches, dict): + misscaches = { } ctx = SLContext(context) @@ -1406,13 +1426,17 @@ ctx.scope[variable] = v - cache = oldcaches.get(index, None) + ctx.old_cache = oldcaches.get(index, None) or { } - if not isinstance(cache, dict): - cache = {} + if not isinstance(ctx.old_cache, dict): + ctx.old_cache = {} - newcaches[index] = cache - ctx.cache = cache + ctx.miss_cache = misscaches.get(index, None) or { } + + if not isinstance(ctx.miss_cache, dict): + ctx.miss_cache = {} + + newcaches[index] = ctx.new_cache = { } # Inline of SLBlock.execute. @@ -1426,7 +1450,7 @@ if context.unlikely: break - context.cache[self.serial] = newcaches + context.new_cache[self.serial] = newcaches if ctx.fail: context.fail = True @@ -1636,40 +1660,29 @@ # Figure out the cache to use. - # True if we want to force-mark this as an update. - update = False - - if (not context.predicting) and self.id: + ctx = SLContext(context) + ctx.new_cache = context.new_cache[self.serial] = { } + ctx.miss_cache = context.miss_cache.get(self.serial, None) or { } - # If we have an id, look it up in the current screen's use_cache. + if self.id: - current_screen = renpy.display.screen.current_screen() use_id = (self.target, eval(self.id, context.globals, context.scope)) - cache = current_screen.use_cache.get(use_id, None) - - if cache is not None: - update = True - - else: - - if cache is None: - cache = context.cache.get(self.serial, None) + ctx.old_cache = context.old_use_cache.get(use_id, None) or context.old_cache.get(self.serial, None) or { } - if not isinstance(cache, dict): - cache = { } + if use_id in ctx.old_use_cache: + ctx.updating = True - context.cache[self.serial] = cache - current_screen.use_cache[use_id] = cache + ctx.new_use_cache[use_id] = ctx.new_cache else: - # Otherwise, look up the cache based on the statement's location. + ctx.old_cache = context.old_cache.get(self.serial, None) or { } - cache = context.cache.get(self.serial, None) - - if not isinstance(cache, dict): - context.cache[self.serial] = cache = { } + if not isinstance(ctx.old_cache, dict): + ctx.old_cache = { } + if not isinstance(ctx.miss_cache, dict): + ctx.miss_cache = { } # Evaluate the arguments. try: @@ -1689,12 +1702,8 @@ if ast.parameters is not None: new_scope = ast.parameters.apply(args, kwargs, ignore_errors=context.predicting) - scope = cache.get("scope", None) - - if scope is None: - scope = cache["scope"] = new_scope - else: - scope.update(new_scope) + scope = ctx.old_cache.get("scope", None) or ctx.miss_cache.get("scope", None) or { } + scope.update(new_scope) else: @@ -1707,14 +1716,9 @@ scope["_scope"] = scope # Run the child screen. - ctx = SLContext(context) ctx.scope = scope - ctx.cache = cache ctx.parent = weakref.ref(context) - if update: - ctx.updating = True - ctx.transclude = self.block try: @@ -1753,20 +1757,21 @@ if not context.transclude: return - cache = context.cache.get(self.serial, None) - - if not isinstance(cache, dict): - context.cache[self.serial] = cache = { } - - cache["transclude"] = context.transclude - parent = context.parent if parent is not None: parent = parent() ctx = SLContext(parent) + ctx.new_cache = context.new_cache[self.serial] = { } + ctx.old_cache = context.old_cache.get(self.serial, None) or { } + ctx.miss_cache = context.miss_cache.get(self.serial, None) or { } + + if not isinstance(ctx.old_cache, dict): + ctx.old_cache = { } + if not isinstance(ctx.miss_cache, dict): + ctx.miss_cache = { } - ctx.cache = cache + ctx.new_cache["transclude"] = context.transclude ctx.children = context.children ctx.showif = context.showif @@ -1994,6 +1999,7 @@ debug = True context = SLContext() + context.scope = scope context.globals = renpy.python.store_dicts["store"] context.debug = debug @@ -2002,20 +2008,30 @@ name = scope["_name"] - main_cache = current_screen.cache + def get_cache(d): + rv = d.get(name, None) - cache = main_cache.get(name, None) - if (not isinstance(cache, dict)) or (cache["version"] != self.version): - cache = { "version" : self.version } - main_cache[name] = cache + if (not isinstance(rv, dict)) or (rv.get("version", None) != self.version): + rv = { "version" : self.version } + d[name] = rv - context.cache = cache + return rv + + context.old_cache = get_cache(current_screen.cache) + context.miss_cache = get_cache(current_screen.miss_cache) + context.new_cache = { "version" : self.version } + + context.old_use_cache = current_screen.use_cache + context.new_use_cache = { } self.const_ast.execute(context) for i in context.children: renpy.ui.implicit_add(i) + current_screen.cache[name] = context.new_cache + current_screen.use_cache = context.new_use_cache + class ScreenCache(object): diff -Nru renpy-6.99.14.1+dfsg/renpy/sl2/slparser.py renpy-6.99.14.3+dfsg/renpy/sl2/slparser.py --- renpy-6.99.14.1+dfsg/renpy/sl2/slparser.py 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/sl2/slparser.py 2018-02-11 00:12:41.000000000 +0000 @@ -19,10 +19,11 @@ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +import collections import renpy.sl2 import renpy.sl2.slast as slast -# A list of style prefixes that we know of. +# A tuple of style prefixes that we know of. STYLE_PREFIXES = [ '', 'insensitive_', @@ -61,8 +62,8 @@ parser.add(self) -# Used to generate the documentation -all_keyword_names = set() +# This is a map from (prefix, use_style_prefixes) to a set of property names. +properties = collections.defaultdict(set) class Keyword(object): @@ -73,7 +74,7 @@ def __init__(self, name): self.name = name - all_keyword_names.add(self.name) + properties['', False].add(name) if parser: parser.add(self) @@ -87,8 +88,7 @@ def __init__(self, name): self.name = name - for j in STYLE_PREFIXES: - all_keyword_names.add(j + self.name) + properties['', True].add(self.name) if parser: parser.add(self) @@ -103,8 +103,7 @@ self.prefix = prefix self.name = name - for j in STYLE_PREFIXES: - all_keyword_names.add(prefix + j + self.name) + properties[prefix, True].add(self.name) if parser: parser.add(self) diff -Nru renpy-6.99.14.1+dfsg/renpy/statements.py renpy-6.99.14.3+dfsg/renpy/statements.py --- renpy-6.99.14.1+dfsg/renpy/statements.py 2018-01-07 23:47:17.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/statements.py 2018-03-25 18:07:47.000000000 +0000 @@ -30,7 +30,7 @@ parsers = renpy.parser.ParseTrie() -def register(name, parse=None, lint=None, execute=None, predict=None, next=None, scry=None, block=False, init=False, translatable=False, execute_init=None, label=None): # @ReservedAssignment +def register(name, parse=None, lint=None, execute=None, predict=None, next=None, scry=None, block=False, init=False, translatable=False, execute_init=None, label=None, warp=None): # @ReservedAssignment """ :doc: statement_register :name: renpy.register_statement @@ -85,6 +85,12 @@ statement. If it returns a string, that string is used as the statement label, which can be called and jumped to like any other label. + `warp` + This is a function that is called to determine if this statement + should execute during warping. If the function exists and returns + true, it's run during warp, otherwise the statement is not run + during warp. + `scry` Used internally by Ren'Py. @@ -93,6 +99,7 @@ is not already inside an init block, it's automatically placed inside an init 0 block.) This calls the execute function, in addition to the execute_init function. + """ name = tuple(name.split()) @@ -103,7 +110,8 @@ predict=predict, next=next, scry=scry, - label=label) + label=label, + warp=warp) # The function that is called to create an ast.UserStatement. def parse_user_statement(l, loc): diff -Nru renpy-6.99.14.1+dfsg/renpy/text/font.py renpy-6.99.14.3+dfsg/renpy/text/font.py --- renpy-6.99.14.1+dfsg/renpy/text/font.py 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/text/font.py 2018-03-05 00:02:41.000000000 +0000 @@ -64,7 +64,7 @@ g = textsupport.Glyph() # @UndefinedVariable g.character = ord(c) - g.ascent = self.height + g.ascent = self.baseline g.line_spacing = self.height width = self.width.get(c, None) @@ -117,7 +117,8 @@ spacewidth, default_kern, kerns, - charset): + charset, + baseline=None): super(SFont, self).__init__() @@ -126,6 +127,7 @@ self.default_kern = default_kern self.kerns = kerns self.charset = charset + self.baseline = baseline def load(self): @@ -140,7 +142,11 @@ sw, sh = surf.get_size() height = sh self.height = height # W0201 - self.baseline = height # W0201 + if self.baseline is None: + self.baseline = height # W0201 + elif self.baseline < 0: + # Negative value is the distance from the bottom (vs top) + self.baseline = height + self.baseline # W0201 # Create space characters. self.chars[u' '] = renpy.display.pgrender.surface((self.spacewidth, height), True) @@ -391,7 +397,7 @@ def register_sfont(name=None, size=None, bold=False, italics=False, underline=False, - filename=None, spacewidth=10, default_kern=0, kerns={}, + filename=None, spacewidth=10, baseline=None, default_kern=0, kerns={}, charset=u"!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"): """ :doc: image_fonts @@ -423,6 +429,13 @@ `spacewidth` The width of a space character, an integer in pixels. + `baseline` + The distance from the top of the font to the baseline (the invisible + line letters sit on), an integer in pixels. If this font is mixed with + other fonts, their baselines will be aligned. Negative values indicate + distance from the bottom of the font instead, and ``None`` means the + baseline equals the height (i.e., is at the very bottom of the font). + `default_kern` The default kern spacing between characters, in pixels. @@ -442,7 +455,7 @@ if name is None or size is None or filename is None: raise Exception("When registering an SFont, the font name, font size, and filename are required.") - sf = SFont(filename, spacewidth, default_kern, kerns, charset) + sf = SFont(filename, spacewidth, default_kern, kerns, charset, baseline) image_fonts[(name, size, bold, italics)] = sf diff -Nru renpy-6.99.14.1+dfsg/renpy/translation/generation.py renpy-6.99.14.3+dfsg/renpy/translation/generation.py --- renpy-6.99.14.1+dfsg/renpy/translation/generation.py 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/translation/generation.py 2018-03-15 02:26:11.000000000 +0000 @@ -207,6 +207,10 @@ if (t.identifier, language) in translator.language_translates: continue + if hasattr(t, "alternate"): + if (t.alternate, language) in translator.language_translates: + continue + f = open_tl_file(tl_filename) if label is None: diff -Nru renpy-6.99.14.1+dfsg/renpy/translation/__init__.py renpy-6.99.14.3+dfsg/renpy/translation/__init__.py --- renpy-6.99.14.1+dfsg/renpy/translation/__init__.py 2018-01-07 23:47:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/translation/__init__.py 2018-03-15 02:37:33.000000000 +0000 @@ -170,13 +170,17 @@ self.chain_worklist = unchained - def lookup_translate(self, identifier): + def lookup_translate(self, identifier, alternate=None): identifier = identifier.replace('.', '_') language = renpy.game.preferences.language if language is not None: tl = self.language_translates.get((identifier, language), None) + + if (tl is None) and alternate: + tl = self.language_translates.get((identifier, language), alternate) + else: tl = None @@ -203,6 +207,8 @@ def __init__(self, children): self.label = None + self.alternate = None + self.identifiers = set() self.callback(children) @@ -215,22 +221,12 @@ return False - def create_translate(self, block): - """ - Creates an ast.Translate that wraps `block`. The block may only contain - translatable statements. - """ - - md5 = hashlib.md5() - - for i in block: - code = i.get_code() - md5.update(code.encode("utf-8") + "\r\n") + def unique_identifier(self, label, digest): - if self.label: - base = self.label.replace('.', '_') + "_" + md5.hexdigest()[:8] + if label is None: + base = digest else: - base = md5.hexdigest()[:8] + base = label.replace(".", "_") + "_" + digest i = 0 suffix = "" @@ -245,10 +241,34 @@ i += 1 suffix = "_{0}".format(i) + return identifier + + def create_translate(self, block): + """ + Creates an ast.Translate that wraps `block`. The block may only contain + translatable statements. + """ + + md5 = hashlib.md5() + + for i in block: + code = i.get_code() + md5.update(code.encode("utf-8") + "\r\n") + + digest = md5.hexdigest()[:8] + + identifier = self.unique_identifier(self.label, digest) self.identifiers.add(identifier) + + if self.alternate is not None: + alternate = self.unique_identifier(self.alternate, digest) + self.identifiers.add(alternate) + else: + alternate = None + loc = (block[0].filename, block[0].linenumber) - tl = renpy.ast.Translate(loc, identifier, None, block) + tl = renpy.ast.Translate(loc, identifier, None, block, alternate=alternate) tl.name = block[0].name + ("translate",) ed = renpy.ast.EndTranslate(loc) @@ -269,7 +289,12 @@ if isinstance(i, renpy.ast.Label): if not i.hide: - self.label = i.name + + if i.name.startswith("_"): + self.alternate = i.name + else: + self.label = i.name + self.alternate = None if not isinstance(i, renpy.ast.Translate): i.restructure(self.callback) diff -Nru renpy-6.99.14.1+dfsg/renpy/ui.py renpy-6.99.14.3+dfsg/renpy/ui.py --- renpy-6.99.14.1+dfsg/renpy/ui.py 2018-01-28 23:40:37.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/ui.py 2018-03-22 02:30:06.000000000 +0000 @@ -1108,8 +1108,8 @@ vscrollbar_properties.setdefault("style", "vscrollbar") alt = viewport_properties.get("alt", "viewport") - scrollbar_properties.setdefault("alt", alt + " horizontal scrollbar") - vscrollbar_properties.setdefault("alt", alt + " vertical scrollbar") + scrollbar_properties.setdefault("alt", renpy.minstore.__(alt) + " " + renpy.minstore.__("horizontal scroll")) + vscrollbar_properties.setdefault("alt", renpy.minstore.__(alt) + " " + renpy.minstore.__("vertical scroll")) if scrollbars == "vertical": diff -Nru renpy-6.99.14.1+dfsg/renpy/vc_version.py renpy-6.99.14.3+dfsg/renpy/vc_version.py --- renpy-6.99.14.1+dfsg/renpy/vc_version.py 2018-02-05 00:08:38.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/vc_version.py 2018-04-04 02:57:02.000000000 +0000 @@ -1 +1 @@ -vc_version = 3218 \ No newline at end of file +vc_version = 3347 \ No newline at end of file diff -Nru renpy-6.99.14.1+dfsg/renpy/warp.py renpy-6.99.14.3+dfsg/renpy/warp.py --- renpy-6.99.14.1+dfsg/renpy/warp.py 2018-01-07 23:47:17.000000000 +0000 +++ renpy-6.99.14.3+dfsg/renpy/warp.py 2018-03-25 18:46:52.000000000 +0000 @@ -51,24 +51,48 @@ if not renpy.config.developer: raise Exception("Can't warp, developer mode disabled.") + if not filename.startswith("game/"): + filename = "game/" + filename + # First, compute for each statement reachable from a scene statement, # one statement that reaches that statement. prev = { } - workset = { n for n in renpy.game.script.namemap.itervalues() if isinstance(n, renpy.ast.Scene) } - seenset = set(workset) + seenset = set(renpy.game.script.namemap.values()) # This is called to indicate that next can be executed following node. def add(node, next): # @ReservedAssignment - if next not in seenset: - seenset.add(next) - workset.add(next) + + if next not in prev: prev[next] = node + return + + # Try to figure out which node to use. + + old = prev[next] + + def prefer(fn): + if fn(node, old): + return node + + if fn(old, node): + return old + + return None + + n = None + n = n or prefer(lambda a, b : (a.filename == next.filename) and (b.filename != next.filename)) + n = n or prefer(lambda a, b : (a.linenumber <= next.linenumber) and (b.linenumber > next.linenumber)) + n = n or prefer(lambda a, b : (a.linenumber >= b.linenumber)) + n = n or node + + prev[next] = n - while workset: + for n in seenset: - n = workset.pop() + if isinstance(n, renpy.ast.Translate) and n.language: + continue if isinstance(n, renpy.ast.Menu): for i in n.items: @@ -98,7 +122,6 @@ if isinstance(n, renpy.ast.UserStatement): add(n, n.get_next()) - elif getattr(n, 'next', None) is not None: add(n, n.next) @@ -107,11 +130,12 @@ candidates = [ (n.linenumber, n) for n in seenset - if n.filename.endswith('/' + filename) and n.linenumber <= line ] + if n.filename == filename and n.linenumber <= line + ] # We didn't find any candidate statements, so give up the warp. if not candidates: - return + raise Exception("Could not find a statement to warp to. ({})".format(spec)) # Sort the list of candidates, so they're ordered by linenumber. candidates.sort() @@ -126,22 +150,37 @@ while True: n = prev.get(n, None) if n: + del prev[n] run.append(n) else: break run.reverse() + run = run[-renpy.config.warp_limit:] + + renpy.config.skipping = "fast" + # Determine which statements we want to execute, and then run # only them. - toexecute = ( renpy.ast.Scene, renpy.ast.Show, renpy.ast.Hide ) - for n in run: - if isinstance(n, toexecute): - n.execute() + + if n.can_warp(): + + # Execute, if possible. + try: + n.execute() + except: + pass # Now, return the name of the place where we will warp to. This # becomes the new starting point of the game. - return node.name + renpy.config.skipping = None + renpy.game.after_rollback = True + + renpy.exports.block_rollback() + + renpy.game.context().goto_label(node.name) + raise renpy.game.RestartContext("_after_warp") diff -Nru renpy-6.99.14.1+dfsg/sphinx/game/doc.py renpy-6.99.14.3+dfsg/sphinx/game/doc.py --- renpy-6.99.14.1+dfsg/sphinx/game/doc.py 2018-02-01 05:34:18.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/game/doc.py 2018-02-18 23:10:39.000000000 +0000 @@ -11,47 +11,25 @@ import __builtin__ -# Keywords in the Ren'Py script language. -KEYWORD1 = """\ +# Additional keywords in the Ren'Py script language. +SCRIPT_KEYWORDS = """\ $ as at behind -call expression -hide -if -in -image -init -jump -menu onlayer -python -return -scene -set -show -with -while zorder -transform -play -queue -stop -pause -define -screen -label -voice -translate +strings +take +nointeract +elif +old +new """ -# Words that are sometimes statement keywords, like for ATL -# or Screen language statements. -KEYWORD2 = """\ -nvl -window +# ATL Keywords. +ATL_KEYWORDS = """\ repeat block contains @@ -66,50 +44,141 @@ counterclockwise circles knot -null -text -hbox -vbox -fixed -grid -side -frame -key -timer -input -button -imagebutton -textbutton -bar -vbar -viewport -imagemap -hotspot -hotbar -transform -add -use +""" + +# SL2 Keywords (that aren't statements). +SL2_KEYWORDS = """\ +tag has -style """ +def script_keywords(): + + tries = [ renpy.parser.statements ] + + rv = set() + + while tries: + trie = tries.pop(0) + for k, v in trie.words.items(): + rv.add(k) + tries.append(v) + + rv.remove("layer") + + return rv + + +script_keywords() + + +def sl2_keywords(): + + rv = set() + + for i in renpy.sl2.slparser.all_statements: + rv.add(i.name) + + rv.remove("icon") + rv.remove("iconbutton") + + return rv + + +def sl2_regexps(): + + rv = [ ] + + groups = collections.defaultdict(set) + has_style = { } + + for k, v in renpy.sl2.slparser.properties.items(): + prefix, style = k + + has_style[prefix] = style + + if prefix == "icon_": + continue + + props = tuple(sorted(v)) + + groups[props, style].add(prefix) + + style_part2 = "(?:" + "|".join(sorted(renpy.sl2.slparser.STYLE_PREFIXES)) + ")" + + items = list(groups.items()) + items.sort(key=lambda a : ( tuple(sorted(a[1])), a[0][1] ) ) + + for k, prefixes in items: + names, style = k + + if len(prefixes) > 1: + part1 = "(?:" + "|".join(prefixes) + ")" + else: + part1 = tuple(prefixes)[0] + + if style: + part2 = style_part2 + else: + part2 = "" + + part3 = "(?:" + "|".join(sorted(names)) + ")" + + re = part1 + part2 + part3 + rv.append(re) + + return rv + + +def expanded_sl2_properties(): + + rv = set() + + for k, v in renpy.sl2.slparser.properties.items(): + prefix, style = k + + if prefix == "icon_": + continue + + if style: + style_prefixes = renpy.sl2.slparser.STYLE_PREFIXES + else: + style_prefixes = [ '' ] + + for i in style_prefixes: + for j in v: + rv.add(prefix + i + j) + + rv = list(rv) + rv.sort() + + return rv + + def write_keywords(): f = file("source/keywords.py", "w") - kwlist = list(keyword.kwlist) - kwlist.extend(KEYWORD1.split()) - kwlist.extend(KEYWORD2.split()) + kwlist = set(keyword.kwlist) + kwlist |= script_keywords() + kwlist |= sl2_keywords() + kwlist |= set(ATL_KEYWORDS.split()) + kwlist |= set(SCRIPT_KEYWORDS.split()) + kwlist |= set(SL2_KEYWORDS.split()) + + kwlist = list(kwlist) kwlist.sort() f.write("keywords = %r\n" % kwlist) + f.write("keyword_regex = %r\n" % ("|".join(re.escape(i) for i in kwlist))) - properties = list(i for i in renpy.sl2.slparser.all_keyword_names if i not in kwlist) - properties.sort() + properties = [ i for i in expanded_sl2_properties() if i not in kwlist ] f.write("properties = %r\n" % properties) + f.write("property_regexes = %r\n" % sl2_regexps()) + f.close() shutil.copy("source/keywords.py", "../tutorial/game/keywords.py") diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/changelog.rst renpy-6.99.14.3+dfsg/sphinx/source/changelog.rst --- renpy-6.99.14.1+dfsg/sphinx/source/changelog.rst 2018-02-04 10:47:35.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/changelog.rst 2018-04-04 02:54:32.000000000 +0000 @@ -2,8 +2,147 @@ Full Changelog ============== +.. _renpy-6.99.14.3: + +6.99.14.3 +========= + +Changes +------- + +The :func:`AlphaMask` displayable now places its mask inside the child +displayable, in the same way that AlphaDissolve always has. This allows +the mask to be created using ATL or other transforms. + +Several obsolete image manipulators have been deprecated, and removed from +the documentation. These are image manipulators that have been completely +replaced by :func:`Transform`. + +Several functions have been renamed, to remove a pointless Live prefix. + +* LiveComposite is now :func:`Composite` +* LiveCrop is now :func:`Crop` +* LiveTile is now :func:`Tile` + +The old names have been retained as compatibility alias. + + +Fixes +----- + +This release fixes an issue where children of for statements in screens would +not get their data propagated through screen update cycles. This manifested +in complicated ways, such as transitions repeating and slow text refusing +to work. + +This release displays the newest save slot in the selected color, as +intended. This applies to newly created games, older projects can update +by adding to the bottom of gui.rpy:: + + define gui.slot_button_text_selected_idle_color = gui.selected_color + define gui.slot_button_text_selected_hover_color = gui.hover_color + +A problem introduced in 6.99.14.2 with the the default statement +not working after a rollback has been fixed. This should only ever +have affected games that were updated after a save was first +created. + +.. _renpy-6.99.14.2: + +6.99.14.2 +========= + +Features and Changes +-------------------- + +The Atom text editor is now supported in Ren'Py. When it is selected, Ren'Py +will download Atom, and will create a new profile with the language-renpy, +renpy-dark-syntax, and renpy-light-syntax Atom plugins installed, along with +a few default setting to make Ren'Py programming easier. + +It is now possible to supply a baseline to image-based fonts. + +When a screen in the default gui scrolls, the pageup and pagedown keys will +now work to scroll it. (This only works with newly-created projects.) + +The :func:`Movie` displayable now takes a play_callback argument, which +specifies a function that is called to play a movie. This function can +do things like queue up a transition movie before queuing the usual loop, +making for smooth transitions. + +The new :func:`renpy.get_say_image_tag` function makes it possible to +retrieve the name of the speaking character. + +ATL interpolation can now interpolate from a transform with multiple +lines in it, provided none of the lines takes time to complete. + +Adding the from statement to a call no longer changes the translation +identifier. (Which is also used by the automatic voice code.) Since this +would be a breaking change, Ren'Py also computes the old-style translation +identifier and uses that if it exists. + +The _choose_attributes method is called when only a single displayable can +be located. This supports the AttributeImage beta (https://github.com/renpy/ai). + +The new :var:`gui.button_image_extension` variable allows button images to be +.webps without changing Ren'Py itself. + +Self-Voicing +------------ + +Ren'Py's self-voicing mode, which provides accessibility for blind +users, has been improved: + +* Selected buttons say the word "selected" after them. +* Bars say the world "bar" after them. +* Some actions have had their self-voicing information changed to better + reflect how the action is used in the new GUI. +* Alt text built into Ren'Py can be translated. + +While this can change some of the self-voicing output, the changes +should not affect any translations that already exist. + +Fixes +----- + +An issue where a save or auto-save could rarely cause data corruption +in the non-saved game has been fixed. + +Python hide statements are now run in a python function context, which +makes certain constructs (like generator expressions) compile and run +correctly. + +Global labels now behave as described in the documentation, even when +indented. + +A regression with custom mouse cursors that could cause the mouse to +jump around wildly has been fixed. + +An issue with side images persisting after a menu was shown has been fixed. + +Ren'Py no longer stores the state of displayables that are not being shown +in a screen that has been replaced. (This was an issue when the first screen +is re-show, and the displayables took their old state.) + +The show and replace events are now always delivered to a transform in a +screen. While this behavior was always intended and could occur whenever +a screen was shown, previously caching could prevent some show events +from being delivered. + +Characters that require the alt key can be typed. (The alt key is necessary +to type particular characters in European languages.) + +When the Android build system fails to rename a file or directory, it will +retry for 60 seconds before giving up. This is an attempt to work around +antivirus software breaking Windows semantics. + + .. _renpy-6.99.14.1: + +6.99.14.1 +========= + Image Prediction and Caching ---------------------------- diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/credits.rst renpy-6.99.14.3+dfsg/sphinx/source/credits.rst --- renpy-6.99.14.1+dfsg/sphinx/source/credits.rst 2018-02-04 10:47:35.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/credits.rst 2018-03-27 23:15:50.000000000 +0000 @@ -19,6 +19,7 @@ * Aleema * Alessio * Alexandre Tranchant +* Andyl_kl * Apricotorange * Arowana-vx * Asfdfdfd @@ -52,6 +53,7 @@ * Emmeken * Enerccio * Eniko +* Eevee (Lexy Munroe) * Evilantishad0w * Franck_v * Gas @@ -125,6 +127,7 @@ * Tmrwiz * Viliam Búr * Vollschauer +* William Tumeo * Winter Wolves * Xavi-Mat * Xela diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/displayables.rst renpy-6.99.14.3+dfsg/sphinx/source/displayables.rst --- renpy-6.99.14.1+dfsg/sphinx/source/displayables.rst 2017-04-10 11:38:24.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/displayables.rst 2018-04-04 01:04:53.000000000 +0000 @@ -123,6 +123,16 @@ the game. They do not take any properties, as layout is controlled by the properties of the child displayable they return. +Note that these dynamic displayables always display their current state. +Because of this, a dynamic displayable will not participate in a +transition. (Or more precisely, it will display the same thing in both the +old and new states of the transition.) + +By design, dynamic displayables are intended to be used for things that +change rarely and when an image define this way is off screen (Such as +a character customization system), and not for things that change +frequently, such as character emotions. + .. include:: inc/disp_dynamic @@ -184,27 +194,19 @@ ------------------ An image manipulator is a displayable that takes an image or image -manipulator, performs an operation to it, and stores the result of -that operation in the image cache. Since image manipulators can be -predicted like images, they can perform expensive operations without -incuring a display-time overhead. - -Image manipulators are limited to storing image data to the -cache. This means that their result is of a fixed size, known in -advance, and they can't change in response to game state or -input. Generally, image manipulators can only take images or other +manipulator, and either loads it or performs an operation on it. +Image manipulators can only take images or other image manipulators as input. An image manipulator can be used any place a displayable can, but not vice-versa. An :func:`Image` is a kind of image manipulator, so an Image can be used whenever an image manipulator is required. -Many image manipulators provide the same functionality as other -displayables. Most of these exist so they can be provided as input to -other image manipulators, and so the game-maker can choose between -cache memory usage and work done at render-time. There's also an -element of historical accident here - many of these image manipulators -predate their equivalents. +With the few exceptions listed below, the use of image manipulators is +historic. A number of image manipulators that had been documented in the +past should no longer be used, as they suffer from inherent problems. +In many cases, the :func:`Transform` displayable provides similar +functionality in a more general manner, while fixing the problems. .. include:: inc/im_im diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/gui.rst renpy-6.99.14.3+dfsg/sphinx/source/gui.rst --- renpy-6.99.14.1+dfsg/sphinx/source/gui.rst 2018-02-01 04:06:46.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/gui.rst 2018-03-27 21:57:21.000000000 +0000 @@ -635,6 +635,10 @@ The horizontal alignment of the button text. 0.0 is left-aligned, 0.5 is centered, and 1.0 is right-aligned. +.. var:: gui.button_image_extension = ".png" + + The extension for button images. This could be changed to .webp + to use WEBP button images instead of png ones. These variables can be prefixed with the button kind to configure a property for a particular kind of button. For example, diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/incompatible.rst renpy-6.99.14.3+dfsg/sphinx/source/incompatible.rst --- renpy-6.99.14.1+dfsg/sphinx/source/incompatible.rst 2017-10-18 18:55:54.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/incompatible.rst 2018-03-06 04:32:58.000000000 +0000 @@ -61,7 +61,7 @@ 6.99.11 ------- -The order of exection of ``style`` and ``translate`` statements has +The order of execution of ``style`` and ``translate`` statements has changed, as documented in :ref:`the changelog `. To revent this change, add the code:: @@ -70,8 +70,8 @@ Note that reverting this change may prevent the new GUI from working. -The :var:`config.quit_action` variable has changed it's default to one -that cause the quit prompt to be displayed of the in-game context. To +The :var:`config.quit_action` variable has changed its default to one +that causes the quit prompt to be displayed of the in-game context. To revert to the old behavior, add the code:: define config.quit_action = ui.gamemenus("_quit_prompt") diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/keywords.py renpy-6.99.14.3+dfsg/sphinx/source/keywords.py --- renpy-6.99.14.1+dfsg/sphinx/source/keywords.py 2018-02-05 00:08:40.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/keywords.py 2018-04-04 02:57:03.000000000 +0000 @@ -1,2 +1,4 @@ -keywords = ['$', 'add', 'and', 'animation', 'as', 'as', 'assert', 'at', 'bar', 'behind', 'block', 'break', 'button', 'call', 'choice', 'circles', 'class', 'clockwise', 'contains', 'continue', 'counterclockwise', 'def', 'define', 'del', 'elif', 'else', 'event', 'except', 'exec', 'expression', 'finally', 'fixed', 'for', 'frame', 'from', 'function', 'global', 'grid', 'has', 'hbox', 'hide', 'hotbar', 'hotspot', 'if', 'if', 'image', 'imagebutton', 'imagemap', 'import', 'in', 'in', 'init', 'input', 'is', 'jump', 'key', 'knot', 'label', 'lambda', 'menu', 'not', 'null', 'nvl', 'on', 'onlayer', 'or', 'parallel', 'pass', 'pause', 'play', 'print', 'python', 'queue', 'raise', 'repeat', 'return', 'return', 'scene', 'screen', 'set', 'show', 'side', 'stop', 'style', 'text', 'textbutton', 'time', 'timer', 'transform', 'transform', 'translate', 'try', 'use', 'vbar', 'vbox', 'viewport', 'voice', 'while', 'while', 'window', 'with', 'with', 'yield', 'zorder'] -properties = ['action', 'activate_additive', 'activate_adjust_spacing', 'activate_align', 'activate_alignaround', 'activate_alpha', 'activate_alt', 'activate_anchor', 'activate_angle', 'activate_antialias', 'activate_area', 'activate_around', 'activate_background', 'activate_bar_invert', 'activate_bar_resizing', 'activate_bar_vertical', 'activate_base_bar', 'activate_black_color', 'activate_bold', 'activate_bottom_bar', 'activate_bottom_gutter', 'activate_bottom_margin', 'activate_bottom_padding', 'activate_box_layout', 'activate_box_reverse', 'activate_box_wrap', 'activate_child', 'activate_clipping', 'activate_color', 'activate_corner1', 'activate_corner2', 'activate_crop', 'activate_crop_relative', 'activate_debug', 'activate_delay', 'activate_drop_shadow', 'activate_drop_shadow_color', 'activate_events', 'activate_first_indent', 'activate_first_spacing', 'activate_fit_first', 'activate_focus_mask', 'activate_font', 'activate_foreground', 'activate_hinting', 'activate_hyperlink_functions', 'activate_italic', 'activate_justify', 'activate_kerning', 'activate_key_events', 'activate_keyboard_focus', 'activate_language', 'activate_layout', 'activate_left_bar', 'activate_left_gutter', 'activate_left_margin', 'activate_left_padding', 'activate_line_leading', 'activate_line_spacing', 'activate_margin', 'activate_maximum', 'activate_maxsize', 'activate_min_width', 'activate_minimum', 'activate_minwidth', 'activate_mouse', 'activate_nearest', 'activate_newline_indent', 'activate_offset', 'activate_order_reverse', 'activate_outlines', 'activate_padding', 'activate_pos', 'activate_radius', 'activate_rest_indent', 'activate_right_bar', 'activate_right_gutter', 'activate_right_margin', 'activate_right_padding', 'activate_rotate', 'activate_rotate_pad', 'activate_ruby_style', 'activate_size', 'activate_size_group', 'activate_slow_abortable', 'activate_slow_cps', 'activate_slow_cps_multiplier', 'activate_sound', 'activate_spacing', 'activate_strikethrough', 'activate_subpixel', 'activate_text_align', 'activate_text_y_fudge', 'activate_thumb', 'activate_thumb_offset', 'activate_thumb_shadow', 'activate_tooltip', 'activate_top_bar', 'activate_top_gutter', 'activate_top_margin', 'activate_top_padding', 'activate_transform_anchor', 'activate_underline', 'activate_unscrollable', 'activate_vertical', 'activate_xalign', 'activate_xanchor', 'activate_xanchoraround', 'activate_xaround', 'activate_xcenter', 'activate_xfill', 'activate_xfit', 'activate_xmargin', 'activate_xmaximum', 'activate_xminimum', 'activate_xoffset', 'activate_xpadding', 'activate_xpan', 'activate_xpos', 'activate_xsize', 'activate_xspacing', 'activate_xtile', 'activate_xysize', 'activate_xzoom', 'activate_yalign', 'activate_yanchor', 'activate_yanchoraround', 'activate_yaround', 'activate_ycenter', 'activate_yfill', 'activate_yfit', 'activate_ymargin', 'activate_ymaximum', 'activate_yminimum', 'activate_yoffset', 'activate_ypadding', 'activate_ypan', 'activate_ypos', 'activate_ysize', 'activate_yspacing', 'activate_ytile', 'activate_yzoom', 'activate_zoom', 'additive', 'adjust_spacing', 'adjustment', 'align', 'alignaround', 'allow', 'alpha', 'alt', 'alternate', 'alternate_keysym', 'anchor', 'angle', 'antialias', 'area', 'arguments', 'around', 'arrowkeys', 'auto', 'background', 'bar_invert', 'bar_resizing', 'bar_vertical', 'base_bar', 'black_color', 'bold', 'bottom_bar', 'bottom_gutter', 'bottom_margin', 'bottom_padding', 'box_layout', 'box_reverse', 'box_wrap', 'cache', u'caption', 'changed', 'child', 'child_size', 'clicked', 'clipping', 'color', 'cols', 'corner1', 'corner2', 'crop', 'crop_relative', 'debug', 'default', 'delay', 'drag_handle', 'drag_joined', 'drag_name', 'drag_offscreen', 'drag_raise', 'draggable', 'dragged', 'drop_shadow', 'drop_shadow_color', 'droppable', 'dropped', 'edgescroll', 'events', 'exclude', 'first_indent', 'first_spacing', 'fit_first', 'focus', 'focus_mask', 'font', 'foreground', 'ground', 'height', 'hinting', 'hover', 'hover_additive', 'hover_adjust_spacing', 'hover_align', 'hover_alignaround', 'hover_alpha', 'hover_alt', 'hover_anchor', 'hover_angle', 'hover_antialias', 'hover_area', 'hover_around', 'hover_background', 'hover_bar_invert', 'hover_bar_resizing', 'hover_bar_vertical', 'hover_base_bar', 'hover_black_color', 'hover_bold', 'hover_bottom_bar', 'hover_bottom_gutter', 'hover_bottom_margin', 'hover_bottom_padding', 'hover_box_layout', 'hover_box_reverse', 'hover_box_wrap', 'hover_child', 'hover_clipping', 'hover_color', 'hover_corner1', 'hover_corner2', 'hover_crop', 'hover_crop_relative', 'hover_debug', 'hover_delay', 'hover_drop_shadow', 'hover_drop_shadow_color', 'hover_events', 'hover_first_indent', 'hover_first_spacing', 'hover_fit_first', 'hover_focus_mask', 'hover_font', 'hover_foreground', 'hover_hinting', 'hover_hyperlink_functions', 'hover_italic', 'hover_justify', 'hover_kerning', 'hover_key_events', 'hover_keyboard_focus', 'hover_language', 'hover_layout', 'hover_left_bar', 'hover_left_gutter', 'hover_left_margin', 'hover_left_padding', 'hover_line_leading', 'hover_line_spacing', 'hover_margin', 'hover_maximum', 'hover_maxsize', 'hover_min_width', 'hover_minimum', 'hover_minwidth', 'hover_mouse', 'hover_nearest', 'hover_newline_indent', 'hover_offset', 'hover_order_reverse', 'hover_outlines', 'hover_padding', 'hover_pos', 'hover_radius', 'hover_rest_indent', 'hover_right_bar', 'hover_right_gutter', 'hover_right_margin', 'hover_right_padding', 'hover_rotate', 'hover_rotate_pad', 'hover_ruby_style', 'hover_size', 'hover_size_group', 'hover_slow_abortable', 'hover_slow_cps', 'hover_slow_cps_multiplier', 'hover_sound', 'hover_spacing', 'hover_strikethrough', 'hover_subpixel', 'hover_text_align', 'hover_text_y_fudge', 'hover_thumb', 'hover_thumb_offset', 'hover_thumb_shadow', 'hover_tooltip', 'hover_top_bar', 'hover_top_gutter', 'hover_top_margin', 'hover_top_padding', 'hover_transform_anchor', 'hover_underline', 'hover_unscrollable', 'hover_vertical', 'hover_xalign', 'hover_xanchor', 'hover_xanchoraround', 'hover_xaround', 'hover_xcenter', 'hover_xfill', 'hover_xfit', 'hover_xmargin', 'hover_xmaximum', 'hover_xminimum', 'hover_xoffset', 'hover_xpadding', 'hover_xpan', 'hover_xpos', 'hover_xsize', 'hover_xspacing', 'hover_xtile', 'hover_xysize', 'hover_xzoom', 'hover_yalign', 'hover_yanchor', 'hover_yanchoraround', 'hover_yaround', 'hover_ycenter', 'hover_yfill', 'hover_yfit', 'hover_ymargin', 'hover_ymaximum', 'hover_yminimum', 'hover_yoffset', 'hover_ypadding', 'hover_ypan', 'hover_ypos', 'hover_ysize', 'hover_yspacing', 'hover_ytile', 'hover_yzoom', 'hover_zoom', 'hovered', 'hyperlink_functions', u'icon_activate_align', u'icon_activate_alt', u'icon_activate_anchor', u'icon_activate_area', u'icon_activate_clipping', u'icon_activate_color', u'icon_activate_debug', u'icon_activate_maximum', u'icon_activate_offset', u'icon_activate_pos', u'icon_activate_tooltip', u'icon_activate_xalign', u'icon_activate_xanchor', u'icon_activate_xcenter', u'icon_activate_xfill', u'icon_activate_xmaximum', u'icon_activate_xoffset', u'icon_activate_xpos', u'icon_activate_xsize', u'icon_activate_xysize', u'icon_activate_yalign', u'icon_activate_yanchor', u'icon_activate_ycenter', u'icon_activate_yfill', u'icon_activate_ymaximum', u'icon_activate_yoffset', u'icon_activate_ypos', u'icon_activate_ysize', u'icon_align', u'icon_alt', u'icon_anchor', u'icon_area', u'icon_clipping', u'icon_color', u'icon_debug', u'icon_hover_align', u'icon_hover_alt', u'icon_hover_anchor', u'icon_hover_area', u'icon_hover_clipping', u'icon_hover_color', u'icon_hover_debug', u'icon_hover_maximum', u'icon_hover_offset', u'icon_hover_pos', u'icon_hover_tooltip', u'icon_hover_xalign', u'icon_hover_xanchor', u'icon_hover_xcenter', u'icon_hover_xfill', u'icon_hover_xmaximum', u'icon_hover_xoffset', u'icon_hover_xpos', u'icon_hover_xsize', u'icon_hover_xysize', u'icon_hover_yalign', u'icon_hover_yanchor', u'icon_hover_ycenter', u'icon_hover_yfill', u'icon_hover_ymaximum', u'icon_hover_yoffset', u'icon_hover_ypos', u'icon_hover_ysize', u'icon_idle_align', u'icon_idle_alt', u'icon_idle_anchor', u'icon_idle_area', u'icon_idle_clipping', u'icon_idle_color', u'icon_idle_debug', u'icon_idle_maximum', u'icon_idle_offset', u'icon_idle_pos', u'icon_idle_tooltip', u'icon_idle_xalign', u'icon_idle_xanchor', u'icon_idle_xcenter', u'icon_idle_xfill', u'icon_idle_xmaximum', u'icon_idle_xoffset', u'icon_idle_xpos', u'icon_idle_xsize', u'icon_idle_xysize', u'icon_idle_yalign', u'icon_idle_yanchor', u'icon_idle_ycenter', u'icon_idle_yfill', u'icon_idle_ymaximum', u'icon_idle_yoffset', u'icon_idle_ypos', u'icon_idle_ysize', u'icon_insensitive_align', u'icon_insensitive_alt', u'icon_insensitive_anchor', u'icon_insensitive_area', u'icon_insensitive_clipping', u'icon_insensitive_color', u'icon_insensitive_debug', u'icon_insensitive_maximum', u'icon_insensitive_offset', u'icon_insensitive_pos', u'icon_insensitive_tooltip', u'icon_insensitive_xalign', u'icon_insensitive_xanchor', u'icon_insensitive_xcenter', u'icon_insensitive_xfill', u'icon_insensitive_xmaximum', u'icon_insensitive_xoffset', u'icon_insensitive_xpos', u'icon_insensitive_xsize', u'icon_insensitive_xysize', u'icon_insensitive_yalign', u'icon_insensitive_yanchor', u'icon_insensitive_ycenter', u'icon_insensitive_yfill', u'icon_insensitive_ymaximum', u'icon_insensitive_yoffset', u'icon_insensitive_ypos', u'icon_insensitive_ysize', u'icon_maximum', u'icon_offset', u'icon_pos', u'icon_selected_activate_align', u'icon_selected_activate_alt', u'icon_selected_activate_anchor', u'icon_selected_activate_area', u'icon_selected_activate_clipping', u'icon_selected_activate_color', u'icon_selected_activate_debug', u'icon_selected_activate_maximum', u'icon_selected_activate_offset', u'icon_selected_activate_pos', u'icon_selected_activate_tooltip', u'icon_selected_activate_xalign', u'icon_selected_activate_xanchor', u'icon_selected_activate_xcenter', u'icon_selected_activate_xfill', u'icon_selected_activate_xmaximum', u'icon_selected_activate_xoffset', u'icon_selected_activate_xpos', u'icon_selected_activate_xsize', u'icon_selected_activate_xysize', u'icon_selected_activate_yalign', u'icon_selected_activate_yanchor', u'icon_selected_activate_ycenter', u'icon_selected_activate_yfill', u'icon_selected_activate_ymaximum', u'icon_selected_activate_yoffset', u'icon_selected_activate_ypos', u'icon_selected_activate_ysize', u'icon_selected_align', u'icon_selected_alt', u'icon_selected_anchor', u'icon_selected_area', u'icon_selected_clipping', u'icon_selected_color', u'icon_selected_debug', u'icon_selected_hover_align', u'icon_selected_hover_alt', u'icon_selected_hover_anchor', u'icon_selected_hover_area', u'icon_selected_hover_clipping', u'icon_selected_hover_color', u'icon_selected_hover_debug', u'icon_selected_hover_maximum', u'icon_selected_hover_offset', u'icon_selected_hover_pos', u'icon_selected_hover_tooltip', u'icon_selected_hover_xalign', u'icon_selected_hover_xanchor', u'icon_selected_hover_xcenter', u'icon_selected_hover_xfill', u'icon_selected_hover_xmaximum', u'icon_selected_hover_xoffset', u'icon_selected_hover_xpos', u'icon_selected_hover_xsize', u'icon_selected_hover_xysize', u'icon_selected_hover_yalign', u'icon_selected_hover_yanchor', u'icon_selected_hover_ycenter', u'icon_selected_hover_yfill', u'icon_selected_hover_ymaximum', u'icon_selected_hover_yoffset', u'icon_selected_hover_ypos', u'icon_selected_hover_ysize', u'icon_selected_idle_align', u'icon_selected_idle_alt', u'icon_selected_idle_anchor', u'icon_selected_idle_area', u'icon_selected_idle_clipping', u'icon_selected_idle_color', u'icon_selected_idle_debug', u'icon_selected_idle_maximum', u'icon_selected_idle_offset', u'icon_selected_idle_pos', u'icon_selected_idle_tooltip', u'icon_selected_idle_xalign', u'icon_selected_idle_xanchor', u'icon_selected_idle_xcenter', u'icon_selected_idle_xfill', u'icon_selected_idle_xmaximum', u'icon_selected_idle_xoffset', u'icon_selected_idle_xpos', u'icon_selected_idle_xsize', u'icon_selected_idle_xysize', u'icon_selected_idle_yalign', u'icon_selected_idle_yanchor', u'icon_selected_idle_ycenter', u'icon_selected_idle_yfill', u'icon_selected_idle_ymaximum', u'icon_selected_idle_yoffset', u'icon_selected_idle_ypos', u'icon_selected_idle_ysize', u'icon_selected_insensitive_align', u'icon_selected_insensitive_alt', u'icon_selected_insensitive_anchor', u'icon_selected_insensitive_area', u'icon_selected_insensitive_clipping', u'icon_selected_insensitive_color', u'icon_selected_insensitive_debug', u'icon_selected_insensitive_maximum', u'icon_selected_insensitive_offset', u'icon_selected_insensitive_pos', u'icon_selected_insensitive_tooltip', u'icon_selected_insensitive_xalign', u'icon_selected_insensitive_xanchor', u'icon_selected_insensitive_xcenter', u'icon_selected_insensitive_xfill', u'icon_selected_insensitive_xmaximum', u'icon_selected_insensitive_xoffset', u'icon_selected_insensitive_xpos', u'icon_selected_insensitive_xsize', u'icon_selected_insensitive_xysize', u'icon_selected_insensitive_yalign', u'icon_selected_insensitive_yanchor', u'icon_selected_insensitive_ycenter', u'icon_selected_insensitive_yfill', u'icon_selected_insensitive_ymaximum', u'icon_selected_insensitive_yoffset', u'icon_selected_insensitive_ypos', u'icon_selected_insensitive_ysize', u'icon_selected_maximum', u'icon_selected_offset', u'icon_selected_pos', u'icon_selected_tooltip', u'icon_selected_xalign', u'icon_selected_xanchor', u'icon_selected_xcenter', u'icon_selected_xfill', u'icon_selected_xmaximum', u'icon_selected_xoffset', u'icon_selected_xpos', u'icon_selected_xsize', u'icon_selected_xysize', u'icon_selected_yalign', u'icon_selected_yanchor', u'icon_selected_ycenter', u'icon_selected_yfill', u'icon_selected_ymaximum', u'icon_selected_yoffset', u'icon_selected_ypos', u'icon_selected_ysize', u'icon_tooltip', u'icon_xalign', u'icon_xanchor', u'icon_xcenter', u'icon_xfill', u'icon_xmaximum', u'icon_xoffset', u'icon_xpos', u'icon_xsize', u'icon_xysize', u'icon_yalign', u'icon_yanchor', u'icon_ycenter', u'icon_yfill', u'icon_ymaximum', u'icon_yoffset', u'icon_ypos', u'icon_ysize', 'id', 'idle', 'idle_additive', 'idle_adjust_spacing', 'idle_align', 'idle_alignaround', 'idle_alpha', 'idle_alt', 'idle_anchor', 'idle_angle', 'idle_antialias', 'idle_area', 'idle_around', 'idle_background', 'idle_bar_invert', 'idle_bar_resizing', 'idle_bar_vertical', 'idle_base_bar', 'idle_black_color', 'idle_bold', 'idle_bottom_bar', 'idle_bottom_gutter', 'idle_bottom_margin', 'idle_bottom_padding', 'idle_box_layout', 'idle_box_reverse', 'idle_box_wrap', 'idle_child', 'idle_clipping', 'idle_color', 'idle_corner1', 'idle_corner2', 'idle_crop', 'idle_crop_relative', 'idle_debug', 'idle_delay', 'idle_drop_shadow', 'idle_drop_shadow_color', 'idle_events', 'idle_first_indent', 'idle_first_spacing', 'idle_fit_first', 'idle_focus_mask', 'idle_font', 'idle_foreground', 'idle_hinting', 'idle_hyperlink_functions', 'idle_italic', 'idle_justify', 'idle_kerning', 'idle_key_events', 'idle_keyboard_focus', 'idle_language', 'idle_layout', 'idle_left_bar', 'idle_left_gutter', 'idle_left_margin', 'idle_left_padding', 'idle_line_leading', 'idle_line_spacing', 'idle_margin', 'idle_maximum', 'idle_maxsize', 'idle_min_width', 'idle_minimum', 'idle_minwidth', 'idle_mouse', 'idle_nearest', 'idle_newline_indent', 'idle_offset', 'idle_order_reverse', 'idle_outlines', 'idle_padding', 'idle_pos', 'idle_radius', 'idle_rest_indent', 'idle_right_bar', 'idle_right_gutter', 'idle_right_margin', 'idle_right_padding', 'idle_rotate', 'idle_rotate_pad', 'idle_ruby_style', 'idle_size', 'idle_size_group', 'idle_slow_abortable', 'idle_slow_cps', 'idle_slow_cps_multiplier', 'idle_sound', 'idle_spacing', 'idle_strikethrough', 'idle_subpixel', 'idle_text_align', 'idle_text_y_fudge', 'idle_thumb', 'idle_thumb_offset', 'idle_thumb_shadow', 'idle_tooltip', 'idle_top_bar', 'idle_top_gutter', 'idle_top_margin', 'idle_top_padding', 'idle_transform_anchor', 'idle_underline', 'idle_unscrollable', 'idle_vertical', 'idle_xalign', 'idle_xanchor', 'idle_xanchoraround', 'idle_xaround', 'idle_xcenter', 'idle_xfill', 'idle_xfit', 'idle_xmargin', 'idle_xmaximum', 'idle_xminimum', 'idle_xoffset', 'idle_xpadding', 'idle_xpan', 'idle_xpos', 'idle_xsize', 'idle_xspacing', 'idle_xtile', 'idle_xysize', 'idle_xzoom', 'idle_yalign', 'idle_yanchor', 'idle_yanchoraround', 'idle_yaround', 'idle_ycenter', 'idle_yfill', 'idle_yfit', 'idle_ymargin', 'idle_ymaximum', 'idle_yminimum', 'idle_yoffset', 'idle_ypadding', 'idle_ypan', 'idle_ypos', 'idle_ysize', 'idle_yspacing', 'idle_ytile', 'idle_yzoom', 'idle_zoom', 'image_style', 'insensitive', 'insensitive_additive', 'insensitive_adjust_spacing', 'insensitive_align', 'insensitive_alignaround', 'insensitive_alpha', 'insensitive_alt', 'insensitive_anchor', 'insensitive_angle', 'insensitive_antialias', 'insensitive_area', 'insensitive_around', 'insensitive_background', 'insensitive_bar_invert', 'insensitive_bar_resizing', 'insensitive_bar_vertical', 'insensitive_base_bar', 'insensitive_black_color', 'insensitive_bold', 'insensitive_bottom_bar', 'insensitive_bottom_gutter', 'insensitive_bottom_margin', 'insensitive_bottom_padding', 'insensitive_box_layout', 'insensitive_box_reverse', 'insensitive_box_wrap', 'insensitive_child', 'insensitive_clipping', 'insensitive_color', 'insensitive_corner1', 'insensitive_corner2', 'insensitive_crop', 'insensitive_crop_relative', 'insensitive_debug', 'insensitive_delay', 'insensitive_drop_shadow', 'insensitive_drop_shadow_color', 'insensitive_events', 'insensitive_first_indent', 'insensitive_first_spacing', 'insensitive_fit_first', 'insensitive_focus_mask', 'insensitive_font', 'insensitive_foreground', 'insensitive_hinting', 'insensitive_hyperlink_functions', 'insensitive_italic', 'insensitive_justify', 'insensitive_kerning', 'insensitive_key_events', 'insensitive_keyboard_focus', 'insensitive_language', 'insensitive_layout', 'insensitive_left_bar', 'insensitive_left_gutter', 'insensitive_left_margin', 'insensitive_left_padding', 'insensitive_line_leading', 'insensitive_line_spacing', 'insensitive_margin', 'insensitive_maximum', 'insensitive_maxsize', 'insensitive_min_width', 'insensitive_minimum', 'insensitive_minwidth', 'insensitive_mouse', 'insensitive_nearest', 'insensitive_newline_indent', 'insensitive_offset', 'insensitive_order_reverse', 'insensitive_outlines', 'insensitive_padding', 'insensitive_pos', 'insensitive_radius', 'insensitive_rest_indent', 'insensitive_right_bar', 'insensitive_right_gutter', 'insensitive_right_margin', 'insensitive_right_padding', 'insensitive_rotate', 'insensitive_rotate_pad', 'insensitive_ruby_style', 'insensitive_size', 'insensitive_size_group', 'insensitive_slow_abortable', 'insensitive_slow_cps', 'insensitive_slow_cps_multiplier', 'insensitive_sound', 'insensitive_spacing', 'insensitive_strikethrough', 'insensitive_subpixel', 'insensitive_text_align', 'insensitive_text_y_fudge', 'insensitive_thumb', 'insensitive_thumb_offset', 'insensitive_thumb_shadow', 'insensitive_tooltip', 'insensitive_top_bar', 'insensitive_top_gutter', 'insensitive_top_margin', 'insensitive_top_padding', 'insensitive_transform_anchor', 'insensitive_underline', 'insensitive_unscrollable', 'insensitive_vertical', 'insensitive_xalign', 'insensitive_xanchor', 'insensitive_xanchoraround', 'insensitive_xaround', 'insensitive_xcenter', 'insensitive_xfill', 'insensitive_xfit', 'insensitive_xmargin', 'insensitive_xmaximum', 'insensitive_xminimum', 'insensitive_xoffset', 'insensitive_xpadding', 'insensitive_xpan', 'insensitive_xpos', 'insensitive_xsize', 'insensitive_xspacing', 'insensitive_xtile', 'insensitive_xysize', 'insensitive_xzoom', 'insensitive_yalign', 'insensitive_yanchor', 'insensitive_yanchoraround', 'insensitive_yaround', 'insensitive_ycenter', 'insensitive_yfill', 'insensitive_yfit', 'insensitive_ymargin', 'insensitive_ymaximum', 'insensitive_yminimum', 'insensitive_yoffset', 'insensitive_ypadding', 'insensitive_ypan', 'insensitive_ypos', 'insensitive_ysize', 'insensitive_yspacing', 'insensitive_ytile', 'insensitive_yzoom', 'insensitive_zoom', 'italic', 'justify', 'kerning', 'key_events', 'keyboard_focus', 'keysym', 'language', 'layer', 'layout', 'left_bar', 'left_gutter', 'left_margin', 'left_padding', 'length', 'line_leading', 'line_spacing', 'margin', 'maximum', 'maxsize', 'min_width', 'minimum', 'minwidth', 'modal', 'mouse', 'mouse_drop', 'mousewheel', 'nearest', 'newline_indent', 'offset', 'order_reverse', 'outlines', 'padding', 'pagekeys', 'pixel_width', 'pos', 'predict', 'prefix', 'properties', 'radius', 'range', 'rest_indent', 'right_bar', 'right_gutter', 'right_margin', 'right_padding', 'rotate', 'rotate_pad', 'rows', 'ruby_style', 'scope', 'scrollbar_activate_align', 'scrollbar_activate_alt', 'scrollbar_activate_anchor', 'scrollbar_activate_area', 'scrollbar_activate_bar_invert', 'scrollbar_activate_bar_resizing', 'scrollbar_activate_bar_vertical', 'scrollbar_activate_base_bar', 'scrollbar_activate_bottom_bar', 'scrollbar_activate_bottom_gutter', 'scrollbar_activate_clipping', 'scrollbar_activate_debug', 'scrollbar_activate_keyboard_focus', 'scrollbar_activate_left_bar', 'scrollbar_activate_left_gutter', 'scrollbar_activate_maximum', 'scrollbar_activate_mouse', 'scrollbar_activate_offset', 'scrollbar_activate_pos', 'scrollbar_activate_right_bar', 'scrollbar_activate_right_gutter', 'scrollbar_activate_thumb', 'scrollbar_activate_thumb_offset', 'scrollbar_activate_thumb_shadow', 'scrollbar_activate_tooltip', 'scrollbar_activate_top_bar', 'scrollbar_activate_top_gutter', 'scrollbar_activate_unscrollable', 'scrollbar_activate_xalign', 'scrollbar_activate_xanchor', 'scrollbar_activate_xcenter', 'scrollbar_activate_xfill', 'scrollbar_activate_xmaximum', 'scrollbar_activate_xoffset', 'scrollbar_activate_xpos', 'scrollbar_activate_xsize', 'scrollbar_activate_xysize', 'scrollbar_activate_yalign', 'scrollbar_activate_yanchor', 'scrollbar_activate_ycenter', 'scrollbar_activate_yfill', 'scrollbar_activate_ymaximum', 'scrollbar_activate_yoffset', 'scrollbar_activate_ypos', 'scrollbar_activate_ysize', 'scrollbar_align', 'scrollbar_alt', 'scrollbar_anchor', 'scrollbar_area', 'scrollbar_bar_invert', 'scrollbar_bar_resizing', 'scrollbar_bar_vertical', 'scrollbar_base_bar', 'scrollbar_bottom_bar', 'scrollbar_bottom_gutter', 'scrollbar_clipping', 'scrollbar_debug', 'scrollbar_hover_align', 'scrollbar_hover_alt', 'scrollbar_hover_anchor', 'scrollbar_hover_area', 'scrollbar_hover_bar_invert', 'scrollbar_hover_bar_resizing', 'scrollbar_hover_bar_vertical', 'scrollbar_hover_base_bar', 'scrollbar_hover_bottom_bar', 'scrollbar_hover_bottom_gutter', 'scrollbar_hover_clipping', 'scrollbar_hover_debug', 'scrollbar_hover_keyboard_focus', 'scrollbar_hover_left_bar', 'scrollbar_hover_left_gutter', 'scrollbar_hover_maximum', 'scrollbar_hover_mouse', 'scrollbar_hover_offset', 'scrollbar_hover_pos', 'scrollbar_hover_right_bar', 'scrollbar_hover_right_gutter', 'scrollbar_hover_thumb', 'scrollbar_hover_thumb_offset', 'scrollbar_hover_thumb_shadow', 'scrollbar_hover_tooltip', 'scrollbar_hover_top_bar', 'scrollbar_hover_top_gutter', 'scrollbar_hover_unscrollable', 'scrollbar_hover_xalign', 'scrollbar_hover_xanchor', 'scrollbar_hover_xcenter', 'scrollbar_hover_xfill', 'scrollbar_hover_xmaximum', 'scrollbar_hover_xoffset', 'scrollbar_hover_xpos', 'scrollbar_hover_xsize', 'scrollbar_hover_xysize', 'scrollbar_hover_yalign', 'scrollbar_hover_yanchor', 'scrollbar_hover_ycenter', 'scrollbar_hover_yfill', 'scrollbar_hover_ymaximum', 'scrollbar_hover_yoffset', 'scrollbar_hover_ypos', 'scrollbar_hover_ysize', 'scrollbar_idle_align', 'scrollbar_idle_alt', 'scrollbar_idle_anchor', 'scrollbar_idle_area', 'scrollbar_idle_bar_invert', 'scrollbar_idle_bar_resizing', 'scrollbar_idle_bar_vertical', 'scrollbar_idle_base_bar', 'scrollbar_idle_bottom_bar', 'scrollbar_idle_bottom_gutter', 'scrollbar_idle_clipping', 'scrollbar_idle_debug', 'scrollbar_idle_keyboard_focus', 'scrollbar_idle_left_bar', 'scrollbar_idle_left_gutter', 'scrollbar_idle_maximum', 'scrollbar_idle_mouse', 'scrollbar_idle_offset', 'scrollbar_idle_pos', 'scrollbar_idle_right_bar', 'scrollbar_idle_right_gutter', 'scrollbar_idle_thumb', 'scrollbar_idle_thumb_offset', 'scrollbar_idle_thumb_shadow', 'scrollbar_idle_tooltip', 'scrollbar_idle_top_bar', 'scrollbar_idle_top_gutter', 'scrollbar_idle_unscrollable', 'scrollbar_idle_xalign', 'scrollbar_idle_xanchor', 'scrollbar_idle_xcenter', 'scrollbar_idle_xfill', 'scrollbar_idle_xmaximum', 'scrollbar_idle_xoffset', 'scrollbar_idle_xpos', 'scrollbar_idle_xsize', 'scrollbar_idle_xysize', 'scrollbar_idle_yalign', 'scrollbar_idle_yanchor', 'scrollbar_idle_ycenter', 'scrollbar_idle_yfill', 'scrollbar_idle_ymaximum', 'scrollbar_idle_yoffset', 'scrollbar_idle_ypos', 'scrollbar_idle_ysize', 'scrollbar_insensitive_align', 'scrollbar_insensitive_alt', 'scrollbar_insensitive_anchor', 'scrollbar_insensitive_area', 'scrollbar_insensitive_bar_invert', 'scrollbar_insensitive_bar_resizing', 'scrollbar_insensitive_bar_vertical', 'scrollbar_insensitive_base_bar', 'scrollbar_insensitive_bottom_bar', 'scrollbar_insensitive_bottom_gutter', 'scrollbar_insensitive_clipping', 'scrollbar_insensitive_debug', 'scrollbar_insensitive_keyboard_focus', 'scrollbar_insensitive_left_bar', 'scrollbar_insensitive_left_gutter', 'scrollbar_insensitive_maximum', 'scrollbar_insensitive_mouse', 'scrollbar_insensitive_offset', 'scrollbar_insensitive_pos', 'scrollbar_insensitive_right_bar', 'scrollbar_insensitive_right_gutter', 'scrollbar_insensitive_thumb', 'scrollbar_insensitive_thumb_offset', 'scrollbar_insensitive_thumb_shadow', 'scrollbar_insensitive_tooltip', 'scrollbar_insensitive_top_bar', 'scrollbar_insensitive_top_gutter', 'scrollbar_insensitive_unscrollable', 'scrollbar_insensitive_xalign', 'scrollbar_insensitive_xanchor', 'scrollbar_insensitive_xcenter', 'scrollbar_insensitive_xfill', 'scrollbar_insensitive_xmaximum', 'scrollbar_insensitive_xoffset', 'scrollbar_insensitive_xpos', 'scrollbar_insensitive_xsize', 'scrollbar_insensitive_xysize', 'scrollbar_insensitive_yalign', 'scrollbar_insensitive_yanchor', 'scrollbar_insensitive_ycenter', 'scrollbar_insensitive_yfill', 'scrollbar_insensitive_ymaximum', 'scrollbar_insensitive_yoffset', 'scrollbar_insensitive_ypos', 'scrollbar_insensitive_ysize', 'scrollbar_keyboard_focus', 'scrollbar_left_bar', 'scrollbar_left_gutter', 'scrollbar_maximum', 'scrollbar_mouse', 'scrollbar_offset', 'scrollbar_pos', 'scrollbar_right_bar', 'scrollbar_right_gutter', 'scrollbar_selected_activate_align', 'scrollbar_selected_activate_alt', 'scrollbar_selected_activate_anchor', 'scrollbar_selected_activate_area', 'scrollbar_selected_activate_bar_invert', 'scrollbar_selected_activate_bar_resizing', 'scrollbar_selected_activate_bar_vertical', 'scrollbar_selected_activate_base_bar', 'scrollbar_selected_activate_bottom_bar', 'scrollbar_selected_activate_bottom_gutter', 'scrollbar_selected_activate_clipping', 'scrollbar_selected_activate_debug', 'scrollbar_selected_activate_keyboard_focus', 'scrollbar_selected_activate_left_bar', 'scrollbar_selected_activate_left_gutter', 'scrollbar_selected_activate_maximum', 'scrollbar_selected_activate_mouse', 'scrollbar_selected_activate_offset', 'scrollbar_selected_activate_pos', 'scrollbar_selected_activate_right_bar', 'scrollbar_selected_activate_right_gutter', 'scrollbar_selected_activate_thumb', 'scrollbar_selected_activate_thumb_offset', 'scrollbar_selected_activate_thumb_shadow', 'scrollbar_selected_activate_tooltip', 'scrollbar_selected_activate_top_bar', 'scrollbar_selected_activate_top_gutter', 'scrollbar_selected_activate_unscrollable', 'scrollbar_selected_activate_xalign', 'scrollbar_selected_activate_xanchor', 'scrollbar_selected_activate_xcenter', 'scrollbar_selected_activate_xfill', 'scrollbar_selected_activate_xmaximum', 'scrollbar_selected_activate_xoffset', 'scrollbar_selected_activate_xpos', 'scrollbar_selected_activate_xsize', 'scrollbar_selected_activate_xysize', 'scrollbar_selected_activate_yalign', 'scrollbar_selected_activate_yanchor', 'scrollbar_selected_activate_ycenter', 'scrollbar_selected_activate_yfill', 'scrollbar_selected_activate_ymaximum', 'scrollbar_selected_activate_yoffset', 'scrollbar_selected_activate_ypos', 'scrollbar_selected_activate_ysize', 'scrollbar_selected_align', 'scrollbar_selected_alt', 'scrollbar_selected_anchor', 'scrollbar_selected_area', 'scrollbar_selected_bar_invert', 'scrollbar_selected_bar_resizing', 'scrollbar_selected_bar_vertical', 'scrollbar_selected_base_bar', 'scrollbar_selected_bottom_bar', 'scrollbar_selected_bottom_gutter', 'scrollbar_selected_clipping', 'scrollbar_selected_debug', 'scrollbar_selected_hover_align', 'scrollbar_selected_hover_alt', 'scrollbar_selected_hover_anchor', 'scrollbar_selected_hover_area', 'scrollbar_selected_hover_bar_invert', 'scrollbar_selected_hover_bar_resizing', 'scrollbar_selected_hover_bar_vertical', 'scrollbar_selected_hover_base_bar', 'scrollbar_selected_hover_bottom_bar', 'scrollbar_selected_hover_bottom_gutter', 'scrollbar_selected_hover_clipping', 'scrollbar_selected_hover_debug', 'scrollbar_selected_hover_keyboard_focus', 'scrollbar_selected_hover_left_bar', 'scrollbar_selected_hover_left_gutter', 'scrollbar_selected_hover_maximum', 'scrollbar_selected_hover_mouse', 'scrollbar_selected_hover_offset', 'scrollbar_selected_hover_pos', 'scrollbar_selected_hover_right_bar', 'scrollbar_selected_hover_right_gutter', 'scrollbar_selected_hover_thumb', 'scrollbar_selected_hover_thumb_offset', 'scrollbar_selected_hover_thumb_shadow', 'scrollbar_selected_hover_tooltip', 'scrollbar_selected_hover_top_bar', 'scrollbar_selected_hover_top_gutter', 'scrollbar_selected_hover_unscrollable', 'scrollbar_selected_hover_xalign', 'scrollbar_selected_hover_xanchor', 'scrollbar_selected_hover_xcenter', 'scrollbar_selected_hover_xfill', 'scrollbar_selected_hover_xmaximum', 'scrollbar_selected_hover_xoffset', 'scrollbar_selected_hover_xpos', 'scrollbar_selected_hover_xsize', 'scrollbar_selected_hover_xysize', 'scrollbar_selected_hover_yalign', 'scrollbar_selected_hover_yanchor', 'scrollbar_selected_hover_ycenter', 'scrollbar_selected_hover_yfill', 'scrollbar_selected_hover_ymaximum', 'scrollbar_selected_hover_yoffset', 'scrollbar_selected_hover_ypos', 'scrollbar_selected_hover_ysize', 'scrollbar_selected_idle_align', 'scrollbar_selected_idle_alt', 'scrollbar_selected_idle_anchor', 'scrollbar_selected_idle_area', 'scrollbar_selected_idle_bar_invert', 'scrollbar_selected_idle_bar_resizing', 'scrollbar_selected_idle_bar_vertical', 'scrollbar_selected_idle_base_bar', 'scrollbar_selected_idle_bottom_bar', 'scrollbar_selected_idle_bottom_gutter', 'scrollbar_selected_idle_clipping', 'scrollbar_selected_idle_debug', 'scrollbar_selected_idle_keyboard_focus', 'scrollbar_selected_idle_left_bar', 'scrollbar_selected_idle_left_gutter', 'scrollbar_selected_idle_maximum', 'scrollbar_selected_idle_mouse', 'scrollbar_selected_idle_offset', 'scrollbar_selected_idle_pos', 'scrollbar_selected_idle_right_bar', 'scrollbar_selected_idle_right_gutter', 'scrollbar_selected_idle_thumb', 'scrollbar_selected_idle_thumb_offset', 'scrollbar_selected_idle_thumb_shadow', 'scrollbar_selected_idle_tooltip', 'scrollbar_selected_idle_top_bar', 'scrollbar_selected_idle_top_gutter', 'scrollbar_selected_idle_unscrollable', 'scrollbar_selected_idle_xalign', 'scrollbar_selected_idle_xanchor', 'scrollbar_selected_idle_xcenter', 'scrollbar_selected_idle_xfill', 'scrollbar_selected_idle_xmaximum', 'scrollbar_selected_idle_xoffset', 'scrollbar_selected_idle_xpos', 'scrollbar_selected_idle_xsize', 'scrollbar_selected_idle_xysize', 'scrollbar_selected_idle_yalign', 'scrollbar_selected_idle_yanchor', 'scrollbar_selected_idle_ycenter', 'scrollbar_selected_idle_yfill', 'scrollbar_selected_idle_ymaximum', 'scrollbar_selected_idle_yoffset', 'scrollbar_selected_idle_ypos', 'scrollbar_selected_idle_ysize', 'scrollbar_selected_insensitive_align', 'scrollbar_selected_insensitive_alt', 'scrollbar_selected_insensitive_anchor', 'scrollbar_selected_insensitive_area', 'scrollbar_selected_insensitive_bar_invert', 'scrollbar_selected_insensitive_bar_resizing', 'scrollbar_selected_insensitive_bar_vertical', 'scrollbar_selected_insensitive_base_bar', 'scrollbar_selected_insensitive_bottom_bar', 'scrollbar_selected_insensitive_bottom_gutter', 'scrollbar_selected_insensitive_clipping', 'scrollbar_selected_insensitive_debug', 'scrollbar_selected_insensitive_keyboard_focus', 'scrollbar_selected_insensitive_left_bar', 'scrollbar_selected_insensitive_left_gutter', 'scrollbar_selected_insensitive_maximum', 'scrollbar_selected_insensitive_mouse', 'scrollbar_selected_insensitive_offset', 'scrollbar_selected_insensitive_pos', 'scrollbar_selected_insensitive_right_bar', 'scrollbar_selected_insensitive_right_gutter', 'scrollbar_selected_insensitive_thumb', 'scrollbar_selected_insensitive_thumb_offset', 'scrollbar_selected_insensitive_thumb_shadow', 'scrollbar_selected_insensitive_tooltip', 'scrollbar_selected_insensitive_top_bar', 'scrollbar_selected_insensitive_top_gutter', 'scrollbar_selected_insensitive_unscrollable', 'scrollbar_selected_insensitive_xalign', 'scrollbar_selected_insensitive_xanchor', 'scrollbar_selected_insensitive_xcenter', 'scrollbar_selected_insensitive_xfill', 'scrollbar_selected_insensitive_xmaximum', 'scrollbar_selected_insensitive_xoffset', 'scrollbar_selected_insensitive_xpos', 'scrollbar_selected_insensitive_xsize', 'scrollbar_selected_insensitive_xysize', 'scrollbar_selected_insensitive_yalign', 'scrollbar_selected_insensitive_yanchor', 'scrollbar_selected_insensitive_ycenter', 'scrollbar_selected_insensitive_yfill', 'scrollbar_selected_insensitive_ymaximum', 'scrollbar_selected_insensitive_yoffset', 'scrollbar_selected_insensitive_ypos', 'scrollbar_selected_insensitive_ysize', 'scrollbar_selected_keyboard_focus', 'scrollbar_selected_left_bar', 'scrollbar_selected_left_gutter', 'scrollbar_selected_maximum', 'scrollbar_selected_mouse', 'scrollbar_selected_offset', 'scrollbar_selected_pos', 'scrollbar_selected_right_bar', 'scrollbar_selected_right_gutter', 'scrollbar_selected_thumb', 'scrollbar_selected_thumb_offset', 'scrollbar_selected_thumb_shadow', 'scrollbar_selected_tooltip', 'scrollbar_selected_top_bar', 'scrollbar_selected_top_gutter', 'scrollbar_selected_unscrollable', 'scrollbar_selected_xalign', 'scrollbar_selected_xanchor', 'scrollbar_selected_xcenter', 'scrollbar_selected_xfill', 'scrollbar_selected_xmaximum', 'scrollbar_selected_xoffset', 'scrollbar_selected_xpos', 'scrollbar_selected_xsize', 'scrollbar_selected_xysize', 'scrollbar_selected_yalign', 'scrollbar_selected_yanchor', 'scrollbar_selected_ycenter', 'scrollbar_selected_yfill', 'scrollbar_selected_ymaximum', 'scrollbar_selected_yoffset', 'scrollbar_selected_ypos', 'scrollbar_selected_ysize', 'scrollbar_thumb', 'scrollbar_thumb_offset', 'scrollbar_thumb_shadow', 'scrollbar_tooltip', 'scrollbar_top_bar', 'scrollbar_top_gutter', 'scrollbar_unscrollable', 'scrollbar_xalign', 'scrollbar_xanchor', 'scrollbar_xcenter', 'scrollbar_xfill', 'scrollbar_xmaximum', 'scrollbar_xoffset', 'scrollbar_xpos', 'scrollbar_xsize', 'scrollbar_xysize', 'scrollbar_yalign', 'scrollbar_yanchor', 'scrollbar_ycenter', 'scrollbar_yfill', 'scrollbar_ymaximum', 'scrollbar_yoffset', 'scrollbar_ypos', 'scrollbar_ysize', 'scrollbars', 'selected', 'selected_activate_additive', 'selected_activate_adjust_spacing', 'selected_activate_align', 'selected_activate_alignaround', 'selected_activate_alpha', 'selected_activate_alt', 'selected_activate_anchor', 'selected_activate_angle', 'selected_activate_antialias', 'selected_activate_area', 'selected_activate_around', 'selected_activate_background', 'selected_activate_bar_invert', 'selected_activate_bar_resizing', 'selected_activate_bar_vertical', 'selected_activate_base_bar', 'selected_activate_black_color', 'selected_activate_bold', 'selected_activate_bottom_bar', 'selected_activate_bottom_gutter', 'selected_activate_bottom_margin', 'selected_activate_bottom_padding', 'selected_activate_box_layout', 'selected_activate_box_reverse', 'selected_activate_box_wrap', 'selected_activate_child', 'selected_activate_clipping', 'selected_activate_color', 'selected_activate_corner1', 'selected_activate_corner2', 'selected_activate_crop', 'selected_activate_crop_relative', 'selected_activate_debug', 'selected_activate_delay', 'selected_activate_drop_shadow', 'selected_activate_drop_shadow_color', 'selected_activate_events', 'selected_activate_first_indent', 'selected_activate_first_spacing', 'selected_activate_fit_first', 'selected_activate_focus_mask', 'selected_activate_font', 'selected_activate_foreground', 'selected_activate_hinting', 'selected_activate_hyperlink_functions', 'selected_activate_italic', 'selected_activate_justify', 'selected_activate_kerning', 'selected_activate_key_events', 'selected_activate_keyboard_focus', 'selected_activate_language', 'selected_activate_layout', 'selected_activate_left_bar', 'selected_activate_left_gutter', 'selected_activate_left_margin', 'selected_activate_left_padding', 'selected_activate_line_leading', 'selected_activate_line_spacing', 'selected_activate_margin', 'selected_activate_maximum', 'selected_activate_maxsize', 'selected_activate_min_width', 'selected_activate_minimum', 'selected_activate_minwidth', 'selected_activate_mouse', 'selected_activate_nearest', 'selected_activate_newline_indent', 'selected_activate_offset', 'selected_activate_order_reverse', 'selected_activate_outlines', 'selected_activate_padding', 'selected_activate_pos', 'selected_activate_radius', 'selected_activate_rest_indent', 'selected_activate_right_bar', 'selected_activate_right_gutter', 'selected_activate_right_margin', 'selected_activate_right_padding', 'selected_activate_rotate', 'selected_activate_rotate_pad', 'selected_activate_ruby_style', 'selected_activate_size', 'selected_activate_size_group', 'selected_activate_slow_abortable', 'selected_activate_slow_cps', 'selected_activate_slow_cps_multiplier', 'selected_activate_sound', 'selected_activate_spacing', 'selected_activate_strikethrough', 'selected_activate_subpixel', 'selected_activate_text_align', 'selected_activate_text_y_fudge', 'selected_activate_thumb', 'selected_activate_thumb_offset', 'selected_activate_thumb_shadow', 'selected_activate_tooltip', 'selected_activate_top_bar', 'selected_activate_top_gutter', 'selected_activate_top_margin', 'selected_activate_top_padding', 'selected_activate_transform_anchor', 'selected_activate_underline', 'selected_activate_unscrollable', 'selected_activate_vertical', 'selected_activate_xalign', 'selected_activate_xanchor', 'selected_activate_xanchoraround', 'selected_activate_xaround', 'selected_activate_xcenter', 'selected_activate_xfill', 'selected_activate_xfit', 'selected_activate_xmargin', 'selected_activate_xmaximum', 'selected_activate_xminimum', 'selected_activate_xoffset', 'selected_activate_xpadding', 'selected_activate_xpan', 'selected_activate_xpos', 'selected_activate_xsize', 'selected_activate_xspacing', 'selected_activate_xtile', 'selected_activate_xysize', 'selected_activate_xzoom', 'selected_activate_yalign', 'selected_activate_yanchor', 'selected_activate_yanchoraround', 'selected_activate_yaround', 'selected_activate_ycenter', 'selected_activate_yfill', 'selected_activate_yfit', 'selected_activate_ymargin', 'selected_activate_ymaximum', 'selected_activate_yminimum', 'selected_activate_yoffset', 'selected_activate_ypadding', 'selected_activate_ypan', 'selected_activate_ypos', 'selected_activate_ysize', 'selected_activate_yspacing', 'selected_activate_ytile', 'selected_activate_yzoom', 'selected_activate_zoom', 'selected_additive', 'selected_adjust_spacing', 'selected_align', 'selected_alignaround', 'selected_alpha', 'selected_alt', 'selected_anchor', 'selected_angle', 'selected_antialias', 'selected_area', 'selected_around', 'selected_background', 'selected_bar_invert', 'selected_bar_resizing', 'selected_bar_vertical', 'selected_base_bar', 'selected_black_color', 'selected_bold', 'selected_bottom_bar', 'selected_bottom_gutter', 'selected_bottom_margin', 'selected_bottom_padding', 'selected_box_layout', 'selected_box_reverse', 'selected_box_wrap', 'selected_child', 'selected_clipping', 'selected_color', 'selected_corner1', 'selected_corner2', 'selected_crop', 'selected_crop_relative', 'selected_debug', 'selected_delay', 'selected_drop_shadow', 'selected_drop_shadow_color', 'selected_events', 'selected_first_indent', 'selected_first_spacing', 'selected_fit_first', 'selected_focus_mask', 'selected_font', 'selected_foreground', 'selected_hinting', 'selected_hover', 'selected_hover_additive', 'selected_hover_adjust_spacing', 'selected_hover_align', 'selected_hover_alignaround', 'selected_hover_alpha', 'selected_hover_alt', 'selected_hover_anchor', 'selected_hover_angle', 'selected_hover_antialias', 'selected_hover_area', 'selected_hover_around', 'selected_hover_background', 'selected_hover_bar_invert', 'selected_hover_bar_resizing', 'selected_hover_bar_vertical', 'selected_hover_base_bar', 'selected_hover_black_color', 'selected_hover_bold', 'selected_hover_bottom_bar', 'selected_hover_bottom_gutter', 'selected_hover_bottom_margin', 'selected_hover_bottom_padding', 'selected_hover_box_layout', 'selected_hover_box_reverse', 'selected_hover_box_wrap', 'selected_hover_child', 'selected_hover_clipping', 'selected_hover_color', 'selected_hover_corner1', 'selected_hover_corner2', 'selected_hover_crop', 'selected_hover_crop_relative', 'selected_hover_debug', 'selected_hover_delay', 'selected_hover_drop_shadow', 'selected_hover_drop_shadow_color', 'selected_hover_events', 'selected_hover_first_indent', 'selected_hover_first_spacing', 'selected_hover_fit_first', 'selected_hover_focus_mask', 'selected_hover_font', 'selected_hover_foreground', 'selected_hover_hinting', 'selected_hover_hyperlink_functions', 'selected_hover_italic', 'selected_hover_justify', 'selected_hover_kerning', 'selected_hover_key_events', 'selected_hover_keyboard_focus', 'selected_hover_language', 'selected_hover_layout', 'selected_hover_left_bar', 'selected_hover_left_gutter', 'selected_hover_left_margin', 'selected_hover_left_padding', 'selected_hover_line_leading', 'selected_hover_line_spacing', 'selected_hover_margin', 'selected_hover_maximum', 'selected_hover_maxsize', 'selected_hover_min_width', 'selected_hover_minimum', 'selected_hover_minwidth', 'selected_hover_mouse', 'selected_hover_nearest', 'selected_hover_newline_indent', 'selected_hover_offset', 'selected_hover_order_reverse', 'selected_hover_outlines', 'selected_hover_padding', 'selected_hover_pos', 'selected_hover_radius', 'selected_hover_rest_indent', 'selected_hover_right_bar', 'selected_hover_right_gutter', 'selected_hover_right_margin', 'selected_hover_right_padding', 'selected_hover_rotate', 'selected_hover_rotate_pad', 'selected_hover_ruby_style', 'selected_hover_size', 'selected_hover_size_group', 'selected_hover_slow_abortable', 'selected_hover_slow_cps', 'selected_hover_slow_cps_multiplier', 'selected_hover_sound', 'selected_hover_spacing', 'selected_hover_strikethrough', 'selected_hover_subpixel', 'selected_hover_text_align', 'selected_hover_text_y_fudge', 'selected_hover_thumb', 'selected_hover_thumb_offset', 'selected_hover_thumb_shadow', 'selected_hover_tooltip', 'selected_hover_top_bar', 'selected_hover_top_gutter', 'selected_hover_top_margin', 'selected_hover_top_padding', 'selected_hover_transform_anchor', 'selected_hover_underline', 'selected_hover_unscrollable', 'selected_hover_vertical', 'selected_hover_xalign', 'selected_hover_xanchor', 'selected_hover_xanchoraround', 'selected_hover_xaround', 'selected_hover_xcenter', 'selected_hover_xfill', 'selected_hover_xfit', 'selected_hover_xmargin', 'selected_hover_xmaximum', 'selected_hover_xminimum', 'selected_hover_xoffset', 'selected_hover_xpadding', 'selected_hover_xpan', 'selected_hover_xpos', 'selected_hover_xsize', 'selected_hover_xspacing', 'selected_hover_xtile', 'selected_hover_xysize', 'selected_hover_xzoom', 'selected_hover_yalign', 'selected_hover_yanchor', 'selected_hover_yanchoraround', 'selected_hover_yaround', 'selected_hover_ycenter', 'selected_hover_yfill', 'selected_hover_yfit', 'selected_hover_ymargin', 'selected_hover_ymaximum', 'selected_hover_yminimum', 'selected_hover_yoffset', 'selected_hover_ypadding', 'selected_hover_ypan', 'selected_hover_ypos', 'selected_hover_ysize', 'selected_hover_yspacing', 'selected_hover_ytile', 'selected_hover_yzoom', 'selected_hover_zoom', 'selected_hyperlink_functions', 'selected_idle', 'selected_idle_additive', 'selected_idle_adjust_spacing', 'selected_idle_align', 'selected_idle_alignaround', 'selected_idle_alpha', 'selected_idle_alt', 'selected_idle_anchor', 'selected_idle_angle', 'selected_idle_antialias', 'selected_idle_area', 'selected_idle_around', 'selected_idle_background', 'selected_idle_bar_invert', 'selected_idle_bar_resizing', 'selected_idle_bar_vertical', 'selected_idle_base_bar', 'selected_idle_black_color', 'selected_idle_bold', 'selected_idle_bottom_bar', 'selected_idle_bottom_gutter', 'selected_idle_bottom_margin', 'selected_idle_bottom_padding', 'selected_idle_box_layout', 'selected_idle_box_reverse', 'selected_idle_box_wrap', 'selected_idle_child', 'selected_idle_clipping', 'selected_idle_color', 'selected_idle_corner1', 'selected_idle_corner2', 'selected_idle_crop', 'selected_idle_crop_relative', 'selected_idle_debug', 'selected_idle_delay', 'selected_idle_drop_shadow', 'selected_idle_drop_shadow_color', 'selected_idle_events', 'selected_idle_first_indent', 'selected_idle_first_spacing', 'selected_idle_fit_first', 'selected_idle_focus_mask', 'selected_idle_font', 'selected_idle_foreground', 'selected_idle_hinting', 'selected_idle_hyperlink_functions', 'selected_idle_italic', 'selected_idle_justify', 'selected_idle_kerning', 'selected_idle_key_events', 'selected_idle_keyboard_focus', 'selected_idle_language', 'selected_idle_layout', 'selected_idle_left_bar', 'selected_idle_left_gutter', 'selected_idle_left_margin', 'selected_idle_left_padding', 'selected_idle_line_leading', 'selected_idle_line_spacing', 'selected_idle_margin', 'selected_idle_maximum', 'selected_idle_maxsize', 'selected_idle_min_width', 'selected_idle_minimum', 'selected_idle_minwidth', 'selected_idle_mouse', 'selected_idle_nearest', 'selected_idle_newline_indent', 'selected_idle_offset', 'selected_idle_order_reverse', 'selected_idle_outlines', 'selected_idle_padding', 'selected_idle_pos', 'selected_idle_radius', 'selected_idle_rest_indent', 'selected_idle_right_bar', 'selected_idle_right_gutter', 'selected_idle_right_margin', 'selected_idle_right_padding', 'selected_idle_rotate', 'selected_idle_rotate_pad', 'selected_idle_ruby_style', 'selected_idle_size', 'selected_idle_size_group', 'selected_idle_slow_abortable', 'selected_idle_slow_cps', 'selected_idle_slow_cps_multiplier', 'selected_idle_sound', 'selected_idle_spacing', 'selected_idle_strikethrough', 'selected_idle_subpixel', 'selected_idle_text_align', 'selected_idle_text_y_fudge', 'selected_idle_thumb', 'selected_idle_thumb_offset', 'selected_idle_thumb_shadow', 'selected_idle_tooltip', 'selected_idle_top_bar', 'selected_idle_top_gutter', 'selected_idle_top_margin', 'selected_idle_top_padding', 'selected_idle_transform_anchor', 'selected_idle_underline', 'selected_idle_unscrollable', 'selected_idle_vertical', 'selected_idle_xalign', 'selected_idle_xanchor', 'selected_idle_xanchoraround', 'selected_idle_xaround', 'selected_idle_xcenter', 'selected_idle_xfill', 'selected_idle_xfit', 'selected_idle_xmargin', 'selected_idle_xmaximum', 'selected_idle_xminimum', 'selected_idle_xoffset', 'selected_idle_xpadding', 'selected_idle_xpan', 'selected_idle_xpos', 'selected_idle_xsize', 'selected_idle_xspacing', 'selected_idle_xtile', 'selected_idle_xysize', 'selected_idle_xzoom', 'selected_idle_yalign', 'selected_idle_yanchor', 'selected_idle_yanchoraround', 'selected_idle_yaround', 'selected_idle_ycenter', 'selected_idle_yfill', 'selected_idle_yfit', 'selected_idle_ymargin', 'selected_idle_ymaximum', 'selected_idle_yminimum', 'selected_idle_yoffset', 'selected_idle_ypadding', 'selected_idle_ypan', 'selected_idle_ypos', 'selected_idle_ysize', 'selected_idle_yspacing', 'selected_idle_ytile', 'selected_idle_yzoom', 'selected_idle_zoom', 'selected_insensitive', 'selected_insensitive_additive', 'selected_insensitive_adjust_spacing', 'selected_insensitive_align', 'selected_insensitive_alignaround', 'selected_insensitive_alpha', 'selected_insensitive_alt', 'selected_insensitive_anchor', 'selected_insensitive_angle', 'selected_insensitive_antialias', 'selected_insensitive_area', 'selected_insensitive_around', 'selected_insensitive_background', 'selected_insensitive_bar_invert', 'selected_insensitive_bar_resizing', 'selected_insensitive_bar_vertical', 'selected_insensitive_base_bar', 'selected_insensitive_black_color', 'selected_insensitive_bold', 'selected_insensitive_bottom_bar', 'selected_insensitive_bottom_gutter', 'selected_insensitive_bottom_margin', 'selected_insensitive_bottom_padding', 'selected_insensitive_box_layout', 'selected_insensitive_box_reverse', 'selected_insensitive_box_wrap', 'selected_insensitive_child', 'selected_insensitive_clipping', 'selected_insensitive_color', 'selected_insensitive_corner1', 'selected_insensitive_corner2', 'selected_insensitive_crop', 'selected_insensitive_crop_relative', 'selected_insensitive_debug', 'selected_insensitive_delay', 'selected_insensitive_drop_shadow', 'selected_insensitive_drop_shadow_color', 'selected_insensitive_events', 'selected_insensitive_first_indent', 'selected_insensitive_first_spacing', 'selected_insensitive_fit_first', 'selected_insensitive_focus_mask', 'selected_insensitive_font', 'selected_insensitive_foreground', 'selected_insensitive_hinting', 'selected_insensitive_hyperlink_functions', 'selected_insensitive_italic', 'selected_insensitive_justify', 'selected_insensitive_kerning', 'selected_insensitive_key_events', 'selected_insensitive_keyboard_focus', 'selected_insensitive_language', 'selected_insensitive_layout', 'selected_insensitive_left_bar', 'selected_insensitive_left_gutter', 'selected_insensitive_left_margin', 'selected_insensitive_left_padding', 'selected_insensitive_line_leading', 'selected_insensitive_line_spacing', 'selected_insensitive_margin', 'selected_insensitive_maximum', 'selected_insensitive_maxsize', 'selected_insensitive_min_width', 'selected_insensitive_minimum', 'selected_insensitive_minwidth', 'selected_insensitive_mouse', 'selected_insensitive_nearest', 'selected_insensitive_newline_indent', 'selected_insensitive_offset', 'selected_insensitive_order_reverse', 'selected_insensitive_outlines', 'selected_insensitive_padding', 'selected_insensitive_pos', 'selected_insensitive_radius', 'selected_insensitive_rest_indent', 'selected_insensitive_right_bar', 'selected_insensitive_right_gutter', 'selected_insensitive_right_margin', 'selected_insensitive_right_padding', 'selected_insensitive_rotate', 'selected_insensitive_rotate_pad', 'selected_insensitive_ruby_style', 'selected_insensitive_size', 'selected_insensitive_size_group', 'selected_insensitive_slow_abortable', 'selected_insensitive_slow_cps', 'selected_insensitive_slow_cps_multiplier', 'selected_insensitive_sound', 'selected_insensitive_spacing', 'selected_insensitive_strikethrough', 'selected_insensitive_subpixel', 'selected_insensitive_text_align', 'selected_insensitive_text_y_fudge', 'selected_insensitive_thumb', 'selected_insensitive_thumb_offset', 'selected_insensitive_thumb_shadow', 'selected_insensitive_tooltip', 'selected_insensitive_top_bar', 'selected_insensitive_top_gutter', 'selected_insensitive_top_margin', 'selected_insensitive_top_padding', 'selected_insensitive_transform_anchor', 'selected_insensitive_underline', 'selected_insensitive_unscrollable', 'selected_insensitive_vertical', 'selected_insensitive_xalign', 'selected_insensitive_xanchor', 'selected_insensitive_xanchoraround', 'selected_insensitive_xaround', 'selected_insensitive_xcenter', 'selected_insensitive_xfill', 'selected_insensitive_xfit', 'selected_insensitive_xmargin', 'selected_insensitive_xmaximum', 'selected_insensitive_xminimum', 'selected_insensitive_xoffset', 'selected_insensitive_xpadding', 'selected_insensitive_xpan', 'selected_insensitive_xpos', 'selected_insensitive_xsize', 'selected_insensitive_xspacing', 'selected_insensitive_xtile', 'selected_insensitive_xysize', 'selected_insensitive_xzoom', 'selected_insensitive_yalign', 'selected_insensitive_yanchor', 'selected_insensitive_yanchoraround', 'selected_insensitive_yaround', 'selected_insensitive_ycenter', 'selected_insensitive_yfill', 'selected_insensitive_yfit', 'selected_insensitive_ymargin', 'selected_insensitive_ymaximum', 'selected_insensitive_yminimum', 'selected_insensitive_yoffset', 'selected_insensitive_ypadding', 'selected_insensitive_ypan', 'selected_insensitive_ypos', 'selected_insensitive_ysize', 'selected_insensitive_yspacing', 'selected_insensitive_ytile', 'selected_insensitive_yzoom', 'selected_insensitive_zoom', 'selected_italic', 'selected_justify', 'selected_kerning', 'selected_key_events', 'selected_keyboard_focus', 'selected_language', 'selected_layout', 'selected_left_bar', 'selected_left_gutter', 'selected_left_margin', 'selected_left_padding', 'selected_line_leading', 'selected_line_spacing', 'selected_margin', 'selected_maximum', 'selected_maxsize', 'selected_min_width', 'selected_minimum', 'selected_minwidth', 'selected_mouse', 'selected_nearest', 'selected_newline_indent', 'selected_offset', 'selected_order_reverse', 'selected_outlines', 'selected_padding', 'selected_pos', 'selected_radius', 'selected_rest_indent', 'selected_right_bar', 'selected_right_gutter', 'selected_right_margin', 'selected_right_padding', 'selected_rotate', 'selected_rotate_pad', 'selected_ruby_style', 'selected_size', 'selected_size_group', 'selected_slow_abortable', 'selected_slow_cps', 'selected_slow_cps_multiplier', 'selected_sound', 'selected_spacing', 'selected_strikethrough', 'selected_subpixel', 'selected_text_align', 'selected_text_y_fudge', 'selected_thumb', 'selected_thumb_offset', 'selected_thumb_shadow', 'selected_tooltip', 'selected_top_bar', 'selected_top_gutter', 'selected_top_margin', 'selected_top_padding', 'selected_transform_anchor', 'selected_underline', 'selected_unscrollable', 'selected_vertical', 'selected_xalign', 'selected_xanchor', 'selected_xanchoraround', 'selected_xaround', 'selected_xcenter', 'selected_xfill', 'selected_xfit', 'selected_xmargin', 'selected_xmaximum', 'selected_xminimum', 'selected_xoffset', 'selected_xpadding', 'selected_xpan', 'selected_xpos', 'selected_xsize', 'selected_xspacing', 'selected_xtile', 'selected_xysize', 'selected_xzoom', 'selected_yalign', 'selected_yanchor', 'selected_yanchoraround', 'selected_yaround', 'selected_ycenter', 'selected_yfill', 'selected_yfit', 'selected_ymargin', 'selected_ymaximum', 'selected_yminimum', 'selected_yoffset', 'selected_ypadding', 'selected_ypan', 'selected_ypos', 'selected_ysize', 'selected_yspacing', 'selected_ytile', 'selected_yzoom', 'selected_zoom', 'sensitive', 'side_activate_align', 'side_activate_alt', 'side_activate_anchor', 'side_activate_area', 'side_activate_clipping', 'side_activate_debug', 'side_activate_maximum', 'side_activate_offset', 'side_activate_pos', 'side_activate_spacing', 'side_activate_tooltip', 'side_activate_xalign', 'side_activate_xanchor', 'side_activate_xcenter', 'side_activate_xfill', 'side_activate_xmaximum', 'side_activate_xoffset', 'side_activate_xpos', 'side_activate_xsize', 'side_activate_xysize', 'side_activate_yalign', 'side_activate_yanchor', 'side_activate_ycenter', 'side_activate_yfill', 'side_activate_ymaximum', 'side_activate_yoffset', 'side_activate_ypos', 'side_activate_ysize', 'side_align', 'side_alt', 'side_anchor', 'side_area', 'side_clipping', 'side_debug', 'side_hover_align', 'side_hover_alt', 'side_hover_anchor', 'side_hover_area', 'side_hover_clipping', 'side_hover_debug', 'side_hover_maximum', 'side_hover_offset', 'side_hover_pos', 'side_hover_spacing', 'side_hover_tooltip', 'side_hover_xalign', 'side_hover_xanchor', 'side_hover_xcenter', 'side_hover_xfill', 'side_hover_xmaximum', 'side_hover_xoffset', 'side_hover_xpos', 'side_hover_xsize', 'side_hover_xysize', 'side_hover_yalign', 'side_hover_yanchor', 'side_hover_ycenter', 'side_hover_yfill', 'side_hover_ymaximum', 'side_hover_yoffset', 'side_hover_ypos', 'side_hover_ysize', 'side_idle_align', 'side_idle_alt', 'side_idle_anchor', 'side_idle_area', 'side_idle_clipping', 'side_idle_debug', 'side_idle_maximum', 'side_idle_offset', 'side_idle_pos', 'side_idle_spacing', 'side_idle_tooltip', 'side_idle_xalign', 'side_idle_xanchor', 'side_idle_xcenter', 'side_idle_xfill', 'side_idle_xmaximum', 'side_idle_xoffset', 'side_idle_xpos', 'side_idle_xsize', 'side_idle_xysize', 'side_idle_yalign', 'side_idle_yanchor', 'side_idle_ycenter', 'side_idle_yfill', 'side_idle_ymaximum', 'side_idle_yoffset', 'side_idle_ypos', 'side_idle_ysize', 'side_insensitive_align', 'side_insensitive_alt', 'side_insensitive_anchor', 'side_insensitive_area', 'side_insensitive_clipping', 'side_insensitive_debug', 'side_insensitive_maximum', 'side_insensitive_offset', 'side_insensitive_pos', 'side_insensitive_spacing', 'side_insensitive_tooltip', 'side_insensitive_xalign', 'side_insensitive_xanchor', 'side_insensitive_xcenter', 'side_insensitive_xfill', 'side_insensitive_xmaximum', 'side_insensitive_xoffset', 'side_insensitive_xpos', 'side_insensitive_xsize', 'side_insensitive_xysize', 'side_insensitive_yalign', 'side_insensitive_yanchor', 'side_insensitive_ycenter', 'side_insensitive_yfill', 'side_insensitive_ymaximum', 'side_insensitive_yoffset', 'side_insensitive_ypos', 'side_insensitive_ysize', 'side_maximum', 'side_offset', 'side_pos', 'side_selected_activate_align', 'side_selected_activate_alt', 'side_selected_activate_anchor', 'side_selected_activate_area', 'side_selected_activate_clipping', 'side_selected_activate_debug', 'side_selected_activate_maximum', 'side_selected_activate_offset', 'side_selected_activate_pos', 'side_selected_activate_spacing', 'side_selected_activate_tooltip', 'side_selected_activate_xalign', 'side_selected_activate_xanchor', 'side_selected_activate_xcenter', 'side_selected_activate_xfill', 'side_selected_activate_xmaximum', 'side_selected_activate_xoffset', 'side_selected_activate_xpos', 'side_selected_activate_xsize', 'side_selected_activate_xysize', 'side_selected_activate_yalign', 'side_selected_activate_yanchor', 'side_selected_activate_ycenter', 'side_selected_activate_yfill', 'side_selected_activate_ymaximum', 'side_selected_activate_yoffset', 'side_selected_activate_ypos', 'side_selected_activate_ysize', 'side_selected_align', 'side_selected_alt', 'side_selected_anchor', 'side_selected_area', 'side_selected_clipping', 'side_selected_debug', 'side_selected_hover_align', 'side_selected_hover_alt', 'side_selected_hover_anchor', 'side_selected_hover_area', 'side_selected_hover_clipping', 'side_selected_hover_debug', 'side_selected_hover_maximum', 'side_selected_hover_offset', 'side_selected_hover_pos', 'side_selected_hover_spacing', 'side_selected_hover_tooltip', 'side_selected_hover_xalign', 'side_selected_hover_xanchor', 'side_selected_hover_xcenter', 'side_selected_hover_xfill', 'side_selected_hover_xmaximum', 'side_selected_hover_xoffset', 'side_selected_hover_xpos', 'side_selected_hover_xsize', 'side_selected_hover_xysize', 'side_selected_hover_yalign', 'side_selected_hover_yanchor', 'side_selected_hover_ycenter', 'side_selected_hover_yfill', 'side_selected_hover_ymaximum', 'side_selected_hover_yoffset', 'side_selected_hover_ypos', 'side_selected_hover_ysize', 'side_selected_idle_align', 'side_selected_idle_alt', 'side_selected_idle_anchor', 'side_selected_idle_area', 'side_selected_idle_clipping', 'side_selected_idle_debug', 'side_selected_idle_maximum', 'side_selected_idle_offset', 'side_selected_idle_pos', 'side_selected_idle_spacing', 'side_selected_idle_tooltip', 'side_selected_idle_xalign', 'side_selected_idle_xanchor', 'side_selected_idle_xcenter', 'side_selected_idle_xfill', 'side_selected_idle_xmaximum', 'side_selected_idle_xoffset', 'side_selected_idle_xpos', 'side_selected_idle_xsize', 'side_selected_idle_xysize', 'side_selected_idle_yalign', 'side_selected_idle_yanchor', 'side_selected_idle_ycenter', 'side_selected_idle_yfill', 'side_selected_idle_ymaximum', 'side_selected_idle_yoffset', 'side_selected_idle_ypos', 'side_selected_idle_ysize', 'side_selected_insensitive_align', 'side_selected_insensitive_alt', 'side_selected_insensitive_anchor', 'side_selected_insensitive_area', 'side_selected_insensitive_clipping', 'side_selected_insensitive_debug', 'side_selected_insensitive_maximum', 'side_selected_insensitive_offset', 'side_selected_insensitive_pos', 'side_selected_insensitive_spacing', 'side_selected_insensitive_tooltip', 'side_selected_insensitive_xalign', 'side_selected_insensitive_xanchor', 'side_selected_insensitive_xcenter', 'side_selected_insensitive_xfill', 'side_selected_insensitive_xmaximum', 'side_selected_insensitive_xoffset', 'side_selected_insensitive_xpos', 'side_selected_insensitive_xsize', 'side_selected_insensitive_xysize', 'side_selected_insensitive_yalign', 'side_selected_insensitive_yanchor', 'side_selected_insensitive_ycenter', 'side_selected_insensitive_yfill', 'side_selected_insensitive_ymaximum', 'side_selected_insensitive_yoffset', 'side_selected_insensitive_ypos', 'side_selected_insensitive_ysize', 'side_selected_maximum', 'side_selected_offset', 'side_selected_pos', 'side_selected_spacing', 'side_selected_tooltip', 'side_selected_xalign', 'side_selected_xanchor', 'side_selected_xcenter', 'side_selected_xfill', 'side_selected_xmaximum', 'side_selected_xoffset', 'side_selected_xpos', 'side_selected_xsize', 'side_selected_xysize', 'side_selected_yalign', 'side_selected_yanchor', 'side_selected_ycenter', 'side_selected_yfill', 'side_selected_ymaximum', 'side_selected_yoffset', 'side_selected_ypos', 'side_selected_ysize', 'side_spacing', 'side_tooltip', 'side_xalign', 'side_xanchor', 'side_xcenter', 'side_xfill', 'side_xmaximum', 'side_xoffset', 'side_xpos', 'side_xsize', 'side_xysize', 'side_yalign', 'side_yanchor', 'side_ycenter', 'side_yfill', 'side_ymaximum', 'side_yoffset', 'side_ypos', 'side_ysize', 'size', 'size_group', 'slow', 'slow_abortable', 'slow_cps', 'slow_cps_multiplier', 'slow_done', 'sound', 'spacing', 'strikethrough', 'style_group', 'style_prefix', 'style_suffix', 'subpixel', 'substitute', 'suffix', 'text_activate_adjust_spacing', 'text_activate_align', 'text_activate_alt', 'text_activate_anchor', 'text_activate_antialias', 'text_activate_area', 'text_activate_black_color', 'text_activate_bold', 'text_activate_clipping', 'text_activate_color', 'text_activate_debug', 'text_activate_drop_shadow', 'text_activate_drop_shadow_color', 'text_activate_first_indent', 'text_activate_font', 'text_activate_hinting', 'text_activate_hyperlink_functions', 'text_activate_italic', 'text_activate_justify', 'text_activate_kerning', 'text_activate_language', 'text_activate_layout', 'text_activate_line_leading', 'text_activate_line_spacing', 'text_activate_maximum', 'text_activate_min_width', 'text_activate_minimum', 'text_activate_minwidth', 'text_activate_newline_indent', 'text_activate_offset', 'text_activate_outlines', 'text_activate_pos', 'text_activate_rest_indent', 'text_activate_ruby_style', 'text_activate_size', 'text_activate_slow_abortable', 'text_activate_slow_cps', 'text_activate_slow_cps_multiplier', 'text_activate_strikethrough', 'text_activate_text_align', 'text_activate_text_y_fudge', 'text_activate_tooltip', 'text_activate_underline', 'text_activate_vertical', 'text_activate_xalign', 'text_activate_xanchor', 'text_activate_xcenter', 'text_activate_xfill', 'text_activate_xmaximum', 'text_activate_xminimum', 'text_activate_xoffset', 'text_activate_xpos', 'text_activate_xsize', 'text_activate_xysize', 'text_activate_yalign', 'text_activate_yanchor', 'text_activate_ycenter', 'text_activate_yfill', 'text_activate_ymaximum', 'text_activate_yminimum', 'text_activate_yoffset', 'text_activate_ypos', 'text_activate_ysize', 'text_adjust_spacing', 'text_align', 'text_alt', 'text_anchor', 'text_antialias', 'text_area', 'text_black_color', 'text_bold', 'text_clipping', 'text_color', 'text_debug', 'text_drop_shadow', 'text_drop_shadow_color', 'text_first_indent', 'text_font', 'text_hinting', 'text_hover_adjust_spacing', 'text_hover_align', 'text_hover_alt', 'text_hover_anchor', 'text_hover_antialias', 'text_hover_area', 'text_hover_black_color', 'text_hover_bold', 'text_hover_clipping', 'text_hover_color', 'text_hover_debug', 'text_hover_drop_shadow', 'text_hover_drop_shadow_color', 'text_hover_first_indent', 'text_hover_font', 'text_hover_hinting', 'text_hover_hyperlink_functions', 'text_hover_italic', 'text_hover_justify', 'text_hover_kerning', 'text_hover_language', 'text_hover_layout', 'text_hover_line_leading', 'text_hover_line_spacing', 'text_hover_maximum', 'text_hover_min_width', 'text_hover_minimum', 'text_hover_minwidth', 'text_hover_newline_indent', 'text_hover_offset', 'text_hover_outlines', 'text_hover_pos', 'text_hover_rest_indent', 'text_hover_ruby_style', 'text_hover_size', 'text_hover_slow_abortable', 'text_hover_slow_cps', 'text_hover_slow_cps_multiplier', 'text_hover_strikethrough', 'text_hover_text_align', 'text_hover_text_y_fudge', 'text_hover_tooltip', 'text_hover_underline', 'text_hover_vertical', 'text_hover_xalign', 'text_hover_xanchor', 'text_hover_xcenter', 'text_hover_xfill', 'text_hover_xmaximum', 'text_hover_xminimum', 'text_hover_xoffset', 'text_hover_xpos', 'text_hover_xsize', 'text_hover_xysize', 'text_hover_yalign', 'text_hover_yanchor', 'text_hover_ycenter', 'text_hover_yfill', 'text_hover_ymaximum', 'text_hover_yminimum', 'text_hover_yoffset', 'text_hover_ypos', 'text_hover_ysize', 'text_hyperlink_functions', 'text_idle_adjust_spacing', 'text_idle_align', 'text_idle_alt', 'text_idle_anchor', 'text_idle_antialias', 'text_idle_area', 'text_idle_black_color', 'text_idle_bold', 'text_idle_clipping', 'text_idle_color', 'text_idle_debug', 'text_idle_drop_shadow', 'text_idle_drop_shadow_color', 'text_idle_first_indent', 'text_idle_font', 'text_idle_hinting', 'text_idle_hyperlink_functions', 'text_idle_italic', 'text_idle_justify', 'text_idle_kerning', 'text_idle_language', 'text_idle_layout', 'text_idle_line_leading', 'text_idle_line_spacing', 'text_idle_maximum', 'text_idle_min_width', 'text_idle_minimum', 'text_idle_minwidth', 'text_idle_newline_indent', 'text_idle_offset', 'text_idle_outlines', 'text_idle_pos', 'text_idle_rest_indent', 'text_idle_ruby_style', 'text_idle_size', 'text_idle_slow_abortable', 'text_idle_slow_cps', 'text_idle_slow_cps_multiplier', 'text_idle_strikethrough', 'text_idle_text_align', 'text_idle_text_y_fudge', 'text_idle_tooltip', 'text_idle_underline', 'text_idle_vertical', 'text_idle_xalign', 'text_idle_xanchor', 'text_idle_xcenter', 'text_idle_xfill', 'text_idle_xmaximum', 'text_idle_xminimum', 'text_idle_xoffset', 'text_idle_xpos', 'text_idle_xsize', 'text_idle_xysize', 'text_idle_yalign', 'text_idle_yanchor', 'text_idle_ycenter', 'text_idle_yfill', 'text_idle_ymaximum', 'text_idle_yminimum', 'text_idle_yoffset', 'text_idle_ypos', 'text_idle_ysize', 'text_insensitive_adjust_spacing', 'text_insensitive_align', 'text_insensitive_alt', 'text_insensitive_anchor', 'text_insensitive_antialias', 'text_insensitive_area', 'text_insensitive_black_color', 'text_insensitive_bold', 'text_insensitive_clipping', 'text_insensitive_color', 'text_insensitive_debug', 'text_insensitive_drop_shadow', 'text_insensitive_drop_shadow_color', 'text_insensitive_first_indent', 'text_insensitive_font', 'text_insensitive_hinting', 'text_insensitive_hyperlink_functions', 'text_insensitive_italic', 'text_insensitive_justify', 'text_insensitive_kerning', 'text_insensitive_language', 'text_insensitive_layout', 'text_insensitive_line_leading', 'text_insensitive_line_spacing', 'text_insensitive_maximum', 'text_insensitive_min_width', 'text_insensitive_minimum', 'text_insensitive_minwidth', 'text_insensitive_newline_indent', 'text_insensitive_offset', 'text_insensitive_outlines', 'text_insensitive_pos', 'text_insensitive_rest_indent', 'text_insensitive_ruby_style', 'text_insensitive_size', 'text_insensitive_slow_abortable', 'text_insensitive_slow_cps', 'text_insensitive_slow_cps_multiplier', 'text_insensitive_strikethrough', 'text_insensitive_text_align', 'text_insensitive_text_y_fudge', 'text_insensitive_tooltip', 'text_insensitive_underline', 'text_insensitive_vertical', 'text_insensitive_xalign', 'text_insensitive_xanchor', 'text_insensitive_xcenter', 'text_insensitive_xfill', 'text_insensitive_xmaximum', 'text_insensitive_xminimum', 'text_insensitive_xoffset', 'text_insensitive_xpos', 'text_insensitive_xsize', 'text_insensitive_xysize', 'text_insensitive_yalign', 'text_insensitive_yanchor', 'text_insensitive_ycenter', 'text_insensitive_yfill', 'text_insensitive_ymaximum', 'text_insensitive_yminimum', 'text_insensitive_yoffset', 'text_insensitive_ypos', 'text_insensitive_ysize', 'text_italic', 'text_justify', 'text_kerning', 'text_language', 'text_layout', 'text_line_leading', 'text_line_spacing', 'text_maximum', 'text_min_width', 'text_minimum', 'text_minwidth', 'text_newline_indent', 'text_offset', 'text_outlines', 'text_pos', 'text_rest_indent', 'text_ruby_style', 'text_selected_activate_adjust_spacing', 'text_selected_activate_align', 'text_selected_activate_alt', 'text_selected_activate_anchor', 'text_selected_activate_antialias', 'text_selected_activate_area', 'text_selected_activate_black_color', 'text_selected_activate_bold', 'text_selected_activate_clipping', 'text_selected_activate_color', 'text_selected_activate_debug', 'text_selected_activate_drop_shadow', 'text_selected_activate_drop_shadow_color', 'text_selected_activate_first_indent', 'text_selected_activate_font', 'text_selected_activate_hinting', 'text_selected_activate_hyperlink_functions', 'text_selected_activate_italic', 'text_selected_activate_justify', 'text_selected_activate_kerning', 'text_selected_activate_language', 'text_selected_activate_layout', 'text_selected_activate_line_leading', 'text_selected_activate_line_spacing', 'text_selected_activate_maximum', 'text_selected_activate_min_width', 'text_selected_activate_minimum', 'text_selected_activate_minwidth', 'text_selected_activate_newline_indent', 'text_selected_activate_offset', 'text_selected_activate_outlines', 'text_selected_activate_pos', 'text_selected_activate_rest_indent', 'text_selected_activate_ruby_style', 'text_selected_activate_size', 'text_selected_activate_slow_abortable', 'text_selected_activate_slow_cps', 'text_selected_activate_slow_cps_multiplier', 'text_selected_activate_strikethrough', 'text_selected_activate_text_align', 'text_selected_activate_text_y_fudge', 'text_selected_activate_tooltip', 'text_selected_activate_underline', 'text_selected_activate_vertical', 'text_selected_activate_xalign', 'text_selected_activate_xanchor', 'text_selected_activate_xcenter', 'text_selected_activate_xfill', 'text_selected_activate_xmaximum', 'text_selected_activate_xminimum', 'text_selected_activate_xoffset', 'text_selected_activate_xpos', 'text_selected_activate_xsize', 'text_selected_activate_xysize', 'text_selected_activate_yalign', 'text_selected_activate_yanchor', 'text_selected_activate_ycenter', 'text_selected_activate_yfill', 'text_selected_activate_ymaximum', 'text_selected_activate_yminimum', 'text_selected_activate_yoffset', 'text_selected_activate_ypos', 'text_selected_activate_ysize', 'text_selected_adjust_spacing', 'text_selected_align', 'text_selected_alt', 'text_selected_anchor', 'text_selected_antialias', 'text_selected_area', 'text_selected_black_color', 'text_selected_bold', 'text_selected_clipping', 'text_selected_color', 'text_selected_debug', 'text_selected_drop_shadow', 'text_selected_drop_shadow_color', 'text_selected_first_indent', 'text_selected_font', 'text_selected_hinting', 'text_selected_hover_adjust_spacing', 'text_selected_hover_align', 'text_selected_hover_alt', 'text_selected_hover_anchor', 'text_selected_hover_antialias', 'text_selected_hover_area', 'text_selected_hover_black_color', 'text_selected_hover_bold', 'text_selected_hover_clipping', 'text_selected_hover_color', 'text_selected_hover_debug', 'text_selected_hover_drop_shadow', 'text_selected_hover_drop_shadow_color', 'text_selected_hover_first_indent', 'text_selected_hover_font', 'text_selected_hover_hinting', 'text_selected_hover_hyperlink_functions', 'text_selected_hover_italic', 'text_selected_hover_justify', 'text_selected_hover_kerning', 'text_selected_hover_language', 'text_selected_hover_layout', 'text_selected_hover_line_leading', 'text_selected_hover_line_spacing', 'text_selected_hover_maximum', 'text_selected_hover_min_width', 'text_selected_hover_minimum', 'text_selected_hover_minwidth', 'text_selected_hover_newline_indent', 'text_selected_hover_offset', 'text_selected_hover_outlines', 'text_selected_hover_pos', 'text_selected_hover_rest_indent', 'text_selected_hover_ruby_style', 'text_selected_hover_size', 'text_selected_hover_slow_abortable', 'text_selected_hover_slow_cps', 'text_selected_hover_slow_cps_multiplier', 'text_selected_hover_strikethrough', 'text_selected_hover_text_align', 'text_selected_hover_text_y_fudge', 'text_selected_hover_tooltip', 'text_selected_hover_underline', 'text_selected_hover_vertical', 'text_selected_hover_xalign', 'text_selected_hover_xanchor', 'text_selected_hover_xcenter', 'text_selected_hover_xfill', 'text_selected_hover_xmaximum', 'text_selected_hover_xminimum', 'text_selected_hover_xoffset', 'text_selected_hover_xpos', 'text_selected_hover_xsize', 'text_selected_hover_xysize', 'text_selected_hover_yalign', 'text_selected_hover_yanchor', 'text_selected_hover_ycenter', 'text_selected_hover_yfill', 'text_selected_hover_ymaximum', 'text_selected_hover_yminimum', 'text_selected_hover_yoffset', 'text_selected_hover_ypos', 'text_selected_hover_ysize', 'text_selected_hyperlink_functions', 'text_selected_idle_adjust_spacing', 'text_selected_idle_align', 'text_selected_idle_alt', 'text_selected_idle_anchor', 'text_selected_idle_antialias', 'text_selected_idle_area', 'text_selected_idle_black_color', 'text_selected_idle_bold', 'text_selected_idle_clipping', 'text_selected_idle_color', 'text_selected_idle_debug', 'text_selected_idle_drop_shadow', 'text_selected_idle_drop_shadow_color', 'text_selected_idle_first_indent', 'text_selected_idle_font', 'text_selected_idle_hinting', 'text_selected_idle_hyperlink_functions', 'text_selected_idle_italic', 'text_selected_idle_justify', 'text_selected_idle_kerning', 'text_selected_idle_language', 'text_selected_idle_layout', 'text_selected_idle_line_leading', 'text_selected_idle_line_spacing', 'text_selected_idle_maximum', 'text_selected_idle_min_width', 'text_selected_idle_minimum', 'text_selected_idle_minwidth', 'text_selected_idle_newline_indent', 'text_selected_idle_offset', 'text_selected_idle_outlines', 'text_selected_idle_pos', 'text_selected_idle_rest_indent', 'text_selected_idle_ruby_style', 'text_selected_idle_size', 'text_selected_idle_slow_abortable', 'text_selected_idle_slow_cps', 'text_selected_idle_slow_cps_multiplier', 'text_selected_idle_strikethrough', 'text_selected_idle_text_align', 'text_selected_idle_text_y_fudge', 'text_selected_idle_tooltip', 'text_selected_idle_underline', 'text_selected_idle_vertical', 'text_selected_idle_xalign', 'text_selected_idle_xanchor', 'text_selected_idle_xcenter', 'text_selected_idle_xfill', 'text_selected_idle_xmaximum', 'text_selected_idle_xminimum', 'text_selected_idle_xoffset', 'text_selected_idle_xpos', 'text_selected_idle_xsize', 'text_selected_idle_xysize', 'text_selected_idle_yalign', 'text_selected_idle_yanchor', 'text_selected_idle_ycenter', 'text_selected_idle_yfill', 'text_selected_idle_ymaximum', 'text_selected_idle_yminimum', 'text_selected_idle_yoffset', 'text_selected_idle_ypos', 'text_selected_idle_ysize', 'text_selected_insensitive_adjust_spacing', 'text_selected_insensitive_align', 'text_selected_insensitive_alt', 'text_selected_insensitive_anchor', 'text_selected_insensitive_antialias', 'text_selected_insensitive_area', 'text_selected_insensitive_black_color', 'text_selected_insensitive_bold', 'text_selected_insensitive_clipping', 'text_selected_insensitive_color', 'text_selected_insensitive_debug', 'text_selected_insensitive_drop_shadow', 'text_selected_insensitive_drop_shadow_color', 'text_selected_insensitive_first_indent', 'text_selected_insensitive_font', 'text_selected_insensitive_hinting', 'text_selected_insensitive_hyperlink_functions', 'text_selected_insensitive_italic', 'text_selected_insensitive_justify', 'text_selected_insensitive_kerning', 'text_selected_insensitive_language', 'text_selected_insensitive_layout', 'text_selected_insensitive_line_leading', 'text_selected_insensitive_line_spacing', 'text_selected_insensitive_maximum', 'text_selected_insensitive_min_width', 'text_selected_insensitive_minimum', 'text_selected_insensitive_minwidth', 'text_selected_insensitive_newline_indent', 'text_selected_insensitive_offset', 'text_selected_insensitive_outlines', 'text_selected_insensitive_pos', 'text_selected_insensitive_rest_indent', 'text_selected_insensitive_ruby_style', 'text_selected_insensitive_size', 'text_selected_insensitive_slow_abortable', 'text_selected_insensitive_slow_cps', 'text_selected_insensitive_slow_cps_multiplier', 'text_selected_insensitive_strikethrough', 'text_selected_insensitive_text_align', 'text_selected_insensitive_text_y_fudge', 'text_selected_insensitive_tooltip', 'text_selected_insensitive_underline', 'text_selected_insensitive_vertical', 'text_selected_insensitive_xalign', 'text_selected_insensitive_xanchor', 'text_selected_insensitive_xcenter', 'text_selected_insensitive_xfill', 'text_selected_insensitive_xmaximum', 'text_selected_insensitive_xminimum', 'text_selected_insensitive_xoffset', 'text_selected_insensitive_xpos', 'text_selected_insensitive_xsize', 'text_selected_insensitive_xysize', 'text_selected_insensitive_yalign', 'text_selected_insensitive_yanchor', 'text_selected_insensitive_ycenter', 'text_selected_insensitive_yfill', 'text_selected_insensitive_ymaximum', 'text_selected_insensitive_yminimum', 'text_selected_insensitive_yoffset', 'text_selected_insensitive_ypos', 'text_selected_insensitive_ysize', 'text_selected_italic', 'text_selected_justify', 'text_selected_kerning', 'text_selected_language', 'text_selected_layout', 'text_selected_line_leading', 'text_selected_line_spacing', 'text_selected_maximum', 'text_selected_min_width', 'text_selected_minimum', 'text_selected_minwidth', 'text_selected_newline_indent', 'text_selected_offset', 'text_selected_outlines', 'text_selected_pos', 'text_selected_rest_indent', 'text_selected_ruby_style', 'text_selected_size', 'text_selected_slow_abortable', 'text_selected_slow_cps', 'text_selected_slow_cps_multiplier', 'text_selected_strikethrough', 'text_selected_text_align', 'text_selected_text_y_fudge', 'text_selected_tooltip', 'text_selected_underline', 'text_selected_vertical', 'text_selected_xalign', 'text_selected_xanchor', 'text_selected_xcenter', 'text_selected_xfill', 'text_selected_xmaximum', 'text_selected_xminimum', 'text_selected_xoffset', 'text_selected_xpos', 'text_selected_xsize', 'text_selected_xysize', 'text_selected_yalign', 'text_selected_yanchor', 'text_selected_ycenter', 'text_selected_yfill', 'text_selected_ymaximum', 'text_selected_yminimum', 'text_selected_yoffset', 'text_selected_ypos', 'text_selected_ysize', 'text_size', 'text_slow_abortable', 'text_slow_cps', 'text_slow_cps_multiplier', 'text_strikethrough', 'text_style', 'text_text_align', 'text_text_y_fudge', 'text_tooltip', 'text_underline', 'text_vertical', 'text_xalign', 'text_xanchor', 'text_xcenter', 'text_xfill', 'text_xmaximum', 'text_xminimum', 'text_xoffset', 'text_xpos', 'text_xsize', 'text_xysize', 'text_y_fudge', 'text_yalign', 'text_yanchor', 'text_ycenter', 'text_yfill', 'text_ymaximum', 'text_yminimum', 'text_yoffset', 'text_ypos', 'text_ysize', 'thumb', 'thumb_offset', 'thumb_shadow', 'tooltip', 'top_bar', 'top_gutter', 'top_margin', 'top_padding', 'transform_anchor', 'transpose', 'underline', 'unhovered', 'unscrollable', 'value', 'variant', 'vertical', 'viewport_activate_align', 'viewport_activate_alt', 'viewport_activate_anchor', 'viewport_activate_area', 'viewport_activate_clipping', 'viewport_activate_debug', 'viewport_activate_maximum', 'viewport_activate_offset', 'viewport_activate_pos', 'viewport_activate_tooltip', 'viewport_activate_xalign', 'viewport_activate_xanchor', 'viewport_activate_xcenter', 'viewport_activate_xfill', 'viewport_activate_xmaximum', 'viewport_activate_xoffset', 'viewport_activate_xpos', 'viewport_activate_xsize', 'viewport_activate_xysize', 'viewport_activate_yalign', 'viewport_activate_yanchor', 'viewport_activate_ycenter', 'viewport_activate_yfill', 'viewport_activate_ymaximum', 'viewport_activate_yoffset', 'viewport_activate_ypos', 'viewport_activate_ysize', 'viewport_align', 'viewport_alt', 'viewport_anchor', 'viewport_area', 'viewport_clipping', 'viewport_debug', 'viewport_hover_align', 'viewport_hover_alt', 'viewport_hover_anchor', 'viewport_hover_area', 'viewport_hover_clipping', 'viewport_hover_debug', 'viewport_hover_maximum', 'viewport_hover_offset', 'viewport_hover_pos', 'viewport_hover_tooltip', 'viewport_hover_xalign', 'viewport_hover_xanchor', 'viewport_hover_xcenter', 'viewport_hover_xfill', 'viewport_hover_xmaximum', 'viewport_hover_xoffset', 'viewport_hover_xpos', 'viewport_hover_xsize', 'viewport_hover_xysize', 'viewport_hover_yalign', 'viewport_hover_yanchor', 'viewport_hover_ycenter', 'viewport_hover_yfill', 'viewport_hover_ymaximum', 'viewport_hover_yoffset', 'viewport_hover_ypos', 'viewport_hover_ysize', 'viewport_idle_align', 'viewport_idle_alt', 'viewport_idle_anchor', 'viewport_idle_area', 'viewport_idle_clipping', 'viewport_idle_debug', 'viewport_idle_maximum', 'viewport_idle_offset', 'viewport_idle_pos', 'viewport_idle_tooltip', 'viewport_idle_xalign', 'viewport_idle_xanchor', 'viewport_idle_xcenter', 'viewport_idle_xfill', 'viewport_idle_xmaximum', 'viewport_idle_xoffset', 'viewport_idle_xpos', 'viewport_idle_xsize', 'viewport_idle_xysize', 'viewport_idle_yalign', 'viewport_idle_yanchor', 'viewport_idle_ycenter', 'viewport_idle_yfill', 'viewport_idle_ymaximum', 'viewport_idle_yoffset', 'viewport_idle_ypos', 'viewport_idle_ysize', 'viewport_insensitive_align', 'viewport_insensitive_alt', 'viewport_insensitive_anchor', 'viewport_insensitive_area', 'viewport_insensitive_clipping', 'viewport_insensitive_debug', 'viewport_insensitive_maximum', 'viewport_insensitive_offset', 'viewport_insensitive_pos', 'viewport_insensitive_tooltip', 'viewport_insensitive_xalign', 'viewport_insensitive_xanchor', 'viewport_insensitive_xcenter', 'viewport_insensitive_xfill', 'viewport_insensitive_xmaximum', 'viewport_insensitive_xoffset', 'viewport_insensitive_xpos', 'viewport_insensitive_xsize', 'viewport_insensitive_xysize', 'viewport_insensitive_yalign', 'viewport_insensitive_yanchor', 'viewport_insensitive_ycenter', 'viewport_insensitive_yfill', 'viewport_insensitive_ymaximum', 'viewport_insensitive_yoffset', 'viewport_insensitive_ypos', 'viewport_insensitive_ysize', 'viewport_maximum', 'viewport_offset', 'viewport_pos', 'viewport_selected_activate_align', 'viewport_selected_activate_alt', 'viewport_selected_activate_anchor', 'viewport_selected_activate_area', 'viewport_selected_activate_clipping', 'viewport_selected_activate_debug', 'viewport_selected_activate_maximum', 'viewport_selected_activate_offset', 'viewport_selected_activate_pos', 'viewport_selected_activate_tooltip', 'viewport_selected_activate_xalign', 'viewport_selected_activate_xanchor', 'viewport_selected_activate_xcenter', 'viewport_selected_activate_xfill', 'viewport_selected_activate_xmaximum', 'viewport_selected_activate_xoffset', 'viewport_selected_activate_xpos', 'viewport_selected_activate_xsize', 'viewport_selected_activate_xysize', 'viewport_selected_activate_yalign', 'viewport_selected_activate_yanchor', 'viewport_selected_activate_ycenter', 'viewport_selected_activate_yfill', 'viewport_selected_activate_ymaximum', 'viewport_selected_activate_yoffset', 'viewport_selected_activate_ypos', 'viewport_selected_activate_ysize', 'viewport_selected_align', 'viewport_selected_alt', 'viewport_selected_anchor', 'viewport_selected_area', 'viewport_selected_clipping', 'viewport_selected_debug', 'viewport_selected_hover_align', 'viewport_selected_hover_alt', 'viewport_selected_hover_anchor', 'viewport_selected_hover_area', 'viewport_selected_hover_clipping', 'viewport_selected_hover_debug', 'viewport_selected_hover_maximum', 'viewport_selected_hover_offset', 'viewport_selected_hover_pos', 'viewport_selected_hover_tooltip', 'viewport_selected_hover_xalign', 'viewport_selected_hover_xanchor', 'viewport_selected_hover_xcenter', 'viewport_selected_hover_xfill', 'viewport_selected_hover_xmaximum', 'viewport_selected_hover_xoffset', 'viewport_selected_hover_xpos', 'viewport_selected_hover_xsize', 'viewport_selected_hover_xysize', 'viewport_selected_hover_yalign', 'viewport_selected_hover_yanchor', 'viewport_selected_hover_ycenter', 'viewport_selected_hover_yfill', 'viewport_selected_hover_ymaximum', 'viewport_selected_hover_yoffset', 'viewport_selected_hover_ypos', 'viewport_selected_hover_ysize', 'viewport_selected_idle_align', 'viewport_selected_idle_alt', 'viewport_selected_idle_anchor', 'viewport_selected_idle_area', 'viewport_selected_idle_clipping', 'viewport_selected_idle_debug', 'viewport_selected_idle_maximum', 'viewport_selected_idle_offset', 'viewport_selected_idle_pos', 'viewport_selected_idle_tooltip', 'viewport_selected_idle_xalign', 'viewport_selected_idle_xanchor', 'viewport_selected_idle_xcenter', 'viewport_selected_idle_xfill', 'viewport_selected_idle_xmaximum', 'viewport_selected_idle_xoffset', 'viewport_selected_idle_xpos', 'viewport_selected_idle_xsize', 'viewport_selected_idle_xysize', 'viewport_selected_idle_yalign', 'viewport_selected_idle_yanchor', 'viewport_selected_idle_ycenter', 'viewport_selected_idle_yfill', 'viewport_selected_idle_ymaximum', 'viewport_selected_idle_yoffset', 'viewport_selected_idle_ypos', 'viewport_selected_idle_ysize', 'viewport_selected_insensitive_align', 'viewport_selected_insensitive_alt', 'viewport_selected_insensitive_anchor', 'viewport_selected_insensitive_area', 'viewport_selected_insensitive_clipping', 'viewport_selected_insensitive_debug', 'viewport_selected_insensitive_maximum', 'viewport_selected_insensitive_offset', 'viewport_selected_insensitive_pos', 'viewport_selected_insensitive_tooltip', 'viewport_selected_insensitive_xalign', 'viewport_selected_insensitive_xanchor', 'viewport_selected_insensitive_xcenter', 'viewport_selected_insensitive_xfill', 'viewport_selected_insensitive_xmaximum', 'viewport_selected_insensitive_xoffset', 'viewport_selected_insensitive_xpos', 'viewport_selected_insensitive_xsize', 'viewport_selected_insensitive_xysize', 'viewport_selected_insensitive_yalign', 'viewport_selected_insensitive_yanchor', 'viewport_selected_insensitive_ycenter', 'viewport_selected_insensitive_yfill', 'viewport_selected_insensitive_ymaximum', 'viewport_selected_insensitive_yoffset', 'viewport_selected_insensitive_ypos', 'viewport_selected_insensitive_ysize', 'viewport_selected_maximum', 'viewport_selected_offset', 'viewport_selected_pos', 'viewport_selected_tooltip', 'viewport_selected_xalign', 'viewport_selected_xanchor', 'viewport_selected_xcenter', 'viewport_selected_xfill', 'viewport_selected_xmaximum', 'viewport_selected_xoffset', 'viewport_selected_xpos', 'viewport_selected_xsize', 'viewport_selected_xysize', 'viewport_selected_yalign', 'viewport_selected_yanchor', 'viewport_selected_ycenter', 'viewport_selected_yfill', 'viewport_selected_ymaximum', 'viewport_selected_yoffset', 'viewport_selected_ypos', 'viewport_selected_ysize', 'viewport_tooltip', 'viewport_xalign', 'viewport_xanchor', 'viewport_xcenter', 'viewport_xfill', 'viewport_xmaximum', 'viewport_xoffset', 'viewport_xpos', 'viewport_xsize', 'viewport_xysize', 'viewport_yalign', 'viewport_yanchor', 'viewport_ycenter', 'viewport_yfill', 'viewport_ymaximum', 'viewport_yoffset', 'viewport_ypos', 'viewport_ysize', 'vscrollbar_activate_align', 'vscrollbar_activate_alt', 'vscrollbar_activate_anchor', 'vscrollbar_activate_area', 'vscrollbar_activate_bar_invert', 'vscrollbar_activate_bar_resizing', 'vscrollbar_activate_bar_vertical', 'vscrollbar_activate_base_bar', 'vscrollbar_activate_bottom_bar', 'vscrollbar_activate_bottom_gutter', 'vscrollbar_activate_clipping', 'vscrollbar_activate_debug', 'vscrollbar_activate_keyboard_focus', 'vscrollbar_activate_left_bar', 'vscrollbar_activate_left_gutter', 'vscrollbar_activate_maximum', 'vscrollbar_activate_mouse', 'vscrollbar_activate_offset', 'vscrollbar_activate_pos', 'vscrollbar_activate_right_bar', 'vscrollbar_activate_right_gutter', 'vscrollbar_activate_thumb', 'vscrollbar_activate_thumb_offset', 'vscrollbar_activate_thumb_shadow', 'vscrollbar_activate_tooltip', 'vscrollbar_activate_top_bar', 'vscrollbar_activate_top_gutter', 'vscrollbar_activate_unscrollable', 'vscrollbar_activate_xalign', 'vscrollbar_activate_xanchor', 'vscrollbar_activate_xcenter', 'vscrollbar_activate_xfill', 'vscrollbar_activate_xmaximum', 'vscrollbar_activate_xoffset', 'vscrollbar_activate_xpos', 'vscrollbar_activate_xsize', 'vscrollbar_activate_xysize', 'vscrollbar_activate_yalign', 'vscrollbar_activate_yanchor', 'vscrollbar_activate_ycenter', 'vscrollbar_activate_yfill', 'vscrollbar_activate_ymaximum', 'vscrollbar_activate_yoffset', 'vscrollbar_activate_ypos', 'vscrollbar_activate_ysize', 'vscrollbar_align', 'vscrollbar_alt', 'vscrollbar_anchor', 'vscrollbar_area', 'vscrollbar_bar_invert', 'vscrollbar_bar_resizing', 'vscrollbar_bar_vertical', 'vscrollbar_base_bar', 'vscrollbar_bottom_bar', 'vscrollbar_bottom_gutter', 'vscrollbar_clipping', 'vscrollbar_debug', 'vscrollbar_hover_align', 'vscrollbar_hover_alt', 'vscrollbar_hover_anchor', 'vscrollbar_hover_area', 'vscrollbar_hover_bar_invert', 'vscrollbar_hover_bar_resizing', 'vscrollbar_hover_bar_vertical', 'vscrollbar_hover_base_bar', 'vscrollbar_hover_bottom_bar', 'vscrollbar_hover_bottom_gutter', 'vscrollbar_hover_clipping', 'vscrollbar_hover_debug', 'vscrollbar_hover_keyboard_focus', 'vscrollbar_hover_left_bar', 'vscrollbar_hover_left_gutter', 'vscrollbar_hover_maximum', 'vscrollbar_hover_mouse', 'vscrollbar_hover_offset', 'vscrollbar_hover_pos', 'vscrollbar_hover_right_bar', 'vscrollbar_hover_right_gutter', 'vscrollbar_hover_thumb', 'vscrollbar_hover_thumb_offset', 'vscrollbar_hover_thumb_shadow', 'vscrollbar_hover_tooltip', 'vscrollbar_hover_top_bar', 'vscrollbar_hover_top_gutter', 'vscrollbar_hover_unscrollable', 'vscrollbar_hover_xalign', 'vscrollbar_hover_xanchor', 'vscrollbar_hover_xcenter', 'vscrollbar_hover_xfill', 'vscrollbar_hover_xmaximum', 'vscrollbar_hover_xoffset', 'vscrollbar_hover_xpos', 'vscrollbar_hover_xsize', 'vscrollbar_hover_xysize', 'vscrollbar_hover_yalign', 'vscrollbar_hover_yanchor', 'vscrollbar_hover_ycenter', 'vscrollbar_hover_yfill', 'vscrollbar_hover_ymaximum', 'vscrollbar_hover_yoffset', 'vscrollbar_hover_ypos', 'vscrollbar_hover_ysize', 'vscrollbar_idle_align', 'vscrollbar_idle_alt', 'vscrollbar_idle_anchor', 'vscrollbar_idle_area', 'vscrollbar_idle_bar_invert', 'vscrollbar_idle_bar_resizing', 'vscrollbar_idle_bar_vertical', 'vscrollbar_idle_base_bar', 'vscrollbar_idle_bottom_bar', 'vscrollbar_idle_bottom_gutter', 'vscrollbar_idle_clipping', 'vscrollbar_idle_debug', 'vscrollbar_idle_keyboard_focus', 'vscrollbar_idle_left_bar', 'vscrollbar_idle_left_gutter', 'vscrollbar_idle_maximum', 'vscrollbar_idle_mouse', 'vscrollbar_idle_offset', 'vscrollbar_idle_pos', 'vscrollbar_idle_right_bar', 'vscrollbar_idle_right_gutter', 'vscrollbar_idle_thumb', 'vscrollbar_idle_thumb_offset', 'vscrollbar_idle_thumb_shadow', 'vscrollbar_idle_tooltip', 'vscrollbar_idle_top_bar', 'vscrollbar_idle_top_gutter', 'vscrollbar_idle_unscrollable', 'vscrollbar_idle_xalign', 'vscrollbar_idle_xanchor', 'vscrollbar_idle_xcenter', 'vscrollbar_idle_xfill', 'vscrollbar_idle_xmaximum', 'vscrollbar_idle_xoffset', 'vscrollbar_idle_xpos', 'vscrollbar_idle_xsize', 'vscrollbar_idle_xysize', 'vscrollbar_idle_yalign', 'vscrollbar_idle_yanchor', 'vscrollbar_idle_ycenter', 'vscrollbar_idle_yfill', 'vscrollbar_idle_ymaximum', 'vscrollbar_idle_yoffset', 'vscrollbar_idle_ypos', 'vscrollbar_idle_ysize', 'vscrollbar_insensitive_align', 'vscrollbar_insensitive_alt', 'vscrollbar_insensitive_anchor', 'vscrollbar_insensitive_area', 'vscrollbar_insensitive_bar_invert', 'vscrollbar_insensitive_bar_resizing', 'vscrollbar_insensitive_bar_vertical', 'vscrollbar_insensitive_base_bar', 'vscrollbar_insensitive_bottom_bar', 'vscrollbar_insensitive_bottom_gutter', 'vscrollbar_insensitive_clipping', 'vscrollbar_insensitive_debug', 'vscrollbar_insensitive_keyboard_focus', 'vscrollbar_insensitive_left_bar', 'vscrollbar_insensitive_left_gutter', 'vscrollbar_insensitive_maximum', 'vscrollbar_insensitive_mouse', 'vscrollbar_insensitive_offset', 'vscrollbar_insensitive_pos', 'vscrollbar_insensitive_right_bar', 'vscrollbar_insensitive_right_gutter', 'vscrollbar_insensitive_thumb', 'vscrollbar_insensitive_thumb_offset', 'vscrollbar_insensitive_thumb_shadow', 'vscrollbar_insensitive_tooltip', 'vscrollbar_insensitive_top_bar', 'vscrollbar_insensitive_top_gutter', 'vscrollbar_insensitive_unscrollable', 'vscrollbar_insensitive_xalign', 'vscrollbar_insensitive_xanchor', 'vscrollbar_insensitive_xcenter', 'vscrollbar_insensitive_xfill', 'vscrollbar_insensitive_xmaximum', 'vscrollbar_insensitive_xoffset', 'vscrollbar_insensitive_xpos', 'vscrollbar_insensitive_xsize', 'vscrollbar_insensitive_xysize', 'vscrollbar_insensitive_yalign', 'vscrollbar_insensitive_yanchor', 'vscrollbar_insensitive_ycenter', 'vscrollbar_insensitive_yfill', 'vscrollbar_insensitive_ymaximum', 'vscrollbar_insensitive_yoffset', 'vscrollbar_insensitive_ypos', 'vscrollbar_insensitive_ysize', 'vscrollbar_keyboard_focus', 'vscrollbar_left_bar', 'vscrollbar_left_gutter', 'vscrollbar_maximum', 'vscrollbar_mouse', 'vscrollbar_offset', 'vscrollbar_pos', 'vscrollbar_right_bar', 'vscrollbar_right_gutter', 'vscrollbar_selected_activate_align', 'vscrollbar_selected_activate_alt', 'vscrollbar_selected_activate_anchor', 'vscrollbar_selected_activate_area', 'vscrollbar_selected_activate_bar_invert', 'vscrollbar_selected_activate_bar_resizing', 'vscrollbar_selected_activate_bar_vertical', 'vscrollbar_selected_activate_base_bar', 'vscrollbar_selected_activate_bottom_bar', 'vscrollbar_selected_activate_bottom_gutter', 'vscrollbar_selected_activate_clipping', 'vscrollbar_selected_activate_debug', 'vscrollbar_selected_activate_keyboard_focus', 'vscrollbar_selected_activate_left_bar', 'vscrollbar_selected_activate_left_gutter', 'vscrollbar_selected_activate_maximum', 'vscrollbar_selected_activate_mouse', 'vscrollbar_selected_activate_offset', 'vscrollbar_selected_activate_pos', 'vscrollbar_selected_activate_right_bar', 'vscrollbar_selected_activate_right_gutter', 'vscrollbar_selected_activate_thumb', 'vscrollbar_selected_activate_thumb_offset', 'vscrollbar_selected_activate_thumb_shadow', 'vscrollbar_selected_activate_tooltip', 'vscrollbar_selected_activate_top_bar', 'vscrollbar_selected_activate_top_gutter', 'vscrollbar_selected_activate_unscrollable', 'vscrollbar_selected_activate_xalign', 'vscrollbar_selected_activate_xanchor', 'vscrollbar_selected_activate_xcenter', 'vscrollbar_selected_activate_xfill', 'vscrollbar_selected_activate_xmaximum', 'vscrollbar_selected_activate_xoffset', 'vscrollbar_selected_activate_xpos', 'vscrollbar_selected_activate_xsize', 'vscrollbar_selected_activate_xysize', 'vscrollbar_selected_activate_yalign', 'vscrollbar_selected_activate_yanchor', 'vscrollbar_selected_activate_ycenter', 'vscrollbar_selected_activate_yfill', 'vscrollbar_selected_activate_ymaximum', 'vscrollbar_selected_activate_yoffset', 'vscrollbar_selected_activate_ypos', 'vscrollbar_selected_activate_ysize', 'vscrollbar_selected_align', 'vscrollbar_selected_alt', 'vscrollbar_selected_anchor', 'vscrollbar_selected_area', 'vscrollbar_selected_bar_invert', 'vscrollbar_selected_bar_resizing', 'vscrollbar_selected_bar_vertical', 'vscrollbar_selected_base_bar', 'vscrollbar_selected_bottom_bar', 'vscrollbar_selected_bottom_gutter', 'vscrollbar_selected_clipping', 'vscrollbar_selected_debug', 'vscrollbar_selected_hover_align', 'vscrollbar_selected_hover_alt', 'vscrollbar_selected_hover_anchor', 'vscrollbar_selected_hover_area', 'vscrollbar_selected_hover_bar_invert', 'vscrollbar_selected_hover_bar_resizing', 'vscrollbar_selected_hover_bar_vertical', 'vscrollbar_selected_hover_base_bar', 'vscrollbar_selected_hover_bottom_bar', 'vscrollbar_selected_hover_bottom_gutter', 'vscrollbar_selected_hover_clipping', 'vscrollbar_selected_hover_debug', 'vscrollbar_selected_hover_keyboard_focus', 'vscrollbar_selected_hover_left_bar', 'vscrollbar_selected_hover_left_gutter', 'vscrollbar_selected_hover_maximum', 'vscrollbar_selected_hover_mouse', 'vscrollbar_selected_hover_offset', 'vscrollbar_selected_hover_pos', 'vscrollbar_selected_hover_right_bar', 'vscrollbar_selected_hover_right_gutter', 'vscrollbar_selected_hover_thumb', 'vscrollbar_selected_hover_thumb_offset', 'vscrollbar_selected_hover_thumb_shadow', 'vscrollbar_selected_hover_tooltip', 'vscrollbar_selected_hover_top_bar', 'vscrollbar_selected_hover_top_gutter', 'vscrollbar_selected_hover_unscrollable', 'vscrollbar_selected_hover_xalign', 'vscrollbar_selected_hover_xanchor', 'vscrollbar_selected_hover_xcenter', 'vscrollbar_selected_hover_xfill', 'vscrollbar_selected_hover_xmaximum', 'vscrollbar_selected_hover_xoffset', 'vscrollbar_selected_hover_xpos', 'vscrollbar_selected_hover_xsize', 'vscrollbar_selected_hover_xysize', 'vscrollbar_selected_hover_yalign', 'vscrollbar_selected_hover_yanchor', 'vscrollbar_selected_hover_ycenter', 'vscrollbar_selected_hover_yfill', 'vscrollbar_selected_hover_ymaximum', 'vscrollbar_selected_hover_yoffset', 'vscrollbar_selected_hover_ypos', 'vscrollbar_selected_hover_ysize', 'vscrollbar_selected_idle_align', 'vscrollbar_selected_idle_alt', 'vscrollbar_selected_idle_anchor', 'vscrollbar_selected_idle_area', 'vscrollbar_selected_idle_bar_invert', 'vscrollbar_selected_idle_bar_resizing', 'vscrollbar_selected_idle_bar_vertical', 'vscrollbar_selected_idle_base_bar', 'vscrollbar_selected_idle_bottom_bar', 'vscrollbar_selected_idle_bottom_gutter', 'vscrollbar_selected_idle_clipping', 'vscrollbar_selected_idle_debug', 'vscrollbar_selected_idle_keyboard_focus', 'vscrollbar_selected_idle_left_bar', 'vscrollbar_selected_idle_left_gutter', 'vscrollbar_selected_idle_maximum', 'vscrollbar_selected_idle_mouse', 'vscrollbar_selected_idle_offset', 'vscrollbar_selected_idle_pos', 'vscrollbar_selected_idle_right_bar', 'vscrollbar_selected_idle_right_gutter', 'vscrollbar_selected_idle_thumb', 'vscrollbar_selected_idle_thumb_offset', 'vscrollbar_selected_idle_thumb_shadow', 'vscrollbar_selected_idle_tooltip', 'vscrollbar_selected_idle_top_bar', 'vscrollbar_selected_idle_top_gutter', 'vscrollbar_selected_idle_unscrollable', 'vscrollbar_selected_idle_xalign', 'vscrollbar_selected_idle_xanchor', 'vscrollbar_selected_idle_xcenter', 'vscrollbar_selected_idle_xfill', 'vscrollbar_selected_idle_xmaximum', 'vscrollbar_selected_idle_xoffset', 'vscrollbar_selected_idle_xpos', 'vscrollbar_selected_idle_xsize', 'vscrollbar_selected_idle_xysize', 'vscrollbar_selected_idle_yalign', 'vscrollbar_selected_idle_yanchor', 'vscrollbar_selected_idle_ycenter', 'vscrollbar_selected_idle_yfill', 'vscrollbar_selected_idle_ymaximum', 'vscrollbar_selected_idle_yoffset', 'vscrollbar_selected_idle_ypos', 'vscrollbar_selected_idle_ysize', 'vscrollbar_selected_insensitive_align', 'vscrollbar_selected_insensitive_alt', 'vscrollbar_selected_insensitive_anchor', 'vscrollbar_selected_insensitive_area', 'vscrollbar_selected_insensitive_bar_invert', 'vscrollbar_selected_insensitive_bar_resizing', 'vscrollbar_selected_insensitive_bar_vertical', 'vscrollbar_selected_insensitive_base_bar', 'vscrollbar_selected_insensitive_bottom_bar', 'vscrollbar_selected_insensitive_bottom_gutter', 'vscrollbar_selected_insensitive_clipping', 'vscrollbar_selected_insensitive_debug', 'vscrollbar_selected_insensitive_keyboard_focus', 'vscrollbar_selected_insensitive_left_bar', 'vscrollbar_selected_insensitive_left_gutter', 'vscrollbar_selected_insensitive_maximum', 'vscrollbar_selected_insensitive_mouse', 'vscrollbar_selected_insensitive_offset', 'vscrollbar_selected_insensitive_pos', 'vscrollbar_selected_insensitive_right_bar', 'vscrollbar_selected_insensitive_right_gutter', 'vscrollbar_selected_insensitive_thumb', 'vscrollbar_selected_insensitive_thumb_offset', 'vscrollbar_selected_insensitive_thumb_shadow', 'vscrollbar_selected_insensitive_tooltip', 'vscrollbar_selected_insensitive_top_bar', 'vscrollbar_selected_insensitive_top_gutter', 'vscrollbar_selected_insensitive_unscrollable', 'vscrollbar_selected_insensitive_xalign', 'vscrollbar_selected_insensitive_xanchor', 'vscrollbar_selected_insensitive_xcenter', 'vscrollbar_selected_insensitive_xfill', 'vscrollbar_selected_insensitive_xmaximum', 'vscrollbar_selected_insensitive_xoffset', 'vscrollbar_selected_insensitive_xpos', 'vscrollbar_selected_insensitive_xsize', 'vscrollbar_selected_insensitive_xysize', 'vscrollbar_selected_insensitive_yalign', 'vscrollbar_selected_insensitive_yanchor', 'vscrollbar_selected_insensitive_ycenter', 'vscrollbar_selected_insensitive_yfill', 'vscrollbar_selected_insensitive_ymaximum', 'vscrollbar_selected_insensitive_yoffset', 'vscrollbar_selected_insensitive_ypos', 'vscrollbar_selected_insensitive_ysize', 'vscrollbar_selected_keyboard_focus', 'vscrollbar_selected_left_bar', 'vscrollbar_selected_left_gutter', 'vscrollbar_selected_maximum', 'vscrollbar_selected_mouse', 'vscrollbar_selected_offset', 'vscrollbar_selected_pos', 'vscrollbar_selected_right_bar', 'vscrollbar_selected_right_gutter', 'vscrollbar_selected_thumb', 'vscrollbar_selected_thumb_offset', 'vscrollbar_selected_thumb_shadow', 'vscrollbar_selected_tooltip', 'vscrollbar_selected_top_bar', 'vscrollbar_selected_top_gutter', 'vscrollbar_selected_unscrollable', 'vscrollbar_selected_xalign', 'vscrollbar_selected_xanchor', 'vscrollbar_selected_xcenter', 'vscrollbar_selected_xfill', 'vscrollbar_selected_xmaximum', 'vscrollbar_selected_xoffset', 'vscrollbar_selected_xpos', 'vscrollbar_selected_xsize', 'vscrollbar_selected_xysize', 'vscrollbar_selected_yalign', 'vscrollbar_selected_yanchor', 'vscrollbar_selected_ycenter', 'vscrollbar_selected_yfill', 'vscrollbar_selected_ymaximum', 'vscrollbar_selected_yoffset', 'vscrollbar_selected_ypos', 'vscrollbar_selected_ysize', 'vscrollbar_thumb', 'vscrollbar_thumb_offset', 'vscrollbar_thumb_shadow', 'vscrollbar_tooltip', 'vscrollbar_top_bar', 'vscrollbar_top_gutter', 'vscrollbar_unscrollable', 'vscrollbar_xalign', 'vscrollbar_xanchor', 'vscrollbar_xcenter', 'vscrollbar_xfill', 'vscrollbar_xmaximum', 'vscrollbar_xoffset', 'vscrollbar_xpos', 'vscrollbar_xsize', 'vscrollbar_xysize', 'vscrollbar_yalign', 'vscrollbar_yanchor', 'vscrollbar_ycenter', 'vscrollbar_yfill', 'vscrollbar_ymaximum', 'vscrollbar_yoffset', 'vscrollbar_ypos', 'vscrollbar_ysize', 'width', 'xadjustment', 'xalign', 'xanchor', 'xanchoraround', 'xaround', 'xcenter', 'xfill', 'xfit', 'xinitial', 'xmargin', 'xmaximum', 'xminimum', 'xoffset', 'xpadding', 'xpan', 'xpos', 'xsize', 'xspacing', 'xtile', 'xysize', 'xzoom', 'yadjustment', 'yalign', 'yanchor', 'yanchoraround', 'yaround', 'ycenter', 'yfill', 'yfit', 'yinitial', 'ymargin', 'ymaximum', 'yminimum', 'yoffset', 'ypadding', 'ypan', 'ypos', 'ysize', 'yspacing', 'ytile', 'yzoom', 'zoom'] +keywords = ['$', 'add', 'and', 'animation', 'as', 'assert', 'at', u'auto', 'bar', 'behind', 'block', 'break', 'button', 'call', 'choice', 'circles', 'class', u'clear', 'clockwise', 'contains', 'continue', 'counterclockwise', 'def', 'default', 'define', 'del', 'drag', 'draggroup', 'elif', 'else', 'event', 'except', 'exec', 'expression', 'finally', 'fixed', 'for', 'frame', 'from', 'function', 'global', 'grid', 'has', 'hbox', 'hide', 'hotbar', 'hotspot', 'if', 'image', 'imagebutton', 'imagemap', 'import', 'in', 'init', 'input', 'is', 'jump', 'key', 'knot', 'label', 'lambda', 'menu', 'mousearea', u'music', 'new', 'nointeract', 'not', 'null', u'nvl', 'offset', 'old', 'on', 'onlayer', 'or', 'parallel', 'pass', u'pause', u'play', 'print', 'python', u'queue', 'raise', 'repeat', 'return', 'scene', 'screen', 'show', 'showif', 'side', u'sound', u'stop', 'strings', 'style', u'sustain', 'tag', 'take', 'testcase', 'text', 'textbutton', 'time', 'timer', 'transclude', 'transform', 'translate', 'try', 'use', 'vbar', 'vbox', 'viewport', u'voice', 'vpgrid', 'while', u'window', 'with', 'yield', 'zorder'] +keyword_regex = u'\\$|add|and|animation|as|assert|at|auto|bar|behind|block|break|button|call|choice|circles|class|clear|clockwise|contains|continue|counterclockwise|def|default|define|del|drag|draggroup|elif|else|event|except|exec|expression|finally|fixed|for|frame|from|function|global|grid|has|hbox|hide|hotbar|hotspot|if|image|imagebutton|imagemap|import|in|init|input|is|jump|key|knot|label|lambda|menu|mousearea|music|new|nointeract|not|null|nvl|offset|old|on|onlayer|or|parallel|pass|pause|play|print|python|queue|raise|repeat|return|scene|screen|show|showif|side|sound|stop|strings|style|sustain|tag|take|testcase|text|textbutton|time|timer|transclude|transform|translate|try|use|vbar|vbox|viewport|voice|vpgrid|while|window|with|yield|zorder' +properties = ['action', 'activate_additive', 'activate_adjust_spacing', 'activate_align', 'activate_alignaround', 'activate_alpha', 'activate_alt', 'activate_anchor', 'activate_angle', 'activate_antialias', 'activate_area', 'activate_around', 'activate_background', 'activate_bar_invert', 'activate_bar_resizing', 'activate_bar_vertical', 'activate_base_bar', 'activate_black_color', 'activate_bold', 'activate_bottom_bar', 'activate_bottom_gutter', 'activate_bottom_margin', 'activate_bottom_padding', 'activate_box_layout', 'activate_box_reverse', 'activate_box_wrap', 'activate_child', 'activate_clipping', 'activate_color', 'activate_corner1', 'activate_corner2', 'activate_crop', 'activate_crop_relative', 'activate_debug', 'activate_delay', 'activate_drop_shadow', 'activate_drop_shadow_color', 'activate_events', 'activate_first_indent', 'activate_first_spacing', 'activate_fit_first', 'activate_focus_mask', 'activate_font', 'activate_foreground', 'activate_hinting', 'activate_hyperlink_functions', 'activate_italic', 'activate_justify', 'activate_kerning', 'activate_key_events', 'activate_keyboard_focus', 'activate_language', 'activate_layout', 'activate_left_bar', 'activate_left_gutter', 'activate_left_margin', 'activate_left_padding', 'activate_line_leading', 'activate_line_spacing', 'activate_margin', 'activate_maximum', 'activate_maxsize', 'activate_min_width', 'activate_minimum', 'activate_minwidth', 'activate_mouse', 'activate_nearest', 'activate_newline_indent', 'activate_offset', 'activate_order_reverse', 'activate_outlines', 'activate_padding', 'activate_pos', 'activate_radius', 'activate_rest_indent', 'activate_right_bar', 'activate_right_gutter', 'activate_right_margin', 'activate_right_padding', 'activate_rotate', 'activate_rotate_pad', 'activate_ruby_style', 'activate_size', 'activate_size_group', 'activate_slow_abortable', 'activate_slow_cps', 'activate_slow_cps_multiplier', 'activate_sound', 'activate_spacing', 'activate_strikethrough', 'activate_subpixel', 'activate_text_align', 'activate_text_y_fudge', 'activate_thumb', 'activate_thumb_offset', 'activate_thumb_shadow', 'activate_tooltip', 'activate_top_bar', 'activate_top_gutter', 'activate_top_margin', 'activate_top_padding', 'activate_transform_anchor', 'activate_underline', 'activate_unscrollable', 'activate_vertical', 'activate_xalign', 'activate_xanchor', 'activate_xanchoraround', 'activate_xaround', 'activate_xcenter', 'activate_xfill', 'activate_xfit', 'activate_xmargin', 'activate_xmaximum', 'activate_xminimum', 'activate_xoffset', 'activate_xpadding', 'activate_xpan', 'activate_xpos', 'activate_xsize', 'activate_xspacing', 'activate_xtile', 'activate_xysize', 'activate_xzoom', 'activate_yalign', 'activate_yanchor', 'activate_yanchoraround', 'activate_yaround', 'activate_ycenter', 'activate_yfill', 'activate_yfit', 'activate_ymargin', 'activate_ymaximum', 'activate_yminimum', 'activate_yoffset', 'activate_ypadding', 'activate_ypan', 'activate_ypos', 'activate_ysize', 'activate_yspacing', 'activate_ytile', 'activate_yzoom', 'activate_zoom', 'additive', 'adjust_spacing', 'adjustment', 'align', 'alignaround', 'allow', 'alpha', 'alt', 'alternate', 'alternate_keysym', 'anchor', 'angle', 'antialias', 'area', 'arguments', 'around', 'arrowkeys', 'background', 'bar_invert', 'bar_resizing', 'bar_vertical', 'base_bar', 'black_color', 'bold', 'bottom_bar', 'bottom_gutter', 'bottom_margin', 'bottom_padding', 'box_layout', 'box_reverse', 'box_wrap', 'cache', u'caption', 'changed', 'child', 'child_size', 'clicked', 'clipping', 'color', 'cols', 'corner1', 'corner2', 'crop', 'crop_relative', 'debug', 'delay', 'drag_handle', 'drag_joined', 'drag_name', 'drag_offscreen', 'drag_raise', 'draggable', 'dragged', 'drop_shadow', 'drop_shadow_color', 'droppable', 'dropped', 'edgescroll', 'events', 'exclude', 'first_indent', 'first_spacing', 'fit_first', 'focus', 'focus_mask', 'font', 'foreground', 'ground', 'height', 'hinting', 'hover', 'hover_additive', 'hover_adjust_spacing', 'hover_align', 'hover_alignaround', 'hover_alpha', 'hover_alt', 'hover_anchor', 'hover_angle', 'hover_antialias', 'hover_area', 'hover_around', 'hover_background', 'hover_bar_invert', 'hover_bar_resizing', 'hover_bar_vertical', 'hover_base_bar', 'hover_black_color', 'hover_bold', 'hover_bottom_bar', 'hover_bottom_gutter', 'hover_bottom_margin', 'hover_bottom_padding', 'hover_box_layout', 'hover_box_reverse', 'hover_box_wrap', 'hover_child', 'hover_clipping', 'hover_color', 'hover_corner1', 'hover_corner2', 'hover_crop', 'hover_crop_relative', 'hover_debug', 'hover_delay', 'hover_drop_shadow', 'hover_drop_shadow_color', 'hover_events', 'hover_first_indent', 'hover_first_spacing', 'hover_fit_first', 'hover_focus_mask', 'hover_font', 'hover_foreground', 'hover_hinting', 'hover_hyperlink_functions', 'hover_italic', 'hover_justify', 'hover_kerning', 'hover_key_events', 'hover_keyboard_focus', 'hover_language', 'hover_layout', 'hover_left_bar', 'hover_left_gutter', 'hover_left_margin', 'hover_left_padding', 'hover_line_leading', 'hover_line_spacing', 'hover_margin', 'hover_maximum', 'hover_maxsize', 'hover_min_width', 'hover_minimum', 'hover_minwidth', 'hover_mouse', 'hover_nearest', 'hover_newline_indent', 'hover_offset', 'hover_order_reverse', 'hover_outlines', 'hover_padding', 'hover_pos', 'hover_radius', 'hover_rest_indent', 'hover_right_bar', 'hover_right_gutter', 'hover_right_margin', 'hover_right_padding', 'hover_rotate', 'hover_rotate_pad', 'hover_ruby_style', 'hover_size', 'hover_size_group', 'hover_slow_abortable', 'hover_slow_cps', 'hover_slow_cps_multiplier', 'hover_sound', 'hover_spacing', 'hover_strikethrough', 'hover_subpixel', 'hover_text_align', 'hover_text_y_fudge', 'hover_thumb', 'hover_thumb_offset', 'hover_thumb_shadow', 'hover_tooltip', 'hover_top_bar', 'hover_top_gutter', 'hover_top_margin', 'hover_top_padding', 'hover_transform_anchor', 'hover_underline', 'hover_unscrollable', 'hover_vertical', 'hover_xalign', 'hover_xanchor', 'hover_xanchoraround', 'hover_xaround', 'hover_xcenter', 'hover_xfill', 'hover_xfit', 'hover_xmargin', 'hover_xmaximum', 'hover_xminimum', 'hover_xoffset', 'hover_xpadding', 'hover_xpan', 'hover_xpos', 'hover_xsize', 'hover_xspacing', 'hover_xtile', 'hover_xysize', 'hover_xzoom', 'hover_yalign', 'hover_yanchor', 'hover_yanchoraround', 'hover_yaround', 'hover_ycenter', 'hover_yfill', 'hover_yfit', 'hover_ymargin', 'hover_ymaximum', 'hover_yminimum', 'hover_yoffset', 'hover_ypadding', 'hover_ypan', 'hover_ypos', 'hover_ysize', 'hover_yspacing', 'hover_ytile', 'hover_yzoom', 'hover_zoom', 'hovered', 'hyperlink_functions', 'id', 'idle', 'idle_additive', 'idle_adjust_spacing', 'idle_align', 'idle_alignaround', 'idle_alpha', 'idle_alt', 'idle_anchor', 'idle_angle', 'idle_antialias', 'idle_area', 'idle_around', 'idle_background', 'idle_bar_invert', 'idle_bar_resizing', 'idle_bar_vertical', 'idle_base_bar', 'idle_black_color', 'idle_bold', 'idle_bottom_bar', 'idle_bottom_gutter', 'idle_bottom_margin', 'idle_bottom_padding', 'idle_box_layout', 'idle_box_reverse', 'idle_box_wrap', 'idle_child', 'idle_clipping', 'idle_color', 'idle_corner1', 'idle_corner2', 'idle_crop', 'idle_crop_relative', 'idle_debug', 'idle_delay', 'idle_drop_shadow', 'idle_drop_shadow_color', 'idle_events', 'idle_first_indent', 'idle_first_spacing', 'idle_fit_first', 'idle_focus_mask', 'idle_font', 'idle_foreground', 'idle_hinting', 'idle_hyperlink_functions', 'idle_italic', 'idle_justify', 'idle_kerning', 'idle_key_events', 'idle_keyboard_focus', 'idle_language', 'idle_layout', 'idle_left_bar', 'idle_left_gutter', 'idle_left_margin', 'idle_left_padding', 'idle_line_leading', 'idle_line_spacing', 'idle_margin', 'idle_maximum', 'idle_maxsize', 'idle_min_width', 'idle_minimum', 'idle_minwidth', 'idle_mouse', 'idle_nearest', 'idle_newline_indent', 'idle_offset', 'idle_order_reverse', 'idle_outlines', 'idle_padding', 'idle_pos', 'idle_radius', 'idle_rest_indent', 'idle_right_bar', 'idle_right_gutter', 'idle_right_margin', 'idle_right_padding', 'idle_rotate', 'idle_rotate_pad', 'idle_ruby_style', 'idle_size', 'idle_size_group', 'idle_slow_abortable', 'idle_slow_cps', 'idle_slow_cps_multiplier', 'idle_sound', 'idle_spacing', 'idle_strikethrough', 'idle_subpixel', 'idle_text_align', 'idle_text_y_fudge', 'idle_thumb', 'idle_thumb_offset', 'idle_thumb_shadow', 'idle_tooltip', 'idle_top_bar', 'idle_top_gutter', 'idle_top_margin', 'idle_top_padding', 'idle_transform_anchor', 'idle_underline', 'idle_unscrollable', 'idle_vertical', 'idle_xalign', 'idle_xanchor', 'idle_xanchoraround', 'idle_xaround', 'idle_xcenter', 'idle_xfill', 'idle_xfit', 'idle_xmargin', 'idle_xmaximum', 'idle_xminimum', 'idle_xoffset', 'idle_xpadding', 'idle_xpan', 'idle_xpos', 'idle_xsize', 'idle_xspacing', 'idle_xtile', 'idle_xysize', 'idle_xzoom', 'idle_yalign', 'idle_yanchor', 'idle_yanchoraround', 'idle_yaround', 'idle_ycenter', 'idle_yfill', 'idle_yfit', 'idle_ymargin', 'idle_ymaximum', 'idle_yminimum', 'idle_yoffset', 'idle_ypadding', 'idle_ypan', 'idle_ypos', 'idle_ysize', 'idle_yspacing', 'idle_ytile', 'idle_yzoom', 'idle_zoom', 'image_style', 'insensitive', 'insensitive_additive', 'insensitive_adjust_spacing', 'insensitive_align', 'insensitive_alignaround', 'insensitive_alpha', 'insensitive_alt', 'insensitive_anchor', 'insensitive_angle', 'insensitive_antialias', 'insensitive_area', 'insensitive_around', 'insensitive_background', 'insensitive_bar_invert', 'insensitive_bar_resizing', 'insensitive_bar_vertical', 'insensitive_base_bar', 'insensitive_black_color', 'insensitive_bold', 'insensitive_bottom_bar', 'insensitive_bottom_gutter', 'insensitive_bottom_margin', 'insensitive_bottom_padding', 'insensitive_box_layout', 'insensitive_box_reverse', 'insensitive_box_wrap', 'insensitive_child', 'insensitive_clipping', 'insensitive_color', 'insensitive_corner1', 'insensitive_corner2', 'insensitive_crop', 'insensitive_crop_relative', 'insensitive_debug', 'insensitive_delay', 'insensitive_drop_shadow', 'insensitive_drop_shadow_color', 'insensitive_events', 'insensitive_first_indent', 'insensitive_first_spacing', 'insensitive_fit_first', 'insensitive_focus_mask', 'insensitive_font', 'insensitive_foreground', 'insensitive_hinting', 'insensitive_hyperlink_functions', 'insensitive_italic', 'insensitive_justify', 'insensitive_kerning', 'insensitive_key_events', 'insensitive_keyboard_focus', 'insensitive_language', 'insensitive_layout', 'insensitive_left_bar', 'insensitive_left_gutter', 'insensitive_left_margin', 'insensitive_left_padding', 'insensitive_line_leading', 'insensitive_line_spacing', 'insensitive_margin', 'insensitive_maximum', 'insensitive_maxsize', 'insensitive_min_width', 'insensitive_minimum', 'insensitive_minwidth', 'insensitive_mouse', 'insensitive_nearest', 'insensitive_newline_indent', 'insensitive_offset', 'insensitive_order_reverse', 'insensitive_outlines', 'insensitive_padding', 'insensitive_pos', 'insensitive_radius', 'insensitive_rest_indent', 'insensitive_right_bar', 'insensitive_right_gutter', 'insensitive_right_margin', 'insensitive_right_padding', 'insensitive_rotate', 'insensitive_rotate_pad', 'insensitive_ruby_style', 'insensitive_size', 'insensitive_size_group', 'insensitive_slow_abortable', 'insensitive_slow_cps', 'insensitive_slow_cps_multiplier', 'insensitive_sound', 'insensitive_spacing', 'insensitive_strikethrough', 'insensitive_subpixel', 'insensitive_text_align', 'insensitive_text_y_fudge', 'insensitive_thumb', 'insensitive_thumb_offset', 'insensitive_thumb_shadow', 'insensitive_tooltip', 'insensitive_top_bar', 'insensitive_top_gutter', 'insensitive_top_margin', 'insensitive_top_padding', 'insensitive_transform_anchor', 'insensitive_underline', 'insensitive_unscrollable', 'insensitive_vertical', 'insensitive_xalign', 'insensitive_xanchor', 'insensitive_xanchoraround', 'insensitive_xaround', 'insensitive_xcenter', 'insensitive_xfill', 'insensitive_xfit', 'insensitive_xmargin', 'insensitive_xmaximum', 'insensitive_xminimum', 'insensitive_xoffset', 'insensitive_xpadding', 'insensitive_xpan', 'insensitive_xpos', 'insensitive_xsize', 'insensitive_xspacing', 'insensitive_xtile', 'insensitive_xysize', 'insensitive_xzoom', 'insensitive_yalign', 'insensitive_yanchor', 'insensitive_yanchoraround', 'insensitive_yaround', 'insensitive_ycenter', 'insensitive_yfill', 'insensitive_yfit', 'insensitive_ymargin', 'insensitive_ymaximum', 'insensitive_yminimum', 'insensitive_yoffset', 'insensitive_ypadding', 'insensitive_ypan', 'insensitive_ypos', 'insensitive_ysize', 'insensitive_yspacing', 'insensitive_ytile', 'insensitive_yzoom', 'insensitive_zoom', 'italic', 'justify', 'kerning', 'key_events', 'keyboard_focus', 'keysym', 'language', 'layer', 'layout', 'left_bar', 'left_gutter', 'left_margin', 'left_padding', 'length', 'line_leading', 'line_spacing', 'margin', 'maximum', 'maxsize', 'min_width', 'minimum', 'minwidth', 'modal', 'mouse', 'mouse_drop', 'mousewheel', 'nearest', 'newline_indent', 'order_reverse', 'outlines', 'padding', 'pagekeys', 'pixel_width', 'pos', 'predict', 'prefix', 'properties', 'radius', 'range', 'rest_indent', 'right_bar', 'right_gutter', 'right_margin', 'right_padding', 'rotate', 'rotate_pad', 'rows', 'ruby_style', 'scope', 'scrollbar_activate_align', 'scrollbar_activate_alt', 'scrollbar_activate_anchor', 'scrollbar_activate_area', 'scrollbar_activate_bar_invert', 'scrollbar_activate_bar_resizing', 'scrollbar_activate_bar_vertical', 'scrollbar_activate_base_bar', 'scrollbar_activate_bottom_bar', 'scrollbar_activate_bottom_gutter', 'scrollbar_activate_clipping', 'scrollbar_activate_debug', 'scrollbar_activate_keyboard_focus', 'scrollbar_activate_left_bar', 'scrollbar_activate_left_gutter', 'scrollbar_activate_maximum', 'scrollbar_activate_mouse', 'scrollbar_activate_offset', 'scrollbar_activate_pos', 'scrollbar_activate_right_bar', 'scrollbar_activate_right_gutter', 'scrollbar_activate_thumb', 'scrollbar_activate_thumb_offset', 'scrollbar_activate_thumb_shadow', 'scrollbar_activate_tooltip', 'scrollbar_activate_top_bar', 'scrollbar_activate_top_gutter', 'scrollbar_activate_unscrollable', 'scrollbar_activate_xalign', 'scrollbar_activate_xanchor', 'scrollbar_activate_xcenter', 'scrollbar_activate_xfill', 'scrollbar_activate_xmaximum', 'scrollbar_activate_xoffset', 'scrollbar_activate_xpos', 'scrollbar_activate_xsize', 'scrollbar_activate_xysize', 'scrollbar_activate_yalign', 'scrollbar_activate_yanchor', 'scrollbar_activate_ycenter', 'scrollbar_activate_yfill', 'scrollbar_activate_ymaximum', 'scrollbar_activate_yoffset', 'scrollbar_activate_ypos', 'scrollbar_activate_ysize', 'scrollbar_align', 'scrollbar_alt', 'scrollbar_anchor', 'scrollbar_area', 'scrollbar_bar_invert', 'scrollbar_bar_resizing', 'scrollbar_bar_vertical', 'scrollbar_base_bar', 'scrollbar_bottom_bar', 'scrollbar_bottom_gutter', 'scrollbar_clipping', 'scrollbar_debug', 'scrollbar_hover_align', 'scrollbar_hover_alt', 'scrollbar_hover_anchor', 'scrollbar_hover_area', 'scrollbar_hover_bar_invert', 'scrollbar_hover_bar_resizing', 'scrollbar_hover_bar_vertical', 'scrollbar_hover_base_bar', 'scrollbar_hover_bottom_bar', 'scrollbar_hover_bottom_gutter', 'scrollbar_hover_clipping', 'scrollbar_hover_debug', 'scrollbar_hover_keyboard_focus', 'scrollbar_hover_left_bar', 'scrollbar_hover_left_gutter', 'scrollbar_hover_maximum', 'scrollbar_hover_mouse', 'scrollbar_hover_offset', 'scrollbar_hover_pos', 'scrollbar_hover_right_bar', 'scrollbar_hover_right_gutter', 'scrollbar_hover_thumb', 'scrollbar_hover_thumb_offset', 'scrollbar_hover_thumb_shadow', 'scrollbar_hover_tooltip', 'scrollbar_hover_top_bar', 'scrollbar_hover_top_gutter', 'scrollbar_hover_unscrollable', 'scrollbar_hover_xalign', 'scrollbar_hover_xanchor', 'scrollbar_hover_xcenter', 'scrollbar_hover_xfill', 'scrollbar_hover_xmaximum', 'scrollbar_hover_xoffset', 'scrollbar_hover_xpos', 'scrollbar_hover_xsize', 'scrollbar_hover_xysize', 'scrollbar_hover_yalign', 'scrollbar_hover_yanchor', 'scrollbar_hover_ycenter', 'scrollbar_hover_yfill', 'scrollbar_hover_ymaximum', 'scrollbar_hover_yoffset', 'scrollbar_hover_ypos', 'scrollbar_hover_ysize', 'scrollbar_idle_align', 'scrollbar_idle_alt', 'scrollbar_idle_anchor', 'scrollbar_idle_area', 'scrollbar_idle_bar_invert', 'scrollbar_idle_bar_resizing', 'scrollbar_idle_bar_vertical', 'scrollbar_idle_base_bar', 'scrollbar_idle_bottom_bar', 'scrollbar_idle_bottom_gutter', 'scrollbar_idle_clipping', 'scrollbar_idle_debug', 'scrollbar_idle_keyboard_focus', 'scrollbar_idle_left_bar', 'scrollbar_idle_left_gutter', 'scrollbar_idle_maximum', 'scrollbar_idle_mouse', 'scrollbar_idle_offset', 'scrollbar_idle_pos', 'scrollbar_idle_right_bar', 'scrollbar_idle_right_gutter', 'scrollbar_idle_thumb', 'scrollbar_idle_thumb_offset', 'scrollbar_idle_thumb_shadow', 'scrollbar_idle_tooltip', 'scrollbar_idle_top_bar', 'scrollbar_idle_top_gutter', 'scrollbar_idle_unscrollable', 'scrollbar_idle_xalign', 'scrollbar_idle_xanchor', 'scrollbar_idle_xcenter', 'scrollbar_idle_xfill', 'scrollbar_idle_xmaximum', 'scrollbar_idle_xoffset', 'scrollbar_idle_xpos', 'scrollbar_idle_xsize', 'scrollbar_idle_xysize', 'scrollbar_idle_yalign', 'scrollbar_idle_yanchor', 'scrollbar_idle_ycenter', 'scrollbar_idle_yfill', 'scrollbar_idle_ymaximum', 'scrollbar_idle_yoffset', 'scrollbar_idle_ypos', 'scrollbar_idle_ysize', 'scrollbar_insensitive_align', 'scrollbar_insensitive_alt', 'scrollbar_insensitive_anchor', 'scrollbar_insensitive_area', 'scrollbar_insensitive_bar_invert', 'scrollbar_insensitive_bar_resizing', 'scrollbar_insensitive_bar_vertical', 'scrollbar_insensitive_base_bar', 'scrollbar_insensitive_bottom_bar', 'scrollbar_insensitive_bottom_gutter', 'scrollbar_insensitive_clipping', 'scrollbar_insensitive_debug', 'scrollbar_insensitive_keyboard_focus', 'scrollbar_insensitive_left_bar', 'scrollbar_insensitive_left_gutter', 'scrollbar_insensitive_maximum', 'scrollbar_insensitive_mouse', 'scrollbar_insensitive_offset', 'scrollbar_insensitive_pos', 'scrollbar_insensitive_right_bar', 'scrollbar_insensitive_right_gutter', 'scrollbar_insensitive_thumb', 'scrollbar_insensitive_thumb_offset', 'scrollbar_insensitive_thumb_shadow', 'scrollbar_insensitive_tooltip', 'scrollbar_insensitive_top_bar', 'scrollbar_insensitive_top_gutter', 'scrollbar_insensitive_unscrollable', 'scrollbar_insensitive_xalign', 'scrollbar_insensitive_xanchor', 'scrollbar_insensitive_xcenter', 'scrollbar_insensitive_xfill', 'scrollbar_insensitive_xmaximum', 'scrollbar_insensitive_xoffset', 'scrollbar_insensitive_xpos', 'scrollbar_insensitive_xsize', 'scrollbar_insensitive_xysize', 'scrollbar_insensitive_yalign', 'scrollbar_insensitive_yanchor', 'scrollbar_insensitive_ycenter', 'scrollbar_insensitive_yfill', 'scrollbar_insensitive_ymaximum', 'scrollbar_insensitive_yoffset', 'scrollbar_insensitive_ypos', 'scrollbar_insensitive_ysize', 'scrollbar_keyboard_focus', 'scrollbar_left_bar', 'scrollbar_left_gutter', 'scrollbar_maximum', 'scrollbar_mouse', 'scrollbar_offset', 'scrollbar_pos', 'scrollbar_right_bar', 'scrollbar_right_gutter', 'scrollbar_selected_activate_align', 'scrollbar_selected_activate_alt', 'scrollbar_selected_activate_anchor', 'scrollbar_selected_activate_area', 'scrollbar_selected_activate_bar_invert', 'scrollbar_selected_activate_bar_resizing', 'scrollbar_selected_activate_bar_vertical', 'scrollbar_selected_activate_base_bar', 'scrollbar_selected_activate_bottom_bar', 'scrollbar_selected_activate_bottom_gutter', 'scrollbar_selected_activate_clipping', 'scrollbar_selected_activate_debug', 'scrollbar_selected_activate_keyboard_focus', 'scrollbar_selected_activate_left_bar', 'scrollbar_selected_activate_left_gutter', 'scrollbar_selected_activate_maximum', 'scrollbar_selected_activate_mouse', 'scrollbar_selected_activate_offset', 'scrollbar_selected_activate_pos', 'scrollbar_selected_activate_right_bar', 'scrollbar_selected_activate_right_gutter', 'scrollbar_selected_activate_thumb', 'scrollbar_selected_activate_thumb_offset', 'scrollbar_selected_activate_thumb_shadow', 'scrollbar_selected_activate_tooltip', 'scrollbar_selected_activate_top_bar', 'scrollbar_selected_activate_top_gutter', 'scrollbar_selected_activate_unscrollable', 'scrollbar_selected_activate_xalign', 'scrollbar_selected_activate_xanchor', 'scrollbar_selected_activate_xcenter', 'scrollbar_selected_activate_xfill', 'scrollbar_selected_activate_xmaximum', 'scrollbar_selected_activate_xoffset', 'scrollbar_selected_activate_xpos', 'scrollbar_selected_activate_xsize', 'scrollbar_selected_activate_xysize', 'scrollbar_selected_activate_yalign', 'scrollbar_selected_activate_yanchor', 'scrollbar_selected_activate_ycenter', 'scrollbar_selected_activate_yfill', 'scrollbar_selected_activate_ymaximum', 'scrollbar_selected_activate_yoffset', 'scrollbar_selected_activate_ypos', 'scrollbar_selected_activate_ysize', 'scrollbar_selected_align', 'scrollbar_selected_alt', 'scrollbar_selected_anchor', 'scrollbar_selected_area', 'scrollbar_selected_bar_invert', 'scrollbar_selected_bar_resizing', 'scrollbar_selected_bar_vertical', 'scrollbar_selected_base_bar', 'scrollbar_selected_bottom_bar', 'scrollbar_selected_bottom_gutter', 'scrollbar_selected_clipping', 'scrollbar_selected_debug', 'scrollbar_selected_hover_align', 'scrollbar_selected_hover_alt', 'scrollbar_selected_hover_anchor', 'scrollbar_selected_hover_area', 'scrollbar_selected_hover_bar_invert', 'scrollbar_selected_hover_bar_resizing', 'scrollbar_selected_hover_bar_vertical', 'scrollbar_selected_hover_base_bar', 'scrollbar_selected_hover_bottom_bar', 'scrollbar_selected_hover_bottom_gutter', 'scrollbar_selected_hover_clipping', 'scrollbar_selected_hover_debug', 'scrollbar_selected_hover_keyboard_focus', 'scrollbar_selected_hover_left_bar', 'scrollbar_selected_hover_left_gutter', 'scrollbar_selected_hover_maximum', 'scrollbar_selected_hover_mouse', 'scrollbar_selected_hover_offset', 'scrollbar_selected_hover_pos', 'scrollbar_selected_hover_right_bar', 'scrollbar_selected_hover_right_gutter', 'scrollbar_selected_hover_thumb', 'scrollbar_selected_hover_thumb_offset', 'scrollbar_selected_hover_thumb_shadow', 'scrollbar_selected_hover_tooltip', 'scrollbar_selected_hover_top_bar', 'scrollbar_selected_hover_top_gutter', 'scrollbar_selected_hover_unscrollable', 'scrollbar_selected_hover_xalign', 'scrollbar_selected_hover_xanchor', 'scrollbar_selected_hover_xcenter', 'scrollbar_selected_hover_xfill', 'scrollbar_selected_hover_xmaximum', 'scrollbar_selected_hover_xoffset', 'scrollbar_selected_hover_xpos', 'scrollbar_selected_hover_xsize', 'scrollbar_selected_hover_xysize', 'scrollbar_selected_hover_yalign', 'scrollbar_selected_hover_yanchor', 'scrollbar_selected_hover_ycenter', 'scrollbar_selected_hover_yfill', 'scrollbar_selected_hover_ymaximum', 'scrollbar_selected_hover_yoffset', 'scrollbar_selected_hover_ypos', 'scrollbar_selected_hover_ysize', 'scrollbar_selected_idle_align', 'scrollbar_selected_idle_alt', 'scrollbar_selected_idle_anchor', 'scrollbar_selected_idle_area', 'scrollbar_selected_idle_bar_invert', 'scrollbar_selected_idle_bar_resizing', 'scrollbar_selected_idle_bar_vertical', 'scrollbar_selected_idle_base_bar', 'scrollbar_selected_idle_bottom_bar', 'scrollbar_selected_idle_bottom_gutter', 'scrollbar_selected_idle_clipping', 'scrollbar_selected_idle_debug', 'scrollbar_selected_idle_keyboard_focus', 'scrollbar_selected_idle_left_bar', 'scrollbar_selected_idle_left_gutter', 'scrollbar_selected_idle_maximum', 'scrollbar_selected_idle_mouse', 'scrollbar_selected_idle_offset', 'scrollbar_selected_idle_pos', 'scrollbar_selected_idle_right_bar', 'scrollbar_selected_idle_right_gutter', 'scrollbar_selected_idle_thumb', 'scrollbar_selected_idle_thumb_offset', 'scrollbar_selected_idle_thumb_shadow', 'scrollbar_selected_idle_tooltip', 'scrollbar_selected_idle_top_bar', 'scrollbar_selected_idle_top_gutter', 'scrollbar_selected_idle_unscrollable', 'scrollbar_selected_idle_xalign', 'scrollbar_selected_idle_xanchor', 'scrollbar_selected_idle_xcenter', 'scrollbar_selected_idle_xfill', 'scrollbar_selected_idle_xmaximum', 'scrollbar_selected_idle_xoffset', 'scrollbar_selected_idle_xpos', 'scrollbar_selected_idle_xsize', 'scrollbar_selected_idle_xysize', 'scrollbar_selected_idle_yalign', 'scrollbar_selected_idle_yanchor', 'scrollbar_selected_idle_ycenter', 'scrollbar_selected_idle_yfill', 'scrollbar_selected_idle_ymaximum', 'scrollbar_selected_idle_yoffset', 'scrollbar_selected_idle_ypos', 'scrollbar_selected_idle_ysize', 'scrollbar_selected_insensitive_align', 'scrollbar_selected_insensitive_alt', 'scrollbar_selected_insensitive_anchor', 'scrollbar_selected_insensitive_area', 'scrollbar_selected_insensitive_bar_invert', 'scrollbar_selected_insensitive_bar_resizing', 'scrollbar_selected_insensitive_bar_vertical', 'scrollbar_selected_insensitive_base_bar', 'scrollbar_selected_insensitive_bottom_bar', 'scrollbar_selected_insensitive_bottom_gutter', 'scrollbar_selected_insensitive_clipping', 'scrollbar_selected_insensitive_debug', 'scrollbar_selected_insensitive_keyboard_focus', 'scrollbar_selected_insensitive_left_bar', 'scrollbar_selected_insensitive_left_gutter', 'scrollbar_selected_insensitive_maximum', 'scrollbar_selected_insensitive_mouse', 'scrollbar_selected_insensitive_offset', 'scrollbar_selected_insensitive_pos', 'scrollbar_selected_insensitive_right_bar', 'scrollbar_selected_insensitive_right_gutter', 'scrollbar_selected_insensitive_thumb', 'scrollbar_selected_insensitive_thumb_offset', 'scrollbar_selected_insensitive_thumb_shadow', 'scrollbar_selected_insensitive_tooltip', 'scrollbar_selected_insensitive_top_bar', 'scrollbar_selected_insensitive_top_gutter', 'scrollbar_selected_insensitive_unscrollable', 'scrollbar_selected_insensitive_xalign', 'scrollbar_selected_insensitive_xanchor', 'scrollbar_selected_insensitive_xcenter', 'scrollbar_selected_insensitive_xfill', 'scrollbar_selected_insensitive_xmaximum', 'scrollbar_selected_insensitive_xoffset', 'scrollbar_selected_insensitive_xpos', 'scrollbar_selected_insensitive_xsize', 'scrollbar_selected_insensitive_xysize', 'scrollbar_selected_insensitive_yalign', 'scrollbar_selected_insensitive_yanchor', 'scrollbar_selected_insensitive_ycenter', 'scrollbar_selected_insensitive_yfill', 'scrollbar_selected_insensitive_ymaximum', 'scrollbar_selected_insensitive_yoffset', 'scrollbar_selected_insensitive_ypos', 'scrollbar_selected_insensitive_ysize', 'scrollbar_selected_keyboard_focus', 'scrollbar_selected_left_bar', 'scrollbar_selected_left_gutter', 'scrollbar_selected_maximum', 'scrollbar_selected_mouse', 'scrollbar_selected_offset', 'scrollbar_selected_pos', 'scrollbar_selected_right_bar', 'scrollbar_selected_right_gutter', 'scrollbar_selected_thumb', 'scrollbar_selected_thumb_offset', 'scrollbar_selected_thumb_shadow', 'scrollbar_selected_tooltip', 'scrollbar_selected_top_bar', 'scrollbar_selected_top_gutter', 'scrollbar_selected_unscrollable', 'scrollbar_selected_xalign', 'scrollbar_selected_xanchor', 'scrollbar_selected_xcenter', 'scrollbar_selected_xfill', 'scrollbar_selected_xmaximum', 'scrollbar_selected_xoffset', 'scrollbar_selected_xpos', 'scrollbar_selected_xsize', 'scrollbar_selected_xysize', 'scrollbar_selected_yalign', 'scrollbar_selected_yanchor', 'scrollbar_selected_ycenter', 'scrollbar_selected_yfill', 'scrollbar_selected_ymaximum', 'scrollbar_selected_yoffset', 'scrollbar_selected_ypos', 'scrollbar_selected_ysize', 'scrollbar_thumb', 'scrollbar_thumb_offset', 'scrollbar_thumb_shadow', 'scrollbar_tooltip', 'scrollbar_top_bar', 'scrollbar_top_gutter', 'scrollbar_unscrollable', 'scrollbar_xalign', 'scrollbar_xanchor', 'scrollbar_xcenter', 'scrollbar_xfill', 'scrollbar_xmaximum', 'scrollbar_xoffset', 'scrollbar_xpos', 'scrollbar_xsize', 'scrollbar_xysize', 'scrollbar_yalign', 'scrollbar_yanchor', 'scrollbar_ycenter', 'scrollbar_yfill', 'scrollbar_ymaximum', 'scrollbar_yoffset', 'scrollbar_ypos', 'scrollbar_ysize', 'scrollbars', 'selected', 'selected_activate_additive', 'selected_activate_adjust_spacing', 'selected_activate_align', 'selected_activate_alignaround', 'selected_activate_alpha', 'selected_activate_alt', 'selected_activate_anchor', 'selected_activate_angle', 'selected_activate_antialias', 'selected_activate_area', 'selected_activate_around', 'selected_activate_background', 'selected_activate_bar_invert', 'selected_activate_bar_resizing', 'selected_activate_bar_vertical', 'selected_activate_base_bar', 'selected_activate_black_color', 'selected_activate_bold', 'selected_activate_bottom_bar', 'selected_activate_bottom_gutter', 'selected_activate_bottom_margin', 'selected_activate_bottom_padding', 'selected_activate_box_layout', 'selected_activate_box_reverse', 'selected_activate_box_wrap', 'selected_activate_child', 'selected_activate_clipping', 'selected_activate_color', 'selected_activate_corner1', 'selected_activate_corner2', 'selected_activate_crop', 'selected_activate_crop_relative', 'selected_activate_debug', 'selected_activate_delay', 'selected_activate_drop_shadow', 'selected_activate_drop_shadow_color', 'selected_activate_events', 'selected_activate_first_indent', 'selected_activate_first_spacing', 'selected_activate_fit_first', 'selected_activate_focus_mask', 'selected_activate_font', 'selected_activate_foreground', 'selected_activate_hinting', 'selected_activate_hyperlink_functions', 'selected_activate_italic', 'selected_activate_justify', 'selected_activate_kerning', 'selected_activate_key_events', 'selected_activate_keyboard_focus', 'selected_activate_language', 'selected_activate_layout', 'selected_activate_left_bar', 'selected_activate_left_gutter', 'selected_activate_left_margin', 'selected_activate_left_padding', 'selected_activate_line_leading', 'selected_activate_line_spacing', 'selected_activate_margin', 'selected_activate_maximum', 'selected_activate_maxsize', 'selected_activate_min_width', 'selected_activate_minimum', 'selected_activate_minwidth', 'selected_activate_mouse', 'selected_activate_nearest', 'selected_activate_newline_indent', 'selected_activate_offset', 'selected_activate_order_reverse', 'selected_activate_outlines', 'selected_activate_padding', 'selected_activate_pos', 'selected_activate_radius', 'selected_activate_rest_indent', 'selected_activate_right_bar', 'selected_activate_right_gutter', 'selected_activate_right_margin', 'selected_activate_right_padding', 'selected_activate_rotate', 'selected_activate_rotate_pad', 'selected_activate_ruby_style', 'selected_activate_size', 'selected_activate_size_group', 'selected_activate_slow_abortable', 'selected_activate_slow_cps', 'selected_activate_slow_cps_multiplier', 'selected_activate_sound', 'selected_activate_spacing', 'selected_activate_strikethrough', 'selected_activate_subpixel', 'selected_activate_text_align', 'selected_activate_text_y_fudge', 'selected_activate_thumb', 'selected_activate_thumb_offset', 'selected_activate_thumb_shadow', 'selected_activate_tooltip', 'selected_activate_top_bar', 'selected_activate_top_gutter', 'selected_activate_top_margin', 'selected_activate_top_padding', 'selected_activate_transform_anchor', 'selected_activate_underline', 'selected_activate_unscrollable', 'selected_activate_vertical', 'selected_activate_xalign', 'selected_activate_xanchor', 'selected_activate_xanchoraround', 'selected_activate_xaround', 'selected_activate_xcenter', 'selected_activate_xfill', 'selected_activate_xfit', 'selected_activate_xmargin', 'selected_activate_xmaximum', 'selected_activate_xminimum', 'selected_activate_xoffset', 'selected_activate_xpadding', 'selected_activate_xpan', 'selected_activate_xpos', 'selected_activate_xsize', 'selected_activate_xspacing', 'selected_activate_xtile', 'selected_activate_xysize', 'selected_activate_xzoom', 'selected_activate_yalign', 'selected_activate_yanchor', 'selected_activate_yanchoraround', 'selected_activate_yaround', 'selected_activate_ycenter', 'selected_activate_yfill', 'selected_activate_yfit', 'selected_activate_ymargin', 'selected_activate_ymaximum', 'selected_activate_yminimum', 'selected_activate_yoffset', 'selected_activate_ypadding', 'selected_activate_ypan', 'selected_activate_ypos', 'selected_activate_ysize', 'selected_activate_yspacing', 'selected_activate_ytile', 'selected_activate_yzoom', 'selected_activate_zoom', 'selected_additive', 'selected_adjust_spacing', 'selected_align', 'selected_alignaround', 'selected_alpha', 'selected_alt', 'selected_anchor', 'selected_angle', 'selected_antialias', 'selected_area', 'selected_around', 'selected_background', 'selected_bar_invert', 'selected_bar_resizing', 'selected_bar_vertical', 'selected_base_bar', 'selected_black_color', 'selected_bold', 'selected_bottom_bar', 'selected_bottom_gutter', 'selected_bottom_margin', 'selected_bottom_padding', 'selected_box_layout', 'selected_box_reverse', 'selected_box_wrap', 'selected_child', 'selected_clipping', 'selected_color', 'selected_corner1', 'selected_corner2', 'selected_crop', 'selected_crop_relative', 'selected_debug', 'selected_delay', 'selected_drop_shadow', 'selected_drop_shadow_color', 'selected_events', 'selected_first_indent', 'selected_first_spacing', 'selected_fit_first', 'selected_focus_mask', 'selected_font', 'selected_foreground', 'selected_hinting', 'selected_hover', 'selected_hover_additive', 'selected_hover_adjust_spacing', 'selected_hover_align', 'selected_hover_alignaround', 'selected_hover_alpha', 'selected_hover_alt', 'selected_hover_anchor', 'selected_hover_angle', 'selected_hover_antialias', 'selected_hover_area', 'selected_hover_around', 'selected_hover_background', 'selected_hover_bar_invert', 'selected_hover_bar_resizing', 'selected_hover_bar_vertical', 'selected_hover_base_bar', 'selected_hover_black_color', 'selected_hover_bold', 'selected_hover_bottom_bar', 'selected_hover_bottom_gutter', 'selected_hover_bottom_margin', 'selected_hover_bottom_padding', 'selected_hover_box_layout', 'selected_hover_box_reverse', 'selected_hover_box_wrap', 'selected_hover_child', 'selected_hover_clipping', 'selected_hover_color', 'selected_hover_corner1', 'selected_hover_corner2', 'selected_hover_crop', 'selected_hover_crop_relative', 'selected_hover_debug', 'selected_hover_delay', 'selected_hover_drop_shadow', 'selected_hover_drop_shadow_color', 'selected_hover_events', 'selected_hover_first_indent', 'selected_hover_first_spacing', 'selected_hover_fit_first', 'selected_hover_focus_mask', 'selected_hover_font', 'selected_hover_foreground', 'selected_hover_hinting', 'selected_hover_hyperlink_functions', 'selected_hover_italic', 'selected_hover_justify', 'selected_hover_kerning', 'selected_hover_key_events', 'selected_hover_keyboard_focus', 'selected_hover_language', 'selected_hover_layout', 'selected_hover_left_bar', 'selected_hover_left_gutter', 'selected_hover_left_margin', 'selected_hover_left_padding', 'selected_hover_line_leading', 'selected_hover_line_spacing', 'selected_hover_margin', 'selected_hover_maximum', 'selected_hover_maxsize', 'selected_hover_min_width', 'selected_hover_minimum', 'selected_hover_minwidth', 'selected_hover_mouse', 'selected_hover_nearest', 'selected_hover_newline_indent', 'selected_hover_offset', 'selected_hover_order_reverse', 'selected_hover_outlines', 'selected_hover_padding', 'selected_hover_pos', 'selected_hover_radius', 'selected_hover_rest_indent', 'selected_hover_right_bar', 'selected_hover_right_gutter', 'selected_hover_right_margin', 'selected_hover_right_padding', 'selected_hover_rotate', 'selected_hover_rotate_pad', 'selected_hover_ruby_style', 'selected_hover_size', 'selected_hover_size_group', 'selected_hover_slow_abortable', 'selected_hover_slow_cps', 'selected_hover_slow_cps_multiplier', 'selected_hover_sound', 'selected_hover_spacing', 'selected_hover_strikethrough', 'selected_hover_subpixel', 'selected_hover_text_align', 'selected_hover_text_y_fudge', 'selected_hover_thumb', 'selected_hover_thumb_offset', 'selected_hover_thumb_shadow', 'selected_hover_tooltip', 'selected_hover_top_bar', 'selected_hover_top_gutter', 'selected_hover_top_margin', 'selected_hover_top_padding', 'selected_hover_transform_anchor', 'selected_hover_underline', 'selected_hover_unscrollable', 'selected_hover_vertical', 'selected_hover_xalign', 'selected_hover_xanchor', 'selected_hover_xanchoraround', 'selected_hover_xaround', 'selected_hover_xcenter', 'selected_hover_xfill', 'selected_hover_xfit', 'selected_hover_xmargin', 'selected_hover_xmaximum', 'selected_hover_xminimum', 'selected_hover_xoffset', 'selected_hover_xpadding', 'selected_hover_xpan', 'selected_hover_xpos', 'selected_hover_xsize', 'selected_hover_xspacing', 'selected_hover_xtile', 'selected_hover_xysize', 'selected_hover_xzoom', 'selected_hover_yalign', 'selected_hover_yanchor', 'selected_hover_yanchoraround', 'selected_hover_yaround', 'selected_hover_ycenter', 'selected_hover_yfill', 'selected_hover_yfit', 'selected_hover_ymargin', 'selected_hover_ymaximum', 'selected_hover_yminimum', 'selected_hover_yoffset', 'selected_hover_ypadding', 'selected_hover_ypan', 'selected_hover_ypos', 'selected_hover_ysize', 'selected_hover_yspacing', 'selected_hover_ytile', 'selected_hover_yzoom', 'selected_hover_zoom', 'selected_hyperlink_functions', 'selected_idle', 'selected_idle_additive', 'selected_idle_adjust_spacing', 'selected_idle_align', 'selected_idle_alignaround', 'selected_idle_alpha', 'selected_idle_alt', 'selected_idle_anchor', 'selected_idle_angle', 'selected_idle_antialias', 'selected_idle_area', 'selected_idle_around', 'selected_idle_background', 'selected_idle_bar_invert', 'selected_idle_bar_resizing', 'selected_idle_bar_vertical', 'selected_idle_base_bar', 'selected_idle_black_color', 'selected_idle_bold', 'selected_idle_bottom_bar', 'selected_idle_bottom_gutter', 'selected_idle_bottom_margin', 'selected_idle_bottom_padding', 'selected_idle_box_layout', 'selected_idle_box_reverse', 'selected_idle_box_wrap', 'selected_idle_child', 'selected_idle_clipping', 'selected_idle_color', 'selected_idle_corner1', 'selected_idle_corner2', 'selected_idle_crop', 'selected_idle_crop_relative', 'selected_idle_debug', 'selected_idle_delay', 'selected_idle_drop_shadow', 'selected_idle_drop_shadow_color', 'selected_idle_events', 'selected_idle_first_indent', 'selected_idle_first_spacing', 'selected_idle_fit_first', 'selected_idle_focus_mask', 'selected_idle_font', 'selected_idle_foreground', 'selected_idle_hinting', 'selected_idle_hyperlink_functions', 'selected_idle_italic', 'selected_idle_justify', 'selected_idle_kerning', 'selected_idle_key_events', 'selected_idle_keyboard_focus', 'selected_idle_language', 'selected_idle_layout', 'selected_idle_left_bar', 'selected_idle_left_gutter', 'selected_idle_left_margin', 'selected_idle_left_padding', 'selected_idle_line_leading', 'selected_idle_line_spacing', 'selected_idle_margin', 'selected_idle_maximum', 'selected_idle_maxsize', 'selected_idle_min_width', 'selected_idle_minimum', 'selected_idle_minwidth', 'selected_idle_mouse', 'selected_idle_nearest', 'selected_idle_newline_indent', 'selected_idle_offset', 'selected_idle_order_reverse', 'selected_idle_outlines', 'selected_idle_padding', 'selected_idle_pos', 'selected_idle_radius', 'selected_idle_rest_indent', 'selected_idle_right_bar', 'selected_idle_right_gutter', 'selected_idle_right_margin', 'selected_idle_right_padding', 'selected_idle_rotate', 'selected_idle_rotate_pad', 'selected_idle_ruby_style', 'selected_idle_size', 'selected_idle_size_group', 'selected_idle_slow_abortable', 'selected_idle_slow_cps', 'selected_idle_slow_cps_multiplier', 'selected_idle_sound', 'selected_idle_spacing', 'selected_idle_strikethrough', 'selected_idle_subpixel', 'selected_idle_text_align', 'selected_idle_text_y_fudge', 'selected_idle_thumb', 'selected_idle_thumb_offset', 'selected_idle_thumb_shadow', 'selected_idle_tooltip', 'selected_idle_top_bar', 'selected_idle_top_gutter', 'selected_idle_top_margin', 'selected_idle_top_padding', 'selected_idle_transform_anchor', 'selected_idle_underline', 'selected_idle_unscrollable', 'selected_idle_vertical', 'selected_idle_xalign', 'selected_idle_xanchor', 'selected_idle_xanchoraround', 'selected_idle_xaround', 'selected_idle_xcenter', 'selected_idle_xfill', 'selected_idle_xfit', 'selected_idle_xmargin', 'selected_idle_xmaximum', 'selected_idle_xminimum', 'selected_idle_xoffset', 'selected_idle_xpadding', 'selected_idle_xpan', 'selected_idle_xpos', 'selected_idle_xsize', 'selected_idle_xspacing', 'selected_idle_xtile', 'selected_idle_xysize', 'selected_idle_xzoom', 'selected_idle_yalign', 'selected_idle_yanchor', 'selected_idle_yanchoraround', 'selected_idle_yaround', 'selected_idle_ycenter', 'selected_idle_yfill', 'selected_idle_yfit', 'selected_idle_ymargin', 'selected_idle_ymaximum', 'selected_idle_yminimum', 'selected_idle_yoffset', 'selected_idle_ypadding', 'selected_idle_ypan', 'selected_idle_ypos', 'selected_idle_ysize', 'selected_idle_yspacing', 'selected_idle_ytile', 'selected_idle_yzoom', 'selected_idle_zoom', 'selected_insensitive', 'selected_insensitive_additive', 'selected_insensitive_adjust_spacing', 'selected_insensitive_align', 'selected_insensitive_alignaround', 'selected_insensitive_alpha', 'selected_insensitive_alt', 'selected_insensitive_anchor', 'selected_insensitive_angle', 'selected_insensitive_antialias', 'selected_insensitive_area', 'selected_insensitive_around', 'selected_insensitive_background', 'selected_insensitive_bar_invert', 'selected_insensitive_bar_resizing', 'selected_insensitive_bar_vertical', 'selected_insensitive_base_bar', 'selected_insensitive_black_color', 'selected_insensitive_bold', 'selected_insensitive_bottom_bar', 'selected_insensitive_bottom_gutter', 'selected_insensitive_bottom_margin', 'selected_insensitive_bottom_padding', 'selected_insensitive_box_layout', 'selected_insensitive_box_reverse', 'selected_insensitive_box_wrap', 'selected_insensitive_child', 'selected_insensitive_clipping', 'selected_insensitive_color', 'selected_insensitive_corner1', 'selected_insensitive_corner2', 'selected_insensitive_crop', 'selected_insensitive_crop_relative', 'selected_insensitive_debug', 'selected_insensitive_delay', 'selected_insensitive_drop_shadow', 'selected_insensitive_drop_shadow_color', 'selected_insensitive_events', 'selected_insensitive_first_indent', 'selected_insensitive_first_spacing', 'selected_insensitive_fit_first', 'selected_insensitive_focus_mask', 'selected_insensitive_font', 'selected_insensitive_foreground', 'selected_insensitive_hinting', 'selected_insensitive_hyperlink_functions', 'selected_insensitive_italic', 'selected_insensitive_justify', 'selected_insensitive_kerning', 'selected_insensitive_key_events', 'selected_insensitive_keyboard_focus', 'selected_insensitive_language', 'selected_insensitive_layout', 'selected_insensitive_left_bar', 'selected_insensitive_left_gutter', 'selected_insensitive_left_margin', 'selected_insensitive_left_padding', 'selected_insensitive_line_leading', 'selected_insensitive_line_spacing', 'selected_insensitive_margin', 'selected_insensitive_maximum', 'selected_insensitive_maxsize', 'selected_insensitive_min_width', 'selected_insensitive_minimum', 'selected_insensitive_minwidth', 'selected_insensitive_mouse', 'selected_insensitive_nearest', 'selected_insensitive_newline_indent', 'selected_insensitive_offset', 'selected_insensitive_order_reverse', 'selected_insensitive_outlines', 'selected_insensitive_padding', 'selected_insensitive_pos', 'selected_insensitive_radius', 'selected_insensitive_rest_indent', 'selected_insensitive_right_bar', 'selected_insensitive_right_gutter', 'selected_insensitive_right_margin', 'selected_insensitive_right_padding', 'selected_insensitive_rotate', 'selected_insensitive_rotate_pad', 'selected_insensitive_ruby_style', 'selected_insensitive_size', 'selected_insensitive_size_group', 'selected_insensitive_slow_abortable', 'selected_insensitive_slow_cps', 'selected_insensitive_slow_cps_multiplier', 'selected_insensitive_sound', 'selected_insensitive_spacing', 'selected_insensitive_strikethrough', 'selected_insensitive_subpixel', 'selected_insensitive_text_align', 'selected_insensitive_text_y_fudge', 'selected_insensitive_thumb', 'selected_insensitive_thumb_offset', 'selected_insensitive_thumb_shadow', 'selected_insensitive_tooltip', 'selected_insensitive_top_bar', 'selected_insensitive_top_gutter', 'selected_insensitive_top_margin', 'selected_insensitive_top_padding', 'selected_insensitive_transform_anchor', 'selected_insensitive_underline', 'selected_insensitive_unscrollable', 'selected_insensitive_vertical', 'selected_insensitive_xalign', 'selected_insensitive_xanchor', 'selected_insensitive_xanchoraround', 'selected_insensitive_xaround', 'selected_insensitive_xcenter', 'selected_insensitive_xfill', 'selected_insensitive_xfit', 'selected_insensitive_xmargin', 'selected_insensitive_xmaximum', 'selected_insensitive_xminimum', 'selected_insensitive_xoffset', 'selected_insensitive_xpadding', 'selected_insensitive_xpan', 'selected_insensitive_xpos', 'selected_insensitive_xsize', 'selected_insensitive_xspacing', 'selected_insensitive_xtile', 'selected_insensitive_xysize', 'selected_insensitive_xzoom', 'selected_insensitive_yalign', 'selected_insensitive_yanchor', 'selected_insensitive_yanchoraround', 'selected_insensitive_yaround', 'selected_insensitive_ycenter', 'selected_insensitive_yfill', 'selected_insensitive_yfit', 'selected_insensitive_ymargin', 'selected_insensitive_ymaximum', 'selected_insensitive_yminimum', 'selected_insensitive_yoffset', 'selected_insensitive_ypadding', 'selected_insensitive_ypan', 'selected_insensitive_ypos', 'selected_insensitive_ysize', 'selected_insensitive_yspacing', 'selected_insensitive_ytile', 'selected_insensitive_yzoom', 'selected_insensitive_zoom', 'selected_italic', 'selected_justify', 'selected_kerning', 'selected_key_events', 'selected_keyboard_focus', 'selected_language', 'selected_layout', 'selected_left_bar', 'selected_left_gutter', 'selected_left_margin', 'selected_left_padding', 'selected_line_leading', 'selected_line_spacing', 'selected_margin', 'selected_maximum', 'selected_maxsize', 'selected_min_width', 'selected_minimum', 'selected_minwidth', 'selected_mouse', 'selected_nearest', 'selected_newline_indent', 'selected_offset', 'selected_order_reverse', 'selected_outlines', 'selected_padding', 'selected_pos', 'selected_radius', 'selected_rest_indent', 'selected_right_bar', 'selected_right_gutter', 'selected_right_margin', 'selected_right_padding', 'selected_rotate', 'selected_rotate_pad', 'selected_ruby_style', 'selected_size', 'selected_size_group', 'selected_slow_abortable', 'selected_slow_cps', 'selected_slow_cps_multiplier', 'selected_sound', 'selected_spacing', 'selected_strikethrough', 'selected_subpixel', 'selected_text_align', 'selected_text_y_fudge', 'selected_thumb', 'selected_thumb_offset', 'selected_thumb_shadow', 'selected_tooltip', 'selected_top_bar', 'selected_top_gutter', 'selected_top_margin', 'selected_top_padding', 'selected_transform_anchor', 'selected_underline', 'selected_unscrollable', 'selected_vertical', 'selected_xalign', 'selected_xanchor', 'selected_xanchoraround', 'selected_xaround', 'selected_xcenter', 'selected_xfill', 'selected_xfit', 'selected_xmargin', 'selected_xmaximum', 'selected_xminimum', 'selected_xoffset', 'selected_xpadding', 'selected_xpan', 'selected_xpos', 'selected_xsize', 'selected_xspacing', 'selected_xtile', 'selected_xysize', 'selected_xzoom', 'selected_yalign', 'selected_yanchor', 'selected_yanchoraround', 'selected_yaround', 'selected_ycenter', 'selected_yfill', 'selected_yfit', 'selected_ymargin', 'selected_ymaximum', 'selected_yminimum', 'selected_yoffset', 'selected_ypadding', 'selected_ypan', 'selected_ypos', 'selected_ysize', 'selected_yspacing', 'selected_ytile', 'selected_yzoom', 'selected_zoom', 'sensitive', 'side_activate_align', 'side_activate_alt', 'side_activate_anchor', 'side_activate_area', 'side_activate_clipping', 'side_activate_debug', 'side_activate_maximum', 'side_activate_offset', 'side_activate_pos', 'side_activate_spacing', 'side_activate_tooltip', 'side_activate_xalign', 'side_activate_xanchor', 'side_activate_xcenter', 'side_activate_xfill', 'side_activate_xmaximum', 'side_activate_xoffset', 'side_activate_xpos', 'side_activate_xsize', 'side_activate_xysize', 'side_activate_yalign', 'side_activate_yanchor', 'side_activate_ycenter', 'side_activate_yfill', 'side_activate_ymaximum', 'side_activate_yoffset', 'side_activate_ypos', 'side_activate_ysize', 'side_align', 'side_alt', 'side_anchor', 'side_area', 'side_clipping', 'side_debug', 'side_hover_align', 'side_hover_alt', 'side_hover_anchor', 'side_hover_area', 'side_hover_clipping', 'side_hover_debug', 'side_hover_maximum', 'side_hover_offset', 'side_hover_pos', 'side_hover_spacing', 'side_hover_tooltip', 'side_hover_xalign', 'side_hover_xanchor', 'side_hover_xcenter', 'side_hover_xfill', 'side_hover_xmaximum', 'side_hover_xoffset', 'side_hover_xpos', 'side_hover_xsize', 'side_hover_xysize', 'side_hover_yalign', 'side_hover_yanchor', 'side_hover_ycenter', 'side_hover_yfill', 'side_hover_ymaximum', 'side_hover_yoffset', 'side_hover_ypos', 'side_hover_ysize', 'side_idle_align', 'side_idle_alt', 'side_idle_anchor', 'side_idle_area', 'side_idle_clipping', 'side_idle_debug', 'side_idle_maximum', 'side_idle_offset', 'side_idle_pos', 'side_idle_spacing', 'side_idle_tooltip', 'side_idle_xalign', 'side_idle_xanchor', 'side_idle_xcenter', 'side_idle_xfill', 'side_idle_xmaximum', 'side_idle_xoffset', 'side_idle_xpos', 'side_idle_xsize', 'side_idle_xysize', 'side_idle_yalign', 'side_idle_yanchor', 'side_idle_ycenter', 'side_idle_yfill', 'side_idle_ymaximum', 'side_idle_yoffset', 'side_idle_ypos', 'side_idle_ysize', 'side_insensitive_align', 'side_insensitive_alt', 'side_insensitive_anchor', 'side_insensitive_area', 'side_insensitive_clipping', 'side_insensitive_debug', 'side_insensitive_maximum', 'side_insensitive_offset', 'side_insensitive_pos', 'side_insensitive_spacing', 'side_insensitive_tooltip', 'side_insensitive_xalign', 'side_insensitive_xanchor', 'side_insensitive_xcenter', 'side_insensitive_xfill', 'side_insensitive_xmaximum', 'side_insensitive_xoffset', 'side_insensitive_xpos', 'side_insensitive_xsize', 'side_insensitive_xysize', 'side_insensitive_yalign', 'side_insensitive_yanchor', 'side_insensitive_ycenter', 'side_insensitive_yfill', 'side_insensitive_ymaximum', 'side_insensitive_yoffset', 'side_insensitive_ypos', 'side_insensitive_ysize', 'side_maximum', 'side_offset', 'side_pos', 'side_selected_activate_align', 'side_selected_activate_alt', 'side_selected_activate_anchor', 'side_selected_activate_area', 'side_selected_activate_clipping', 'side_selected_activate_debug', 'side_selected_activate_maximum', 'side_selected_activate_offset', 'side_selected_activate_pos', 'side_selected_activate_spacing', 'side_selected_activate_tooltip', 'side_selected_activate_xalign', 'side_selected_activate_xanchor', 'side_selected_activate_xcenter', 'side_selected_activate_xfill', 'side_selected_activate_xmaximum', 'side_selected_activate_xoffset', 'side_selected_activate_xpos', 'side_selected_activate_xsize', 'side_selected_activate_xysize', 'side_selected_activate_yalign', 'side_selected_activate_yanchor', 'side_selected_activate_ycenter', 'side_selected_activate_yfill', 'side_selected_activate_ymaximum', 'side_selected_activate_yoffset', 'side_selected_activate_ypos', 'side_selected_activate_ysize', 'side_selected_align', 'side_selected_alt', 'side_selected_anchor', 'side_selected_area', 'side_selected_clipping', 'side_selected_debug', 'side_selected_hover_align', 'side_selected_hover_alt', 'side_selected_hover_anchor', 'side_selected_hover_area', 'side_selected_hover_clipping', 'side_selected_hover_debug', 'side_selected_hover_maximum', 'side_selected_hover_offset', 'side_selected_hover_pos', 'side_selected_hover_spacing', 'side_selected_hover_tooltip', 'side_selected_hover_xalign', 'side_selected_hover_xanchor', 'side_selected_hover_xcenter', 'side_selected_hover_xfill', 'side_selected_hover_xmaximum', 'side_selected_hover_xoffset', 'side_selected_hover_xpos', 'side_selected_hover_xsize', 'side_selected_hover_xysize', 'side_selected_hover_yalign', 'side_selected_hover_yanchor', 'side_selected_hover_ycenter', 'side_selected_hover_yfill', 'side_selected_hover_ymaximum', 'side_selected_hover_yoffset', 'side_selected_hover_ypos', 'side_selected_hover_ysize', 'side_selected_idle_align', 'side_selected_idle_alt', 'side_selected_idle_anchor', 'side_selected_idle_area', 'side_selected_idle_clipping', 'side_selected_idle_debug', 'side_selected_idle_maximum', 'side_selected_idle_offset', 'side_selected_idle_pos', 'side_selected_idle_spacing', 'side_selected_idle_tooltip', 'side_selected_idle_xalign', 'side_selected_idle_xanchor', 'side_selected_idle_xcenter', 'side_selected_idle_xfill', 'side_selected_idle_xmaximum', 'side_selected_idle_xoffset', 'side_selected_idle_xpos', 'side_selected_idle_xsize', 'side_selected_idle_xysize', 'side_selected_idle_yalign', 'side_selected_idle_yanchor', 'side_selected_idle_ycenter', 'side_selected_idle_yfill', 'side_selected_idle_ymaximum', 'side_selected_idle_yoffset', 'side_selected_idle_ypos', 'side_selected_idle_ysize', 'side_selected_insensitive_align', 'side_selected_insensitive_alt', 'side_selected_insensitive_anchor', 'side_selected_insensitive_area', 'side_selected_insensitive_clipping', 'side_selected_insensitive_debug', 'side_selected_insensitive_maximum', 'side_selected_insensitive_offset', 'side_selected_insensitive_pos', 'side_selected_insensitive_spacing', 'side_selected_insensitive_tooltip', 'side_selected_insensitive_xalign', 'side_selected_insensitive_xanchor', 'side_selected_insensitive_xcenter', 'side_selected_insensitive_xfill', 'side_selected_insensitive_xmaximum', 'side_selected_insensitive_xoffset', 'side_selected_insensitive_xpos', 'side_selected_insensitive_xsize', 'side_selected_insensitive_xysize', 'side_selected_insensitive_yalign', 'side_selected_insensitive_yanchor', 'side_selected_insensitive_ycenter', 'side_selected_insensitive_yfill', 'side_selected_insensitive_ymaximum', 'side_selected_insensitive_yoffset', 'side_selected_insensitive_ypos', 'side_selected_insensitive_ysize', 'side_selected_maximum', 'side_selected_offset', 'side_selected_pos', 'side_selected_spacing', 'side_selected_tooltip', 'side_selected_xalign', 'side_selected_xanchor', 'side_selected_xcenter', 'side_selected_xfill', 'side_selected_xmaximum', 'side_selected_xoffset', 'side_selected_xpos', 'side_selected_xsize', 'side_selected_xysize', 'side_selected_yalign', 'side_selected_yanchor', 'side_selected_ycenter', 'side_selected_yfill', 'side_selected_ymaximum', 'side_selected_yoffset', 'side_selected_ypos', 'side_selected_ysize', 'side_spacing', 'side_tooltip', 'side_xalign', 'side_xanchor', 'side_xcenter', 'side_xfill', 'side_xmaximum', 'side_xoffset', 'side_xpos', 'side_xsize', 'side_xysize', 'side_yalign', 'side_yanchor', 'side_ycenter', 'side_yfill', 'side_ymaximum', 'side_yoffset', 'side_ypos', 'side_ysize', 'size', 'size_group', 'slow', 'slow_abortable', 'slow_cps', 'slow_cps_multiplier', 'slow_done', 'spacing', 'strikethrough', 'style_group', 'style_prefix', 'style_suffix', 'subpixel', 'substitute', 'suffix', 'text_activate_adjust_spacing', 'text_activate_align', 'text_activate_alt', 'text_activate_anchor', 'text_activate_antialias', 'text_activate_area', 'text_activate_black_color', 'text_activate_bold', 'text_activate_clipping', 'text_activate_color', 'text_activate_debug', 'text_activate_drop_shadow', 'text_activate_drop_shadow_color', 'text_activate_first_indent', 'text_activate_font', 'text_activate_hinting', 'text_activate_hyperlink_functions', 'text_activate_italic', 'text_activate_justify', 'text_activate_kerning', 'text_activate_language', 'text_activate_layout', 'text_activate_line_leading', 'text_activate_line_spacing', 'text_activate_maximum', 'text_activate_min_width', 'text_activate_minimum', 'text_activate_minwidth', 'text_activate_newline_indent', 'text_activate_offset', 'text_activate_outlines', 'text_activate_pos', 'text_activate_rest_indent', 'text_activate_ruby_style', 'text_activate_size', 'text_activate_slow_abortable', 'text_activate_slow_cps', 'text_activate_slow_cps_multiplier', 'text_activate_strikethrough', 'text_activate_text_align', 'text_activate_text_y_fudge', 'text_activate_tooltip', 'text_activate_underline', 'text_activate_vertical', 'text_activate_xalign', 'text_activate_xanchor', 'text_activate_xcenter', 'text_activate_xfill', 'text_activate_xmaximum', 'text_activate_xminimum', 'text_activate_xoffset', 'text_activate_xpos', 'text_activate_xsize', 'text_activate_xysize', 'text_activate_yalign', 'text_activate_yanchor', 'text_activate_ycenter', 'text_activate_yfill', 'text_activate_ymaximum', 'text_activate_yminimum', 'text_activate_yoffset', 'text_activate_ypos', 'text_activate_ysize', 'text_adjust_spacing', 'text_align', 'text_alt', 'text_anchor', 'text_antialias', 'text_area', 'text_black_color', 'text_bold', 'text_clipping', 'text_color', 'text_debug', 'text_drop_shadow', 'text_drop_shadow_color', 'text_first_indent', 'text_font', 'text_hinting', 'text_hover_adjust_spacing', 'text_hover_align', 'text_hover_alt', 'text_hover_anchor', 'text_hover_antialias', 'text_hover_area', 'text_hover_black_color', 'text_hover_bold', 'text_hover_clipping', 'text_hover_color', 'text_hover_debug', 'text_hover_drop_shadow', 'text_hover_drop_shadow_color', 'text_hover_first_indent', 'text_hover_font', 'text_hover_hinting', 'text_hover_hyperlink_functions', 'text_hover_italic', 'text_hover_justify', 'text_hover_kerning', 'text_hover_language', 'text_hover_layout', 'text_hover_line_leading', 'text_hover_line_spacing', 'text_hover_maximum', 'text_hover_min_width', 'text_hover_minimum', 'text_hover_minwidth', 'text_hover_newline_indent', 'text_hover_offset', 'text_hover_outlines', 'text_hover_pos', 'text_hover_rest_indent', 'text_hover_ruby_style', 'text_hover_size', 'text_hover_slow_abortable', 'text_hover_slow_cps', 'text_hover_slow_cps_multiplier', 'text_hover_strikethrough', 'text_hover_text_align', 'text_hover_text_y_fudge', 'text_hover_tooltip', 'text_hover_underline', 'text_hover_vertical', 'text_hover_xalign', 'text_hover_xanchor', 'text_hover_xcenter', 'text_hover_xfill', 'text_hover_xmaximum', 'text_hover_xminimum', 'text_hover_xoffset', 'text_hover_xpos', 'text_hover_xsize', 'text_hover_xysize', 'text_hover_yalign', 'text_hover_yanchor', 'text_hover_ycenter', 'text_hover_yfill', 'text_hover_ymaximum', 'text_hover_yminimum', 'text_hover_yoffset', 'text_hover_ypos', 'text_hover_ysize', 'text_hyperlink_functions', 'text_idle_adjust_spacing', 'text_idle_align', 'text_idle_alt', 'text_idle_anchor', 'text_idle_antialias', 'text_idle_area', 'text_idle_black_color', 'text_idle_bold', 'text_idle_clipping', 'text_idle_color', 'text_idle_debug', 'text_idle_drop_shadow', 'text_idle_drop_shadow_color', 'text_idle_first_indent', 'text_idle_font', 'text_idle_hinting', 'text_idle_hyperlink_functions', 'text_idle_italic', 'text_idle_justify', 'text_idle_kerning', 'text_idle_language', 'text_idle_layout', 'text_idle_line_leading', 'text_idle_line_spacing', 'text_idle_maximum', 'text_idle_min_width', 'text_idle_minimum', 'text_idle_minwidth', 'text_idle_newline_indent', 'text_idle_offset', 'text_idle_outlines', 'text_idle_pos', 'text_idle_rest_indent', 'text_idle_ruby_style', 'text_idle_size', 'text_idle_slow_abortable', 'text_idle_slow_cps', 'text_idle_slow_cps_multiplier', 'text_idle_strikethrough', 'text_idle_text_align', 'text_idle_text_y_fudge', 'text_idle_tooltip', 'text_idle_underline', 'text_idle_vertical', 'text_idle_xalign', 'text_idle_xanchor', 'text_idle_xcenter', 'text_idle_xfill', 'text_idle_xmaximum', 'text_idle_xminimum', 'text_idle_xoffset', 'text_idle_xpos', 'text_idle_xsize', 'text_idle_xysize', 'text_idle_yalign', 'text_idle_yanchor', 'text_idle_ycenter', 'text_idle_yfill', 'text_idle_ymaximum', 'text_idle_yminimum', 'text_idle_yoffset', 'text_idle_ypos', 'text_idle_ysize', 'text_insensitive_adjust_spacing', 'text_insensitive_align', 'text_insensitive_alt', 'text_insensitive_anchor', 'text_insensitive_antialias', 'text_insensitive_area', 'text_insensitive_black_color', 'text_insensitive_bold', 'text_insensitive_clipping', 'text_insensitive_color', 'text_insensitive_debug', 'text_insensitive_drop_shadow', 'text_insensitive_drop_shadow_color', 'text_insensitive_first_indent', 'text_insensitive_font', 'text_insensitive_hinting', 'text_insensitive_hyperlink_functions', 'text_insensitive_italic', 'text_insensitive_justify', 'text_insensitive_kerning', 'text_insensitive_language', 'text_insensitive_layout', 'text_insensitive_line_leading', 'text_insensitive_line_spacing', 'text_insensitive_maximum', 'text_insensitive_min_width', 'text_insensitive_minimum', 'text_insensitive_minwidth', 'text_insensitive_newline_indent', 'text_insensitive_offset', 'text_insensitive_outlines', 'text_insensitive_pos', 'text_insensitive_rest_indent', 'text_insensitive_ruby_style', 'text_insensitive_size', 'text_insensitive_slow_abortable', 'text_insensitive_slow_cps', 'text_insensitive_slow_cps_multiplier', 'text_insensitive_strikethrough', 'text_insensitive_text_align', 'text_insensitive_text_y_fudge', 'text_insensitive_tooltip', 'text_insensitive_underline', 'text_insensitive_vertical', 'text_insensitive_xalign', 'text_insensitive_xanchor', 'text_insensitive_xcenter', 'text_insensitive_xfill', 'text_insensitive_xmaximum', 'text_insensitive_xminimum', 'text_insensitive_xoffset', 'text_insensitive_xpos', 'text_insensitive_xsize', 'text_insensitive_xysize', 'text_insensitive_yalign', 'text_insensitive_yanchor', 'text_insensitive_ycenter', 'text_insensitive_yfill', 'text_insensitive_ymaximum', 'text_insensitive_yminimum', 'text_insensitive_yoffset', 'text_insensitive_ypos', 'text_insensitive_ysize', 'text_italic', 'text_justify', 'text_kerning', 'text_language', 'text_layout', 'text_line_leading', 'text_line_spacing', 'text_maximum', 'text_min_width', 'text_minimum', 'text_minwidth', 'text_newline_indent', 'text_offset', 'text_outlines', 'text_pos', 'text_rest_indent', 'text_ruby_style', 'text_selected_activate_adjust_spacing', 'text_selected_activate_align', 'text_selected_activate_alt', 'text_selected_activate_anchor', 'text_selected_activate_antialias', 'text_selected_activate_area', 'text_selected_activate_black_color', 'text_selected_activate_bold', 'text_selected_activate_clipping', 'text_selected_activate_color', 'text_selected_activate_debug', 'text_selected_activate_drop_shadow', 'text_selected_activate_drop_shadow_color', 'text_selected_activate_first_indent', 'text_selected_activate_font', 'text_selected_activate_hinting', 'text_selected_activate_hyperlink_functions', 'text_selected_activate_italic', 'text_selected_activate_justify', 'text_selected_activate_kerning', 'text_selected_activate_language', 'text_selected_activate_layout', 'text_selected_activate_line_leading', 'text_selected_activate_line_spacing', 'text_selected_activate_maximum', 'text_selected_activate_min_width', 'text_selected_activate_minimum', 'text_selected_activate_minwidth', 'text_selected_activate_newline_indent', 'text_selected_activate_offset', 'text_selected_activate_outlines', 'text_selected_activate_pos', 'text_selected_activate_rest_indent', 'text_selected_activate_ruby_style', 'text_selected_activate_size', 'text_selected_activate_slow_abortable', 'text_selected_activate_slow_cps', 'text_selected_activate_slow_cps_multiplier', 'text_selected_activate_strikethrough', 'text_selected_activate_text_align', 'text_selected_activate_text_y_fudge', 'text_selected_activate_tooltip', 'text_selected_activate_underline', 'text_selected_activate_vertical', 'text_selected_activate_xalign', 'text_selected_activate_xanchor', 'text_selected_activate_xcenter', 'text_selected_activate_xfill', 'text_selected_activate_xmaximum', 'text_selected_activate_xminimum', 'text_selected_activate_xoffset', 'text_selected_activate_xpos', 'text_selected_activate_xsize', 'text_selected_activate_xysize', 'text_selected_activate_yalign', 'text_selected_activate_yanchor', 'text_selected_activate_ycenter', 'text_selected_activate_yfill', 'text_selected_activate_ymaximum', 'text_selected_activate_yminimum', 'text_selected_activate_yoffset', 'text_selected_activate_ypos', 'text_selected_activate_ysize', 'text_selected_adjust_spacing', 'text_selected_align', 'text_selected_alt', 'text_selected_anchor', 'text_selected_antialias', 'text_selected_area', 'text_selected_black_color', 'text_selected_bold', 'text_selected_clipping', 'text_selected_color', 'text_selected_debug', 'text_selected_drop_shadow', 'text_selected_drop_shadow_color', 'text_selected_first_indent', 'text_selected_font', 'text_selected_hinting', 'text_selected_hover_adjust_spacing', 'text_selected_hover_align', 'text_selected_hover_alt', 'text_selected_hover_anchor', 'text_selected_hover_antialias', 'text_selected_hover_area', 'text_selected_hover_black_color', 'text_selected_hover_bold', 'text_selected_hover_clipping', 'text_selected_hover_color', 'text_selected_hover_debug', 'text_selected_hover_drop_shadow', 'text_selected_hover_drop_shadow_color', 'text_selected_hover_first_indent', 'text_selected_hover_font', 'text_selected_hover_hinting', 'text_selected_hover_hyperlink_functions', 'text_selected_hover_italic', 'text_selected_hover_justify', 'text_selected_hover_kerning', 'text_selected_hover_language', 'text_selected_hover_layout', 'text_selected_hover_line_leading', 'text_selected_hover_line_spacing', 'text_selected_hover_maximum', 'text_selected_hover_min_width', 'text_selected_hover_minimum', 'text_selected_hover_minwidth', 'text_selected_hover_newline_indent', 'text_selected_hover_offset', 'text_selected_hover_outlines', 'text_selected_hover_pos', 'text_selected_hover_rest_indent', 'text_selected_hover_ruby_style', 'text_selected_hover_size', 'text_selected_hover_slow_abortable', 'text_selected_hover_slow_cps', 'text_selected_hover_slow_cps_multiplier', 'text_selected_hover_strikethrough', 'text_selected_hover_text_align', 'text_selected_hover_text_y_fudge', 'text_selected_hover_tooltip', 'text_selected_hover_underline', 'text_selected_hover_vertical', 'text_selected_hover_xalign', 'text_selected_hover_xanchor', 'text_selected_hover_xcenter', 'text_selected_hover_xfill', 'text_selected_hover_xmaximum', 'text_selected_hover_xminimum', 'text_selected_hover_xoffset', 'text_selected_hover_xpos', 'text_selected_hover_xsize', 'text_selected_hover_xysize', 'text_selected_hover_yalign', 'text_selected_hover_yanchor', 'text_selected_hover_ycenter', 'text_selected_hover_yfill', 'text_selected_hover_ymaximum', 'text_selected_hover_yminimum', 'text_selected_hover_yoffset', 'text_selected_hover_ypos', 'text_selected_hover_ysize', 'text_selected_hyperlink_functions', 'text_selected_idle_adjust_spacing', 'text_selected_idle_align', 'text_selected_idle_alt', 'text_selected_idle_anchor', 'text_selected_idle_antialias', 'text_selected_idle_area', 'text_selected_idle_black_color', 'text_selected_idle_bold', 'text_selected_idle_clipping', 'text_selected_idle_color', 'text_selected_idle_debug', 'text_selected_idle_drop_shadow', 'text_selected_idle_drop_shadow_color', 'text_selected_idle_first_indent', 'text_selected_idle_font', 'text_selected_idle_hinting', 'text_selected_idle_hyperlink_functions', 'text_selected_idle_italic', 'text_selected_idle_justify', 'text_selected_idle_kerning', 'text_selected_idle_language', 'text_selected_idle_layout', 'text_selected_idle_line_leading', 'text_selected_idle_line_spacing', 'text_selected_idle_maximum', 'text_selected_idle_min_width', 'text_selected_idle_minimum', 'text_selected_idle_minwidth', 'text_selected_idle_newline_indent', 'text_selected_idle_offset', 'text_selected_idle_outlines', 'text_selected_idle_pos', 'text_selected_idle_rest_indent', 'text_selected_idle_ruby_style', 'text_selected_idle_size', 'text_selected_idle_slow_abortable', 'text_selected_idle_slow_cps', 'text_selected_idle_slow_cps_multiplier', 'text_selected_idle_strikethrough', 'text_selected_idle_text_align', 'text_selected_idle_text_y_fudge', 'text_selected_idle_tooltip', 'text_selected_idle_underline', 'text_selected_idle_vertical', 'text_selected_idle_xalign', 'text_selected_idle_xanchor', 'text_selected_idle_xcenter', 'text_selected_idle_xfill', 'text_selected_idle_xmaximum', 'text_selected_idle_xminimum', 'text_selected_idle_xoffset', 'text_selected_idle_xpos', 'text_selected_idle_xsize', 'text_selected_idle_xysize', 'text_selected_idle_yalign', 'text_selected_idle_yanchor', 'text_selected_idle_ycenter', 'text_selected_idle_yfill', 'text_selected_idle_ymaximum', 'text_selected_idle_yminimum', 'text_selected_idle_yoffset', 'text_selected_idle_ypos', 'text_selected_idle_ysize', 'text_selected_insensitive_adjust_spacing', 'text_selected_insensitive_align', 'text_selected_insensitive_alt', 'text_selected_insensitive_anchor', 'text_selected_insensitive_antialias', 'text_selected_insensitive_area', 'text_selected_insensitive_black_color', 'text_selected_insensitive_bold', 'text_selected_insensitive_clipping', 'text_selected_insensitive_color', 'text_selected_insensitive_debug', 'text_selected_insensitive_drop_shadow', 'text_selected_insensitive_drop_shadow_color', 'text_selected_insensitive_first_indent', 'text_selected_insensitive_font', 'text_selected_insensitive_hinting', 'text_selected_insensitive_hyperlink_functions', 'text_selected_insensitive_italic', 'text_selected_insensitive_justify', 'text_selected_insensitive_kerning', 'text_selected_insensitive_language', 'text_selected_insensitive_layout', 'text_selected_insensitive_line_leading', 'text_selected_insensitive_line_spacing', 'text_selected_insensitive_maximum', 'text_selected_insensitive_min_width', 'text_selected_insensitive_minimum', 'text_selected_insensitive_minwidth', 'text_selected_insensitive_newline_indent', 'text_selected_insensitive_offset', 'text_selected_insensitive_outlines', 'text_selected_insensitive_pos', 'text_selected_insensitive_rest_indent', 'text_selected_insensitive_ruby_style', 'text_selected_insensitive_size', 'text_selected_insensitive_slow_abortable', 'text_selected_insensitive_slow_cps', 'text_selected_insensitive_slow_cps_multiplier', 'text_selected_insensitive_strikethrough', 'text_selected_insensitive_text_align', 'text_selected_insensitive_text_y_fudge', 'text_selected_insensitive_tooltip', 'text_selected_insensitive_underline', 'text_selected_insensitive_vertical', 'text_selected_insensitive_xalign', 'text_selected_insensitive_xanchor', 'text_selected_insensitive_xcenter', 'text_selected_insensitive_xfill', 'text_selected_insensitive_xmaximum', 'text_selected_insensitive_xminimum', 'text_selected_insensitive_xoffset', 'text_selected_insensitive_xpos', 'text_selected_insensitive_xsize', 'text_selected_insensitive_xysize', 'text_selected_insensitive_yalign', 'text_selected_insensitive_yanchor', 'text_selected_insensitive_ycenter', 'text_selected_insensitive_yfill', 'text_selected_insensitive_ymaximum', 'text_selected_insensitive_yminimum', 'text_selected_insensitive_yoffset', 'text_selected_insensitive_ypos', 'text_selected_insensitive_ysize', 'text_selected_italic', 'text_selected_justify', 'text_selected_kerning', 'text_selected_language', 'text_selected_layout', 'text_selected_line_leading', 'text_selected_line_spacing', 'text_selected_maximum', 'text_selected_min_width', 'text_selected_minimum', 'text_selected_minwidth', 'text_selected_newline_indent', 'text_selected_offset', 'text_selected_outlines', 'text_selected_pos', 'text_selected_rest_indent', 'text_selected_ruby_style', 'text_selected_size', 'text_selected_slow_abortable', 'text_selected_slow_cps', 'text_selected_slow_cps_multiplier', 'text_selected_strikethrough', 'text_selected_text_align', 'text_selected_text_y_fudge', 'text_selected_tooltip', 'text_selected_underline', 'text_selected_vertical', 'text_selected_xalign', 'text_selected_xanchor', 'text_selected_xcenter', 'text_selected_xfill', 'text_selected_xmaximum', 'text_selected_xminimum', 'text_selected_xoffset', 'text_selected_xpos', 'text_selected_xsize', 'text_selected_xysize', 'text_selected_yalign', 'text_selected_yanchor', 'text_selected_ycenter', 'text_selected_yfill', 'text_selected_ymaximum', 'text_selected_yminimum', 'text_selected_yoffset', 'text_selected_ypos', 'text_selected_ysize', 'text_size', 'text_slow_abortable', 'text_slow_cps', 'text_slow_cps_multiplier', 'text_strikethrough', 'text_style', 'text_text_align', 'text_text_y_fudge', 'text_tooltip', 'text_underline', 'text_vertical', 'text_xalign', 'text_xanchor', 'text_xcenter', 'text_xfill', 'text_xmaximum', 'text_xminimum', 'text_xoffset', 'text_xpos', 'text_xsize', 'text_xysize', 'text_y_fudge', 'text_yalign', 'text_yanchor', 'text_ycenter', 'text_yfill', 'text_ymaximum', 'text_yminimum', 'text_yoffset', 'text_ypos', 'text_ysize', 'thumb', 'thumb_offset', 'thumb_shadow', 'tooltip', 'top_bar', 'top_gutter', 'top_margin', 'top_padding', 'transform_anchor', 'transpose', 'underline', 'unhovered', 'unscrollable', 'value', 'variant', 'vertical', 'viewport_activate_align', 'viewport_activate_alt', 'viewport_activate_anchor', 'viewport_activate_area', 'viewport_activate_clipping', 'viewport_activate_debug', 'viewport_activate_maximum', 'viewport_activate_offset', 'viewport_activate_pos', 'viewport_activate_tooltip', 'viewport_activate_xalign', 'viewport_activate_xanchor', 'viewport_activate_xcenter', 'viewport_activate_xfill', 'viewport_activate_xmaximum', 'viewport_activate_xoffset', 'viewport_activate_xpos', 'viewport_activate_xsize', 'viewport_activate_xysize', 'viewport_activate_yalign', 'viewport_activate_yanchor', 'viewport_activate_ycenter', 'viewport_activate_yfill', 'viewport_activate_ymaximum', 'viewport_activate_yoffset', 'viewport_activate_ypos', 'viewport_activate_ysize', 'viewport_align', 'viewport_alt', 'viewport_anchor', 'viewport_area', 'viewport_clipping', 'viewport_debug', 'viewport_hover_align', 'viewport_hover_alt', 'viewport_hover_anchor', 'viewport_hover_area', 'viewport_hover_clipping', 'viewport_hover_debug', 'viewport_hover_maximum', 'viewport_hover_offset', 'viewport_hover_pos', 'viewport_hover_tooltip', 'viewport_hover_xalign', 'viewport_hover_xanchor', 'viewport_hover_xcenter', 'viewport_hover_xfill', 'viewport_hover_xmaximum', 'viewport_hover_xoffset', 'viewport_hover_xpos', 'viewport_hover_xsize', 'viewport_hover_xysize', 'viewport_hover_yalign', 'viewport_hover_yanchor', 'viewport_hover_ycenter', 'viewport_hover_yfill', 'viewport_hover_ymaximum', 'viewport_hover_yoffset', 'viewport_hover_ypos', 'viewport_hover_ysize', 'viewport_idle_align', 'viewport_idle_alt', 'viewport_idle_anchor', 'viewport_idle_area', 'viewport_idle_clipping', 'viewport_idle_debug', 'viewport_idle_maximum', 'viewport_idle_offset', 'viewport_idle_pos', 'viewport_idle_tooltip', 'viewport_idle_xalign', 'viewport_idle_xanchor', 'viewport_idle_xcenter', 'viewport_idle_xfill', 'viewport_idle_xmaximum', 'viewport_idle_xoffset', 'viewport_idle_xpos', 'viewport_idle_xsize', 'viewport_idle_xysize', 'viewport_idle_yalign', 'viewport_idle_yanchor', 'viewport_idle_ycenter', 'viewport_idle_yfill', 'viewport_idle_ymaximum', 'viewport_idle_yoffset', 'viewport_idle_ypos', 'viewport_idle_ysize', 'viewport_insensitive_align', 'viewport_insensitive_alt', 'viewport_insensitive_anchor', 'viewport_insensitive_area', 'viewport_insensitive_clipping', 'viewport_insensitive_debug', 'viewport_insensitive_maximum', 'viewport_insensitive_offset', 'viewport_insensitive_pos', 'viewport_insensitive_tooltip', 'viewport_insensitive_xalign', 'viewport_insensitive_xanchor', 'viewport_insensitive_xcenter', 'viewport_insensitive_xfill', 'viewport_insensitive_xmaximum', 'viewport_insensitive_xoffset', 'viewport_insensitive_xpos', 'viewport_insensitive_xsize', 'viewport_insensitive_xysize', 'viewport_insensitive_yalign', 'viewport_insensitive_yanchor', 'viewport_insensitive_ycenter', 'viewport_insensitive_yfill', 'viewport_insensitive_ymaximum', 'viewport_insensitive_yoffset', 'viewport_insensitive_ypos', 'viewport_insensitive_ysize', 'viewport_maximum', 'viewport_offset', 'viewport_pos', 'viewport_selected_activate_align', 'viewport_selected_activate_alt', 'viewport_selected_activate_anchor', 'viewport_selected_activate_area', 'viewport_selected_activate_clipping', 'viewport_selected_activate_debug', 'viewport_selected_activate_maximum', 'viewport_selected_activate_offset', 'viewport_selected_activate_pos', 'viewport_selected_activate_tooltip', 'viewport_selected_activate_xalign', 'viewport_selected_activate_xanchor', 'viewport_selected_activate_xcenter', 'viewport_selected_activate_xfill', 'viewport_selected_activate_xmaximum', 'viewport_selected_activate_xoffset', 'viewport_selected_activate_xpos', 'viewport_selected_activate_xsize', 'viewport_selected_activate_xysize', 'viewport_selected_activate_yalign', 'viewport_selected_activate_yanchor', 'viewport_selected_activate_ycenter', 'viewport_selected_activate_yfill', 'viewport_selected_activate_ymaximum', 'viewport_selected_activate_yoffset', 'viewport_selected_activate_ypos', 'viewport_selected_activate_ysize', 'viewport_selected_align', 'viewport_selected_alt', 'viewport_selected_anchor', 'viewport_selected_area', 'viewport_selected_clipping', 'viewport_selected_debug', 'viewport_selected_hover_align', 'viewport_selected_hover_alt', 'viewport_selected_hover_anchor', 'viewport_selected_hover_area', 'viewport_selected_hover_clipping', 'viewport_selected_hover_debug', 'viewport_selected_hover_maximum', 'viewport_selected_hover_offset', 'viewport_selected_hover_pos', 'viewport_selected_hover_tooltip', 'viewport_selected_hover_xalign', 'viewport_selected_hover_xanchor', 'viewport_selected_hover_xcenter', 'viewport_selected_hover_xfill', 'viewport_selected_hover_xmaximum', 'viewport_selected_hover_xoffset', 'viewport_selected_hover_xpos', 'viewport_selected_hover_xsize', 'viewport_selected_hover_xysize', 'viewport_selected_hover_yalign', 'viewport_selected_hover_yanchor', 'viewport_selected_hover_ycenter', 'viewport_selected_hover_yfill', 'viewport_selected_hover_ymaximum', 'viewport_selected_hover_yoffset', 'viewport_selected_hover_ypos', 'viewport_selected_hover_ysize', 'viewport_selected_idle_align', 'viewport_selected_idle_alt', 'viewport_selected_idle_anchor', 'viewport_selected_idle_area', 'viewport_selected_idle_clipping', 'viewport_selected_idle_debug', 'viewport_selected_idle_maximum', 'viewport_selected_idle_offset', 'viewport_selected_idle_pos', 'viewport_selected_idle_tooltip', 'viewport_selected_idle_xalign', 'viewport_selected_idle_xanchor', 'viewport_selected_idle_xcenter', 'viewport_selected_idle_xfill', 'viewport_selected_idle_xmaximum', 'viewport_selected_idle_xoffset', 'viewport_selected_idle_xpos', 'viewport_selected_idle_xsize', 'viewport_selected_idle_xysize', 'viewport_selected_idle_yalign', 'viewport_selected_idle_yanchor', 'viewport_selected_idle_ycenter', 'viewport_selected_idle_yfill', 'viewport_selected_idle_ymaximum', 'viewport_selected_idle_yoffset', 'viewport_selected_idle_ypos', 'viewport_selected_idle_ysize', 'viewport_selected_insensitive_align', 'viewport_selected_insensitive_alt', 'viewport_selected_insensitive_anchor', 'viewport_selected_insensitive_area', 'viewport_selected_insensitive_clipping', 'viewport_selected_insensitive_debug', 'viewport_selected_insensitive_maximum', 'viewport_selected_insensitive_offset', 'viewport_selected_insensitive_pos', 'viewport_selected_insensitive_tooltip', 'viewport_selected_insensitive_xalign', 'viewport_selected_insensitive_xanchor', 'viewport_selected_insensitive_xcenter', 'viewport_selected_insensitive_xfill', 'viewport_selected_insensitive_xmaximum', 'viewport_selected_insensitive_xoffset', 'viewport_selected_insensitive_xpos', 'viewport_selected_insensitive_xsize', 'viewport_selected_insensitive_xysize', 'viewport_selected_insensitive_yalign', 'viewport_selected_insensitive_yanchor', 'viewport_selected_insensitive_ycenter', 'viewport_selected_insensitive_yfill', 'viewport_selected_insensitive_ymaximum', 'viewport_selected_insensitive_yoffset', 'viewport_selected_insensitive_ypos', 'viewport_selected_insensitive_ysize', 'viewport_selected_maximum', 'viewport_selected_offset', 'viewport_selected_pos', 'viewport_selected_tooltip', 'viewport_selected_xalign', 'viewport_selected_xanchor', 'viewport_selected_xcenter', 'viewport_selected_xfill', 'viewport_selected_xmaximum', 'viewport_selected_xoffset', 'viewport_selected_xpos', 'viewport_selected_xsize', 'viewport_selected_xysize', 'viewport_selected_yalign', 'viewport_selected_yanchor', 'viewport_selected_ycenter', 'viewport_selected_yfill', 'viewport_selected_ymaximum', 'viewport_selected_yoffset', 'viewport_selected_ypos', 'viewport_selected_ysize', 'viewport_tooltip', 'viewport_xalign', 'viewport_xanchor', 'viewport_xcenter', 'viewport_xfill', 'viewport_xmaximum', 'viewport_xoffset', 'viewport_xpos', 'viewport_xsize', 'viewport_xysize', 'viewport_yalign', 'viewport_yanchor', 'viewport_ycenter', 'viewport_yfill', 'viewport_ymaximum', 'viewport_yoffset', 'viewport_ypos', 'viewport_ysize', 'vscrollbar_activate_align', 'vscrollbar_activate_alt', 'vscrollbar_activate_anchor', 'vscrollbar_activate_area', 'vscrollbar_activate_bar_invert', 'vscrollbar_activate_bar_resizing', 'vscrollbar_activate_bar_vertical', 'vscrollbar_activate_base_bar', 'vscrollbar_activate_bottom_bar', 'vscrollbar_activate_bottom_gutter', 'vscrollbar_activate_clipping', 'vscrollbar_activate_debug', 'vscrollbar_activate_keyboard_focus', 'vscrollbar_activate_left_bar', 'vscrollbar_activate_left_gutter', 'vscrollbar_activate_maximum', 'vscrollbar_activate_mouse', 'vscrollbar_activate_offset', 'vscrollbar_activate_pos', 'vscrollbar_activate_right_bar', 'vscrollbar_activate_right_gutter', 'vscrollbar_activate_thumb', 'vscrollbar_activate_thumb_offset', 'vscrollbar_activate_thumb_shadow', 'vscrollbar_activate_tooltip', 'vscrollbar_activate_top_bar', 'vscrollbar_activate_top_gutter', 'vscrollbar_activate_unscrollable', 'vscrollbar_activate_xalign', 'vscrollbar_activate_xanchor', 'vscrollbar_activate_xcenter', 'vscrollbar_activate_xfill', 'vscrollbar_activate_xmaximum', 'vscrollbar_activate_xoffset', 'vscrollbar_activate_xpos', 'vscrollbar_activate_xsize', 'vscrollbar_activate_xysize', 'vscrollbar_activate_yalign', 'vscrollbar_activate_yanchor', 'vscrollbar_activate_ycenter', 'vscrollbar_activate_yfill', 'vscrollbar_activate_ymaximum', 'vscrollbar_activate_yoffset', 'vscrollbar_activate_ypos', 'vscrollbar_activate_ysize', 'vscrollbar_align', 'vscrollbar_alt', 'vscrollbar_anchor', 'vscrollbar_area', 'vscrollbar_bar_invert', 'vscrollbar_bar_resizing', 'vscrollbar_bar_vertical', 'vscrollbar_base_bar', 'vscrollbar_bottom_bar', 'vscrollbar_bottom_gutter', 'vscrollbar_clipping', 'vscrollbar_debug', 'vscrollbar_hover_align', 'vscrollbar_hover_alt', 'vscrollbar_hover_anchor', 'vscrollbar_hover_area', 'vscrollbar_hover_bar_invert', 'vscrollbar_hover_bar_resizing', 'vscrollbar_hover_bar_vertical', 'vscrollbar_hover_base_bar', 'vscrollbar_hover_bottom_bar', 'vscrollbar_hover_bottom_gutter', 'vscrollbar_hover_clipping', 'vscrollbar_hover_debug', 'vscrollbar_hover_keyboard_focus', 'vscrollbar_hover_left_bar', 'vscrollbar_hover_left_gutter', 'vscrollbar_hover_maximum', 'vscrollbar_hover_mouse', 'vscrollbar_hover_offset', 'vscrollbar_hover_pos', 'vscrollbar_hover_right_bar', 'vscrollbar_hover_right_gutter', 'vscrollbar_hover_thumb', 'vscrollbar_hover_thumb_offset', 'vscrollbar_hover_thumb_shadow', 'vscrollbar_hover_tooltip', 'vscrollbar_hover_top_bar', 'vscrollbar_hover_top_gutter', 'vscrollbar_hover_unscrollable', 'vscrollbar_hover_xalign', 'vscrollbar_hover_xanchor', 'vscrollbar_hover_xcenter', 'vscrollbar_hover_xfill', 'vscrollbar_hover_xmaximum', 'vscrollbar_hover_xoffset', 'vscrollbar_hover_xpos', 'vscrollbar_hover_xsize', 'vscrollbar_hover_xysize', 'vscrollbar_hover_yalign', 'vscrollbar_hover_yanchor', 'vscrollbar_hover_ycenter', 'vscrollbar_hover_yfill', 'vscrollbar_hover_ymaximum', 'vscrollbar_hover_yoffset', 'vscrollbar_hover_ypos', 'vscrollbar_hover_ysize', 'vscrollbar_idle_align', 'vscrollbar_idle_alt', 'vscrollbar_idle_anchor', 'vscrollbar_idle_area', 'vscrollbar_idle_bar_invert', 'vscrollbar_idle_bar_resizing', 'vscrollbar_idle_bar_vertical', 'vscrollbar_idle_base_bar', 'vscrollbar_idle_bottom_bar', 'vscrollbar_idle_bottom_gutter', 'vscrollbar_idle_clipping', 'vscrollbar_idle_debug', 'vscrollbar_idle_keyboard_focus', 'vscrollbar_idle_left_bar', 'vscrollbar_idle_left_gutter', 'vscrollbar_idle_maximum', 'vscrollbar_idle_mouse', 'vscrollbar_idle_offset', 'vscrollbar_idle_pos', 'vscrollbar_idle_right_bar', 'vscrollbar_idle_right_gutter', 'vscrollbar_idle_thumb', 'vscrollbar_idle_thumb_offset', 'vscrollbar_idle_thumb_shadow', 'vscrollbar_idle_tooltip', 'vscrollbar_idle_top_bar', 'vscrollbar_idle_top_gutter', 'vscrollbar_idle_unscrollable', 'vscrollbar_idle_xalign', 'vscrollbar_idle_xanchor', 'vscrollbar_idle_xcenter', 'vscrollbar_idle_xfill', 'vscrollbar_idle_xmaximum', 'vscrollbar_idle_xoffset', 'vscrollbar_idle_xpos', 'vscrollbar_idle_xsize', 'vscrollbar_idle_xysize', 'vscrollbar_idle_yalign', 'vscrollbar_idle_yanchor', 'vscrollbar_idle_ycenter', 'vscrollbar_idle_yfill', 'vscrollbar_idle_ymaximum', 'vscrollbar_idle_yoffset', 'vscrollbar_idle_ypos', 'vscrollbar_idle_ysize', 'vscrollbar_insensitive_align', 'vscrollbar_insensitive_alt', 'vscrollbar_insensitive_anchor', 'vscrollbar_insensitive_area', 'vscrollbar_insensitive_bar_invert', 'vscrollbar_insensitive_bar_resizing', 'vscrollbar_insensitive_bar_vertical', 'vscrollbar_insensitive_base_bar', 'vscrollbar_insensitive_bottom_bar', 'vscrollbar_insensitive_bottom_gutter', 'vscrollbar_insensitive_clipping', 'vscrollbar_insensitive_debug', 'vscrollbar_insensitive_keyboard_focus', 'vscrollbar_insensitive_left_bar', 'vscrollbar_insensitive_left_gutter', 'vscrollbar_insensitive_maximum', 'vscrollbar_insensitive_mouse', 'vscrollbar_insensitive_offset', 'vscrollbar_insensitive_pos', 'vscrollbar_insensitive_right_bar', 'vscrollbar_insensitive_right_gutter', 'vscrollbar_insensitive_thumb', 'vscrollbar_insensitive_thumb_offset', 'vscrollbar_insensitive_thumb_shadow', 'vscrollbar_insensitive_tooltip', 'vscrollbar_insensitive_top_bar', 'vscrollbar_insensitive_top_gutter', 'vscrollbar_insensitive_unscrollable', 'vscrollbar_insensitive_xalign', 'vscrollbar_insensitive_xanchor', 'vscrollbar_insensitive_xcenter', 'vscrollbar_insensitive_xfill', 'vscrollbar_insensitive_xmaximum', 'vscrollbar_insensitive_xoffset', 'vscrollbar_insensitive_xpos', 'vscrollbar_insensitive_xsize', 'vscrollbar_insensitive_xysize', 'vscrollbar_insensitive_yalign', 'vscrollbar_insensitive_yanchor', 'vscrollbar_insensitive_ycenter', 'vscrollbar_insensitive_yfill', 'vscrollbar_insensitive_ymaximum', 'vscrollbar_insensitive_yoffset', 'vscrollbar_insensitive_ypos', 'vscrollbar_insensitive_ysize', 'vscrollbar_keyboard_focus', 'vscrollbar_left_bar', 'vscrollbar_left_gutter', 'vscrollbar_maximum', 'vscrollbar_mouse', 'vscrollbar_offset', 'vscrollbar_pos', 'vscrollbar_right_bar', 'vscrollbar_right_gutter', 'vscrollbar_selected_activate_align', 'vscrollbar_selected_activate_alt', 'vscrollbar_selected_activate_anchor', 'vscrollbar_selected_activate_area', 'vscrollbar_selected_activate_bar_invert', 'vscrollbar_selected_activate_bar_resizing', 'vscrollbar_selected_activate_bar_vertical', 'vscrollbar_selected_activate_base_bar', 'vscrollbar_selected_activate_bottom_bar', 'vscrollbar_selected_activate_bottom_gutter', 'vscrollbar_selected_activate_clipping', 'vscrollbar_selected_activate_debug', 'vscrollbar_selected_activate_keyboard_focus', 'vscrollbar_selected_activate_left_bar', 'vscrollbar_selected_activate_left_gutter', 'vscrollbar_selected_activate_maximum', 'vscrollbar_selected_activate_mouse', 'vscrollbar_selected_activate_offset', 'vscrollbar_selected_activate_pos', 'vscrollbar_selected_activate_right_bar', 'vscrollbar_selected_activate_right_gutter', 'vscrollbar_selected_activate_thumb', 'vscrollbar_selected_activate_thumb_offset', 'vscrollbar_selected_activate_thumb_shadow', 'vscrollbar_selected_activate_tooltip', 'vscrollbar_selected_activate_top_bar', 'vscrollbar_selected_activate_top_gutter', 'vscrollbar_selected_activate_unscrollable', 'vscrollbar_selected_activate_xalign', 'vscrollbar_selected_activate_xanchor', 'vscrollbar_selected_activate_xcenter', 'vscrollbar_selected_activate_xfill', 'vscrollbar_selected_activate_xmaximum', 'vscrollbar_selected_activate_xoffset', 'vscrollbar_selected_activate_xpos', 'vscrollbar_selected_activate_xsize', 'vscrollbar_selected_activate_xysize', 'vscrollbar_selected_activate_yalign', 'vscrollbar_selected_activate_yanchor', 'vscrollbar_selected_activate_ycenter', 'vscrollbar_selected_activate_yfill', 'vscrollbar_selected_activate_ymaximum', 'vscrollbar_selected_activate_yoffset', 'vscrollbar_selected_activate_ypos', 'vscrollbar_selected_activate_ysize', 'vscrollbar_selected_align', 'vscrollbar_selected_alt', 'vscrollbar_selected_anchor', 'vscrollbar_selected_area', 'vscrollbar_selected_bar_invert', 'vscrollbar_selected_bar_resizing', 'vscrollbar_selected_bar_vertical', 'vscrollbar_selected_base_bar', 'vscrollbar_selected_bottom_bar', 'vscrollbar_selected_bottom_gutter', 'vscrollbar_selected_clipping', 'vscrollbar_selected_debug', 'vscrollbar_selected_hover_align', 'vscrollbar_selected_hover_alt', 'vscrollbar_selected_hover_anchor', 'vscrollbar_selected_hover_area', 'vscrollbar_selected_hover_bar_invert', 'vscrollbar_selected_hover_bar_resizing', 'vscrollbar_selected_hover_bar_vertical', 'vscrollbar_selected_hover_base_bar', 'vscrollbar_selected_hover_bottom_bar', 'vscrollbar_selected_hover_bottom_gutter', 'vscrollbar_selected_hover_clipping', 'vscrollbar_selected_hover_debug', 'vscrollbar_selected_hover_keyboard_focus', 'vscrollbar_selected_hover_left_bar', 'vscrollbar_selected_hover_left_gutter', 'vscrollbar_selected_hover_maximum', 'vscrollbar_selected_hover_mouse', 'vscrollbar_selected_hover_offset', 'vscrollbar_selected_hover_pos', 'vscrollbar_selected_hover_right_bar', 'vscrollbar_selected_hover_right_gutter', 'vscrollbar_selected_hover_thumb', 'vscrollbar_selected_hover_thumb_offset', 'vscrollbar_selected_hover_thumb_shadow', 'vscrollbar_selected_hover_tooltip', 'vscrollbar_selected_hover_top_bar', 'vscrollbar_selected_hover_top_gutter', 'vscrollbar_selected_hover_unscrollable', 'vscrollbar_selected_hover_xalign', 'vscrollbar_selected_hover_xanchor', 'vscrollbar_selected_hover_xcenter', 'vscrollbar_selected_hover_xfill', 'vscrollbar_selected_hover_xmaximum', 'vscrollbar_selected_hover_xoffset', 'vscrollbar_selected_hover_xpos', 'vscrollbar_selected_hover_xsize', 'vscrollbar_selected_hover_xysize', 'vscrollbar_selected_hover_yalign', 'vscrollbar_selected_hover_yanchor', 'vscrollbar_selected_hover_ycenter', 'vscrollbar_selected_hover_yfill', 'vscrollbar_selected_hover_ymaximum', 'vscrollbar_selected_hover_yoffset', 'vscrollbar_selected_hover_ypos', 'vscrollbar_selected_hover_ysize', 'vscrollbar_selected_idle_align', 'vscrollbar_selected_idle_alt', 'vscrollbar_selected_idle_anchor', 'vscrollbar_selected_idle_area', 'vscrollbar_selected_idle_bar_invert', 'vscrollbar_selected_idle_bar_resizing', 'vscrollbar_selected_idle_bar_vertical', 'vscrollbar_selected_idle_base_bar', 'vscrollbar_selected_idle_bottom_bar', 'vscrollbar_selected_idle_bottom_gutter', 'vscrollbar_selected_idle_clipping', 'vscrollbar_selected_idle_debug', 'vscrollbar_selected_idle_keyboard_focus', 'vscrollbar_selected_idle_left_bar', 'vscrollbar_selected_idle_left_gutter', 'vscrollbar_selected_idle_maximum', 'vscrollbar_selected_idle_mouse', 'vscrollbar_selected_idle_offset', 'vscrollbar_selected_idle_pos', 'vscrollbar_selected_idle_right_bar', 'vscrollbar_selected_idle_right_gutter', 'vscrollbar_selected_idle_thumb', 'vscrollbar_selected_idle_thumb_offset', 'vscrollbar_selected_idle_thumb_shadow', 'vscrollbar_selected_idle_tooltip', 'vscrollbar_selected_idle_top_bar', 'vscrollbar_selected_idle_top_gutter', 'vscrollbar_selected_idle_unscrollable', 'vscrollbar_selected_idle_xalign', 'vscrollbar_selected_idle_xanchor', 'vscrollbar_selected_idle_xcenter', 'vscrollbar_selected_idle_xfill', 'vscrollbar_selected_idle_xmaximum', 'vscrollbar_selected_idle_xoffset', 'vscrollbar_selected_idle_xpos', 'vscrollbar_selected_idle_xsize', 'vscrollbar_selected_idle_xysize', 'vscrollbar_selected_idle_yalign', 'vscrollbar_selected_idle_yanchor', 'vscrollbar_selected_idle_ycenter', 'vscrollbar_selected_idle_yfill', 'vscrollbar_selected_idle_ymaximum', 'vscrollbar_selected_idle_yoffset', 'vscrollbar_selected_idle_ypos', 'vscrollbar_selected_idle_ysize', 'vscrollbar_selected_insensitive_align', 'vscrollbar_selected_insensitive_alt', 'vscrollbar_selected_insensitive_anchor', 'vscrollbar_selected_insensitive_area', 'vscrollbar_selected_insensitive_bar_invert', 'vscrollbar_selected_insensitive_bar_resizing', 'vscrollbar_selected_insensitive_bar_vertical', 'vscrollbar_selected_insensitive_base_bar', 'vscrollbar_selected_insensitive_bottom_bar', 'vscrollbar_selected_insensitive_bottom_gutter', 'vscrollbar_selected_insensitive_clipping', 'vscrollbar_selected_insensitive_debug', 'vscrollbar_selected_insensitive_keyboard_focus', 'vscrollbar_selected_insensitive_left_bar', 'vscrollbar_selected_insensitive_left_gutter', 'vscrollbar_selected_insensitive_maximum', 'vscrollbar_selected_insensitive_mouse', 'vscrollbar_selected_insensitive_offset', 'vscrollbar_selected_insensitive_pos', 'vscrollbar_selected_insensitive_right_bar', 'vscrollbar_selected_insensitive_right_gutter', 'vscrollbar_selected_insensitive_thumb', 'vscrollbar_selected_insensitive_thumb_offset', 'vscrollbar_selected_insensitive_thumb_shadow', 'vscrollbar_selected_insensitive_tooltip', 'vscrollbar_selected_insensitive_top_bar', 'vscrollbar_selected_insensitive_top_gutter', 'vscrollbar_selected_insensitive_unscrollable', 'vscrollbar_selected_insensitive_xalign', 'vscrollbar_selected_insensitive_xanchor', 'vscrollbar_selected_insensitive_xcenter', 'vscrollbar_selected_insensitive_xfill', 'vscrollbar_selected_insensitive_xmaximum', 'vscrollbar_selected_insensitive_xoffset', 'vscrollbar_selected_insensitive_xpos', 'vscrollbar_selected_insensitive_xsize', 'vscrollbar_selected_insensitive_xysize', 'vscrollbar_selected_insensitive_yalign', 'vscrollbar_selected_insensitive_yanchor', 'vscrollbar_selected_insensitive_ycenter', 'vscrollbar_selected_insensitive_yfill', 'vscrollbar_selected_insensitive_ymaximum', 'vscrollbar_selected_insensitive_yoffset', 'vscrollbar_selected_insensitive_ypos', 'vscrollbar_selected_insensitive_ysize', 'vscrollbar_selected_keyboard_focus', 'vscrollbar_selected_left_bar', 'vscrollbar_selected_left_gutter', 'vscrollbar_selected_maximum', 'vscrollbar_selected_mouse', 'vscrollbar_selected_offset', 'vscrollbar_selected_pos', 'vscrollbar_selected_right_bar', 'vscrollbar_selected_right_gutter', 'vscrollbar_selected_thumb', 'vscrollbar_selected_thumb_offset', 'vscrollbar_selected_thumb_shadow', 'vscrollbar_selected_tooltip', 'vscrollbar_selected_top_bar', 'vscrollbar_selected_top_gutter', 'vscrollbar_selected_unscrollable', 'vscrollbar_selected_xalign', 'vscrollbar_selected_xanchor', 'vscrollbar_selected_xcenter', 'vscrollbar_selected_xfill', 'vscrollbar_selected_xmaximum', 'vscrollbar_selected_xoffset', 'vscrollbar_selected_xpos', 'vscrollbar_selected_xsize', 'vscrollbar_selected_xysize', 'vscrollbar_selected_yalign', 'vscrollbar_selected_yanchor', 'vscrollbar_selected_ycenter', 'vscrollbar_selected_yfill', 'vscrollbar_selected_ymaximum', 'vscrollbar_selected_yoffset', 'vscrollbar_selected_ypos', 'vscrollbar_selected_ysize', 'vscrollbar_thumb', 'vscrollbar_thumb_offset', 'vscrollbar_thumb_shadow', 'vscrollbar_tooltip', 'vscrollbar_top_bar', 'vscrollbar_top_gutter', 'vscrollbar_unscrollable', 'vscrollbar_xalign', 'vscrollbar_xanchor', 'vscrollbar_xcenter', 'vscrollbar_xfill', 'vscrollbar_xmaximum', 'vscrollbar_xoffset', 'vscrollbar_xpos', 'vscrollbar_xsize', 'vscrollbar_xysize', 'vscrollbar_yalign', 'vscrollbar_yanchor', 'vscrollbar_ycenter', 'vscrollbar_yfill', 'vscrollbar_ymaximum', 'vscrollbar_yoffset', 'vscrollbar_ypos', 'vscrollbar_ysize', 'width', 'xadjustment', 'xalign', 'xanchor', 'xanchoraround', 'xaround', 'xcenter', 'xfill', 'xfit', 'xinitial', 'xmargin', 'xmaximum', 'xminimum', 'xoffset', 'xpadding', 'xpan', 'xpos', 'xsize', 'xspacing', 'xtile', 'xysize', 'xzoom', 'yadjustment', 'yalign', 'yanchor', 'yanchoraround', 'yaround', 'ycenter', 'yfill', 'yfit', 'yinitial', 'ymargin', 'ymaximum', 'yminimum', 'yoffset', 'ypadding', 'ypan', 'ypos', 'ysize', 'yspacing', 'ytile', 'yzoom', 'zoom'] +property_regexes = [u'(?:action|activate_sound|adjustment|allow|alpha|alternate|alternate_keysym|arguments|arrowkeys|at|auto|cache|caption|changed|child_size|clicked|cols|default|drag_handle|drag_joined|drag_name|drag_offscreen|drag_raise|draggable|dragged|droppable|dropped|edgescroll|exclude|focus|focus_mask|ground|height|hover|hovered|id|idle|image_style|insensitive|keysym|layer|length|modal|mouse_drop|mousewheel|pagekeys|pixel_width|predict|prefix|properties|range|repeat|rows|scope|scrollbars|selected|selected_hover|selected_idle|selected_insensitive|sensitive|slow|slow_done|spacing|style|style_group|style_prefix|style_suffix|substitute|suffix|text_style|transpose|unhovered|value|variant|width|xadjustment|xinitial|yadjustment|yinitial|zorder)', '(?:|activate_|hover_|idle_|insensitive_|selected_|selected_activate_|selected_hover_|selected_idle_|selected_insensitive_)(?:additive|adjust_spacing|align|alignaround|alpha|alt|anchor|angle|antialias|area|around|background|bar_invert|bar_resizing|bar_vertical|base_bar|black_color|bold|bottom_bar|bottom_gutter|bottom_margin|bottom_padding|box_layout|box_reverse|box_wrap|child|clipping|color|corner1|corner2|crop|crop_relative|debug|delay|drop_shadow|drop_shadow_color|events|first_indent|first_spacing|fit_first|focus_mask|font|foreground|hinting|hyperlink_functions|italic|justify|kerning|key_events|keyboard_focus|language|layout|left_bar|left_gutter|left_margin|left_padding|line_leading|line_spacing|margin|maximum|maxsize|min_width|minimum|minwidth|mouse|nearest|newline_indent|offset|order_reverse|outlines|padding|pos|radius|rest_indent|right_bar|right_gutter|right_margin|right_padding|rotate|rotate_pad|ruby_style|size|size_group|slow_abortable|slow_cps|slow_cps_multiplier|sound|spacing|strikethrough|subpixel|text_align|text_y_fudge|thumb|thumb_offset|thumb_shadow|tooltip|top_bar|top_gutter|top_margin|top_padding|transform_anchor|underline|unscrollable|vertical|xalign|xanchor|xanchoraround|xaround|xcenter|xfill|xfit|xmargin|xmaximum|xminimum|xoffset|xpadding|xpan|xpos|xsize|xspacing|xtile|xysize|xzoom|yalign|yanchor|yanchoraround|yaround|ycenter|yfill|yfit|ymargin|ymaximum|yminimum|yoffset|ypadding|ypan|ypos|ysize|yspacing|ytile|yzoom|zoom)', '(?:vscrollbar_|scrollbar_)(?:|activate_|hover_|idle_|insensitive_|selected_|selected_activate_|selected_hover_|selected_idle_|selected_insensitive_)(?:align|alt|anchor|area|bar_invert|bar_resizing|bar_vertical|base_bar|bottom_bar|bottom_gutter|clipping|debug|keyboard_focus|left_bar|left_gutter|maximum|mouse|offset|pos|right_bar|right_gutter|thumb|thumb_offset|thumb_shadow|tooltip|top_bar|top_gutter|unscrollable|xalign|xanchor|xcenter|xfill|xmaximum|xoffset|xpos|xsize|xysize|yalign|yanchor|ycenter|yfill|ymaximum|yoffset|ypos|ysize)', 'side_(?:|activate_|hover_|idle_|insensitive_|selected_|selected_activate_|selected_hover_|selected_idle_|selected_insensitive_)(?:align|alt|anchor|area|clipping|debug|maximum|offset|pos|spacing|tooltip|xalign|xanchor|xcenter|xfill|xmaximum|xoffset|xpos|xsize|xysize|yalign|yanchor|ycenter|yfill|ymaximum|yoffset|ypos|ysize)', 'text_(?:|activate_|hover_|idle_|insensitive_|selected_|selected_activate_|selected_hover_|selected_idle_|selected_insensitive_)(?:adjust_spacing|align|alt|anchor|antialias|area|black_color|bold|clipping|color|debug|drop_shadow|drop_shadow_color|first_indent|font|hinting|hyperlink_functions|italic|justify|kerning|language|layout|line_leading|line_spacing|maximum|min_width|minimum|minwidth|newline_indent|offset|outlines|pos|rest_indent|ruby_style|size|slow_abortable|slow_cps|slow_cps_multiplier|strikethrough|text_align|text_y_fudge|tooltip|underline|vertical|xalign|xanchor|xcenter|xfill|xmaximum|xminimum|xoffset|xpos|xsize|xysize|yalign|yanchor|ycenter|yfill|ymaximum|yminimum|yoffset|ypos|ysize)', 'viewport_(?:|activate_|hover_|idle_|insensitive_|selected_|selected_activate_|selected_hover_|selected_idle_|selected_insensitive_)(?:align|alt|anchor|area|clipping|debug|maximum|offset|pos|tooltip|xalign|xanchor|xcenter|xfill|xmaximum|xoffset|xpos|xsize|xysize|yalign|yanchor|ycenter|yfill|ymaximum|yoffset|ypos|ysize)'] diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/movie.rst renpy-6.99.14.3+dfsg/sphinx/source/movie.rst --- renpy-6.99.14.1+dfsg/sphinx/source/movie.rst 2017-05-01 22:10:37.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/movie.rst 2018-03-06 03:58:35.000000000 +0000 @@ -66,18 +66,7 @@ Movies played by the Movie displayable loop automatically. -There are three very important parameters to the Movie displayable, two of -which should always be provided. - -`channel` - A string giving the name of the channel that the movie will be played on. - - This must always be provided, and should never - *not* be left at the default of "movie", and should not be the name - of an audio channel. Names should be chosen such that only one - Movie will be displaying on a given channel at the same time. Channels - provided will be automatically registered using :func:`renpy.music.register_channel`, - if not already registered. +A Movie takes two parameters: `play` A string giving the name of a movie file to play. @@ -85,11 +74,13 @@ This should always be provided. `mask` - A string giving the name of a movie file to use as an alpha mask. + A string giving the name of a movie file to use as an alpha mask. It should + be the same size, duration, and framerate as the movie file provided to + `play`. Here's an example of defining a movie sprite:: - image eileen movie = Movie(channel="eileen", play="eileen_movie.webm", mask="eileen_mask.webm") + image eileen movie = Movie(play="eileen_movie.webm", mask="eileen_mask.webm") The movie sprite can be shown using the show statement, which automatically starts the movie playing. It will be automatically stopped when the displayable is hidden. :: @@ -106,7 +97,7 @@ during the init phase (for example, as part of an image statement.) :: - image main_menu = Movie(channel="main_menu", play="main_menu.ogv") + image main_menu = Movie(play="main_menu.ogv") screen main_menu: add "main_menu" diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/multiple.rst renpy-6.99.14.3+dfsg/sphinx/source/multiple.rst --- renpy-6.99.14.1+dfsg/sphinx/source/multiple.rst 2018-02-01 06:24:42.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/multiple.rst 2018-02-16 04:02:41.000000000 +0000 @@ -46,34 +46,34 @@ In our example above, the window corresponding to each block of dialogue are given the names: -* block1_multiple2_window -* block2_multiple2_window +* block1_multiple2_say_window +* block2_multiple2_say_window This naming scheme is used for the dialogue, name, and namebox, as well as the window. It's designed so style inheritance is useful here. For the window styles we'll have: -window +say_window Used for the normal case of a single dialogue window, this can serve as a base for all dialogue windows. -multiple2_window +multiple2_say_window This can be used for properties common to the two dialogue windows, like changing the background and reducing the margin and padding. -block1_multiple2_window +block1_multiple2_say_window This could be used to position the first of the two dialogue windows, such as using xalign 0.0 to put it on the left side. -block2_multiple2_window +block2_multiple2_say_window Similarly, this can be used to position the second window, with xalign 1.0 putting it on the right side. The Multiple Say Screen ----------------------- -For more control, there is the multiple say screen. When it exists, the -multiple say screen is used in place of the normal say screen. It takes +For more control, there is the multiple\_say screen. When it exists, the +multiple\_say screen is used in place of the normal say screen. It takes a third argument, `multiple`, which is a tuple. The first component of the tuple is the block number, and the second is the total number of screens. diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/nvl_mode.rst renpy-6.99.14.3+dfsg/sphinx/source/nvl_mode.rst --- renpy-6.99.14.1+dfsg/sphinx/source/nvl_mode.rst 2017-04-10 23:26:54.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/nvl_mode.rst 2018-02-17 01:17:37.000000000 +0000 @@ -205,6 +205,11 @@ If true, NVL-mode rollback will occur a full page at a time. +Python Functions +---------------- + +.. include:: inc/nvl + Paged Rollback -------------- diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/sponsors.html renpy-6.99.14.3+dfsg/sphinx/source/sponsors.html --- renpy-6.99.14.1+dfsg/sphinx/source/sponsors.html 2018-01-09 02:50:08.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/sponsors.html 2018-03-28 00:38:45.000000000 +0000 @@ -1,106 +1,124 @@ diff -Nru renpy-6.99.14.1+dfsg/sphinx/source/text.rst renpy-6.99.14.3+dfsg/sphinx/source/text.rst --- renpy-6.99.14.1+dfsg/sphinx/source/text.rst 2017-11-19 23:45:33.000000000 +0000 +++ renpy-6.99.14.3+dfsg/sphinx/source/text.rst 2018-03-16 05:34:37.000000000 +0000 @@ -269,7 +269,7 @@ shadows) to the given color. The color should be in #rgb, #rgba, #rrggbb, or #rrggbbaa format. :: - "Let's have a {color=#00ff00}Green{/color} outline." + "Let's have a {outlinecolor=#00ff00}Green{/outlinecolor} outline." .. text-tag:: plain diff -Nru renpy-6.99.14.1+dfsg/templates/portuguese/game/options.rpy renpy-6.99.14.3+dfsg/templates/portuguese/game/options.rpy --- renpy-6.99.14.1+dfsg/templates/portuguese/game/options.rpy 2018-01-10 01:48:10.000000000 +0000 +++ renpy-6.99.14.3+dfsg/templates/portuguese/game/options.rpy 2018-04-04 01:04:53.000000000 +0000 @@ -1,199 +1,134 @@ -## 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 -## is quite a bit more customization you can do. +## Este arquivo contém algumas das opções que podem ser mudadas para +## personalizar o jogo Ren'Py. Ele apenas contém as opções mais comuns. +## Você ainda pode adicionar mais personalizações. ## -## Lines beginning with two '#' marks are comments, and you shouldn't -## uncomment them. Lines beginning with a single '#' mark are -## commented-out code, and you may want to uncomment them when -## appropriate. -## -## - Este archivo contiene algunas de las opciones que pueden cambiarse para -## personalizar el juego Ren'Py. Solo figuran las opciones más comunes. -## Es posible añadir muchas más personalizaciones. -## -## - Las líneas que empiezan con dos marcas '#' son comentarios, no debes -## eliminar las marcas. Las líneas que comienzan con una sola marca '#' -## contienen código no activo. La marca '#' puede eliminarse si se quiere -## utilizar esa característica. +## As linhas começadas com dois hashtags '#' são comentários, você não deve +## apagá-las. As linhas começadas apenas com um hashtag '#' +## contém código não ativo e você pode desejar apagar a hashtag '#' acaso +## julgar apropriado. init -1 python hide: - ## Should we enable the use of developer tools? This should be - ## set to False before the game is released, so the user can't - ## cheat using developer tools. - ## - Esta variable habilita las herramientas de desarrollo. Debe ser - ## ajustada a False antes del lanzamiento del juego, así el usuario - ## no puede hacer trampas usando las herramientas de desarrollo. + ## Esta variável habilita as ferramentas de desenvolvedor. Deve ser + ## ajustada para falsa ('False') antes do lançamento do jogo, assim o usuário + ## não poderá utilizar 'cheats' utilizando as ferramentas do desenvolvedor. config.developer = True - ## These control the width and height of the screen. - ## - Control de la anchura y altura de la pantalla. + ## Estes são os controles da largura e da altura da tela. config.screen_width = 800 config.screen_height = 600 - ## This controls the title of the window, when Ren'Py is - ## running in a window. - ## - Título de la ventana, cuando Ren'Py se ejecuta en modo ventana. + ## Estes são os controles para modificar o título da janela, quando Ren'Py é executado em modo janela. config.window_title = u"PROJECT_NAME" - ## These control the name and version of the game, that are reported - ## with tracebacks and other debugging logs. - ## - Control del nombre y versión del juego; se utilizan en los - ## rastreos y otras funciones de depuración. + ## Estes são os controles do nome e da versão do jogo; eles são utilizados nos + ## rastreamentos e outros logs de depuração. + config.name = "PROJECT_NAME" config.version = "0.0" ######################################### - ## Themes - ## - Temas - - ## We then want to call a theme function. theme.roundrect is - ## a theme that features the use of rounded rectangles. - ## - ## The theme function takes a number of parameters that can - ## customize the color scheme. + ## Temas - ## - Para utilizar una función de tema, utilizamos themes.roundrect. - ## Este tema configura el uso de rectángulos redondeados. + ## Para utilizar uma função de tema, utilizamos themes.roundrect. + ## Este tema configura o uso de retângulos arredondados. ## - ## - La función de tema acepta una serie de parámetros que pueden - ## personalizar la paleta de colores. + ## A função de tema aceita uma série de parâmetros que podem + ## personalizar o esquema de cores. theme.roundrect( - ## The color of an idle widget face. - ## - Color base de un elemento (widget). + ## Cor base de um elemento (widget). widget = "#003c78", - ## The color of a focused widget face. - ## - Color de un elemento con foco. + ## Cor de um elemento com foco. widget_hover = "#0050a0", - ## The color of the text in a widget. - ## - Color del texto en un elemento. + ## Cor do texto em um elemento. widget_text = "#c8ffff", - ## The color of the text in a selected widget. (For - ## example, the current value of a preference.) - ## - Color del texto en un elemento seleccionado (por ejemplo, - ## el valor actual de una preferencia). + ## Cor do texto em um elemento selecionado (por exemplo, + ## o valor atual de uma preferência). widget_selected = "#ffffc8", - ## The color of a disabled widget face. - ## - Color de un elemento deshabilitado. + ## Cor de um elemento desabilitado. disabled = "#404040", - ## The color of disabled widget text. - ## - Color del texto de un elemento deshabilitado. + ## Cor do texto de um elemento desabilitado. disabled_text = "#c8c8c8", - ## The color of informational labels. - ## - Color de las etiquetas de información. + ## Cor das etiquetas de informação. label = "#ffffff", - ## The color of a frame containing widgets. - ## - Color del marco que contiene los elementos. + ## Cor do quadro ('Frame') que contém os elementos. frame = "#6496c8", - ## If this is True, the in-game window is rounded. If False, - ## the in-game window is square. - ## - Si es 'True', la ventana interna del juego tendrà las - ## esquinas redondeadas. Si es 'False', serà rectangular. + ## Se esta variável estiver designada como 'True', a janela interna do jogo terá os + ## cantos arredondados. Se for 'False', será retângular. rounded_window = False, - ## The background of the main menu. This can be a color - ## beginning with '#', or an image filename. The latter - ## should take up the full height and width of the screen. - ## - Fondo del menú principal. Puede ser un color que - ## comience con '#' o bien el nombre de un archivo de imagen. - ## En ese caso, debe ocupar el ancho y alto de la pantalla. + ## Fundo do menu principal. Pode ser uma cor que + ## começa com '#' ou também pode ser o nome de um arquivo de imagem. + ## No segundo caso, deve ocupar completamente o comprimento e altura da tela. mm_root = "#dcebff", - ## The background of the game menu. This can be a color - ## beginning with '#', or an image filename. The latter - ## should take up the full height and width of the screen. - ## - Fondo del menú del juego. Puede ser un color que - ## comience con '#' o bien el nombre de un archivo de imagen. - ## En ese caso, debe ocupar el ancho y alto de la pantalla. + ## Fundo do menu do jogo. Pode ser uma cor que + ## começa com '#' ou também pode ser o nome de um arquivo de imagem. + ## No segundo caso, deve ocupar completamente o comprimento e altura da tela. gm_root = "#dcebff", - ## 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. - ## - Hemos terminado con el tema. El tema personalizará varios - ## estilos, que pueden ser cambiados más abajo. + ## Acabamos com esse tema. O tema personalizará vários + ## estilos, que podem ser modificados mais abaixo. ) - ######################################### - ## These settings let you customize the window containing the - ## dialogue and narration, by replacing it with an image. - ## - Estos ajustes permiten personalizar la ventana que contiene - ## el diálogo y la narración, reemplazándola con una imagen. - - ## The background of the window. In a Frame, the two numbers - ## are the size of the left/right and top/bottom borders, - ## respectively. - ## - Fondo de la ventana. Usando un marco ('Frame'), los dos números - ## indican la dimensión de los bordes izquierdo/derecho y - ## superior/inferior, respectivamente. + ## Estas configurações permitem personalizar a tela que contém + ## o diálogo e a narração, substituindo-a com uma imagem. + + ## Fundo da tela. Em um quadro ('Frame'), os dois números são + ## as dimensões das bordas esquerda/direita e + ## superior/inferior, respectivamente. # style.window.background = Frame("frame.png", 12, 12) - ## Margin is space surrounding the window, where the background - ## is not drawn. - ## - El margen es el espacio alrededor de la ventana, en el cual el - ## fondo no aparece. + ## A margem é o espaço ao redor da tela, cujo qual o + ## fundo não aparece. # style.window.left_margin = 6 # style.window.right_margin = 6 # style.window.top_margin = 6 # style.window.bottom_margin = 6 - ## Padding is space inside the window, where the background is - ## drawn. - ## - El 'relleno' ('padding') es el margen interior a la ventana, - ## en el cual el fondo sí se dibuja, pero no el texto. + ## O 'preenchimento' ('padding') é o espaço dentro da janela, + ## em que o o fundo é desenhado, mas não o texto. # style.window.left_padding = 6 # style.window.right_padding = 6 # style.window.top_padding = 6 # style.window.bottom_padding = 6 - ## This is the minimum height of the window, including the margins - ## and padding. - ## - Altura mínima de la ventana, incluyendo margen y 'relleno'. + ## Altura mínima da tela, incluíndo margem e preenchimento. # style.window.yminimum = 250 ######################################### - ## This lets you change the placement of the main menu. - ## - Esta sección permite cambiar la disposición del menú principal. + ## Esta seção permite você alterar a disposição do menu principal. - ## The way placement works is that we find an anchor point - ## inside a displayable, and a position (pos) point on the - ## screen. We then place the displayable so the two points are - ## at the same place. - ## - La colocación funciona de la siguiente manera: Primero se - ## establece un punto de anclaje (anchor) dentro de un elemento - ## gràfico (displayable), a continuación un punto de posición (pos) - ## en la pantalla. Finalmente se coloca el elemento gràfico de forma - ## que ambos puntos coincidan. - - ## An anchor/pos can be given as an integer or a floating point - ## number. If an integer, the number is interpreted as a number - ## of pixels from the upper-left corner. If a floating point, - ## the number is interpreted as a fraction of the size of the - ## displayable or screen. - ## - Los puntos de anclaje y de posición (anchor/pos) pueden indicarse - ## con un número entero o decimal. Un entero indica los píxeles desde - ## la esquina superior izquierda. Un decimal, en cambio, se interpreta - ## como fracción de las dimensiones del elemento gráfico o la - ## pantalla. + ## O ajuste funciona da seguinte maneira: primeiro é + ## estabelecido um ponto de ancoragem (anchor) dentro de um elemento + ## gráfico (disponível) e a posição (pos) de um ponto na tela. + ## Por fim, é colocado o elemento gráfico de forma + ## que ambos os pontos coincidam. + + ## Os pontos de ancoragem e de posição (anchor/pos) podem ser indicados + ## com um número inteiro ou decimal (int/float). Se ele for inteiro, + ## os pixels desde o canto superior esquerdo. Se ele for decimal, + ## é interpretado como a fração das dimensões do elemento gráfico ou da + ## tela. # style.mm_menu_frame.xpos = 0.5 # style.mm_menu_frame.xanchor = 0.5 @@ -202,205 +137,151 @@ ######################################### - ## These let you customize the default font used for text in Ren'Py. - ## - Personalización del tipo de letra utilizado por defecto. + ## Personalização do tipo de letra utilizado por padrão. - ## The file containing the default font. - ## - Archivo del tipo de letra. + ## O arquivo que contém a fonte padrão. # style.default.font = "DejaVuSans.ttf" - ## The default size of text. - ## - Tamaño de letra por defecto. + ## O tamanho padrão da fonte. # style.default.size = 22 - ## Note that these only change the size of some of the text. Other - ## buttons have their own styles. - ## - Nota: Solo cambia el tamaño de parte del texto. Otros botones - ## tienen sus propios estilos. + ## Nota: Isso apenas muda o tamanho da fonte do texto. Outros botões + ## têm seus próprios estilos. ######################################### - ## These settings let you change some of the sounds that are used by - ## Ren'Py. - ## - Ajuste de algunos de los sonidos utilizados por Ren'Py. + ## Ajuste de alguns sons utilizados por Ren'Py. - ## Set this to False if the game does not have any sound effects. - ## - Ajustar a 'False' si el juego no tiene efectos de sonido. + ## Ajuste para falso ('False') acaso o jogo não tiver efeitos de som. config.has_sound = True - ## Set this to False if the game does not have any music. - ## - Ajustar a 'False' si el juego no tiene música. + ## Ajuste para falso ('False') acaso o jogo não tiver música. config.has_music = True - ## Set this to True if the game has voicing. - ## - Ajustar a 'True' si el juego contiene voces. + ## Ajuste para verdadeiro ('True') acaso o jogo conter vozes. config.has_voice = False - ## Sounds that are used when button and imagemaps are clicked. - ## - Sonidos utilizados cuando se hace clic en un botón. + ## Sons utilizados quando se clica em um botão. # style.button.activate_sound = "click.wav" # style.imagemap.activate_sound = "click.wav" - ## Sounds that are used when entering and exiting the game menu. - ## - Sonidos utilizados cuando se entra o sale del menú del juego. + ## Sons utilizados quando se entra ou sai do menu do jogo. # config.enter_sound = "click.wav" # config.exit_sound = "click.wav" - ## A sample sound that can be played to check the sound volume. - ## - Sonido de ejemplo utilizado para comprobar el volumen. + ## Som de exemplo utilizado para checar o volume do som. # config.sample_sound = "click.wav" - ## Music that is played while the user is at the main menu. - ## - Música del menú principal. + ## Música do menu principal. # config.main_menu_music = "main_menu_theme.ogg" ######################################### - ## Help. - ## - Ayuda. + ## Ajuda - ## This lets you configure the help option on the Ren'Py menus. - ## It may be: - ## - A label in the script, in which case that label is called to - ## show help to the user. - ## - A file name relative to the base directory, which is opened in a - ## web browser. - ## - None, to disable help. - - ## - Configuración de la opción de ayuda de los menús de Ren'Py. - ## Puede ser: - ## - Una etiqueta (label) en el 'script', en cuyo caso se llama esa - ## etiqueta para mostrar la ayuda al usuario. - ## - El nombre de un archivo relativo al directorio base, que se abre - ## en un navegador web. - ## - 'None', para deshabilitar la ayuda (se debe eliminar el botón - ## de ayuda en las pantallas 'screens'). + ## Configuração das opções de ajuda dos menus de Ren'Py. + ## Pode ser: + ## - Uma etiqueta (label) no 'script', em cujo qual se chama essa + ## etiqueta para mostrar a ajuda ao usuário. + ## - O nome de um arquivo relativo ao diretório base, que é aberto + ## em um navegador web. + ## - 'None', para desabilitar a ajuda (deve-se eliminar o botão + ## de ajuda nas telas). config.help = "README.html" ######################################### - ## Transitions. - ## - Transiciones. + ## Transições. - ## Used when entering the game menu from the game. - ## - Desde el juego al menú del juego. + ## Usada da abertura para o menu do jogo. config.enter_transition = None - ## Used when exiting the game menu to the game. - ## - Desde el menú del juego al juego. + ## Usada quando saímos do menu do jogo para o jogo. config.exit_transition = None - ## Used between screens of the game menu. - ## - Entre pantallas del menú del juego. + ## Usada entre as telas do menu do jogo. config.intra_transition = None - ## Used when entering the game menu from the main menu. - ## - Desde el menú principal al menú del juego. + ## Usada do menu principal para o menu do jogo. config.main_game_transition = None - ## Used when returning to the main menu from the game. - ## - Desde el juego al menú principal. + ## Usada para retornar para o menu principal do jogo. config.game_main_transition = None - ## Used when entering the main menu from the splashscreen. - ## - Desde la pantalla splash al menú principal. + ## Usada quando entramos no menu principal pela tela de abertura config.end_splash_transition = None - ## Used when entering the main menu after the game has ended. - ## - Al menú principal cuando el juego ha terminado. + ## Usada quando entramos no menu principal após o jogo ser terminado. config.end_game_transition = None - ## Used when a game is loaded. - ## - Cuando se carga una partida. + ## Usada quando o jogo é carregado. config.after_load_transition = None - ## Used when the window is shown. - ## - Cuando se muestra una ventana. + ## Usada quando se mostra uma janela. config.window_show_transition = None - ## Used when the window is hidden. - ## - Cuando se oculta una ventana. + ## Usada quando se oculta uma janela. config.window_hide_transition = None - ## Used when showing NVL-mode text directly after ADV-mode text. - ## - Cuando se usa texto en modo NVL inmediatamente después de - ## texto en modo ADV. + ## Usada quando se usa texto no modo NVL imediatamente depois do + ## texto em modo ADV. config.adv_nvl_transition = dissolve - ## Used when showing ADV-mode text directly after NVL-mode text. - ## - Cuando se usa texto en modo ADV inmediatamente después de - ## texto en modo NVL. + ## Usada quando se usa texto no modo ADV imediatamente depois do + ## texto em modo NVL. config.nvl_adv_transition = dissolve - ## Used when yesno is shown. - ## - Cuando se muestra la pantalla Sí/No + ## Usada quando se mostra a tela Sim/Não ('Yes/No') config.enter_yesno_transition = None - ## Used when the yesno is hidden. - ## - Cuando se oculta la pantalla Sí/No + ## Usada quando se oculta a tela Sim/Não ('Yes/No') config.exit_yesno_transition = None - ## Used when entering a replay. - ## - Cuando se entra a una repetición. + ## Usada quando se entra em uma repetição ('Replay') config.enter_replay_transition = None - ## Used when exiting a replay. - ## - Cuando se sale de una repetición. + ## Usada ao sair de uma repetição ('Replay') config.exit_replay_transition = None - ## Used when the image is changed by a say statement with image attributes. - ## - Cuando la imagen cambia por una sentencia 'say' con atributos de - ## imagen. + ## Usada quando a imagem é substituída por uma sentença 'say' com + ## atributos de imagem. config.say_attribute_transition = None ######################################### - ## This is the name of the directory where the game's data is - ## stored. (It needs to be set early, before any other init code - ## is run, so the persistent information can be found by the init code.) - ## - Nombre del directorio en el cual se almacenan los datos del juego. - ## (Debe ajustarse al inicio, antes de los otros bloques 'init', para - ## que la información persistente pueda ser encontrada por el código - ## 'init'.) + ## Nome do diretório no qual estão armazenados os dados do jogo. + ## (Deve ser ajustado no início, antes dos outros blocos 'init', para + ## que a informação salva possa ser encontrada pelo código 'init'.) python early: config.save_directory = "PROJECT_NAME-UNIQUE" init -1 python hide: ######################################### - ## Default values of Preferences. - ## - Valores por defecto de las Opciones + ## Valores padrão das opções. - ## Note: These options are only evaluated the first time a - ## game is run. To have them run a second time, delete - ## game/saves/persistent - ## - Nota: Estas opciones tan solo son evaluadas la primera vez que - ## se ejecuta un juego. Para que sean evaluadas una segunda vez, - ## bórrese games/saves/persistent + ## Nota: Estas opções são somente consideradas na primeira vez que + ## um jogo é executado. Para que sejam carregadas uma segunda vez, + ## por favor deletar 'game/saves/persistent'. - ## Should we start in fullscreen mode? - ## - Ajusta a 'True' para comenzar en pantalla completa + ## Ajuste para verdadeiro ('True') para iniciar com a tela cheia (fullscreen). config.default_fullscreen = False - ## The default text speed in characters per second. 0 is infinite. - ## - Velocidad del texto por defecto en caracteres por segundo. - ## 0 es infinito. + ## Velocidade do texto padrão em caracteres por segundo. 0 é infinito. config.default_text_cps = 0 - ## The default auto-forward time setting. - ## - El ajuste de auto-avance por defecto. + ## O ajuste de auto-avanço por padrão. config.default_afm_time = 10 ######################################### - ## More customizations can go here. - ## - Más personalizaciones pueden ir aquí. + ## Mais customizações podem vir aqui. diff -Nru renpy-6.99.14.1+dfsg/the_question/game/screens.rpy renpy-6.99.14.3+dfsg/the_question/game/screens.rpy --- renpy-6.99.14.1+dfsg/the_question/game/screens.rpy 2017-11-26 18:15:49.000000000 +0000 +++ renpy-6.99.14.3+dfsg/the_question/game/screens.rpy 2018-03-04 01:57:00.000000000 +0000 @@ -436,6 +436,7 @@ scrollbars "vertical" mousewheel True draggable True + pagekeys True side_yfill True @@ -451,6 +452,7 @@ scrollbars "vertical" mousewheel True draggable True + pagekeys True side_yfill True diff -Nru renpy-6.99.14.1+dfsg/the_question/game/tl/russian/common.rpy renpy-6.99.14.3+dfsg/the_question/game/tl/russian/common.rpy --- renpy-6.99.14.1+dfsg/the_question/game/tl/russian/common.rpy 2018-01-10 01:48:11.000000000 +0000 +++ renpy-6.99.14.3+dfsg/the_question/game/tl/russian/common.rpy 2018-03-25 22:06:34.000000000 +0000 @@ -157,171 +157,83 @@ old "%b %d, %H:%M" new "%d %b, %H:%M" - # 00action_file.rpy:825 + # 00action_file.rpy:820 old "Quick save complete." new "Быстрое сохранение завершено." - # 00director.rpy:693 - old "The interactive director is not enabled here." - new "Интерактивный директор недоступен." - - # 00director.rpy:1480 - old "Done" - new "Принять" - - # 00director.rpy:1488 - old "(statement)" - new "(функция)" - - # 00director.rpy:1489 - old "(tag)" - new "(тег)" - - # 00director.rpy:1490 - old "(attributes)" - new "(аттрибут)" - - # 00director.rpy:1491 - old "(transform)" - new "(трансформация)" - - # 00director.rpy:1516 - old "(transition)" - new "(переход)" - - # 00director.rpy:1528 - old "(channel)" - new "(канал)" - - # 00director.rpy:1529 - old "(filename)" - new "(имя файла)" - - # 00director.rpy:1554 - old "Change" - new "Изменить" - - # 00director.rpy:1556 - old "Add" - new "Добавить" - - # 00director.rpy:1559 - old "Cancel" - new "Отмена" - - # 00director.rpy:1562 - old "Remove" - new "Убрать" - - # 00director.rpy:1595 - old "Statement:" - new "Функции:" - - # 00director.rpy:1616 - old "Tag:" - new "Теги:" - - # 00director.rpy:1632 - old "Attributes:" - new "Аттрибут:" - - # 00director.rpy:1650 - old "Transforms:" - new "Трансформации:" - - # 00director.rpy:1669 - old "Behind:" - new "Позади:" - - # 00director.rpy:1688 - old "Transition:" - new "Переходы:" - - # 00director.rpy:1706 - old "Channel:" - new "Каналы:" - - # 00director.rpy:1724 - old "Audio Filename:" - new "Имя файла:" - - # 00gui.rpy:240 + # 00gui.rpy:234 old "Are you sure?" new "Вы уверены?" - # 00gui.rpy:241 + # 00gui.rpy:235 old "Are you sure you want to delete this save?" new "Вы уверены, что хотите удалить это сохранение?" - # 00gui.rpy:242 + # 00gui.rpy:236 old "Are you sure you want to overwrite your save?" new "Вы уверены, что хотите перезаписать ваше сохранение?" - # 00gui.rpy:243 + # 00gui.rpy:237 old "Loading will lose unsaved progress.\nAre you sure you want to do this?" new "Загрузка игры приведёт к потере несохранённого прогресса.\nВы уверены, что хотите это сделать?" - # 00gui.rpy:244 + # 00gui.rpy:238 old "Are you sure you want to quit?" new "Вы уверены, что хотите выйти?" - # 00gui.rpy:245 + # 00gui.rpy:239 old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress." new "Вы уверены, что хотите вернуться в главное меню?\nЭто приведёт к потере несохранённого прогресса." - # 00gui.rpy:246 + # 00gui.rpy:240 old "Are you sure you want to end the replay?" new "Вы уверены, что хотите завершить повтор?" - # 00gui.rpy:247 + # 00gui.rpy:241 old "Are you sure you want to begin skipping?" new "Вы уверены, что хотите начать пропуск?" - # 00gui.rpy:248 + # 00gui.rpy:242 old "Are you sure you want to skip to the next choice?" new "Вы точно хотите пропустить всё до следующего выбора?" - # 00gui.rpy:249 + # 00gui.rpy:243 old "Are you sure you want to skip unseen dialogue to the next choice?" new "Вы уверены, что хотите пропустить непрочитанные диалоги до следующего выбора?" - # 00keymap.rpy:254 - old "Failed to save screenshot as %s." - new "Провалена попытка сохранить скриншот как %s." - - # 00keymap.rpy:266 + # 00keymap.rpy:259 old "Saved screenshot as %s." new "Скриншот сохранён как %s." - # 00library.rpy:146 + # 00library.rpy:142 old "Self-voicing disabled." new "Синтезатор речи отключён." - # 00library.rpy:147 + # 00library.rpy:143 old "Clipboard voicing enabled. " - new "Озвучка буфера обмена включена. " + new "Озвучка буфера обмена включена." - # 00library.rpy:148 + # 00library.rpy:144 old "Self-voicing enabled. " - new "Синтезатор речи включён. " + new "Синтезатор речи включён." - # 00library.rpy:183 + # 00library.rpy:179 old "Skip Mode" new "Режим Пропуска" - # 00library.rpy:266 + # 00library.rpy:262 old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}." new "Эта программа содержит свободное и открытое программное обеспечение под несколькими лицензиями, включая лицензию MIT и GNU Lesser General Public. Полный список лицензий, включая ссылки на полный исходный код, можно найти {a=https://www.renpy.org/l/license}здесь{/a}." - # 00preferences.rpy:442 + # 00preferences.rpy:429 old "Clipboard voicing enabled. Press 'shift+C' to disable." new "Озвучка буфера обмена включена. Нажмите 'shift+C', чтобы отключить её." - # 00preferences.rpy:444 + # 00preferences.rpy:431 old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable." new "Синтезатор речи должен сказать \"[renpy.display.tts.last]\". Нажмите 'alt+shift+V', чтобы отключить его." - # 00preferences.rpy:446 + # 00preferences.rpy:433 old "Self-voicing enabled. Press 'v' to disable." new "Синтезатор речи включён. Нажмите 'v', чтобы отключить его." @@ -363,83 +275,87 @@ # 00updater.rpy:1055 old "While unpacking {}, unknown type {}." - new "При распаковке {}, обнаружен неизвестный тип {}." + new "При распаковке {} обнаружен неизвестный тип {}." - # 00updater.rpy:1402 + # 00updater.rpy:1399 old "Updater" new "Обновление" - # 00updater.rpy:1409 + # 00updater.rpy:1406 old "An error has occured:" new "Возникла ошибка:" - # 00updater.rpy:1411 + # 00updater.rpy:1408 old "Checking for updates." new "Проверка обновлений." - # 00updater.rpy:1413 + # 00updater.rpy:1410 old "This program is up to date." new "Эта программа обновлена." - # 00updater.rpy:1415 + # 00updater.rpy:1412 old "[u.version] is available. Do you want to install it?" new "[u.version] доступна. Вы хотите её установить?" - # 00updater.rpy:1417 + # 00updater.rpy:1414 old "Preparing to download the updates." new "Подготовка к загрузке обновлений." - # 00updater.rpy:1419 + # 00updater.rpy:1416 old "Downloading the updates." new "Загрузка обновлений." - # 00updater.rpy:1421 + # 00updater.rpy:1418 old "Unpacking the updates." new "Распаковка обновлений." - # 00updater.rpy:1423 + # 00updater.rpy:1420 old "Finishing up." new "Завершаю..." - # 00updater.rpy:1425 + # 00updater.rpy:1422 old "The updates have been installed. The program will restart." new "Обновления установлены. Программа будет перезапущена." - # 00updater.rpy:1427 + # 00updater.rpy:1424 old "The updates have been installed." new "Обновления были установлены." - # 00updater.rpy:1429 + # 00updater.rpy:1426 old "The updates were cancelled." new "Обновления были отменены." - # 00updater.rpy:1444 + # 00updater.rpy:1441 old "Proceed" new "Продолжить" - # 00gallery.rpy:573 + # 00updater.rpy:1444 + old "Cancel" + new "Отмена" + + # 00gallery.rpy:563 old "Image [index] of [count] locked." new "Изображение [index] из [count] закрыто." - # 00gallery.rpy:593 + # 00gallery.rpy:583 old "prev" new "пред" - # 00gallery.rpy:594 + # 00gallery.rpy:584 old "next" new "след" - # 00gallery.rpy:595 + # 00gallery.rpy:585 old "slideshow" new "слайд-шоу" - # 00gallery.rpy:596 + # 00gallery.rpy:586 old "return" new "вернуться" # 00gltest.rpy:64 old "Graphics Acceleration" - new "Графическое Ускорение" + new "Graphics Acceleration" # 00gltest.rpy:70 old "Automatically Choose" @@ -447,85 +363,81 @@ # 00gltest.rpy:75 old "Force Angle/DirectX Renderer" - new "Насильно Отображать Через Angle/DirectX" + new "Принудительный Angle/DirectX" # 00gltest.rpy:79 old "Force OpenGL Renderer" - new "Насильно Отображать Через OpenGL" + new "Принудительный OpenGL" # 00gltest.rpy:83 old "Force Software Renderer" - new "Насильно Отображать Программно" - - # 00gltest.rpy:89 - old "NPOT" - new "NPOT (OpenGL 2+)" + new "Принудительный Программный" # 00gltest.rpy:93 old "Enable" - new "Активировать" + new "Активировано" - # 00gltest.rpy:124 + # 00gltest.rpy:109 old "Changes will take effect the next time this program is run." new "Изменения вступят в силу при следующем запуске программы." - # 00gltest.rpy:156 + # 00gltest.rpy:141 old "Performance Warning" new "Предупреждение Производительности" - # 00gltest.rpy:161 + # 00gltest.rpy:146 old "This computer is using software rendering." new "Этот компьютер использует программный рендеринг." - # 00gltest.rpy:163 + # 00gltest.rpy:148 old "This computer is not using shaders." new "Этот компьютер не использует шейдеры." - # 00gltest.rpy:165 + # 00gltest.rpy:150 old "This computer is displaying graphics slowly." new "Этот компьютер медленно отображает графику." - # 00gltest.rpy:167 + # 00gltest.rpy:152 old "This computer has a problem displaying graphics: [problem]." new "У этого компьютера проблема с отображением графики: [problem]" - # 00gltest.rpy:172 + # 00gltest.rpy:157 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 может решить эту проблему." - # 00gltest.rpy:174 + # 00gltest.rpy:159 old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display." new "Графические драйвера устарели или работают неверно. Это может привести к медленному или неверному отображению графики." - # 00gltest.rpy:179 + # 00gltest.rpy:164 old "Update DirectX" new "Обновить DirectX" - # 00gltest.rpy:185 + # 00gltest.rpy:170 old "Continue, Show this warning again" new "Продолжить, Показать это предупреждение снова" - # 00gltest.rpy:189 + # 00gltest.rpy:174 old "Continue, Don't show warning again" new "Продолжить, Не показывать это предупреждение снова." - # 00gltest.rpy:207 + # 00gltest.rpy:192 old "Updating DirectX." new "Обновляю DirectX." - # 00gltest.rpy:211 + # 00gltest.rpy:196 old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX." new "Установщик DirectX был запущен. Возможно, что он запустился в свёрнутом состоянии. Пожалуйста, следуйте инструкциям для установки DirectX." - # 00gltest.rpy:215 + # 00gltest.rpy:200 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. Если вы этого не хотите, снимите соответствующую галочку." - # 00gltest.rpy:219 + # 00gltest.rpy:204 old "When setup finishes, please click below to restart this program." new "По завершению установки, щёлкните, чтобы перезапустить программу." - # 00gltest.rpy:221 + # 00gltest.rpy:206 old "Restart" new "Перезапустить" @@ -553,75 +465,618 @@ old "Back (B)" new "Back (B)" - # _errorhandling.rpym:523 + # _errorhandling.rpym:519 old "Open" new "Журнал" - # _errorhandling.rpym:525 + # _errorhandling.rpym:521 old "Opens the traceback.txt file in a text editor." new "Открывает файл traceback.txt в текстовом редакторе." - # _errorhandling.rpym:527 + # _errorhandling.rpym:523 old "Copy" new "Копировать" - # _errorhandling.rpym:529 + # _errorhandling.rpym:525 old "Copies the traceback.txt file to the clipboard." new "Копирует файл traceback.txt в буфер обмена." - # _errorhandling.rpym:556 + # _errorhandling.rpym:543 old "An exception has occurred." new "Возникло исключение." - # _errorhandling.rpym:576 + # _errorhandling.rpym:562 old "Rollback" new "Назад" - # _errorhandling.rpym:578 + # _errorhandling.rpym:564 old "Attempts a roll back to a prior time, allowing you to save or choose a different choice." new "Пытается вернуться назад, позволяя вам сохраниться или принять другой выбор." - # _errorhandling.rpym:581 + # _errorhandling.rpym:567 old "Ignore" new "Игнорировать" - # _errorhandling.rpym:585 - old "Ignores the exception, allowing you to continue." - new "Игнорирует это исключение, позволяя вам продолжить." - - # _errorhandling.rpym:587 + # _errorhandling.rpym:569 old "Ignores the exception, allowing you to continue. This often leads to additional errors." new "Игнорирует это исключение, позволяя вам продолжить. Зачастую это ведёт к дополнительным ошибкам." - # _errorhandling.rpym:591 + # _errorhandling.rpym:572 old "Reload" new "Перезагрузить" - # _errorhandling.rpym:593 + # _errorhandling.rpym:574 old "Reloads the game from disk, saving and restoring game state if possible." new "Перезагружает игру с диска, сохраняя и восстанавливая её состояние, если это возможно." - # _errorhandling.rpym:596 + # _errorhandling.rpym:576 old "Console" new "Консоль" - # _errorhandling.rpym:598 + # _errorhandling.rpym:578 old "Opens a console to allow debugging the problem." new "Открывает консоль, позволяющую отладить проблему." - # _errorhandling.rpym:608 + # _errorhandling.rpym:590 old "Quits the game." new "Выходит из игры." - # _errorhandling.rpym:632 + # _errorhandling.rpym:614 old "Parsing the script failed." new "Обработка сценария завершилась неудачно." - # _errorhandling.rpym:658 + # _errorhandling.rpym:640 old "Opens the errors.txt file in a text editor." new "Открывает файл errors.txt в текстовом редакторе." - # _errorhandling.rpym:662 + # _errorhandling.rpym:644 old "Copies the errors.txt file to the clipboard." new "Копирует файл errors.txt в буфер обмена." + # _developer/developer.rpym:38 + old "Developer Menu" + new "Меню разработчика" + + # _developer/developer.rpym:43 + old "Reload Game (Shift+R)" + new "Перезагрузить игру (Shift+R)" + + # _developer/developer.rpym:45 + old "Console (Shift+O)" + new "Консоль (Shift+O)" + + # _developer/developer.rpym:47 + old "Variable Viewer" + new "Просмотр переменных" + + # _developer/developer.rpym:49 + old "Theme Test" + new "Theme Test" + + # _developer/developer.rpym:51 + old "Image Location Picker" + new "Инструмент позиционирования на изображениях" + + # _developer/developer.rpym:53 + old "Filename List" + new "Список файлов" + + # _developer/developer.rpym:57 + old "Show Image Load Log" + new "Show Image Load Log" + + # _developer/developer.rpym:60 + old "Hide Image Load Log" + new "Hide Image Load Log" + + # _developer/developer.rpym:95 + old "Nothing to inspect." + new "Переменные не заданы." + + # _developer/developer.rpym:217 + old "Return to the developer menu" + new "Вернуться в меню разработчика" + + # _developer/developer.rpym:377 + old "Rectangle: %r" + new "Прямоугольник: %r" + + # _developer/developer.rpym:382 + old "Mouse position: %r" + new "Позиция мыши: %r" + + # _developer/developer.rpym:387 + old "Right-click or escape to quit." + new "Нажмите правую кнопку мыши или ESC чтобы выйти." + + # _developer/developer.rpym:419 + old "Rectangle copied to clipboard." + new "Координаты прямоугольника скопированы в буфер обмена." + + # _developer/developer.rpym:422 + old "Position copied to clipboard." + new "Координаты позиции скопированы в буфер обмена." + + # _developer/developer.rpym:531 + old "✔ " + new "✔ " + + # _developer/developer.rpym:534 + old "✘ " + new "✘ " + + # _developer/developer.rpym:539 + old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}" + new "\n{color=#cfc}✔ предсказанное изображение (хорошо){/color}\n{color=#fcc}✘ внезапное изображение (плохо){/color}\n{color=#fff}Нажмите, чтобы передвинуть.{/color}" + + # _developer/inspector.rpym:38 + old "Displayable Inspector" + new "Диспетчер объектов" + + # _developer/inspector.rpym:61 + old "Size" + new "Разрешение" + + # _developer/inspector.rpym:65 + old "Style" + new "Стиль" + + # _developer/inspector.rpym:71 + old "Location" + new "Местоположение" + + # _developer/inspector.rpym:122 + old "Inspecting Styles of [displayable_name!q]" + new "Инспектирую стили [displayable_name!q]" + + # _developer/inspector.rpym:139 + old "displayable:" + new "объект:" + + # _developer/inspector.rpym:145 + old " (no properties affect the displayable)" + new " (на объект не влияют никакие параметры)" + + # _developer/inspector.rpym:147 + old " (default properties omitted)" + new " (настройки по умолчанию опущены)" + + # _developer/inspector.rpym:185 + old "" + new "" + + # 00console.rpy:208 + old "Press to exit console. Type help for help.\n" + new "Нажмите , чтобы выйти из консоли. Введите help для помощи.\n" + + # 00console.rpy:212 + old "Ren'Py script enabled." + new "Ren'Py script активирован." + + # 00console.rpy:214 + old "Ren'Py script disabled." + new "Ren'Py script деактивирован." + + # 00console.rpy:424 + old "help: show this help" + new "help: показывает помощь" + + # 00console.rpy:429 + old "commands:\n" + new "команды:\n" + + # 00console.rpy:439 + old " : run the statement\n" + new " <оператор renpy script>: запуск оператора\n" + + # 00console.rpy:441 + old " : run the expression or statement" + new " <выражение или оператор python>: запустить выражение или оператор" + + # 00console.rpy:449 + old "clear: clear the console history" + new "clear: очищает историю консоли" + + # 00console.rpy:453 + old "exit: exit the console" + new "exit: выход из консоли" + + # 00console.rpy:461 + old "load : loads the game from slot" + new "load <слот>: загружает игру из выбранного слота" + + # 00console.rpy:474 + old "save : saves the game in slot" + new "save <слот>: сохраняет игру в выбранный слот" + + # 00console.rpy:485 + old "reload: reloads the game, refreshing the scripts" + new "reload: перезагружает игру, обновляет скрипты" + + # 00console.rpy:493 + old "watch : watch a python expression" + new "watch <выражение>: наблюдать за выражением python" + + # 00console.rpy:519 + old "unwatch : stop watching an expression" + new "unwatch <выражение>: прекратить наблюдать за выражением" + + # 00console.rpy:550 + old "unwatchall: stop watching all expressions" + new "unwatchall: глобальное прекращение наблюдения" + + # 00console.rpy:567 + old "jump