Merge branch 'master' into develop
This commit is contained in:
commit
daa9c55653
10 changed files with 488 additions and 356 deletions
|
|
@ -105,7 +105,7 @@ def _create_version():
|
||||||
print(err)
|
print(err)
|
||||||
try:
|
try:
|
||||||
version = "%s (rev %s)" % (version, check_output("git rev-parse --short HEAD", shell=True, cwd=root, stderr=STDOUT).strip())
|
version = "%s (rev %s)" % (version, check_output("git rev-parse --short HEAD", shell=True, cwd=root, stderr=STDOUT).strip())
|
||||||
except (IOError, CalledProcessError, WindowsError):
|
except (IOError, CalledProcessError, OSError):
|
||||||
# ignore if we cannot get to git
|
# ignore if we cannot get to git
|
||||||
pass
|
pass
|
||||||
return version
|
return version
|
||||||
|
|
|
||||||
|
|
@ -3047,7 +3047,7 @@ class CmdSpawn(COMMAND_DEFAULT_CLASS):
|
||||||
caller.msg("|rDeletion cancelled.|n")
|
caller.msg("|rDeletion cancelled.|n")
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
success = protlib.delete_db_prototype(caller, self.args)
|
success = protlib.delete_prototype(self.args)
|
||||||
except protlib.PermissionError as err:
|
except protlib.PermissionError as err:
|
||||||
caller.msg("|rError deleting:|R {}|n".format(err))
|
caller.msg("|rError deleting:|R {}|n".format(err))
|
||||||
caller.msg("Deletion {}.".format(
|
caller.msg("Deletion {}.".format(
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
# Contrib folder
|
# Contrib folder
|
||||||
|
|
||||||
This folder contains 'contributions': extra snippets of code that are
|
`evennia/contrib/` contains 'contributions': extra snippets of code that are
|
||||||
potentially very useful for the game coder but which are considered
|
potentially very useful for the game coder but which are considered
|
||||||
too game-specific to be a part of the main Evennia game server. These
|
too game-specific to be a part of the main Evennia game server. These
|
||||||
modules are not used unless you explicitly import them. See each file
|
modules are not used unless you explicitly import them. See each file
|
||||||
|
|
@ -17,7 +17,7 @@ things you want from here into your game folder and change them there.
|
||||||
|
|
||||||
* Barter system (Griatch 2012) - A safe and effective barter-system
|
* Barter system (Griatch 2012) - A safe and effective barter-system
|
||||||
for any game. Allows safe trading of any goods (including coin).
|
for any game. Allows safe trading of any goods (including coin).
|
||||||
* Building menu (vincent-lg 2018) - An @edit command for modifying
|
* Building menu (vincent-lg 2018) - An `@edit` command for modifying
|
||||||
objects using a generated menu. Customizable for different games.
|
objects using a generated menu. Customizable for different games.
|
||||||
* CharGen (Griatch 2011) - A simple Character creator for OOC mode.
|
* CharGen (Griatch 2011) - A simple Character creator for OOC mode.
|
||||||
Meant as a starting point for a more fleshed-out system.
|
Meant as a starting point for a more fleshed-out system.
|
||||||
|
|
@ -60,9 +60,6 @@ things you want from here into your game folder and change them there.
|
||||||
* Tree Select (FlutterSprite 2017) - A simple system for creating a
|
* Tree Select (FlutterSprite 2017) - A simple system for creating a
|
||||||
branching EvMenu with selection options sourced from a single
|
branching EvMenu with selection options sourced from a single
|
||||||
multi-line string.
|
multi-line string.
|
||||||
* Turnbattle (Tim Ashley Jenkins 2017) - This is a framework for a turn-based
|
|
||||||
combat system with different levels of complexity, including versions with
|
|
||||||
equipment and magic as well as ranged combat.
|
|
||||||
* Wilderness (titeuf87 2017) - Make infinitely large wilderness areas
|
* Wilderness (titeuf87 2017) - Make infinitely large wilderness areas
|
||||||
with dynamically created locations.
|
with dynamically created locations.
|
||||||
* UnixCommand (Vincent Le Geoff 2017) - Add commands with UNIX-style syntax.
|
* UnixCommand (Vincent Le Geoff 2017) - Add commands with UNIX-style syntax.
|
||||||
|
|
@ -75,7 +72,8 @@ things you want from here into your game folder and change them there.
|
||||||
objects and events using Python from in-game.
|
objects and events using Python from in-game.
|
||||||
* Turnbattle (FlutterSprite 2017) - A turn-based combat engine meant
|
* Turnbattle (FlutterSprite 2017) - A turn-based combat engine meant
|
||||||
as a start to build from. Has attack/disengage and turn timeouts,
|
as a start to build from. Has attack/disengage and turn timeouts,
|
||||||
and includes optional expansions for equipment and combat movement.
|
and includes optional expansions for equipment and combat movement, magic
|
||||||
|
and ranged combat.
|
||||||
* Tutorial examples (Griatch 2011, 2015) - A folder of basic
|
* Tutorial examples (Griatch 2011, 2015) - A folder of basic
|
||||||
example objects, commands and scripts.
|
example objects, commands and scripts.
|
||||||
* Tutorial world (Griatch 2011, 2015) - A folder containing the
|
* Tutorial world (Griatch 2011, 2015) - A folder containing the
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,116 +1,132 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
# The French translation for the Evennia server.
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the Evennia package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
# Maintained by: vincent-lg <vincent.legoff.srs@gmail.com>, 2018-
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-03-02 16:22-0500\n"
|
"POT-Creation-Date: 2018-11-22 08:45+0100\n"
|
||||||
"PO-Revision-Date: 2016-03-04 11:51-0500\n"
|
"PO-Revision-Date: 2016-03-04 11:51-0500\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language-Team: \n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"X-Generator: Poedit 1.7.6\n"
|
"X-Generator: Poedit 1.7.6\n"
|
||||||
|
|
||||||
#: commands/cmdhandler.py:485
|
#: .\accounts\accounts.py:440
|
||||||
msgid "There were multiple matches."
|
#, fuzzy
|
||||||
msgstr "Il y a eu plusieurs correspondances."
|
msgid "Account being deleted."
|
||||||
|
msgstr "Suppression du compte."
|
||||||
|
|
||||||
#: commands/cmdhandler.py:513
|
#: .\commands\cmdhandler.py:681
|
||||||
|
msgid "There were multiple matches."
|
||||||
|
msgstr "Il y a plusieurs correspondances possibles."
|
||||||
|
|
||||||
|
#: .\commands\cmdhandler.py:704
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Command '%s' is not available."
|
msgid "Command '%s' is not available."
|
||||||
msgstr "Commande '%s' n'est pas disponible."
|
msgstr "La commande '%s' n'est pas disponible."
|
||||||
|
|
||||||
#: commands/cmdhandler.py:518
|
#: .\commands\cmdhandler.py:709
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid " Maybe you meant %s?"
|
msgid " Maybe you meant %s?"
|
||||||
msgstr "Voulez-vous dire %s?"
|
msgstr " Vouliez-vous dire %s ?"
|
||||||
|
|
||||||
#: commands/cmdhandler.py:518
|
#: .\commands\cmdhandler.py:709
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr "ou"
|
msgstr "ou"
|
||||||
|
|
||||||
#: commands/cmdhandler.py:520
|
#: .\commands\cmdhandler.py:711
|
||||||
msgid " Type \"help\" for help."
|
msgid " Type \"help\" for help."
|
||||||
msgstr "Tapez \"help\" pour de l'aide."
|
msgstr " Tapez \"help\" pour obtenir de l'aide."
|
||||||
|
|
||||||
#: commands/cmdparser.py:183
|
#: .\commands\cmdsethandler.py:89
|
||||||
#, python-format
|
#, python-brace-format
|
||||||
msgid "Could not find '%s'."
|
msgid ""
|
||||||
msgstr "Peut pas trouver '%s'."
|
"{traceback}\n"
|
||||||
|
"Error loading cmdset '{path}'\n"
|
||||||
|
"(Traceback was logged {timestamp})"
|
||||||
|
msgstr ""
|
||||||
|
"{traceback}\n"
|
||||||
|
"Une erreur s'est produite lors du chargement du cmdset '{path}'\n"
|
||||||
|
"(Référence de l'erreur : {timestamp})"
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:130
|
#: .\commands\cmdsethandler.py:94
|
||||||
#, python-format
|
#, fuzzy, python-brace-format
|
||||||
|
msgid ""
|
||||||
|
"Error loading cmdset: No cmdset class '{classname}' in '{path}'.\n"
|
||||||
|
"(Traceback was logged {timestamp})"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Une erreur s'est produite lors du chargement de cmdset : la classe cmdset '{classname}' est introuvable dans "
|
||||||
|
"{path}.\n"
|
||||||
|
"(Référence de l'erreur : {timestamp})"
|
||||||
|
|
||||||
|
#: .\commands\cmdsethandler.py:98
|
||||||
|
#, fuzzy, python-brace-format
|
||||||
|
msgid ""
|
||||||
|
"{traceback}\n"
|
||||||
|
"SyntaxError encountered when loading cmdset '{path}'.\n"
|
||||||
|
"(Traceback was logged {timestamp})"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Erreur de syntaxe lors du chargement de cmdset '{path}' : \"{error}\".\n"
|
||||||
|
"(Référence de l'erreur : {timestamp})"
|
||||||
|
|
||||||
|
#: .\commands\cmdsethandler.py:103
|
||||||
|
#, fuzzy, python-brace-format
|
||||||
|
msgid ""
|
||||||
|
"{traceback}\n"
|
||||||
|
"Compile/Run error when loading cmdset '{path}'.\",\n"
|
||||||
|
"(Traceback was logged {timestamp})"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Erreur de compilation/exécution lors du chargement de cmdset '{path}' : "
|
||||||
|
"\"{error}\".\n"
|
||||||
|
"(Référence de l'erreur : {timestamp})"
|
||||||
|
|
||||||
|
#: .\commands\cmdsethandler.py:108
|
||||||
|
#, python-brace-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"(Unsuccessfully tried '%s.' + '%s.%s')."
|
"Error encountered for cmdset at path '{path}'.\n"
|
||||||
|
"Replacing with fallback '{fallback_path}'.\n"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Une erreur a été rencontrée lors du chargement du cmdset '{path}'.\n"
|
||||||
|
"Le cmdset '{fallback_path}' est utilisé en remplacement.\n"
|
||||||
|
|
||||||
|
#: .\commands\cmdsethandler.py:114
|
||||||
|
#, python-brace-format
|
||||||
|
msgid "Fallback path '{fallback_path}' failed to generate a cmdset."
|
||||||
|
msgstr "Impossible de générer le cmdset de remplacement : '{fallback_path}'."
|
||||||
|
|
||||||
|
#: .\commands\cmdsethandler.py:182 .\commands\cmdsethandler.py:192
|
||||||
|
#, fuzzy, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"(Unsuccessfully tried '%s')."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
"(Essayé sans succès '%s.' + '%s.%s')."
|
"(Essayé sans succès '%s.' + '%s.%s')."
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:151
|
#: .\commands\cmdsethandler.py:311
|
||||||
#, python-brace-format
|
|
||||||
msgid ""
|
|
||||||
"\n"
|
|
||||||
"Error loading cmdset {path}: \"{error}\""
|
|
||||||
msgstr ""
|
|
||||||
"\n"
|
|
||||||
"Erreur de chargement de cmdset {path}: \"{error}\""
|
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:155
|
|
||||||
#, python-brace-format
|
|
||||||
msgid ""
|
|
||||||
"\n"
|
|
||||||
"Error in loading cmdset: No cmdset class '{classname}' in {path}."
|
|
||||||
msgstr ""
|
|
||||||
"\n"
|
|
||||||
"Erreur lors du chargement de cmdset: Pas de classe cmdset '{classname}' in "
|
|
||||||
"{path}."
|
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:159
|
|
||||||
#, python-brace-format
|
|
||||||
msgid ""
|
|
||||||
"\n"
|
|
||||||
"SyntaxError encountered when loading cmdset '{path}': \"{error}\"."
|
|
||||||
msgstr ""
|
|
||||||
"\n"
|
|
||||||
"Erreur de syntaxe lors du chargement de cmdset '{path}': \"{error}\"."
|
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:163
|
|
||||||
#, python-brace-format
|
|
||||||
msgid ""
|
|
||||||
"\n"
|
|
||||||
"Compile/Run error when loading cmdset '{path}': \"{error}\"."
|
|
||||||
msgstr ""
|
|
||||||
"\n"
|
|
||||||
"Erreur de compilation/exécution lors du chargement de cmdset '{path}': "
|
|
||||||
"\"{error}\"."
|
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:174
|
|
||||||
msgid ""
|
|
||||||
"\n"
|
|
||||||
" (See log for details.)"
|
|
||||||
msgstr ""
|
|
||||||
"\n"
|
|
||||||
"(Voir registre pour plus de détails.)"
|
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:247
|
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "custom {mergetype} on cmdset '{cmdset}'"
|
msgid "custom {mergetype} on cmdset '{cmdset}'"
|
||||||
msgstr "custom {mergetype} sur cmdset '{cmdset}'"
|
msgstr "custom {mergetype} sur cmdset '{cmdset}'"
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:250
|
#: .\commands\cmdsethandler.py:314
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid " <Merged {mergelist} {mergetype}, prio {prio}>: {current}"
|
msgid " <Merged {mergelist} {mergetype}, prio {prio}>: {current}"
|
||||||
msgstr " <Fusionné {mergelist} {mergetype}, prio {prio}>: {current}"
|
msgstr " <Fusionné {mergelist} {mergetype}, prio {prio}>: {current}"
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:258
|
#: .\commands\cmdsethandler.py:322
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid ""
|
msgid ""
|
||||||
" <{key} ({mergetype}, prio {prio}, {permstring})>:\n"
|
" <{key} ({mergetype}, prio {prio}, {permstring})>:\n"
|
||||||
|
|
@ -119,135 +135,212 @@ msgstr ""
|
||||||
" <{key} ({mergetype}, prio {prio}, {permstring})>:\n"
|
" <{key} ({mergetype}, prio {prio}, {permstring})>:\n"
|
||||||
" {keylist}"
|
" {keylist}"
|
||||||
|
|
||||||
#: commands/cmdsethandler.py:347
|
#: .\commands\cmdsethandler.py:426
|
||||||
msgid "Only CmdSets can be added to the cmdsethandler!"
|
msgid "Only CmdSets can be added to the cmdsethandler!"
|
||||||
msgstr "Seulement CmdSets peuvent être ajoutés au cmdsethandler!"
|
msgstr "Seuls des CmdSets peuvent être ajoutés au cmdsethandler !"
|
||||||
|
|
||||||
#: comms/channelhandler.py:94
|
#: .\comms\channelhandler.py:100
|
||||||
|
msgid "Say what?"
|
||||||
|
msgstr "Que voulez-vous dire ?"
|
||||||
|
|
||||||
|
#: .\comms\channelhandler.py:105
|
||||||
|
#, python-format
|
||||||
|
msgid "Channel '%s' not found."
|
||||||
|
msgstr "Le canal '%s' ne semble pas exister."
|
||||||
|
|
||||||
|
#: .\comms\channelhandler.py:108
|
||||||
|
#, python-format
|
||||||
|
msgid "You are not connected to channel '%s'."
|
||||||
|
msgstr "Vous n'êtes pas connecté au canal '%s'."
|
||||||
|
|
||||||
|
#: .\comms\channelhandler.py:112
|
||||||
|
#, python-format
|
||||||
|
msgid "You are not permitted to send to channel '%s'."
|
||||||
|
msgstr "Vous n'avez pas le droit de parler sur le canal '%s'."
|
||||||
|
|
||||||
|
#: .\comms\channelhandler.py:155
|
||||||
msgid " (channel)"
|
msgid " (channel)"
|
||||||
msgstr " (channel)"
|
msgstr " (canal)"
|
||||||
|
|
||||||
#: locks/lockhandler.py:230
|
#: .\locks\lockhandler.py:236
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Lock: lock-function '%s' is not available."
|
msgid "Lock: lock-function '%s' is not available."
|
||||||
msgstr "Vérou: lock-function '%s' n'est pas disponible."
|
msgstr "Verrou : lock-function '%s' n'est pas disponible."
|
||||||
|
|
||||||
#: locks/lockhandler.py:243
|
#: .\locks\lockhandler.py:249
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Lock: definition '%s' has syntax errors."
|
msgid "Lock: definition '%s' has syntax errors."
|
||||||
msgstr "Vérou: définition '%s' a des erreurs de syntaxe."
|
msgstr "Verrou : la définition '%s' a des erreurs de syntaxe."
|
||||||
|
|
||||||
#: locks/lockhandler.py:247
|
#: .\locks\lockhandler.py:253
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"LockHandler on %(obj)s: access type '%(access_type)s' changed from "
|
"LockHandler on %(obj)s: access type '%(access_type)s' changed from "
|
||||||
"'%(source)s' to '%(goal)s' "
|
"'%(source)s' to '%(goal)s' "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gestionnaire de vérrou sur %(obj)s: type d'accès '%(access_type)s' a changé "
|
"Gestionnaire de verrous sur %(obj)s: type d'accès '%(access_type)s' a changé "
|
||||||
"de '%(source)s' à '%(goal)s'"
|
"de '%(source)s' à '%(goal)s'"
|
||||||
|
|
||||||
#: locks/lockhandler.py:304
|
#: .\locks\lockhandler.py:320
|
||||||
#, python-format
|
#, fuzzy, python-brace-format
|
||||||
msgid "Lock: '%s' contains no colon (:)."
|
msgid "Lock: '{lockdef}' contains no colon (:)."
|
||||||
msgstr "Verrou: '%s' contient pas de deux points (:)."
|
msgstr "Verrou : '%s' ne contient pas de deux points (:)."
|
||||||
|
|
||||||
#: locks/lockhandler.py:308
|
#: .\locks\lockhandler.py:328
|
||||||
#, python-format
|
#, fuzzy, python-brace-format
|
||||||
msgid "Lock: '%s' has no access_type (left-side of colon is empty)."
|
msgid "Lock: '{lockdef}' has no access_type (left-side of colon is empty)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Verrou: '%s' n'a pas de access_type (côté gauche du deux point est vide)."
|
"Verrou : '%s' n'a pas de 'access_type' (il n'y a rien avant les deux points)."
|
||||||
|
|
||||||
#: locks/lockhandler.py:311
|
#: .\locks\lockhandler.py:336
|
||||||
#, python-format
|
#, fuzzy, python-brace-format
|
||||||
msgid "Lock: '%s' has mismatched parentheses."
|
msgid "Lock: '{lockdef}' has mismatched parentheses."
|
||||||
msgstr "Verrou: '%s' a des parenthèses dépareillées."
|
msgstr "Verrou : '%s' a des parenthèses déséquilibrées."
|
||||||
|
|
||||||
#: locks/lockhandler.py:314
|
#: .\locks\lockhandler.py:343
|
||||||
#, python-format
|
#, fuzzy, python-brace-format
|
||||||
msgid "Lock: '%s' has no valid lock functions."
|
msgid "Lock: '{lockdef}' has no valid lock functions."
|
||||||
msgstr "Verrou: '%s' n'a pas de fonctions verrou valides."
|
msgstr "Verrou : '%s' n'a pas de lock-function valide."
|
||||||
|
|
||||||
#: objects/objects.py:528
|
#: .\objects\objects.py:729
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Couldn't perform move ('%s'). Contact an admin."
|
msgid "Couldn't perform move ('%s'). Contact an admin."
|
||||||
msgstr "Ne pouvait effectuer le coup ('%s'). Contactez un administrateur."
|
msgstr "Impossible de se déplacer vers ('%s'). Veuillez contacter un administrateur."
|
||||||
|
|
||||||
#: objects/objects.py:538
|
#: .\objects\objects.py:739
|
||||||
msgid "The destination doesn't exist."
|
msgid "The destination doesn't exist."
|
||||||
msgstr "La destination n'existe pas."
|
msgstr "La destination est inconnue."
|
||||||
|
|
||||||
#: objects/objects.py:651
|
#: .\objects\objects.py:830
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not find default home '(#%d)'."
|
msgid "Could not find default home '(#%d)'."
|
||||||
msgstr "Ne peut trouver la maison '(#%d)' par défaut."
|
msgstr "Impossible de trouver la salle de départ (default home) par défaut : '#%d'."
|
||||||
|
|
||||||
#: objects/objects.py:667
|
#: .\objects\objects.py:846
|
||||||
msgid "Something went wrong! You are dumped into nowhere. Contact an admin."
|
msgid "Something went wrong! You are dumped into nowhere. Contact an admin."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Quelque chose a mal tourné! Vous êtes nulle part. Contactez un "
|
"Quelque chose a mal tourné ! Vous vous trouvez au milieu de nulle part. "
|
||||||
"administrateur."
|
"Veuillez contacter un administrateur."
|
||||||
|
|
||||||
#: objects/objects.py:747
|
#: .\objects\objects.py:912
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Your character %s has been destroyed."
|
msgid "Your character %s has been destroyed."
|
||||||
msgstr "Votre personnage %s a été détruit."
|
msgstr "Votre personnage %s a été détruit."
|
||||||
|
|
||||||
#: players/players.py:356
|
#: .\scripts\scripthandler.py:53
|
||||||
msgid "Player being deleted."
|
|
||||||
msgstr "Suppression de joueur."
|
|
||||||
|
|
||||||
#: scripts/scripthandler.py:50
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" '%(key)s' (%(next_repeat)s/%(interval)s, %(repeats)s repeats): %(desc)s"
|
" '%(key)s' (%(next_repeat)s/%(interval)s, %(repeats)s repeats): %(desc)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" '%(key)s' (%(next_repeat)s/%(interval)s, %(repeats)s répète): %(desc)s"
|
" '%(key)s' (%(next_repeat)s/%(interval)s, %(repeats)s répète) : %(desc)s"
|
||||||
|
|
||||||
#: scripts/scripts.py:202
|
#: .\scripts\scripts.py:205
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Script %(key)s(#%(dbid)s) of type '%(cname)s': at_repeat() error '%(err)s'."
|
"Script %(key)s(#%(dbid)s) of type '%(cname)s': at_repeat() error '%(err)s'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Scripte %(key)s(#%(dbid)s) de type '%(cname)s': at_repeat() erreur "
|
"Le script %(key)s(#%(dbid)s) de type '%(cname)s' a rencontré une erreur "
|
||||||
"'%(err)s'."
|
"durant at_repeat() : '%(err)s'."
|
||||||
|
|
||||||
#: server/initial_setup.py:29
|
#: .\server\initial_setup.py:28
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"Welcome to your new |wEvennia|n-based game! Visit http://www.evennia.com if "
|
"Welcome to your new |wEvennia|n-based game! Visit http://www.evennia.com if "
|
||||||
"you need\n"
|
"you need\n"
|
||||||
"help, want to contribute, report issues or just join the community.\n"
|
"help, want to contribute, report issues or just join the community.\n"
|
||||||
"As Player #1 you can create a demo/tutorial area with |w@batchcommand "
|
"As Account #1 you can create a demo/tutorial area with |w@batchcommand "
|
||||||
"tutorial_world.build|n.\n"
|
"tutorial_world.build|n.\n"
|
||||||
" "
|
" "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
"Bienvenue dans ton nouveau jeu basé sur |wEvennia|n ! Visitez http://www."
|
"Bienvenue dans votre nouveau jeu basé sur |wEvennia|n ! Visitez le site Web\n"
|
||||||
"evennia.com si vous avez besoin\n"
|
"http://www.evennia.com si vous avez besoin d'aide, pour contribuer au projet,\n"
|
||||||
"d'aide, si vous voulez contribuer, rapporter des problèmes ou faire partie "
|
"afin de rapporter des bugs ou faire partie de la communauté.\n"
|
||||||
"de la communauté.\n"
|
"En tant que premier personnage (#1), vous pouvez créer une zone de\n"
|
||||||
"En tant que Joueur #1 vous pouvez créer une zone de démo/tutoriel avec "
|
"démo/tutoriel en entrant la commande |w@batchcommand tutorial_world.build|n.\n"
|
||||||
"|w@batchcommand tutorial_world.build|n.\n"
|
|
||||||
" "
|
" "
|
||||||
|
|
||||||
#: server/initial_setup.py:102
|
#: .\server\initial_setup.py:92
|
||||||
msgid "This is User #1."
|
msgid "This is User #1."
|
||||||
msgstr "Utilisateur #1."
|
msgstr "C'est l'utilisateur #1."
|
||||||
|
|
||||||
#: server/initial_setup.py:111
|
#: .\server\initial_setup.py:105
|
||||||
msgid "Limbo"
|
msgid "Limbo"
|
||||||
msgstr "Limbes."
|
msgstr "Limbes"
|
||||||
|
|
||||||
#: server/sessionhandler.py:258
|
#: .\server\server.py:139
|
||||||
|
#, fuzzy
|
||||||
|
msgid "idle timeout exceeded"
|
||||||
|
msgstr "Délai d'inactivité dépassé, déconnexion."
|
||||||
|
|
||||||
|
#: .\server\sessionhandler.py:386
|
||||||
msgid " ... Server restarted."
|
msgid " ... Server restarted."
|
||||||
msgstr " ... Serveur redémarré."
|
msgstr " ... Serveur redémarré."
|
||||||
|
|
||||||
#: server/sessionhandler.py:408
|
#: .\server\sessionhandler.py:606
|
||||||
msgid "Logged in from elsewhere. Disconnecting."
|
msgid "Logged in from elsewhere. Disconnecting."
|
||||||
msgstr "Connecté d'ailleurs. Déconnexion."
|
msgstr "Connexion d'une autre session. Déconnexion de celle-ci."
|
||||||
|
|
||||||
#: server/sessionhandler.py:432
|
#: .\server\sessionhandler.py:634
|
||||||
msgid "Idle timeout exceeded, disconnecting."
|
msgid "Idle timeout exceeded, disconnecting."
|
||||||
msgstr "Délai d'inactivité dépassé, déconnexion."
|
msgstr "Délai d'inactivité dépassé, déconnexion."
|
||||||
|
|
||||||
|
#: .\server\validators.py:50
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"%s From a terminal client, you can also use a phrase of multiple words if "
|
||||||
|
"you enclose the password in double quotes."
|
||||||
|
msgstr ""
|
||||||
|
"%s Depuis votre client, vous pouvez également préciser une phrase contenant "
|
||||||
|
"plusieurs mots séparés par un espace, dès lors que cette phrase est entourée de guillemets."
|
||||||
|
|
||||||
|
#: .\utils\evmenu.py:192
|
||||||
|
#, python-brace-format
|
||||||
|
msgid ""
|
||||||
|
"Menu node '{nodename}' is either not implemented or caused an error. Make "
|
||||||
|
"another choice."
|
||||||
|
msgstr ""
|
||||||
|
"Ce choix '{nodename}' n'est pas implémenté, ou bien a créé une erreur. "
|
||||||
|
"Faies un autre choix."
|
||||||
|
|
||||||
|
#: .\utils\evmenu.py:194
|
||||||
|
#, python-brace-format
|
||||||
|
msgid "Error in menu node '{nodename}'."
|
||||||
|
msgstr "Une erreur s'est produite dans le choix '{nodename}'."
|
||||||
|
|
||||||
|
#: .\utils\evmenu.py:195
|
||||||
|
msgid "No description."
|
||||||
|
msgstr "Description non renseignée."
|
||||||
|
|
||||||
|
#: .\utils\evmenu.py:196
|
||||||
|
msgid "Commands: <menu option>, help, quit"
|
||||||
|
msgstr "Utilisez une des commandes : <menu option>, help, quit"
|
||||||
|
|
||||||
|
#: .\utils\evmenu.py:197
|
||||||
|
msgid "Commands: <menu option>, help"
|
||||||
|
msgstr "Utilisez une des commandes : <menu option>, help"
|
||||||
|
|
||||||
|
#: .\utils\evmenu.py:198
|
||||||
|
msgid "Commands: help, quit"
|
||||||
|
msgstr "Utilisez une des commandes : help, quit"
|
||||||
|
|
||||||
|
#: .\utils\evmenu.py:199
|
||||||
|
msgid "Commands: help"
|
||||||
|
msgstr "Utilisez la commande : help"
|
||||||
|
|
||||||
|
#: .\utils\evmenu.py:200
|
||||||
|
msgid "Choose an option or try 'help'."
|
||||||
|
msgstr "Choisissez une option ou entrez la commande 'help'."
|
||||||
|
|
||||||
|
#: .\utils\utils.py:1866
|
||||||
|
#, python-format
|
||||||
|
msgid "Could not find '%s'."
|
||||||
|
msgstr "Impossible de trouver '%s'."
|
||||||
|
|
||||||
|
#: .\utils\utils.py:1873
|
||||||
|
#, python-format
|
||||||
|
msgid "More than one match for '%s' (please narrow target):\n"
|
||||||
|
msgstr "Plus d'une possibilité pour '%s' (veuillez préciser) :\n"
|
||||||
|
|
|
||||||
|
|
@ -1217,7 +1217,7 @@ def evennia_version():
|
||||||
"git rev-parse --short HEAD",
|
"git rev-parse --short HEAD",
|
||||||
shell=True, cwd=EVENNIA_ROOT, stderr=STDOUT).strip()
|
shell=True, cwd=EVENNIA_ROOT, stderr=STDOUT).strip()
|
||||||
version = "%s (rev %s)" % (version, rev)
|
version = "%s (rev %s)" % (version, rev)
|
||||||
except (IOError, CalledProcessError, WindowsError):
|
except (IOError, CalledProcessError, OSError):
|
||||||
# move on if git is not answering
|
# move on if git is not answering
|
||||||
pass
|
pass
|
||||||
return version
|
return version
|
||||||
|
|
|
||||||
|
|
@ -30,32 +30,31 @@ plugin_handler.add('hotbuttons', (function () {
|
||||||
// Add Buttons
|
// Add Buttons
|
||||||
var addButtonsUI = function () {
|
var addButtonsUI = function () {
|
||||||
var buttons = $( [
|
var buttons = $( [
|
||||||
'<div id="buttons" class="split split-vertical">',
|
'<div id="buttons" class="split split-vertical">',
|
||||||
' <div id="buttonsform" class="wrapper">',
|
' <div id="buttonsform">',
|
||||||
' <div id="buttonscontrol" class="input-group">',
|
' <div id="buttonscontrol" class="input-group">',
|
||||||
' <button class="btn" id="assign_button0" type="button" value="button0">unassigned</button>',
|
' <button class="btn" id="assign_button0" type="button" value="button0">unassigned</button>',
|
||||||
' <button class="btn" id="assign_button1" type="button" value="button1">unassigned</button>',
|
' <button class="btn" id="assign_button1" type="button" value="button1">unassigned</button>',
|
||||||
' <button class="btn" id="assign_button2" type="button" value="button2">unassigned</button>',
|
' <button class="btn" id="assign_button2" type="button" value="button2">unassigned</button>',
|
||||||
' <button class="btn" id="assign_button3" type="button" value="button3">unassigned</button>',
|
' <button class="btn" id="assign_button3" type="button" value="button3">unassigned</button>',
|
||||||
' <button class="btn" id="assign_button4" type="button" value="button4">unassigned</button>',
|
' <button class="btn" id="assign_button4" type="button" value="button4">unassigned</button>',
|
||||||
' <button class="btn" id="assign_button5" type="button" value="button5">unassigned</button>',
|
' <button class="btn" id="assign_button5" type="button" value="button5">unassigned</button>',
|
||||||
' <button class="btn" id="assign_button6" type="button" value="button6">unassigned</button>',
|
' <button class="btn" id="assign_button6" type="button" value="button6">unassigned</button>',
|
||||||
' <button class="btn" id="assign_button7" type="button" value="button7">unassigned</button>',
|
' <button class="btn" id="assign_button7" type="button" value="button7">unassigned</button>',
|
||||||
' <button class="btn" id="assign_button8" type="button" value="button8">unassigned</button>',
|
' <button class="btn" id="assign_button8" type="button" value="button8">unassigned</button>',
|
||||||
' </div>',
|
' </div>',
|
||||||
' </div>',
|
' </div>',
|
||||||
'</div>',
|
'</div>',
|
||||||
].join("\n") );
|
].join("\n") );
|
||||||
|
|
||||||
// Add buttons in front of the existing #inputform
|
// Add buttons in front of the existing #inputform
|
||||||
buttons.insertBefore('#inputform');
|
$('#input').prev().replaceWith(buttons);
|
||||||
$('#inputform').addClass('split split-vertical');
|
|
||||||
|
|
||||||
Split(['#buttons','#inputform'], {
|
Split(['#main','#buttons','#input'], {
|
||||||
|
sizes: [85,5,10],
|
||||||
direction: 'vertical',
|
direction: 'vertical',
|
||||||
sizes: [50,50],
|
|
||||||
gutterSize: 4,
|
gutterSize: 4,
|
||||||
minSize: 150,
|
minSize: [150,20,50],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -77,10 +77,12 @@ let options_plugin = (function () {
|
||||||
if (code === 27) { // Escape key
|
if (code === 27) { // Escape key
|
||||||
if ($('#helpdialog').is(':visible')) {
|
if ($('#helpdialog').is(':visible')) {
|
||||||
plugins['popups'].closePopup("#helpdialog");
|
plugins['popups'].closePopup("#helpdialog");
|
||||||
} else {
|
return true;
|
||||||
plugins['popups'].closePopup("#optionsdialog");
|
}
|
||||||
|
if ($('#optionsdialog').is(':visible')) {
|
||||||
|
plugins['popups'].closePopup("#optionsdialog");
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -129,6 +131,21 @@ let options_plugin = (function () {
|
||||||
plugins['popups'].closePopup("#helpdialog");
|
plugins['popups'].closePopup("#helpdialog");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Make sure to close any dialogs on connection lost
|
||||||
|
var onText = function (args, kwargs) {
|
||||||
|
// is helppopup set? and if so, does this Text have type 'help'?
|
||||||
|
if ('helppopup' in options && options['helppopup'] ) {
|
||||||
|
if (kwargs && ('type' in kwargs) && (kwargs['type'] == 'help') ) {
|
||||||
|
$('#helpdialogcontent').append('<div>'+ args + '</div>');
|
||||||
|
plugins['popups'].togglePopup("#helpdialog");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Register and init plugin
|
// Register and init plugin
|
||||||
var init = function () {
|
var init = function () {
|
||||||
|
|
@ -155,6 +172,7 @@ let options_plugin = (function () {
|
||||||
onGotOptions: onGotOptions,
|
onGotOptions: onGotOptions,
|
||||||
onPrompt: onPrompt,
|
onPrompt: onPrompt,
|
||||||
onConnectionClose: onConnectionClose,
|
onConnectionClose: onConnectionClose,
|
||||||
|
onText: onText,
|
||||||
}
|
}
|
||||||
})()
|
})()
|
||||||
plugin_handler.add('options', options_plugin);
|
plugin_handler.add('options', options_plugin);
|
||||||
|
|
|
||||||
|
|
@ -183,12 +183,12 @@ let splithandler_plugin = (function () {
|
||||||
var dialog = $("#splitdialogcontent");
|
var dialog = $("#splitdialogcontent");
|
||||||
dialog.empty();
|
dialog.empty();
|
||||||
|
|
||||||
var selection = '<select name="pane">';
|
var selection = '<select name="pane">';
|
||||||
for ( var pane in split_panes ) {
|
for ( var pane in split_panes ) {
|
||||||
selection = selection + '<option value="' + pane + '">' + pane + '</option>';
|
selection = selection + '<option value="' + pane + '">' + pane + '</option>';
|
||||||
}
|
}
|
||||||
selection = "Pane to split: " + selection + "</select> ";
|
selection = "Pane to split: " + selection + "</select> ";
|
||||||
dialog.append(selection);
|
dialog.append(selection);
|
||||||
|
|
||||||
dialog.append('<input type="radio" name="direction" value="vertical" checked>top/bottom </>');
|
dialog.append('<input type="radio" name="direction" value="vertical" checked>top/bottom </>');
|
||||||
dialog.append('<input type="radio" name="direction" value="horizontal">side-by-side <hr />');
|
dialog.append('<input type="radio" name="direction" value="horizontal">side-by-side <hr />');
|
||||||
|
|
@ -203,7 +203,7 @@ let splithandler_plugin = (function () {
|
||||||
dialog.append('<input type="radio" name="flow2" value="replace">replace </>');
|
dialog.append('<input type="radio" name="flow2" value="replace">replace </>');
|
||||||
dialog.append('<input type="radio" name="flow2" value="append">append <hr />');
|
dialog.append('<input type="radio" name="flow2" value="append">append <hr />');
|
||||||
|
|
||||||
dialog.append('<div id="splitclose" class="btn btn-large btn-outline-primary float-right">Split</div>');
|
dialog.append('<div id="splitclose" class="btn btn-large btn-outline-primary float-right">Split</div>');
|
||||||
|
|
||||||
$("#splitclose").bind("click", onSplitDialogClose);
|
$("#splitclose").bind("click", onSplitDialogClose);
|
||||||
|
|
||||||
|
|
@ -251,21 +251,21 @@ let splithandler_plugin = (function () {
|
||||||
var dialog = $("#panedialogcontent");
|
var dialog = $("#panedialogcontent");
|
||||||
dialog.empty();
|
dialog.empty();
|
||||||
|
|
||||||
var selection = '<select name="assign-pane">';
|
var selection = '<select name="assign-pane">';
|
||||||
for ( var pane in split_panes ) {
|
for ( var pane in split_panes ) {
|
||||||
selection = selection + '<option value="' + pane + '">' + pane + '</option>';
|
selection = selection + '<option value="' + pane + '">' + pane + '</option>';
|
||||||
}
|
}
|
||||||
selection = "Assign to pane: " + selection + "</select> <hr />";
|
selection = "Assign to pane: " + selection + "</select> <hr />";
|
||||||
dialog.append(selection);
|
dialog.append(selection);
|
||||||
|
|
||||||
var multiple = '<select multiple name="assign-type">';
|
var multiple = '<select multiple name="assign-type">';
|
||||||
for ( var type in known_types ) {
|
for ( var type in known_types ) {
|
||||||
multiple = multiple + '<option value="' + known_types[type] + '">' + known_types[type] + '</option>';
|
multiple = multiple + '<option value="' + known_types[type] + '">' + known_types[type] + '</option>';
|
||||||
}
|
}
|
||||||
multiple = "Content types: " + multiple + "</select> <hr />";
|
multiple = "Content types: " + multiple + "</select> <hr />";
|
||||||
dialog.append(multiple);
|
dialog.append(multiple);
|
||||||
|
|
||||||
dialog.append('<div id="paneclose" class="btn btn-large btn-outline-primary float-right">Assign</div>');
|
dialog.append('<div id="paneclose" class="btn btn-large btn-outline-primary float-right">Assign</div>');
|
||||||
|
|
||||||
$("#paneclose").bind("click", onPaneControlDialogClose);
|
$("#paneclose").bind("click", onPaneControlDialogClose);
|
||||||
|
|
||||||
|
|
@ -276,9 +276,9 @@ let splithandler_plugin = (function () {
|
||||||
// Close "Pane Controls" dialog
|
// Close "Pane Controls" dialog
|
||||||
var onPaneControlDialogClose = function () {
|
var onPaneControlDialogClose = function () {
|
||||||
var pane = $("select[name=assign-pane]").val();
|
var pane = $("select[name=assign-pane]").val();
|
||||||
var types = $("select[name=assign-type]").val();
|
var types = $("select[name=assign-type]").val();
|
||||||
|
|
||||||
// var types = new Array;
|
// var types = new Array;
|
||||||
// $('#splitdialogcontent input[type=checkbox]:checked').each(function() {
|
// $('#splitdialogcontent input[type=checkbox]:checked').each(function() {
|
||||||
// types.push( $(this).attr('value') );
|
// types.push( $(this).attr('value') );
|
||||||
// });
|
// });
|
||||||
|
|
@ -287,24 +287,24 @@ let splithandler_plugin = (function () {
|
||||||
|
|
||||||
plugins['popups'].closePopup("#panedialog");
|
plugins['popups'].closePopup("#panedialog");
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// helper function sending text to a pane
|
// helper function sending text to a pane
|
||||||
var txtToPane = function (panekey, txt) {
|
var txtToPane = function (panekey, txt) {
|
||||||
var pane = split_panes[panekey];
|
var pane = split_panes[panekey];
|
||||||
var text_div = $('#' + panekey + '-sub');
|
var text_div = $('#' + panekey + '-sub');
|
||||||
|
|
||||||
if ( pane['update_method'] == 'replace' ) {
|
|
||||||
text_div.html(txt)
|
|
||||||
} else if ( pane['update_method'] == 'append' ) {
|
|
||||||
text_div.append(txt);
|
|
||||||
var scrollHeight = text_div.parent().prop("scrollHeight");
|
|
||||||
text_div.parent().animate({ scrollTop: scrollHeight }, 0);
|
|
||||||
} else { // line feed
|
|
||||||
text_div.append("<div class='out'>" + txt + "</div>");
|
|
||||||
var scrollHeight = text_div.parent().prop("scrollHeight");
|
|
||||||
text_div.parent().animate({ scrollTop: scrollHeight }, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if ( pane['update_method'] == 'replace' ) {
|
||||||
|
text_div.html(txt)
|
||||||
|
} else if ( pane['update_method'] == 'append' ) {
|
||||||
|
text_div.append(txt);
|
||||||
|
var scrollHeight = text_div.parent().prop("scrollHeight");
|
||||||
|
text_div.parent().animate({ scrollTop: scrollHeight }, 0);
|
||||||
|
} else { // line feed
|
||||||
|
text_div.append("<div class='out'>" + txt + "</div>");
|
||||||
|
var scrollHeight = text_div.parent().prop("scrollHeight");
|
||||||
|
text_div.parent().animate({ scrollTop: scrollHeight }, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -316,53 +316,76 @@ let splithandler_plugin = (function () {
|
||||||
//
|
//
|
||||||
// Accept plugin onText events
|
// Accept plugin onText events
|
||||||
var onText = function (args, kwargs) {
|
var onText = function (args, kwargs) {
|
||||||
|
// If the message is not itself tagged, we'll assume it
|
||||||
// If the message is not itself tagged, we'll assume it
|
// should go into any panes with 'all' or 'rest' set
|
||||||
// should go into any panes with 'all' or 'rest' set
|
|
||||||
var msgtype = "rest";
|
var msgtype = "rest";
|
||||||
|
|
||||||
if ( kwargs && 'type' in kwargs ) {
|
if ( kwargs && 'type' in kwargs ) {
|
||||||
msgtype = kwargs['type'];
|
msgtype = kwargs['type'];
|
||||||
if ( ! known_types.includes(msgtype) ) {
|
if ( ! known_types.includes(msgtype) ) {
|
||||||
// this is a new output type that can be mapped to panes
|
// this is a new output type that can be mapped to panes
|
||||||
console.log('detected new output type: ' + msgtype)
|
console.log('detected new output type: ' + msgtype)
|
||||||
known_types.push(msgtype);
|
known_types.push(msgtype);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var target_panes = [];
|
var target_panes = [];
|
||||||
var rest_panes = [];
|
var rest_panes = [];
|
||||||
|
|
||||||
|
for (var key in split_panes) {
|
||||||
|
var pane = split_panes[key];
|
||||||
|
// is this message type mapped to this pane (or does the pane has an 'all' type)?
|
||||||
|
if (pane['types'].length > 0) {
|
||||||
|
if (pane['types'].includes(msgtype) || pane['types'].includes('all')) {
|
||||||
|
target_panes.push(key);
|
||||||
|
} else if (pane['types'].includes('rest')) {
|
||||||
|
// store rest-panes in case we have no explicit to send to
|
||||||
|
rest_panes.push(key);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// unassigned panes are assumed to be rest-panes too
|
||||||
|
rest_panes.push(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var ntargets = target_panes.length;
|
||||||
|
var nrests = rest_panes.length;
|
||||||
|
if (ntargets > 0) {
|
||||||
|
// we have explicit target panes to send to
|
||||||
|
for (var i=0; i<ntargets; i++) {
|
||||||
|
txtToPane(target_panes[i], args[0]);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else if (nrests > 0) {
|
||||||
|
// no targets, send remainder to rest-panes/unassigned
|
||||||
|
for (var i=0; i<nrests; i++) {
|
||||||
|
txtToPane(rest_panes[i], args[0]);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// unhandled message
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// onKeydown check for 'ESC' key.
|
||||||
|
var onKeydown = function (event) {
|
||||||
|
var code = event.which;
|
||||||
|
|
||||||
|
if (code === 27) { // Escape key
|
||||||
|
if ($('#splitdialog').is(':visible')) {
|
||||||
|
plugins['popups'].closePopup("#splitdialog");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ($('#panedialog').is(':visible')) {
|
||||||
|
plugins['popups'].closePopup("#panedialog");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// capture all keys while one of our "modal" dialogs is open
|
||||||
|
if ($('#splitdialogcontent').is(':visible') || $('#panedialogcontent').is(':visible')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
for (var key in split_panes) {
|
|
||||||
var pane = split_panes[key];
|
|
||||||
// is this message type mapped to this pane (or does the pane has an 'all' type)?
|
|
||||||
if (pane['types'].length > 0) {
|
|
||||||
if (pane['types'].includes(msgtype) || pane['types'].includes('all')) {
|
|
||||||
target_panes.push(key);
|
|
||||||
} else if (pane['types'].includes('rest')) {
|
|
||||||
// store rest-panes in case we have no explicit to send to
|
|
||||||
rest_panes.push(key);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// unassigned panes are assumed to be rest-panes too
|
|
||||||
rest_panes.push(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var ntargets = target_panes.length;
|
|
||||||
var nrests = rest_panes.length;
|
|
||||||
if (ntargets > 0) {
|
|
||||||
// we have explicit target panes to send to
|
|
||||||
for (var i=0; i<ntargets; i++) {
|
|
||||||
txtToPane(target_panes[i], args[0]);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
} else if (nrests > 0) {
|
|
||||||
// no targets, send remainder to rest-panes/unassigned
|
|
||||||
for (var i=0; i<nrests; i++) {
|
|
||||||
txtToPane(rest_panes[i], args[0]);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// unhandled message
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -409,6 +432,7 @@ let splithandler_plugin = (function () {
|
||||||
dynamic_split: dynamic_split,
|
dynamic_split: dynamic_split,
|
||||||
undo_split: undo_split,
|
undo_split: undo_split,
|
||||||
set_pane_types: set_pane_types,
|
set_pane_types: set_pane_types,
|
||||||
|
onKeydown: onKeydown,
|
||||||
}
|
}
|
||||||
})()
|
})()
|
||||||
plugin_handler.add('splithandler', splithandler_plugin);
|
plugin_handler.add('splithandler', splithandler_plugin);
|
||||||
|
|
|
||||||
|
|
@ -73,10 +73,10 @@ JQuery available.
|
||||||
<script src={% static "webclient/js/plugins/popups.js" %} language="javascript" type="text/javascript"></script>
|
<script src={% static "webclient/js/plugins/popups.js" %} language="javascript" type="text/javascript"></script>
|
||||||
<script src={% static "webclient/js/plugins/options.js" %} language="javascript" type="text/javascript"></script>
|
<script src={% static "webclient/js/plugins/options.js" %} language="javascript" type="text/javascript"></script>
|
||||||
<script src={% static "webclient/js/plugins/history.js" %} language="javascript" type="text/javascript"></script>
|
<script src={% static "webclient/js/plugins/history.js" %} language="javascript" type="text/javascript"></script>
|
||||||
|
<script src={% static "webclient/js/plugins/splithandler.js" %} language="javascript" type="text/javascript"></script>
|
||||||
<script src={% static "webclient/js/plugins/default_in.js" %} language="javascript" type="text/javascript"></script>
|
<script src={% static "webclient/js/plugins/default_in.js" %} language="javascript" type="text/javascript"></script>
|
||||||
<script src={% static "webclient/js/plugins/oob.js" %} language="javascript" type="text/javascript"></script>
|
<script src={% static "webclient/js/plugins/oob.js" %} language="javascript" type="text/javascript"></script>
|
||||||
<script src={% static "webclient/js/plugins/notifications.js" %} language="javascript" type="text/javascript"></script>
|
<script src={% static "webclient/js/plugins/notifications.js" %} language="javascript" type="text/javascript"></script>
|
||||||
<script src={% static "webclient/js/plugins/splithandler.js" %} language="javascript" type="text/javascript"></script>
|
|
||||||
<script src={% static "webclient/js/plugins/default_out.js" %} language="javascript" type="text/javascript"></script>
|
<script src={% static "webclient/js/plugins/default_out.js" %} language="javascript" type="text/javascript"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue