././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6972506 ReText-8.0.2/0000755000175000017500000000000014575355105012410 5ustar00dmitrydmitry././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/LICENSE_GPL0000644000175000017500000004325414575336012014123 0ustar00dmitrydmitry GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/MANIFEST.in0000644000175000017500000000036214575336012014143 0ustar00dmitrydmitryinclude LICENSE_GPL include README.md include changelog.md include configuration.md include data/retext-kde5.png recursive-include tests *.py *.md *.rst recursive-include ReText/locale retext_*.ts retext_*.qm recursive-include ReText/icons * ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6972506 ReText-8.0.2/PKG-INFO0000644000175000017500000000275614575355105013517 0ustar00dmitrydmitryMetadata-Version: 2.1 Name: ReText Version: 8.0.2 Summary: Simple editor for Markdown and reStructuredText Home-page: https://github.com/retext-project/retext Author: Dmitry Shachnev Author-email: mitya57@gmail.com License: GPL 2+ Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: X11 Applications :: Qt Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) Classifier: Programming Language :: Python :: 3 :: Only Classifier: Topic :: Text Editors Classifier: Topic :: Text Processing :: Markup Requires: docutils Requires: Markdown Requires: Markups(>=2.0) Requires: pyenchant Requires: Pygments Requires: PyQt6 Requires-Python: >=3.6 License-File: LICENSE_GPL Requires-Dist: docutils Requires-Dist: Markdown>=3.0 Requires-Dist: Markups>=2.0 Requires-Dist: Pygments Requires-Dist: PyQt6 Provides-Extra: spellcheck Requires-Dist: pyenchant; extra == "spellcheck" Provides-Extra: encoding-detection Requires-Dist: chardet; extra == "encoding-detection" Provides-Extra: webengine Requires-Dist: PyQt6-WebEngine; extra == "webengine" ReText is simple text editor that supports Markdown and reStructuredText markup languages. It is written in Python using PyQt libraries. It supports live preview, tabs, math formulas, export to various formats including PDF and HTML. For more details, please go to the `home page`_ or to the `wiki`_. .. _`home page`: https://github.com/retext-project/retext .. _`wiki`: https://github.com/retext-project/retext/wiki ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710609411.0 ReText-8.0.2/README.md0000644000175000017500000000465414575352003013672 0ustar00dmitrydmitryWelcome to ReText! ================== [![GitHub Actions status][GitHub Actions SVG]][GitHub Actions] ReText is a simple but powerful editor for Markdown and reStructuredText markup languages. One can also add support for [custom markups] using Python modules. ![ReText on Plasma 5 desktop](data/retext-kde5.png) To install ReText, make sure that you have [Python] (3.6 or later) installed, and run `pip3 install ReText`. By default it installs system wide, pass `--user` for installing into the user’s home directory. You can also manually download the tarball from [PyPI]. ReText requires the following Python modules to run (`pip` will install them automatically): * [PyQt6](https://pypi.org/project/PyQt6/) * [Markups](https://pypi.org/project/Markups/) (2.0 or later) * [Markdown](https://pypi.org/project/Markdown/) — for Markdown support * [docutils](https://pypi.org/project/docutils/) — for reStructuredText support We also recommend having these packages installed: * [pyenchant](https://pypi.org/project/pyenchant/) — for spell checking support * [chardet](https://pypi.org/project/chardet/) — for encoding detection support * [PyQt6-WebEngine](https://pypi.org/project/PyQt6-WebEngine/) — a more powerful preview engine with JavaScript support Translation files are already compiled for release tarballs and will be automatically loaded. For development snapshots, compile translations using `lrelease ReText/locale/*.ts` command (on Debian-based systems, use `/usr/lib/qt6/bin/lrelease` from `qt6-l10n-tools` package). Translation files can also be loaded from `/usr/share/retext/` directory. You can translate ReText into your language on [Transifex]. ReText is Copyright 2011–2024 [Dmitry Shachnev](https://mitya57.me), 2011–2023 [Maurice van der Pot](mailto:griffon26@kfk4ever.com), and is licensed under GNU GPL (v2+) license, the current version is available in `LICENSE_GPL` file. ReText icon is based on `accessories-text-editor` icon from the Faenza theme. You can read more about ReText in the [wiki]. [wiki]: https://github.com/retext-project/retext/wiki [PyPI]: https://pypi.org/project/ReText/ [Transifex]: https://www.transifex.com/mitya57/ReText/ [GitHub Actions]: https://github.com/retext-project/retext/actions [GitHub Actions SVG]: https://github.com/retext-project/retext/workflows/tests/badge.svg [custom markups]: https://pymarkups.readthedocs.io/en/latest/custom_markups.html [Python]: https://www.python.org/ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6852503 ReText-8.0.2/ReText/0000755000175000017500000000000014575355105013623 5ustar00dmitrydmitry././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710610999.0 ReText-8.0.2/ReText/__init__.py0000644000175000017500000001031214575355067015740 0ustar00dmitrydmitry# vim: ts=8:sts=8:sw=8:noexpandtab # This file is part of ReText # Copyright: 2012-2022 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import markups import markups.common from os.path import abspath, dirname, join, expanduser from PyQt6.QtCore import QByteArray, QLocale, QSettings from PyQt6.QtGui import QFont, QFontDatabase app_version = "8.0.2" settings = QSettings('ReText project', 'ReText') if not str(settings.fileName()).endswith('.conf'): # We are on Windows probably settings = QSettings(QSettings.Format.IniFormat, QSettings.Scope.UserScope, 'ReText project', 'ReText') packageDir = abspath(dirname(__file__)) def getBundledIcon(iconName): return join(packageDir, 'icons', iconName + '.png') configOptions = { 'appStyleSheet': '', 'autoSave': False, 'defaultCodec': '', 'defaultMarkup': markups.MarkdownMarkup.name, 'defaultPreviewState': 'editor', 'detectEncoding': True, 'directoryPath': expanduser("~"), 'documentStatsEnabled': False, 'editorFont': '', 'font': '', 'handleWebLinks': False, 'hideToolBar': False, 'highlightCurrentLine': 'disabled', 'iconTheme': '', 'lastTabIndex': 0, 'lineNumbersEnabled': False, 'markdownDefaultFileExtension': '.mkd', 'openFilesInExistingWindow': True, 'openLastFilesOnStartup': False, 'orderedListMode': 'increment', 'paperSize': '', 'pygmentsStyle': 'default', 'recentDocumentsCount': 10, 'relativeLineNumbers': False, 'restDefaultFileExtension': '.rst', 'rightMargin': 0, 'rightMarginWrap': False, 'saveWindowGeometry': False, 'showDirectoryTree': False, 'spellCheck': False, 'spellCheckLocale': '', 'styleSheet': '', 'syncScroll': True, 'tabBarAutoHide': False, 'tabInsertsSpaces': True, 'tabWidth': 4, 'uiLanguage': QLocale.system().name(), 'useFakeVim': False, 'useWebEngine': False, 'wideCursor': False, 'windowGeometry': QByteArray(), 'windowTitleFullPath': False, } def readFromSettings(key, keytype, settings=settings, default=None): if not settings.contains(key): return default try: value = settings.value(key, type=keytype) if isinstance(value, keytype): return value return keytype(value) except TypeError as error: # Type mismatch print('Warning: '+str(error)) # Return an instance of keytype return default if (default is not None) else keytype() def readListFromSettings(key, settings=settings): if not settings.contains(key): return [] value = settings.value(key) if isinstance(value, str): return [value] else: return value def writeToSettings(key, value, default, settings=settings): if value == default: settings.remove(key) else: settings.setValue(key, value) def writeListToSettings(key, value, settings=settings): if len(value) > 1: settings.setValue(key, value) elif len(value) == 1: settings.setValue(key, value[0]) else: settings.remove(key) def getSettingsFilePath(settings=settings): return settings.fileName() class ReTextSettings: def __init__(self): for option in configOptions: value = configOptions[option] object.__setattr__(self, option, readFromSettings( option, type(value), default=value)) def __setattr__(self, option, value): if not option in configOptions: raise AttributeError('Unknown attribute') object.__setattr__(self, option, value) writeToSettings(option, value, configOptions[option]) def getPreviewFont(self): font = QFont() if self.font: font.fromString(self.font) return font def getEditorFont(self): font = QFontDatabase.systemFont(QFontDatabase.SystemFont.FixedFont) if self.editorFont: font.fromString(self.editorFont) return font globalSettings = ReTextSettings() markups.common.PYGMENTS_STYLE = globalSettings.pygmentsStyle ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710610999.0 ReText-8.0.2/ReText/__main__.py0000755000175000017500000001226314575355067015733 0ustar00dmitrydmitry#!/usr/bin/env python3 # vim: ts=8:sts=8:sw=8:noexpandtab # ReText # Copyright 2011-2023 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import ctypes import multiprocessing import sys import signal import markups from os import devnull from os.path import join from ReText import packageDir, settings, globalSettings, app_version from ReText.window import ReTextWindow from PyQt6.QtCore import QCommandLineOption, QCommandLineParser, QFile, \ QFileInfo, QIODevice, QLibraryInfo, QTextStream, QTranslator, Qt from PyQt6.QtWidgets import QApplication from PyQt6.QtNetwork import QNetworkProxyFactory from PyQt6.QtDBus import QDBusConnection, QDBusInterface def canonicalize(option): if option == '-': return option return QFileInfo(option).canonicalFilePath() def main(): multiprocessing.set_start_method('spawn') if markups.__version_tuple__ < (2, ): sys.exit('Error: ReText needs PyMarkups 2.0 or newer to run.') # If we're running on Windows without a console, then discard stdout # and save stderr to a file to facilitate debugging in case of crashes. if sys.executable.endswith('pythonw.exe'): sys.stdout = open(devnull, 'w') sys.stderr = open('stderr.log', 'w') try: # See https://github.com/retext-project/retext/issues/399 # and https://launchpad.net/bugs/941826 ctypes.CDLL('libGL.so.1', ctypes.RTLD_GLOBAL) except OSError: pass # Needed for Qt WebEngine on Windows QApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts) app = QApplication(sys.argv) app.setOrganizationName("ReText project") app.setApplicationName("ReText") app.setApplicationDisplayName("ReText") app.setApplicationVersion(app_version) app.setOrganizationDomain('mitya57.me') app.setDesktopFileName('me.mitya57.ReText') QNetworkProxyFactory.setUseSystemConfiguration(True) RtTranslator = QTranslator() RtTranslator.load('retext_' + globalSettings.uiLanguage, join(packageDir, 'locale')) QtTranslator = QTranslator() translationsPath = QLibraryInfo.path(QLibraryInfo.LibraryPath.TranslationsPath) QtTranslator.load("qtbase_" + globalSettings.uiLanguage, translationsPath) app.installTranslator(RtTranslator) app.installTranslator(QtTranslator) parser = QCommandLineParser() parser.addHelpOption() parser.addVersionOption() previewOption = QCommandLineOption('preview', QApplication.translate('main', 'Open the files in preview mode')) newWindowOption = QCommandLineOption('new-window', QApplication.translate('main', 'Create a new window even if there is an existing one')) parser.addOption(previewOption) parser.addOption(newWindowOption) parser.addPositionalArgument('files', QApplication.translate('main', 'List of files to open'), '[files...]') parser.process(app) filesToOpen = parser.positionalArguments() print('Using configuration file:', settings.fileName()) if globalSettings.appStyleSheet: sheetfile = QFile(globalSettings.appStyleSheet) sheetfile.open(QIODevice.OpenModeFlag.ReadOnly) app.setStyleSheet(QTextStream(sheetfile).readAll()) sheetfile.close() window = ReTextWindow() # ReText can change directory when loading files, so we # need to have a list of canonical names before loading fileNames = list(map(canonicalize, filesToOpen)) openInExistingWindow = (globalSettings.openFilesInExistingWindow and not parser.isSet(newWindowOption)) connection = QDBusConnection.sessionBus() if connection.isConnected() and openInExistingWindow: connection.registerObject('/', window, QDBusConnection.RegisterOption.ExportAllSlots) serviceName = 'me.mitya57.ReText' if not connection.registerService(serviceName) and fileNames: print('Opening the file(s) in the existing window of ReText.') iface = QDBusInterface(serviceName, '/', '', connection) for fileName in fileNames: iface.call('openFileWrapper', fileName) qWidgetIface = QDBusInterface(serviceName, '/', 'org.qtproject.Qt.QWidget', connection) qWidgetIface.call('raise') sys.exit(0) window.show() readStdIn = False if globalSettings.openLastFilesOnStartup: window.restoreLastOpenedFiles() for fileName in fileNames: if QFile.exists(fileName): window.openFileWrapper(fileName) if parser.isSet(previewOption): window.actionPreview.setChecked(True) window.preview(True) elif fileName == '-': readStdIn = True inputData = '' if readStdIn and sys.stdin is not None: if sys.stdin.isatty(): print('Reading stdin, press ^D to end...') inputData = sys.stdin.read() if inputData or not window.tabWidget.count(): window.createNew(inputData) signal.signal(signal.SIGINT, lambda sig, frame: window.close()) sys.exit(app.exec()) if __name__ == '__main__': main() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/config.py0000644000175000017500000002563114575336012015445 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2013-2022 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import sys from ReText import globalSettings, getBundledIcon, getSettingsFilePath from ReText.icontheme import get_icon_theme from markups.common import CONFIGURATION_DIR from os.path import join from PyQt6.QtCore import pyqtSignal, QFile, QFileInfo, QUrl, Qt from PyQt6.QtGui import QDesktopServices, QIcon from PyQt6.QtWidgets import QCheckBox, QDialog, QDialogButtonBox, \ QFileDialog, QGridLayout, QLabel, QLineEdit, QPushButton, QSpinBox, \ QComboBox, QTabWidget, QVBoxLayout, QWidget MKD_EXTS_FILE = join(CONFIGURATION_DIR, 'markdown-extensions.txt') class FileDialogButton(QPushButton): def __init__(self, parent, fileName): QPushButton.__init__(self, parent) self.fileName = fileName self.defaultText = self.tr('(none)') self.updateButtonText() self.clicked.connect(self.processClick) def processClick(self): pass def updateButtonText(self): if self.fileName: self.setText(QFileInfo(self.fileName).fileName()) else: self.setText(self.defaultText) class FileSelectButton(FileDialogButton): def processClick(self): startDir = (QFileInfo(self.fileName).absolutePath() if self.fileName else '') self.fileName = QFileDialog.getOpenFileName( self, self.tr('Select file to open'), startDir)[0] self.updateButtonText() class DirectorySelectButton(FileDialogButton): def processClick(self): startDir = (QFileInfo(self.fileName).absolutePath() if self.fileName else '') self.fileName = QFileDialog.getExistingDirectory( self, self.tr('Select directory to open'), startDir) self.updateButtonText() class ClickableLabel(QLabel): clicked = pyqtSignal() def mousePressEvent(self, event): self.clicked.emit() super().mousePressEvent(event) def setIconThemeFromSettings(): QIcon.setThemeName(globalSettings.iconTheme) if QIcon.themeName() in ('hicolor', ''): if not QFile.exists(getBundledIcon('document-new')): QIcon.setThemeName(get_icon_theme()) class ConfigDialog(QDialog): def __init__(self, parent): QDialog.__init__(self, parent) self.parent = parent self.initConfigOptions() self.layout = QVBoxLayout(self) path = getSettingsFilePath() pathLabel = QLabel(self.tr('Using configuration file at:') + ' %(path)s' % {'path': path}, self) pathLabel.linkActivated.connect(self.openLink) self.layout.addWidget(pathLabel) self.tabWidget = QTabWidget(self) self.layout.addWidget(self.tabWidget) buttonBox = QDialogButtonBox(self) buttonBox.setStandardButtons(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Apply | QDialogButtonBox.StandardButton.Cancel) buttonBox.accepted.connect(self.acceptSettings) buttonBox.button(QDialogButtonBox.StandardButton.Apply).clicked.connect(self.saveSettings) buttonBox.rejected.connect(self.close) self.initWidgets() self.configurators['rightMargin'].valueChanged.connect(self.handleRightMarginSet) self.configurators['rightMarginWrap'].stateChanged.connect(self.handleRightMarginWrapSet) self.layout.addWidget(buttonBox) def initConfigOptions(self): self.tabs = ( (self.tr('Behavior'), ( (self.tr('Automatically save documents'), 'autoSave'), (self.tr('Automatically open last documents on startup'), 'openLastFilesOnStartup'), (self.tr('Number of recent documents'), 'recentDocumentsCount'), (self.tr('Restore window geometry'), 'saveWindowGeometry'), (self.tr('Default preview state'), 'defaultPreviewState'), (self.tr('Open external links in ReText window'), 'handleWebLinks'), (self.tr('Markdown syntax extensions (comma-separated)'), 'markdownExtensions'), (None, 'markdownExtensions'), (self.tr('Enable synchronized scrolling for Markdown'), 'syncScroll'), # (self.tr('Default Markdown file extension'), 'markdownDefaultFileExtension'), # (self.tr('Default reStructuredText file extension'), 'restDefaultFileExtension'), )), (self.tr('Editor'), ( (self.tr('Highlight current line'), 'highlightCurrentLine'), (self.tr('Show line numbers'), 'lineNumbersEnabled'), (self.tr('Line numbers are relative to current line'), 'relativeLineNumbers'), (self.tr('Tab key inserts spaces'), 'tabInsertsSpaces'), (self.tr('Tabulation width'), 'tabWidth'), (self.tr('Draw vertical line at column'), 'rightMargin'), (self.tr('Enable soft wrap'), 'rightMarginWrap'), (self.tr('Show document stats'), 'documentStatsEnabled'), (self.tr('Ordered list mode'), 'orderedListMode'), )), (self.tr('Interface'), ( (self.tr('Hide toolbar'), 'hideToolBar'), (self.tr('Icon theme name'), 'iconTheme'), (self.tr('Stylesheet file'), 'styleSheet', True), (self.tr('Hide tabs bar when there is only one tab'), 'tabBarAutoHide'), (self.tr('Show full path in window title'), 'windowTitleFullPath'), (self.tr('Show directory tree'), 'showDirectoryTree', False), (self.tr('Working directory'), 'directoryPath', True), )) ) def initWidgets(self): self.configurators = {} for tabTitle, options in self.tabs: page = self.getPageWidget(options) self.tabWidget.addTab(page, tabTitle) def getPageWidget(self, options): page = QWidget(self) layout = QGridLayout(page) for index, option in enumerate(options): displayname, name = option[:2] fileselector = option[2] if len(option) > 2 else False if name is None: header = QLabel('

%s

' % displayname, self) layout.addWidget(header, index, 0, 1, 2, Qt.AlignmentFlag.AlignHCenter) continue if displayname: label = ClickableLabel(displayname + ':', self) if name == 'markdownExtensions': if displayname: url = QUrl('https://github.com/retext-project/retext/wiki/Markdown-extensions') helpButton = QPushButton(self.tr('Help'), self) helpButton.clicked.connect(lambda: QDesktopServices.openUrl(url)) layout.addWidget(label, index, 0) layout.addWidget(helpButton, index, 1) continue try: extsFile = open(MKD_EXTS_FILE) value = extsFile.read().rstrip().replace(extsFile.newlines, ', ') extsFile.close() except Exception: value = '' self.configurators[name] = QLineEdit(self) self.configurators[name].setText(value) layout.addWidget(self.configurators[name], index, 0, 1, 2) continue value = getattr(globalSettings, name) if name == 'defaultPreviewState': self.configurators[name] = QComboBox(self) self.configurators[name].addItem(self.tr('Editor'), 'editor') self.configurators[name].addItem(self.tr('Live preview'), 'live-preview') self.configurators[name].addItem(self.tr('Normal preview'), 'normal-preview') comboBoxIndex = self.configurators[name].findData(value) self.configurators[name].setCurrentIndex(comboBoxIndex) elif name == 'highlightCurrentLine': self.configurators[name] = QComboBox(self) self.configurators[name].addItem(self.tr('Disabled'), 'disabled') self.configurators[name].addItem(self.tr('Cursor Line'), 'cursor-line') self.configurators[name].addItem(self.tr('Wrapped Line'), 'wrapped-line') comboBoxIndex = self.configurators[name].findData(value) self.configurators[name].setCurrentIndex(comboBoxIndex) elif name == 'orderedListMode': self.configurators[name] = QComboBox(self) self.configurators[name].addItem(self.tr('Increment'), 'increment') self.configurators[name].addItem(self.tr('Repeat'), 'repeat') comboBoxIndex = self.configurators[name].findData(value) self.configurators[name].setCurrentIndex(comboBoxIndex) elif name == 'directoryPath': self.configurators[name] = DirectorySelectButton(self, value) elif isinstance(value, bool): self.configurators[name] = QCheckBox(self) self.configurators[name].setChecked(value) label.clicked.connect(self.configurators[name].nextCheckState) elif isinstance(value, int): self.configurators[name] = QSpinBox(self) if name == 'tabWidth': self.configurators[name].setRange(1, 10) elif name == 'recentDocumentsCount': self.configurators[name].setRange(5, 20) else: self.configurators[name].setMaximum(200) self.configurators[name].setValue(value) elif isinstance(value, str) and fileselector: self.configurators[name] = FileSelectButton(self, value) elif isinstance(value, str): self.configurators[name] = QLineEdit(self) self.configurators[name].setText(value) layout.addWidget(label, index, 0) layout.addWidget(self.configurators[name], index, 1, Qt.AlignmentFlag.AlignRight) return page def handleRightMarginSet(self, value): if value < 10: self.configurators['rightMarginWrap'].setChecked(False) def handleRightMarginWrapSet(self, state): if state == Qt.CheckState.Checked and self.configurators['rightMargin'].value() < 10: self.configurators['rightMargin'].setValue(80) def saveSettings(self): for name, configurator in self.configurators.items(): if name == 'markdownExtensions': continue if isinstance(configurator, QCheckBox): value = configurator.isChecked() elif isinstance(configurator, QSpinBox): value = configurator.value() elif isinstance(configurator, QLineEdit): value = configurator.text() elif isinstance(configurator, QComboBox): value = configurator.currentData() elif isinstance(configurator, FileDialogButton): value = configurator.fileName setattr(globalSettings, name, value) self.applySettings() def applySettings(self): setIconThemeFromSettings() try: extsFile = open(MKD_EXTS_FILE, 'w') for ext in self.configurators['markdownExtensions'].text().split(','): if ext.strip(): extsFile.write(ext.strip() + '\n') extsFile.close() except Exception as e: print(e, file=sys.stderr) for tab in self.parent.iterateTabs(): tab.editBox.updateFont() tab.editBox.setWrapModeAndWidth() tab.editBox.viewport().update() self.parent.updateStyleSheet() self.parent.tabWidget.setTabBarAutoHide(globalSettings.tabBarAutoHide) self.parent.toolBar.setVisible(not globalSettings.hideToolBar) self.parent.editBar.setVisible(not globalSettings.hideToolBar) self.parent.initDirectoryTree(globalSettings.showDirectoryTree, globalSettings.directoryPath) if globalSettings.autoSave: self.parent.autoSaveTimer.start(60000) else: self.parent.autoSaveTimer.stop() def acceptSettings(self): self.saveSettings() self.close() def openLink(self, link): QDesktopServices.openUrl(QUrl.fromLocalFile(link)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/converterprocess.py0000644000175000017500000001535714575336012017612 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2016 Maurice van der Pot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import markups import multiprocessing as mp import os import pickle import signal from socket import socketpair import struct import traceback import weakref from PyQt6.QtCore import pyqtSignal, QObject, QSocketNotifier def recvall(sock, remaining): alldata = bytearray() while remaining > 0: data = sock.recv(remaining) if len(data) == 0: raise EOFError('Received 0 bytes from socket while more bytes were expected. Did the sender process exit unexpectedly?') alldata.extend(data) remaining -= len(data) return alldata def receiveObject(sock): sizeBuf = recvall(sock, 4) size = struct.unpack('I', sizeBuf)[0] message = recvall(sock, size) obj = pickle.loads(message) return obj def sendObject(sock, obj): message = pickle.dumps(obj) sizeBuf = struct.pack('I', len(message)) sock.sendall(sizeBuf) sock.sendall(message) class ConversionError(Exception): pass class MarkupNotAvailableError(Exception): pass def _indent(text, prefix): return ''.join('%s%s\n' % (prefix, line) for line in text.splitlines()) def _converter_process_func(conn_parent, conn_child): conn_parent.close() # Ignore ctrl-C. The main application will also receive the signal and # determine if the application should be stopped or not. signal.signal(signal.SIGINT, signal.SIG_IGN) current_markup = None while True: job = receiveObject(conn_child) if job['command'] == 'quit': break elif job['command'] == 'convert': try: os.chdir(job['current_dir']) if (not current_markup or current_markup.name != job['markup_name'] or current_markup.filename != job['filename']): markup_class = markups.find_markup_class_by_name(job['markup_name']) if not markup_class.available(): raise MarkupNotAvailableError('The specified markup was not available') current_markup = markup_class(job['filename']) current_markup.requested_extensions = job['requested_extensions'] converted = current_markup.convert(job['text']) result = ('ok', converted) except MarkupNotAvailableError as e: result = ('markupnotavailableerror', e.args) except Exception: result = ('conversionerror', 'The background markup conversion process received this exception:\n%s' % _indent(traceback.format_exc(), ' ')) try: sendObject(conn_child, result) except BrokenPipeError: # Continue despite the broken pipe because we expect that a # 'quit' command will have been sent. If it has been then we # should terminate without any error messages. If no command # was queued we will get an EOFError from the read, giving us a # second chance to show that something went wrong by exiting # with a traceback. continue class ConverterProcess(QObject): conversionDone = pyqtSignal() def __init__(self): super().__init__() conn_parent, conn_child = socketpair() # TODO: figure out which of the two sockets should be set to # inheritable and which should be passed to the child conn_child.set_inheritable(True) # Use a local variable for child so that we can talk to the child in # on_finalize without needing a reference to self child = mp.Process(target=_converter_process_func, args=(conn_parent, conn_child)) child.daemon = True child.start() self.child = child conn_child.close() self.conn = conn_parent self.busy = False self.notificationPending = False self.conversionNotifier = QSocketNotifier(self.conn.fileno(), QSocketNotifier.Type.Read) self.conversionNotifier.activated.connect(self._conversionNotifierActivated) def on_finalize(conn): sendObject(conn_parent, {'command':'quit'}) conn_parent.close() child.join() weakref.finalize(self, on_finalize, conn_parent) def _conversionNotifierActivated(self): # The ready-for-read signal on the socket may be triggered multiple # times, but we only send a single notification to the client as soon # as the results of the conversion are starting to come in. This makes # it easy for clients to avoid multiple calls to get_result for the # same conversion. if self.notificationPending: self.notificationPending = False # Set the socket to blocking before waking up any interested parties, # because it has been set to unblocking by QSocketNotifier self.conn.setblocking(True) self.conversionDone.emit() def start_conversion(self, markup_name, filename, requested_extensions, text, current_dir): if self.busy: raise RuntimeError('Already converting') sendObject(self.conn, {'command': 'convert', 'markup_name' : markup_name, 'filename' : filename, 'current_dir': current_dir, 'requested_extensions' : requested_extensions, 'text' : text}) self.busy = True self.notificationPending = True def get_result(self): if not self.busy: raise RuntimeError('No ongoing conversion') self.busy = False status, result = receiveObject(self.conn) if status == 'markupnotavailableerror': raise MarkupNotAvailableError(result) elif status == 'conversionerror': raise ConversionError(result) return result def stop(self): sendObject(self.conn, {'command': 'quit'}) self.conn.close() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/dialogs.py0000644000175000017500000000626514575336012015624 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2012-2022 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from ReText import globalSettings from ReText.highlighter import ReTextHighlighter from PyQt6.QtWidgets import QCheckBox, QDialog, QDialogButtonBox, \ QLabel, QLineEdit, QTextEdit, QVBoxLayout class HtmlDialog(QDialog): def __init__(self, parent=None): QDialog.__init__(self, parent) self.resize(700, 600) verticalLayout = QVBoxLayout(self) self.textEdit = QTextEdit(self) self.textEdit.setReadOnly(True) self.textEdit.setFont(globalSettings.getEditorFont()) self.hl = ReTextHighlighter(self.textEdit.document()) self.hl.docType = 'html' verticalLayout.addWidget(self.textEdit) buttonBox = QDialogButtonBox(self) buttonBox.setStandardButtons(QDialogButtonBox.StandardButton.Close) buttonBox.rejected.connect(self.close) verticalLayout.addWidget(buttonBox) class LocaleDialog(QDialog): def __init__(self, parent, defaultText=None): QDialog.__init__(self, parent) verticalLayout = QVBoxLayout(self) labelText = self.tr('Enter locale name (example: en_US)') + '\n' labelText += self.tr('It is possible to specify multiple languages, separated by comma.') verticalLayout.addWidget(QLabel(labelText, self)) self.localeEdit = QLineEdit(self) if defaultText: self.localeEdit.setText(defaultText) verticalLayout.addWidget(self.localeEdit) self.checkBox = QCheckBox(self.tr('Set as default'), self) verticalLayout.addWidget(self.checkBox) buttonBox = QDialogButtonBox(self) buttonBox.setStandardButtons(QDialogButtonBox.StandardButton.Cancel | QDialogButtonBox.StandardButton.Ok) verticalLayout.addWidget(buttonBox) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) class EncodingDialog(QDialog): def __init__(self, parent): super().__init__(parent) verticalLayout = QVBoxLayout(self) verticalLayout.addWidget(QLabel(self.tr('Enter encoding name:'), self)) self.encodingEdit = QLineEdit(self) self.encodingEdit.textChanged.connect(self.handleTextChanged) verticalLayout.addWidget(self.encodingEdit) self.buttonBox = QDialogButtonBox(self) self.buttonBox.setStandardButtons(QDialogButtonBox.StandardButton.Cancel | QDialogButtonBox.StandardButton.Ok) verticalLayout.addWidget(self.buttonBox) self.buttonBox.accepted.connect(self.accept) self.buttonBox.rejected.connect(self.reject) def handleTextChanged(self, value): button = self.buttonBox.button(QDialogButtonBox.StandardButton.Ok) try: "1".encode(value) except LookupError: button.setEnabled(False) else: button.setEnabled(True) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710609411.0 ReText-8.0.2/ReText/editor.py0000644000175000017500000005577614575352003015501 0ustar00dmitrydmitry# vim: ts=8:sts=8:sw=8:noexpandtab # # This file is part of ReText # Copyright: 2012-2024 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import os import re import weakref from markups import MarkdownMarkup, ReStructuredTextMarkup, TextileMarkup from ReText import globalSettings, settings, tablemode from PyQt6.QtCore import pyqtSignal, QFileInfo, QPoint, QPointF, QRect, QSize, Qt from PyQt6.QtGui import QAction, QColor, QImage, QKeyEvent, QMouseEvent, QPainter, \ QPalette, QTextCursor, QTextFormat, QWheelEvent, QGuiApplication from PyQt6.QtWidgets import QApplication, QFileDialog, QLabel, QTextEdit, QWidget try: from ReText.fakevimeditor import ReTextFakeVimHandler except ImportError: ReTextFakeVimHandler = None colors = { # Editor 'marginLine': {'light': '#dcd2dc', 'dark': '#3daee9'}, 'currentLineHighlight': {'light': '#ffffc8', 'dark': '#31363b'}, 'infoArea': {'light': '#aaaaff55', 'dark': '#aa557f2a'}, 'statsArea': {'light': '#aaffaa55', 'dark': '#aa7f552a'}, 'lineNumberArea': {'light': '#00ffff', 'dark': '#31363b'}, 'lineNumberAreaText': {'light': '#008080', 'dark': '#bdc3c7'}, # Highlighter 'htmlTags': {'light': '#800080', 'dark': '#d070d0'}, 'htmlSymbols': {'light': '#008080', 'dark': '#70d0a0'}, 'htmlStrings': {'light': '#808000', 'dark': '#d0d070'}, 'htmlComments': {'light': '#a0a0a4', 'dark': '#b0b0aa'}, 'codeSpans': {'light': '#505050', 'dark': '#afafaf'}, 'markdownLinks': {'light': '#000090', 'dark': '#8080ff'}, 'blockquotes': {'light': '#808080', 'dark': '#b0b0b0'}, 'restDirectives': {'light': '#800080', 'dark': '#d070d0'}, 'restRoles': {'light': '#800000', 'dark': '#d07070'}, 'whitespaceOnEnd': {'light': '#80e1e1a5', 'dark': '#8096966e'}, } colorValues = {} def updateColorScheme(settings=settings): palette = QApplication.palette() windowColor = palette.color(QPalette.ColorRole.Window) themeVariant = 'light' if windowColor.lightness() > 150 else 'dark' settings.beginGroup('ColorScheme') for key in colors: if settings.contains(key): colorValues[key] = settings.value(key, type=QColor) else: colorValues[key] = QColor(colors[key][themeVariant]) settings.endGroup() def getColor(colorName): if not colorValues: updateColorScheme() return colorValues[colorName] def documentIndentMore(document, cursor, globalSettings=globalSettings): if cursor.hasSelection(): block = document.findBlock(cursor.selectionStart()) end = document.findBlock(cursor.selectionEnd()).next() cursor.beginEditBlock() while block != end: cursor.setPosition(block.position()) if globalSettings.tabInsertsSpaces: cursor.insertText(' ' * globalSettings.tabWidth) else: cursor.insertText('\t') block = block.next() cursor.endEditBlock() else: indent = globalSettings.tabWidth - (cursor.positionInBlock() % globalSettings.tabWidth) if globalSettings.tabInsertsSpaces: cursor.insertText(' ' * indent) else: cursor.insertText('\t') def documentIndentLess(document, cursor, globalSettings=globalSettings): if cursor.hasSelection(): block = document.findBlock(cursor.selectionStart()) end = document.findBlock(cursor.selectionEnd()).next() else: block = document.findBlock(cursor.position()) end = block.next() cursor.beginEditBlock() while block != end: cursor.setPosition(block.position()) if document.characterAt(cursor.position()) == '\t': cursor.deleteChar() else: pos = 0 while document.characterAt(cursor.position()) == ' ' \ and pos < globalSettings.tabWidth: pos += 1 cursor.deleteChar() block = block.next() cursor.endEditBlock() class ReTextEdit(QTextEdit): resized = pyqtSignal(QRect) scrollLimitReached = pyqtSignal(QWheelEvent) returnBlockPattern = re.compile("^[\\s]*([*>-]|\\d+\\.) ") orderedListPattern = re.compile("^([\\s]*)(\\d+)\\. $") wordPattern = re.compile(r"\w+") nonAlphaNumPattern = re.compile(r"\W") surroundKeysSelfClose = [ Qt.Key.Key_Underscore, Qt.Key.Key_Asterisk, Qt.Key.Key_QuoteDbl, Qt.Key.Key_QuoteLeft, Qt.Key.Key_Apostrophe ] surroundKeysOtherClose = { Qt.Key.Key_ParenLeft: ')', Qt.Key.Key_BracketLeft: ']' } def __init__(self, parent, settings=globalSettings): QTextEdit.__init__(self) self.tab = weakref.proxy(parent) self.parent = parent.p self.undoRedoActive = False self.tableModeEnabled = False self.setAcceptRichText(False) self.lineNumberArea = LineNumberArea(self) self.infoArea = LineInfoArea(self) self.statistics = (0, 0, 0) self.statsArea = TextInfoArea(self) self.updateFont() self.setWrapModeAndWidth() self.document().blockCountChanged.connect(self.updateLineNumberAreaWidth) self.cursorPositionChanged.connect(self.highlightCurrentLine) self.document().contentsChange.connect(self.contentsChange) self.settings = settings if globalSettings.useFakeVim: self.installFakeVimHandler() def setWrapModeAndWidth(self): if globalSettings.rightMarginWrap and (self.rect().topRight().x() > self.marginx): self.setLineWrapMode(QTextEdit.LineWrapMode.FixedPixelWidth) self.setLineWrapColumnOrWidth(self.marginx) else: self.setLineWrapMode(QTextEdit.LineWrapMode.WidgetWidth) def updateFont(self): self.setFont(globalSettings.getEditorFont()) metrics = self.fontMetrics() self.marginx = (int(self.document().documentMargin()) + metrics.horizontalAdvance(' ' * globalSettings.rightMargin)) self.setTabStopDistance(globalSettings.tabWidth * metrics.horizontalAdvance(' ')) self.updateLineNumberAreaWidth() self.infoArea.updateTextAndGeometry() self.updateTextStatistics() self.statsArea.updateTextAndGeometry() if globalSettings.wideCursor: self.setCursorWidth(metrics.averageCharWidth()) def paintEvent(self, event): if not globalSettings.rightMargin: return super().paintEvent(event) painter = QPainter(self.viewport()) painter.setPen(getColor('marginLine')) y1 = self.rect().topLeft().y() y2 = self.rect().bottomLeft().y() painter.drawLine(self.marginx, y1, self.marginx, y2) super().paintEvent(event) def wheelEvent(self, event): modifiers = QGuiApplication.keyboardModifiers() if modifiers == Qt.KeyboardModifier.ControlModifier: font = globalSettings.getEditorFont() size = font.pointSize() scroll = event.angleDelta().y() if scroll > 0: size += 1 elif scroll < 0: size -= 1 else: return font.setPointSize(size) self.parent.setEditorFont(font) else: super().wheelEvent(event) if event.angleDelta().y() < 0: scrollBarLimit = self.verticalScrollBar().maximum() else: scrollBarLimit = self.verticalScrollBar().minimum() if self.verticalScrollBar().value() == scrollBarLimit: self.scrollLimitReached.emit(event) def scrollContentsBy(self, dx, dy): super().scrollContentsBy(dx, dy) self.lineNumberArea.update() def contextMenuEvent(self, event): # Create base menu menu = self.createStandardContextMenu() if self.parent.actionPasteImage.isEnabled(): actions = menu.actions() actionPaste = menu.findChild(QAction, "edit-paste") actionNextAfterPaste = actions[actions.index(actionPaste) + 1] menu.insertAction(actionNextAfterPaste, self.parent.actionPasteImage) text = self.toPlainText() if not text: menu.exec(event.globalPos()) return # Check word under the cursor oldcursor = self.textCursor() cursor = self.cursorForPosition(event.pos()) curchar = self.document().characterAt(cursor.position()) isalpha = curchar.isalpha() word = None if isalpha and not (oldcursor.hasSelection() and oldcursor.selectedText() != cursor.selectedText()): cursor.select(QTextCursor.SelectionType.WordUnderCursor) word = cursor.selectedText() correct = True if word is not None and self.tab.highlighter.dictionaries: correct = any(dictionary.check(word) for dictionary in self.tab.highlighter.dictionaries) if not correct: self.setTextCursor(cursor) suggestions = self.tab.highlighter.dictionaries[0].suggest(word) actions = [self.parent.act(sug, trig=self.fixWord(sug)) for sug in suggestions] menu.insertSeparator(menu.actions()[0]) for action in actions[::-1]: menu.insertAction(menu.actions()[0], action) menu.insertSeparator(menu.actions()[0]) menu.insertAction(menu.actions()[0], self.parent.act(self.tr('Add to dictionary'), trig=self.learnWord(word))) menu.addSeparator() menu.addAction(self.parent.actionMoveUp) menu.addAction(self.parent.actionMoveDown) menu.exec(event.globalPos()) def fixWord(self, correctword): return lambda: self.insertPlainText(correctword) def learnWord(self, newword): return lambda: self.addNewWord(newword) def addNewWord(self, newword): cursor = self.textCursor() block = cursor.block() cursor.clearSelection() self.setTextCursor(cursor) if self.tab.highlighter.dictionaries and newword: dictionary = self.tab.highlighter.dictionaries[0] dictionary.add(newword) self.tab.highlighter.rehighlightBlock(block) def isSurroundKey(self, key): return key in self.surroundKeysSelfClose or key in self.surroundKeysOtherClose def getCloseKey(self, event, key): if key in self.surroundKeysSelfClose: return event.text() if key in self.surroundKeysOtherClose: return self.surroundKeysOtherClose[key] def surroundText(self, cursor, event, key): text = cursor.selectedText() keyStr = event.text() keyClose = self.getCloseKey(event, key) cursor.insertText(keyStr + text + keyClose) def keyPressEvent(self, event): key = event.key() cursor = self.textCursor() if key == Qt.Key.Key_Backspace and event.modifiers() & Qt.KeyboardModifier.GroupSwitchModifier: # Workaround for https://bugreports.qt.io/browse/QTBUG-49771 event = QKeyEvent(event.type(), event.key(), event.modifiers() ^ Qt.KeyboardModifier.GroupSwitchModifier) if key == Qt.Key.Key_Tab: documentIndentMore(self.document(), cursor) elif key == Qt.Key.Key_Backtab: documentIndentLess(self.document(), cursor) elif key == Qt.Key.Key_Return: markupClass = self.tab.getActiveMarkupClass() if event.modifiers() & Qt.KeyboardModifier.ControlModifier: cursor.insertText('\n') self.ensureCursorVisible() elif self.tableModeEnabled and tablemode.handleReturn(cursor, markupClass, newRow=(event.modifiers() & Qt.KeyboardModifier.ShiftModifier)): self.setTextCursor(cursor) self.ensureCursorVisible() else: if event.modifiers() & Qt.KeyboardModifier.ShiftModifier and markupClass == MarkdownMarkup: # Insert Markdown-style line break cursor.insertText(' ') self.handleReturn(cursor) elif cursor.selectedText() and self.isSurroundKey(key): self.surroundText(cursor, event, key) else: if event.text() and self.tableModeEnabled: cursor.beginEditBlock() super().keyPressEvent(event) if event.text() and self.tableModeEnabled: cursor.endEditBlock() def handleReturn(self, cursor): # Select text between the cursor and the line start cursor.movePosition(QTextCursor.MoveOperation.StartOfBlock, QTextCursor.MoveMode.KeepAnchor) text = cursor.selectedText() length = len(text) match = self.returnBlockPattern.search(text) if match is not None: matchedText = match.group(0) if len(matchedText) == length: cursor.removeSelectedText() matchedText = '' else: matchOL = self.orderedListPattern.match(matchedText) if matchOL is not None: matchedPrefix = matchOL.group(1) matchedNumber = int(matchOL.group(2)) nextNumber = matchedNumber if self.settings.orderedListMode == 'repeat' else matchedNumber + 1 matchedText = matchedPrefix + str(nextNumber) + ". " else: matchedText = '' # Reset the cursor cursor = self.textCursor() cursor.insertText('\n' + matchedText) self.ensureCursorVisible() def moveLineUp(self): self.moveLine(QTextCursor.MoveOperation.PreviousBlock) def moveLineDown(self): self.moveLine(QTextCursor.MoveOperation.NextBlock) def moveLine(self, direction): cursor = self.textCursor() # Select the current block cursor.movePosition(QTextCursor.MoveOperation.StartOfBlock, QTextCursor.MoveMode.MoveAnchor) cursor.movePosition(QTextCursor.MoveOperation.NextBlock, QTextCursor.MoveMode.KeepAnchor) text = cursor.selectedText() # Remove it cursor.removeSelectedText() # Move to the wanted block cursor.movePosition(direction, QTextCursor.MoveMode.MoveAnchor) # Paste the line cursor.insertText(text) # Move to the pasted block cursor.movePosition(QTextCursor.MoveOperation.PreviousBlock, QTextCursor.MoveMode.MoveAnchor) # Update cursor self.setTextCursor(cursor) def lineNumberAreaWidth(self): if not globalSettings.lineNumbersEnabled: return 0 cursor = QTextCursor(self.document()) cursor.movePosition(QTextCursor.MoveOperation.End) if globalSettings.relativeLineNumbers: digits = len(str(cursor.blockNumber())) + 1 else: digits = len(str(cursor.blockNumber() + 1)) return 5 + self.fontMetrics().horizontalAdvance('9') * digits def updateLineNumberAreaWidth(self, blockcount=0): self.setViewportMargins(self.lineNumberAreaWidth(), 0, 0, 0) def resizeEvent(self, event): super().resizeEvent(event) rect = self.contentsRect() self.resized.emit(rect) self.lineNumberArea.setGeometry(rect.left(), rect.top(), self.lineNumberAreaWidth(), rect.height()) self.infoArea.updateTextAndGeometry() self.statsArea.updateTextAndGeometry() self.setWrapModeAndWidth() self.ensureCursorVisible() def highlightCurrentLine(self): if globalSettings.relativeLineNumbers: self.lineNumberArea.update() if globalSettings.highlightCurrentLine == 'disabled': return self.setExtraSelections([]) selection = QTextEdit.ExtraSelection() selection.format.setBackground(getColor('currentLineHighlight')) selection.format.setProperty(QTextFormat.Property.FullWidthSelection, True) selection.cursor = self.textCursor() selection.cursor.clearSelection() selections = [selection] if globalSettings.highlightCurrentLine == 'wrapped-line': selections.append(QTextEdit.ExtraSelection()) selections[0].cursor.movePosition(QTextCursor.MoveOperation.StartOfBlock) selections[0].cursor.movePosition(QTextCursor.MoveOperation.EndOfBlock, QTextCursor.MoveMode.KeepAnchor) selections[1].format.setBackground(getColor('currentLineHighlight')) selections[1].format.setProperty(QTextFormat.Property.FullWidthSelection, True) selections[1].cursor = self.textCursor() selections[1].cursor.movePosition(QTextCursor.MoveOperation.EndOfBlock) elif selection.cursor.block().textDirection() == Qt.LayoutDirection.RightToLeft: # FullWidthSelection does not work correctly for RTL direction selection.cursor.movePosition(QTextCursor.MoveOperation.StartOfLine) selection.cursor.movePosition(QTextCursor.MoveOperation.EndOfLine, QTextCursor.MoveMode.KeepAnchor) self.setExtraSelections(selections) def enableTableMode(self, enable): self.tableModeEnabled = enable def backupCursorPositionOnLine(self): return self.textCursor().positionInBlock() def restoreCursorPositionOnLine(self, positionOnLine): cursor = self.textCursor() cursor.setPosition(cursor.block().position() + positionOnLine) self.setTextCursor(cursor) def contentsChange(self, pos, removed, added): if self.tableModeEnabled: markupClass = self.tab.getActiveMarkupClass() cursorPosition = self.backupCursorPositionOnLine() tablemode.adjustTableToChanges(self.document(), pos, added - removed, markupClass) self.restoreCursorPositionOnLine(cursorPosition) self.lineNumberArea.update() self.updateTextStatistics() def findNextImageName(self, filenames): highestNumber = 0 for filename in filenames: m = re.match(r'image(\d+).png', filename, re.IGNORECASE) if m: number = int(m.group(1)) highestNumber = max(number, highestNumber) return 'image%04d.png' % (highestNumber + 1) def getImageFilename(self): if self.tab.fileName: saveDir = os.path.dirname(self.tab.fileName) else: saveDir = os.getcwd() imageFileName = self.findNextImageName(os.listdir(saveDir)) return QFileDialog.getSaveFileName(self, self.tr('Save image'), os.path.join(saveDir, imageFileName), self.tr('Images (*.png *.jpg)'))[0] def makeFileNameRelative(self, fileName): """Tries to make the given fileName relative. If the document is not saved, or the fileName is on a different root, returns the original fileName. """ if self.tab.fileName: currentDir = os.path.dirname(self.tab.fileName) try: return os.path.relpath(fileName, currentDir) except ValueError: # different roots return fileName return fileName def getImageMarkup(self, fileName): """Returns markup for image in the current markup language. This method is also accessed in ReTextWindow.insertImage. """ link = self.makeFileNameRelative(fileName) markupClass = self.tab.getActiveMarkupClass() if markupClass == MarkdownMarkup: return '![%s](%s)' % (QFileInfo(link).baseName(), link) elif markupClass == ReStructuredTextMarkup: return '.. image:: %s' % link elif markupClass == TextileMarkup: return '!%s!' % link def pasteImage(self): mimeData = QApplication.instance().clipboard().mimeData() fileName = self.getImageFilename() if not fileName or not mimeData.hasImage(): return image = QImage(mimeData.imageData()) image.save(fileName) imageText = self.getImageMarkup(fileName) self.textCursor().insertText(imageText) def installFakeVimHandler(self): if ReTextFakeVimHandler: fakeVimEditor = ReTextFakeVimHandler(self, self.parent) fakeVimEditor.setSaveAction(self.parent.actionSave) fakeVimEditor.setQuitAction(self.parent.actionQuit) self.parent.actionFakeVimMode.triggered.connect(fakeVimEditor.remove) def updateTextStatistics(self): if not globalSettings.documentStatsEnabled: return text = self.toPlainText() wordCount = len(self.wordPattern.findall(text)) alphaNums = self.nonAlphaNumPattern.sub('', text) alphaNumCount = len(alphaNums) characterCount = len(text) self.statistics = (wordCount, alphaNumCount, characterCount) def inputMethodEvent(self, event): # Empty events cause layout issues (issue #597), so ignore them. if event.preeditString() or event.commitString() or event.attributes(): super().inputMethodEvent(event) class LineNumberArea(QWidget): def __init__(self, editor): QWidget.__init__(self, editor) self.editor = editor def sizeHint(self): return QSize(self.editor.lineNumberAreaWidth(), 0) def paintEvent(self, event): if not globalSettings.lineNumbersEnabled: return super().paintEvent(event) painter = QPainter(self) painter.fillRect(event.rect(), getColor('lineNumberArea')) painter.setPen(getColor('lineNumberAreaText')) cursor = self.editor.cursorForPosition(QPoint(0, 0)) atEnd = False fontHeight = self.fontMetrics().height() height = self.editor.height() if globalSettings.relativeLineNumbers: relativeTo = self.editor.textCursor().blockNumber() else: relativeTo = -1 while not atEnd: rect = self.editor.cursorRect(cursor) if rect.top() >= height: break number = str(cursor.blockNumber() - relativeTo).replace('-', '−') painter.drawText(0, rect.top(), self.width() - 2, fontHeight, Qt.AlignmentFlag.AlignRight, number) cursor.movePosition(QTextCursor.MoveOperation.EndOfBlock) atEnd = cursor.atEnd() if not atEnd: cursor.movePosition(QTextCursor.MoveOperation.NextBlock) class InfoArea(QLabel): def __init__(self, editor, baseColor): QWidget.__init__(self, editor) self.editor = editor self.editor.cursorPositionChanged.connect(self.updateTextAndGeometry) self.updateTextAndGeometry() self.setAutoFillBackground(True) self.baseColor = baseColor palette = self.palette() palette.setColor(QPalette.ColorRole.Window, self.baseColor) self.setPalette(palette) self.setCursor(Qt.CursorShape.IBeamCursor) def updateTextAndGeometry(self): text = self.getText() (w, h) = self.getAreaSize(text) (x, y) = self.getAreaPosition(w, h) self.setText(text) self.resize(w, h) self.move(x, y) self.setVisible(not globalSettings.useFakeVim) def getAreaSize(self, text): metrics = self.fontMetrics() width = metrics.horizontalAdvance(text) height = metrics.height() return width, height def getAreaPosition(self, width, height): return 0, 0 def getText(self): return "" def enterEvent(self, event): palette = self.palette() windowColor = QColor(self.baseColor) windowColor.setAlpha(0x20) palette.setColor(QPalette.ColorRole.Window, windowColor) textColor = palette.color(QPalette.ColorRole.WindowText) textColor.setAlpha(0x20) palette.setColor(QPalette.ColorRole.WindowText, textColor) self.setPalette(palette) def leaveEvent(self, event): palette = self.palette() palette.setColor(QPalette.ColorRole.Window, self.baseColor) palette.setColor(QPalette.ColorRole.WindowText, self.editor.palette().color(QPalette.ColorRole.WindowText)) self.setPalette(palette) def mousePressEvent(self, event): pos: QPointF = self.mapToParent(event.position()) pos.setX(pos.x() - self.editor.lineNumberAreaWidth()) newEvent = QMouseEvent(event.type(), pos, event.button(), event.buttons(), event.modifiers()) self.editor.mousePressEvent(newEvent) mouseReleaseEvent = mousePressEvent mouseDoubleClickEvent = mousePressEvent mouseMoveEvent = mousePressEvent class LineInfoArea(InfoArea): def __init__(self, editor): InfoArea.__init__(self, editor, getColor('infoArea')) def getAreaPosition(self, width, height): viewport = self.editor.viewport() rightSide = viewport.width() + self.editor.lineNumberAreaWidth() if globalSettings.documentStatsEnabled: return rightSide - width, viewport.height() - (2 * height) else: return rightSide - width, viewport.height() - height def getText(self): template = '%d : %d' cursor = self.editor.textCursor() block = cursor.blockNumber() + 1 position = cursor.positionInBlock() return template % (block, position) class TextInfoArea(InfoArea): def __init__(self, editor): InfoArea.__init__(self, editor, getColor('statsArea')) def getAreaPosition(self, width, height): viewport = self.editor.viewport() rightSide = viewport.width() + self.editor.lineNumberAreaWidth() return rightSide - width, viewport.height() - height def getText(self): if not globalSettings.documentStatsEnabled: return template = self.tr('%d w | %d a | %d c', 'count of words, alphanumeric characters, all characters') words, alphaNums, characters = self.editor.statistics return template % (words, alphaNums, characters) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/fakevimeditor.py0000644000175000017500000002112714575336012017025 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2014 Lukas Holecek # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from FakeVim import FakeVimProxy, FakeVimHandler, FAKEVIM_PYQT_VERSION, \ MessageError if FAKEVIM_PYQT_VERSION != 6: raise ImportError("FakeVim must be compiled with Qt 6") from PyQt6.QtCore import QDir, QRegExp, QObject, Qt from PyQt6.QtGui import QPainter, QPen, QTextCursor from PyQt6.QtWidgets import QWidget, QLabel, QLineEdit, \ QMessageBox, QStatusBar, QTextEdit class FakeVimMode: @staticmethod def init(window): window.setStatusBar(StatusBar()) @staticmethod def exit(window): window.statusBar().deleteLater() class Proxy (FakeVimProxy): """ Used by FakeVim to modify or retrieve editor state. """ def __init__(self, window, editor, handler): super().__init__(handler.handler()) self.__handler = handler self.__window = window self.__editor = editor self.__statusMessage = "" self.__statusData = "" self.__cursorPosition = -1 self.__cursorAnchor = -1 self.__eventFilter = None self.__lastSavePath = "" def showMessage(self, messageLevel, message): self.__handler.handler().showMessage(messageLevel, message) def needSave(self): return self.__editor.document().isModified() def maybeCloseEditor(self): if self.needSave(): self.showMessage( MessageError, self.tr("No write since last change (add ! to override)") ) self.__updateStatusBar() return False return True def commandQuit(self): self.__handler.quit() def commandWrite(self): self.__handler.save() return not self.needSave() def handleExCommand(self, cmd): if cmd.matches("q", "quit"): if cmd.hasBang or self.maybeCloseEditor(): self.commandQuit() elif cmd.matches("w", "write"): self.commandWrite() elif cmd.cmd == "wq": self.commandWrite() and self.commandQuit() else: return False return True def enableBlockSelection(self, cursor): self.__handler.setBlockSelection(True) self.__editor.setTextCursor(cursor) def disableBlockSelection(self): self.__handler.setBlockSelection(False) def blockSelection(self): self.__handler.setBlockSelection(True) return self.__editor.textCursor() def hasBlockSelection(self): return self.__handler.hasBlockSelection() def commandBufferChanged(self, msg, cursorPosition, cursorAnchor, messageLevel, eventFilter): # Give focus back to editor if closing command line. if self.__cursorPosition != -1 and cursorPosition == -1: self.__editor.setFocus() self.__cursorPosition = cursorPosition self.__cursorAnchor = cursorAnchor self.__statusMessage = msg self.__updateStatusBar(); self.__eventFilter = eventFilter def statusDataChanged(self, msg): self.__statusData = msg self.__updateStatusBar() def extraInformationChanged(self, msg): QMessageBox.information(self.__window, self.tr("Information"), msg) def highlightMatches(self, pattern): self.__handler.highlightMatches(pattern) def __updateStatusBar(self): self.__window.statusBar().setStatus( self.__statusMessage, self.__statusData, self.__cursorPosition, self.__cursorAnchor, self.__eventFilter) class BlockSelection (QWidget): def __init__(self, editor): super().__init__(editor.viewport()) self.__editor = editor self.__lineWidth = 4 def updateSelection(self, tc): # block selection rectangle rect = self.__editor.cursorRect(tc) w = rect.width() tc2 = QTextCursor(tc) tc2.setPosition(tc.anchor()) rect = rect.united( self.__editor.cursorRect(tc2) ) x = self.__lineWidth / 2 rect.adjust(-x, -x, x - w, x) self.setGeometry(rect) def paintEvent(self, paintEvent): painter = QPainter(self) painter.setClipRect(paintEvent.rect()) color = self.__editor.palette().text() painter.setPen(QPen(color, self.__lineWidth)) painter.drawRect(self.rect()) class ReTextFakeVimHandler (QObject): """ Editor widget driven by FakeVim. """ def __init__(self, editor, window): super().__init__(window) self.__window = window self.__editor = editor self.__blockSelection = BlockSelection(self.__editor) self.__blockSelection.hide() self.__searchSelections = [] fm = self.__editor.fontMetrics() self.__cursorWidth = fm.averageCharWidth() self.__oldCursorWidth = self.__editor.cursorWidth() self.__editor.setCursorWidth(self.__cursorWidth) self.__handler = FakeVimHandler(self.__editor, self) self.__proxy = Proxy(self.__window, self.__editor, self) self.__handler.installEventFilter() self.__handler.setupWidget() self.__handler.handleCommand( f'source {QDir.homePath()}/.vimrc') self.__saveAction = None self.__quitAction = None # Update selections if cursor changes because of current line can be highlighted. self.__editor.cursorPositionChanged.connect(self.__updateSelections) def remove(self): self.__editor.setOverwriteMode(False) self.__editor.setCursorWidth(self.__oldCursorWidth) self.__blockSelection.deleteLater() self.__updateSelections([]) self.deleteLater() def handler(self): return self.__handler def setBlockSelection(self, enabled): self.__editor.setCursorWidth(self.__cursorWidth) self.__blockSelection.setVisible(enabled) if enabled: self.__blockSelection.updateSelection(self.__editor.textCursor()) # Shift text cursor into the block selection. tc = self.__editor.textCursor() if self.__columnForPosition(tc.anchor()) < self.__columnForPosition(tc.position()): self.__editor.setCursorWidth(-self.__cursorWidth) def setSaveAction(self, saveAction): self.__saveAction = saveAction def setQuitAction(self, quitAction): self.__quitAction = quitAction def save(self): if self.__saveAction: self.__saveAction.trigger() def quit(self): if self.__quitAction: self.__quitAction.trigger() def hasBlockSelection(self): return self.__blockSelection.isVisible() def highlightMatches(self, pattern): cur = self.__editor.textCursor() re = QRegExp(pattern) cur = self.__editor.document().find(re) a = cur.position() searchSelections = [] while not cur.isNull(): if cur.hasSelection(): selection = QTextEdit.ExtraSelection() selection.format.setBackground(Qt.GlobalColor.yellow) selection.format.setForeground(Qt.GlobalColor.black) selection.cursor = cur searchSelections.append(selection) else: cur.movePosition(QTextCursor.MoveOperation.NextCharacter) cur = self.__editor.document().find(re, cur) b = cur.position() if a == b: cur.movePosition(QTextCursor.MoveOperation.NextCharacter) cur = self.__editor.document().find(re, cur) b = cur.position() if (a == b): break a = b self.__updateSelections(searchSelections) def __updateSelections(self, searchSelections = None): oldSelections = self.__editor.extraSelections() for selection in self.__searchSelections: for i in range(len(oldSelections) - 1, 0, -1): if selection.cursor == oldSelections[i].cursor: oldSelections.pop(i) break if searchSelections != None: self.__searchSelections = searchSelections self.__editor.setExtraSelections(oldSelections + self.__searchSelections) def __columnForPosition(self, position): return position - self.__editor.document().findBlock(position).position() class StatusBar (QStatusBar): def __init__(self): super().__init__() self.__statusMessageLabel = QLabel(self) self.__statusDataLabel = QLabel(self) self.__commandLine = QLineEdit(self) self.addPermanentWidget(self.__statusMessageLabel, 1) self.addPermanentWidget(self.__commandLine, 1) self.addPermanentWidget(self.__statusDataLabel) self.__commandLine.hide() def setStatus(self, statusMessage, statusData, cursorPosition, cursorAnchor, eventFilter): commandMode = cursorPosition != -1 self.__commandLine.setVisible(commandMode) self.__statusMessageLabel.setVisible(not commandMode) if commandMode: self.__commandLine.installEventFilter(eventFilter) self.__commandLine.setFocus() self.__commandLine.setText(statusMessage) self.__commandLine.setSelection(cursorPosition, cursorAnchor - cursorPosition) else: self.__statusMessageLabel.setText(statusMessage) self.__statusDataLabel.setText(statusData) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/highlighter.py0000644000175000017500000001635414575336012016500 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2012-2022 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from ReText.editor import getColor from enum import IntFlag, auto import re from PyQt6.QtCore import Qt from PyQt6.QtGui import QFont, QSyntaxHighlighter, QTextCharFormat reHtmlTags = re.compile('<[^<>@]*>') reHtmlSymbols = re.compile(r'&#?\w+;') reHtmlStrings = re.compile('"[^"<]*"(?=[^<]*>)') reHtmlComments = re.compile('') reAsterisks = re.compile(r'(?.+') reReSTDirects = re.compile(r'\.\. [a-z]+::') reReSTRoles = re.compile('(:[a-z-]+:)(`.+?`)') reReSTLinks = re.compile('(`.+?<)(.+?)(>`__?)') reReSTLinkRefs = re.compile(r'\.\. _`?(.*?)`?: (.*)') reReSTFldLists = re.compile('^ *:(.*?):') reTextileHdrs = re.compile(r'^h[1-6][()<>=]*\.\s.+') reTextileQuot = re.compile(r'^bq\.\s.+') reMkdCodeSpans = re.compile('`[^`]*`') reMkdMathSpans = re.compile(r'\\[\(\[].*?\\[\)\]]') reReSTCodeSpan = re.compile('``.+?``') reWords = re.compile('[^_\\W]+') reSpacesOnEnd = re.compile(r'\s+$') class Formatter: def __init__(self, funcs=None): self._funcs = funcs or [] def __or__(self, other): result = Formatter(self._funcs.copy()) if isinstance(other, Formatter): result._funcs.extend(other._funcs) elif isinstance(other, QFont.Weight): result._funcs.append(lambda f: f.setFontWeight(other)) return result def format(self, charFormat): for func in self._funcs: func(charFormat) NF = Formatter() ITAL = Formatter([lambda f: f.setFontItalic(True)]) UNDL = Formatter([lambda f: f.setFontUnderline(True)]) def FG(colorName): func = lambda f: f.setForeground(getColor(colorName)) return Formatter([func]) def QString_length(text): # In QString, surrogate pairs are represented using multiple QChars, # so the length of QString is not always equal to the number of graphemes # in it (which is the case with Python strings). return sum(2 if ord(char) > 65535 else 1 for char in text) class Markup(IntFlag): Mkd = auto() ReST = auto() Textile = auto() HTML = auto() # Special value which means that no other markup is allowed inside this pattern CodeSpan = auto() docTypesMapping = { 'Markdown': Markup.Mkd, 'reStructuredText': Markup.ReST, 'Textile': Markup.Textile, 'html': Markup.HTML, } class ReTextHighlighter(QSyntaxHighlighter): dictionaries = None docType = None patterns = ( # regex, color, markups (reMkdCodeSpans, FG('codeSpans'), Markup.Mkd | Markup.CodeSpan), (reMkdMathSpans, FG('codeSpans'), Markup.Mkd | Markup.CodeSpan), (reReSTCodeSpan, FG('codeSpans'), Markup.ReST | Markup.CodeSpan), (reHtmlTags, FG('htmlTags') | QFont.Weight.Bold, Markup.Mkd | Markup.Textile | Markup.HTML), (reHtmlSymbols, FG('htmlSymbols') | QFont.Weight.Bold, Markup.Mkd | Markup.HTML), (reHtmlStrings, FG('htmlStrings') | QFont.Weight.Bold, Markup.Mkd | Markup.HTML), (reHtmlComments, FG('htmlComments'), Markup.Mkd | Markup.HTML), (reAsterisks, ITAL, Markup.Mkd | Markup.ReST), (reUnderline, ITAL, Markup.Mkd | Markup.Textile), (reDblAsterisks, NF | QFont.Weight.Bold, Markup.Mkd | Markup.ReST | Markup.Textile), (reDblUnderline, NF | QFont.Weight.Bold, Markup.Mkd), (reTrpAsterisks, ITAL | QFont.Weight.Bold, Markup.Mkd), (reTrpUnderline, ITAL | QFont.Weight.Bold, Markup.Mkd), (reMkdHeaders, NF | QFont.Weight.Black, Markup.Mkd), (reMkdLinksImgs, FG('markdownLinks'), Markup.Mkd), (reMkdLinkRefs, ITAL | UNDL, Markup.Mkd), (reBlockQuotes, FG('blockquotes'), Markup.Mkd), (reReSTDirects, FG('restDirectives') | QFont.Weight.Bold, Markup.ReST), (reReSTRoles, NF, FG('restRoles') | QFont.Weight.Bold, FG('htmlStrings'), Markup.ReST), (reTextileHdrs, NF | QFont.Weight.Black, Markup.Textile), (reTextileQuot, FG('blockquotes'), Markup.Textile), (reAsterisks, NF | QFont.Weight.Bold, Markup.Textile), (reDblUnderline, ITAL, Markup.Textile), (reReSTLinks, NF, NF, ITAL | UNDL, NF, Markup.ReST), (reReSTLinkRefs, NF, FG('markdownLinks'), ITAL | UNDL, Markup.ReST), (reReSTFldLists, NF, FG('restDirectives'), Markup.ReST), ) def highlightBlock(self, text): # Syntax highlighter codeSpans = set() if self.docType in docTypesMapping: markup = docTypesMapping[self.docType] for pattern, *formatters, markups in self.patterns: if not (markup & markups): continue for match in pattern.finditer(text): start, end = match.start(), match.end() if markups & Markup.CodeSpan: codeSpans.add((start, end)) elif any(start < codeEnd and end > codeStart for codeStart, codeEnd in codeSpans): # Ignore any syntax if its match intersects with code spans. # See https://github.com/retext-project/retext/issues/529 continue for i, formatter in enumerate(formatters): charFormat = QTextCharFormat() formatter.format(charFormat) self.setFormat(QString_length(text[:match.start(i)]), QString_length(match.group(i)), charFormat) for match in reSpacesOnEnd.finditer(text): charFormat = QTextCharFormat() charFormat.setBackground(getColor('whitespaceOnEnd')) self.setFormat(QString_length(text[:match.start()]), QString_length(match.group(0)), charFormat) # Spell checker if self.dictionaries: charFormat = QTextCharFormat() charFormat.setUnderlineColor(Qt.GlobalColor.red) charFormat.setUnderlineStyle(QTextCharFormat.UnderlineStyle.SpellCheckUnderline) for match in reWords.finditer(text): finalFormat = QTextCharFormat() finalFormat.merge(charFormat) finalFormat.merge(self.format(match.start())) word = match.group(0) correct = any(dictionary.check(word) for dictionary in self.dictionaries) if not correct: self.setFormat(QString_length(text[:match.start()]), QString_length(word), finalFormat) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6892505 ReText-8.0.2/ReText/icons/0000755000175000017500000000000014575355105014736 5ustar00dmitrydmitry././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/COPYING0000664000175000017500000002271614575335363016007 0ustar00dmitrydmitryThe Oxygen Icon Theme Copyright (C) 2007 Nuno Pinheiro Copyright (C) 2007 David Vignoni Copyright (C) 2007 David Miller Copyright (C) 2007 Johann Ollivier Lapeyre Copyright (C) 2007 Kenneth Wimer Copyright (C) 2007 Riccardo Iaconelli and others This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . Clarification: The GNU Lesser General Public License or LGPL is written for software libraries in the first place. We expressly want the LGPL to be valid for this artwork library too. KDE Oxygen theme icons is a special kind of software library, it is an artwork library, it's elements can be used in a Graphical User Interface, or GUI. Source code, for this library means: - where they exist, SVG; - otherwise, if applicable, the multi-layered formats xcf or psd, or otherwise png. The LGPL in some sections obliges you to make the files carry notices. With images this is in some cases impossible or hardly useful. With this library a notice is placed at a prominent place in the directory containing the elements. You may follow this practice. The exception in section 5 of the GNU Lesser General Public License covers the use of elements of this art library in a GUI. kde-artists [at] kde.org ----- GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/README.md0000664000175000017500000000074214575335363016226 0ustar00dmitrydmitryKDE Oxygen theme icons ---------------------- The icons in this directory are a subset of the [KDE Oxygen theme icons][1]. See the COPYING file for a copy of the LGPL and some notes about how the license applies to these icons. The SVG source format of these icons is available from the [KDE GitHub Mirror][2]. KDE Homepage: [http://www.kde.org/][3] [1]: https://github.com/KDE/oxygen-icons [2]: https://github.com/KDE/oxygen-icons/tree/master/scalable [3]: http://www.kde.org/ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/application-exit.png0000664000175000017500000000215614575335363020730 0ustar00dmitrydmitryPNG  IHDRĴl; pHYsϐtIME  ҡabKGDIDATxڵ_hUƿgfw6ِ MIMI`#DHE҆C4(J+bOyRԧXi(H$&6knSEnٝٹ3lZ"ss࿨ B W sv{קzT6˃w{ ܿ{|<%A-/M]]pDV?=! N=oU.ߔceiT_F&sg1t]@ϝ=9^X;hLm{$wc!N$0}IN\K /"n*WHP`EJK>]4nm*;KtקtW{*cUBe™3i kc[o/ e$zzyR(RC^ ։VASbQº:1 ٮnܔ\>BuVV079u9ľz0w}7wbaJ-%?ʭ<ϡlw$k#f!j$O=Ͽ 2@'2qzҳ֑=O\XQx}dbZ_ĥp.J)!bUć)<UwX)t 딤-'{V D IK^ 1H e} Bzu7P|8@#F߄Ik3l`368Sŷ $Mt#0'FАY$uᣨ} |?'fEgBR?B<Qk8}5h4 4~iIFxeNu{d:`lS4(=H$557߂Jb ~L#eWKpK6 (:@8e:>53owk/…$Y~0#8+cPbA gs(@/ bF "V [SXr}{ۣ/&"0 J I#,=@Iә2 j<Xf<) fy56؅'>Z?(!3*?lIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/application-pdf.png0000664000175000017500000000216414575335363020527 0ustar00dmitrydmitryPNG  IHDRĴl;sRGBbKGD pHYs cytIME xIDAT8˅MhTWyLjTbDB"XˊK]DEB1 \ ܈ЄV,(tU1R*&$ڗ1.&3h\.ssn_6̲,%uoOkeDV߁mG1DZq,n$?7RuT$IXժ$q8#mi0S [9γglڵ|g'ol^°F&|G@DNej҅ y,"mۤi, 1ƠVɰTRd zo&ûa*׮b Y@a~=ֹs <1;0@#$A{^PKX#Rr:; ð_| C`&ڻ?n(D)RIbupp&'Yy'&纘b1l A& CwzoBكھto̟:IkKm z >\ܕ+޸ӨL$Ik5ݻWqttxZ fT._B lc `q~SwW ٳTA'3 G?G"C.|{ٲQ(N _s8|$/@W]R-'UHa~74Xףk8omoUѽ&r(ʶk{ چ4"Sw5 "Tj+Pmq=yo' Nw"~w>!vI)lvBЀfwV&wSeuiv;,˒."t%#7 #̂n¾I,// aT*NժNԱs}||G}kڧlW(PxzҼvL6MM4KDtr98xB<~"7ZlŋRt_/E Y_pa^~0~߲8Gxxo eTZ}gp`8w,KKEA,Ǩ[sC~"NQPcIZ;3jN27пnN@HT%Vv2q733ol7Y#*,m<*b*j5rfVQH8GVߪUqd+tfr[|[_Yg7]]N}s]bYUzA}i ("CSrρp*DB)8t& J5 .mHb19Nj3K p &fFJ4mOt2Ts2CVsKHjRwt@YU#fNVtJ H'y\ s fV8iJD3 (lM45 ]Iغq;k+w}҅zXb}*3Fa/5D 'OuL  }r**[griw lf f4bW=DS,hl1~Q]IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/document-preview.png0000664000175000017500000000213214575335363020745 0ustar00dmitrydmitryPNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<IDATxڵ]H[g䜓sLmaT-mݨl`7e7BVW,K;/v3X֡v!%Ft][hj|{+ vic<=|}#0H בߴA L3E b? Ereg@ *N E`龹I(0 οa&|{{[EO{?;|ktԇ hxud2>srurfW?M"go ~y4vQs@]P%TTB ~Kȥz&g 2 { UadTFR4G.݊[[P [i&V쒅Q7jAʦHCKkjjNQ{ Z%$f!# 0гj `PH1C:sdqiSa8aZQrx /*5)di]͹ aj&Z[[Wi0~:;ڢÑD1!ҡ>SF+t˸MTTFQ/@ $ rJC,-- $ۭsooMw/]`/v;(b1LMM!Lu6x<.<)f"K,0*eYn ;66Z}L"opS)EQ١SBq~uիqs0UijYY##׻gffG"ϼw`vv288@ljD?yłMR),ޟ ;B__"x`0pR;ONgnbb"D3o QBQ d1^kIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/document-print-preview.png0000664000175000017500000000255214575335363022105 0ustar00dmitrydmitryPNG  IHDRj sRGB pHYs B(xtIME  lRjPLTE666::: 111aa^aaa><9sssѐǧы̌䎎==;=== l~t6F$$$%%$&'''((())))Q**)++*--,333555;;;;<51<<<===CCCDDDEEEEIIIIcKKKLKILLLONMPPQSSRSjUUUXYYYZq[[[]aa`bfmbeeegjjjjkkkklllmmmnnmnnnppprrrsnlsssttsv~wwwxxx{{z|هȈ݊–욚ޜ񝧶¯óƣ/9tRNS%((.0345aFJ@~FNT' > n1fU|Dn+ |vԕӏЄRrlkj.[Pޠe\K5i[3NO{k~5Mٷx^Ma6BeSjф!ҼrՐxUdc%J1״Ф'"p@IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/document-print.png0000664000175000017500000000156014575335363020424 0ustar00dmitrydmitryPNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<IDATxڵ=H[Qߛ{O!Ak%өCpP;wŭ"Y+th5m!b41?{x/|\8s~hJ)i80UE.Fojv'3sjڻT*T* ]7$# 뎊 n\08||rL +@(EpĊ ?|>;9k/* Ny&s[-6-;ܲsF>5MPGIlb-B'p8ihs[T*8u x`Zlmm DB ##~\&auuiNu(&ILNN( C[XGY2-#[g_a\01+++-ax#tw?a5ՏѤX..ED*Qjxv^@uB%hC Xa}Jiڭ  :mEWW9w5^g2)Ӭ(]ɑS7IU0 VAAA^7*0%* >ԥaIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/document-save-as.png0000664000175000017500000000232114575335363020623 0ustar00dmitrydmitryPNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<NIDATxڵmlE{* J[l b@LK/Z*؊Zb%! /@BP 1AH  UFP- \KKzwۻٻu6Yf63>8t]`ieUO ȱm}s=N%~C((J 7[عm H`NCC]ݔc~\ ]ะ0b3veeb{#yi:!( Wҭ D.1԰g{W+oM_&<Ӏ?\D$*k]Op,LWC dYú Rlm0XZC$GoX茅g; TmcaS-o9+9_U$` `9=13i?:#&uJ.=qgzV,QXE (3y[lfױs3ޢy&xf*65A!I\Ī-R>EF~&ol%A&+ޱ,sBV^⦪du]2nL0$28"R̚ZH<4iΟ"+/;n~LKNK/OSiڗjG͵YHE D~*Sn1M|guR\m s]_ҥ%0<lLZRJ[hig2YJ3NR`st>6>uqݼ09R(DBsA8p<\C097Y+$ƱEKM,qsѕ)d2'qXc:`fI`ݚոڗCqjQ8ma8{ʂ5'wt BPi>9ɍ S;~v\4ĹaV:r#dd̰\fw0:[dp}@VQl4?O!0T8) C<}iZًr^z{{%~!"8ȢvaCpN@XX z S pnh_o4us1c~"IIQQs[,fjoLv}/3 [ kʃHyoRO58@~;Bb4T[woN JX< zٿ 6C0s$ftJb`{fi v//F٫/Ds!UՍ4`Ҽ8j\(l+P7>v yhũL0o{͑WxR/)E}JIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/edit-cut.png0000664000175000017500000000110014575335363017160 0ustar00dmitrydmitryPNG  IHDRnsBITUF pHYs B(xtEXtSoftwarewww.inkscape.org<IDATxڕOHqtahKCCRz AyPt < g#b a%f[Pα-7(lsH;1HnbsG}| 7'ű3ƔM6 ӝ黣aPA^٭Ic?T =B)lEJK˸ki\mKR-C-C^>>AAAD GGGIIIK( N( RD9RRRTTTUUUX(YVT]]]_<"`-`?%dH0fbagREic`l4ooopVFtG!w8xDxxx{]C|A |eP`4b9c:rKyUgFtRNS #'.3CYfaڴ*IDATxڵMR0F$m!H-Pʀٸrƅ'p9qԊEhJ6:зo=DeZZ>duؠY鯆ӶaFշ6zBT?SmN( vxTzp*˥Ȼo$uS=ұq]/9)>Q}=x|YO]O&do+3FL+[+r:esT-;L?UvE3`,XLsC!]# fh| isƷtj2B-6_29, IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/edit-paste.png0000664000175000017500000000171014575335363017510 0ustar00dmitrydmitryPNG  IHDRĴl;sRGBbKGD pHYs cytIME 22OjHIDAT8ˍToF}wGZ,[K`9ET[) ` nEQC%im&ÀCtP`Yq$rEaį E? <>{!1 D)e ^F\N.}t|...@DST.*۶/1??/JEDD|ߗKt:v<ݕA"5Zkض f6[zu/7E;8>-r!@=*18X:DCqH%A)f8ӈi&4XJA)8Kx0M& *T<@e׊x!# ar $xdXFQ̉S?h5TBo!>RZkf#N*,q}z "X ܾ(F稷R&:FƝ;G}֖e!SSS#Efff>="A Uߺ<ӖeazzB(n7fFՂ#m, wvU}=\.crr ɘ@9 Ǚf/w<5 ZnZk_fn75ܮasv͑gopsec?\׭rI 9 D$DLoxoz/ZnIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/edit-redo.png0000664000175000017500000000233514575335363017331 0ustar00dmitrydmitryPNG  IHDRĴl;sBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org<ZIDATxڵk\Uǿw&L&GټZhE+VBPх΍_Tp!pP(RRE6&ih$޹Ð6pq؉>񘒹R]~sfyx'Љx8܄0I\ҋwroI)9 z![Oaݡ"z"0.SuX.azX& '{w N ONT; v !lm XMhDkwǞD\;~D#8`@B TiKqվz]UV dPHA`|2 7aHP@jt4ّHD) lVAF97P/bhM ef ~T?;FU*WtTX$EETP_eM\b֕Rp;Q JFIxG.\.P2U8~] o+>S&"}`H~XȤحmSqip؃dp<Iԕ ZyAUg# yH6O~[;4"WZ_^5"oA)BC4uaΝ l*A[vT "(% k:/#PQ\zV`|Imh"ճeak({bÖ}7X ԬόR:CBK9Cq) kJ$ WVh#Qb!r وlahWCW;6IW Tp[Y0p"c<7n) d}:|8 #9G+qռR'x[e͎=EX'LFib2_/EJZI fM#sqp476fNc&BJA*'CG- Ȃ$qY [Z[JvWámK';"aUGp&DU*l| aUO r[ :EM7n'AA!ʵۋ~>p#2FZARyUxRX=9An~"@IئtuͼV*s[٤tdl0?.ԁOmGG yIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/go-next.png0000664000175000017500000000165414575335363017041 0ustar00dmitrydmitryPNG  IHDRĴl;bKGD pHYs cytIME /9IDATxݔohVUǿ}={ 4*(i$6E %T,|")Bd( ^:TЬ)D)ksϞ{ۓ=̦"}/ps3t\o_'܇`,Z_/'=O]7uS׷ ^W4It1>.Q K^7mhX{-J=_@b,KF1t!O.\x㶯ZUel") iUE %;fLfsa7~GԼ]q]@*l k [kћ1rlnͷ%|GE&H<Ц^?l{[^GNˢq9p] !Pk!]B> cwy6켲D ߲D ? U$]"V #?([au|ԱH [0B@?gᆫrG/;aD:p4#-{Mr{hfD,ݺȾ\lo(:q4} ]ge֟޼AIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/go-previous.png0000664000175000017500000000161314575335363017732 0ustar00dmitrydmitryPNG  IHDRĴl;bKGD pHYs cytIME 4$z,IDATxݓIhA_UwLY-&* x4ADA<EozS8B\.ndzz;&*z5 _S7_XZ1nJSɋ-UN4ͮntu/ 5"(7ͪ]c]Υo*ҚaWϮi;s͌xق'Əl^5V A0,fQ1oA bТ?nT%,^~h۪z(܂E^c!K D)h$P>}'h7gTvضBL˚+6PČlqtϙOА0`J?s<\3Ҷ}CVɪ&8N';;4_yy>aanف8nh=\SϾڊ|޾yM/BzɁTW`sS㘘Lͻ[u#}ZB>/VD:*&|3춚AσKOۻs5vu5X4Sjj;+Utٳ9GV}WQ:B{*yF,ijlrAMyZK `Mmjie](n:^JY!R*<QK b@UiUٞ?ÃC.+3ڏvUnl+=K^Xl v[^ Ft"~G̏r$`4DJPXX]d < VlGFc.c`Tsc!$"VۍuHm+]Hq;f)T bo:u} R5е I;8Rk G6 斀y ~A[RCAMp=kHh; l t=#drԕcH .$;\IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/internet-web-browser.png0000664000175000017500000000173414575335363021543 0ustar00dmitrydmitryPNG  IHDRĴl;bKGD pHYs^tIME  4Q?iIDATxՔKlUyx<؎[v[qS$Ef1@ODY\+ZfeR">b}s3Gn32$c4]ذ{\ 'a; ' 'fW6cV/W`ڨ4D (*KhX]e9Uq=M !?&kvJ"v$1QoӖe*R:T'IGAd~B&৒"UEiQ;"igB,f/Sh"-zTI-oooR\o`H=bQCft$ПG9esG$}c0N"+.** **.II]~~www~~MIC**% **1IIe~~~~UIG**(**4IIj~~eee~~ZII+****5IIl}}[[[}}]II-****6IIm}}}}^II.****6IIm}}}}^II.****6IIm}}}}^II.****6HHl}}}}^HH.****6HHl}}}}^HH.****6HHl}}[[[}}^HH.*)**6HHl}} }}^HH.*)**6HHl}};;;PPPGGG^^^}}^HH.*)**6HHl}}###}}^HH.*)**6HHl}}GGGBBB___444}}^HH.*)**6HHl}}+++}}^HH.*)**6HHl}}\\\ }}^HH.*)**6HHl}}kkkOOO}}^HH.*)**6HHl}} ^^^}}^HH.*)))5GGj||zzzxxxJJJ;;;||]GG-)())5GGj||EEE:::||]GG-)())5GGj||---@@@||]GG-)())5GGj||EEE111{{{||]GG-)())4FFj{{ RRR^^^iiiooosssssssssnnn555{{\FF,)())4FFj{{pppJJJfffffffffffffffffffffggg>>>999{{\FF,)())4FFj{{PPPaaaffffffffffffffffffffffffVVVBBBVVV___{{\FF,)())4FFizz...oooffffffffffffffffffffffffqqqxxxiiizz[FF,)())4FFizz tttffffffffffffffffffffffffhhhzz[FF,)())4FFizzpppfffffffffffffffffffffffffff\\\888 zz[FF,)(((3FFiyy gggfffffffffffffffffffffffffffxxx%%%yyZFF+('((3FFiyy---ffffffffffffffffffffffffffffffkkkBBByyZFF+('((3FFiyyzzzFFFfffffffffffffffffffffffffffffffffQQQLLL~~~yyZFF+('((3FFiyyeeeWWWfffffffffffffffffffffffffffffffffsss YYYyyZFF+('((3FFiyyPPPeeefffffffffffffffffffffffffffffffffnnn'''IIIyyZFF+('((3FFhyy:::nnnffffffffffffffffffffffffffffffffffffBBB]]]lll"""yyZFF+((((3FFhyy%%%rrrffffffffffffffffffffffffffffffffffffooo yyZFF+((((3FFhyyvvvfffffffffffffffffflllsssvvvvvvtttqqq___aaa...yyZFF+((((3FFhyyJJJKKK===---:::___yyZFF+((((3EEhxx'''%%%xxYEE+((((3EEhxx$7!!J''[++i++Y CCCxxYEE+((((3EEhxx00m444422--''!!uuuxxYEE+((''2DDgww""&&&"""wwXDD*''''2DDgww**2wwXDD*''''2DDgww00''SyyyZZZwwXDD*''''2DDgww%%%4400n\\\mmmwwXDD*''''2DDgww8886644???wwXDD*''''2DDgwwKKK55|22"""PPP555wwXDD*''''2DDgww^^^22m**wwXDD*''''2DDgwwqqq,,[JJJJJJwwXDD*''''2DDfvv$$H vvXDD*''''2DDfvv29HHHbbbvvXDD*''''2DDfvv))Xsss vvXDD*''''2DDfvv22sVVVFFFnnnvvXDD*''''2DDfvv!!44999 vvXDD*''''2DDevv))11EEEqqqvvWDD*''''2DDevv//(( vvWDD*''''2DDduu&&&33CCCtttuuWDD*''&&1CCcuu99955 uuWCC)&&&&1CCcuuLLL44|?AAAvvvuuWCC)&&&&1CCcuu___11m,,^mmmuuWCC)&&&&1CCcuurrr,,]22vPPP555zzzuuWCC)&&&&1CCcuu$$H44333uuWCC)&&&&1CCcuu211,,,}}}uuWCC)&&&&0BBctt''ttVBB(&&&&0BBcssssUBB(&&&&0BBcss!!"ssUBB(&&&&0BBcss))##EssUBB(&&&&0BBcss//..bhhhggg"""ssUBB(&&&&0BBcss&&&2244{JJJssUBB(&&&&0AAcrr9994444---AAA...rrTAA(&&&&0AAcrrMMM44}//rrTAA(&&&&0AAbqq```11n%%KKKqqTAA(&&&&0AAbqqsss,,\aaaqqTAA(&&&&0AAbqq$$J)nnnqqTAA(&&&&0AAbqq3%%JqqTAA(&&&&0AAbqq00gbbbSSSqqTAA(&&&&0AAbqq55DDD===qqTAA(&&&&0AAbqq44((( qqTAA(&&&&0AAbqq((.. }}}qqTAA(&&&&0AAapp..##+++666ppSAA(&&&&0AAapp(((22 BBBppSAA(&&&&0AAapp;;;441LLLppSAA(&&&&0AAappNNN44}))RzzzMMMaaappSAA(&&&&0AAappaaa11n22m\\\EEE444ppSAA(&&&&0@@`ppttt,,^55???999ppR@@(&&%%/??_pp$$J33!!!$$$ppR??'%% $$.>>^nn4,, nnQ>>&$$ $$.>>^nn ^^^nnQ>>&$$ $$.>>^nn &&&wwwnnQ>>&$$ $$.>>^nn8\\\vvvnnQ>>&$$ $$.>>^nn''++XtttnnQ>>&$$ $$.>>^nn--33sWWW$$$nnQ>>&$$ $$.>>^nn(((2255999nnQ>>&$$ $$.>>^nn;;;4422nnnnnQ>>&$$ $$.>>]mmOOO33~**666IIImmQ>>&$$ $$.>>]mmbbb11o>>> 555JJJbbbuuummQ>>&$$ $$.>>]mmuuu++^ 777[[[mmQ>>&$$ $$.>>]mm##J9 BBBzzzmmQ>>&$$ $$.>>]mm4--^ <<>&$$ $$.==]ll 33w!!!kkkllP==&$$ $$.==]ll 55bbbllP==&$$ $$.==]kk22,,,kkP==&$$ $$.==]kk&&((ccckkP==&$$ $$.==]kk--OOOkkP==&$$ $$.==]kk(((22"\\\kkP==&$$ $$.==]kk<<<33$$FIII```tttnnnWWW???hhhkkP==&$$ $$.==]kkOOO33~//eiiioooKKK kkP==&$$ ##-==\kkccc00p44|KKK```&&&EEEkkO==&## ##-==\kkwww++_55---QQQ kkO==&## ##-==\kk$$K//QQQ [[[kkO==&## ##-==\kk5$$///111kkO==&## ##-==\kk  WWWkkO==&## ##-==\kk ,jjjkkO==&## ##-==\kk''NNNNkkO==&## ##,<<[jj&&00kcccKKKjjN<<&## ""+;;[ii--44EEEiiN;;%"" ""+;;Zii)))1133&&&WWWiiM;;%"" ""+;;Zii<<<33,, iiM;;%"" ""+;;ZiiQQQ33 888iiM;;%"" ""+;;Ziiddd00p777[[[iiM;;%"" ""+;;Ziiwww++_5555iiM;;%"" ""+;;Zii$$K))U{{{777&&&iiM;;%"" ""+;;Zii422q]]]555tttiiM;;%"" ""+;;Zii 44>>>iiM;;%"" ""+;;Yhh 22 dddhhM;;%"" ""+;;Yhh** hhM;;%"" ""+;;Yhh''333~~~hhM;;%"" ""+;;Yhh-- hhM;;%"" ""+;;Yhh)))22=___hhM;;%"" !!*99Wff>>>33++]uuummmffK99$!! !!*99WffQQQ33~22vWWWHHH***ffK99$!! !!*99Weeeee00o44888eeK99$!! !!*99Weeyyy++^00eeK99$!! !!*99Wee##J&&AAA{{{eeK99$!! !!*99Wee4{{{___eeK99$!! !!*99Wee !DDDeeK99$!! !!*99Wee !!E)))eeK99$!! !!*99Wee,,coooeeK99$!! !!*99Wee''22|QQQeeK99$!! !!*99Wee--33333%%%eeK99$!! !!*99Wee+++22--777eeK99$!! !!*99Wee>>>44##vvvNNNeeK99$!! !!*99WeeRRR33~ HHHwwweeK99$!! !!*99Weefff11o*eeK99$!!  )88Wddyyy++^##MddJ88#   (88Vdd##J..ijjjMMMddI88#   (88Ucc344KKK]]]ccI88#   (88Ucc 33---UUUccI88#   (88Ucc--ccI88#   (88Ucc""uuuccI88#   (88Ucc'' HHH ccI88#   (88Ucc...~~~kkkccI88#  '77Tbb+++22''P bbH77" '77Tbb???4411lcccbbH77" '77TaaSSS33}66EEE000aaG77" '77Taahhh11o55&&&mmmaaG77" '77Taa{{{++^.. KKKaaG77" '77Taa##I##kkkaaG77" '77Taa3 QQQ???aaG77" '77Taa 2999aaG77" '66S``++R|||%%%999``G66" '66R__44n]]]$$$888__G66" '66R__''99???"""NNN__G66" '66R__//77 WWW ooo__G66" '66R__,,,3300iii__G66" '66R__@@@44%%NNN @@@__G66" '66R__TTT44} lll000__G66" '66R__hhh11n5OOO\\\__G66" '66R__|||++]..Tvvv|||XXX444'''__G66" '66Q__##H88oWWWvvvcccMMM999&&&+++__G66" '66Q__2;;222__G66" '66Q__ 99CCC__G66" '66Q__11!!!{{{__G66" &55P^^%% WWW^^F55! &44P^^(( ddd^^E44  &44O]]//##7<<<]]D44 &44O\\,,,4411WDDDxxx\\C44 &44O\\BBB55((..4488::====;;x99l0"""FFFbbb\\C44 &44O\\VVV,,V777766y44m00`**Q$$A0;;;___\\C44 &44O\\iii """000000;;;@@@AAAVVVjjj\\C44 &44O\\}}} 000???OOO^^^mmm|||\\C44 &44O\\,,,;;;JJJYYYhhhxxx\\C44 &44O\\\\C44 &44O\\\\C44 &44O[[[[C44 &44O[[[[C44 &44O[[[[C44 &44O[[[[C44 &44O[[[[C44 &44O[[[[C44 &33NZZZZB33 &33MZZZZB33 &33MZZk8---"ooo7fԬَK```-AAA'EɅk8---"{{{4]ܦՐK```-AAA'C۸o8---"{{{4]ɘS\\\/AAA'CӀZZB33 &33MZZxxx3#333<Πh  _ߦxxx3KKK)ԛ޼n R֭ccc>KKK)ۖޮw/ RZZB33 &33MZZߙA 1CCCAڑ ,yᗗBRRR5ʛ#nuuuS&ddd.ʛ4,lZZB33 &33MZZ```- "26ձm /]\\\/ -ױz% Q???A* !z3/ KZZB33 %22LYY退4 (27׋ #2oooo< 5Ȕ+ i\\\H0 555"Ø22# `YYA22 %22LYYH  12===G  ,2ǓV  &DDD@ݻ2    ǓY2&  ccc,22+  ؉YYA22 %22LYY  *22F  %2(((:ٳ'  2pppP.  +++6Զ22  ȃZZZc22%  >>>%YYA22 %22LXX4  %22 Oժ  22\\\H"  .5ԫ2'  'VVVJ2.  %A22  sXXA22 %22LXX  #22Hd  22777J2   +2Тf2%  %@@@@32+   Уxxx=22  ___+XXA22 $11KXXlj   11Dppp/  /191  (1a41$  $111(  b Z91/  XX@11 $11KXXb  !11F^.  01;h1  *1---911% %1Ūsss11*  ,,,:X;10  ƪXX@11 $11JXXmmmT  %11KX1  11@eeeX1"  .1611'  '1HHHx51.  "2X@11  XX?11 #11HXX444S  *11Ta1"  %11I111S1'  11H41-  .1!!!s=11  ';XI11%  "XX=11 !00DWWGGGl$  008Wm:)  +01UDDDm0.  &00bG00   !03555H00&  .K`S10+  ,WW80/  00>VVggg2  '00GVP0   #00<f___40%  /04g00+  +0DWWWX30/  %0gpV<00#   DVV40+  .06VVP( #005Uf[[[g5- .01P}Q0/  *00W[[[=00% %01gpE00*  /DhhhZP10.  .`VQ00(  )00SVh:& !/00KYhhhU0+ -00Bkx90. (00;^^^o200$ $00J"""]700( .4b^^^uVA00, +I'''uVG00$ %00FVEEE~_3( %000DVu mE0, !.009_888j30/# *004q [000& &00;z777}R400* #/0VwgU800-! ,;gV;00 008Vj[3.# ,000CVqFFFmC00& (0009]e300* %/004mCCCX100-! !-00;vyQ400/% *00RrCCCdT8000(&0:duȻS10+  )00Mnnnm^80!.001GYv999pI00&)000>ckkkm800,$000;s999b300//00Dzkkk|W7000$,04Xv888lU>000)&0BepB00$  !00:888vfJ'"00:Qe{]9-005Otzzz666}Q00*01VvF00%%04`zzz666lE10*0Ciy^K5003Tk{{{{gggt30.  *00~~~u:::hh*#00HV{nM.00=cvvv888v20 +03{f00%%0A~vvv999X30+ 0]vnV=00@hnvvv?00%   004zzzh*#00GUzEEEvM.00=clllv20 +03{EEEf00%%0AlllW30+ 0]KKKmU=00@ jֿ00-  &00ϣ-#00GU򈈈~.00=HHHy40 +03vvv00%%0^^^\X30+ 0qqqU=00aaa\Z00!  ,0999:%%%0#00GU.00= 80 +0300%%0|[30+ 0U=00|00&  .0ϕ%%%0#00GU.00= 80 +0300%%0|[30+ 0U=00|S0*  -0&&&/"//GU-//< 7/*/2//$$/{[2/*/U<//{Ҙ/*  -YYYB&&&/"//GUí-//< 7/*/2//$$/~[2/*/U<//~/)  )O5550!..GT,..;...8.).1..$$.\1.).T;..1&  %nnnH5550!..GS,..;...8.).1..$$.[1.).S;../!  111/666/!..=Gܼ,..7...7.).0..$$.M0.).G7..ώ&  [999-....(+..Ņ///6-&....  .Ņ+++5..&-...+΂eee:  TGGG$$...,.Ņ0005" *..& &Ņ+++5.*"..,}ܗttt7  jjj)[ׁۅݕݕݕݕݕݕݕݕݕ))) !!Հݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕޔ^  Hݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕޔ'''! Հݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕb Dݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕ$ ޔݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕݕb!  Dޔݕݕݕݕݕݕݕݕܒ؃zL000                                                       ??~??????????????????????????????(     $$$###################################################################################################"  %+,-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/,,* %,3>HKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJB8-+*1BKSeqvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwskZLG7,#+3IUr{_K<," +5J]mM@,(1J_SSSϧxxx rL:* ,BT"""[[[eI/#'3Jr+++ooo~P>+ +=UMMMgG+*FdwI1$ ,InZZZ~L7' 0ItLLL~Q:* 0Iurrr}T;* 0Iu}T;* 0Ht}S;* 0Hsxxx TTT}R;* 0Hs 333}R;* 0HsJJJ&&& $$$}R;*!0Hsrrr}R;* /Gs'''ddd^^^|Q:) /GsjjjTTT|Q:) /Fs@@@sssuuusssqqqZZZbbb@@@{Q:) /Fs!!!CCCffffffffffffDDDwwwVVV{Q:) /Fs___ffffffffffffrrrzQ:)/FroooffffffffffffoooWWW ~~~yP9(/FrsssfffffffffffffffCCC+++^^^yP9(/FqvvvfffffffffffffffpppXXXRRRyP9(/Fq}}}uuuffffffjjjrrrxxxxxxLLL(((yP9(/Fqhhh&&&&&&yP9(/EpTTT++W22m55}9988884411dpppxO9(.Dnlll 99 ///wN8'.Dn**88RRRwN8'.Dn22..kkkwN8'.Dn88nnnAAAwN8'.Dn:: QQQvN8'.Dn;; @444==="""vN8'-Dm9900evM7'-Dm44o88@@@ vM7',Cl!!!++Y;;uL6&,Cl555 @88888&&&uL6&,ClHHH&..uL6&+BjZZZ iii***(((sK5&+BjnnnKKKsK5&+Bj))$$G...333sK5&+Ai2233looorJ5&+Ai88::FFFqJ5&+Ai::<<)))qJ5&+Ai;;77jjjnnnqJ5&+Ai99++$$$qJ5&+Ai33pcccpJ5&+Ai""",,['EEEyyypJ5&+@h555!!B((P))) HHHpI4&*?hHHH&55r ///pH3%)>g\\\ <<LLLnG2$)>gooo;;)))nG2$)>g((55$$$111nG2$)>f11''{{{mmmQQQmG2$)>f77///EEEXXXrrrmG2$)>f:: 222fffmG2$)=e;;=DDDlG1$)=d9922o ___kG1$)=d33q<<BBBkG1$)=d###,,[99nnnjjjDDDTTTkG1$(=c666 B22XXXkF1#(=cJJJ'##vvvZZZ ZZZkF1#(=c]]] YYY444kF1#(=cppp9:::$$$kF1#';a''.._NNN%%%iD0"';a1199EEEiD0"';a77==|||iD0"';a:::: iD0"';`;;11MMMhC0"';`99""qqqjjjhC0"';`44r SSSmmmhC0"&9_###,,\!!?555'''fA.!&9^777 B11deA. &9^KKK';;...eA. &9^^^^ ??RRReA. &9^sss<<aaaeA. &9^((11VVVeA. &9^22 kkk///eA.  %8]88MMMd@- %8\;;''F///}}}!!!d?- %8[<<55ktttc?- %8[::??OOOc?- $7Z44q@@[[[b?, $7Z$$$--\;; a?, $7Z888!!B00hhha?, $7ZLLL&ggg000iiia?, $6Z``` "HHHiiiXXX`?+ $6Yttt++M)))ggg XXX_>+ $6Y))99r ???_>+ $6Y33@@AAA***_>+ $6Y88AAccc888 _>+ $6Y<<;;IIIpppddd```XXXCCC+++ttt_>+ $6Y==//###~~~_>+ "4W:: ddd^<) "4W44r*LLL];) "4V&&&((N44::<><<99{55n..[''J  ---PPPttt\;) "4V999!!!000???---\;) "4V\;) "4U[;) "4U[;) "4U[;) "4U[;) "3S֔ΌצԏяܱܨьԓמЉؘԕъۣݹёҎZ:( "3Sē@ &zݟ```-@@@,˙}'''!}}};޼孭`QɃHmѧLLL9FFF(ڏZ:( !2S(((  &{{{U҈ #|X !֯eee: OOO*. D- oY9' !2SMMM(  0  -εǍ  -] |||D333< s2"  ީY9' !2Rˍ *>T'YYYP'''.  %~,  "Ѷ/   rrrp2  7X9'  1QK  (<&  &6'  $GGGA*  {iiif. dzK1 X8& 1O888;  ,B'  )<+ &<. $wwwi$$$\1  !O1  X6& 0KSSS_   0N;  /O3  .Z0!  +}}}@@@|2%  )a4&  -W2$ .C* ,9f---g) *5vQ+ (4WWWF- &8uuuD/ #D"""F0" !WP0! '6X*!-5[888K+,3bVVV@- *1j<."(3sv;/$&9===l>0%%DD.   0_3/<c IIIY0.:k333Q/*;qlll}L0'?uxI0!%F yGGGrH1$%P9994&*)))>I0O[[[=0QDDD///1-Ypppy0!* cm2$'###tTTTb6&.NNN/  .0Oe0GGGe 3-0!*2$'ccc6&hhhG6669% !eeeG0Op0WWWl3-0!*2$'uuu6&{{{OƎ'  !q˲/Ny/iiip3,/ )1#'6%U'  d׻.G.xxxq2+«.(/"&4%Zݤ   OOO*+.u)[.'֛,$-"y. QġL  lll-H]]]]\< X]]]]]]]]]]nnn, MMM(]]]]]]]]]]] 9]]]]]]]]]]O G]]]]]]]]]]?V]]]]]]]]]]ggg/UUU$\]]]]R9                ?????????????(@ @ '9<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<:-6Vpu\;!7dFFFƁ܅݆݈݇ފދތߎߎߏᔔᖖᗗᘘ♙⛛✜㝝㞞㟟䡡䢢䢢䡡䟟䞞㝝㜜㜜♙☘◗▖ᖖᓓᓓߎߍߋފވއ݆݄݅WWWm< )U%%%_/ 7o;;JJJD>>???}}}C9SSS```55**4___}}}C9TTTsss;;))K???~~~C8UUU>>44mggg~~~B7UUU@@>>000 A7WWW>>@@nnn@6WWW99};;ttt@6XXX11e00VVV[[[@6XXX((N999:::@6YYY))@**8@3[[[,,2++Rsss=3___<<<77u,,,=3```OOO))::UUU eee=3```ccc4444+++aaa=3cccvvv::::}}}<3ccc??,,BBBiii999!!!<2cccAA557%%%fff<1ddd>>**>LLL:1ggg::..X***}}}:1hhh11f;;~''':1kkk))PBB[[[:0mmm**AAAIII 90mmm,,4::jjj90mmm>>>++LLL80nnnQQQ))114{{{8.rrreee55))@"""'''6.rrryyy;;11]ppp6-sss@@??ggg+++5-rrrAACC6665,uuu??BBIII,,,5,uuu::::eeexxxNNN lll5,www22f))((())) aaa5*|||**QXXX3*|||##.>>}77m..Z))L++CEEESSS```ppp3*}}}3*~~~3)3)򸸸Vqqq?֛..."""Țچ;Vnfff(ӺCCC* x덍SA3(y WWWO  $~~~Cy GGG+###,̯s K2'```55 !# ...7|||i% o@/%SSSS!G +4 +++Yooo!(3  W% 1)n5"@bbb[!,httt4BM#*GGG~444{3IK%,$ .&iii:::9F%'aaadGGGe"/kkkLDŽ&zzzKDDDO$'!.̺٭ t$αP___Kع"%Ǝ)ؐ -FF: zzz.FFFFFIII///FFFFF.:FFFFA uuu%FFFFFccc$BFFFF6 /FF4?x8<<|~>>?|~~??|~>>?x|<>>08 08 08 (0` $#BZ______________________________________\D' $S QQQfffgggiiikkkmmmnnnpppqqqrrruuuuuuxxxxxx{{{|||}}}Հււր}}}|||{{{xxxxxxuuuuuurrrqqqpppnnnmmmkkkiiigggfffXXXY(@###888FUa ^ m%^wwws$^:::yyys$]...222NNNbbb r$\kkkfff\\\}}}q$ssfffttt o#ESPPhEElVVX&&&n#Y;;OOd333l"Y??FFrk"XAA>>qqqZZZk"X>>@@j!V>>>>ggg```i UEEz77h UJJq))vvv***~~~h TQQhZZ^SSS>>> i RVV]OOhNNN!!!fRiiiEEw!!!fQ|||))**Z $$$BBBbbb!!!fP4400v111###eO;;<>BBEE 3 555aaa000ZE000ZD000ZC՘rԾ۸pΝŷϋtөqةvҍ111XCv ҿGGG$ uuu?W Ȣ%U222W>OOO- 111C!%mmmg ] 555V4nnnt4"$ccc5H000_.';DDDV&&&D!\\\K%rrrFFFc -,,,@[[[xnnnm)@@@4& Q$!***1|||aª(Yk 2ޙĿXЎՌ`+++$ĉCޣvwޡ<➢?        AxǞyx 0 0A 0( @ **************************!:FFFHHHKKKLLLNNNPPPRRRTTTUUUWWWZZZ[[[\\\]]][[[ZZZWWWVVVTTTRRRPPPNNNNNNKKKHHHHHH? 999GGG")1*}}}4)UUU---rrrnnn3'zzzmmm3'aaennwhhp3'QQRR???===1'ZZFF0'ee>>555QQQ/&nn11-&xx ooo-%||"""888-$[[y^^^ ###+%**++F HHH+$55OOZZZ ///+#<<FFCCC)#BB==<<> AAA%yyzz$${ fɮyyy;GGG]]]!mmm*999K řze"ZZZ31o۪  "}}}X=!!!ʺ"pppIII?VVVVcccg4441!.ggg4ͼsçV"蛛= $ ((... {{{((ZZZhhh((vvvUUU(( ''#  ffqgqfb!D"#(  h)))v+++w---w///x111x000y000y111x///x---w+++w)))vjVVV}]]]sss|||vvvvvv==IIIzzz))nnn|||cccAAJrrr**WWW66{{CCeeRRQQMMM{{bbYYYxxxʸ̿ȴyyyNk{^nnnCӣgʨvƜĔȢpͭ`Ѧ(T././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/icons/retext.png0000644000175000017500000004467714575336012016775 0ustar00dmitrydmitryPNG  IHDR\rfsBIT|d IDATxy|U[IB ayX]@ 62#˸3(8*Jt aAFxF ;. IHBNY{}KUwUϧ:}ԭ{=w;`0 }p^WpHI=%=y4ssyϽy.:J" -T`rcr> 됴$O8ϓH| '4?䘖C*S0R\wC_D @ߋW 7F0z#<2ʁ|! !Ox!_1zdinxD6ee%%%\J':e9KS[O^|"=m?nƍ&\.ZntV<_>c$'֏[@雠dF:bPڍ۰a#FLLLh4vFݺu[Q4y>ݻs/U_/Fux@׿_eddQml6PB^Wu ݺuk2Ֆ=2E !W^ʋ%%% I @z8SNF-b*)#c)G^0nܸ{wgggPINxp=(r+f |AfO>dLyyΩSnLIIj43ܣ G*?*EF %<ϓn2OCB\讟 M€ɯ@rxMmmm$3|xѢE{ Ν;$u³gA!r n ęq3\s5kN~||@OaI?=ED]55j!UXp84WUUх-jkk5JޜD)VTT$=EZ)))x]GyҡAPA?Hߊ^\?im)))ce\/];@d,uɢwU*\iA,-4Qުt:-?dѐZO^!hllT5/834hKСC ]" `/H:z4Sx/G111J" {]rpi?"&ta^ѱc1gΜGjjjր"mB @d>?YfΟ?^LHDJUUU?$E7AyyyܴEEEUNgXӱ!ҼXȪTϋ˗/-))*/ ɔ r) ^N#!!~yΝWA#d51EyHHGۉ0L&ohyn;Tk1r-pk<)ů,Z=t:]͜~qݚ%yvION^'ѱc_|Aq\p:ZTbf2ލ5X;祗^ ߴ4'tZ  Ѝ1"O>Iy^ ;f4R83xJ^GFh@zWXG^/_|N:uD߿tuQSSS}ϯػwoaQQQ2<rٝȜjEuu}Ϟ=ȕo/...V;/;vFv+wv }"4[>ٓ_VVVI}yq1LJJ=Ռxlv^@^iѣD|bѡcֺmK,I^k&##cqo@H"p 96-Z4+33R_SSSs9ar66=Dn"Cv;6nw+11 }|b6\e M/ +t#Fl5555SLǁl !/TwHr:vn?~ŷ3f?^XLS푃qA(?Wn^)S6wBi@zZwn7n޼ow$y!ok@m}#n@(oTy^4Uh0bs:ng 5P&2={ز{EI^<$/j|9z6·$푩@tы%P)|>ED =oW Ay~7oᆔ=z.|Ƽ庸aÆSM9BL~W%U: Ǐ_ekI!h_%.@iNNNŧ~\n'\T_kLvjT8 49svWWW!#GXbiO{; <3- =5p1?zq>E;JR)̙Ka^1k i.|{d< >]޿ƍ͋sYhO9Mz&Cm": |]KO+>tCEY+ oB>_K>!*{Ѡ 2/O[:×_~y/@˧MZ5 7n+G3G#~KO;(U᫯ ҝXب֟F5zґY `˗+6mڴO pWr/;)g !^/7/>!~r]!V}Ѵŕ:-ͯ,92#͋J >}_:\U8JӰd@X{9*uoV@z رcAx645e ]Ј7iZBK[n 9wPf͚ x/O6mzf6I@dpܹsyyy# #搊/t|J裏8EC 6pv[ZxdXA \~i݇bT~"j!Vy]v %d J~NIHf:uŋÚ"}V^jީҫaϞ=U>TMEףiA}gC-),,(ӧO穵8@Sv~H+ıZ? zm^yDHբGZMl**=էQHM?j=VPP3|_̤ }LD!pt Lrp eee,!m1;R3ܷ8 OB%-8QROhus(--o<䃴%U:g(]&K%%%dzW5xK{ifm6%2&t#H_P҃RNU A$:/GZp}LWJ߇.Ffh >&D>@򢡡iGz |_i LWZŧ$ PZZZ->.>DyyH6p8zyE.\ZA!9[DID Mj222QCt,r^oĉ׆ddgg_GG{xU"9]gI]vL={4@̌])]8jԨԑ#G%Wn IQ%1Sfo{y111)rHKKҥKf!لO,E~oAQ?BK\[]իWc4ʑ1~ɒ%kN7ލj;wnR޽+q'xR.Iʕ+j֣pW;(.qsѢE=!NH58oq|t]v5]vYlll&w Bbb'ŅGB.|䈃bt1(q_c AQIKC"rпw-qڵo EB߿|^eȇ@F's-[&_q=t;5K ].뮻._i^c7|uR3Nǥy_Ν;k{AzZ|`0z衷|A2-b8 =8*=f`NIIر/~"33sC訶Ҹk@%t4@«:`e2R,X{c.BD(ҽӭ;wbJ п?lݺu &7y^ڬZ1cڵF2̋%K,3fL$ s~)#}Ϟ= 7n|%..nR`Ȑ!ߺuWV,# -clܸqȐ!C^Gַڴ !111^yГV8[=x7.ѣ+333D +x̙3 fTc=ѕO3gZ9pի r}3EZm&TE;:rrrrN_M)))ccc5 Nujnn].T66؈zԠN[quQTTDA}A޽ѧOݻw2~⩛AZ LYYxٌM_c0:) 8044QӡQG-Z{ + QRR۷O`@nлwodffbذa6l˺fLIgG==ص'vUMt"//yyyuʀ|Z4`:1+#lURYY]va׮]^Çcܸq?~< ъ`TyQ,rt:R2vrw^C|x1mZ2`._lV޽wMΝ1i$,^wO?7|&MBBB*--C=S!E ͐ rXmmF#t!-- 3g?9s[l?4_c̘1Uf{G.@b|ЫňɄ#Gbɒ%8y$lقӧl6G|R~xob&uuT>WPc-a+AaȑXj;^xz<7ߏZ&Px6*++EUVhZIZZ}Q8pVB>}";5|ODKBtoA}Zx0Rz=OwA߾}þVNNMƔ (dz %6V}ngEE]vm pwow$&|6mv{?SkE`2X2rP -ZRt:^`ԩa]c5kl޳.J -.NkY,il~o 5k`Æ P|7|ŋk Y% ޖ_Ʌ z Umֺίk۷'NT|[oO?T?P P{@ k׮+b裏*~'|I~a @%h`UyKkUړ^+WTة śP`.S*A+-t[] ӦMڵka4esqZJCa)6Zī\-ZzX|"K^8<[[oȣs.iӦ/X|~P <˽cTP!f~֭[>bǎү]Uݕ\0 @p)!Q8@qVX!2c'b"]:TܭVIHLL8|IIIx뭷dOp%AlЕ3}11HR1(x׮]Un[$++ wqسg}XnBUhlm@sSO`7tk,Mۇ)g:=z[nvK:Q{/#HQyj{w{t)B0U<M2 @`ĈHNNXV:,Pq@Nz0^ǵ^++c4v`fV *h3qSC ~XV:J@n;Sqlsrr2hG(**bv;#7dx4) Mbu"ԌPdRGsA˷~++]ffƒ>KfVjIzz:L*ocSciZ%X3"m(*-$ C`޽u8\{QwMfDhﵡLiq6(tGΝ5mC\1D@^Z86#77;wv̘1K:,0HRJP1Q3o;Vci> !@*p.S?#>CYi322Dm"vkdB )!,X <(P@TVVz NEw& \-n:9rDVڸ8̚5KcZ/lm둤R@;K.Qߒ۷>3f̈ Ja UhWnmL&̝;WcZ7JV*Z 4"w * JDk^GQQs}Ѩ3)^`6m:$}bJPl0|P"%{qw+!;;FcUn* eQ< ^!7c̙*?}ݸ4MBU'8(C.ǣZOMр:ѣGBvvFRoXdb@EBwlFJJJWn|'; @JJ VZLȪl .ZhW]vbֈf7lذAF.t颁dm%]t"@H*/<㥗^¶mo0rJL<]博nV2Go/@yy9VXkrшe˖a*JQ"i]&Ը^<*][,])))Xz5!@ :V4^}-QbmÖ-[~z|\ꫯڵk? `]0-Ը8Z.xMLLDbbbl{nlݺ`ܙE̙3/3H(f)XU@5U[{_VVc۶mWzX,x0c U,0b@k^TToӧ57ozU}8BK)ݎ\>}Oƙ3gp ={V{'''cŸ5W{lh 5Q ={:uBJJ Ҽ)))0^GBBBYYJKKQTTR\|(**ӧqEF>1110o:x{c0uTĵlE( _Wi@e;߹sgr-1tЖnd@)HTA!P%ٳ'&N'ꫯnLLmtJHQ}T+؜f :ÇDŽ 0`(j@@JN\wuBVV*拯ö( B)cǎ۷/郾}z3331GҭnF( >vƢV馛p!ԩeK.@jj*ӑN:!55ի:t}Z$"Zp_؈[?ơCTSW^y%^uXVUh}D2IoraP@*xzz:  Oӧ#??| ># ۷ɓxѷoHEg"MNr,*CjQkٳ'~iL! Sp0͸o>Z*UUU9sfX9%{B(&Pa `0`ʔ)ؽ{7ѩSp8?ovX3Z5|p8EсmaDUϯ+qb00k,|ט5kVX+xǢEl22Z'*BhߨӡC95dZ-[+KW_}oFX2.@4D@f$F8x).u]/:?;;qgSf(LX2r;ok2bbb+߆ŢYx'sΈd`Rl @ {kp- i Hcʕ3f{1?^#-"1NgD׺dZJUX}Nuu5?)fh9'f(v itE9ի50>K7hiҰn:fP*Fsz ]j3h Ex駵؀ qqH09]HΜ9/Yك-[nX2F ࢱHI+*3xuA^yԫ )|{`]qȧ܉7jŊ+dCp/_T)]tk5:t(WZR-XC/>"P… eO :+KPuY 0=.;XxX,v! _|X%eY2Uf,)!33Sv(W\I&NtR a(EQpPߓk/DPimTu'DLP_|D kMP3Vz @k.?0RSSe---/Dщ,HD xx<#oذGP"fps0TpMٳqWJv㏣e4?L6kz=[7qbE&xT9 ۛx j(#:=!%%%HNNFee%N'<~o:`dɱ`2j0x-xaǏرck.Y/_ǣo߾KUP,2h Xҽ{w,@ x\56L-m P8*j# xᇱuV-B`kT-܂'bĈfT^ChRۖ;d2jzddzqp:(//Mׯ_?oafΜM6ᅲǨQd{fAZZd@cc#v;l6l6P[[:xӤgTր^ǫ*xGpi%c0 zɗ?=?~| ~aܹ`ܹ|&0%:Jb跱믽'L\mG}TQ'// .T!FXw)h4zZVdee*[k'66o̔7Pl߾_4A` @!//{|M797jЧO,X@91 2pflN(ZHII_tIyFQE'G>3F9/ƦM4]#ۥ_Xm=@FF̙3bxz О8on ,G}dHwr$@Ϟ=uuu.\_{h$>>o&8Vy߰m6 %kȪJ}rѶ,wPN?^aSL< D~/NCuu5OmpI=rf({n40yd<䓊q\xꩧOAh(ZݻX&B~+$&&j"W[eܹ6m~m#p aƍæMr5\)(Ξ=;jABB֭[ ^IDAT'u~EE,Xٳgܹs*Kצ' 4 ..wuWTS$F,_)))"/JJطo&L;v[n*KQP 4H8KEDzevz7GeW"l0j1 Sł|$jL2֭CǎgZ3h$U"Vt]Qoې. .d+Tg}>g…"/Nц&uV[ 8p n怿33fhF?شi瞐wСlUXhH{ҥKق s=>:u`0ॗ^rG FRSS駟o^^m݆O?hi-[`M~1c 1; N(޽;QIzz:VZ<38{,l焪Fl@6U> 2d[Z6"vz!E`eR{-z6`D':?Aa# F끮n6i (^?LL0l%(`1S F끮r d n`0Z§_~v.@ 59r9؍ F"r/"ǁ رcGdY F "yyyeeeN=IH7'Nt:_ꫯ.DiK[ A)X"3}P[[8a„.D[N킓zW]]?xCCC'%u*;__ϊ% 8zY F3@W~7NWR?7P$[iH)?.>Oұ@ m :vҥ|@=PsXV.@() СC>qL 0*BZ@mN> Yg!$q:a\ AkzNH|yҥ\~,#GOh^6)BxpSrN89)9O=NyrJvK߯["|-9; X__(@FFq5T]N;ܹC ILLL4zH 9S)<8PP:œP|R8 jkk]UUU.?? ӣQZ"l|}*UzJB0AP'A03. F4@E/ޫp>K@1|ʁ6c  (RMZy='A0na03Q1}|7^_e|oK DB@)ua+|`?5`O%{}WЂ?#֜"9 a `O- ^߼>k٫ѕZYx3HdH,$<%eϒ0!g0Ch!Tv;5*?=&PaQbZ p/&iX0 !T|h;c5;iiX+=? m  #|Lz]\B V f?yb#%@Oh_O}2`0| Qi,  Bu <!TzW$0 t*|%?S FxA'߈Bŗ D` H-t7N'!Z/_&Z#X }B͖Z}C}%? {e%5PX:H+`0QnO8ԾU]@IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/icons/retext.svg0000644000175000017500000006132214575336012016772 0ustar00dmitrydmitry ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/system-file-manager.png0000664000175000017500000000144214575335363021324 0ustar00dmitrydmitryPNG  IHDRĴl;sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATxڥ=hqƟK#05kVTtp n" f[h@E4 $.q2[KHub3]>OHm+I-9(4]X,aop|3LT*=bu]_rZ$.D\SUcM|T*s|8L& !?1Wj('8@u%/ 70rq .EA<,0zzTz w@UJة,w lҵz: -W%`B)f_kg, Po4{ikC!;5U6No X4vfM*xao* `W+ʤ1ϟK-@M7i+ˮݔ:_-hJeIk!5狿\H,NܿhIӦ[fYIXOMT!oo1;!IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/text-html.png0000664000175000017500000000226214575335363017402 0ustar00dmitrydmitryPNG  IHDRĴl;sRGBbKGD pHYs cytIME ,JC2IDAT8˝oE]KZlQ Ĩ}DbBQ  > O 6hK Xڦt{n޾63>Ж[MqbIƇ]#e|q:k>6ZȱӃ4Zc;Ib>$_L} 5x~fx3}$[8<Ռ6 Z%ذgOة8Ҷ(2SEr3.X,8u Y"HUq.O)/HCMu[VsuH>_m ͅI .E7@KКe Sl d$2`.ИIS_Gof%f [S1YʼnN"#"JFt1ض |}]mM M6QF! QC>*qK)-cC\KJ#^ ~Q)5j Y( +vmD)<laU[O<&/?' gr\÷Ɖ ^l۾H)/?BήgKě`mKaȈedJ4|&)%2 8qT0رַ`R'u9L؊H-l }J3>|$I@5[gv.mc;ITlBvH*f4RI|ϣR.s>S*N, &v7ٹaBcj% 4T+{u"4@)Fml>;^mU|ٳA| sȶw};PJSBJUE2 Nu썢Rŭ--HJj7o0ΗKF/,T#S FIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/view-fullscreen.png0000664000175000017500000000057514575335363020573 0ustar00dmitrydmitryPNG  IHDRj sRGB pHYs B(xtIME '" WPLTECCKKbbއފ䜜堠'@rttRNS-.1jy]bKGDAIDATxuQ0@]7[c BG3|2݂}AFzy S0. z)&'?tuB ww@L \f]תH%kڭϖ({W(OS^qU ScIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710602995.0 ReText-8.0.2/ReText/icons/x-office-document.png0000664000175000017500000000204114575335363020763 0ustar00dmitrydmitryPNG  IHDRĴl;sRGBbKGD pHYs cytIME /IDAT8˝k\U3'ghHjIcJ UZ $?K|Jhh\cJJnfs;̜˜!rF{ַEaY֛0,*l'">`d+~lmm>Ӄv߁B1j\x!Ϸ9\q.]pH4]׉:B"y-6[ 4.×YlFF,-.b2M8p6l> zbo  ( RJ6~ׇ|'=HL&w<#0$]Gժ8J>B GQ @DR 탨1?(M/7@J&!KVu]0oz}7ֈFB]~6p2$JH$H$v]Z槌Iz1jgpƌSaNQhmmq,"~W1LX=74JU$ IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/icontheme.py0000644000175000017500000000321214575336012016142 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2015-2016 Dmitry Shachnev # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . def get_from_xsettings(): from ReText.xsettings import get_xsettings, XSettingsError try: xsettings = get_xsettings() except XSettingsError: return if b'Net/IconThemeName' in xsettings: return xsettings[b'Net/IconThemeName'].decode() if b'Net/FallbackIconTheme' in xsettings: return xsettings[b'Net/FallbackIconTheme'].decode() def get_from_gsettings(): try: from gi.repository import Gio except ImportError: return schema = 'org.gnome.desktop.interface' if schema in Gio.Settings.list_schemas(): settings = Gio.Settings.new(schema) return settings.get_string('icon-theme') def get_from_gtk(): try: from gi import require_version require_version('Gtk', '3.0') from gi.repository import Gtk except (ImportError, ValueError): return settings = Gtk.Settings.get_default() return settings.get_property('gtk-icon-theme-name') def get_icon_theme(): return (get_from_xsettings() or get_from_gsettings() or get_from_gtk()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6932507 ReText-8.0.2/ReText/locale/0000755000175000017500000000000014575355105015062 5ustar00dmitrydmitry././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_ar.qm0000644000175000017500000003240014575355102017412 0ustar00dmitrydmitryRb$dy Yc'gtK Fzr!2gl)"eD!! by%6vgћr #S4J)m.r25t#1$,Fr-. LW9 '0BM0e -d0 E&:uk 5(ϗ °ϡ # &TS)+I9%R>%'#n 7+. n @4 h> C j3 lai v$X W 9 $w ȗ t, Q F  c( 5 ) b ??e \' p wI J U N^ Px [ v$ Y!  U 2 # I ~># //.F3( 4Ez e7I tUGKxtˏ*)  O)$.i0s8'A*- '.1 E3*F/'* 9F/ 'D*4:JD,Automatically open last documents on startup ConfigDialog&-A8 'DE3*F/'* "DJ'KAutomatically save documents ConfigDialog 'D3DHCBehavior ConfigDialog0-'D) 'DE9'JF) 'D'A*1'6J)Default preview state ConfigDialog0'13E .7 9EH/J 9F/ 'D9EH/Draw vertical line at column ConfigDialog 'DE-11Editor ConfigDialogB*A9JD 'D*E1J1 'DE*2'EF DE'1C /'HF*Enable synchronized scrolling for Markdown ConfigDialog E3'9/)Help ConfigDialog\'.A'! 41J7 'D*(HJ('* 9F/E' GF'DC *(H( H'-/ AB7(Hide tabs bar when there is only one tab ConfigDialog$'.A'! 41J7 'D'/H'* Hide toolbar ConfigDialog$*EEJ2 'D371 'D-'DJHighlight current line ConfigDialog"'3E 'JBHF) 'DB'D(Icon theme name ConfigDialog'DH',G) Interface ConfigDialogF'F '1B'E 'D371 E1*(7) ('D371 'D-'DJ)Line numbers are relative to current line ConfigDialogE9'JF) E('41) Live preview ConfigDialog\'6'A'* E'1C /'HF D*1CJ( 'D,ED) (EA5HD) (AH'5D),Markdown syntax extensions (comma-separated) ConfigDialogE9'JF) 7(J9J)Normal preview ConfigDialog(9// EF '.1 'DE3*F/'*Number of recent documents ConfigDialogJA*- 'D1H'(7 'D.'1,J) AJ F'A0) 1J*JC3*$Open external links in ReText window ConfigDialog"'8G1 -'D) 'DE3*F/Show document stats ConfigDialogF'8G1 'DE3'1 'DC'ED AJ 9FH'F 'DF'A0)Show full path in window title ConfigDialog'8G1 1BE 'D371Show line numbers ConfigDialogEDA StylesheetStylesheet file ConfigDialog621 'D*'( (Tab) J/1, E3'-'* Tab key inserts spaces ConfigDialog9P16 'D,/HD)Tabulation width ConfigDialog0'3*./'E '9/'/ 'DEDA 9F/:Using configuration file at: ConfigDialog(D' 4J&)(none)FileDialogButton '.*1 'DEDA DA*-GSelect file to openFileSelectButton'/1, 'D,/HD Insert tableInsertTableDialog9// 'D'9E/)Number of columnsInsertTableDialog9// 'D5AHANumber of rowsInsertTableDialog6'/.D '3E 'DD:) (E+D' en_US)"Enter locale name (example: en_US) LocaleDialogH69G C'A*1'6JSet as default LocaleDialog E9DHE) InformationProxy`D' 'EC'FJ) 'DC*'() EF0 '.1 *:JJ1 ('6A ! D*,'H2G).No write since last change (add ! to override)Proxy'6A 'DB'EH3Add to dictionary ReTextEdit&'D5H1 (*.png *.jpg)Images (*.png *.jpg) ReTextEdit'-A8 'D5H1) Save image ReTextEdit8DE JO3*79 'F4'! EDA '%s': %sCould not create file '%s': %s ReTextTab*901 *-DJD E-*HJ'* 'DEDA *AB/ '0' CF* *E*DC 'D<a href="%s"> 'DH-/) 'DD'2E) </a> EF5()!aCould not parse file contents, check if you have the necessary module installed! ReTextTab 'F4'! EDA EABH/Create missing file? ReTextTab,'DEDA DE JO3*79 'F4'!GFile could not be created ReTextTabE3*F/ ,/J/ New document ReTextTabJ'DEDA '%s' :J1 EH,H/ GD *1J/ 'F4'&G8The file '%s' does not exist. Do you want to create it? ReTextTab%s EDA'* %s files ReTextWindow9F CJH *J QTAbout Qt ReTextWindow&9F 1J*JC3* (ReText) About ReText ReTextWindow ,EJ9 'DEDA'* (*) All files (*) ReTextWindowF5 (/JDAlt text ReTextWindow4'DE-11: /JE*1 4'CFJA 2011Author: Dmitry Shachnev, 2011 ReTextWindow:'EBBold ReTextWindowLD'JECF -A8 'DEDA 'D0J A*- AJ *(HJ( '.11Cannot save to file which is open in another tab! ReTextWindow<-3'3J) 'D-1HA 'DC(J1) H'D5:J1)Case sensitively ReTextWindow *:JJ1 .7 'DE-11 Change editor font ReTextWindow *:JJ1 .7 'DE9'JFChange preview font ReTextWindow:DBClose ReTextWindow:DB 'D*(HJ( Close tab ReTextWindowF3.Copy ReTextWindowB79Cut ReTextWindow"'D*1EJ2 'D'A*1'6JDefault markup ReTextWindow$*9/JD 41J7 'D'/H'* Edit toolbar ReTextWindow *A9JDEnable ReTextWindow *5/J1Export ReTextWindow*5/J1 E3*F/Export document ReTextWindow4*5/J1 'DE3*F/ 'DI 5J:) ODTExport document to ODT ReTextWindow6*5/J1 'DEDA 'DI (J/J 'A PDFExport document to PDF ReTextWindow&A4D AJ *FAJ0 'D'E1:Failed to execute the command: ReTextWindow,H69 AJC AJ 'E FakeVim  FakeVim mode ReTextWindow EDA 41J7 'D'/H'* File toolbar ReTextWindow'J,'/ F5 Find text ReTextWindow'D*F3JB Formatting ReTextWindowH69 C'ED 'D4'4)Fullscreen mode ReTextWindow07D( E3'9/) 9DI 'D'F*1FJ*Get help online ReTextWindow'0G( 'DI 371 Go to line ReTextWindowF5 'D HTML HTML code ReTextWindow4EDA'* HTML (*.html *.htm) HTML files (*.html *.htm) ReTextWindow:'/1', 'D5H1 (H'37) E3'1 'DEDAInsert images by file path ReTextWindow'/1, ,/HD Insert table ReTextWindowE'&DItalic ReTextWindowF5 'D1'(7 Link text ReTextWindowE9'JF) E('41) Live preview ReTextWindowB(F'! 'D,ED) D E'1C /'HF MarkdownMarkdown syntax ReTextWindow *-1JC 371 DD'3ADMove line down ReTextWindow *-1JC 371 DD'9DI Move line up ReTextWindow,/J/New ReTextWindowE3*F/ ,/J/ New document ReTextWindow 'D*'DJNext ReTextWindow'D*(HJ( 'D*'DJNext tab ReTextWindowA*-Open ReTextWindowA*- 'DE$.1 Open recent ReTextWindow4A*- E3*F/ F5 EDA'* (*.odt)OpenDocument text files (*.odt) ReTextWindow"EDA'* PDF (*.pdf)PDF files (*.pdf) ReTextWindowD5BPaste ReTextWindowD5B 5H1) Paste image ReTextWindowF5 9'/J (*.txt)Plain text (*.txt) ReTextWindow61,'!'K -A8 'DEDA (EC'F E'. Please, save the file somewhere. ReTextWindow'D*A6JD'* Preferences ReTextWindow E9'JF)Preview ReTextWindow 'D3'(BPrevious ReTextWindow'D*(HJ( 'DE'6J Previous tab ReTextWindow7('9Print ReTextWindow7('9) E3*F/Print document ReTextWindowE9'JF) 'D7('9) Print preview ReTextWindow.1H,Quit ReTextWindowR1J *JC3* ReText %s (J3*./E PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow'9/ 'D*:JJ1Redo ReTextWindow'9'/) *-EJDReload ReTextWindow'3*(/'DReplace ReTextWindow'3*(/'D 'D,EJ9 Replace all ReTextWindow'3*(/'D E9 Replace with ReTextWindow-A8Save ReTextWindow-A8 C@@@Save as ReTextWindow-A8 'DEDA Save file ReTextWindow(-+Search ReTextWindow*'D(-+ 9F 41J7 'D'/H'*Search toolbar ReTextWindow>*-/J/ H'-/ 'H 9/Q) EDA'* DA*-G'#Select one or several files to open ReTextWindow8'.*1 H'-/ 'H 9/Q) 5H1 DA*-G'$Select one or several images to open ReTextWindow*9JJF 'D*4AJ1 Set encoding ReTextWindow*9JJF E-DJ Set locale ReTextWindow'8G'1 'D/DJDShow directory ReTextWindow(3J7 DCF E-11 BHJ D E'1C /'HF Markdown H 1J3*1C,1 *JC3* reStructuredText ConfigDialog Using configuration file at: استخدام اعداد الملف عند: Behavior السلوك Automatically save documents حفظ المستندات آلياً Automatically open last documents on startup افتح اخر مستندات عند التشغيل Number of recent documents عدد من اخر المستندات Restore window geometry Default preview state حالة المعاينة الافتراضية Open external links in ReText window فتح الروابط الخارجية في نافذة ريتيكست Markdown syntax extensions (comma-separated) اضافات مارك داون لتركيب الجملة (مفصولة بفواصل) Enable synchronized scrolling for Markdown تفعيل التمرير المتزامن لمارك داون Editor المحرر Highlight current line تمميز السطر الحالي Show line numbers اظهر رقم السطر Line numbers are relative to current line ان ارقام السطر مرتبطة بالسطر الحالي Tab key inserts spaces زر التاب (Tab) يدرج مساحات Tabulation width عِرض الجدولة Draw vertical line at column ارسم خط عمودي عند العمود Enable soft wrap Show document stats اظهر حالة المستند Ordered list mode Interface الواجهة Hide toolbar اخفاء شريط الادوات Icon theme name اسم ايقونة القالب Stylesheet file ملف Stylesheet  Hide tabs bar when there is only one tab اخفاء شريط التبويبات عندما هنالك تبوب واحد فقط Show full path in window title اظهر المسار الكامل في عنوان النافذة Show directory tree Working directory Help مساعدة Live preview معاينة مباشرة Normal preview معاينة طبيعية Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (لا شيئ) FileSelectButton Select file to open اختر الملف لفتحه InsertTableDialog Insert table ادرج الجدول Number of rows عدد الصفوف Number of columns عدد الاعمدة LocaleDialog Enter locale name (example: en_US) ادخل اسم اللغة (مثلا en_US) It is possible to specify multiple languages, separated by comma. Set as default وضعه كافتراضي Proxy No write since last change (add ! to override) لا امكانية الكتابة منذ اخر تغيير (اضف ! لتجاوزه) Information معلومة ReTextEdit Add to dictionary اضف القاموس Save image احفظ الصورة Images (*.png *.jpg) الصور (*.png *.jpg) ReTextTab New document مستند جديد Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! تعذر تحليل محتويات الملف، تفقد اذا كنت تمتلك ال<a href="%s"> الوحدة اللازمة </a> منصبة! Create missing file? انشاء ملف مفقود؟ The file '%s' does not exist. Do you want to create it? الملف '%s' غير موجود هل تريد انشائه؟ File could not be created الملف لم يُستطع انشاءه Could not create file '%s': %s لم يُستطع انشاء ملف '%s': %s ReTextWindow File toolbar ملف شريط الادوات Edit toolbar تعديل شريط الادوات Search toolbar البحث عن شريط الادوات New جديد Open فتح Set encoding تعيين التشفير Reload اعادة تحميل Save حفظ Save as حفظ كـــ Next tab التبويب التالي Previous tab التبويب الماضي Close tab غلق التبويب Print طباع Print preview معاينة الطباعة View HTML code عرض ترميز ال HTML Change editor font تغيير خط المحرر Change preview font تغيير خط المعاين Find text ايجاد نص Go to line اذهب الى سطر Preview معاينة Live preview معاينة مباشرة Insert table ادرج جدول Table editing mode وضع تحرير الجدول Insert images by file path ادراج الصور بواسطة مسار الملف FakeVim mode وضع فيك في ام FakeVim Fullscreen mode وضع كامل الشاشة Preferences التفضيلات Quit خروج Undo الغاء التغيير Redo اعد التغيير Copy نسخ Cut قطع Paste لصق Paste image لصق صورة Move line up تحريك سطر للاعلى Move line down تحريك سطر للاسفل Enable تفعيل Set locale تعيين محلي Use WebEngine (Chromium) renderer استخدم ويب اينجن (WebEngine) كروميموم المعالج Show directory اظهار الدليل Next التالي Previous السابق Replace استبدال Replace all استبدال الجميع Close غلق Get help online طلب مساعدة على الانترنيت What's new About ReText عن ريتيكست (ReText) About Qt عن كيو تي QT Bold غامق Italic مائل Underline تحت الخط Formatting التنسيق Symbols رموز &File &Edit &Help Open recent فتح المؤخر Export تصدير Spell check تفقد الاملاء Default markup الترميز الافتراضي Search بحث Replace with استبدال مع Case sensitively حساسية الحروف الكبيرة والصغيرة New document مستند جديد Type the line number نوع رقم السطر Please, save the file somewhere. رجاءاً، حفظ الملف بمكان ما. Select one or several files to open تحديد واحد او عدّة ملفات لفتحها Supported files الملفات المدعومة All files (*) جميع الملفات (*) Plain text (*.txt) نص عادي (*.txt) %s files Example of final string: Markdown files %s ملفات Save file حفظ الملف Cannot save to file which is open in another tab! لايمكن حفظ الملف الذي فتح في تبويب اخر Export document to ODT تصدير المستند الى صيغة ODT OpenDocument text files (*.odt) فتح مستند نص ملفات (*.odt) HTML files (*.html *.htm) ملفات HTML (*.html *.htm) Unrecognized paperSize setting "%s". غير واضح اعدادات حجم الورقة "%s". Export document to PDF تصدير الملف الى بيدي اف PDF PDF files (*.pdf) ملفات PDF (*.pdf) Print document طباعة مستند Export document تصدير مستند Failed to execute the command: فشل في تنفيذ الامر: Alt text نص بديل URL رابط Link text نص الرابط This file has been deleted by other application. Please make sure you save the file before exit. هذا الملف تم مسحه من تطبيق اخر تأكد من حفظ هذا الملف قبل الخروج This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? هذا الملف تم التعديل عليه من تطبيق اخر هل تريد اعادة تحميل الملف (سيلغي جميع تعديلاتك)؟ Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? المستند تم التعديل عليه. هل تريد حفظ تعديلاتك؟ HTML code نص ال HTML Select one or several images to open اختر واحد او عدّة صور لفتحها ReText %s (using PyMarkups %s) ري تيكست ReText  %s (يستخدم PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText بسيط لكن محرر قوي ل مارك داون Markdown  و ريستركجر تيكست reStructuredText Author: Dmitry Shachnev, 2011 المحرر: ديمتر شاكنيف، 2011 Markdown syntax بناء الجملة ل مارك داون Markdown  reStructuredText syntax بناء الجملة ل ريستكرجرتيكست reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode فتح الملف بوضع العرض Create a new window even if there is an existing one انشاء نافذة جديدة حتى اذا وجدت واحدة List of files to open قائمة الملفات لفتحها ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_ca.qm0000644000175000017500000001400414575355102017373 0ustar00dmitrydmitry4bzdg y%v m7Y\' 0 Euϗ  T )+I 9(  @ la v t F  c \ pT w v Y I / 3e ( O.Ii AjudaHelp ConfigDialog.Vista prvia en directe Live preview ConfigDialogNo s'ha pogut analitzar el contingut del fitxer. Comproveu que teniu installat el <a href="%s">mdul necessari</a>.aCould not parse file contents, check if you have the necessary module installed! ReTextTabDocument nou New document ReTextTab%s fitxers%s files ReTextWindow &Edita&Edit ReTextWindow&Fitxer&File ReTextWindow &Ajuda&Help ReTextWindowSobre QtAbout Qt ReTextWindowSobre ReText About ReText ReTextWindow(Tots els fitxers (*) All files (*) ReTextWindow8Autor: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowNegretaBold ReTextWindow.Majscules i minsculesCase sensitively ReTextWindow CopiaCopy ReTextWindowRetallaCut ReTextWindow&Barra d'eines Edita Edit toolbar ReTextWindow ActivaEnable ReTextWindowExportaExport ReTextWindow Exporta documentExport document ReTextWindow2Exporta el document a ODTExport document to ODT ReTextWindow4Exporta document com a PDFExport document to PDF ReTextWindowdS'ha produt un error a l'executar el comandament:Failed to execute the command: ReTextWindow(Barra d'eines Fitxer File toolbar ReTextWindowCerca el text Find text ReTextWindowFormata Formatting ReTextWindow2Mode de pantalla completaFullscreen mode ReTextWindow0Obtingueu ajuda en lniaGet help online ReTextWindowCodi HTML HTML code ReTextWindow4Fitxers HTML (*.html *htm)HTML files (*.html *.htm) ReTextWindowCursivaItalic ReTextWindow.Vista prvia en directe Live preview ReTextWindow Sintaxi markdownMarkdown syntax ReTextWindowNouNew ReTextWindowDocument nou New document ReTextWindowSegentNext ReTextWindowObreOpen ReTextWindowObre recents Open recent ReTextWindowHFitxers de text OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow&Fitxers PDF (*.pdf)PDF files (*.pdf) ReTextWindowEnganxaPaste ReTextWindow Text pla (*.txt)Plain text (*.txt) ReTextWindowDdeseu el fitxer en algun directori Please, save the file somewhere. ReTextWindowVista prviaPreview ReTextWindow PreviPrevious ReTextWindowImprimeixPrint ReTextWindow$Imprimeix documentPrint document ReTextWindow2Imprimeix la vista prvia Print preview ReTextWindowSurtQuit ReTextWindow RefsRedo ReTextWindowDesaSave ReTextWindowAnomena i desaSave as ReTextWindowDesa el fitxer Save file ReTextWindow CercaSearch ReTextWindow,Barra d'eines de CercaSearch toolbar ReTextWindowLSeleccioneu un o ms fitxers per obrir#Select one or several files to open ReTextWindow$Estableix l'idioma Set locale ReTextWindow&Mostra el directoriShow directory ReTextWindow~Editor de Markdown i reStructuredText senzill alhora que potent ConfigDialog Using configuration file at: Behavior Automatically save documents Automatically open last documents on startup Number of recent documents Restore window geometry Default preview state Open external links in ReText window Markdown syntax extensions (comma-separated) Enable synchronized scrolling for Markdown Editor Highlight current line Show line numbers Line numbers are relative to current line Tab key inserts spaces Tabulation width Draw vertical line at column Enable soft wrap Show document stats Ordered list mode Interface Hide toolbar Icon theme name Stylesheet file Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Ajuda Live preview Vista prèvia en directe Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) FileSelectButton Select file to open InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) It is possible to specify multiple languages, separated by comma. Set as default Proxy No write since last change (add ! to override) Information ReTextEdit Add to dictionary Save image Images (*.png *.jpg) ReTextTab New document Document nou Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! No s'ha pogut analitzar el contingut del fitxer. Comproveu que teniu instal·lat el <a href="%s">mòdul necessari</a>. Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Barra d'eines Fitxer Edit toolbar Barra d'eines Edita Search toolbar Barra d'eines de Cerca New Nou Open Obre Set encoding Reload Save Desa Save as Anomena i desa Next tab Previous tab Close tab Print Imprimeix Print preview Imprimeix la vista prèvia View HTML code Veure el codi HTML Change editor font Change preview font Find text Cerca el text Go to line Preview Vista prèvia Live preview Vista prèvia en directe Insert table Table editing mode Insert images by file path FakeVim mode Fullscreen mode Mode de pantalla completa Preferences Quit Surt Undo Desfés Redo Refés Copy Copia Cut Retalla Paste Enganxa Paste image Move line up Move line down Enable Activa Set locale Estableix l'idioma Use WebEngine (Chromium) renderer Show directory Mostra el directori Next Següent Previous Previ Replace Replace all Close Get help online Obtingueu ajuda en línia What's new About ReText Sobre ReText About Qt Sobre Qt Bold Negreta Italic Cursiva Underline Subratllat Formatting Formata Symbols Símbols &File &Fitxer &Edit &Edita &Help &Ajuda Open recent Obre recents Export Exporta Spell check Comprova l'ortografia Default markup Search Cerca Replace with Case sensitively Majúscules i minúscules New document Document nou Type the line number Please, save the file somewhere. deseu el fitxer en algun directori Select one or several files to open Seleccioneu un o més fitxers per obrir Supported files Fitxers suportats All files (*) Tots els fitxers (*) Plain text (*.txt) Text pla (*.txt) %s files Example of final string: Markdown files %s fitxers Save file Desa el fitxer Cannot save to file which is open in another tab! Export document to ODT Exporta el document a ODT OpenDocument text files (*.odt) Fitxers de text OpenDocument (*.odt) HTML files (*.html *.htm) Fitxers HTML (*.html *htm) Unrecognized paperSize setting "%s". Export document to PDF Exporta document com a PDF PDF files (*.pdf) Fitxers PDF (*.pdf) Print document Imprimeix document Export document Exporta document Failed to execute the command: S'ha produït un error a l'executar el comandament: Alt text URL Link text This file has been deleted by other application. Please make sure you save the file before exit. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? S'ha modificat el document. Voleu desar els canvis? HTML code Codi HTML Select one or several images to open ReText %s (using PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Editor de Markdown i reStructuredText senzill alhora que potent Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Sintaxi markdown reStructuredText syntax Sintaxi reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_cs.qm0000644000175000017500000003024214575355102017417 0ustar00dmitrydmitryNb"hdy =Yc'gtz'rDVgl)D! by%Fv{ #S4J&mNr5t "7Fr*+ x'0B  0 E#k ~5%ϗ°-ϡ ! #T)+I9"' R7(d  @h h> la- v! $ ȗ# t) Q] | F  c% ) ! ??e[ \$6 #, p ww @ J U N^w Pxq v! Y  Uf 24 !G I ~>/+g3% zeI U*)  O&B.i,|PYi spuatn automaticky otevYt naposledy zobrazen dokumenty,Automatically open last documents on startup ConfigDialog:Automaticky ukldat dokumentyAutomatically save documents ConfigDialogChovnBehavior ConfigDialog*Svisl  ra v sloupciDraw vertical line at column ConfigDialog EditorEditor ConfigDialogPPovolit zalamovn na mst blch znakoEnable soft wrap ConfigDialogTZapnout synchronizovan posun pro Markdown*Enable synchronized scrolling for Markdown ConfigDialogNpovdaHelp ConfigDialog4ZvrazHovat aktuln YdekHighlight current line ConfigDialog"Nzev motivu ikonIcon theme name ConfigDialogRozhran Interface ConfigDialog^ slovn Ydko je odvozen od aktulnho Ydku)Line numbers are relative to current line ConfigDialog}iv nhled Live preview ConfigDialogVPYpony syntaxe Markdown (oddlen  rkami),Markdown syntax extensions (comma-separated) ConfigDialogLOtevrat extern odkazy v okn ReTextu$Open external links in ReText window ConfigDialog(Obnovit rozmry oknaRestore window geometry ConfigDialog>Zobrazovat statistiky dokumentuShow document stats ConfigDialog,Zobrazovat  sla YdkoShow line numbers ConfigDialog Soubor stylopisuStylesheet file ConfigDialog>Klvesa Tabultor vkld mezeryTab key inserts spaces ConfigDialog `Yka tabultoruTabulation width ConfigDialog>Pou~v se konfigura n soubor:Using configuration file at: ConfigDialog(przd)(none)FileDialogButtonFVyberte soubor, kter se m otevYtSelect file to openFileSelectButtonNZadejte nzev lokalizace (napY.: cs_CZ)"Enter locale name (example: en_US) LocaleDialog*Nastavit jako vchozSet as default LocaleDialogInformace InformationProxyn}dn zpis od posledn zmny (pYidejte ! pro pYepsn).No write since last change (add ! to override)Proxy$PYidat do slovnkuAdd to dictionary ReTextEdit*Obrzky (*.png *.jpg)Images (*.png *.jpg) ReTextEditUlo~it obrzek Save image ReTextEditNelze analyzovat obsah souboru, zkontrolujte, zda mte nainstalovn <a href="%s">nezbytn modul</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTabNov dokument New document ReTextTabSoubory %s%s files ReTextWindow&Upravit&Edit ReTextWindow&Soubor&File ReTextWindow&Npovda&Help ReTextWindowO QtAbout Qt ReTextWindow"O programu ReText About ReText ReTextWindow&Vaechny soubory (*) All files (*) ReTextWindow"Alternativn textAlt text ReTextWindow8Autor: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindow Tu nBold ReTextWindowtNelze ulo~it do souboru, kter je otevYen v jin zlo~ce!1Cannot save to file which is open in another tab! ReTextWindow4Rozliaovat velikost psmenCase sensitively ReTextWindow,Zmnit psmo v editoruChange editor font ReTextWindow,Zmnit psmo v nhleduChange preview font ReTextWindow ZavYtClose ReTextWindowZavYt kartu Close tab ReTextWindowKoprovatCopy ReTextWindowVyjmoutCut ReTextWindowVchoz syntaxDefault markup ReTextWindowLiata prav Edit toolbar ReTextWindowPovolitEnable ReTextWindowExportovatExport ReTextWindow&Exportovat dokumentExport document ReTextWindow4Exportovat dokument do ODTExport document to ODT ReTextWindow4Exportovat dokument do PDFExport document to PDF ReTextWindow:NepodaYilo se spustit pYkaz:Failed to execute the command: ReTextWindowRe~im FakeVim FakeVim mode ReTextWindowLiata souboru File toolbar ReTextWindowNajt text Find text ReTextWindowFormtovn Formatting ReTextWindow*Celoobrazovkov re~imFullscreen mode ReTextWindow0Zskejte npovdu onlineGet help online ReTextWindowKd HTML HTML code ReTextWindow6Soubory HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindowKurzvaItalic ReTextWindowText odkazu Link text ReTextWindow}iv nhled Live preview ReTextWindowSyntax MarkdownMarkdown syntax ReTextWindow,PYesunout o Ydek n~eMove line down ReTextWindow,PYesunout o Ydek vae Move line up ReTextWindowNovNew ReTextWindowNov dokument New document ReTextWindowNsledujcNext ReTextWindow"Nsledujc kartaNext tab ReTextWindowOtevYtOpen ReTextWindowOtevYt nedvn Open recent ReTextWindowHTextov soubory OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow&Soubory PDF (*.pdf)PDF files (*.pdf) ReTextWindow Vlo~itPaste ReTextWindow&Prost text (*.txt)Plain text (*.txt) ReTextWindow8Prosm, soubor nkam ulo~te. Please, save the file somewhere. ReTextWindowNastaven Preferences ReTextWindow NhledPreview ReTextWindowPYedchozPrevious ReTextWindowPYedchoz karta Previous tab ReTextWindowTisknoutPrint ReTextWindow"Tisknout dokumentPrint document ReTextWindowNhled tisku Print preview ReTextWindowUkon itQuit ReTextWindowFReText %s (s pou~itm PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow ZnovuRedo ReTextWindowZnovu na stReload ReTextWindowNahraditReplace ReTextWindowNahradit vae Replace all ReTextWindowNahradit Replace with ReTextWindow Ulo~itSave ReTextWindowUlo~it jakoSave as ReTextWindowUlo~it soubor Save file ReTextWindow NajtSearch ReTextWindowLiata hlednSearch toolbar ReTextWindowTVyberte jeden nebo vce souboro k otevYen#Select one or several files to open ReTextWindow"Nastavit kdovn Set encoding ReTextWindow&Nastavit lokalizaci Set locale ReTextWindowZobrazit slo~kuShow directory ReTextWindowxJednoduch, ale mocn editor pro Markdown a reStructuredText ConfigDialog Using configuration file at: Používá se konfigurační soubor: Behavior Chování Automatically save documents Automaticky ukládat dokumenty Automatically open last documents on startup Při spuštění automaticky otevřít naposledy zobrazené dokumenty Number of recent documents Restore window geometry Obnovit rozměry okna Default preview state Open external links in ReText window Otevírat externí odkazy v okně ReTextu Markdown syntax extensions (comma-separated) Přípony syntaxe Markdown (oddělené čárkami) Enable synchronized scrolling for Markdown Zapnout synchronizovaný posun pro Markdown Editor Editor Highlight current line Zvýrazňovat aktuální řádek Show line numbers Zobrazovat čísla řádků Line numbers are relative to current line Číslování řádků je odvozené od aktuálního řádku Tab key inserts spaces Klávesa Tabulátor vkládá mezery Tabulation width Šířka tabulátoru Draw vertical line at column Svislá čára v sloupci Enable soft wrap Povolit zalamování na místě bílých znaků Show document stats Zobrazovat statistiky dokumentu Ordered list mode Interface Rozhraní Hide toolbar Icon theme name Název motivu ikon Stylesheet file Soubor stylopisu Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Nápověda Live preview Živý náhled Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (prázdý) FileSelectButton Select file to open Vyberte soubor, který se má otevřít InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) Zadejte název lokalizace (např.: cs_CZ) It is possible to specify multiple languages, separated by comma. Set as default Nastavit jako výchozí Proxy No write since last change (add ! to override) Žádný zápis od poslední změny (přidejte ! pro přepsání) Information Informace ReTextEdit Add to dictionary Přidat do slovníku Save image Uložit obrázek Images (*.png *.jpg) Obrázky (*.png *.jpg) ReTextTab New document Nový dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Nelze analyzovat obsah souboru, zkontrolujte, zda máte nainstalován <a href="%s">nezbytný modul</a>! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Lišta souboru Edit toolbar Lišta úprav Search toolbar Lišta hledání New Nový Open Otevřít Set encoding Nastavit kódování Reload Znovu načíst Save Uložit Save as Uložit jako Next tab Následující karta Previous tab Předchozí karta Close tab Zavřít kartu Print Tisknout Print preview Náhled tisku View HTML code Zobrazit kód HTML Change editor font Změnit písmo v editoru Change preview font Změnit písmo v náhledu Find text Najít text Go to line Preview Náhled Live preview Živý náhled Insert table Table editing mode Režim úpravy tabulek Insert images by file path FakeVim mode Režim FakeVim Fullscreen mode Celoobrazovkový režim Preferences Nastavení Quit Ukončit Undo Zpět Redo Znovu Copy Kopírovat Cut Vyjmout Paste Vložit Paste image Move line up Přesunout o řádek výše Move line down Přesunout o řádek níže Enable Povolit Set locale Nastavit lokalizaci Use WebEngine (Chromium) renderer Použít WebEngine (Chromium) k vykreslování Show directory Zobrazit složku Next Následující Previous Předchozí Replace Nahradit Replace all Nahradit vše Close Zavřít Get help online Získejte nápovědu online What's new About ReText O programu ReText About Qt O Qt Bold Tučné Italic Kurzíva Underline Podtržené Formatting Formátování Symbols Symboly &File &Soubor &Edit &Upravit &Help &Nápověda Open recent Otevřít nedávné Export Exportovat Spell check Kontrola pravopisu Default markup Výchozí syntax Search Najít Replace with Nahradit Case sensitively Rozlišovat velikost písmen New document Nový dokument Type the line number Please, save the file somewhere. Prosím, soubor někam uložte. Select one or several files to open Vyberte jeden nebo více souborů k otevření Supported files Podporované soubory All files (*) Všechny soubory (*) Plain text (*.txt) Prostý text (*.txt) %s files Example of final string: Markdown files Soubory %s Save file Uložit soubor Cannot save to file which is open in another tab! Nelze uložit do souboru, který je otevřený v jiné záložce! Export document to ODT Exportovat dokument do ODT OpenDocument text files (*.odt) Textové soubory OpenDocument (*.odt) HTML files (*.html *.htm) Soubory HTML (*.html *.htm) Unrecognized paperSize setting "%s". Nerozpoznané nastavení paperSize "%s". Export document to PDF Exportovat dokument do PDF PDF files (*.pdf) Soubory PDF (*.pdf) Print document Tisknout dokument Export document Exportovat dokument Failed to execute the command: Nepodařilo se spustit příkaz: Alt text Alternativní text URL URL Link text Text odkazu This file has been deleted by other application. Please make sure you save the file before exit. Soubor byl smazán jinou aplikací. Před zavřením programu se prosím ujistěte, že jste soubor uložili. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Tento dokument byl změněn jinou aplikací. Chcete načíst novou verzi? (Tímto se zruší všechny změny.) Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Dokument byl změněn. Chcete uložit své změny? HTML code Kód HTML Select one or several images to open ReText %s (using PyMarkups %s) ReText %s (s použitím PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Jednoduchý, ale mocný editor pro Markdown a reStructuredText Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Syntax Markdown reStructuredText syntax Syntax reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d slov | %d písmen/číslic | %d znaků main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_cy.qm0000644000175000017500000001341514575355102017430 0ustar00dmitrydmitrymodiwl hanfodol</a>.aCould not parse file contents, check if you have the necessary module installed! ReTextTabDogfen newydd New document ReTextTab%s ffeil%s files ReTextWindow&Golygu&Edit ReTextWindow &Ffeil&File ReTextWindow&Cymorth&Help ReTextWindowYnghylch QtAbout Qt ReTextWindowTua ReText About ReText ReTextWindowPob ffeil (*) All files (*) ReTextWindow8Awdur: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowBrasBold ReTextWindowGan casCase sensitively ReTextWindowCopiCopy ReTextWindow TorriCut ReTextWindow Bar offer golygu Edit toolbar ReTextWindowGalluogiEnable ReTextWindowAllforioExport ReTextWindowAllforio dogfenExport document ReTextWindow*Allforio dogfen i ODTExport document to ODT ReTextWindow*Allforio dogfen i PDFExport document to PDF ReTextWindow:Methwyd rhedeg y gorchymyn:Failed to execute the command: ReTextWindow$Bar offer ffeiliau File toolbar ReTextWindowCanfod testun Find text ReTextWindowFformatio Formatting ReTextWindow Modd sgrin llawnFullscreen mode ReTextWindowCymorth ar-leinGet help online ReTextWindowCod HTML HTML code ReTextWindow8Ffeiliau HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindow ItaligItalic ReTextWindowRhagolwg byw Live preview ReTextWindow$Cystrawen markdownMarkdown syntax ReTextWindow NewyddNew ReTextWindowDogfen newydd New document ReTextWindow NesafNext ReTextWindowAgorOpen ReTextWindowAgor diweddar Open recent ReTextWindowHFfeiliau testun OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow(Ffeiliau PDF (*.pdf)PDF files (*.pdf) ReTextWindow GludoPaste ReTextWindow(Testun plaen (*.txt)Plain text (*.txt) ReTextWindow>Cadwch y ffeil i leoliad arall. Please, save the file somewhere. ReTextWindowRhagolwgPreview ReTextWindowCyntPrevious ReTextWindowArgraffuPrint ReTextWindowArgraffu dogfenPrint document ReTextWindow"Rhagolwg argraffu Print preview ReTextWindow GadaelQuit ReTextWindowAilwneudRedo ReTextWindowCadwSave ReTextWindowCadw felSave as ReTextWindowCadw ffeil Save file ReTextWindowChwilioSearch ReTextWindow"Bar offer chwilioSearch toolbar ReTextWindowBDewis un neu sawl ffeil i'w hagor#Select one or several files to open ReTextWindowGosod iaith Set locale ReTextWindow$Dangos cyfeiriadurShow directory ReTextWindowzGolygydd syml ond pwerus ar gyfer Markdown a reStructuredText ConfigDialog Using configuration file at: Behavior Automatically save documents Automatically open last documents on startup Number of recent documents Restore window geometry Default preview state Open external links in ReText window Markdown syntax extensions (comma-separated) Enable synchronized scrolling for Markdown Editor Highlight current line Show line numbers Line numbers are relative to current line Tab key inserts spaces Tabulation width Draw vertical line at column Enable soft wrap Show document stats Ordered list mode Interface Hide toolbar Icon theme name Stylesheet file Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Cymorth Live preview Rhagolwg byw Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) FileSelectButton Select file to open InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) It is possible to specify multiple languages, separated by comma. Set as default Proxy No write since last change (add ! to override) Information ReTextEdit Add to dictionary Save image Images (*.png *.jpg) ReTextTab New document Dogfen newydd Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Methu â dosrannu cynnwys y ffeil. Gwiriwch os ydych chi wedi arsefydlu'r <a href="%s">modiwl hanfodol</a>. Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Bar offer ffeiliau Edit toolbar Bar offer golygu Search toolbar Bar offer chwilio New Newydd Open Agor Set encoding Reload Save Cadw Save as Cadw fel Next tab Previous tab Close tab Print Argraffu Print preview Rhagolwg argraffu View HTML code Dangos cod HTML Change editor font Change preview font Find text Canfod testun Go to line Preview Rhagolwg Live preview Rhagolwg byw Insert table Table editing mode Insert images by file path FakeVim mode Fullscreen mode Modd sgrin llawn Preferences Quit Gadael Undo Dadwneud Redo Ailwneud Copy Copi Cut Torri Paste Gludo Paste image Move line up Move line down Enable Galluogi Set locale Gosod iaith Use WebEngine (Chromium) renderer Show directory Dangos cyfeiriadur Next Nesaf Previous Cynt Replace Replace all Close Get help online Cymorth ar-lein What's new About ReText Tua ReText About Qt Ynghylch Qt Bold Bras Italic Italig Underline Tanlinellu Formatting Fformatio Symbols Symbolau &File &Ffeil &Edit &Golygu &Help &Cymorth Open recent Agor diweddar Export Allforio Spell check Gwirio sillafu Default markup Search Chwilio Replace with Case sensitively Gan cas New document Dogfen newydd Type the line number Please, save the file somewhere. Cadwch y ffeil i leoliad arall. Select one or several files to open Dewis un neu sawl ffeil i'w hagor Supported files Ffeiliau a gynhaliwyd All files (*) Pob ffeil (*) Plain text (*.txt) Testun plaen (*.txt) %s files Example of final string: Markdown files %s ffeil Save file Cadw ffeil Cannot save to file which is open in another tab! Export document to ODT Allforio dogfen i ODT OpenDocument text files (*.odt) Ffeiliau testun OpenDocument (*.odt) HTML files (*.html *.htm) Ffeiliau HTML (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Allforio dogfen i PDF PDF files (*.pdf) Ffeiliau PDF (*.pdf) Print document Argraffu dogfen Export document Allforio dogfen Failed to execute the command: Methwyd â rhedeg y gorchymyn: Alt text URL Link text This file has been deleted by other application. Please make sure you save the file before exit. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Cafodd y ddogfen hon ei haddasu. Ydych chi am gadw'ch newidiadau? HTML code Cod HTML Select one or several images to open ReText %s (using PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Golygydd syml ond pwerus ar gyfer Markdown a reStructuredText Author: Dmitry Shachnev, 2011 Awdur: Dmitry Shachnev, 2011 Markdown syntax Cystrawen markdown reStructuredText syntax Cystrawen reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_da.qm0000644000175000017500000002774514575355102017414 0ustar00dmitrydmitryT*Zl)7$By 0Lf - į)*)*%_*07J6VJWTZkZSUP Rʇ"B$:s)L"nunAI k5U#F)Ω4|>b!dyYc'gt{zr DVgl)^D!m by%vG #S4J&pm r5t !Fr*U+& '0B 0 E"k 5%-ϗ°ϡ y #OT6)-+I|9"' E7'  [ @: h> f la v!) $ ȗ t)a Q F F 1 c$ ) ??e \# #+ p w;  J UV N^I Px v!_ Y H U0 2 Ix ~>b/*3$[zleHI Ujl*)  O%.i+Tbn automatisk sidste dokument ved opstart,Automatically open last documents on startup ConfigDialog2Gem automatisk dokumenterAutomatically save documents ConfigDialogOpfrselBehavior ConfigDialog:Tegn lodret linje ved kolonneDraw vertical line at column ConfigDialogTekstbehandlerEditor ConfigDialog.Aktivr bld ombrydningEnable soft wrap ConfigDialogTAktivr synkroniseret rulning for Markdown*Enable synchronized scrolling for Markdown ConfigDialog HjlpHelp ConfigDialog.Fremhv nuvrende linjeHighlight current line ConfigDialogIkontemanavnIcon theme name ConfigDialogGrnseflade Interface ConfigDialog\Linjenumre er relative til den nuvrende linje)Line numbers are relative to current line ConfigDialog(Live-forhndsvisning Live preview ConfigDialogVMarkdown-syntaksudvidelser (kommasepareret),Markdown syntax extensions (comma-separated) ConfigDialogFbn eksterne links i ReText-vinduet$Open external links in ReText window ConfigDialog,Gendan vinduesgeometriRestore window geometry ConfigDialog*Vis dokumentstatistikShow document stats ConfigDialogVis linjenumreShow line numbers ConfigDialogTypografiarkfilStylesheet file ConfigDialogBTabulatortast indstter mellemrumTab key inserts spaces ConfigDialogTabulatorbreddeTabulation width ConfigDialog:Bruger konfigurationsfil ved:Using configuration file at: ConfigDialog(ingen)(none)FileDialogButton6Vlg en fil, der skal bnesSelect file to openFileSelectButtonJIndtast lokalitetsnavn (f.eks. da_DK)"Enter locale name (example: en_US) LocaleDialog St som standardSet as default LocaleDialogInformation InformationProxyIntet skrevet siden sidste ndring (tilfj ! for at tilsidestte).No write since last change (add ! to override)Proxy"Tilfj til ordbogAdd to dictionary ReTextEdit,Billeder (*.png *.jpg)Images (*.png *.jpg) ReTextEditGem billede Save image ReTextEditKunne ikke indlse filens indhold, kontroller at du har det <a href="%s">ndvendige modul</a> installeret.aCould not parse file contents, check if you have the necessary module installed! ReTextTabNyt dokument New document ReTextTab%s-filer%s files ReTextWindow&Rediger&Edit ReTextWindow&Fil&File ReTextWindow &Hjlp&Help ReTextWindow Om QtAbout Qt ReTextWindowOm ReText About ReText ReTextWindowAlle filer (*) All files (*) ReTextWindow Alternativ tekstAlt text ReTextWindow@Forfatter: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowFedBold ReTextWindownKan ikke gemme til fil som er ben i et andet faneblad!1Cannot save to file which is open in another tab! ReTextWindowJSkelnen mellem store og sm bogstaverCase sensitively ReTextWindowHSkift skrifttype til tekstbehandlingChange editor font ReTextWindowHSkift skrifttype til forhndsvisningChange preview font ReTextWindowLukClose ReTextWindowLuk faneblad Close tab ReTextWindow KopierCopy ReTextWindowKlipCut ReTextWindowStandardmarkupDefault markup ReTextWindow0Redigering-vrktjslinje Edit toolbar ReTextWindowAktivrEnable ReTextWindowEksportExport ReTextWindow$Eksporter dokumentExport document ReTextWindow4Eksporter dokument til ODTExport document to ODT ReTextWindow4Eksporter dokument til PDFExport document to PDF ReTextWindow:Kunne ikke udfre kommandoen:Failed to execute the command: ReTextWindow FakeVim-tilstand FakeVim mode ReTextWindow"Fil-vrktjslinje File toolbar ReTextWindowFind tekst Find text ReTextWindowFormatering Formatting ReTextWindow"FuldskrmsvisningFullscreen mode ReTextWindowF hjlp onlineGet help online ReTextWindowHTML-kode HTML code ReTextWindow2HTML-filer (*.html *.htm)HTML files (*.html *.htm) ReTextWindow KursivItalic ReTextWindowLink-tekst Link text ReTextWindow(Live-forhndsvisning Live preview ReTextWindow Markdown-syntaksMarkdown syntax ReTextWindowFlyt linje nedMove line down ReTextWindowFlyt linje op Move line up ReTextWindowNyNew ReTextWindowNyt dokument New document ReTextWindow NsteNext ReTextWindowNste fanebladNext tab ReTextWindowbnOpen ReTextWindowbn seneste Open recent ReTextWindow>OpenDocument-tekstfiler (*.odt)OpenDocument text files (*.odt) ReTextWindow"PDF-filer (*.pdf)PDF files (*.pdf) ReTextWindow IndstPaste ReTextWindow"Ren tekst (*.txt)Plain text (*.txt) ReTextWindow6Gem venligst filen et sted. Please, save the file somewhere. ReTextWindowPrferencer Preferences ReTextWindowForhndsvisningPreview ReTextWindowForegendePrevious ReTextWindow Forrige faneblad Previous tab ReTextWindowUdskriftPrint ReTextWindow Udskriv dokumentPrint document ReTextWindow Udskriftsvisning Print preview ReTextWindow AfslutQuit ReTextWindow>ReText %s (bruger PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow GendanRedo ReTextWindowGenindlsReload ReTextWindow ErstatReplace ReTextWindowErstart alle Replace all ReTextWindowErstat med Replace with ReTextWindowGemSave ReTextWindowGem somSave as ReTextWindowGem fil Save file ReTextWindowSgSearch ReTextWindow$Sge-vrktjslinjeSearch toolbar ReTextWindowRVlg en eller flere filer, der skal bnes#Select one or several files to open ReTextWindowIndstil kodning Set encoding ReTextWindow,St sprogindstillinger Set locale ReTextWindowVis mappeShow directory ReTextWindownEnkel men strk editor til Markdown og reStructuredText ConfigDialog Using configuration file at: Bruger konfigurationsfil ved: Behavior Opførsel Automatically save documents Gem automatisk dokumenter Automatically open last documents on startup Åbn automatisk sidste dokument ved opstart Number of recent documents Restore window geometry Gendan vinduesgeometri Default preview state Open external links in ReText window Åbn eksterne links i ReText-vinduet Markdown syntax extensions (comma-separated) Markdown-syntaksudvidelser (kommasepareret) Enable synchronized scrolling for Markdown Aktivér synkroniseret rulning for Markdown Editor Tekstbehandler Highlight current line Fremhæv nuværende linje Show line numbers Vis linjenumre Line numbers are relative to current line Linjenumre er relative til den nuværende linje Tab key inserts spaces Tabulatortast indsætter mellemrum Tabulation width Tabulatorbredde Draw vertical line at column Tegn lodret linje ved kolonne Enable soft wrap Aktivér blød ombrydning Show document stats Vis dokumentstatistik Ordered list mode Interface Grænseflade Hide toolbar Icon theme name Ikontemanavn Stylesheet file Typografiarkfil Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Hjælp Live preview Live-forhåndsvisning Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (ingen) FileSelectButton Select file to open Vælg en fil, der skal åbnes InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) Indtast lokalitetsnavn (f.eks. da_DK) It is possible to specify multiple languages, separated by comma. Set as default Sæt som standard Proxy No write since last change (add ! to override) Intet skrevet siden sidste ændring (tilføj ! for at tilsidesætte) Information Information ReTextEdit Add to dictionary Tilføj til ordbog Save image Gem billede Images (*.png *.jpg) Billeder (*.png *.jpg) ReTextTab New document Nyt dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Kunne ikke indlæse filens indhold, kontroller at du har det <a href="%s">nødvendige modul</a> installeret. Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Fil-værktøjslinje Edit toolbar Redigering-værktøjslinje Search toolbar Søge-værktøjslinje New Ny Open Åbn Set encoding Indstil kodning Reload Genindlæs Save Gem Save as Gem som Next tab Næste faneblad Previous tab Forrige faneblad Close tab Luk faneblad Print Udskrift Print preview Udskriftsvisning View HTML code Vis HTML-kode Change editor font Skift skrifttype til tekstbehandling Change preview font Skift skrifttype til forhåndsvisning Find text Find tekst Go to line Preview Forhåndsvisning Live preview Live-forhåndsvisning Insert table Table editing mode Tabelredigeringstilstand Insert images by file path FakeVim mode FakeVim-tilstand Fullscreen mode Fuldskærmsvisning Preferences Præferencer Quit Afslut Undo Fortryd Redo Gendan Copy Kopier Cut Klip Paste Indsæt Paste image Move line up Flyt linje op Move line down Flyt linje ned Enable Aktivér Set locale Sæt sprogindstillinger Use WebEngine (Chromium) renderer Brug WebEngine-fremviser (Chromium) Show directory Vis mappe Next Næste Previous Foregående Replace Erstat Replace all Erstart alle Close Luk Get help online Få hjælp online What's new About ReText Om ReText About Qt Om Qt Bold Fed Italic Kursiv Underline Understregning Formatting Formatering Symbols Symboler &File &Fil &Edit &Rediger &Help &Hjælp Open recent Åbn seneste Export Eksport Spell check Stavekontrol Default markup Standardmarkup Search Søg Replace with Erstat med Case sensitively Skelnen mellem store og små bogstaver New document Nyt dokument Type the line number Please, save the file somewhere. Gem venligst filen et sted. Select one or several files to open Vælg en eller flere filer, der skal åbnes Supported files Understøttede filer All files (*) Alle filer (*) Plain text (*.txt) Ren tekst (*.txt) %s files Example of final string: Markdown files %s-filer Save file Gem fil Cannot save to file which is open in another tab! Kan ikke gemme til fil som er åben i et andet faneblad! Export document to ODT Eksporter dokument til ODT OpenDocument text files (*.odt) OpenDocument-tekstfiler (*.odt) HTML files (*.html *.htm) HTML-filer (*.html *.htm) Unrecognized paperSize setting "%s". Ukendt papirstørrelse "%s". Export document to PDF Eksporter dokument til PDF PDF files (*.pdf) PDF-filer (*.pdf) Print document Udskriv dokument Export document Eksporter dokument Failed to execute the command: Kunne ikke udføre kommandoen: Alt text Alternativ tekst URL URL Link text Link-tekst This file has been deleted by other application. Please make sure you save the file before exit. Denne fil er blevet slettet af et andet program. Sørg for at du gemmer filen inden afslutning. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Dette dokument er blevet ændret af et andet program. Vil du genindlæse filen (dette fil kasserer alle finde ændringer)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Dokumentet er blevet ændret. Ønsker du at gemme dine ændringer? HTML code HTML-kode Select one or several images to open ReText %s (using PyMarkups %s) ReText %s (bruger PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Enkel men stærk editor til Markdown og reStructuredText Author: Dmitry Shachnev, 2011 Forfatter: Dmitry Shachnev, 2011 Markdown syntax Markdown-syntaks reStructuredText syntax reStructuredText-syntaks TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d o | %d a | %d t main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_de.qm0000644000175000017500000003704414575355102017411 0ustar00dmitrydmitry "b.>dyYc' Zgt#z!r*MN}DVg!rxl)+D! by%vћr$s $@#S 4J3Pm)r85t,F. Fr78PW9''0B( &0 E/:u(zk=51ϗ)°%ϡ , /T'()+I(9.;',*74  @! h>{ j3 la v-} Wc $  ȗ t6 Q  C F  c1 5" ) ??e \0@ #9% pc w L J U N^ Px E v- Y* ) U 2& , I't ~>/8l314E z e$IUGKx#! Aˏn*) O2d.0i9|Zuletzt bearbeitete Dokumente automatisch bei Programmstart ffnen,Automatically open last documents on startup ConfigDialog>Dokumente automatisch speichernAutomatically save documents ConfigDialogVerhaltenBehavior ConfigDialogCursor-Zeile Cursor Line ConfigDialogDeaktiviertDisabled ConfigDialogBZeichne vertikale Linie in SpalteDraw vertical line at column ConfigDialog EditorEditor ConfigDialogFlexiblen Zeilenumbruch aktivieren. Der Umbruch richtet sich hierbei nach der Fenstergre und nicht nach Steuerzeichen im Text.Enable soft wrap ConfigDialogTAktiviere fr Markdown synchrones Scrollen*Enable synchronized scrolling for Markdown ConfigDialog HilfeHelp ConfigDialogjReisterleiste verbergen wenn nur ein Reiter offen ist(Hide tabs bar when there is only one tab ConfigDialog2Werkzeugleiste verstecken Hide toolbar ConfigDialog4Aktuelle Zeile hervorhebenHighlight current line ConfigDialog"Symbolschema-NameIcon theme name ConfigDialogOberflche Interface ConfigDialogpZeilennummern verstehen sich relativ zur aktuellen Zeile)Line numbers are relative to current line ConfigDialogLive-Vorschau Live preview ConfigDialogtErweiterungen fr Markdown-Syntax (durch Kommata getrennt),Markdown syntax extensions (comma-separated) ConfigDialog Normale VorschauNormal preview ConfigDialogFAnzahl zuletzt geffneter DokumenteNumber of recent documents ConfigDialogRExterne Verweise im ReText-Fenster ffnen$Open external links in ReText window ConfigDialog AufzhlungsmodusOrdered list mode ConfigDialog<Fenster-Dimensionierung merkenRestore window geometry ConfigDialog0Verzeichnisbaum anzeigenShow directory tree ConfigDialogDStatistiken zum Dokument anzeigen.Show document stats ConfigDialogPKompletten Pfad im Fenstertitel anzeigenShow full path in window title ConfigDialog,Zeilennummern anzeigenShow line numbers ConfigDialog"Stilvorlage-DateiStylesheet file ConfigDialog<Tabulator fgt Leerzeichen einTab key inserts spaces ConfigDialog Tabulator-BreiteTabulation width ConfigDialoghNutze Konfigurationsdatei aus folgendem Verzeichnis:Using configuration file at: ConfigDialog$ArbeitsverzeichnisWorking directory ConfigDialogDZu ffnendes Verzeichnis auswhlenSelect directory to openDirectorySelectButton(keine)(none)FileDialogButton6Zu ffnende Datei auswhlenSelect file to openFileSelectButton Tabelle einfgen Insert tableInsertTableDialogAnzahl SpaltenNumber of columnsInsertTableDialogAnzahl ZeilenNumber of rowsInsertTableDialogNEingabe der Lokalisierung (z.B.: de_DE)"Enter locale name (example: en_US) LocaleDialogEs knnen mehrere Sprachen durch Komma getrennt angegeben werden.AIt is possible to specify multiple languages, separated by comma. LocaleDialog&Als Standard setzenSet as default LocaleDialogInformation InformationProxyNichts geschrieben seit der letzten nderung (! zum berschreiben).No write since last change (add ! to override)Proxy4Zum Wrterbuch hinzufgen.Add to dictionary ReTextEdit$Bild (*.png *.jpg)Images (*.png *.jpg) ReTextEdit$Als Bild speichern Save image ReTextEditKonnte den Dateiinhalt nicht parsen. berprfen Sie, ob das <a href="%s">bentigte Modul</a> installiert ist!aCould not parse file contents, check if you have the necessary module installed! ReTextTabNeues Dokument New document ReTextTab%s-Dateien%s files ReTextWindow&Bearbeiten&Edit ReTextWindow &Datei&File ReTextWindow &Hilfe&Help ReTextWindowber QtAbout Qt ReTextWindowber ReText About ReText ReTextWindow Alle Dateien (*) All files (*) ReTextWindowAlt-TextAlt text ReTextWindow8Autor: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowbAutomatisches Speichern fr diesen Reiter wurde vorbergehend deaktiviert um Datenverlust zu verhindern. Es wird reaktiviert wenn Sie die Datei neu laden oder manuell speichern.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindowFettBold ReTextWindowSpeichern in eine Datei, die in einem anderen Tab geffnet ist, ist nicht mglich!1Cannot save to file which is open in another tab! ReTextWindow*Gro-/KleinschreibungCase sensitively ReTextWindow:Schriftart des Editors ndernChange editor font ReTextWindow<Schriftart der Vorschau ndernChange preview font ReTextWindowSchlieenClose ReTextWindow Reiter schlieen Close tab ReTextWindowKopierenCopy ReTextWindowAusschneidenCut ReTextWindowStandard-MarkupDefault markup ReTextWindow6Werkzeugleiste 'Bearbeiten' Edit toolbar ReTextWindowAktivierenEnable ReTextWindowExportierenExport ReTextWindow(Dokument exportierenExport document ReTextWindow8Dokument als ODT exportierenExport document to ODT ReTextWindow8Dokument als PDF exportierenExport document to PDF ReTextWindowLAusfhrung des Befehls fehlgeschlagen:Failed to execute the command: ReTextWindow Pseudo-Vim-Modus FakeVim mode ReTextWindow,Werkzeugleiste 'Datei' File toolbar ReTextWindow Suche Find text ReTextWindowFormatieren Formatting ReTextWindowVollbildmodusFullscreen mode ReTextWindow*Online Hilfe bekommenGet help online ReTextWindow$Zur Zeile springen Go to line ReTextWindowHTML-Code HTML code ReTextWindow6HTML-Dateien (*.html *.htm)HTML files (*.html *.htm) ReTextWindow2Bilder nach Pfad einfgenInsert images by file path ReTextWindow Tabelle einfgen Insert table ReTextWindow KursivItalic ReTextWindowLinktext Link text ReTextWindowLive-Vorschau Live preview ReTextWindowMarkdown-SyntaxMarkdown syntax ReTextWindow8Zeile nach unten verschiebenMove line down ReTextWindow6Zeile nach oben verschieben Move line up ReTextWindowNeuNew ReTextWindowNeues Dokument New document ReTextWindow WeiterNext ReTextWindowNchster ReiterNext tab ReTextWindow ffnenOpen ReTextWindow Zuletzt geffnet Open recent ReTextWindow8OpenDocument-Dateien (*.odt)OpenDocument text files (*.odt) ReTextWindow&PDF-Dateien (*.pdf)PDF files (*.pdf) ReTextWindowEinfgenPaste ReTextWindowBild einfgen Paste image ReTextWindow Klartext (*.txt)Plain text (*.txt) ReTextWindowFBitte die Datei irgendwo speichern. Please, save the file somewhere. ReTextWindowEinstellungen Preferences ReTextWindowVorschauPreview ReTextWindow ZurckPrevious ReTextWindowVoriger Reiter Previous tab ReTextWindowDruckenPrint ReTextWindow Dokument druckenPrint document ReTextWindowDruckvorschau Print preview ReTextWindowBeendenQuit ReTextWindow8ReText %s (mit PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindowWiederholenRedo ReTextWindowNeu ladenReload ReTextWindowErsetzenReplace ReTextWindowAlle ersetzen Replace all ReTextWindowErsetzen durch Replace with ReTextWindowSpeichernSave ReTextWindowSpeichern unterSave as ReTextWindowDatei speichern Save file ReTextWindow SuchenSearch ReTextWindow.Werkzeugleiste 'Suchen'Search toolbar ReTextWindow\Eine oder mehrere Dateien zum ffnen auswhlen#Select one or several files to open ReTextWindow4Zeichenkodierung festlegen Set encoding ReTextWindow"Spracheinstellung Set locale ReTextWindow(Verzeichnis anzeigenShow directory ReTextWindowEinfacher aber mchtiger Editor fr Markdown and reStructuredText ConfigDialog Using configuration file at: Nutze Konfigurationsdatei aus folgendem Verzeichnis: Behavior Verhalten Automatically save documents Dokumente automatisch speichern Automatically open last documents on startup Zuletzt bearbeitete Dokumente automatisch bei Programmstart öffnen Number of recent documents Anzahl zuletzt geöffneter Dokumente Restore window geometry Fenster-Dimensionierung merken Default preview state Open external links in ReText window Externe Verweise im ReText-Fenster öffnen Markdown syntax extensions (comma-separated) Erweiterungen für Markdown-Syntax (durch Kommata getrennt) Enable synchronized scrolling for Markdown Aktiviere für Markdown synchrones Scrollen Editor Editor Highlight current line Aktuelle Zeile hervorheben Show line numbers Zeilennummern anzeigen Line numbers are relative to current line Zeilennummern verstehen sich relativ zur aktuellen Zeile Tab key inserts spaces Tabulator fügt Leerzeichen ein Tabulation width Tabulator-Breite Draw vertical line at column Zeichne vertikale Linie in Spalte Enable soft wrap Flexiblen Zeilenumbruch aktivieren. Der Umbruch richtet sich hierbei nach der Fenstergröße und nicht nach Steuerzeichen im Text. Show document stats Statistiken zum Dokument anzeigen. Ordered list mode Aufzählungsmodus Interface Oberfläche Hide toolbar Werkzeugleiste verstecken Icon theme name Symbolschema-Name Stylesheet file Stilvorlage-Datei Hide tabs bar when there is only one tab Reisterleiste verbergen wenn nur ein Reiter offen ist Show full path in window title Kompletten Pfad im Fenstertitel anzeigen Show directory tree Verzeichnisbaum anzeigen Working directory Arbeitsverzeichnis Help Hilfe Live preview Live-Vorschau Normal preview Normale Vorschau Disabled Deaktiviert Cursor Line Cursor-Zeile Wrapped Line Increment Repeat DirectorySelectButton Select directory to open Zu öffnendes Verzeichnis auswählen EncodingDialog Enter encoding name: FileDialogButton (none) (keine) FileSelectButton Select file to open Zu öffnende Datei auswählen InsertTableDialog Insert table Tabelle einfügen Number of rows Anzahl Zeilen Number of columns Anzahl Spalten LocaleDialog Enter locale name (example: en_US) Eingabe der Lokalisierung (z.B.: de_DE) It is possible to specify multiple languages, separated by comma. Es können mehrere Sprachen durch Komma getrennt angegeben werden. Set as default Als Standard setzen Proxy No write since last change (add ! to override) Nichts geschrieben seit der letzten Änderung (! zum Überschreiben) Information Information ReTextEdit Add to dictionary Zum Wörterbuch hinzufügen. Save image Als Bild speichern Images (*.png *.jpg) Bild (*.png *.jpg) ReTextTab New document Neues Dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Konnte den Dateiinhalt nicht parsen. Überprüfen Sie, ob das <a href="%s">benötigte Modul</a> installiert ist! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Werkzeugleiste 'Datei' Edit toolbar Werkzeugleiste 'Bearbeiten' Search toolbar Werkzeugleiste 'Suchen' New Neu Open Öffnen Set encoding Zeichenkodierung festlegen Reload Neu laden Save Speichern Save as Speichern unter Next tab Nächster Reiter Previous tab Voriger Reiter Close tab Reiter schließen Print Drucken Print preview Druckvorschau View HTML code HTML-Code anzeigen Change editor font Schriftart des Editors ändern Change preview font Schriftart der Vorschau ändern Find text Suche Go to line Zur Zeile springen Preview Vorschau Live preview Live-Vorschau Insert table Tabelle einfügen Table editing mode Tabellenbearbeitungsmodus Insert images by file path Bilder nach Pfad einfügen FakeVim mode Pseudo-Vim-Modus Fullscreen mode Vollbildmodus Preferences Einstellungen Quit Beenden Undo Rückgängig Redo Wiederholen Copy Kopieren Cut Ausschneiden Paste Einfügen Paste image Bild einfügen Move line up Zeile nach oben verschieben Move line down Zeile nach unten verschieben Enable Aktivieren Set locale Spracheinstellung Use WebEngine (Chromium) renderer WebEngine (Chromium) Renderer benutzen Show directory Verzeichnis anzeigen Next Weiter Previous Zurück Replace Ersetzen Replace all Alle ersetzen Close Schließen Get help online Online Hilfe bekommen What's new About ReText Über ReText About Qt Über Qt Bold Fett Italic Kursiv Underline Unterstrichen Formatting Formatieren Symbols Symbole &File &Datei &Edit &Bearbeiten &Help &Hilfe Open recent Zuletzt geöffnet Export Exportieren Spell check Rechtschreibprüfung Default markup Standard-Markup Search Suchen Replace with Ersetzen durch Case sensitively Groß-/Kleinschreibung New document Neues Dokument Type the line number Zeilennummer eingeben Please, save the file somewhere. Bitte die Datei irgendwo speichern. Select one or several files to open Eine oder mehrere Dateien zum Öffnen auswählen Supported files Unterstützte Dateien All files (*) Alle Dateien (*) Plain text (*.txt) Klartext (*.txt) %s files Example of final string: Markdown files %s-Dateien Save file Datei speichern Cannot save to file which is open in another tab! Speichern in eine Datei, die in einem anderen Tab geöffnet ist, ist nicht möglich! Export document to ODT Dokument als ODT exportieren OpenDocument text files (*.odt) OpenDocument-Dateien (*.odt) HTML files (*.html *.htm) HTML-Dateien (*.html *.htm) Unrecognized paperSize setting "%s". Unerkannte paperSize Einstellung »%s«. Export document to PDF Dokument als PDF exportieren PDF files (*.pdf) PDF-Dateien (*.pdf) Print document Dokument drucken Export document Dokument exportieren Failed to execute the command: Ausführung des Befehls fehlgeschlagen: Alt text Alt-Text URL URL Link text Linktext This file has been deleted by other application. Please make sure you save the file before exit. Diese Datei wurde durch eine andere Anwendung gelöscht. Bitte sichern Sie die Datei vor dem Beenden. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Dieses Dokument wurde durch eine andere Anwendung geändert. Wollen Sie die Datei neu laden (wobei alle Ihre Änderungen verworfen werden)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. Automatisches Speichern für diesen Reiter wurde vorübergehend deaktiviert um Datenverlust zu verhindern. Es wird reaktiviert wenn Sie die Datei neu laden oder manuell speichern. The document has been modified. Do you want to save your changes? Das Dokument wurde verändert. Möchten Sie Ihre Änderungen speichern ? HTML code HTML-Code Select one or several images to open ReText %s (using PyMarkups %s) ReText %s (mit PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Einfacher aber mächtiger Editor für Markdown and reStructuredText Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Markdown-Syntax reStructuredText syntax reStructuredText-Syntax TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d w | %d a | %d c main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_es.qm0000644000175000017500000004260214575355102017424 0ustar00dmitrydmitryV,WT/kZSGUPʆ F*hEʇ4RB6:s<<L"&'nun-mAI75& U F)'O;8ze /Ω)(4#'> b2dyYc' gtY'z%r.NuDV8g%Zxl)08D! by%"v"ћr(u (@#S 4J8cmr 5t0k 2 5&Fr<>yW9',:0B!lM?eE G=-d0 E4:u,k57&ϗ.J°)ϡ 1U 5T+d)+I-93)=J>3'1.79  @% h>6 j3  la v2 W $ ll ȗ t; Q  F Z c6 5& ) ??e$ \5m #> 5 p#{ w# 4 J U 1 N^ Px v2] Y/N . U 2* 1 I+ ~> ?/=36F4E 0%>z_e)(IqU"GKx't% $Iˏ@*)T O7."ni@jfAl inicio, reabrir documentos de la sesin anterior,Automatically open last documents on startup ConfigDialogDGuardar documentos automticamenteAutomatically save documents ConfigDialogComportamientoBehavior ConfigDialog Lnea del cursor Cursor Line ConfigDialogLEstado de previsualizacin por defectoDefault preview state ConfigDialogDesactivadoDisabled ConfigDialogBDibujar lnea vertical en columnaDraw vertical line at column ConfigDialog EditorEditor ConfigDialogNActivar enrollamiento suave de prrafosEnable soft wrap ConfigDialogZActivar desplazamiento sncrono para Markdown*Enable synchronized scrolling for Markdown ConfigDialog AyudaHelp ConfigDialoglEsconder barra de pestaas cuando slo hay una pestaa(Hide tabs bar when there is only one tab ConfigDialog<Esconder barra de herramientas Hide toolbar ConfigDialog*Resaltar lnea actualHighlight current line ConfigDialog2Nombre del tema de conosIcon theme name ConfigDialogIncremento Increment ConfigDialogInterfaz Interface ConfigDialog`Nmeros de lnea son relativos a la lnea actual)Line numbers are relative to current line ConfigDialog>Previsualizacin en tiempo real Live preview ConfigDialogrExtensiones de sintaxis de Markdown (separadas por comas),Markdown syntax extensions (comma-separated) ConfigDialog.Previsualizacin normalNormal preview ConfigDialog<Nmero de documentos recientesNumber of recent documents ConfigDialog^Abrir enlaces externos en una ventana de ReText$Open external links in ReText window ConfigDialog,Modo de lista ordenadaOrdered list mode ConfigDialogRepetirRepeat ConfigDialogLRestaurar forma y tamao de la ventanaRestore window geometry ConfigDialog>Mostrar el rbol de directoriosShow directory tree ConfigDialogDMostrar estadsticas del documentoShow document stats ConfigDialog`Mostrar ruta completa en el ttulo de la ventanaShow full path in window title ConfigDialog0Mostrar nmeros de lneaShow line numbers ConfigDialog4Archivo de hoja de estilosStylesheet file ConfigDialog8Tecla "Tab" inserta espaciosTab key inserts spaces ConfigDialog*Anchura de tabulacinTabulation width ConfigDialogFUsando archivo de configuracin en:Using configuration file at: ConfigDialog*Directorio de trabajoWorking directory ConfigDialogLnea ajustada Wrapped Line ConfigDialogPSeleccione el directorio que desea abrirSelect directory to openDirectorySelectButtonJIntroduzca el nombre de codificacin:Enter encoding name:EncodingDialog(ninguno)(none)FileDialogButtonJSeleccione el archivo que desea abrirSelect file to openFileSelectButtonInsertar tabla Insert tableInsertTableDialog$Nmero de columnasNumber of columnsInsertTableDialogNmero de filasNumber of rowsInsertTableDialog^Escriba el nombre de la regin (ejemplo: es_MX)"Enter locale name (example: en_US) LocaleDialogtEs posible especificar varios idiomas separados por comas.AIt is possible to specify multiple languages, separated by comma. LocaleDialog<Establecer como predeterminadoSet as default LocaleDialogInformacin InformationProxy~No guardado desde el ltimo cambio (aada ! para sobreescribir).No write since last change (add ! to override)Proxy*Aadir al diccionarioAdd to dictionary ReTextEdit,Imgenes (*.png *.jpg)Images (*.png *.jpg) ReTextEditGuardar imagen Save image ReTextEditPNo fue posible crear el archivo '%s': %sCould not create file '%s': %s ReTextTabNo fue posible entender el contenido del archivo, compruebe si tiene el <a href="%s">mdulo necesario</a> instaladoaCould not parse file contents, check if you have the necessary module installed! ReTextTab0Crear archivo faltante?Create missing file? ReTextTab>No fue posible crear el archivoFile could not be created ReTextTabDocumento nuevo New document ReTextTabVEl archivo '%s' no existe. Desea crearlo?8The file '%s' does not exist. Do you want to create it? ReTextTab%s archivos%s files ReTextWindow&Editar&Edit ReTextWindow&Archivo&File ReTextWindow A&yuda&Help ReTextWindowAcerca de QtAbout Qt ReTextWindow Acerca de ReText About ReText ReTextWindow,Todos los archivos (*) All files (*) ReTextWindow"Texto alternativoAlt text ReTextWindow8Autor: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowrEl guardado automtico ha sido deshabilitado temporalmente en esta pestaa para prevenir la prdida de datos. Ser reactivado en el momento que recargue el fichero o guarde manualmente.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindowNegritaBold ReTextWindowNo se puede guardar esto en el archivo porque lo tiene abierto en otra pestaa!1Cannot save to file which is open in another tab! ReTextWindowDDistinguir maysculas y minsculasCase sensitively ReTextWindowFCambiar el tipo de letra del editorChange editor font ReTextWindowXCambiar el tipo de letra de previsualizacinChange preview font ReTextWindow CerrarClose ReTextWindowCerrar pestaa Close tab ReTextWindow CopiarCopy ReTextWindow CortarCut ReTextWindow,Marcado predeterminadoDefault markup ReTextWindow Barra de edicin Edit toolbar ReTextWindowActivarEnable ReTextWindowExportarExport ReTextWindow$Exportar documentoExport document ReTextWindow0Exportar documento a ODTExport document to ODT ReTextWindow0Exportar documento a PDFExport document to PDF ReTextWindow>No se pudo ejecutar el comando:Failed to execute the command: ReTextWindowModo FakeVIM FakeVim mode ReTextWindow"Barra de archivos File toolbar ReTextWindowBuscar texto Find text ReTextWindowFormato Formatting ReTextWindow"Pantalla completaFullscreen mode ReTextWindow,Obtener ayuda en lneaGet help online ReTextWindowIr a lnea Go to line ReTextWindowCdigo HTML HTML code ReTextWindow8Archivos HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindowHInserte imgenes por ruta de archivoInsert images by file path ReTextWindowInsertar tabla Insert table ReTextWindowCursivaItalic ReTextWindowTexto de enlace Link text ReTextWindow>Previsualizacin en tiempo real Live preview ReTextWindow(Sintaxis de MarkdownMarkdown syntax ReTextWindow.Mover lnea hacia abajoMove line down ReTextWindow0Mover lnea hacia arriba Move line up ReTextWindow NuevoNew ReTextWindowDocumento nuevo New document ReTextWindowSiguienteNext ReTextWindow"Pestaa siguienteNext tab ReTextWindow AbrirOpen ReTextWindowAbrir recientes Open recent ReTextWindowLArchivos de texto OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow(Archivos PDF (*.pdf)PDF files (*.pdf) ReTextWindow PegarPaste ReTextWindowPegar imagen Paste image ReTextWindow2Texto sin formato (*.txt)Plain text (*.txt) ReTextWindowXPor favor, guarde el archivo en algn lugar. Please, save the file somewhere. ReTextWindowPreferencias Preferences ReTextWindow PrevisualizacinPreview ReTextWindowAnteriorPrevious ReTextWindow Pestaa anterior Previous tab ReTextWindowImprimirPrint ReTextWindow$Imprimir documentoPrint document ReTextWindow:Previsualizacin de impresin Print preview ReTextWindow SalirQuit ReTextWindow8ReText %s (usa PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindowRehacerRedo ReTextWindowRecargarReload ReTextWindowReemplazarReplace ReTextWindow Reemplazar todas Replace all ReTextWindowReemplazar con Replace with ReTextWindowGuardarSave ReTextWindowGuardar comoSave as ReTextWindowGuardar archivo Save file ReTextWindow BuscarSearch ReTextWindow"Barra de bsquedaSearch toolbar ReTextWindowPSeleccione uno o varios archivos a abrir#Select one or several files to open ReTextWindowPSeleccione una o varias imgenes a abrir$Select one or several images to open ReTextWindow.Establecer codificacin Set encoding ReTextWindowBEstablecer configuracin regional Set locale ReTextWindow$Mostrar directorioShow directory ReTextWindow|Editor para Markdown y reStructuredText sencillo pero poderoso ConfigDialog Using configuration file at: Usando archivo de configuración en: Behavior Comportamiento Automatically save documents Guardar documentos automáticamente Automatically open last documents on startup Al inicio, reabrir documentos de la sesión anterior Number of recent documents Número de documentos recientes Restore window geometry Restaurar forma y tamaño de la ventana Default preview state Estado de previsualización por defecto Open external links in ReText window Abrir enlaces externos en una ventana de ReText Markdown syntax extensions (comma-separated) Extensiones de sintaxis de Markdown (separadas por comas) Enable synchronized scrolling for Markdown Activar desplazamiento síncrono para Markdown Editor Editor Highlight current line Resaltar línea actual Show line numbers Mostrar números de línea Line numbers are relative to current line Números de línea son relativos a la línea actual Tab key inserts spaces Tecla "Tab" inserta espacios Tabulation width Anchura de tabulación Draw vertical line at column Dibujar línea vertical en columna Enable soft wrap Activar enrollamiento suave de párrafos Show document stats Mostrar estadísticas del documento Ordered list mode Modo de lista ordenada Interface Interfaz Hide toolbar Esconder barra de herramientas Icon theme name Nombre del tema de íconos Stylesheet file Archivo de hoja de estilos Hide tabs bar when there is only one tab Esconder barra de pestañas cuando sólo hay una pestaña Show full path in window title Mostrar ruta completa en el título de la ventana Show directory tree Mostrar el árbol de directorios Working directory Directorio de trabajo Help Ayuda Live preview Previsualización en tiempo real Normal preview Previsualización normal Disabled Desactivado Cursor Line Línea del cursor Wrapped Line Línea ajustada Increment Incremento Repeat Repetir DirectorySelectButton Select directory to open Seleccione el directorio que desea abrir EncodingDialog Enter encoding name: Introduzca el nombre de codificación: FileDialogButton (none) (ninguno) FileSelectButton Select file to open Seleccione el archivo que desea abrir InsertTableDialog Insert table Insertar tabla Number of rows Número de filas Number of columns Número de columnas LocaleDialog Enter locale name (example: en_US) Escriba el nombre de la región (ejemplo: es_MX) It is possible to specify multiple languages, separated by comma. Es posible especificar varios idiomas separados por comas. Set as default Establecer como predeterminado Proxy No write since last change (add ! to override) No guardado desde el último cambio (añada ! para sobreescribir) Information Información ReTextEdit Add to dictionary Añadir al diccionario Save image Guardar imagen Images (*.png *.jpg) Imágenes (*.png *.jpg) ReTextTab New document Documento nuevo Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! No fue posible entender el contenido del archivo, compruebe si tiene el <a href="%s">módulo necesario</a> instalado Create missing file? ¿Crear archivo faltante? The file '%s' does not exist. Do you want to create it? El archivo '%s' no existe. ¿Desea crearlo? File could not be created No fue posible crear el archivo Could not create file '%s': %s No fue posible crear el archivo '%s': %s ReTextWindow File toolbar Barra de archivos Edit toolbar Barra de edición Search toolbar Barra de búsqueda New Nuevo Open Abrir Set encoding Establecer codificación Reload Recargar Save Guardar Save as Guardar como Next tab Pestaña siguiente Previous tab Pestaña anterior Close tab Cerrar pestaña Print Imprimir Print preview Previsualización de impresión View HTML code Ver código HTML Change editor font Cambiar el tipo de letra del editor Change preview font Cambiar el tipo de letra de previsualización Find text Buscar texto Go to line Ir a línea Preview Previsualización Live preview Previsualización en tiempo real Insert table Insertar tabla Table editing mode Modo de edición de tablas Insert images by file path Inserte imágenes por ruta de archivo FakeVim mode Modo FakeVIM Fullscreen mode Pantalla completa Preferences Preferencias Quit Salir Undo Deshacer Redo Rehacer Copy Copiar Cut Cortar Paste Pegar Paste image Pegar imagen Move line up Mover línea hacia arriba Move line down Mover línea hacia abajo Enable Activar Set locale Establecer configuración regional Use WebEngine (Chromium) renderer Usar motor de renderizado de WebEngine (de Chromium) Show directory Mostrar directorio Next Siguiente Previous Anterior Replace Reemplazar Replace all Reemplazar todas Close Cerrar Get help online Obtener ayuda en línea What's new Qué es nuevo About ReText Acerca de ReText About Qt Acerca de Qt Bold Negrita Italic Cursiva Underline Subrayado Formatting Formato Symbols Símbolos &File &Archivo &Edit &Editar &Help A&yuda Open recent Abrir recientes Export Exportar Spell check Revisar ortografía Default markup Marcado predeterminado Search Buscar Replace with Reemplazar con Case sensitively Distinguir mayúsculas y minúsculas New document Documento nuevo Type the line number Escriba el número de línea Please, save the file somewhere. Por favor, guarde el archivo en algún lugar. Select one or several files to open Seleccione uno o varios archivos a abrir Supported files Archivos compatibles All files (*) Todos los archivos (*) Plain text (*.txt) Texto sin formato (*.txt) %s files Example of final string: Markdown files %s archivos Save file Guardar archivo Cannot save to file which is open in another tab! No se puede guardar esto en el archivo porque lo tiene abierto en otra pestaña! Export document to ODT Exportar documento a ODT OpenDocument text files (*.odt) Archivos de texto OpenDocument (*.odt) HTML files (*.html *.htm) Archivos HTML (*.html *.htm) Unrecognized paperSize setting "%s". Configuración de paperSize no conocido "%s" Export document to PDF Exportar documento a PDF PDF files (*.pdf) Archivos PDF (*.pdf) Print document Imprimir documento Export document Exportar documento Failed to execute the command: No se pudo ejecutar el comando: Alt text Texto alternativo URL URL Link text Texto de enlace This file has been deleted by other application. Please make sure you save the file before exit. Este archivo ha sido eliminado por otra aplicación. Asegúrese de guardar el archivo antes de salir. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Este documento ha sido modificado por otra aplicación. ¿Quiere recargar el archivo? (esto descartará todos sus cambios). Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. El guardado automático ha sido deshabilitado temporalmente en esta pestaña para prevenir la pérdida de datos. Será reactivado en el momento que recargue el fichero o guarde manualmente. The document has been modified. Do you want to save your changes? Se ha modificado el documento. ¿Quiere guardar sus cambios? HTML code Código HTML Select one or several images to open Seleccione una o varias imágenes a abrir ReText %s (using PyMarkups %s) ReText %s (usa PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Editor para Markdown y reStructuredText sencillo pero poderoso Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Sintaxis de Markdown reStructuredText syntax Sintaxis de reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d p | %d a | %d c main Open the files in preview mode Abrir archivos en modo de vista previa Create a new window even if there is an existing one Crear una ventana nueva, incluso si ya existe una List of files to open Lista de archivos a abrir ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_es_CO.qm0000644000175000017500000002665414575355102020016 0ustar00dmitrydmitry=b dyYc'gtzrgl)DD!u by%v9 #S4J%m rn5t )' #0 E"jk 5$ϗfϡ g "T)S+IF9!Y'+7'  3 @8 h> la v - ȗ t(  F ' c$ ) ??e \# p w+ 4 J U N^y Pxr v m Yb " U 2  IB ~>1/)D3#exI U<P*)~ O%$.i*fAbrir ltimos documentos automticamente al iniciar,Automatically open last documents on startup ConfigDialogDGuardar documentos automticamenteAutomatically save documents ConfigDialogComportamientoBehavior ConfigDialogHDibujar lnea vertical en la columnaDraw vertical line at column ConfigDialog EditorEditor ConfigDialogbActivar desplazamiento sincronizado para Markdown*Enable synchronized scrolling for Markdown ConfigDialog AyudaHelp ConfigDialog*Resaltar lnea actualHighlight current line ConfigDialog2Nombre del tema de conosIcon theme name ConfigDialogInterfaz Interface ConfigDialog*Previsualizar en vivo Live preview ConfigDialogpExtensiones de sintaxis de Markdown (separadas por coma),Markdown syntax extensions (comma-separated) ConfigDialog\Abrir enlaces externos en la ventana de ReText$Open external links in ReText window ConfigDialogFRestablecer geometra de la ventanaRestore window geometry ConfigDialog0Mostrar nmeros de lneaShow line numbers ConfigDialog2Archivo de hoja de estiloStylesheet file ConfigDialog:La tecla Tab inserta espaciosTab key inserts spaces ConfigDialog&Ancho de tabulacinTabulation width ConfigDialog(ninguno)(none)FileDialogButton@Seleccione el archivo para abrirSelect file to openFileSelectButtonbEscriba el nombre del locale (por ejemplo: en_US)"Enter locale name (example: en_US) LocaleDialog<Establecer como predeterminadoSet as default LocaleDialogInformacin InformationProxy~Sin escritura desde el ltimo cambio (agregue ! para controlar).No write since last change (add ! to override)Proxy,Imgenes (*.png *.jpg)Images (*.png *.jpg) ReTextEditGuardar imagen Save image ReTextEditNo se pudo leer el contenido del archivo, revise si tiene instalado el <a href="%s">mdulo necesario</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTabDocumento nuevo New document ReTextTab%s archivos%s files ReTextWindow&Editar&Edit ReTextWindow&Archivo&File ReTextWindow A&yuda&Help ReTextWindowSobre QtAbout Qt ReTextWindowSobre ReText About ReText ReTextWindow,Todos los archivos (*) All files (*) ReTextWindow"Texto alternativoAlt text ReTextWindow8Autor: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowNegritaBold ReTextWindowNo se puede guardar a un archivo que ya est abierto en otra pestaa!1Cannot save to file which is open in another tab! ReTextWindowNTener en cuenta maysculas y minsculasCase sensitively ReTextWindow0Cambiar letra del editorChange editor font ReTextWindow@Cambiar letra de la vista previaChange preview font ReTextWindow CerrarClose ReTextWindow CopiarCopy ReTextWindow CortarCut ReTextWindow,Marcado predeterminadoDefault markup ReTextWindow@Barra de herramientas de edicin Edit toolbar ReTextWindowActivarEnable ReTextWindowExportarExport ReTextWindow$Exportar documentoExport document ReTextWindow0Exportar documento a ODTExport document to ODT ReTextWindow0Exportar documento a PDFExport document to PDF ReTextWindow:No se pudo ejecutar la orden:Failed to execute the command: ReTextWindowModo FaveVim FakeVim mode ReTextWindow@Barra de herramientas de archivo File toolbar ReTextWindowBuscar texto Find text ReTextWindowFormato Formatting ReTextWindow,Modo pantalla completaFullscreen mode ReTextWindow,Obtener ayuda en lneaGet help online ReTextWindowCdigo HTML HTML code ReTextWindow8Archivos HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindowCursivaItalic ReTextWindow Texto del enlace Link text ReTextWindow*Previsualizar en vivo Live preview ReTextWindow(Sintaxis de MarkdownMarkdown syntax ReTextWindow NuevoNew ReTextWindowDocumento nuevo New document ReTextWindowSiguienteNext ReTextWindow"Pestaa siguienteNext tab ReTextWindow AbrirOpen ReTextWindowAbrir reciente Open recent ReTextWindow:Archivos OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow(Archivos PDF (*.pdf)PDF files (*.pdf) ReTextWindow PegarPaste ReTextWindow&Texto plano (*.txt)Plain text (*.txt) ReTextWindowBGuarde el archivo en algn lugar. Please, save the file somewhere. ReTextWindowPreferencias Preferences ReTextWindowVista previaPreview ReTextWindowAnteriorPrevious ReTextWindow Pestaa anterior Previous tab ReTextWindowImprimirPrint ReTextWindow$Imprimir documentoPrint document ReTextWindow2Vista previa de impresin Print preview ReTextWindow SalirQuit ReTextWindow>ReText %s (usando PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindowRehacerRedo ReTextWindowRecargarReload ReTextWindowReemplazarReplace ReTextWindowReemplazar todo Replace all ReTextWindowReemplazar por Replace with ReTextWindowGuardarSave ReTextWindowGuardar comoSave as ReTextWindowGuardar archivo Save file ReTextWindow BuscarSearch ReTextWindowBBarra de herramientas de bsquedaSearch toolbar ReTextWindowVSeleccione uno o varios archivos para abrir#Select one or several files to open ReTextWindowJEstablecer codificacin de caracteres Set encoding ReTextWindow"Establecer locale Set locale ReTextWindow$Mostrar directorioShow directory ReTextWindow|Editor sencillo pero poderoso para Markdown y reStructuredText ConfigDialog Using configuration file at: Behavior Comportamiento Automatically save documents Guardar documentos automáticamente Automatically open last documents on startup Abrir últimos documentos automáticamente al iniciar Number of recent documents Restore window geometry Restablecer geometría de la ventana Default preview state Open external links in ReText window Abrir enlaces externos en la ventana de ReText Markdown syntax extensions (comma-separated) Extensiones de sintaxis de Markdown (separadas por coma) Enable synchronized scrolling for Markdown Activar desplazamiento sincronizado para Markdown Editor Editor Highlight current line Resaltar línea actual Show line numbers Mostrar números de línea Line numbers are relative to current line Tab key inserts spaces La tecla Tab inserta espacios Tabulation width Ancho de tabulación Draw vertical line at column Dibujar línea vertical en la columna Enable soft wrap Show document stats Ordered list mode Interface Interfaz Hide toolbar Icon theme name Nombre del tema de íconos Stylesheet file Archivo de hoja de estilo Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Ayuda Live preview Previsualizar en vivo Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (ninguno) FileSelectButton Select file to open Seleccione el archivo para abrir InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) Escriba el nombre del locale (por ejemplo: en_US) It is possible to specify multiple languages, separated by comma. Set as default Establecer como predeterminado Proxy No write since last change (add ! to override) Sin escritura desde el último cambio (agregue ! para controlar) Information Información ReTextEdit Add to dictionary Save image Guardar imagen Images (*.png *.jpg) Imágenes (*.png *.jpg) ReTextTab New document Documento nuevo Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! No se pudo leer el contenido del archivo, ¡revise si tiene instalado el <a href="%s">módulo necesario</a>! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Barra de herramientas de archivo Edit toolbar Barra de herramientas de edición Search toolbar Barra de herramientas de búsqueda New Nuevo Open Abrir Set encoding Establecer codificación de caracteres Reload Recargar Save Guardar Save as Guardar como Next tab Pestaña siguiente Previous tab Pestaña anterior Close tab Print Imprimir Print preview Vista previa de impresión View HTML code Ver código HTML Change editor font Cambiar letra del editor Change preview font Cambiar letra de la vista previa Find text Buscar texto Go to line Preview Vista previa Live preview Previsualizar en vivo Insert table Table editing mode Modo de edición de tablas Insert images by file path FakeVim mode Modo FaveVim Fullscreen mode Modo pantalla completa Preferences Preferencias Quit Salir Undo Deshacer Redo Rehacer Copy Copiar Cut Cortar Paste Pegar Paste image Move line up Move line down Enable Activar Set locale Establecer locale Use WebEngine (Chromium) renderer Show directory Mostrar directorio Next Siguiente Previous Anterior Replace Reemplazar Replace all Reemplazar todo Close Cerrar Get help online Obtener ayuda en línea What's new About ReText Sobre ReText About Qt Sobre Qt Bold Negrita Italic Cursiva Underline Subrayado Formatting Formato Symbols Símbolos &File &Archivo &Edit &Editar &Help A&yuda Open recent Abrir reciente Export Exportar Spell check Revisar ortografía Default markup Marcado predeterminado Search Buscar Replace with Reemplazar por Case sensitively Tener en cuenta mayúsculas y minúsculas New document Documento nuevo Type the line number Please, save the file somewhere. Guarde el archivo en algún lugar. Select one or several files to open Seleccione uno o varios archivos para abrir Supported files Archivos admitidos All files (*) Todos los archivos (*) Plain text (*.txt) Texto plano (*.txt) %s files Example of final string: Markdown files %s archivos Save file Guardar archivo Cannot save to file which is open in another tab! ¡No se puede guardar a un archivo que ya está abierto en otra pestaña! Export document to ODT Exportar documento a ODT OpenDocument text files (*.odt) Archivos OpenDocument (*.odt) HTML files (*.html *.htm) Archivos HTML (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Exportar documento a PDF PDF files (*.pdf) Archivos PDF (*.pdf) Print document Imprimir documento Export document Exportar documento Failed to execute the command: No se pudo ejecutar la orden: Alt text Texto alternativo URL URL Link text Texto del enlace This file has been deleted by other application. Please make sure you save the file before exit. Otra aplicación borró este archivo. Asegúrese de guardar el archivo antes de salir. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Otra aplicación modificó este documento. ¿Quiere recargar el archivo (esto eliminará los cambios que usted haya hecho)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? El documento fue modificado. ¿Quiere guardar los cambios? HTML code Código HTML Select one or several images to open ReText %s (using PyMarkups %s) ReText %s (usando PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Editor sencillo pero poderoso para Markdown y reStructuredText Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Sintaxis de Markdown reStructuredText syntax Sintaxis de reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_et.qm0000644000175000017500000001272514575355102017430 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Behavior Automatically save documents Automatically open last documents on startup Number of recent documents Restore window geometry Default preview state Open external links in ReText window Markdown syntax extensions (comma-separated) Enable synchronized scrolling for Markdown Editor Highlight current line Show line numbers Line numbers are relative to current line Tab key inserts spaces Tabulation width Draw vertical line at column Enable soft wrap Show document stats Ordered list mode Interface Hide toolbar Icon theme name Stylesheet file Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Abi Live preview Aktiivne eelvaade Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) FileSelectButton Select file to open InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) It is possible to specify multiple languages, separated by comma. Set as default Proxy No write since last change (add ! to override) Information ReTextEdit Add to dictionary Save image Images (*.png *.jpg) ReTextTab New document Uus dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Faili tööriistariba Edit toolbar Muuda tööriistariba Search toolbar Otsingu tööriistariba New Uus Open Ava Set encoding Reload Save Salvesta Save as Salvesta kui... Next tab Previous tab Close tab Print Prindi Print preview Printimise eelvaade View HTML code Vaata HTML koodi Change editor font Change preview font Find text Leia tekst Go to line Preview Eelvaade Live preview Aktiivne eelvaade Insert table Table editing mode Insert images by file path FakeVim mode Fullscreen mode Täisekraani režiim Preferences Quit Välju Undo Võta tagasi Redo Korda Copy Kopeeri Cut Lõika Paste Aseta Paste image Move line up Move line down Enable Luba Set locale Sea regioon Use WebEngine (Chromium) renderer Show directory Näita kataloogi Next Järgmine Previous Eelmine Replace Replace all Close Get help online Saa abi internetist What's new About ReText ReText kohta About Qt Qt kohta Bold Rasvane Italic Kaldu Underline Allajoonitud Formatting Vormindus Symbols Sümbolid &File &Fail &Edit &Muuda &Help &Abi Open recent Ava hiljutine Export Ekspordi Spell check Õigekirjakontroll Default markup Search Otsi Replace with Case sensitively Tõstutundeliselt New document Uus dokument Type the line number Please, save the file somewhere. Palun salvesta fail kuhugi. Select one or several files to open Vali avamiseks üks või mitu faili Supported files Toetatud failid All files (*) Kõik failid (*) Plain text (*.txt) Tavaline tekst (*.txt) %s files Example of final string: Markdown files %s failid Save file Salvesta fail Cannot save to file which is open in another tab! Export document to ODT Ekspordi dokument ODT formaati OpenDocument text files (*.odt) OpenDocument tekstifailid (.*odt) HTML files (*.html *.htm) HTML failid (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Ekspordi dokument PDF'ina PDF files (*.pdf) PDF failid (*.pdf) Print document Prindi dokument Export document Ekspordi dokument Failed to execute the command: Järgmise käsu täitmine ebaõnnestus: Alt text URL Link text This file has been deleted by other application. Please make sure you save the file before exit. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Dokumenti on muudetud. Soovid salvestada oma muudatused? HTML code HTML kood Select one or several images to open ReText %s (using PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Lihtne aga võimas Markdown ja reStructuredText redaktor Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Markdown süntaks reStructuredText syntax reStructuredText süntaks TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_eu.qm0000644000175000017500000003325314575355102017430 0ustar00dmitrydmitry b+dyYc'S"r(_DVgx by%{vћrI "b#S mr5t)k +ovFr01WW9'%0Be G1-dB0 E,:u&k5/Iϗ'°#ϡ *f -+T% )+I&9,=JG*'*0(& w @ h> j3i la v* W $ l ȗB Q   F  c/ 5 )Q ??e \-  p= w  J U i N^` Px H v+% Y( ' UC 2$ I%X ~>k/173.c4E p%zz e"IIGKx!:ˏ*)P O/.&i23ZAutomatikoki ireki azken dokumentuak hasieran,Automatically open last documents on startup ConfigDialog<Automatikoki gorde dokumentuakAutomatically save documents ConfigDialogJarreraBehavior ConfigDialog&Kurtsorearen lerroa Cursor Line ConfigDialogDLehenetsitako aurrebistaren egoeraDefault preview state ConfigDialogDesgaitutaDisabled ConfigDialogBMarraztu lerro bertikala zutabeanDraw vertical line at column ConfigDialogEditoreaEditor ConfigDialog$Gaitu doitze leunaEnable soft wrap ConfigDialog^Gaitu sinkronizatutako korritzea Markdown-erako*Enable synchronized scrolling for Markdown ConfigDialogLaguntzaHelp ConfigDialogZEzkutatu fitxen barra fitxa bakarra dagoenean(Hide tabs bar when there is only one tab ConfigDialog*Ezkutatu tresna-barra Hide toolbar ConfigDialog2Nabarmendu oraingo lerroaHighlight current line ConfigDialog.Ikonoaren gaiaren izenaIcon theme name ConfigDialogGehitze Increment ConfigDialogInterfazea Interface ConfigDialogPLerroen kopurua oraingo lerroari dagokio)Line numbers are relative to current line ConfigDialog&Zuzeneko aurrebista Live preview ConfigDialog\Markdown-en sintaxi-luzapenak (komaz bereizia),Markdown syntax extensions (comma-separated) ConfigDialog$Aurrebista normalaNormal preview ConfigDialog2Azken dokumentuen kopuruaNumber of recent documents ConfigDialogPIreki kanpoko estekak ReText-eko leihoan$Open external links in ReText window ConfigDialog6Ordenatutako zerrenda moduaOrdered list mode ConfigDialogErrepikatuRepeat ConfigDialog<Leheneratu leihoaren geometriaRestore window geometry ConfigDialog@Erakutsi direktorioaren zuhaitzaShow directory tree ConfigDialogFErakutsi dokumentuaren estatistikakShow document stats ConfigDialogXErakutsi bide-izen osoa leihoaren izenburuanShow full path in window title ConfigDialog0Erakutsi lerroen kopuruaShow line numbers ConfigDialog4Estilo-orriaren fitxategiaStylesheet file ConfigDialogDTab teklak espazioak gehitzen dituTab key inserts spaces ConfigDialog,Tabulazioaren zabaleraTabulation width ConfigDialogHEzarpen-fitxategia erabiltzen hemen:Using configuration file at: ConfigDialogLan-direktorioaWorking directory ConfigDialog Doitutako lerroa Wrapped Line ConfigDialog>Aukeratu direktorioa irekitzekoSelect directory to openDirectorySelectButton*Sartu kodeketa-izena:Enter encoding name:EncodingDialog (ezer)(none)FileDialogButton<Aukeratu fitxategia irekitzekoSelect file to openFileSelectButtonTxertatu taula Insert tableInsertTableDialog Zutabeen kopuruaNumber of columnsInsertTableDialog$Errenkaden kopuruaNumber of rowsInsertTableDialogNSartu eskualdearen izena (adibidea: eu)"Enter locale name (example: en_US) LocaleDialogjPosible da hainbat hizkuntza zehaztea, komaz bereiziaAIt is possible to specify multiple languages, separated by comma. LocaleDialog2Ezarri lehenetsitako gisaSet as default LocaleDialogInformazioa InformationProxypIdazketarik ez azken aldaketatik (gehitu ! gainidazteko).No write since last change (add ! to override)Proxy Gehitu hiztegiraAdd to dictionary ReTextEdit*Irudiak (*.png *.jpg)Images (*.png *.jpg) ReTextEditGorde irudia Save image ReTextEditLEzin izan da '%s' fitxategia sortu: %sCould not create file '%s': %s ReTextTabEzin izan dira analizatu fitxategiaren edukiak, begiratu ea <a href="%s">beharrezko modulua</a> instalatuta duzun!aCould not parse file contents, check if you have the necessary module installed! ReTextTab6Sortu falta den fitxategia?Create missing file? ReTextTab:Ezin izan da fitxategia sortuFile could not be created ReTextTab Dokumentu berria New document ReTextTabR'%s' fitxategia ez dago. Sortu nahi duzu?8The file '%s' does not exist. Do you want to create it? ReTextTab%s fitxategiak%s files ReTextWindow&Editatu&Edit ReTextWindow&Fitxategia&File ReTextWindow&Laguntza&Help ReTextWindowQt-ri buruzAbout Qt ReTextWindowReText-i buruz About ReText ReTextWindow*Fitxategi guztiak (*) All files (*) ReTextWindow:Egilea: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindow LodiaBold ReTextWindow*Maiuskulak/minuskulakCase sensitively ReTextWindow<Aldatu editorearen letra-tipoaChange editor font ReTextWindow@Aldatu aurrebistaren letra-tipoaChange preview font ReTextWindowItxiClose ReTextWindowItxi fitxa Close tab ReTextWindowKopiatuCopy ReTextWindow EbakiCut ReTextWindow(Editatu tresna-barra Edit toolbar ReTextWindow GaituEnable ReTextWindowEsportatuExport ReTextWindow(Esportatu dokumentuaExport document ReTextWindow$Esportatu ODT gisaExport document to ODT ReTextWindow$Esportatu PDF gisaExport document to PDF ReTextWindowFakeVim modua FakeVim mode ReTextWindow4Fitxategiaren tresna-barra File toolbar ReTextWindowBilatu testua Find text ReTextWindowPantaila osoaFullscreen mode ReTextWindow*Lortu laguntza onlineGet help online ReTextWindow&Joan lerro honetara Go to line ReTextWindowHTML iturburua HTML code ReTextWindow>HTML fitxategiak (*.html *.htm)HTML files (*.html *.htm) ReTextWindowLTxertatu irudiak bide-izenaren araberaInsert images by file path ReTextWindowTxertatu taula Insert table ReTextWindow EtzanaItalic ReTextWindow&Zuzeneko aurrebista Live preview ReTextWindow"Markdown sintaxiaMarkdown syntax ReTextWindow(Eraman lerroa beheraMove line down ReTextWindow$Eraman lerroa gora Move line up ReTextWindow BerriaNew ReTextWindow Dokumentu berria New document ReTextWindowHurrengoaNext ReTextWindowHurrengo fitxaNext tab ReTextWindow IrekiOpen ReTextWindow"Azken dokumentuak Open recent ReTextWindowXIreki OpenDocument testu fitxategiak (*.odt)OpenDocument text files (*.odt) ReTextWindow.PDF fitxategiak (*.pdf)PDF files (*.pdf) ReTextWindowItsatsiPaste ReTextWindowItsatsi irudia Paste image ReTextWindow*Testu arrunta (*.txt)Plain text (*.txt) ReTextWindowBGorde fitxategia edonon, mesedez. Please, save the file somewhere. ReTextWindowEzarpenak Preferences ReTextWindowAurrebistaPreview ReTextWindowAurrekoaPrevious ReTextWindowAurreko fitxa Previous tab ReTextWindowInprimatuPrint ReTextWindow(Inprimatu dokumentuaPrint document ReTextWindow.Inprimatzeko aurrebista Print preview ReTextWindow KenduQuit ReTextWindowBerreginRedo ReTextWindowBirkargatuReload ReTextWindowOrdeztuReplace ReTextWindowOrdeztu guztiak Replace all ReTextWindow GordeSave ReTextWindowGorde honela...Save as ReTextWindow Gorde fitxategia Save file ReTextWindow BilatuSearch ReTextWindow0Bilaketaren tresna-barraSearch toolbar ReTextWindowLAukeratu fitzategi bat(zuk) irekitzeko#Select one or several files to open ReTextWindowEzarri kodeketa Set encoding ReTextWindow$Eskualdea aukeratu Set locale ReTextWindow(Erakutsi direktorioaShow directory ReTextWindowMarkdown et reStructuredText-erako editore sinple baina boteretsua ConfigDialog Using configuration file at: Ezarpen-fitxategia erabiltzen hemen: Behavior Jarrera Automatically save documents Automatikoki gorde dokumentuak Automatically open last documents on startup Automatikoki ireki azken dokumentuak hasieran Number of recent documents Azken dokumentuen kopurua Restore window geometry Leheneratu leihoaren geometria Default preview state Lehenetsitako aurrebistaren egoera Open external links in ReText window Ireki kanpoko estekak ReText-eko leihoan Markdown syntax extensions (comma-separated) Markdown-en sintaxi-luzapenak (komaz bereizia) Enable synchronized scrolling for Markdown Gaitu sinkronizatutako korritzea Markdown-erako Editor Editorea Highlight current line Nabarmendu oraingo lerroa Show line numbers Erakutsi lerroen kopurua Line numbers are relative to current line Lerroen kopurua oraingo lerroari dagokio Tab key inserts spaces Tab teklak espazioak gehitzen ditu Tabulation width Tabulazioaren zabalera Draw vertical line at column Marraztu lerro bertikala zutabean Enable soft wrap Gaitu doitze leuna Show document stats Erakutsi dokumentuaren estatistikak Ordered list mode Ordenatutako zerrenda modua Interface Interfazea Hide toolbar Ezkutatu tresna-barra Icon theme name Ikonoaren gaiaren izena Stylesheet file Estilo-orriaren fitxategia Hide tabs bar when there is only one tab Ezkutatu fitxen barra fitxa bakarra dagoenean Show full path in window title Erakutsi bide-izen osoa leihoaren izenburuan Show directory tree Erakutsi direktorioaren zuhaitza Working directory Lan-direktorioa Help Laguntza Live preview Zuzeneko aurrebista Normal preview Aurrebista normala Disabled Desgaituta Cursor Line Kurtsorearen lerroa Wrapped Line Doitutako lerroa Increment Gehitze Repeat Errepikatu DirectorySelectButton Select directory to open Aukeratu direktorioa irekitzeko EncodingDialog Enter encoding name: Sartu kodeketa-izena: FileDialogButton (none) (ezer) FileSelectButton Select file to open Aukeratu fitxategia irekitzeko InsertTableDialog Insert table Txertatu taula Number of rows Errenkaden kopurua Number of columns Zutabeen kopurua LocaleDialog Enter locale name (example: en_US) Sartu eskualdearen izena (adibidea: eu) It is possible to specify multiple languages, separated by comma. Posible da hainbat hizkuntza zehaztea, komaz bereizia Set as default Ezarri lehenetsitako gisa Proxy No write since last change (add ! to override) Idazketarik ez azken aldaketatik (gehitu ! gainidazteko) Information Informazioa ReTextEdit Add to dictionary Gehitu hiztegira Save image Gorde irudia Images (*.png *.jpg) Irudiak (*.png *.jpg) ReTextTab New document Dokumentu berria Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Ezin izan dira analizatu fitxategiaren edukiak, begiratu ea <a href="%s">beharrezko modulua</a> instalatuta duzun! Create missing file? Sortu falta den fitxategia? The file '%s' does not exist. Do you want to create it? '%s' fitxategia ez dago. Sortu nahi duzu? File could not be created Ezin izan da fitxategia sortu Could not create file '%s': %s Ezin izan da '%s' fitxategia sortu: %s ReTextWindow File toolbar Fitxategiaren tresna-barra Edit toolbar Editatu tresna-barra Search toolbar Bilaketaren tresna-barra New Berria Open Ireki Set encoding Ezarri kodeketa Reload Birkargatu Save Gorde Save as Gorde honela... Next tab Hurrengo fitxa Previous tab Aurreko fitxa Close tab Itxi fitxa Print Inprimatu Print preview Inprimatzeko aurrebista View HTML code Ikusi HTMLren kodea Change editor font Aldatu editorearen letra-tipoa Change preview font Aldatu aurrebistaren letra-tipoa Find text Bilatu testua Go to line Joan lerro honetara Preview Aurrebista Live preview Zuzeneko aurrebista Insert table Txertatu taula Table editing mode Taularen editatze modua Insert images by file path Txertatu irudiak bide-izenaren arabera FakeVim mode FakeVim modua Fullscreen mode Pantaila osoa Preferences Ezarpenak Quit Kendu Undo Desegin Redo Berregin Copy Kopiatu Cut Ebaki Paste Itsatsi Paste image Itsatsi irudia Move line up Eraman lerroa gora Move line down Eraman lerroa behera Enable Gaitu Set locale Eskualdea aukeratu Use WebEngine (Chromium) renderer Erabili WebEngine (Chromium) errendatzailea Show directory Erakutsi direktorioa Next Hurrengoa Previous Aurrekoa Replace Ordeztu Replace all Ordeztu guztiak Close Itxi Get help online Lortu laguntza online What's new Zer berri About ReText ReText-i buruz About Qt Qt-ri buruz Bold Lodia Italic Etzana Underline Formatting Symbols Sinboloak &File &Fitxategia &Edit &Editatu &Help &Laguntza Open recent Azken dokumentuak Export Esportatu Spell check Egiaztatu ortografia Default markup Search Bilatu Replace with Case sensitively Maiuskulak/minuskulak New document Dokumentu berria Type the line number Please, save the file somewhere. Gorde fitxategia edonon, mesedez. Select one or several files to open Aukeratu fitzategi bat(zuk) irekitzeko Supported files Onartutako formatuak All files (*) Fitxategi guztiak (*) Plain text (*.txt) Testu arrunta (*.txt) %s files Example of final string: Markdown files %s fitxategiak Save file Gorde fitxategia Cannot save to file which is open in another tab! Export document to ODT Esportatu ODT gisa OpenDocument text files (*.odt) Ireki OpenDocument testu fitxategiak (*.odt) HTML files (*.html *.htm) HTML fitxategiak (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Esportatu PDF gisa PDF files (*.pdf) PDF fitxategiak (*.pdf) Print document Inprimatu dokumentua Export document Esportatu dokumentua Failed to execute the command: Alt text URL Link text This file has been deleted by other application. Please make sure you save the file before exit. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Dokumentua aldatu da. Aldaketak gorde nahi duzu? HTML code HTML iturburua Select one or several images to open ReText %s (using PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Markdown et reStructuredText-erako editore sinple baina boteretsua Author: Dmitry Shachnev, 2011 Egilea: Dmitry Shachnev, 2011 Markdown syntax Markdown sintaxia reStructuredText syntax reStructuredText sintaxia TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_fa.qm0000644000175000017500000004036214575355102017404 0ustar00dmitrydmitry 7b.`dylYc'gt $z"\r*NDVg" x l)+D!  by%qvћr%% $#S 4J3m{rv5t,tk }./=Fr8E9IW9['(N0B4M;_e _G9@-d0 E07:u(kx52ϗ*2°&1ϡ , 0T')+I)9.=J >/M ',*l75e 5 @" h> j3 laF v- W $ n l ȗ t7? Q,  F  c2 5#3 ) ??e!p \0 #9  p ' w  J U N^ Px H v- Y+ ) U 2' -5 I' ~>_ :/8314E % \z e%IUGKx$(! ˏ*) O3."i;f('2 1/F .H/'1 ".1F '3F'/ /1 GF'E H1H/ (G (1F'EG,Automatically open last documents on startup ConfigDialog&0.1GT .H/'1 3F/G'Automatically save documents ConfigDialog 1A*'1Behavior ConfigDialogE'F FE' Cursor Line ConfigDialog(H69Q* FE'4 ~4 A16Default preview state ConfigDialog:1A9Q'DDisabled ConfigDialog84/F .7 9EH/ /1 3*HF 4E'1Draw vertical line at column ConfigDialogH1'41Editor ConfigDialogfA9Q'D 3'2 -'D* F,'F/F *E'E E*F /1 E-7 B'(D FE'4Enable soft wrap ConfigDialogPA9Q'D 3'2 ~E'4 GE 2E'F (1' Markdown*Enable synchronized scrolling for Markdown ConfigDialogEHelp ConfigDialog\FGA*F FH'1 31(1 G' GF'E G AB7  31(1 G3*(Hide tabs bar when there is only one tab ConfigDialog FGA*F FH'1 '(2'1 Hide toolbar ConfigDialog(E4.Q5 1/F 371 FHFHighlight current line ConfigDialogF'E E6EHF "HFIcon theme name ConfigDialog 'A2'4 Increment ConfigDialog8'G1 Interface ConfigDialogHFE'4 4E'1GT 371G' F3(* (G 371 FHF)Line numbers are relative to current line ConfigDialog ~4 FE'4 2F/G Live preview ConfigDialogz'A2HFG G' BH'9/ Markdown ( (' 'E' , '2 GE ,/' FH4*G 4HF/),Markdown syntax extensions (comma-separated) ConfigDialog~4 FE'4 9'/Normal preview ConfigDialog>*9/'/ '3F'/ (G .'71 3~1/GT '.1Number of recent documents ConfigDialogP('2 1/F ~HF/G' .'1, /1 ~F,1GT ReText$Open external links in ReText window ConfigDialog"-'D* AG13* *1*(Ordered list mode ConfigDialog *1'1Repeat ConfigDialog4('2'( 'F/'2GT B(D ~F,1GRestore window geometry ConfigDialog FE'4 /1.* E31Show directory tree ConfigDialogFE'4 "E'1 3F/Show document stats ConfigDialog:FE'4 E31 'ED /1 FH'1 9FH'FShow full path in window title ConfigDialog$FE'4 4E'1GT 371G'Show line numbers ConfigDialog~1HF/GT B'D(Stylesheet file ConfigDialog<*F8E Tab (1' B1'1 /'/F A'5DGTab key inserts spaces ConfigDialog916 ,/HD (F/Tabulation width ConfigDialogH'3*A'/G '2 ~1HF/GT *F8E'* /1 F4'F:Using configuration file at: ConfigDialogE31 ',1'Working directory ConfigDialog~H44 371 Wrapped Line ConfigDialog2'F*.'( E31 (1' ('2 1/FSelect directory to openDirectorySelectButton(H'1/ 1/F F8'E FH3GEnter encoding name:EncodingDialog(G /'E)(none)FileDialogButton6'F*.'( ~1HF/G (1' ('2 1/FSelect file to openFileSelectButton/1, ,/HD Insert tableInsertTableDialog4E'1 3*HF G'Number of columnsInsertTableDialog4E'1 1/A G'Number of rowsInsertTableDialogHH1H/ F'E 2('F E-DQ ( E+D'K: en_US )"Enter locale name (example: en_US) LocaleDialog|E *H'F F/ 2('F E.*DA 1' *91A 1/ (' H1HD '2 GE ,/' 4HF/.AIt is possible to specify multiple languages, separated by comma. LocaleDialog,*9F (G 9FH'F ~4 A16Set as default LocaleDialog'7QD'9'* InformationProxy'2 2E'F 0.1GT B(D 2 FH4*G F4/G ((1' F'//G 1A*F 2 '6'AG F/!).No write since last change (add ! to override)Proxy&'A2H/F (G A1GF D:*Add to dictionary ReTextEdit(*5'H1 (*.png *.jpg)Images (*.png *.jpg) ReTextEdit0.1GT *5H1 Save image ReTextEdit@'E'F ','/ ~1HF/G '%s': %s F(H/Could not create file '%s': %s ReTextTab'E'F *,2G H *-DD E-*H' ~1HF/G F(H/. (113 F/ G "' <a href="%s">~E'FGT D'2E </a> (1' 'F '1 1' F5( 1/G '/ ' FG.aCould not parse file contents, check if you have the necessary module installed! ReTextTab0~1HF/G E 4/G ','/ 4H/Create missing file? ReTextTab0'E'F ','/ ~1HF/G F(H/.File could not be created ReTextTab3F/ ,// New document ReTextTabt~1HF/GT '%s' H,H/ F/'1/. "' E .H'G/ "F 1' ','/ F/8The file '%s' does not exist. Do you want to create it? ReTextTab~1HF/G %s%s files ReTextWindow H1'4&Edit ReTextWindow ~1HF/G&File ReTextWindowE&Help ReTextWindow/1('1GT QtAbout Qt ReTextWindow/1('1GT ReText About ReText ReTextWindow&GEGT ~1HF/G G' (*) All files (*) ReTextWindowE*F ,'2FAlt text ReTextWindow<F'1F/G: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowP0.1GT .H/'1 EHBQ*'K (1' 'F 31(1 :1A9Q'D 4/G '3* *' /'/GG' '2 /3* F1HF/. G1 'G 3F/ 1' /H('1G ('2 F/ A9Q'D .H'G/ 4/ ' E *H'F/ 3F/ 1' (G 5H1* /3* 0.1G F/.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindow6.EBold ReTextWindowl'E'F 0.1GT ~1HF/G ' G /1 31(1 /1 ('2 4/G F3*!1Cannot save to file which is open in another tab! ReTextWindowB-3Q'3Q* F3(* (G -1HA (21 H HCase sensitively ReTextWindow0*:1 13E 'D.7Q H1'41Change editor font ReTextWindow2*:1 13E 'D.7Q ~4 FE'4Change preview font ReTextWindow(3*FClose ReTextWindow(3*F 31(1 Close tab ReTextWindow 1HFH4*Copy ReTextWindow(14Cut ReTextWindow&F4'FG 0'1 ~4 A16Default markup ReTextWindow"FH'1 '(2'1 H1'4 Edit toolbar ReTextWindowA9Q'D 3'2Enable ReTextWindow5/H1 .1H,Export ReTextWindow.1H, 3F/Export document ReTextWindowD5/H1 .1H, 3F/ (G B'D( ~1HF/GT ODTExport document to ODT ReTextWindow 5/H1 (G B'D( PDFExport document to PDF ReTextWindow8',1' 'F /3*H1 F'EHAQB (H/:Failed to execute the command: ReTextWindow4-'D* *BD/ '2 H1'41 Vim FakeVim mode ReTextWindow"FH'1 '(2'1 ~1HF/G File toolbar ReTextWindow'A*F E*F Find text ReTextWindowB'D( (F/ Formatting ReTextWindow-'D* *E'E 5A-GFullscreen mode ReTextWindow/1'A* E (1.7Get help online ReTextWindow"1A*F (G .7 4E'1GT Go to line ReTextWindowHTML code HTML code ReTextWindow2HTML files (*.html *.htm)HTML files (*.html *.htm) ReTextWindowF/1, *5H1 (' '3*A'/G '2 E31 ~1HF/GInsert images by file path ReTextWindow/1, ,/HD Insert table ReTextWindow,Italic ReTextWindowE*F ~HF/ Link text ReTextWindow~4 FE'4 2F/G Live preview ReTextWindowBH'9/ MarkdownMarkdown syntax ReTextWindow  .7 ~'F 1A*FMove line down ReTextWindow .7 ('D' 1A*F Move line up ReTextWindow,//New ReTextWindow3F/ ,// New document ReTextWindow(9/Next ReTextWindow31(1 (9/Next tab ReTextWindow('2 1/FOpen ReTextWindow&('2 1/F EH'1/ '.1 Open recent ReTextWindow8~1HF/GT E*F / ('2 (*.odt)OpenDocument text files (*.odt) ReTextWindow"PDF files (*.pdf)PDF files (*.pdf) ReTextWindow3('F/FPaste ReTextWindow3('F/F *5H1 Paste image ReTextWindow E*F 3'/G (*.txt)Plain text (*.txt) ReTextWindowHD7A'K ~1HF/G 1' /1 E-DQ 0.1G F/. Please, save the file somewhere. ReTextWindow*F8E'* Preferences ReTextWindow~4 FE'4Preview ReTextWindowB(DPrevious ReTextWindow31(1 B(D Previous tab ReTextWindow'~Print ReTextWindow'~ 3F/Print document ReTextWindow~4 FE'4 '~ Print preview ReTextWindow.1H,Quit ReTextWindow<ReText %s (using PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow'F,'E /H('1GRedo ReTextWindow('10'1 /H('1GReload ReTextWindow,'2FReplace ReTextWindow,'2F GEG Replace all ReTextWindow,'2F (' Replace with ReTextWindow 0.1GSave ReTextWindow0.1G (G 9FH'FSave as ReTextWindow0.1GT ~1HF/G Save file ReTextWindow ,3*,HSearch ReTextWindow FH'1 '(2'1 ,3*,HSearch toolbar ReTextWindowZ ' F/ ~1HF/G 1' (1' ('2 1/F 'F*.'( F/#Select one or several files to open ReTextWindowX ' F/ *5H1 1' (1' ('2 1/F 'F*.'( F/$Select one or several images to open ReTextWindow *9F F8'E FH3G Set encoding ReTextWindow *9F 2('F E-DQ Set locale ReTextWindowFE'4 /'1*H1Show directory ReTextWindow H1'41 E*F 3'/G HD *H'FEF/ (1' H1'4 E*F /1 B'D( G' Markdown H reStructuredText ConfigDialog Using configuration file at: استفاده از پروندهٔ تنظیمات در نشانی: Behavior رفتار Automatically save documents ذخیرهٔ خودکار سندها Automatically open last documents on startup باز کردن خودکار آخرین اسناد در هنگام ورود به برنامه Number of recent documents تعداد اسناد به خاطر سپردهٔ اخیر Restore window geometry بازیابی اندازهٔ قبلی پنجره Default preview state وضعیّت نمایش پیش‌فرض Open external links in ReText window باز کردن پیوندهای خارجی در پنجرهٔ ReText Markdown syntax extensions (comma-separated) افزونه‌های قواعد Markdown ( با کاما «,» از هم جدا نوشته شوند) Enable synchronized scrolling for Markdown فعّال‌سازی پیمایش هم‌زمان برای Markdown  Editor ویرایشگر Highlight current line مشخّص کردن سطر کنونی Show line numbers نمایش شمارهٔ سطرها Line numbers are relative to current line نمایش شمارهٔ سطرها نسبت به سطر کنونی Tab key inserts spaces تنظیم Tab برای قرار دادن فاصله Tabulation width عرض جدول‌بندی Draw vertical line at column کشیدن خط عمودی در ستون شمارۀ Enable soft wrap فعّال‌سازی حالت گنجاندن تمام متن در محیط قابل نمایش Show document stats نمایش آمار سند Ordered list mode حالت فهرست ترتیبی Interface ظاهر Hide toolbar نهفتن نوار ابزار Icon theme name نام مضمون آیکون Stylesheet file پروندهٔ قالب Hide tabs bar when there is only one tab نهفتن نوار سربرگ‌ها هنگامی که فقط یک سربرگ هست Show full path in window title نمایش مسیر کامل در نوار عنوان Show directory tree نمایش درختی مسیر Working directory مسیر اجرا Help کمک Live preview پیش‌نمایش زنده Normal preview پیش‌نمایش عادی Disabled غیرفعّال Cursor Line مکان‌نما Wrapped Line پوشش سطر Increment افزایش Repeat تکرار DirectorySelectButton Select directory to open انتخاب مسیر برای باز کردن EncodingDialog Enter encoding name: وارد کردن نظام نویسه FileDialogButton (none) (هیچ کدام) FileSelectButton Select file to open انتخاب پرونده برای باز کردن InsertTableDialog Insert table درج جدول Number of rows شمار ردیف‌ها Number of columns شمار ستون‌ها LocaleDialog Enter locale name (example: en_US) ورود نام زبان محلّی ( مثلاً: en_US ) It is possible to specify multiple languages, separated by comma. می‌توان چند زبان مختلف را تعریف کرد، با ویرگول از هم جدا شوند. Set as default تعیین به عنوان پیش‌فرض Proxy No write since last change (add ! to override) از زمان ذخیرهٔ قبلی چیزی نوشته نشده (برای نادیده گرفتن چیزی اضافه کنید!) Information اطّلاعات ReTextEdit Add to dictionary افزودن به فرهنگ لغت Save image ذخیرهٔ تصویر Images (*.png *.jpg) تصاویر (*.png *.jpg) ReTextTab New document سند جدید Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! امکان تجزیه و تحلیل محتوای پرونده نبود. بررسی کنید که آیا <a href="%s">پیمانهٔ لازم </a> برای این کار را نصب کرده‌اید یا نه. Create missing file? پرونده گم شده ایجاد شود؟ The file '%s' does not exist. Do you want to create it? پروندهٔ '%s' وجود ندارد. آیا می خواهید آن را ایجاد کنید؟ File could not be created امکان ایجاد پرونده نبود. Could not create file '%s': %s امکان ایجاد پرونده '%s': %s نبود ReTextWindow File toolbar نوار ابزار پرونده Edit toolbar نوار ابزار ویرایش Search toolbar نوار ابزار جستجو New جدید Open باز کردن Set encoding تعیین نظام نویسه Reload بارگذاری دوباره Save ذخیره Save as ذخیره به عنوان Next tab سربرگ بعدی Previous tab سربرگ قبلی Close tab بستن سربرگ Print چاپ Print preview پیش‌نمایش چاپ View HTML code نمایش کد HTML  Change editor font تغییر رسم الخطّ ویرایشگر Change preview font تغییر رسم الخطّ پیش‌نمایش Find text یافتن متن Go to line رفتن به خط شمارهٔ Preview پیش‌نمایش Live preview پیش‌نمایش زنده Insert table درج جدول Table editing mode حالت ویرایش جدول Insert images by file path درج تصویر با استفاده از مسیر پرونده FakeVim mode حالت تقلید از ویرایشگر Vim Fullscreen mode حالت تمام صفحه Preferences تنظیمات Quit خروج Undo باطل کردن Redo انجام دوباره Copy رونوشت Cut برش Paste چسباندن Paste image چسباندن تصویر Move line up یک خط بالا رفتن Move line down یک خط پایین رفتن Enable فعّال‌سازی Set locale تعیین زبان محلّی Use WebEngine (Chromium) renderer استفاده از موتور WebEngine (Chromium) برای تهیّهٔ خروجی Show directory نمایش دایرکتوری Next بعدی Previous قبلی Replace جایگزینی Replace all جایگزینی همه Close بستن Get help online دریافت کمک برخط What's new چیزهای نوین About ReText دربارهٔ ReText About Qt دربارهٔ Qt Bold ضخیم Italic کج Underline زیر خط‌دار Formatting قالب‌بندی Symbols نمادها &File پرونده &Edit ویرایش &Help کمک Open recent باز کردن موارد اخیر Export صدور خروجی Spell check بررسی املایی Default markup نشانه‌گذاری پیش‌فرض Search جستجو Replace with جایگزینی با Case sensitively حسّاسیّت نسبت به حروف بزرگ و کوچک New document سند جدید Type the line number تایپ شمارهٔ سطر Please, save the file somewhere. لطفاً پرونده را در محلّی ذخیره کنید. Select one or several files to open یک یا چند پرونده را برای باز کردن انتخاب کنید Supported files پرونده‌های پشتیبانی شده All files (*) همهٔ پرونده‌ها (*) Plain text (*.txt) متن ساده (*.txt) %s files Example of final string: Markdown files پرونده %s Save file ذخیرهٔ پرونده Cannot save to file which is open in another tab! امکان ذخیرهٔ پرونده‌ای که در سربرگ دیگری باز شده نیست! Export document to ODT صدور خروجی سند به قالب پروندهٔ ODT OpenDocument text files (*.odt) پروندهٔ متنی کد باز (*.odt) HTML files (*.html *.htm) HTML files (*.html *.htm) Unrecognized paperSize setting "%s". اندازهٔ صفحهٔ نامشخّص در تنظیمات "%s". Export document to PDF صدور به قالب PDF PDF files (*.pdf) PDF files (*.pdf) Print document چاپ سند Export document خروج سند Failed to execute the command: اجرای این دستور ناموفّق بود: Alt text متن جایگزین URL نشانی وبگاه Link text متن پیوند This file has been deleted by other application. Please make sure you save the file before exit. این پرونده را برنامهٔ دیگری حذف کرده است. لطفاً قبل از خروج خاطر جمع شوید که پرونده را ذخیره کرده‌اید. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? این سند را برنامهٔ دیگری تغییر داده است. می‌خواهید آن‌ها را دوباره بارگذاری کنید (این کار همهٔ تغییرات شما را از بین می‌برد)؟ Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ذخیرهٔ خودکار موقّتاً برای این سربرگ غیرفعّال شده است تا دادهها از دست نروند. هر گاه سند را دوباره باز کنید فعّال خواهد شد؛ یا می‌توانید سند را به صورت دستی ذخیره کنید. The document has been modified. Do you want to save your changes? سند تغییر کرده است. می‌خواهید آن ها را ذخیره کنید؟ HTML code HTML code Select one or several images to open یک یا چند تصویر را برای باز کردن انتخاب کنید ReText %s (using PyMarkups %s) ReText %s (using PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText یک ویرایشگر متن ساده ولی توانمند برای ویرایش متن‌ در قالب‌های Markdown و reStructuredText Author: Dmitry Shachnev, 2011 نگارنده: Dmitry Shachnev, 2011 Markdown syntax قواعد Markdown reStructuredText syntax قواعد reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d w | %d a | %d c main Open the files in preview mode باز کردن پرونده‌ها در حالت پیش‌نمایش Create a new window even if there is an existing one ایجاد یک پنجرهٔ تازه، حتّی اگر یکی از قبل باشد List of files to open فهرست پرونده‌های مورد نظر برای باز شدن ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_fi.qm0000644000175000017500000003007314575355102017412 0ustar00dmitrydmitryb"gdyYc'gtzBrVDVgl)D! by%Ev #S4J&m rh5t y":Fr++ 'E0B 0 E#k 5%ϗ°ϡ  #Tm)+I9"' 7(  R @} h> a la v! $ ȗ t* Q 5 F l c% ) ??eb \$5 p wl N J UW Px v! Y  U 2 !8 I ~>//+3%zieKI U*) } O&3.i,S~Avaa viimeksi kytetyt asiakirjat automaattisesti kynnistess,Automatically open last documents on startup ConfigDialogFTallenna asiakirjat automaattisestiAutomatically save documents ConfigDialogKyttytyminenBehavior ConfigDialogEditoriEditor ConfigDialog6Ota kyttn pehme rivitysEnable soft wrap ConfigDialog`Ota kyttn synkronisoitu vieritys Markdownille*Enable synchronized scrolling for Markdown ConfigDialogApuaHelp ConfigDialog*Korosta nykyinen riviHighlight current line ConfigDialog"Kuvaketeeman nimiIcon theme name ConfigDialogKyttliittym Interface ConfigDialog^Rivinumerointi on suhteellinen nykyiseen riviin)Line numbers are relative to current line ConfigDialogLive-esikatselu Live preview ConfigDialog^Markdown syntaksilisosat (pilkulla eroteltuna),Markdown syntax extensions (comma-separated) ConfigDialogRAvaa ulkopuoliset linkit ReText ikkunassa$Open external links in ReText window ConfigDialog*Palauta ikkunan mitatRestore window geometry ConfigDialog2Nyt dokumentin tilastotShow document stats ConfigDialog(Nyt rivinumerointiShow line numbers ConfigDialog"TyyliohjetiedostoStylesheet file ConfigDialog8Sarkain asettaa vlilyntejTab key inserts spaces ConfigDialog Sarkaimen leveysTabulation width ConfigDialog4Kytetn asetustiedostoa:Using configuration file at: ConfigDialog(tyhj)(none)FileDialogButton2Valitse avattava tiedostoSelect file to openFileSelectButtonPSyt lokaalin nimi (esimerkiksi: fi_FI)"Enter locale name (example: en_US) LocaleDialog"Aseta oletukseksiSet as default LocaleDialogInformaatio InformationProxyEi kirjoitusta viime tallennuksen jlkeen (lis ! yliajaaksesi).No write since last change (add ! to override)Proxy"Lis sanakirjaanAdd to dictionary ReTextEdit&Kuvat (*.png *.jpg)Images (*.png *.jpg) ReTextEditTallenna kuva Save image ReTextEditTiedoston sislt ei voitu jsent, tarkista, ett sinulla on <a href="%s">tarvittava moduuli</a> asennettuna! aCould not parse file contents, check if you have the necessary module installed! ReTextTabUusi asiakirja New document ReTextTab%s-tiedostot%s files ReTextWindow&Muokkaa&Edit ReTextWindow&Tiedosto&File ReTextWindow &Ohje&Help ReTextWindowTietoa Qt:staAbout Qt ReTextWindow"Tietoa ReTextist About ReText ReTextWindow(Kaikki tiedostot (*) All files (*) ReTextWindow*Vaihtoehtoinen tekstiAlt text ReTextWindow:Tekij: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowLihavointiBold ReTextWindowEi voitu tallentaa tiedostoa, joka on auki toisessa vlilehdess!1Cannot save to file which is open in another tab! ReTextWindow.MerkkikokoriippuvaisuusCase sensitively ReTextWindow,Vaihda editorin fonttiChange editor font ReTextWindow2Vaihda esikatselun fonttiChange preview font ReTextWindow SuljeClose ReTextWindowSulje vlilehti Close tab ReTextWindow KopioiCopy ReTextWindowLeikkaaCut ReTextWindow&OletusmerkintkieliDefault markup ReTextWindow*Muokkaa-tykalupalkki Edit toolbar ReTextWindowOta kyttnEnable ReTextWindowVieExport ReTextWindowVie asiakirjaExport document ReTextWindow:Vie asiakirja ODT-tiedostoksiExport document to ODT ReTextWindow:Vie asiakirja PDF-tiedostoksiExport document to PDF ReTextWindowFKomennon suorittaminen eponnistui:Failed to execute the command: ReTextWindowFakeVim-tila FakeVim mode ReTextWindow,Tiedosto-tykalupalkki File toolbar ReTextWindowEtsi teksti Find text ReTextWindowMuotoilu Formatting ReTextWindow Koko nytn tilaFullscreen mode ReTextWindowHTML-koodi HTML code ReTextWindow:HTML-tiedostot (*.html *.htm)HTML files (*.html *.htm) ReTextWindowKursivointiItalic ReTextWindowLinkin teksti Link text ReTextWindowLive-esikatselu Live preview ReTextWindow"Markdown syntaksiMarkdown syntax ReTextWindow(Siirry rivi alaspinMove line down ReTextWindow(Siirry rivi ylspin Move line up ReTextWindowUusiNew ReTextWindowUusi asiakirja New document ReTextWindowSeuraavaNext ReTextWindow$Seuraava vlilehtiNext tab ReTextWindowAvaaOpen ReTextWindow$Avaa viimeaikainen Open recent ReTextWindowHOpenDocument tekstitiedostot (*.odt)OpenDocument text files (*.odt) ReTextWindow*PDF-tiedostot (*.pdf)PDF files (*.pdf) ReTextWindow LiitPaste ReTextWindow&Selkoteksti (*.txt)Plain text (*.txt) ReTextWindow6Tallenna tiedosto johonkin. Please, save the file somewhere. ReTextWindowAsetukset Preferences ReTextWindowEsikatseluPreview ReTextWindowEdellinenPrevious ReTextWindow&Edellinen vlilehti Previous tab ReTextWindowTulostaPrint ReTextWindow"Tulosta asiakirjaPrint document ReTextWindow,Tulostuksen esikatselu Print preview ReTextWindow PoistuQuit ReTextWindowBReText %s (kytten PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindowTee uudelleenRedo ReTextWindowLataa uudelleenReload ReTextWindow KorvaaReplace ReTextWindowKorvaa kaikki Replace all ReTextWindow Korvaa Replace with ReTextWindowTallennaSave ReTextWindow Tallenna nimellSave as ReTextWindow"Tallenna tiedosto Save file ReTextWindowHaeSearch ReTextWindow$Haku-tykalupalkkiSearch toolbar ReTextWindowZValitse yksi tai useampi tiedosto avattavaksi#Select one or several files to open ReTextWindowAseta enkoodaus Set encoding ReTextWindowAseta lokaali Set locale ReTextWindowNyt hakemistoShow directory ReTextWindowYksinkertainen, mutta tehokas Markdown- ja reStructuredText-editori ConfigDialog Using configuration file at: Käytetään asetustiedostoa: Behavior Käyttäytyminen Automatically save documents Tallenna asiakirjat automaattisesti Automatically open last documents on startup Avaa viimeksi käytetyt asiakirjat automaattisesti käynnistäessä Number of recent documents Restore window geometry Palauta ikkunan mitat Default preview state Open external links in ReText window Avaa ulkopuoliset linkit ReText ikkunassa Markdown syntax extensions (comma-separated) Markdown syntaksilisäosat (pilkulla eroteltuna) Enable synchronized scrolling for Markdown Ota käyttöön synkronisoitu vieritys Markdownille Editor Editori Highlight current line Korosta nykyinen rivi Show line numbers Näytä rivinumerointi Line numbers are relative to current line Rivinumerointi on suhteellinen nykyiseen riviin Tab key inserts spaces Sarkain asettaa välilyöntejä Tabulation width Sarkaimen leveys Draw vertical line at column Enable soft wrap Ota käyttöön pehmeä rivitys Show document stats Näytä dokumentin tilastot Ordered list mode Interface Käyttöliittymä Hide toolbar Icon theme name Kuvaketeeman nimi Stylesheet file Tyyliohjetiedosto Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Apua Live preview Live-esikatselu Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (tyhjä) FileSelectButton Select file to open Valitse avattava tiedosto InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) Syötä lokaalin nimi (esimerkiksi: fi_FI) It is possible to specify multiple languages, separated by comma. Set as default Aseta oletukseksi Proxy No write since last change (add ! to override) Ei kirjoitusta viime tallennuksen jälkeen (lisää ! yliajaaksesi) Information Informaatio ReTextEdit Add to dictionary Lisää sanakirjaan Save image Tallenna kuva Images (*.png *.jpg) Kuvat (*.png *.jpg) ReTextTab New document Uusi asiakirja Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Tiedoston sisältöä ei voitu jäsentää, tarkista, että sinulla on <a href="%s">tarvittava moduuli</a> asennettuna! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Tiedosto-työkalupalkki Edit toolbar Muokkaa-työkalupalkki Search toolbar Haku-työkalupalkki New Uusi Open Avaa Set encoding Aseta enkoodaus Reload Lataa uudelleen Save Tallenna Save as Tallenna nimellä Next tab Seuraava välilehti Previous tab Edellinen välilehti Close tab Sulje välilehti Print Tulosta Print preview Tulostuksen esikatselu View HTML code Katsele HTML-koodia Change editor font Vaihda editorin fontti Change preview font Vaihda esikatselun fontti Find text Etsi tekstiä Go to line Preview Esikatselu Live preview Live-esikatselu Insert table Table editing mode Taulukonmuokkaustila Insert images by file path FakeVim mode FakeVim-tila Fullscreen mode Koko näytön tila Preferences Asetukset Quit Poistu Undo Kumoa Redo Tee uudelleen Copy Kopioi Cut Leikkaa Paste Liitä Paste image Move line up Siirry rivi ylöspäin Move line down Siirry rivi alaspäin Enable Ota käyttöön Set locale Aseta lokaali Use WebEngine (Chromium) renderer Käytä WebEngine (Chromium) -renderöijää Show directory Näytä hakemisto Next Seuraava Previous Edellinen Replace Korvaa Replace all Korvaa kaikki Close Sulje Get help online What's new About ReText Tietoa ReTextistä About Qt Tietoa Qt:sta Bold Lihavointi Italic Kursivointi Underline Alleviivaus Formatting Muotoilu Symbols Merkit &File &Tiedosto &Edit &Muokkaa &Help &Ohje Open recent Avaa viimeaikainen Export Vie Spell check Oikoluku Default markup Oletusmerkintäkieli Search Hae Replace with Korvaa Case sensitively Merkkikokoriippuvaisuus New document Uusi asiakirja Type the line number Please, save the file somewhere. Tallenna tiedosto johonkin. Select one or several files to open Valitse yksi tai useampi tiedosto avattavaksi Supported files Tuetut tiedostot All files (*) Kaikki tiedostot (*) Plain text (*.txt) Selkoteksti (*.txt) %s files Example of final string: Markdown files %s-tiedostot Save file Tallenna tiedosto Cannot save to file which is open in another tab! Ei voitu tallentaa tiedostoa, joka on auki toisessa välilehdessä! Export document to ODT Vie asiakirja ODT-tiedostoksi OpenDocument text files (*.odt) OpenDocument tekstitiedostot (*.odt) HTML files (*.html *.htm) HTML-tiedostot (*.html *.htm) Unrecognized paperSize setting "%s". Tunnistamaton paperin koko -asetus "%s". Export document to PDF Vie asiakirja PDF-tiedostoksi PDF files (*.pdf) PDF-tiedostot (*.pdf) Print document Tulosta asiakirja Export document Vie asiakirja Failed to execute the command: Komennon suorittaminen epäonnistui: Alt text Vaihtoehtoinen teksti URL URL Link text Linkin teksti This file has been deleted by other application. Please make sure you save the file before exit. Toinen sovellus on poistanut tämän tiedoston. Varmista, että tallennat tiedoston ennen sulkemista. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Tätä asiakirjaa on muokattu toisella sovelluksella. Haluatko ladata tiedoston uudelleen (tämä hylkää nykyiset muutoksesi)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Asiakirjaa on muokattu. Haluatko tallentaa muutokset? HTML code HTML-koodi Select one or several images to open ReText %s (using PyMarkups %s) ReText %s (käyttäen PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Yksinkertainen, mutta tehokas Markdown- ja reStructuredText-editori Author: Dmitry Shachnev, 2011 Tekijä: Dmitry Shachnev, 2011 Markdown syntax Markdown syntaksi reStructuredText syntax reStructuredText-syntaksi TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_fr.qm0000644000175000017500000004272514575355102017432 0ustar00dmitrydmitry b3dyYc' gtO(Ez%r.NDVPg%xl)0LD! by%"v"ћr( (#S 4J8m'r5t1k 2 ?@Fr='>KW9',d0B!NM@+eg G> -d0 E4:u,k57Vϗ.t°*ϡ 1w 5FT+|)+I-893y=J9>4'1=.7:)  @&! h>B j3  la v2C W $ lr ȗ t<+ Q  F  c7 5& ) ??e$ \5 #> S p#g w# F J U G N^ Px$ v2 Y/f .2 U 2+ 1 I+ ~> ?/=36v4E 0%tze)^I}U!GKx'%=$]ˏL*)T O7."Li@tOuvrir automatiquement les derniers documents au dmarrage,Automatically open last documents on startup ConfigDialogHSauvegarde automatique des documentsAutomatically save documents ConfigDialogComportementBehavior ConfigDialogLigne active Cursor Line ConfigDialogLtat par dfaut de la prvisualisationDefault preview state ConfigDialogDsactivDisabled ConfigDialogVDessiner une ligne verticale sur la colonneDraw vertical line at column ConfigDialogditeurEditor ConfigDialogBActiver le renvoi la ligne douxEnable soft wrap ConfigDialog^Activer le dfilement synchronis pour Markdown*Enable synchronized scrolling for Markdown ConfigDialogAideHelp ConfigDialogjMasquer la barre des onglets lorsqu'il n'y en a qu'un(Hide tabs bar when there is only one tab ConfigDialog2Masquer la barre d'outils Hide toolbar ConfigDialog6Surligner la ligne couranteHighlight current line ConfigDialog*Nom du thme d icnesIcon theme name ConfigDialogIncrmenter Increment ConfigDialogInterface Interface ConfigDialogjLes numros de lignes sont relatifs la ligne active)Line numbers are relative to current line ConfigDialog<Prvisualisation en temps rel Live preview ConfigDialog\Extensions Markdown (spares par une virgule),Markdown syntax extensions (comma-separated) ConfigDialog0Prvisualisation normaleNormal preview ConfigDialog6Nombre de documents rcentsNumber of recent documents ConfigDialogfOuvrir les liens externes dans la fentre de ReText$Open external links in ReText window ConfigDialog&Mode liste ordonneOrdered list mode ConfigDialogRpterRepeat ConfigDialogBRestaurer la taille de la fentreRestore window geometry ConfigDialogHAfficher l'arborescence des dossiersShow directory tree ConfigDialogJAfficher les statistiques du documentShow document stats ConfigDialoglAfficher le chemin complet dans le titre de la fentreShow full path in window title ConfigDialog:Afficher les numros de ligneShow line numbers ConfigDialog6Fichier de feuille de styleStylesheet file ConfigDialog@La touche Tab insre des espacesTab key inserts spaces ConfigDialog*Largeur de tabulationTabulation width ConfigDialogbUtilisation du fichier de configuration suivant :Using configuration file at: ConfigDialog$Dossier de travailWorking directory ConfigDialog Lignes renvoyes Wrapped Line ConfigDialog6Choisir le dossier ouvrirSelect directory to openDirectorySelectButton:Entrez le nom de l'encodage :Enter encoding name:EncodingDialog (sans)(none)FileDialogButton6Choisir le fichier ouvrirSelect file to openFileSelectButton$Insrer un tableau Insert tableInsertTableDialog$Nombre de colonnesNumber of columnsInsertTableDialog Nombre de lignesNumber of rowsInsertTableDialogbEntrez le prfixe pour la langue (exemple: fr_FR)"Enter locale name (example: en_US) LocaleDialogIl est possible de spcifier plusieurs langages, spars par des virgules.AIt is possible to specify multiple languages, separated by comma. LocaleDialog$Dfinir par dfautSet as default LocaleDialogInformation InformationProxyPas d'criture depuis le dernier changement (ajoutez ! pour craser).No write since last change (add ! to override)Proxy,Ajouter au dictionaireAdd to dictionary ReTextEdit(Images (*.png *.jpg)Images (*.png *.jpg) ReTextEdit&Enregistrer l'image Save image ReTextEditPImpossible de crer le fichier "%s" : %sCould not create file '%s': %s ReTextTabImpossible d'analyser le contenu du fichier, vrifier si les <a href="%s">modules ncessaires</a> sont installs!aCould not parse file contents, check if you have the necessary module installed! ReTextTab6Crer le fichier manquant ?Create missing file? ReTextTab>Le fichier n'a pas pu tre crFile could not be created ReTextTab Nouveau document New document ReTextTabjLe fichier "%s" n'existe pas. Voulez-vous le crer ?8The file '%s' does not exist. Do you want to create it? ReTextTabFichiers %s%s files ReTextWindow&Editer&Edit ReTextWindow&Fichier&File ReTextWindow &Aide&Help ReTextWindow propos de QtAbout Qt ReTextWindow$ propos de ReText About ReText ReTextWindow*Tous les fichiers (*) All files (*) ReTextWindow Texte alternatifAlt text ReTextWindow:Auteur: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowLa sauvegarde automatique a t temporairement dsactive pour cet onglet pour viter une perte de donnes. Elle sera ractive lorsque vous rechargerez ou enregistrerez le fichier manuellement.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindowGrasBold ReTextWindowImpossible d'enregistrer un fichier ouvert dans un autre onglet!1Cannot save to file which is open in another tab! ReTextWindow&Sensible la casseCase sensitively ReTextWindow<Changer la police de l'diteurChange editor font ReTextWindow:Changer la police de l'aperuChange preview font ReTextWindow FermerClose ReTextWindowFermer l'onglet Close tab ReTextWindow CopierCopy ReTextWindow CouperCut ReTextWindow&Balisage par dfautDefault markup ReTextWindow*Barre d'outil dition Edit toolbar ReTextWindowActiverEnable ReTextWindowExporterExport ReTextWindow(Exporter le documentExport document ReTextWindowDExporter le document au format ODTExport document to ODT ReTextWindowDExporter le document au format PDFExport document to PDF ReTextWindowTchec lors de l'excution de la commande :Failed to execute the command: ReTextWindow Imitation de Vim FakeVim mode ReTextWindow*Barre d'outil Fichier File toolbar ReTextWindow&Rechercher un texte Find text ReTextWindowFormatage Formatting ReTextWindow Mode plein cranFullscreen mode ReTextWindow&Assistance en ligneGet help online ReTextWindow Aller la ligne Go to line ReTextWindowCode HTML HTML code ReTextWindow8Fichiers HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindowJInsrer des images par chemin d'accsInsert images by file path ReTextWindow$Insrer un tableau Insert table ReTextWindowItaliqueItalic ReTextWindowTexte du lien Link text ReTextWindow Aperu dynamique Live preview ReTextWindow Syntaxe MarkdownMarkdown syntax ReTextWindow(Redescendre la ligneMove line down ReTextWindow"Remonter la ligne Move line up ReTextWindowNouveauNew ReTextWindow Nouveau document New document ReTextWindowSuivantNext ReTextWindowOnglet suivantNext tab ReTextWindow OuvrirOpen ReTextWindow6Ouvrir les fichiers rcents Open recent ReTextWindowFFichiers OpenDocument texte (*.odt)OpenDocument text files (*.odt) ReTextWindow(Fichiers PDF (*.pdf)PDF files (*.pdf) ReTextWindow CollerPaste ReTextWindowColler l'image Paste image ReTextWindow,Fichiers texte (*.txt)Plain text (*.txt) ReTextWindowZVeuillez enregistrer le fichier quelque part. Please, save the file somewhere. ReTextWindowPrfrences Preferences ReTextWindow AperuPreview ReTextWindowPrcdentPrevious ReTextWindow Onglet prcdent Previous tab ReTextWindowImprimerPrint ReTextWindow(Imprimer le documentPrint document ReTextWindow.Aperu avant impression Print preview ReTextWindowQuitterQuit ReTextWindowDReText %s (utilisant PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindowRtablirRedo ReTextWindowRechargerReload ReTextWindowRemplacerReplace ReTextWindowRemplacer tout Replace all ReTextWindowRemplacer avec Replace with ReTextWindowEnregistrerSave ReTextWindow Enregistrer SousSave as ReTextWindow,Enregistrer le fichier Save file ReTextWindowRechercherSearch ReTextWindow.Barre d'outil RechercheSearch toolbar ReTextWindowRChoisir un ou plusieurs fichiers ouvrir#Select one or several files to open ReTextWindowTChoisir une ou plusieurs image(s) ouvrir$Select one or several images to open ReTextWindow$Dfinir l'encodage Set encoding ReTextWindow"Choisir la langue Set locale ReTextWindow,Afficher le rpertoireShow directory ReTextWindowxditeur de Markdown et reStructuredText simple mais puissant ConfigDialog Using configuration file at: Utilisation du fichier de configuration suivant : Behavior Comportement Automatically save documents Sauvegarde automatique des documents Automatically open last documents on startup Ouvrir automatiquement les derniers documents au démarrage Number of recent documents Nombre de documents récents Restore window geometry Restaurer la taille de la fenêtre Default preview state État par défaut de la prévisualisation Open external links in ReText window Ouvrir les liens externes dans la fenêtre de ReText Markdown syntax extensions (comma-separated) Extensions Markdown (séparées par une virgule) Enable synchronized scrolling for Markdown Activer le défilement synchronisé pour Markdown Editor Éditeur Highlight current line Surligner la ligne courante Show line numbers Afficher les numéros de ligne Line numbers are relative to current line Les numéros de lignes sont relatifs à la ligne active Tab key inserts spaces La touche Tab insère des espaces Tabulation width Largeur de tabulation Draw vertical line at column Dessiner une ligne verticale sur la colonne Enable soft wrap Activer le renvoi à la ligne doux Show document stats Afficher les statistiques du document Ordered list mode Mode liste ordonnée Interface Interface Hide toolbar Masquer la barre d'outils Icon theme name Nom du thème d’icônes Stylesheet file Fichier de feuille de style Hide tabs bar when there is only one tab Masquer la barre des onglets lorsqu'il n'y en a qu'un Show full path in window title Afficher le chemin complet dans le titre de la fenêtre Show directory tree Afficher l'arborescence des dossiers Working directory Dossier de travail Help Aide Live preview Prévisualisation en temps réel Normal preview Prévisualisation normale Disabled Désactivé Cursor Line Ligne active Wrapped Line Lignes renvoyées Increment Incrémenter Repeat Répéter DirectorySelectButton Select directory to open Choisir le dossier à ouvrir EncodingDialog Enter encoding name: Entrez le nom de l'encodage : FileDialogButton (none) (sans) FileSelectButton Select file to open Choisir le fichier à ouvrir InsertTableDialog Insert table Insérer un tableau Number of rows Nombre de lignes Number of columns Nombre de colonnes LocaleDialog Enter locale name (example: en_US) Entrez le préfixe pour la langue (exemple: fr_FR) It is possible to specify multiple languages, separated by comma. Il est possible de spécifier plusieurs langages, séparés par des virgules. Set as default Définir par défaut Proxy No write since last change (add ! to override) Pas d'écriture depuis le dernier changement (ajoutez ! pour écraser) Information Information ReTextEdit Add to dictionary Ajouter au dictionaire Save image Enregistrer l'image Images (*.png *.jpg) Images (*.png *.jpg) ReTextTab New document Nouveau document Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Impossible d'analyser le contenu du fichier, vérifier si les <a href="%s">modules nécessaires</a> sont installés! Create missing file? Créer le fichier manquant ? The file '%s' does not exist. Do you want to create it? Le fichier "%s" n'existe pas. Voulez-vous le créer ? File could not be created Le fichier n'a pas pu être créé Could not create file '%s': %s Impossible de créer le fichier "%s" : %s ReTextWindow File toolbar Barre d'outil Fichier Edit toolbar Barre d'outil Édition Search toolbar Barre d'outil Recherche New Nouveau Open Ouvrir Set encoding Définir l'encodage Reload Recharger Save Enregistrer Save as Enregistrer Sous Next tab Onglet suivant Previous tab Onglet précédent Close tab Fermer l'onglet Print Imprimer Print preview Aperçu avant impression View HTML code Voir le code HTML Change editor font Changer la police de l'éditeur Change preview font Changer la police de l'aperçu Find text Rechercher un texte Go to line Aller à la ligne Preview Aperçu Live preview Aperçu dynamique Insert table Insérer un tableau Table editing mode Mode édition table Insert images by file path Insérer des images par chemin d'accès FakeVim mode Imitation de Vim Fullscreen mode Mode plein écran Preferences Préférences Quit Quitter Undo Annuler Redo Rétablir Copy Copier Cut Couper Paste Coller Paste image Coller l'image Move line up Remonter la ligne Move line down Redescendre la ligne Enable Activer Set locale Choisir la langue Use WebEngine (Chromium) renderer Utiliser le rendu de WebEngine (Chromium) Show directory Afficher le répertoire Next Suivant Previous Précédent Replace Remplacer Replace all Remplacer tout Close Fermer Get help online Assistance en ligne What's new Nouveautés About ReText À propos de ReText About Qt À propos de Qt Bold Gras Italic Italique Underline Souligné Formatting Formatage Symbols Symboles &File &Fichier &Edit &Editer &Help &Aide Open recent Ouvrir les fichiers récents Export Exporter Spell check Vérifier l'orthographe Default markup Balisage par défaut Search Rechercher Replace with Remplacer avec Case sensitively Sensible à la casse New document Nouveau document Type the line number Saisir le numéro de ligne Please, save the file somewhere. Veuillez enregistrer le fichier quelque part. Select one or several files to open Choisir un ou plusieurs fichiers à ouvrir Supported files Formats acceptés All files (*) Tous les fichiers (*) Plain text (*.txt) Fichiers texte (*.txt) %s files Example of final string: Markdown files Fichiers %s Save file Enregistrer le fichier Cannot save to file which is open in another tab! Impossible d'enregistrer un fichier ouvert dans un autre onglet! Export document to ODT Exporter le document au format ODT OpenDocument text files (*.odt) Fichiers OpenDocument texte (*.odt) HTML files (*.html *.htm) Fichiers HTML (*.html *.htm) Unrecognized paperSize setting "%s". Paramètre paperSize non reconnu "%s". Export document to PDF Exporter le document au format PDF PDF files (*.pdf) Fichiers PDF (*.pdf) Print document Imprimer le document Export document Exporter le document Failed to execute the command: Échec lors de l'exécution de la commande : Alt text Texte alternatif URL URL Link text Texte du lien This file has been deleted by other application. Please make sure you save the file before exit. Ce fichier a été supprimé par une autre application. Pensez à vérifier que vous sauvegardez le fichier avant de quitter. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Ce document a été modifié par une autre application. Voulez-vous recharger le fichier (vos modifications seront perdues) ? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. La sauvegarde automatique a été temporairement désactivée pour cet onglet pour éviter une perte de données. Elle sera réactivée lorsque vous rechargerez ou enregistrerez le fichier manuellement. The document has been modified. Do you want to save your changes? Le document a été modifié. Voulez vous enregistrer vos changements ? HTML code Code HTML Select one or several images to open Choisir une ou plusieurs image(s) à ouvrir ReText %s (using PyMarkups %s) ReText %s (utilisant PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Éditeur de Markdown et reStructuredText simple mais puissant Author: Dmitry Shachnev, 2011 Auteur: Dmitry Shachnev, 2011 Markdown syntax Syntaxe Markdown reStructuredText syntax Syntaxe reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d m | %d a | %d c main Open the files in preview mode Ouvrir les fichiers en mode prévisualisation Create a new window even if there is an existing one Ouvrir une nouvelle fenêtre même s'il en existe déjà une List of files to open Liste des fichiers à ouvrir ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_hr.qm0000644000175000017500000002721514575355102017431 0ustar00dmitrydmitryIb dyYc'gt{zrgl)BD!} by%v7 #S4J%m rV5t  Fr))'0B 0 E"8k 5$ϗϡ  "T)M+I9!I'M7'T  3 @& h> R la v ; $ ȗ t( ] F  c$e ) ??e \" #*[ p w < J U N^w Px\ v w Yz H U 2  Ir ~>+/)3#eI UZH*)^ O%.i*tOtvaranje zadnje ureivanoga dokumenta prilikom pokretanja,Automatically open last documents on startup ConfigDialog>Automatsko spremanje dokumenataAutomatically save documents ConfigDialogPonaaanjeBehavior ConfigDialog@Prika~i okomitu liniju na stupcuDraw vertical line at column ConfigDialogUreiva Editor ConfigDialogPKoristi sinkroniziran kliza za Markdown*Enable synchronized scrolling for Markdown ConfigDialog PomoHelp ConfigDialog*Istakni aktivni redakHighlight current line ConfigDialog Naziv teme ikonaIcon theme name ConfigDialogSu elje Interface ConfigDialogPregled u~ivo Live preview ConfigDialog`Proairenje sintakse Markdowna (odvajati zarezom),Markdown syntax extensions (comma-separated) ConfigDialogFOtvaraj vanjske poveznice u ReTextu$Open external links in ReText window ConfigDialog4Pamenje dimenzije prozoraRestore window geometry ConfigDialogLPrikaz statisti kih podataka dokumentaShow document stats ConfigDialog,Prika~i brojeve redakaShow line numbers ConfigDialog,Datoteka lista stilovaStylesheet file ConfigDialog"Tab umee bjelineTab key inserts spaces ConfigDialog"`irina tabulatoraTabulation width ConfigDialog(niata)(none)FileDialogButton>Odaberite datoteku za otvaranjeSelect file to openFileSelectButton^Unesite naziv lokalizacijske datoteke (npr. hr)"Enter locale name (example: en_US) LocaleDialog$Postavi kao zadanoSet as default LocaleDialogInformacije InformationProxyjNema unosa od zadnje izmjene (dodajte ! da pregazite).No write since last change (add ! to override)Proxy*Dodaj rije u rje nikAdd to dictionary ReTextEdit&Slike (*.png *.jpg)Images (*.png *.jpg) ReTextEditSpremi sliku Save image ReTextEditNije mogue raa laniti sadr~aj datoteke. Provjerite imate li instaliran <a href="%s">potreban modul</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTabNovi dokument New document ReTextTab%s datoteke%s files ReTextWindow&Ureivanje&Edit ReTextWindow&Datoteka&File ReTextWindow &Pomo&Help ReTextWindow O Qt-uAbout Qt ReTextWindowO ReTextu About ReText ReTextWindow.Sve tipovi datoteka (*) All files (*) ReTextWindow*Tekst kao alternativaAlt text ReTextWindow8Autor: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowPodebljanoBold ReTextWindow~Datoteku nije mogue spremiti jer je otvorena u drugoj kartici.1Cannot save to file which is open in another tab! ReTextWindow8Razlikuj velika i mala slovaCase sensitively ReTextWindow0Promjena fonta ureiva aChange editor font ReTextWindow.Promjena fonta pregledaChange preview font ReTextWindowZatvoriClose ReTextWindowZatvori karticu Close tab ReTextWindowKopirajCopy ReTextWindow Izre~iCut ReTextWindowZadana sintaksaDefault markup ReTextWindow.Alatna traka ureivanja Edit toolbar ReTextWindowOmoguiEnable ReTextWindow IzvozExport ReTextWindowIzvezi dokumentExport document ReTextWindow.Izvezi datoteku kao ODTExport document to ODT ReTextWindow.Izvezi datoteku kao PDFExport document to PDF ReTextWindow,Naredba nije izvraena:Failed to execute the command: ReTextWindow0La~ni Vim kao na in rada FakeVim mode ReTextWindow*Alatna traka datoteka File toolbar ReTextWindowTra~i u tekstu Find text ReTextWindowOblikovanje Formatting ReTextWindowXPrikaz preko cijeloga zaslona kao na in radaFullscreen mode ReTextWindow8Tra~enje pomoi na internetuGet help online ReTextWindowHTML kod HTML code ReTextWindow8HTML datoteka (*.html *.htm)HTML files (*.html *.htm) ReTextWindowUkoaenoItalic ReTextWindow$Poveznica na tekst Link text ReTextWindowPregled u~ivo Live preview ReTextWindow$Sintaksa MarkdownaMarkdown syntax ReTextWindowNovoNew ReTextWindowNovi dokument New document ReTextWindowSljedeeNext ReTextWindow Sljedea karticaNext tab ReTextWindow OtvoriOpen ReTextWindowDOtvori nedavno ureivane dokumente Open recent ReTextWindowJOpenDocument tekstna datoteka (*.odt)OpenDocument text files (*.odt) ReTextWindow(PDF datoteke (*.pdf)PDF files (*.pdf) ReTextWindow UmetniPaste ReTextWindow(Obi an tekst (*.txt)Plain text (*.txt) ReTextWindow$Spremite datoteku. Please, save the file somewhere. ReTextWindowPodeaavanja Preferences ReTextWindowPregledPreview ReTextWindowPrethodnoPrevious ReTextWindow"Prethodna kartica Previous tab ReTextWindow IspisPrint ReTextWindowIspis dokumentaPrint document ReTextWindowPrikaz ispisa Print preview ReTextWindowZatvoriQuit ReTextWindowDReText %s (koristei PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow Ponovi prethodnoRedo ReTextWindowPonovno u itajReload ReTextWindowZamijeniReplace ReTextWindowZamijeni sve Replace all ReTextWindowZamijeni s Replace with ReTextWindow SpremiSave ReTextWindowSpremi kaoSave as ReTextWindowSpremi datoteku Save file ReTextWindow Tra~iSearch ReTextWindow*Alatna traka tra~enjaSearch toolbar ReTextWindow\Odaberite jednu ili viae datoteka za otvaranje#Select one or several files to open ReTextWindow"Postavi kodiranje Set encoding ReTextWindow&Postavljanje jezika Set locale ReTextWindow(Prika~i sadr~aj mapeShow directory ReTextWindowxJednostavan ali moan ureiva Markdowna i reStructuredTexta ConfigDialog Using configuration file at: Behavior Ponašanje Automatically save documents Automatsko spremanje dokumenata Automatically open last documents on startup Otvaranje zadnje uređivanoga dokumenta prilikom pokretanja Number of recent documents Restore window geometry Pamćenje dimenzije prozora Default preview state Open external links in ReText window Otvaraj vanjske poveznice u ReTextu Markdown syntax extensions (comma-separated) Proširenje sintakse Markdowna (odvajati zarezom) Enable synchronized scrolling for Markdown Koristi sinkroniziran klizač za Markdown Editor Uređivač Highlight current line Istakni aktivni redak Show line numbers Prikaži brojeve redaka Line numbers are relative to current line Tab key inserts spaces Tab umeće bjeline Tabulation width Širina tabulatora Draw vertical line at column Prikaži okomitu liniju na stupcu Enable soft wrap Show document stats Prikaz statističkih podataka dokumenta Ordered list mode Interface Sučelje Hide toolbar Icon theme name Naziv teme ikona Stylesheet file Datoteka lista stilova Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Pomoć Live preview Pregled uživo Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (ništa) FileSelectButton Select file to open Odaberite datoteku za otvaranje InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) Unesite naziv lokalizacijske datoteke (npr. hr) It is possible to specify multiple languages, separated by comma. Set as default Postavi kao zadano Proxy No write since last change (add ! to override) Nema unosa od zadnje izmjene (dodajte ! da pregazite) Information Informacije ReTextEdit Add to dictionary Dodaj riječ u rječnik Save image Spremi sliku Images (*.png *.jpg) Slike (*.png *.jpg) ReTextTab New document Novi dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Nije moguće raščlaniti sadržaj datoteke. Provjerite imate li instaliran <a href="%s">potreban modul</a>! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Alatna traka datoteka Edit toolbar Alatna traka uređivanja Search toolbar Alatna traka traženja New Novo Open Otvori Set encoding Postavi kodiranje Reload Ponovno učitaj Save Spremi Save as Spremi kao Next tab Sljedeća kartica Previous tab Prethodna kartica Close tab Zatvori karticu Print Ispis Print preview Prikaz ispisa View HTML code Pregled HTML koda Change editor font Promjena fonta uređivača Change preview font Promjena fonta pregleda Find text Traži u tekstu Go to line Preview Pregled Live preview Pregled uživo Insert table Table editing mode Uređivanje tablica kao način rada Insert images by file path FakeVim mode Lažni Vim kao način rada Fullscreen mode Prikaz preko cijeloga zaslona kao način rada Preferences Podešavanja Quit Zatvori Undo Vrati prethodno Redo Ponovi prethodno Copy Kopiraj Cut Izreži Paste Umetni Paste image Move line up Move line down Enable Omogući Set locale Postavljanje jezika Use WebEngine (Chromium) renderer Koristi WebEngine (Chromium) crtač Show directory Prikaži sadržaj mape Next Sljedeće Previous Prethodno Replace Zamijeni Replace all Zamijeni sve Close Zatvori Get help online Traženje pomoći na internetu What's new About ReText O ReTextu About Qt O Qt-u Bold Podebljano Italic Ukošeno Underline Podvučeno Formatting Oblikovanje Symbols Simboli &File &Datoteka &Edit &Uređivanje &Help &Pomoć Open recent Otvori nedavno uređivane dokumente Export Izvoz Spell check Provjera pravopisa Default markup Zadana sintaksa Search Traži Replace with Zamijeni s Case sensitively Razlikuj velika i mala slova New document Novi dokument Type the line number Please, save the file somewhere. Spremite datoteku. Select one or several files to open Odaberite jednu ili više datoteka za otvaranje Supported files Podržani tipovi datoteka All files (*) Sve tipovi datoteka (*) Plain text (*.txt) Običan tekst (*.txt) %s files Example of final string: Markdown files %s datoteke Save file Spremi datoteku Cannot save to file which is open in another tab! Datoteku nije moguće spremiti jer je otvorena u drugoj kartici. Export document to ODT Izvezi datoteku kao ODT OpenDocument text files (*.odt) OpenDocument tekstna datoteka (*.odt) HTML files (*.html *.htm) HTML datoteka (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Izvezi datoteku kao PDF PDF files (*.pdf) PDF datoteke (*.pdf) Print document Ispis dokumenta Export document Izvezi dokument Failed to execute the command: Naredba nije izvršena: Alt text Tekst kao alternativa URL URL Link text Poveznica na tekst This file has been deleted by other application. Please make sure you save the file before exit. Datoteku izbrisala neka druga aplikacija. Spremite datoteku prije zatvaranja. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Datoteka je izmijenjena i nekom drugom aplikacijom. Želite li je ponovno učitati? Ovo će poništiti vaše izmjene. Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Dokument je izmijenjen. Želite li spremiti izmjene? HTML code HTML kod Select one or several images to open ReText %s (using PyMarkups %s) ReText %s (koristeći PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Jednostavan ali moćan uređivač Markdowna i reStructuredTexta Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Sintaksa Markdowna reStructuredText syntax Sintaksa reStructuredTexta TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d m | %d a | %d c main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_hu.qm0000644000175000017500000001726514575355102017440 0ustar00dmitrydmitrysbDYc'`z g  by% v + K#Sm,r' 0 Ejϗ T) +IZ9  @ la v ȗ t  F  c \ p w C PxF v Y- H U& ID/43eU 6 C *) O. iJAutomatikusan mentse a dokumentumokatAutomatically save documents ConfigDialogMqkdsBehavior ConfigDialogSzerkesztQEditor ConfigDialogSgHelp ConfigDialog,Aktulis sor kiemelseHighlight current line ConfigDialogIkontma neveIcon theme name ConfigDialogProgram fellet Interface ConfigDialoglQ elQnzet Live preview ConfigDialogTKlsQ hivatkozsok megnyitsa a ReText-ben$Open external links in ReText window ConfigDialogBAz ablak mretnek visszalltsaRestore window geometry ConfigDialog.Sorszmok megjelentseShow line numbers ConfigDialog<A tabultor szkzket hasznlTab key inserts spaces ConfigDialog$TabultorszlessgTabulation width ConfigDialog>Nyelv megadsa (pldul: hu_HU)"Enter locale name (example: en_US) LocaleDialog:Bellts alaprtelmezettkntSet as default LocaleDialogNem tudtuk elemezni a fjl tartalmt, krjk ellenQrizze, hogy a <a href="%s">szksges modul</a> teleptve van-e!aCould not parse file contents, check if you have the necessary module installed! ReTextTabj dokumentum New document ReTextTab%s fjlok%s files ReTextWindow&Szerkeszts&Edit ReTextWindow &Fjl&File ReTextWindow S&g&Help ReTextWindowNvjegy: QtAbout Qt ReTextWindowNvjegy: ReText About ReText ReTextWindowMinden fjl (*) All files (*) ReTextWindow:SzerzQ: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowFlkvrBold ReTextWindowBetqrzkenyCase sensitively ReTextWindowMsolsCopy ReTextWindowKivgsCut ReTextWindow0Alaprtelmezett formtumDefault markup ReTextWindow*Szerkeszts eszkztr Edit toolbar ReTextWindowEngedlyezsEnable ReTextWindowExportlsExport ReTextWindow,Dokumentum exportlsaExport document ReTextWindowJDokumentum exportlsa ODT formtumbaExport document to ODT ReTextWindow:Dokumentum exportlsa PDF-beExport document to PDF ReTextWindowPNem tudtuk vgrehajtani ezt a parancsot:Failed to execute the command: ReTextWindowFjl eszkztr File toolbar ReTextWindowSzveg keresse Find text ReTextWindowFormzs Formatting ReTextWindowTeljes kpernyQFullscreen mode ReTextWindowOnline sgGet help online ReTextWindowHTML kd HTML code ReTextWindow4HTML fjlok (*.html *.htm)HTML files (*.html *.htm) ReTextWindowDQltItalic ReTextWindowlQ elQnzet Live preview ReTextWindow$Markdown szintaxisMarkdown syntax ReTextWindowjNew ReTextWindowj dokumentum New document ReTextWindowKvetkezQNext ReTextWindowMegnyitsOpen ReTextWindow(Legutbbi megnyitsa Open recent ReTextWindowDOpenDocument szveg fjlok (*.odt)OpenDocument text files (*.odt) ReTextWindow$PDF fjlok (*.pdf)PDF files (*.pdf) ReTextWindowBeillesztsPaste ReTextWindow.Egyszerq szveg (*.txt)Plain text (*.txt) ReTextWindowLKrjk mentse el a fjlt msik helyre. Please, save the file somewhere. ReTextWindowBelltsok Preferences ReTextWindowElQnzetPreview ReTextWindow ElQzQPrevious ReTextWindowNyomtatsPrint ReTextWindow*Dokumentum nyomtatsaPrint document ReTextWindow&Nyomtatsi elQnzet Print preview ReTextWindowKilpsQuit ReTextWindow jra vgrehajtsRedo ReTextWindow MentsSave ReTextWindow"Ments msknt...Save as ReTextWindowFjl mentse Save file ReTextWindowKeressSearch ReTextWindow"Keress eszkztrSearch toolbar ReTextWindowVJelljn ki egy vagy tbb fjlt megnyitsra#Select one or several files to open ReTextWindowKdols Set encoding ReTextWindow Nyelv belltsa Set locale ReTextWindowMappa mutatsaShow directory ReTextWindowEgyszerq, de nagy tuds Markdown s reStructuredText szerkesztQ ConfigDialog Using configuration file at: Behavior Működés Automatically save documents Automatikusan mentse a dokumentumokat Automatically open last documents on startup Number of recent documents Restore window geometry Az ablak méretének visszaállítása Default preview state Open external links in ReText window Külső hivatkozások megnyitása a ReText-ben Markdown syntax extensions (comma-separated) Enable synchronized scrolling for Markdown Editor Szerkesztő Highlight current line Aktuális sor kiemelése Show line numbers Sorszámok megjelenítése Line numbers are relative to current line Tab key inserts spaces A tabulátor szóközöket használ Tabulation width Tabulátorszélesség Draw vertical line at column Enable soft wrap Show document stats Ordered list mode Interface Program felület Hide toolbar Icon theme name Ikontéma neve Stylesheet file Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Súgó Live preview Élő előnézet Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) FileSelectButton Select file to open InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) Nyelv megadása (például: hu_HU) It is possible to specify multiple languages, separated by comma. Set as default Beállítás alapértelmezettként Proxy No write since last change (add ! to override) Information ReTextEdit Add to dictionary Save image Images (*.png *.jpg) ReTextTab New document Új dokumentum Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Nem tudtuk elemezni a fájl tartalmát, kérjük ellenőrizze, hogy a <a href="%s">szükséges modul</a> telepítve van-e! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Fájl eszköztár Edit toolbar Szerkesztés eszköztár Search toolbar Keresés eszköztár New Új Open Megnyitás Set encoding Kódolás Reload Save Mentés Save as Mentés másként... Next tab Previous tab Close tab Print Nyomtatás Print preview Nyomtatási előnézet View HTML code HTML kód megtekintése Change editor font Change preview font Find text Szöveg keresése Go to line Preview Előnézet Live preview Élő előnézet Insert table Table editing mode Insert images by file path FakeVim mode Fullscreen mode Teljes képernyő Preferences Beállítások Quit Kilépés Undo Visszavonás Redo Újra végrehajtás Copy Másolás Cut Kivágás Paste Beillesztés Paste image Move line up Move line down Enable Engedélyezés Set locale Nyelv beállítása Use WebEngine (Chromium) renderer Show directory Mappa mutatása Next Következő Previous Előző Replace Replace all Close Get help online Online súgó What's new About ReText Névjegy: ReText About Qt Névjegy: Qt Bold Félkövér Italic Dőlt Underline Aláhúzás Formatting Formázás Symbols Szimbólumok &File &Fájl &Edit &Szerkesztés &Help Sú&gó Open recent Legutóbbi megnyitása Export Exportálás Spell check Helyesírás-ellenőrzés Default markup Alapértelmezett formátum Search Keresés Replace with Case sensitively Betűérzékeny New document Új dokumentum Type the line number Please, save the file somewhere. Kérjük mentse el a fájlt másik helyre. Select one or several files to open Jelöljön ki egy vagy több fájlt megnyitásra Supported files Támogatott fájltípusok All files (*) Minden fájl (*) Plain text (*.txt) Egyszerű szöveg (*.txt) %s files Example of final string: Markdown files %s fájlok Save file Fájl mentése Cannot save to file which is open in another tab! Export document to ODT Dokumentum exportálása ODT formátumba OpenDocument text files (*.odt) OpenDocument szöveg fájlok (*.odt) HTML files (*.html *.htm) HTML fájlok (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Dokumentum exportálása PDF-be PDF files (*.pdf) PDF fájlok (*.pdf) Print document Dokumentum nyomtatása Export document Dokumentum exportálása Failed to execute the command: Nem tudtuk végrehajtani ezt a parancsot: Alt text URL Link text This file has been deleted by other application. Please make sure you save the file before exit. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Ezt a dokumentumot ön módosította. El kívánja menteni a változtatásokat? HTML code HTML kód Select one or several images to open ReText %s (using PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Egyszerű, de nagy tudású Markdown és reStructuredText szerkesztő Author: Dmitry Shachnev, 2011 Szerző: Dmitry Shachnev, 2011 Markdown syntax Markdown szintaxis reStructuredText syntax reStructuredText szintaxis TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_it.qm0000644000175000017500000003705014575355102017432 0ustar00dmitrydmitry b-dyYc'gtn9# z!Hr)DVg!x l)*D!h by%vLћr3# #o#S a4J2umr5t+k s-rFr789W9''-0BM8e G8-d\0 E.:u'k518ϗ)5°$ϡ ,( /8T&e),+I'9.  '+)o74%  @! h> j3Y laz v, W $ ȗ t6 QD  F  c1 5"1 )s ??e D \/ #8  p wL D J U N^4 Px v-4 Y*) ( UQ 2% ,v I& ~>]/730\4E z 1e$OI?U= ˏ*)8 O1.i9]|Apri automaticamente gli ultimi documenti utilizzati all'avvio,Automatically open last documents on startup ConfigDialog>Salva automaticamente documentiAutomatically save documents ConfigDialogComportamentoBehavior ConfigDialog6Stato predefinito anteprimaDefault preview state ConfigDialogDisabilitatoDisabled ConfigDialogFTraccia riga verticale alla colonnaDraw vertical line at column ConfigDialog EditorEditor ConfigDialogBAbilita ritorno a capo automaticoEnable soft wrap ConfigDialog\Abilita scorrimento sincronizzato per Markdown*Enable synchronized scrolling for Markdown ConfigDialog AiutoHelp ConfigDialoglNascondi barra delle schede quando c' solo una scheda(Hide tabs bar when there is only one tab ConfigDialog<Nascondi barra degli strumenti Hide toolbar ConfigDialog.Evidenzia riga correnteHighlight current line ConfigDialogNome tema iconeIcon theme name ConfigDialogInterfaccia Interface ConfigDialogbI numeri di riga sono relativi alla riga corrente)Line numbers are relative to current line ConfigDialog0Anteprima in tempo reale Live preview ConfigDialognEstensioni alla sintassi Markdown (separate da virgole),Markdown syntax extensions (comma-separated) ConfigDialog"Anteprima normaleNormal preview ConfigDialog6Numero di documenti recentiNumber of recent documents ConfigDialogdApri collegamenti esterni nella finestra di ReText$Open external links in ReText window ConfigDialog RipetiRepeat ConfigDialog<Ripristina dimensioni finestraRestore window geometry ConfigDialog>Mostra l'albero delle directoryShow directory tree ConfigDialog@Visualizza statistiche documentoShow document stats ConfigDialogfVisualizza percorso completo nella barra del titoloShow full path in window title ConfigDialog2Visualizza numeri di rigaShow line numbers ConfigDialog(File foglio di stileStylesheet file ConfigDialog8Il tasto Tab inserisce spaziTab key inserts spaces ConfigDialog0Larghezza di tabulazioneTabulation width ConfigDialogDFile di configurazione utilizzato:Using configuration file at: ConfigDialog&Directory di lavoroWorking directory ConfigDialogBSeleziona una directory da aprireSelect directory to openDirectorySelectButton(nessuno)(none)FileDialogButton6Seleziona il file da aprireSelect file to openFileSelectButton"Inserisci tabella Insert tableInsertTableDialog"Numero di colonneNumber of columnsInsertTableDialogNumero di righeNumber of rowsInsertTableDialogRInserisci localizzazione (esempio: en_US)"Enter locale name (example: en_US) LocaleDialogt possibile specificare pi lingue, separate dalla virgolaAIt is possible to specify multiple languages, separated by comma. LocaleDialog0Imposta come predefinitoSet as default LocaleDialogInformazione InformationProxyNessuna scrittura dall'ultima modifica (aggiungi ! per salvare comunque).No write since last change (add ! to override)Proxy,Aggiungi al dizionarioAdd to dictionary ReTextEdit,Immagini (*.png *.jpg)Images (*.png *.jpg) ReTextEditSalva immagine Save image ReTextEditFImpossibile creare il file '%s': %sCould not create file '%s': %s ReTextTabImpossibile interpretare i contenuti del file, controlla che il <a href="%s">modulo richiesto</a> sia installato!aCould not parse file contents, check if you have the necessary module installed! ReTextTab0Creare il file mancante?Create missing file? ReTextTab4Impossibile creare il fileFile could not be created ReTextTabNuovo documento New document ReTextTabDIl file '%s' non esiste. Crearlo?8The file '%s' does not exist. Do you want to create it? ReTextTabFile %s%s files ReTextWindow&Modifica&Edit ReTextWindow &File&File ReTextWindow &Aiuto&Help ReTextWindow$Informazioni su QtAbout Qt ReTextWindow,Informazioni su ReText About ReText ReTextWindow Tutti i file (*) All files (*) ReTextWindow"Testo alternativoAlt text ReTextWindow:Autore: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowGrassettoBold ReTextWindowrImpossibile salvare in un file aperto in un'altra scheda!1Cannot save to file which is open in another tab! ReTextWindow:Distingui maiuscole/minuscoleCase sensitively ReTextWindow2Modifica carattere editorChange editor font ReTextWindow8Modifica carattere anteprimaChange preview font ReTextWindow ChiudiClose ReTextWindowChiudi scheda Close tab ReTextWindow CopiaCopy ReTextWindow TagliaCut ReTextWindowDLinguaggio a marcatori predefinitoDefault markup ReTextWindow<Barra degli strumenti Modifica Edit toolbar ReTextWindow AttivaEnable ReTextWindowEsportaExport ReTextWindow"Esporta documentoExport document ReTextWindowBEsporta documento nel formato ODTExport document to ODT ReTextWindowBEsporta documento nel formato PDFExport document to PDF ReTextWindow@Impossibile eseguire il comando:Failed to execute the command: ReTextWindow6Modalit di inserimento Vim FakeVim mode ReTextWindow4Barra degli strumenti File File toolbar ReTextWindowTrova testo Find text ReTextWindowFormattazione Formatting ReTextWindowSchermo interoFullscreen mode ReTextWindow(Ottieni aiuto onlineGet help online ReTextWindowVai alla riga Go to line ReTextWindowCodice HTML HTML code ReTextWindow0File HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindow"Inserisci tabella Insert table ReTextWindowCorsivoItalic ReTextWindow$Testo collegamento Link text ReTextWindow0Anteprima in tempo reale Live preview ReTextWindow"Sintassi MarkdownMarkdown syntax ReTextWindow$Sposta riga in giMove line down ReTextWindow"Sposta riga in su Move line up ReTextWindow NuovoNew ReTextWindowNuovo documento New document ReTextWindow AvantiNext ReTextWindow"Scheda successivaNext tab ReTextWindowApriOpen ReTextWindowApri recente Open recent ReTextWindowDFile di testo OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow File PDF (*.pdf)PDF files (*.pdf) ReTextWindowIncollaPaste ReTextWindow Incolla immagine Paste image ReTextWindow,Testo semplice (*.txt)Plain text (*.txt) ReTextWindowVPer favore, salva il file da qualche parte. Please, save the file somewhere. ReTextWindowPreferenze Preferences ReTextWindowAnteprimaPreview ReTextWindowIndietroPrevious ReTextWindow"Scheda precedente Previous tab ReTextWindow StampaPrint ReTextWindow Stampa documentoPrint document ReTextWindow&Anteprima di stampa Print preview ReTextWindowEsciQuit ReTextWindowBReText %s (utilizza PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindowRipristinaRedo ReTextWindowRicaricaReload ReTextWindowSostituisciReplace ReTextWindow"Sostituisci tutto Replace all ReTextWindowSostituisci con Replace with ReTextWindow SalvaSave ReTextWindowSalva con nomeSave as ReTextWindowSalva file Save file ReTextWindow CercaSearch ReTextWindow:Barra degli strumenti RicercaSearch toolbar ReTextWindowDSeleziona uno o pi file da aprire#Select one or several files to open ReTextWindow Imposta codifica Set encoding ReTextWindow,Imposta localizzazione Set locale ReTextWindowMostra cartellaShow directory ReTextWindowzUn editor semplice ma potente per Markdown e reStructuredText ConfigDialog Using configuration file at: File di configurazione utilizzato: Behavior Comportamento Automatically save documents Salva automaticamente documenti Automatically open last documents on startup Apri automaticamente gli ultimi documenti utilizzati all'avvio Number of recent documents Numero di documenti recenti Restore window geometry Ripristina dimensioni finestra Default preview state Stato predefinito anteprima Open external links in ReText window Apri collegamenti esterni nella finestra di ReText Markdown syntax extensions (comma-separated) Estensioni alla sintassi Markdown (separate da virgole) Enable synchronized scrolling for Markdown Abilita scorrimento sincronizzato per Markdown Editor Editor Highlight current line Evidenzia riga corrente Show line numbers Visualizza numeri di riga Line numbers are relative to current line I numeri di riga sono relativi alla riga corrente Tab key inserts spaces Il tasto Tab inserisce spazi Tabulation width Larghezza di tabulazione Draw vertical line at column Traccia riga verticale alla colonna Enable soft wrap Abilita ritorno a capo automatico Show document stats Visualizza statistiche documento Ordered list mode Interface Interfaccia Hide toolbar Nascondi barra degli strumenti Icon theme name Nome tema icone Stylesheet file File foglio di stile Hide tabs bar when there is only one tab Nascondi barra delle schede quando c'è solo una scheda Show full path in window title Visualizza percorso completo nella barra del titolo Show directory tree Mostra l'albero delle directory Working directory Directory di lavoro Help Aiuto Live preview Anteprima in tempo reale Normal preview Anteprima normale Disabled Disabilitato Cursor Line Wrapped Line Increment Repeat Ripeti DirectorySelectButton Select directory to open Seleziona una directory da aprire EncodingDialog Enter encoding name: FileDialogButton (none) (nessuno) FileSelectButton Select file to open Seleziona il file da aprire InsertTableDialog Insert table Inserisci tabella Number of rows Numero di righe Number of columns Numero di colonne LocaleDialog Enter locale name (example: en_US) Inserisci localizzazione (esempio: en_US) It is possible to specify multiple languages, separated by comma. È possibile specificare più lingue, separate dalla virgola Set as default Imposta come predefinito Proxy No write since last change (add ! to override) Nessuna scrittura dall'ultima modifica (aggiungi ! per salvare comunque) Information Informazione ReTextEdit Add to dictionary Aggiungi al dizionario Save image Salva immagine Images (*.png *.jpg) Immagini (*.png *.jpg) ReTextTab New document Nuovo documento Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Impossibile interpretare i contenuti del file, controlla che il <a href="%s">modulo richiesto</a> sia installato! Create missing file? Creare il file mancante? The file '%s' does not exist. Do you want to create it? Il file '%s' non esiste. Crearlo? File could not be created Impossibile creare il file Could not create file '%s': %s Impossibile creare il file '%s': %s ReTextWindow File toolbar Barra degli strumenti File Edit toolbar Barra degli strumenti Modifica Search toolbar Barra degli strumenti Ricerca New Nuovo Open Apri Set encoding Imposta codifica Reload Ricarica Save Salva Save as Salva con nome Next tab Scheda successiva Previous tab Scheda precedente Close tab Chiudi scheda Print Stampa Print preview Anteprima di stampa View HTML code Visualizza codice HTML Change editor font Modifica carattere editor Change preview font Modifica carattere anteprima Find text Trova testo Go to line Vai alla riga Preview Anteprima Live preview Anteprima in tempo reale Insert table Inserisci tabella Table editing mode Modalità modifica tabella Insert images by file path FakeVim mode Modalità di inserimento Vim Fullscreen mode Schermo intero Preferences Preferenze Quit Esci Undo Annulla Redo Ripristina Copy Copia Cut Taglia Paste Incolla Paste image Incolla immagine Move line up Sposta riga in su Move line down Sposta riga in giù Enable Attiva Set locale Imposta localizzazione Use WebEngine (Chromium) renderer Utilizza renderer WebEngine (Chromium) Show directory Mostra cartella Next Avanti Previous Indietro Replace Sostituisci Replace all Sostituisci tutto Close Chiudi Get help online Ottieni aiuto online What's new Novità About ReText Informazioni su ReText About Qt Informazioni su Qt Bold Grassetto Italic Corsivo Underline Sottolineato Formatting Formattazione Symbols Simboli &File &File &Edit &Modifica &Help &Aiuto Open recent Apri recente Export Esporta Spell check Correttore ortografico Default markup Linguaggio a marcatori predefinito Search Cerca Replace with Sostituisci con Case sensitively Distingui maiuscole/minuscole New document Nuovo documento Type the line number Digitare il numero di riga Please, save the file somewhere. Per favore, salva il file da qualche parte. Select one or several files to open Seleziona uno o più file da aprire Supported files File supportati All files (*) Tutti i file (*) Plain text (*.txt) Testo semplice (*.txt) %s files Example of final string: Markdown files File %s Save file Salva file Cannot save to file which is open in another tab! Impossibile salvare in un file aperto in un'altra scheda! Export document to ODT Esporta documento nel formato ODT OpenDocument text files (*.odt) File di testo OpenDocument (*.odt) HTML files (*.html *.htm) File HTML (*.html *.htm) Unrecognized paperSize setting "%s". Impostazione paperSize "%s" non riconosciuta. Export document to PDF Esporta documento nel formato PDF PDF files (*.pdf) File PDF (*.pdf) Print document Stampa documento Export document Esporta documento Failed to execute the command: Impossibile eseguire il comando: Alt text Testo alternativo URL URL Link text Testo collegamento This file has been deleted by other application. Please make sure you save the file before exit. Questo file è stato eliminato da un'altra applicazione. Assicurati di salvare il file prima di uscire. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Questo documento è stato modificato da un'altra applicazione. Vuoi ricaricare il file (ciò comporterà la perdita di tutti i cambiamenti)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Il documento è stato modificato. Vuoi salvare le modifiche? HTML code Codice HTML Select one or several images to open ReText %s (using PyMarkups %s) ReText %s (utilizza PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Un editor semplice ma potente per Markdown e reStructuredText Author: Dmitry Shachnev, 2011 Autore: Dmitry Shachnev, 2011 Markdown syntax Sintassi Markdown reStructuredText syntax Sintassi reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d p | %d a | %d c main Open the files in preview mode Apri file in anteprima Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_ja.qm0000644000175000017500000002701114575355102017404 0ustar00dmitrydmitryMb vdyYc'gt\ =z.rIDVgl)HD!2 by%vћr} R#S4J$mr5t K jFr'(xW9 w'H0BM)eG _-d 0 E!:uk 5#ϗ°sϡ I "T)+I9 >!%'7%  g @] h> j3 la v W $ ȗ t& Q! P F  c# 5 ) } ??ev \"O  po w J U N^G Px0 v  Y  U^ 22  I ~> (/(33# 4EzkeI UMGKxˏ!*)  O#.i)m(g_0k0D0f0D0_ef0wRfB0kR0g0O,Automatically open last documents on startup ConfigDialogef0RO[X0Y0Automatically save documents ConfigDialogRO\-[Behavior ConfigDialog000000n000000nraKDefault preview state ConfigDialogc[0W0_R0k~&}0hy:0Y0Draw vertical line at column ConfigDialog 00000Editor ConfigDialogRe9L0g R0k0Y0Enable soft wrap ConfigDialog.Markdown 0nT g000000g R0k0Y0*Enable synchronized scrolling for Markdown ConfigDialog000Help ConfigDialog 000LN0d0n0h0M0o000000Y(Hide tabs bar when there is only one tab ConfigDialog0000000Y Hide toolbar ConfigDialog0000L000000Ȉhy:0Y0Highlight current line ConfigDialog0000000T Icon theme name ConfigDialogY Interface ConfigDialog$sW(0nL0wp0k0W0fLujS0hy:0Y0)Line numbers are relative to current line ConfigDialog00000000 Live preview ConfigDialog.Markdown l0nb_5 (000S:R0),Markdown syntax extensions (comma-separated) ConfigDialog^80n00000Normal preview ConfigDialoggOu(0W0_00000nhy:epNumber of recent documents ConfigDialog.Y0000 ReText 00000Q0g0O$Open external links in ReText window ConfigDialog000000nhy:OMn0a0Y0Restore window geometry ConfigDialogef0n}q0hy:0Y0Show document stats ConfigDialog 0000000k00000hy:0Y0Show full path in window title ConfigDialogLujS0hy:0Y0Show line numbers ConfigDialog00000000000Stylesheet file ConfigDialog$00e[W0nN000k00000QeR0Y0Tab key inserts spaces ConfigDialog 000nhAepTabulation width ConfigDialogOu(N-0n-[00000nX4b@:Using configuration file at: ConfigDialog(0j0W)(none)FileDialogButton000000OSelect file to openFileSelectButtonh0c?Qe Insert tableInsertTableDialogRepNumber of columnsInsertTableDialogLepNumber of rowsInsertTableDialog20000T 0QeR0W0f0O0`0U0D (O: ja_JP)"Enter locale name (example: en_US) LocaleDialog000000k0Y0Set as default LocaleDialog`X1 InformationProxy4g_0nY f0LO[X0U00f0D0~0[0 (! 0gY f0x4h).No write since last change (add ! to override)Proxy f0kRAdd to dictionary ReTextEdit u;P (*.png *.jpg)Images (*.png *.jpg) ReTextEdit u;P0O[X Save image ReTextEdit('%s' 0O\b0g0M0~0[00g0W0_: %sCould not create file '%s': %s ReTextTab00000nQ[0g0g0M0~0[00g0W0_0<a href="%s">_ʼn0j00000</a>0L0000000U00f0D00Kx0W0f0O0`0U0D0aCould not parse file contents, check if you have the necessary module installed! ReTextTab$0d0K00j0D00000O\b0W0~0Y0KCreate missing file? ReTextTab00000O\b0g0M0~0[00g0W0_File could not be created ReTextTabeef New document ReTextTab,'%s' 0o[XW(0W0~0[00 O\b0W0~0Y0K8The file '%s' does not exist. Do you want to create it? ReTextTab%s 0000%s files ReTextWindow }(&E)&Edit ReTextWindow0000(&F)&File ReTextWindow000(&H)&Help ReTextWindowQt 0k0d0D0fAbout Qt ReTextWindowReText 0k0d0D0f About ReText ReTextWindow0Y0y0f0n0000 (*) All files (*) ReTextWindowAlt \^`'0ne[WRAlt text ReTextWindow2O\: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowY*[WBold ReTextWindow0N0n000g0D0f0D000000k0oO[X0g0M0~0[001Cannot save to file which is open in another tab! ReTextWindowY'e[W0h\e[W0S:R%Case sensitively ReTextWindow000000n00000Y fChange editor font ReTextWindow000000n00000Y fChange preview font ReTextWindow0X0Close ReTextWindow 0000X0 Close tab ReTextWindow000Copy ReTextWindowR0S0Cut ReTextWindow000000n000000Default markup ReTextWindow}00000 Edit toolbar ReTextWindowg REnable ReTextWindow 000000Export ReTextWindowef0000000Export document ReTextWindowef0 ODT 0k000000Export document to ODT ReTextWindowef0 PDF 0k000000Export document to PDF ReTextWindow00000n[L0kY1eW0W0~0W0_:Failed to execute the command: ReTextWindowdO< Vim 000 FakeVim mode ReTextWindow000000000 File toolbar ReTextWindow00000i}" Find text ReTextWindowf_ Formatting ReTextWindow0000000000Fullscreen mode ReTextWindow000000g00000Get help online ReTextWindow c[L0xyR Go to line ReTextWindowHTML 000 HTML code ReTextWindow0HTML 0000 (*.html *.htm)HTML files (*.html *.htm) ReTextWindowu;P (000000) 0c?QeInsert images by file path ReTextWindowh0c?Qe Insert table ReTextWindoweOSItalic ReTextWindow0000ne[WR Link text ReTextWindow00000000 Live preview ReTextWindowMarkdown lMarkdown syntax ReTextWindow L0N 0kyRMove line down ReTextWindow L0N 0kyR Move line up ReTextWindoweNew ReTextWindoweef New document ReTextWindowk!0xNext ReTextWindow k!0n000xNext tab ReTextWindow0OOpen ReTextWindowgOu(0W0_0000 Open recent ReTextWindow:OpenDocument 00000000 (*.odt)OpenDocument text files (*.odt) ReTextWindow PDF 0000 (*.pdf)PDF files (*.pdf) ReTextWindow0N0QPaste ReTextWindowu;P000d0Q Paste image ReTextWindow 00000000 (*.txt)Plain text (*.txt) ReTextWindow$0i0S0K0k00000O[X0W0f0O0`0U0D0 Please, save the file somewhere. ReTextWindow-[ Preferences ReTextWindow 00000Preview ReTextWindowRM0xPrevious ReTextWindow RM0n000x Previous tab ReTextWindowSpR7Print ReTextWindow ef0SpR7Print document ReTextWindowSpR700000 Print preview ReTextWindow}BNQuit ReTextWindow8ReText %s (PyMarkups %s 0Ou()ReText %s (using PyMarkups %s) ReTextWindow00v0YRedo ReTextWindow Q00Reload ReTextWindowncReplace ReTextWindow 0Y0y0fnc Replace all ReTextWindowncQH Replace with ReTextWindowO[XSave ReTextWindowT RM0N0Q0fO[XSave as ReTextWindow00000O[X Save file ReTextWindowi}"Search ReTextWindowi}"00000Search toolbar ReTextWindow.0M0_0D00000xb0W0f0O0`0U0D (epS)#Select one or several files to open ReTextWindow*0M0_0Du;P0xb0W0f0O0`0U0D (epS)$Select one or several images to open ReTextWindowe[W00000000 Set encoding ReTextWindow00000n-[ Set locale ReTextWindow0000000hy:Show directory ReTextWindow^Markdown 0h reStructuredText 0n0_00n00000g00000j00000 ConfigDialog Using configuration file at: 使用中の設定ファイルの場所: Behavior 動作設定 Automatically save documents 文書を自動保存する Automatically open last documents on startup 最後に開いていた文書を起動時に自動で開く Number of recent documents 最近使用したファイルの表示数 Restore window geometry ウィンドウの表示位置を記憶する Default preview state デフォルトのプレビューの状態 Open external links in ReText window 外部リンクを ReText ウィンドウ内で開く Markdown syntax extensions (comma-separated) Markdown 記法の拡張 (カンマ区切り) Enable synchronized scrolling for Markdown Markdown の同期スクロールを有効にする Editor エディター Highlight current line カーソル行をハイライト表示する Show line numbers 行番号を表示する Line numbers are relative to current line 現在の行を起点にして行番号を表示する Tab key inserts spaces タブ文字の代わりにスペースを入力する Tabulation width タブの桁数 Draw vertical line at column 指定した列に縦線を表示する Enable soft wrap 自動改行を有効にする Show document stats 文書の統計を表示する Ordered list mode Interface 外観 Hide toolbar ツールバーを隠す Icon theme name アイコンテーマ名 Stylesheet file スタイルシートファイル Hide tabs bar when there is only one tab タブが一つのときはタブバーを隠す Show full path in window title タイトルバーにフルパスを表示する Show directory tree Working directory Help ヘルプ Live preview ライブプレビュー Normal preview 通常のプレビュー Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (なし) FileSelectButton Select file to open ファイルを開く InsertTableDialog Insert table 表を挿入 Number of rows 行数 Number of columns 列数 LocaleDialog Enter locale name (example: en_US) ロケール名を入力してください (例: ja_JP) It is possible to specify multiple languages, separated by comma. Set as default デフォルトにする Proxy No write since last change (add ! to override) 最後の変更が保存されていません (! で変更を破棄) Information 情報 ReTextEdit Add to dictionary 辞書に追加 Save image 画像を保存 Images (*.png *.jpg) 画像 (*.png *.jpg) ReTextTab New document 新規文書 Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! ファイルの内容を解析できませんでした。<a href="%s">必要なモジュール</a>がインストールされているか確認してください。 Create missing file? 見つからないファイルを作成しますか? The file '%s' does not exist. Do you want to create it? '%s' は存在しません。 作成しますか? File could not be created ファイルを作成できませんでした Could not create file '%s': %s '%s' を作成できませんでした: %s ReTextWindow File toolbar ファイルツールバー Edit toolbar 編集ツールバー Search toolbar 検索ツールバー New 新規 Open 開く Set encoding 文字エンコーディング Reload 再読み込み Save 保存 Save as 名前を付けて保存 Next tab 次のタブへ Previous tab 前のタブへ Close tab タブを閉じる Print 印刷 Print preview 印刷プレビュー View HTML code HTML コードを表示 Change editor font エディターのフォントを変更 Change preview font プレビューのフォントを変更 Find text テキストを検索 Go to line 指定行へ移動 Preview プレビュー Live preview ライブプレビュー Insert table 表を挿入 Table editing mode 表編集モード Insert images by file path 画像 (ファイルパス) を挿入 FakeVim mode 擬似 Vim モード Fullscreen mode フルスクリーンモード Preferences 設定 Quit 終了 Undo 元に戻す Redo やり直す Copy コピー Cut 切り取り Paste 貼り付け Paste image 画像を貼りつけ Move line up 行を上に移動 Move line down 行を下に移動 Enable 有効 Set locale ロケールの設定 Use WebEngine (Chromium) renderer WebEngine (Chromium) レンダラーを使用 Show directory ディレクトリを表示 Next 次へ Previous 前へ Replace 置換 Replace all すべて置換 Close 閉じる Get help online オンラインでヘルプを読む What's new About ReText ReText について About Qt Qt について Bold 太字 Italic 斜体 Underline 下線 Formatting 書式 Symbols シンボル &File ファイル(&F) &Edit 編集(&E) &Help ヘルプ(&H) Open recent 最近使用したファイル Export エクスポート Spell check スペルチェック Default markup デフォルトのマークアップ Search 検索 Replace with 置換先 Case sensitively 大文字と小文字を区別 New document 新規文書 Type the line number 行番号を入力してください Please, save the file somewhere. どこかにファイルを保存してください。 Select one or several files to open 開きたいファイルを選択してください (複数可) Supported files サポートしているファイル All files (*) すべてのファイル (*) Plain text (*.txt) プレーンテキスト (*.txt) %s files Example of final string: Markdown files %s ファイル Save file ファイルを保存 Cannot save to file which is open in another tab! 他のタブで開いているファイルには保存できません。 Export document to ODT 文書を ODT にエクスポート OpenDocument text files (*.odt) OpenDocument テキストファイル (*.odt) HTML files (*.html *.htm) HTML ファイル (*.html *.htm) Unrecognized paperSize setting "%s". "%s" は認識されない用紙サイズ設定です。 Export document to PDF 文書を PDF にエクスポート PDF files (*.pdf) PDF ファイル (*.pdf) Print document 文書を印刷 Export document 文書をエクスポート Failed to execute the command: コマンドの実行に失敗しました: Alt text Alt 属性の文字列 URL URL Link text リンクの文字列 This file has been deleted by other application. Please make sure you save the file before exit. このファイルは他のアプリケーションによって削除されました。 終了する前にファイルを保存してください。 This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? この文書は他のアプリケーションによって変更されました。 すべての変更を破棄して再読み込みしますか? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? 文書は変更されています。 変更内容を保存しますか? HTML code HTML コード Select one or several images to open 開きたい画像を選択してください (複数可) ReText %s (using PyMarkups %s) ReText %s (PyMarkups %s を使用) Simple but powerful editor for Markdown and reStructuredText Markdown と reStructuredText のためのシンプルでパワフルなエディター Author: Dmitry Shachnev, 2011 作者: Dmitry Shachnev, 2011 Markdown syntax Markdown 記法 reStructuredText syntax reStructuredText 記法 TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode ファイルをプレビューモードで開く Create a new window even if there is an existing one List of files to open 開くファイルの一覧 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_ko.qm0000644000175000017500000003130714575355102017426 0ustar00dmitrydmitryZl*'$y0Lf"5!#6į*![**%*07+J6jS,V&WT kZSusUPʆznE qʇ%B&:s*L"9nunAI 5wU"F)O)z)eΩS=4>ab#dy Yc'Zgt Szr NDV$gx 5l)!D! by%vћr #S4J'myr5t"dk #Fr++ W9 '0BM-ce G+-dd0 E%9:uTk5'ϗ b°ϡ " %pT&)+I9$3=J >$ '" 7(  @ h> H j3 laD v#_ W $ lD ȗr t*Q Q 4 F  c& 5w )/ ??e \% #,]  p' wx J U N^ Px 4 v# Y!  2 U 2 " Ib ~>g -#/+3&^4E% z mezI qUGKxL_ˏ|*)  O'E.Vi-(Ǒ` L 8 ǐ<\ 0,Automatically open last documents on startup ConfigDialogǐ<\ 8 ǥAutomatically save documents ConfigDialogǑBehavior ConfigDialog  |x Cursor Line ConfigDialog0 0 Default preview state ConfigDialogD\1TDisabled ConfigDialog  0Draw vertical line at column ConfigDialogӸѮ0Editor ConfigDialogҸ \1TEnable soft wrap ConfigDialog*Markdown ٮ0T ¤ld Ʃ*Enable synchronized scrolling for Markdown ConfigDialogHelp ConfigDialog,t X Lj ư \ (00(Hide tabs bar when there is only one tab ConfigDialog 4 (00 Hide toolbar ConfigDialogǬ |x p \Highlight current line ConfigDialogDtX L tIcon theme name ConfigDialogɝ Increment ConfigDialog x0Әt¤ Interface ConfigDialog&|x 8 Ǭ  DžȲ)Line numbers are relative to current line ConfigDialogܬ 0 Live preview ConfigDialog,Markdown l8 Uǥ(|\\ l),Markdown syntax extensions (comma-separated) ConfigDialog| 0Normal preview ConfigDialog\ Ʃ\ 8 Number of recent documents ConfigDialog&ReText = x l 0$Open external links in ReText window ConfigDialog, ] Ordered list mode ConfigDialogRepeat ConfigDialog= l0 Restore window geometry ConfigDialog Ѡ Ҹ \Show directory tree ConfigDialog8 \Show document stats ConfigDialog=  ̴ \ \Show full path in window title ConfigDialog|x 8 t0Show line numbers ConfigDialog¤|Ҹ |Stylesheet file ConfigDialog Ф| 1<\ DžTab key inserts spaces ConfigDialog\ DTabulation width ConfigDialog$ | Ʃ:Using configuration file at: ConfigDialogǑ pѠWorking directory ConfigDialog Q |x Wrapped Line ConfigDialog,  Ѡ Select directory to openDirectorySelectButtonxT) Dž%:Enter encoding name:EncodingDialog(L)(none)FileDialogButton, | Select file to openFileSelectButton Lt Dž Insert tableInsertTableDialog Number of columnsInsertTableDialogՉ Number of rowsInsertTableDialog&\| t Dž%(: en_US)"Enter locale name (example: en_US) LocaleDialog6|\\ lX ŸŴ| `  LjµȲ.AIt is possible to specify multiple languages, separated by comma. LocaleDialog0<\ $Set as default LocaleDialog InformationProxy6 t 0 L(nŴ$t ! ͔).No write since last change (add ! to override)Proxy Ѡ ͔Add to dictionary ReTextEdit&t |(*.png *.jpg)Images (*.png *.jpg) ReTextEdit t ǥ Save image ReTextEdit"'%s' | 1 (: %sCould not create file '%s': %s ReTextTabx | ƩD `  µȲ, <a href="%s">DƔ\ </a>t $XŴ Lj UxX8Ɣ!aCould not parse file contents, check if you have the necessary module installed! ReTextTab } |D ̴ܬµȮL?Create missing file? ReTextTab |D 1X ՈµȲFile could not be created ReTextTab 8 New document ReTextTab:'%s' |t µȲ. |D 1XܬµȮL?8The file '%s' does not exist. Do you want to create it? ReTextTab %s |%s files ReTextWindow Ӹ(&E)&Edit ReTextWindow |(&F)&File ReTextWindow(&H)&Help ReTextWindow Qt About Qt ReTextWindowReText  About ReText ReTextWindowa1W |(*) All files (*) ReTextWindow ̴ M¤ҸAlt text ReTextWindow2ǐ: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowpt0 D )X0 t t \ ǐ ǥt |<\ D\1TµȲ. |D \Xp <\ ǥXt \1T)Ȳ.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindowwBold ReTextWindow0x  |D ǥ`  µȲ1Cannot save to file which is open in another tab! ReTextWindow8ǐ lCase sensitively ReTextWindowӸѮ0 Ҹ Change editor font ReTextWindow0 Ҹ Change preview font ReTextWindow0Close ReTextWindow 0 Close tab ReTextWindowCopy ReTextWindowǘ|0Cut ReTextWindow 0 lDefault markup ReTextWindow Ӹ 4 Edit toolbar ReTextWindow\1TEnable ReTextWindow0Export ReTextWindow8 0Export document ReTextWindow8| ODT\ 0Export document to ODT ReTextWindow8| PDF\ 0Export document to PDF ReTextWindow9Ŵ Չ (: Failed to execute the command: ReTextWindowFakeVim  FakeVim mode ReTextWindow | 4 File toolbar ReTextWindow 8ǐ  Find text ReTextWindow Formatting ReTextWindow̴Tt Fullscreen mode ReTextWindow(|x Get help online ReTextWindow|x<\ t Go to line ReTextWindowHTML T HTML code ReTextWindow*HTML |(*.html *.htm)HTML files (*.html *.htm) ReTextWindow | \\ t DžInsert images by file path ReTextWindow Lt Dž Insert table ReTextWindowt乭Italic ReTextWindow l M¤Ҹ Link text ReTextWindowܬ 0 Live preview ReTextWindowMakrdown l8Markdown syntax ReTextWindowD D\ tMove line down ReTextWindowD \ t Move line up ReTextWindow ȸ\ ̴0New ReTextWindow 8 New document ReTextWindowLNext ReTextWindowL Next tab ReTextWindow0Open ReTextWindow\ | 0 Open recent ReTextWindow8OpenDocument Text | (*.odt)OpenDocument text files (*.odt) ReTextWindowPDF |(*.pdf)PDF files (*.pdf) ReTextWindow#0Paste ReTextWindowt #0 Paste image ReTextWindow| M¤Ҹ(*.txt)Plain text (*.txt) ReTextWindow |D ǥX8Ɣ. Please, save the file somewhere. ReTextWindow$ Preferences ReTextWindow0Preview ReTextWindowtPrevious ReTextWindowt  Previous tab ReTextWindowxPrint ReTextWindow8 xX0Print document ReTextWindowx 0 Print preview ReTextWindowȅQuit ReTextWindow6ReText %s (PyMarkups %s Ʃ)ReText %s (using PyMarkups %s) ReTextWindow ՉRedo ReTextWindow $0Reload ReTextWindow0Replace ReTextWindow P 0 Replace all ReTextWindow  Ʃ Replace with ReTextWindowǥSave ReTextWindowx t<\ ǥSave as ReTextWindow | ǥ Save file ReTextWindowSearch ReTextWindow 4Search toolbar ReTextWindow", X tX |D #Select one or several files to open ReTextWindow", X tX t $Select one or several images to open ReTextWindow xT) $ Set encoding ReTextWindow \| $ Set locale ReTextWindow Ѡ t0Show directory ReTextWindowR X %\ Markdown reStructuredTextƩ ӸѮ0 ConfigDialog Using configuration file at: 설정 파일 사용: Behavior 동작 Automatically save documents 자동으로 문서 저장 Automatically open last documents on startup 시작할 때 마지막 문서 자동으로 열기 Number of recent documents 최근 사용한 문서 수 Restore window geometry 창 크기 복원 Default preview state 기본 미리보기 상태 Open external links in ReText window ReText 창에서 외부 링크 열기 Markdown syntax extensions (comma-separated) Markdown 구문 확장(쉼표로 구분) Enable synchronized scrolling for Markdown Markdown에 동기화된 스크롤 사용 Editor 편집기 Highlight current line 현재 라인 강조 표시 Show line numbers 라인 번호 보이기 Line numbers are relative to current line 라인 번호는 현재 줄에 상대적입니다 Tab key inserts spaces 탭 키를 공백으로 삽입 Tabulation width 표 너비 Draw vertical line at column 컬럼에 수직선 그리기 Enable soft wrap 소프트 랩 활성화 Show document stats 문서 상태 표시 Ordered list mode 정렬된 목록 모드 Interface 인터페이스 Hide toolbar 툴바 숨기기 Icon theme name 아이콘 테마 이름 Stylesheet file 스타일시트 파일 Hide tabs bar when there is only one tab 탭이 하나만 있는 경우 탭 표시줄 숨기기 Show full path in window title 창 제목에 전체 경로 표시 Show directory tree 디렉토리 트리 표시 Working directory 작업 데릭토리 Help 도움말 Live preview 실시간 미리보기 Normal preview 일반 미리보기 Disabled 비활성화 Cursor Line 커서 라인 Wrapped Line 래핑된 라인 Increment 증가 Repeat 반복 DirectorySelectButton Select directory to open 불러올 디렉토리 선택 EncodingDialog Enter encoding name: 인코딩 명 입력: FileDialogButton (none) (없음) FileSelectButton Select file to open 불러올 파일 선택 InsertTableDialog Insert table 테이블 삽입 Number of rows 행 수 Number of columns 열 수 LocaleDialog Enter locale name (example: en_US) 로케일 이름 입력(예: en_US) It is possible to specify multiple languages, separated by comma. 쉼표로 구분하여 여러 언어를 지정할 수 있습니다. Set as default 기본값으로 설정 Proxy No write since last change (add ! to override) 마지막 변경 이후 쓰기 없음(덮어쓰려면 ! 추가) Information 정보 ReTextEdit Add to dictionary 디렉토리에 추가 Save image 이미지 저장 Images (*.png *.jpg) 이미지 파일(*.png *.jpg) ReTextTab New document 새 문서 Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! 파일 내용을 파싱할 수 없습니다, <a href="%s">필요한 모듈</a>이 설치되어 있는지 확인하세요! Create missing file? 누락된 파일을 만드시겠습니까? The file '%s' does not exist. Do you want to create it? '%s' 파일이 없습니다. 파일을 생성하시겠습니까? File could not be created 파일을 생성하지 못했습니다 Could not create file '%s': %s '%s' 파일 생성 실패: %s ReTextWindow File toolbar 파일 툴바 Edit toolbar 편집 툴바 Search toolbar 검색 툴바 New 새로 만들기 Open 열기 Set encoding 인코딩 설정 Reload 다시 불러오기 Save 저장 Save as 다른 이름으로 저장 Next tab 다음 탭 Previous tab 이전 탭 Close tab 탭 닫기 Print 인쇄 Print preview 인쇄 미리보기 View HTML code HTML 코드 보기 Change editor font 편집기 폰트 변경 Change preview font 미리보기 폰트 변경 Find text 문자열 검색 Go to line 라인으로 이동 Preview 미리보기 Live preview 실시간 미리보기 Insert table 테이블 삽입 Table editing mode 테이블 편집 모드 Insert images by file path 파일 경로로 이미지 삽입 FakeVim mode FakeVim 모드 Fullscreen mode 전체화면 모드 Preferences 설정 Quit 종료 Undo 취소 Redo 다시 실행 Copy 복사 Cut 잘라내기 Paste 붙여넣기 Paste image 이미지 붙여넣기 Move line up 줄을 위로 이동 Move line down 줄을 아래로 이동 Enable 활성화 Set locale 로케일 설정 Use WebEngine (Chromium) renderer 웹엔진(Chromium) 렌더러 사용 Show directory 디렉토리 보이기 Next 다음 Previous 이전 Replace 바꾸기 Replace all 모두 바꾸기 Close 닫기 Get help online 온라인 도움말 What's new 새로운 기능 About ReText ReText 정보 About Qt Qt 정보 Bold 굷게 Italic 이탤릭 Underline 밑줄 Formatting 포맷 Symbols 심볼 &File 파일(&F) &Edit 편집(&E) &Help 도움말(&H) Open recent 최근 파일 열기 Export 내보내기 Spell check 맞춤법 검사 Default markup 기본 마크업 Search 검색 Replace with 바꿀 내용 Case sensitively 대소문자 구분 New document 새 문서 Type the line number 라인 번호 입력 Please, save the file somewhere. 파일을 저장하세요. Select one or several files to open 불러올 하나 이상의 파일을 선택 Supported files 지원하는 파일 All files (*) aㅗ든 파일(*) Plain text (*.txt) 일반 텍스트(*.txt) %s files Example of final string: Markdown files %s 파일 Save file 파일 저장 Cannot save to file which is open in another tab! 다른 탭에서 열린 파일을 저장할 수 없습니다 Export document to ODT 문서를 ODT로 내보내기 OpenDocument text files (*.odt) OpenDocument Text 파일 (*.odt) HTML files (*.html *.htm) HTML 파일(*.html *.htm) Unrecognized paperSize setting "%s". 인식할 수 없는 용지 크기 설정 "%s". Export document to PDF 문서를 PDF로 내보내기 PDF files (*.pdf) PDF 파일(*.pdf) Print document 문서 인쇄하기 Export document 문서 내보내기 Failed to execute the command: 명령어 실행 실패: Alt text 대체 텍스트 URL URL Link text 링크 텍스트 This file has been deleted by other application. Please make sure you save the file before exit. 이 파일은 다른 애플리케이션에 의해 삭제되었습니다. 종료하기 전에 파일을 저장했는지 확인하십시오. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? 이 문서는 다른 응용 프로그램에서 수정되었습니다. 파일을 새로고침하시겠습니까(모든 변경사항이 삭제됩니다)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. 데이터 손실을 방지하기 위해 이 탭에 대한 자동 저장이 일시적으로 비활성화되었습니다. 파일을 다시 로드하거나 수동으로 저장하면 다시 활성화됩니다. The document has been modified. Do you want to save your changes? 문서가 변경되었습니다. 변경 내용을 저장하시겠습니까? HTML code HTML 코드 Select one or several images to open 불러올 하나 이상의 이미지 선택 ReText %s (using PyMarkups %s) ReText %s (PyMarkups %s 사용) Simple but powerful editor for Markdown and reStructuredText 심플하지만 강력한 Markdown과 reStructuredText용 편집기 Author: Dmitry Shachnev, 2011 저자: Dmitry Shachnev, 2011 Markdown syntax Makrdown 구문 reStructuredText syntax reStructuredText 구문 TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d w | %d a | %d c main Open the files in preview mode 미리보기 모드로 파일 열기 Create a new window even if there is an existing one 기존 창이 있어도 새 창 만들기 List of files to open 불러올 파일 목록 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_nl.qm0000644000175000017500000004147614575355102017436 0ustar00dmitrydmitry b0dy>Yc'gt^&]z#r,NDVg#x]l).0D!T by% v!$ћrA& &#S k4J6Omr5t.k 0oFr:;YuW9/'*t0BM=e 3G;n-d(0 E2:u+kv55$ϗ,d°(ϡ /g 3T))+I+T91-=J>1 '/-,77 a @$- h> j3s la v0- W $ l ȗ< t9 Qz   F  c4 5$ ) ??e# \3] #<  p! w"$ $ J U ) N^N Px v0k Y-Z ,$ UA 2) / I) ~>q =9/;34D4E D%z -e'hIU GGKx%#g"ˏ*) O5y. i>&^Vorige document automatisch openen na opstarten,Automatically open last documents on startup ConfigDialog<Documenten automatisch opslaanAutomatically save documents ConfigDialog GedragBehavior ConfigDialogCursorregel Cursor Line ConfigDialog:Standaard voorvertoningsmodusDefault preview state ConfigDialogUitgeschakeldDisabled ConfigDialog<Verticale lijn maken bij kolomDraw vertical line at column ConfigDialogBewerkerEditor ConfigDialogBLichte regelafbreking inschakelenEnable soft wrap ConfigDialogXSynchroon scrollen inschakelen voor Markdown*Enable synchronized scrolling for Markdown ConfigDialogHulpHelp ConfigDialogfTabbladbalk verbergen als er slechts n tabblad is(Hide tabs bar when there is only one tab ConfigDialog$Werkbalk verbergen Hide toolbar ConfigDialog,Huidige regel markerenHighlight current line ConfigDialog.Naam van pictogramthemaIcon theme name ConfigDialogVerhogen Increment ConfigDialogVormgeving Interface ConfigDialog`Regelnummers zijn gekoppeld aan de huidige regel)Line numbers are relative to current line ConfigDialog$Live-voorvertoning Live preview ConfigDialogXMarkdown-syntaxisextensies (kommagescheiden),Markdown syntax extensions (comma-separated) ConfigDialog*Normale voorvertoningNormal preview ConfigDialogDAantal onlangs geopende documentenNumber of recent documents ConfigDialogLExterne links openen in ReText-venster$Open external links in ReText window ConfigDialog(Geordende lijstmodusOrdered list mode ConfigDialogHerhalenRepeat ConfigDialog8Vensterafmetingen herstellenRestore window geometry ConfigDialog$Mapstructuur tonenShow directory tree ConfigDialog4Documentstatistieken tonenShow document stats ConfigDialogPVolledige locatie tonen in venstertitielShow full path in window title ConfigDialog$Regelnummers tonenShow line numbers ConfigDialogStijlbladStylesheet file ConfigDialog:Spaties invoegen met tabtoetsTab key inserts spaces ConfigDialog TabulatiebreedteTabulation width ConfigDialogfGebruikmakend van het volgende configuratiebestand:Using configuration file at: ConfigDialogWerkmapWorking directory ConfigDialog Afgebroken regel Wrapped Line ConfigDialog*Kies de te openen mapSelect directory to openDirectorySelectButton>Voer een versleutelingsnaam in:Enter encoding name:EncodingDialog (geen)(none)FileDialogButton4Kies het te openen bestandSelect file to openFileSelectButtonTabel invoegen Insert tableInsertTableDialogAantal kolommenNumber of columnsInsertTableDialogAantal rijenNumber of rowsInsertTableDialogPVoer de landinstelling in (bijv.: en_US)"Enter locale name (example: en_US) LocaleDialognMeerdere talen kunnen kommagescheiden worden ingevoerd.AIt is possible to specify multiple languages, separated by comma. LocaleDialog.Instellen als standaardSet as default LocaleDialogInformatie InformationProxyNiet weggeschreven sinds recentste aanpassing (voeg ! toe om te overschrijven).No write since last change (add ! to override)Proxy2Toevoegen aan woordenboekAdd to dictionary ReTextEdit4Afbeeldingen (*.png *.jpg)Images (*.png *.jpg) ReTextEdit$Afbeelding opslaan Save image ReTextEditbHet bestand ( %s ) kan niet worden aangemaakt: %sCould not create file '%s': %s ReTextTabDe bestandsinhoud kan niet worden verwerkt. Controleer of de <a href="%s">vereiste module</a> genstalleerd is!aCould not parse file contents, check if you have the necessary module installed! ReTextTab8Ontbrekend bestand aanmaken?Create missing file? ReTextTabLHet bestand kan niet worden aangemaaktFile could not be created ReTextTabNieuw document New document ReTextTablHet bestand ( %s ) bestaat niet. Wil je het aanmaken?8The file '%s' does not exist. Do you want to create it? ReTextTab%s bestanden%s files ReTextWindowB&ewerken&Edit ReTextWindow&Bestand&File ReTextWindow &Hulp&Help ReTextWindowOver QtAbout Qt ReTextWindowOver ReText About ReText ReTextWindow$Alle bestanden (*) All files (*) ReTextWindowAlt-tekstAlt text ReTextWindow8Maker: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowVAutomatisch opslaan is tijdelijk uitgeschakeld op dit tabblad om gegevensverlies te voorkomen. De functie wordt weer ingeschakeld zodra je het bestand herlaadt of opslaat.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindowVetgedruktBold ReTextWindowrKan niet opslaan als het geopend is op een ander tabblad!1Cannot save to file which is open in another tab! ReTextWindow&HoofdlettergevoeligCase sensitively ReTextWindowBLettertype van bewerker aanpassenChange editor font ReTextWindowLLettertype van voorvertoning aanpassenChange preview font ReTextWindowSluitenClose ReTextWindowTabblad sluiten Close tab ReTextWindowKopirenCopy ReTextWindowKnippenCut ReTextWindowStandaardopmaakDefault markup ReTextWindow&Aanpassingswerkbalk Edit toolbar ReTextWindowInschakelenEnable ReTextWindowExporterenExport ReTextWindow&Document exporterenExport document ReTextWindow8Document exporteren naar odtExport document to ODT ReTextWindow8Document exporteren naar pdfExport document to PDF ReTextWindowNDe opdracht kan niet worden uitgevoerd:Failed to execute the command: ReTextWindowFakeVim-modus FakeVim mode ReTextWindow Bestandswerkbalk File toolbar ReTextWindowTekst zoeken Find text ReTextWindow Opmaak Formatting ReTextWindowBeeldvullendFullscreen mode ReTextWindow$Online-hulp openenGet help online ReTextWindowGa naar regel Go to line ReTextWindowHtml-code HTML code ReTextWindow:Html-bestanden (*.html *.htm)HTML files (*.html *.htm) ReTextWindowdAfbeeldingen invoegen op basis van bestandslocatieInsert images by file path ReTextWindowTabel invoegen Insert table ReTextWindowCursiefItalic ReTextWindowLinktekst Link text ReTextWindow$Live-voorvertoning Live preview ReTextWindowMarkdown-syntaxMarkdown syntax ReTextWindow0Regel omlaag verplaatsenMove line down ReTextWindow0Regel omhoog verplaatsen Move line up ReTextWindow NieuwNew ReTextWindowNieuw document New document ReTextWindowVolgende Next ReTextWindowVolgend tabbladNext tab ReTextWindow OpenenOpen ReTextWindow*Recent bestand openen Open recent ReTextWindowFOpenDocument-tekstbestanden (*.odt)OpenDocument text files (*.odt) ReTextWindow*Pdf-bestanden (*.pdf)PDF files (*.pdf) ReTextWindowPlakkenPaste ReTextWindow$Afbeelding plakken Paste image ReTextWindow(Platte tekst (*.txt)Plain text (*.txt) ReTextWindow4Sla het bestand ergens op. Please, save the file somewhere. ReTextWindowVoorkeuren Preferences ReTextWindowVoorvertoningPreview ReTextWindow VorigePrevious ReTextWindowVorig tabblad Previous tab ReTextWindowAfdrukkenPrint ReTextWindow$Document afdrukkenPrint document ReTextWindowAfdrukvoorbeeld Print preview ReTextWindowAfsluitenQuit ReTextWindowTReText %s (gebruikmakend van PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindowOpnieuwRedo ReTextWindowHerladenReload ReTextWindowVervangenReplace ReTextWindowAlles vervangen Replace all ReTextWindowVervangen door Replace with ReTextWindowOpslaanSave ReTextWindowOpslaan alsSave as ReTextWindowBestand opslaan Save file ReTextWindow ZoekenSearch ReTextWindowZoekwerkbalkSearch toolbar ReTextWindowZSelecteer n of meerdere te openen bestanden#Select one or several files to open ReTextWindow`Selecteer een of meerdere te openen afbeeldingen$Select one or several images to open ReTextWindow$Codering instellen Set encoding ReTextWindow0Landinstelling instellen Set locale ReTextWindowMap tonenShow directory ReTextWindowEenvoudige, maar krachtige bewerker voor Markdown en reStructuredText ConfigDialog Using configuration file at: Gebruikmakend van het volgende configuratiebestand: Behavior Gedrag Automatically save documents Documenten automatisch opslaan Automatically open last documents on startup Vorige document automatisch openen na opstarten Number of recent documents Aantal onlangs geopende documenten Restore window geometry Vensterafmetingen herstellen Default preview state Standaard voorvertoningsmodus Open external links in ReText window Externe links openen in ReText-venster Markdown syntax extensions (comma-separated) Markdown-syntaxisextensies (kommagescheiden) Enable synchronized scrolling for Markdown Synchroon scrollen inschakelen voor Markdown Editor Bewerker Highlight current line Huidige regel markeren Show line numbers Regelnummers tonen Line numbers are relative to current line Regelnummers zijn gekoppeld aan de huidige regel Tab key inserts spaces Spaties invoegen met tabtoets Tabulation width Tabulatiebreedte Draw vertical line at column Verticale lijn maken bij kolom Enable soft wrap Lichte regelafbreking inschakelen Show document stats Documentstatistieken tonen Ordered list mode Geordende lijstmodus Interface Vormgeving Hide toolbar Werkbalk verbergen Icon theme name Naam van pictogramthema Stylesheet file Stijlblad Hide tabs bar when there is only one tab Tabbladbalk verbergen als er slechts één tabblad is Show full path in window title Volledige locatie tonen in venstertitiel Show directory tree Mapstructuur tonen Working directory Werkmap Help Hulp Live preview Live-voorvertoning Normal preview Normale voorvertoning Disabled Uitgeschakeld Cursor Line Cursorregel Wrapped Line Afgebroken regel Increment Verhogen Repeat Herhalen DirectorySelectButton Select directory to open Kies de te openen map EncodingDialog Enter encoding name: Voer een versleutelingsnaam in: FileDialogButton (none) (geen) FileSelectButton Select file to open Kies het te openen bestand InsertTableDialog Insert table Tabel invoegen Number of rows Aantal rijen Number of columns Aantal kolommen LocaleDialog Enter locale name (example: en_US) Voer de landinstelling in (bijv.: en_US) It is possible to specify multiple languages, separated by comma. Meerdere talen kunnen kommagescheiden worden ingevoerd. Set as default Instellen als standaard Proxy No write since last change (add ! to override) Niet weggeschreven sinds recentste aanpassing (voeg ! toe om te overschrijven) Information Informatie ReTextEdit Add to dictionary Toevoegen aan woordenboek Save image Afbeelding opslaan Images (*.png *.jpg) Afbeeldingen (*.png *.jpg) ReTextTab New document Nieuw document Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! De bestandsinhoud kan niet worden verwerkt. Controleer of de <a href="%s">vereiste module</a> geïnstalleerd is! Create missing file? Ontbrekend bestand aanmaken? The file '%s' does not exist. Do you want to create it? Het bestand (‘%s’) bestaat niet. Wil je het aanmaken? File could not be created Het bestand kan niet worden aangemaakt Could not create file '%s': %s Het bestand (‘%s’) kan niet worden aangemaakt: %s ReTextWindow File toolbar Bestandswerkbalk Edit toolbar Aanpassingswerkbalk Search toolbar Zoekwerkbalk New Nieuw Open Openen Set encoding Codering instellen Reload Herladen Save Opslaan Save as Opslaan als Next tab Volgend tabblad Previous tab Vorig tabblad Close tab Tabblad sluiten Print Afdrukken Print preview Afdrukvoorbeeld View HTML code Html-code bekijken Change editor font Lettertype van bewerker aanpassen Change preview font Lettertype van voorvertoning aanpassen Find text Tekst zoeken Go to line Ga naar regel Preview Voorvertoning Live preview Live-voorvertoning Insert table Tabel invoegen Table editing mode Tabel-bewerkmodus Insert images by file path Afbeeldingen invoegen op basis van bestandslocatie FakeVim mode FakeVim-modus Fullscreen mode Beeldvullend Preferences Voorkeuren Quit Afsluiten Undo Ongedaan maken Redo Opnieuw Copy Kopiëren Cut Knippen Paste Plakken Paste image Afbeelding plakken Move line up Regel omhoog verplaatsen Move line down Regel omlaag verplaatsen Enable Inschakelen Set locale Landinstelling instellen Use WebEngine (Chromium) renderer WebEngine (Chromium)-weergave gebruiken Show directory Map tonen Next Volgende Previous Vorige Replace Vervangen Replace all Alles vervangen Close Sluiten Get help online Online-hulp openen What's new Wijzigingslog About ReText Over ReText About Qt Over Qt Bold Vetgedrukt Italic Cursief Underline Onderstrepen Formatting Opmaak Symbols Symbolen &File &Bestand &Edit B&ewerken &Help &Hulp Open recent Recent bestand openen Export Exporteren Spell check Spellingcontrole Default markup Standaardopmaak Search Zoeken Replace with Vervangen door Case sensitively Hoofdlettergevoelig New document Nieuw document Type the line number Voer een regelnummer in Please, save the file somewhere. Sla het bestand ergens op. Select one or several files to open Selecteer één of meerdere te openen bestanden Supported files Ondersteunde bestanden All files (*) Alle bestanden (*) Plain text (*.txt) Platte tekst (*.txt) %s files Example of final string: Markdown files %s bestanden Save file Bestand opslaan Cannot save to file which is open in another tab! Kan niet opslaan als het geopend is op een ander tabblad! Export document to ODT Document exporteren naar odt OpenDocument text files (*.odt) OpenDocument-tekstbestanden (*.odt) HTML files (*.html *.htm) Html-bestanden (*.html *.htm) Unrecognized paperSize setting "%s". Onbekend papierformaat: ‘%s’. Export document to PDF Document exporteren naar pdf PDF files (*.pdf) Pdf-bestanden (*.pdf) Print document Document afdrukken Export document Document exporteren Failed to execute the command: De opdracht kan niet worden uitgevoerd: Alt text Alt-tekst URL Url Link text Linktekst This file has been deleted by other application. Please make sure you save the file before exit. Dit bestand is verwijderd door een ander programma. Sla het bestand op voordat je afsluit. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Dit document is aangepast door een ander programma. Wil je het bestand herladen en je aanpassingen verwerpen? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. Automatisch opslaan is tijdelijk uitgeschakeld op dit tabblad om gegevensverlies te voorkomen. De functie wordt weer ingeschakeld zodra je het bestand herlaadt of opslaat. The document has been modified. Do you want to save your changes? Dit document is aangepast. Wil je de aanpassingen opslaan? HTML code Html-code Select one or several images to open Selecteer een of meerdere te openen afbeeldingen ReText %s (using PyMarkups %s) ReText %s (gebruikmakend van PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Eenvoudige, maar krachtige bewerker voor Markdown en reStructuredText Author: Dmitry Shachnev, 2011 Maker: Dmitry Shachnev, 2011 Markdown syntax Markdown-syntax reStructuredText syntax reStructuredText-syntaxis TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d w | %d a | %d c main Open the files in preview mode Bestanden openen in voorvertoningsmodus Create a new window even if there is an existing one Nieuw venster openen, zelfs als er al een geopend venster is List of files to open Lijst met te openen bestanden ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_no.qm0000644000175000017500000004025614575355102017434 0ustar00dmitrydmitry7uJ64S9V(WT+<kZSUPʆ J'Eʇ0@B2::s7L"#!nun)AI 5#UF)#O6ze OΩK&>%4 > b.dyYc'gt,e$z"r*NDVg"Tx l),LD! by%vћrC%[ %(#S 4J3mr5t,k .OFr895aW9'(0BbM;e G8-dF0 E0:u)*k52ϗ*°&ϡ -y 0T')+I)p9/#=Jc>/ Z'-C*75u { @" h> j3U lap v./ W $ l ȗ t7 QP  F  c2 5#q )_ ??e! \1 #9  p i w & J U N^X Px v.i Y+r *< U1 2'x - I($ ~>w :/8314E % z e%IIUGKx$\"!Gˏ*)V O3).Pi;fpne sist brukte dokumenter automatisk ved oppstart,Automatically open last documents on startup ConfigDialog6Lagre dokumenter automatiskAutomatically save documents ConfigDialogOppfrselBehavior ConfigDialogMarkrlinje Cursor Line ConfigDialogBStandard forhndsvisningstilstandDefault preview state ConfigDialogDeaktivertDisabled ConfigDialog>Tegn loddrett linje ved kolonneDraw vertical line at column ConfigDialogTekstbehandlerEditor ConfigDialog0Aktiver myk linjebrytingEnable soft wrap ConfigDialogRAktiver synkronisert rulling for Markdown*Enable synchronized scrolling for Markdown ConfigDialog HjelpHelp ConfigDialogRSkjul fanelinjen nr bare n fane er pen(Hide tabs bar when there is only one tab ConfigDialog&Skjul verktylinjen Hide toolbar ConfigDialog*Uthev gjeldende linjeHighlight current line ConfigDialog Navn p ikontemaIcon theme name ConfigDialogk Increment ConfigDialogGrensesnitt Interface ConfigDialog\Linjenumre vises i forhold til gjeldende linje)Line numbers are relative to current line ConfigDialog(Live-forhndsvisning Live preview ConfigDialogbUtvidelser for Markdown-syntaks (kommadelt liste),Markdown syntax extensions (comma-separated) ConfigDialog,Vanlig forhndsvisningNormal preview ConfigDialog0Antall nylige dokumenterNumber of recent documents ConfigDialogJpne eksterne lenker i Retext-vinduet$Open external links in ReText window ConfigDialog*Nummerert liste-modusOrdered list mode ConfigDialog GjentaRepeat ConfigDialog4Gjenopprett vindusgeometriRestore window geometry ConfigDialogVis katalogtreShow directory tree ConfigDialog,Vis dokumentstatistikkShow document stats ConfigDialogHVis full bane i vinduets tittellinjeShow full path in window title ConfigDialogVis linjenumreShow line numbers ConfigDialogStilark-filStylesheet file ConfigDialogDTabulatortast setter inn mellomromTab key inserts spaces ConfigDialogTabulatorbreddeTabulation width ConfigDialog>Bruker konfigurasjonsfilen ved:Using configuration file at: ConfigDialogArbeidsmappeWorking directory ConfigDialogBrutt linje Wrapped Line ConfigDialog:Velg katalogen som skal pnesSelect directory to openDirectorySelectButton(Angi navn p koding:Enter encoding name:EncodingDialog(ingen)(none)FileDialogButton2Velg filen som skal pnesSelect file to openFileSelectButtonSett inn tabell Insert tableInsertTableDialogAntall kolonnerNumber of columnsInsertTableDialogAntall raderNumber of rowsInsertTableDialogRAngi navn p lokale (for eksempel: en_US)"Enter locale name (example: en_US) LocaleDialogpDu kan velge flere sprk ved hjelp av en kommadelt listeAIt is possible to specify multiple languages, separated by comma. LocaleDialog"Angi som standardSet as default LocaleDialogInformasjon InformationProxyxIntet skrevet siden siste endring (tilfy ! for overstyre).No write since last change (add ! to override)Proxy&Legg til i ordlisteAdd to dictionary ReTextEdit(Bilder (*.png *.jpg)Images (*.png *.jpg) ReTextEditLagre bildet Save image ReTextEditDKunne ikke opprette filen '%s': %sCould not create file '%s': %s ReTextTabKlarte ikke lese filens innhold. Kontroller at du har installert den <a href="%s">ndvendige modulen</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTabDVil du opprette filen som mangler?Create missing file? ReTextTab0Filen kan ikke opprettesFile could not be created ReTextTabNytt dokument New document ReTextTabZFilen '%s' finnes ikke. Vil du opprette den?8The file '%s' does not exist. Do you want to create it? ReTextTab%s-filer%s files ReTextWindowR&ediger&Edit ReTextWindow&Fil&File ReTextWindow &Hjelp&Help ReTextWindow Om QtAbout Qt ReTextWindowOm ReText About ReText ReTextWindowAlle filer (*) All files (*) ReTextWindow Alternativ tekstAlt text ReTextWindow>Utvikler: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowHAutomatisk lagring er midlertidig deaktivert for denne fanen for unng tap av data, men blir aktivert igjen nr laster inn filen p nytt eller lagrer den manuelt.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindowFetBold ReTextWindowlKan ikke lagre til en fil som er pen i en annen fane!1Cannot save to file which is open in another tab! ReTextWindowFSkill mellom store og sm bokstaverCase sensitively ReTextWindow@Bytt skrift for tekstbehandlerenChange editor font ReTextWindow>Bytt skrift for forhndsvisningChange preview font ReTextWindowLukkClose ReTextWindowLukk fane Close tab ReTextWindow KopierCopy ReTextWindowKlipp utCut ReTextWindowStandard markupDefault markup ReTextWindow*Rediger-verktylinjen Edit toolbar ReTextWindowAktiverEnable ReTextWindowEksporterExport ReTextWindow$Eksporter dokumentExport document ReTextWindow8Eksporter dokumentet til ODTExport document to ODT ReTextWindow8Eksporter dokumentet til PDFExport document to PDF ReTextWindow8Kunne ikke kjre kommandoen:Failed to execute the command: ReTextWindowFakeVim-modus FakeVim mode ReTextWindow"Fil-verktylinjen File toolbar ReTextWindowFinn tekst Find text ReTextWindowFormatering Formatting ReTextWindowFullskjermmodusFullscreen mode ReTextWindow F hjelp p nettGet help online ReTextWindowG til linje Go to line ReTextWindowHTML-kode HTML code ReTextWindow2HTML-filer (*.html *.htm)HTML files (*.html *.htm) ReTextWindowFBruk filbane til sette inn bilderInsert images by file path ReTextWindowSett inn tabell Insert table ReTextWindow KursivItalic ReTextWindowLenketekst Link text ReTextWindow(Live-forhndsvisning Live preview ReTextWindow Markdown-syntaksMarkdown syntax ReTextWindow Flytt linjen nedMove line down ReTextWindow Flytt linjen opp Move line up ReTextWindowNyNew ReTextWindowNytt dokument New document ReTextWindow NesteNext ReTextWindowNeste faneNext tab ReTextWindowpneOpen ReTextWindowpne nylige Open recent ReTextWindow>OpenDocument-tekstfiler (*.odt)OpenDocument text files (*.odt) ReTextWindow"PDF-filer (*.pdf)PDF files (*.pdf) ReTextWindowLim innPaste ReTextWindowLim inn bilde Paste image ReTextWindow"Ren tekst (*.txt)Plain text (*.txt) ReTextWindow6Husk lagre filen et sted. Please, save the file somewhere. ReTextWindowInnstillinger Preferences ReTextWindowForhndsvisPreview ReTextWindowForrigePrevious ReTextWindowForrige fane Previous tab ReTextWindowSkriv utPrint ReTextWindow"Skriv ut dokumentPrint document ReTextWindow(Forhndsvis utskrift Print preview ReTextWindowAvsluttQuit ReTextWindow>ReText %s (bruker PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindowGjr omRedo ReTextWindow Last inn p nyttReload ReTextWindowErstattReplace ReTextWindowErstatt alle Replace all ReTextWindowErstatt med Replace with ReTextWindow LagreSave ReTextWindowLagre somSave as ReTextWindowLagre fil Save file ReTextWindowSkSearch ReTextWindow"Sk-verktylinjenSearch toolbar ReTextWindow@Velg en eller flere filer pne#Select one or several files to open ReTextWindowTMerk ett eller flere bilder som skal pnes$Select one or several images to open ReTextWindowAngi koding Set encoding ReTextWindowAngi lokale Set locale ReTextWindowVis katalogShow directory ReTextWindowEn enkel, men kraftfull tekstbehandler for Markdown og reStructuredTextListe over filer som skal pnesList of files to openmainFpne filene i forhndsvisningsmodusOpen the files in preview modemain././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/ReText/locale/retext_no.ts0000644000175000017500000007345714575355070017462 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Bruker konfigurasjonsfilen ved: Behavior Oppførsel Automatically save documents Lagre dokumenter automatisk Automatically open last documents on startup Åpne sist brukte dokumenter automatisk ved oppstart Number of recent documents Antall nylige dokumenter Restore window geometry Gjenopprett vindusgeometri Default preview state Standard forhåndsvisningstilstand Open external links in ReText window Åpne eksterne lenker i Retext-vinduet Markdown syntax extensions (comma-separated) Utvidelser for Markdown-syntaks (kommadelt liste) Enable synchronized scrolling for Markdown Aktiver synkronisert rulling for Markdown Editor Tekstbehandler Highlight current line Uthev gjeldende linje Show line numbers Vis linjenumre Line numbers are relative to current line Linjenumre vises i forhold til gjeldende linje Tab key inserts spaces Tabulatortast setter inn mellomrom Tabulation width Tabulatorbredde Draw vertical line at column Tegn loddrett linje ved kolonne Enable soft wrap Aktiver myk linjebryting Show document stats Vis dokumentstatistikk Ordered list mode Nummerert liste-modus Interface Grensesnitt Hide toolbar Skjul verktøylinjen Icon theme name Navn på ikontema Stylesheet file Stilark-fil Hide tabs bar when there is only one tab Skjul fanelinjen når bare én fane er åpen Show full path in window title Vis full bane i vinduets tittellinje Show directory tree Vis katalogtre Working directory Arbeidsmappe Help Hjelp Live preview Live-forhåndsvisning Normal preview Vanlig forhåndsvisning Disabled Deaktivert Cursor Line Markørlinje Wrapped Line Brutt linje Increment Øk Repeat Gjenta DirectorySelectButton Select directory to open Velg katalogen som skal åpnes EncodingDialog Enter encoding name: Angi navn på koding: FileDialogButton (none) (ingen) FileSelectButton Select file to open Velg filen som skal åpnes InsertTableDialog Insert table Sett inn tabell Number of rows Antall rader Number of columns Antall kolonner LocaleDialog Enter locale name (example: en_US) Angi navn på lokale (for eksempel: en_US) It is possible to specify multiple languages, separated by comma. Du kan velge flere språk ved hjelp av en kommadelt liste Set as default Angi som standard Proxy No write since last change (add ! to override) Intet skrevet siden siste endring (tilføy ! for å overstyre) Information Informasjon ReTextEdit Add to dictionary Legg til i ordliste Save image Lagre bildet Images (*.png *.jpg) Bilder (*.png *.jpg) ReTextTab New document Nytt dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Klarte ikke å lese filens innhold. Kontroller at du har installert den <a href="%s">nødvendige modulen</a>! Create missing file? Vil du opprette filen som mangler? The file '%s' does not exist. Do you want to create it? Filen '%s' finnes ikke. Vil du opprette den? File could not be created Filen kan ikke opprettes Could not create file '%s': %s Kunne ikke opprette filen '%s': %s ReTextWindow File toolbar Fil-verktøylinjen Edit toolbar Rediger-verktøylinjen Search toolbar Søk-verktøylinjen New Ny Open Åpne Set encoding Angi koding Reload Last inn på nytt Save Lagre Save as Lagre som Next tab Neste fane Previous tab Forrige fane Close tab Lukk fane Print Skriv ut Print preview Forhåndsvis utskrift View HTML code Vis HTML-kode Change editor font Bytt skrift for tekstbehandleren Change preview font Bytt skrift for forhåndsvisning Find text Finn tekst Go to line Gå til linje Preview Forhåndsvis Live preview Live-forhåndsvisning Insert table Sett inn tabell Table editing mode Tabellredigeringsmodus Insert images by file path Bruk filbane til å sette inn bilder FakeVim mode FakeVim-modus Fullscreen mode Fullskjermmodus Preferences Innstillinger Quit Avslutt Undo Angre Redo Gjør om Copy Kopier Cut Klipp ut Paste Lim inn Paste image Lim inn bilde Move line up Flytt linjen opp Move line down Flytt linjen ned Enable Aktiver Set locale Angi lokale Use WebEngine (Chromium) renderer Bruk WebEngine-gjengivelse (Chromium) Show directory Vis katalog Next Neste Previous Forrige Replace Erstatt Replace all Erstatt alle Close Lukk Get help online Få hjelp på nett What's new Dette er nytt About ReText Om ReText About Qt Om Qt Bold Fet Italic Kursiv Underline Understreket Formatting Formatering Symbols Symboler &File &Fil &Edit R&ediger &Help &Hjelp Open recent Åpne nylige Export Eksporter Spell check Stavekontroll Default markup Standard markup Search Søk Replace with Erstatt med Case sensitively Skill mellom store og små bokstaver New document Nytt dokument Type the line number Skriv inn linjenummeret Please, save the file somewhere. Husk å lagre filen et sted. Select one or several files to open Velg en eller flere filer å åpne Supported files Filtyper som støttes All files (*) Alle filer (*) Plain text (*.txt) Ren tekst (*.txt) %s files Example of final string: Markdown files %s-filer Save file Lagre fil Cannot save to file which is open in another tab! Kan ikke lagre til en fil som er åpen i en annen fane! Export document to ODT Eksporter dokumentet til ODT OpenDocument text files (*.odt) OpenDocument-tekstfiler (*.odt) HTML files (*.html *.htm) HTML-filer (*.html *.htm) Unrecognized paperSize setting "%s". Ukjent innstilling "%s" for paperSize. Export document to PDF Eksporter dokumentet til PDF PDF files (*.pdf) PDF-filer (*.pdf) Print document Skriv ut dokument Export document Eksporter dokument Failed to execute the command: Kunne ikke kjøre kommandoen: Alt text Alternativ tekst URL URL Link text Lenketekst This file has been deleted by other application. Please make sure you save the file before exit. Denne filen ble slettet av et annet program. Husk å lagre før du avslutter. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Dette dokumentet er endret av et annet program. Vil du laste inn filen på nytt (i så fall slettes alle endringer)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. Automatisk lagring er midlertidig deaktivert for denne fanen for å unngå tap av data, men blir aktivert igjen når laster inn filen på nytt eller lagrer den manuelt. The document has been modified. Do you want to save your changes? Dokumentet er endret. Vil du lagre disse endringene? HTML code HTML-kode Select one or several images to open Merk ett eller flere bilder som skal åpnes ReText %s (using PyMarkups %s) ReText %s (bruker PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText En enkel, men kraftfull tekstbehandler for Markdown og reStructuredText Author: Dmitry Shachnev, 2011 Utvikler: Dmitry Shachnev, 2011 Markdown syntax Markdown-syntaks reStructuredText syntax reStructuredText-syntaks TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d o | %d a | %d t main Open the files in preview mode Åpne filene i forhåndsvisningsmodus Create a new window even if there is an existing one Opprett et nytt vindu selv om et annet vindu er i bruk List of files to open Liste over filer som skal åpnes ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_pl.qm0000644000175000017500000003640114575355102017430 0ustar00dmitrydmitryL#f$N)`(*į42(`**%*0#7dJ6 S6V%WT'kZS/UPʆ |#ʇ,B.0:s4cL"nun&fAI5 EUF) O3oze yΩw",""4> b+gdyYc'gtj!hz1r'DV&gxUl)(D! by%|vћrm! !#S o4J0mr5t)k +0HFr45W9'%E0B=M7e -d%0 E-<:u%k5/iϗ'#°#ϡ ) -}T$)+I& 9+>,T ')'Y722 l @t h>% j3 laU v* W $ l ȗR t3 Q   F  c/3 5  )J ??eg \- #6=  p: w D J U  N^j Px v* Y( & UW 2$ *H I$ ~> 7-/53.4E B% z 1e"mI^UGKx ˏ*)S O/.7i7|Automatycznie otwieraj ostatnie dokumenty podczas uruchamiania,Automatically open last documents on startup ConfigDialog>Automatycznie zapisuj dokumentyAutomatically save documents ConfigDialogZachowanieBehavior ConfigDialog Linia z kursorem Cursor Line ConfigDialog,Domy[lny stan podglduDefault preview state ConfigDialogWyBczoneDisabled ConfigDialogLRysuj pionow lini w podanej kolumnieDraw vertical line at column ConfigDialog EdytorEditor ConfigDialog>WBcz mikkie zawijanie wierszyEnable soft wrap ConfigDialog^WBcz zsynchronizowane przewijanie dla Markdown*Enable synchronized scrolling for Markdown ConfigDialog PomocHelp ConfigDialogLUkryj nagBwek jedynej widocznej karty(Hide tabs bar when there is only one tab ConfigDialog(Ukryj pasek narzdzi Hide toolbar ConfigDialog2Pod[wietlaj bie|c liniHighlight current line ConfigDialog"Nazwa motywu ikonIcon theme name ConfigDialogPrzyrostowo Increment ConfigDialogInterfejs Interface ConfigDialogTNumery linii s wzgldne do bie|cej linii)Line numbers are relative to current line ConfigDialogPodgld na |ywo Live preview ConfigDialoglRozszerzenia skBadni Markdown (oddzielone przecinkami),Markdown syntax extensions (comma-separated) ConfigDialog Normalny podgldNormal preview ConfigDialog6Liczba ostatnich dokumentwNumber of recent documents ConfigDialogDOtwieraj linki zewntrzne w ReText$Open external links in ReText window ConfigDialog2Tryb listy uporzdkowanejOrdered list mode ConfigDialogPowtarzajRepeat ConfigDialog.Przywr geometri oknaRestore window geometry ConfigDialog*Poka| drzewo folderwShow directory tree ConfigDialog4Poka| statystyk dokumentuShow document stats ConfigDialogBPoka| peBn [cie|k w tytule oknaShow full path in window title ConfigDialog$Poka| numery liniiShow line numbers ConfigDialog&Plik arkusza stylwStylesheet file ConfigDialog4Klawisz Tab wstawia spacjeTab key inserts spaces ConfigDialog&GBboko[ tabulacjiTabulation width ConfigDialog8U|ywany plik konfiguracyjny:Using configuration file at: ConfigDialogFolder roboczyWorking directory ConfigDialog4Linia z zawinitym tekstem Wrapped Line ConfigDialog4Wybierz folder do otwarciaSelect directory to openDirectorySelectButton (brak)(none)FileDialogButton0Wybierz plik do otwarciaSelect file to openFileSelectButtonWstaw tabel Insert tableInsertTableDialogLiczba kolumnNumber of columnsInsertTableDialogLiczba rzdwNumber of rowsInsertTableDialog:Podaj kod jzyka (np.: pl_PL)"Enter locale name (example: en_US) LocaleDialog&Ustaw jako domy[lneSet as default LocaleDialoginformacje InformationProxyRNic nie zmieniono (dodaj ! |eby nadpisa).No write since last change (add ! to override)Proxy"Dodaj do sBownikaAdd to dictionary ReTextEdit(Obrazy (*.png *.jpg)Images (*.png *.jpg) ReTextEditZapisz obraz Save image ReTextEditJNie udaBo si utworzy pliku '%s': %sCould not create file '%s': %s ReTextTabNie mo|na przeanalizowa zawarto[ci pliku, sprawdz czy masz zainstalowany <a href="%s">odpowiedni moduB</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTab0Utworzy brakujcy plik?Create missing file? ReTextTab0Nie mo|na utworzy plikuFile could not be created ReTextTabNowy dokument New document ReTextTab`Plik '%s' nie istnieje. Czy chcesz go utworzy?8The file '%s' does not exist. Do you want to create it? ReTextTab%s pliki%s files ReTextWindow&Edycja&Edit ReTextWindow &Plik&File ReTextWindow Pomo&c&Help ReTextWindowO QtAbout Qt ReTextWindowO ReText About ReText ReTextWindow&Wszystkie pliki (*) All files (*) ReTextWindow$tekst alternatywnyAlt text ReTextWindow8Autor: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowPogrubienieBold ReTextWindowvNie mo|na zapisa pliku, ktry jest otwarty w innej karcie!1Cannot save to file which is open in another tab! ReTextWindow:Rozr|nianie wielko[ci znakwCase sensitively ReTextWindow,ZmieD czcionk edytoraChange editor font ReTextWindow.ZmieD czcionk podglduChange preview font ReTextWindowZamknijClose ReTextWindowZamknij kart Close tab ReTextWindowSkopiujCopy ReTextWindow WytnijCut ReTextWindow$Domy[lne znacznikiDefault markup ReTextWindowPasek edycji Edit toolbar ReTextWindow WBczEnable ReTextWindowEksportujExport ReTextWindow$Eksportuj dokumentExport document ReTextWindow Eksportuj do ODTExport document to ODT ReTextWindow Eksportuj do PDFExport document to PDF ReTextWindow@Nie udaBo si wykona polecenia:Failed to execute the command: ReTextWindowTryb FakeVim FakeVim mode ReTextWindowPasek pliku File toolbar ReTextWindowZnajdz tekst Find text ReTextWindowFormatowanie Formatting ReTextWindowPeBny ekranFullscreen mode ReTextWindowPomoc onlineGet help online ReTextWindowIdz do linii Go to line ReTextWindowKod HTML HTML code ReTextWindow2Pliki HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindowBWstaw obrazy wedBug [cie|ki plikuInsert images by file path ReTextWindowWstaw tabel Insert table ReTextWindowKursywaItalic ReTextWindowtekst linku Link text ReTextWindowPodgld na |ywo Live preview ReTextWindow"SkBadnia MarkdownMarkdown syntax ReTextWindow&PrzesuD lini w dBMove line down ReTextWindow(PrzesuD lini w gr Move line up ReTextWindowNowyNew ReTextWindowNowy dokument New document ReTextWindowNastpnyNext ReTextWindowNowa kartaNext tab ReTextWindow OtwrzOpen ReTextWindowOtwrz ostatnie Open recent ReTextWindow<Dokumenty OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow"Pliki PDF (*.pdf)PDF files (*.pdf) ReTextWindow WklejPaste ReTextWindowWklej obraz Paste image ReTextWindow(ZwykBy tekst (*.txt)Plain text (*.txt) ReTextWindow:Prosz najpierw zapisa plik. Please, save the file somewhere. ReTextWindowPreferencje Preferences ReTextWindowPodgldPreview ReTextWindowPoprzedniPrevious ReTextWindow Poprzednia karta Previous tab ReTextWindow DrukujPrint ReTextWindowDrukuj dokumentPrint document ReTextWindowPodgld wydruku Print preview ReTextWindowZakoDczQuit ReTextWindowBReText %s (u|ywajc PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow PonwRedo ReTextWindowPrzeBadujReload ReTextWindow ZastpReplace ReTextWindow Zastp wszystkie Replace all ReTextWindow Zastp Replace with ReTextWindow ZapiszSave ReTextWindowZapisz jakoSave as ReTextWindowZapisz plik Save file ReTextWindowWyszukajSearch ReTextWindow$Pasek wyszukiwaniaSearch toolbar ReTextWindowVZaznacz jeden lub wicej plikw do otwarcia#Select one or several files to open ReTextWindowXZaznacz jeden lub wicej obrazw do otwarcia$Select one or several images to open ReTextWindowUstaw kodowanie Set encoding ReTextWindowUstaw jzyk Set locale ReTextWindowPoka| katalogShow directory ReTextWindowlProsty, ale pot|ny edytor Markdown i RestructuredText ConfigDialog Using configuration file at: Używany plik konfiguracyjny: Behavior Zachowanie Automatically save documents Automatycznie zapisuj dokumenty Automatically open last documents on startup Automatycznie otwieraj ostatnie dokumenty podczas uruchamiania Number of recent documents Liczba ostatnich dokumentów Restore window geometry Przywróć geometrię okna Default preview state Domyślny stan podglądu Open external links in ReText window Otwieraj linki zewnątrzne w ReText Markdown syntax extensions (comma-separated) Rozszerzenia składni Markdown (oddzielone przecinkami) Enable synchronized scrolling for Markdown Włącz zsynchronizowane przewijanie dla Markdown Editor Edytor Highlight current line Podświetlaj bieżącą linię Show line numbers Pokaż numery linii Line numbers are relative to current line Numery linii są względne do bieżącej linii Tab key inserts spaces Klawisz Tab wstawia spacje Tabulation width Głębokość tabulacji Draw vertical line at column Rysuj pionową linię w podanej kolumnie Enable soft wrap Włącz miękkie zawijanie wierszy Show document stats Pokaż statystykę dokumentu Ordered list mode Tryb listy uporządkowanej Interface Interfejs Hide toolbar Ukryj pasek narzędzi Icon theme name Nazwa motywu ikon Stylesheet file Plik arkusza stylów Hide tabs bar when there is only one tab Ukryj nagłówek jedynej widocznej karty Show full path in window title Pokaż pełną ścieżkę w tytule okna Show directory tree Pokaż drzewo folderów Working directory Folder roboczy Help Pomoc Live preview Podgląd na żywo Normal preview Normalny podgląd Disabled Wyłączone Cursor Line Linia z kursorem Wrapped Line Linia z zawiniętym tekstem Increment Przyrostowo Repeat Powtarzaj DirectorySelectButton Select directory to open Wybierz folder do otwarcia EncodingDialog Enter encoding name: FileDialogButton (none) (brak) FileSelectButton Select file to open Wybierz plik do otwarcia InsertTableDialog Insert table Wstaw tabelę Number of rows Liczba rzędów Number of columns Liczba kolumn LocaleDialog Enter locale name (example: en_US) Podaj kod języka (np.: pl_PL) It is possible to specify multiple languages, separated by comma. Set as default Ustaw jako domyślne Proxy No write since last change (add ! to override) Nic nie zmieniono (dodaj ! żeby nadpisać) Information informacje ReTextEdit Add to dictionary Dodaj do słownika Save image Zapisz obraz Images (*.png *.jpg) Obrazy (*.png *.jpg) ReTextTab New document Nowy dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Nie można przeanalizować zawartości pliku, sprawdź czy masz zainstalowany <a href="%s">odpowiedni moduł</a>! Create missing file? Utworzyć brakujący plik? The file '%s' does not exist. Do you want to create it? Plik '%s' nie istnieje. Czy chcesz go utworzyć? File could not be created Nie można utworzyć pliku Could not create file '%s': %s Nie udało się utworzyć pliku '%s': %s ReTextWindow File toolbar Pasek pliku Edit toolbar Pasek edycji Search toolbar Pasek wyszukiwania New Nowy Open Otwórz Set encoding Ustaw kodowanie Reload Przeładuj Save Zapisz Save as Zapisz jako Next tab Nowa karta Previous tab Poprzednia karta Close tab Zamknij kartę Print Drukuj Print preview Podgląd wydruku View HTML code Zobacz źródło HTML Change editor font Zmień czcionkę edytora Change preview font Zmień czcionkę podglądu Find text Znajdź tekst Go to line Idź do linii Preview Podgląd Live preview Podgląd na żywo Insert table Wstaw tabelę Table editing mode Tryb edycji tabeli Insert images by file path Wstaw obrazy według ścieżki pliku FakeVim mode Tryb FakeVim Fullscreen mode Pełny ekran Preferences Preferencje Quit Zakończ Undo Cofnij Redo Ponów Copy Skopiuj Cut Wytnij Paste Wklej Paste image Wklej obraz Move line up Przesuń linię w górę Move line down Przesuń linię w dół Enable Włącz Set locale Ustaw język Use WebEngine (Chromium) renderer Używaj silnika WebEngine (Chromium) Show directory Pokaż katalog Next Następny Previous Poprzedni Replace Zastąp Replace all Zastąp wszystkie Close Zamknij Get help online Pomoc online What's new About ReText O ReText About Qt O Qt Bold Pogrubienie Italic Kursywa Underline Podkreślenie Formatting Formatowanie Symbols Symbole &File &Plik &Edit &Edycja &Help Pomo&c Open recent Otwórz ostatnie Export Eksportuj Spell check Sprawdzanie pisowni Default markup Domyślne znaczniki Search Wyszukaj Replace with Zastąp Case sensitively Rozróżnianie wielkości znaków New document Nowy dokument Type the line number Podaj numer linii Please, save the file somewhere. Proszę najpierw zapisać plik. Select one or several files to open Zaznacz jeden lub więcej plików do otwarcia Supported files Obsługiwane pliki All files (*) Wszystkie pliki (*) Plain text (*.txt) Zwykły tekst (*.txt) %s files Example of final string: Markdown files %s pliki Save file Zapisz plik Cannot save to file which is open in another tab! Nie można zapisać pliku, który jest otwarty w innej karcie! Export document to ODT Eksportuj do ODT OpenDocument text files (*.odt) Dokumenty OpenDocument (*.odt) HTML files (*.html *.htm) Pliki HTML (*.html *.htm) Unrecognized paperSize setting "%s". Nierozpoznane ustawienie paperSize "%s". Export document to PDF Eksportuj do PDF PDF files (*.pdf) Pliki PDF (*.pdf) Print document Drukuj dokument Export document Eksportuj dokument Failed to execute the command: Nie udało się wykonać polecenia: Alt text tekst alternatywny URL URL Link text tekst linku This file has been deleted by other application. Please make sure you save the file before exit. Ten plik został usunięty przez inną aplikację. Upewnij się, że zapisałeś plik zanim zamkniesz. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Ten dokument został zmodyfikowany przez inną aplikację. Czy chcesz przeładować ten plik (to może spowodować cofnięcie twoich zmian)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Dokument został zmieniony. Czy chcesz zapisać zmiany? HTML code Kod HTML Select one or several images to open Zaznacz jeden lub więcej obrazów do otwarcia ReText %s (using PyMarkups %s) ReText %s (używając PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Prosty, ale potężny edytor Markdown i RestructuredText Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Składnia Markdown reStructuredText syntax Składnia reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d w | %d a | %d c main Open the files in preview mode Otwórz pliki w trybie podglądu Create a new window even if there is an existing one Utwórz nowe okno, nawet jeśli istnieje List of files to open Lista plików do otwarcia ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_pt.qm0000644000175000017500000000704114575355102017436 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Behavior Automatically save documents Automatically open last documents on startup Number of recent documents Restore window geometry Default preview state Open external links in ReText window Markdown syntax extensions (comma-separated) Enable synchronized scrolling for Markdown Editor Highlight current line Show line numbers Line numbers are relative to current line Tab key inserts spaces Tabulation width Draw vertical line at column Enable soft wrap Show document stats Ordered list mode Interface Hide toolbar Icon theme name Stylesheet file Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Ajuda Live preview Pré-visualizar Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) FileSelectButton Select file to open InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) It is possible to specify multiple languages, separated by comma. Set as default Proxy No write since last change (add ! to override) Information ReTextEdit Add to dictionary Save image Images (*.png *.jpg) ReTextTab New document Novo documento Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Barra de Ferramentas de Ficheiros Edit toolbar Editar barra de ferramentas Search toolbar New Novo Open Abrir Set encoding Reload Save Guardar Save as Guardar como Next tab Previous tab Close tab Print Imprimir Print preview Pré-visualizar impressão View HTML code Ver código HTML Change editor font Change preview font Find text Go to line Preview Pré-visualizar Live preview Pré-visualizar Insert table Table editing mode Insert images by file path FakeVim mode Fullscreen mode Preferences Quit Sair Undo Anular Redo Refazer Copy Copiar Cut Cortar Paste Colar Paste image Move line up Move line down Enable Set locale Use WebEngine (Chromium) renderer Show directory Next Previous Replace Replace all Close Get help online What's new About ReText Sobre ReText About Qt So o Qt Bold Italic Underline Formatting Symbols Símbolos &File &Ficheiro &Edit &Editar &Help &Ajuda Open recent Abrir recentes Export Exportar Spell check Default markup Search Replace with Case sensitively New document Novo documento Type the line number Please, save the file somewhere. Guarde o ficheiro noutro lugar por favor. Select one or several files to open Supported files Ficheiros Suportados All files (*) Todos os ficheiros (*) Plain text (*.txt) Texto Simples (*.txt) %s files Example of final string: Markdown files Ficheiros %s Save file Guardar Ficheiro Cannot save to file which is open in another tab! Export document to ODT Exportar para ODT OpenDocument text files (*.odt) Abrir ficheros OpenDocument (*.odt) HTML files (*.html *.htm) Ficheiros HTML (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Exportar para PDF PDF files (*.pdf) Ficheiros PDF (*.pdf) Print document Imprimir documento Export document Failed to execute the command: Alt text URL Link text This file has been deleted by other application. Please make sure you save the file before exit. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? O documernto foi alterado Deseja gravar as alterações? HTML code Código HTML Select one or several images to open ReText %s (using PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Author: Dmitry Shachnev, 2011 Markdown syntax reStructuredText syntax TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_pt_BR.qm0000644000175000017500000004155514575355102020031 0ustar00dmitrydmitry b0dyYc' gtjI&z$,r,N+DV&g#xl).FD!v by%! v!FћrU& &#S 4J6cmr5t.k 0Fr:;W9'*p0BM=e  G;-dZ0 E2:u*k55,ϗ,°(;ϡ /m 3*T))F+I+>91[=J'>1'/1,77  @$g h> j3 la v03 W $  l ȗJ t9 Q  $ F  c4 5$ )g ??e#$ \3y # J U w N^t Px & v0q Y-p ,< UW 2)0 / I) ~> =e/;I34J4E |%\z e'IKU ]GKx%#"ˏ*)D O5. i>RrAbrir ltimos documentos automaticamente na inicializao,Automatically open last documents on startup ConfigDialogBSalvar documentos automaticamenteAutomatically save documents ConfigDialogComportamentoBehavior ConfigDialogLinha de Cursor Cursor Line ConfigDialog2Estado de previso padroDefault preview state ConfigDialogDesabilitadoDisabled ConfigDialogBDesenhar linha vertical na colunaDraw vertical line at column ConfigDialog EditorEditor ConfigDialog2Habilitar quebra de linhaEnable soft wrap ConfigDialogRAtivar rolagem sincronizada para Markdown*Enable synchronized scrolling for Markdown ConfigDialog AjudaHelp ConfigDialogTOcultar barra de abas quando s h uma aba(Hide tabs bar when there is only one tab ConfigDialog8Ocultar barra de ferramentas Hide toolbar ConfigDialog(Destacar linha atualHighlight current line ConfigDialog$Nome do cone temaIcon theme name ConfigDialogIncrementar Increment ConfigDialogInterface Interface ConfigDialog^Os nmeros de linha so relativos linha atual)Line numbers are relative to current line ConfigDialog$Visualizao atual Live preview ConfigDialoglExtenses de sintxe Markdown (separadas por vrgulas),Markdown syntax extensions (comma-separated) ConfigDialog&Visualizao normalNormal preview ConfigDialog:Nmero de documentos recentesNumber of recent documents ConfigDialogJAbrir links externos na janela ReText$Open external links in ReText window ConfigDialog,Modo de lista ordenadaOrdered list mode ConfigDialogRepetirRepeat ConfigDialog>Restaurar a geometria da janelaRestore window geometry ConfigDialog8Mostrar rvore de diretriosShow directory tree ConfigDialogBMostrar estatsticas do documentoShow document stats ConfigDialogXMostrar caminho completo no ttulo da janelaShow full path in window title ConfigDialog2Mostrar nmeros de linhasShow line numbers ConfigDialog$Arquivo de estilosStylesheet file ConfigDialog$Tab insere espaosTab key inserts spaces ConfigDialog(Tamanho da tabulaoTabulation width ConfigDialogDUsando arquivo de configurao em:Using configuration file at: ConfigDialog*Diretrio de trabalhoWorking directory ConfigDialogLinha Envolvida Wrapped Line ConfigDialog>Selecionar diretrio para abrirSelect directory to openDirectorySelectButton:Insira o nome da codificao:Enter encoding name:EncodingDialog(nenhum)(none)FileDialogButton>Selecione um arquivo para abrirSelect file to openFileSelectButtonInserir tabela Insert tableInsertTableDialog"Nmero de colunasNumber of columnsInsertTableDialog Nmero de linhasNumber of rowsInsertTableDialogZFornea o nome da localidade (exemplo: pt_BR)"Enter locale name (example: en_US) LocaleDialogz possvel especificar vrios idiomas, separados por vrgula.AIt is possible to specify multiple languages, separated by comma. LocaleDialog&Definir como padroSet as default LocaleDialogInformao InformationProxyvO arquivo no foi salvo (adicione um '!' para sobrescrever).No write since last change (add ! to override)Proxy.Adicionar ao dicionrioAdd to dictionary ReTextEdit*Imagens (*.png *.jpg)Images (*.png *.jpg) ReTextEditSalvar imagem Save image ReTextEditNNo foi possvel criar arquivo '%s': %sCould not create file '%s': %s ReTextTabNo foi possvel analisar o contedo do arquivo, verifique se voc tem o <a href="%s">mdulo necessrio</a> instalado!aCould not parse file contents, check if you have the necessary module installed! ReTextTab,Criar arquivo ausente?Create missing file? ReTextTab6Arquivo no pode ser criadoFile could not be created ReTextTabNovo documento New document ReTextTabVO arquivo '%s' no existe. Deseja cri-lo?8The file '%s' does not exist. Do you want to create it? ReTextTab%s arquivos%s files ReTextWindow&Editar&Edit ReTextWindow&Arquivo&File ReTextWindow A&juda&Help ReTextWindowSobre QtAbout Qt ReTextWindowSobre ReText About ReText ReTextWindow*Todos os arquivos (*) All files (*) ReTextWindow"Texto alternativoAlt text ReTextWindow8Autor: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowbO salvamento automtico foi desabilitado temporariamente para esta aba para prevenir a perda de dados. possvel reabilitar enquanto carregar o arquivo ou salv-lo manualmente.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindowNegritoBold ReTextWindow~No possvel salvar no arquivo que est aberto em outra guia!1Cannot save to file which is open in another tab! ReTextWindowJDiferenciando maisculas e minsculasCase sensitively ReTextWindow*Mudar fonte do editorChange editor font ReTextWindow6Mudar fonte da visualizaoChange preview font ReTextWindow FecharClose ReTextWindowFechar aba Close tab ReTextWindow CopiarCopy ReTextWindowRecortarCut ReTextWindowMarcao padroDefault markup ReTextWindow6Barra de ferramentas Editar Edit toolbar ReTextWindowHabilitarEnable ReTextWindowExportarExport ReTextWindow$Exportar documentoExport document ReTextWindow8Exportar documento para ODT Export document to ODT ReTextWindow6Exportar documento para PDFExport document to PDF ReTextWindow8Falha ao executar o comando:Failed to execute the command: ReTextWindow.Modo de entrada FakeVim FakeVim mode ReTextWindow8Barra de ferramentas Arquivo File toolbar ReTextWindowEncontrar texto Find text ReTextWindowFormatar Formatting ReTextWindowModo tela cheiaFullscreen mode ReTextWindowAjuda onlineGet help online ReTextWindowIr para a linha Go to line ReTextWindowCdigo HTML HTML code ReTextWindow8Arquivos HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindowLInserir imagens por caminho de arquivoInsert images by file path ReTextWindowInserir tabela Insert table ReTextWindowItlicoItalic ReTextWindowTexto de link Link text ReTextWindow.Visualizao automtica Live preview ReTextWindow Sintaxe MarkdownMarkdown syntax ReTextWindow Mover para baixoMove line down ReTextWindowMover para cima Move line up ReTextWindowNovoNew ReTextWindowNovo documento New document ReTextWindowSeguinteNext ReTextWindowPrxima abaNext tab ReTextWindow AbrirOpen ReTextWindowAbrir recente Open recent ReTextWindowLArquivos de texto OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow(Arquivos PDF (*.pdf)PDF files (*.pdf) ReTextWindow ColarPaste ReTextWindowColar imagem Paste image ReTextWindow*Texto simples (*.txt)Plain text (*.txt) ReTextWindow`Por favor, salve o arquivo em outra localizao. Please, save the file somewhere. ReTextWindowPreferncias Preferences ReTextWindowVisualizarPreview ReTextWindowAnteriorPrevious ReTextWindowAba anterior Previous tab ReTextWindowImprimirPrint ReTextWindow$Imprimir documentoPrint document ReTextWindow(Visualizar impresso Print preview ReTextWindowSairQuit ReTextWindow>ReText %s (usando PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindowRefazerRedo ReTextWindowRecarregarReload ReTextWindowSubstituirReplace ReTextWindow Substituir todos Replace all ReTextWindowSubstituir por Replace with ReTextWindow SalvarSave ReTextWindowSalvar comoSave as ReTextWindowSalvar arquivo Save file ReTextWindowPesquisarSearch ReTextWindow<Barra de ferramentas PesquisarSearch toolbar ReTextWindowPSelecione um ou mais arquivos para abrir#Select one or several files to open ReTextWindowTSelecione uma ou vrias imagens para abrir$Select one or several images to open ReTextWindow&Definir codificao Set encoding ReTextWindow$Definir localidade Set locale ReTextWindow Exibir diretrioShow directory ReTextWindowtSimples e poderoso editor para Markdown e reStructuredText ConfigDialog Using configuration file at: Usando arquivo de configuração em: Behavior Comportamento Automatically save documents Salvar documentos automaticamente Automatically open last documents on startup Abrir últimos documentos automaticamente na inicialização Number of recent documents Número de documentos recentes Restore window geometry Restaurar a geometria da janela Default preview state Estado de previsão padrão Open external links in ReText window Abrir links externos na janela ReText Markdown syntax extensions (comma-separated) Extensões de sintáxe Markdown (separadas por vírgulas) Enable synchronized scrolling for Markdown Ativar rolagem sincronizada para Markdown Editor Editor Highlight current line Destacar linha atual Show line numbers Mostrar números de linhas Line numbers are relative to current line Os números de linha são relativos à linha atual Tab key inserts spaces Tab insere espaços Tabulation width Tamanho da tabulação Draw vertical line at column Desenhar linha vertical na coluna Enable soft wrap Habilitar quebra de linha Show document stats Mostrar estatísticas do documento Ordered list mode Modo de lista ordenada Interface Interface Hide toolbar Ocultar barra de ferramentas Icon theme name Nome do ícone tema Stylesheet file Arquivo de estilos Hide tabs bar when there is only one tab Ocultar barra de abas quando só há uma aba Show full path in window title Mostrar caminho completo no título da janela Show directory tree Mostrar árvore de diretórios Working directory Diretório de trabalho Help Ajuda Live preview Visualização atual Normal preview Visualização normal Disabled Desabilitado Cursor Line Linha de Cursor Wrapped Line Linha Envolvida Increment Incrementar Repeat Repetir DirectorySelectButton Select directory to open Selecionar diretório para abrir EncodingDialog Enter encoding name: Insira o nome da codificação: FileDialogButton (none) (nenhum) FileSelectButton Select file to open Selecione um arquivo para abrir InsertTableDialog Insert table Inserir tabela Number of rows Número de linhas Number of columns Número de colunas LocaleDialog Enter locale name (example: en_US) Forneça o nome da localidade (exemplo: pt_BR) It is possible to specify multiple languages, separated by comma. É possível especificar vários idiomas, separados por vírgula. Set as default Definir como padrão Proxy No write since last change (add ! to override) O arquivo não foi salvo (adicione um '!' para sobrescrever) Information Informação ReTextEdit Add to dictionary Adicionar ao dicionário Save image Salvar imagem Images (*.png *.jpg) Imagens (*.png *.jpg) ReTextTab New document Novo documento Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Não foi possível analisar o conteúdo do arquivo, verifique se você tem o <a href="%s">módulo necessário</a> instalado! Create missing file? Criar arquivo ausente? The file '%s' does not exist. Do you want to create it? O arquivo '%s' não existe. Deseja criá-lo? File could not be created Arquivo não pode ser criado Could not create file '%s': %s Não foi possível criar arquivo '%s': %s ReTextWindow File toolbar Barra de ferramentas Arquivo Edit toolbar Barra de ferramentas Editar Search toolbar Barra de ferramentas Pesquisar New Novo Open Abrir Set encoding Definir codificação Reload Recarregar Save Salvar Save as Salvar como Next tab Próxima aba Previous tab Aba anterior Close tab Fechar aba Print Imprimir Print preview Visualizar impressão View HTML code Visualizar código HTML Change editor font Mudar fonte do editor Change preview font Mudar fonte da visualização Find text Encontrar texto Go to line Ir para a linha Preview Visualizar Live preview Visualização automática Insert table Inserir tabela Table editing mode Modo de edição de tabelas Insert images by file path Inserir imagens por caminho de arquivo FakeVim mode Modo de entrada FakeVim Fullscreen mode Modo tela cheia Preferences Preferências Quit Sair Undo Desfazer Redo Refazer Copy Copiar Cut Recortar Paste Colar Paste image Colar imagem Move line up Mover para cima Move line down Mover para baixo Enable Habilitar Set locale Definir localidade Use WebEngine (Chromium) renderer Utilizar renderizador WebEngine (Chromium)' Show directory Exibir diretório Next Seguinte Previous Anterior Replace Substituir Replace all Substituir todos Close Fechar Get help online Ajuda online What's new O que há de novo About ReText Sobre ReText About Qt Sobre Qt Bold Negrito Italic Itálico Underline Sublinhado Formatting Formatar Symbols Símbolos &File &Arquivo &Edit &Editar &Help A&juda Open recent Abrir recente Export Exportar Spell check Correção ortográfica Default markup Marcação padrão Search Pesquisar Replace with Substituir por Case sensitively Diferenciando maiúsculas e minúsculas New document Novo documento Type the line number Digite o número da linha Please, save the file somewhere. Por favor, salve o arquivo em outra localização. Select one or several files to open Selecione um ou mais arquivos para abrir Supported files Arquivos suportados All files (*) Todos os arquivos (*) Plain text (*.txt) Texto simples (*.txt) %s files Example of final string: Markdown files %s arquivos Save file Salvar arquivo Cannot save to file which is open in another tab! Não é possível salvar no arquivo que está aberto em outra guia! Export document to ODT Exportar documento para ODT OpenDocument text files (*.odt) Arquivos de texto OpenDocument (*.odt) HTML files (*.html *.htm) Arquivos HTML (*.html *.htm) Unrecognized paperSize setting "%s". Ajuste de tamanho do papel não reconhecido "%s". Export document to PDF Exportar documento para PDF PDF files (*.pdf) Arquivos PDF (*.pdf) Print document Imprimir documento Export document Exportar documento Failed to execute the command: Falha ao executar o comando: Alt text Texto alternativo URL URL Link text Texto de link This file has been deleted by other application. Please make sure you save the file before exit. O arquivo foi apagado por outro programa. Certifique-se de salvá-lo antes de sair. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? O documento foi modificado por outro programa. Gostaria de recarregar o arquivo? (isso descartará suas alterações) Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. O salvamento automático foi desabilitado temporariamente para esta aba para prevenir a perda de dados. É possível reabilitar enquanto carregar o arquivo ou salvá-lo manualmente. The document has been modified. Do you want to save your changes? O documento foi modificado. Deseja salvar as alterações? HTML code Código HTML Select one or several images to open Selecione uma ou várias imagens para abrir ReText %s (using PyMarkups %s) ReText %s (usando PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Simples e poderoso editor para Markdown e reStructuredText Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Sintaxe Markdown reStructuredText syntax Sintaxe reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d p | %d a | %d c main Open the files in preview mode Abra os arquivos no modo de visualização Create a new window even if there is an existing one Criar uma nova janela, mesmo que já exista uma janela List of files to open Lista de arquivos para abrir ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_ru.qm0000644000175000017500000004126614575355102017450 0ustar00dmitrydmitry b0NdyRYc'gt%z#Fr,#NDV.g#xml)-D! by% Kv ћrS&1 %#S 4J5m3r5t.Xk 0lFr:;=uW9S')0BM=e{ EG:-d0 E29:u*PkR54ϗ+°'mϡ . 2T()+I*90=J>19 '.+77# ! @# h> j3u la v/ W $ l ȗJ t8 Q   F t c4L 5$I ) ??e"x \2 #;  p! w! : J U G N^p Px v/ Y, +p UY 2(x / I)D ~> </:334E Z% z Ce&IUGKx%:"!ˏ*) O4.i=n2B><0B8G5A:8 >B:@K20BL ?>A;54=85 4>:C<5=BK ?@8 70?CA:5,Automatically open last documents on startup ConfigDialogB2B><0B8G5A:8 A>E@0=OBL 4>:C<5=BKAutomatically save documents ConfigDialog>2545=85Behavior ConfigDialog"!B@>:0 A :C@A>@>< Cursor Line ConfigDialog< 568< >B>1@065=8O ?> C<>;G0=8NDefault preview state ConfigDialogB:;NG5=>Disabled ConfigDialogJ 8A>20BL 25@B8:0;L=CN ;8=8N 2 AB>;1F5Draw vertical line at column ConfigDialog 540:B>@Editor ConfigDialog"5@5=>A8BL AB@>:8Enable soft wrap ConfigDialogT:;NG8BL A8=E@>==CN ?@>:@CB:C 4;O Markdown*Enable synchronized scrolling for Markdown ConfigDialog!?@02:0Help ConfigDialog\!:@KBL ?0=5;L 2:;04>:, 5A;8 2:;04:0 2A53> >4=0(Hide tabs bar when there is only one tab ConfigDialog4!:@KBL ?0=5;L 8=AB@C<5=B>2 Hide toolbar ConfigDialog6>4A25G820BL B5:CICN AB@>:CHighlight current line ConfigDialog"5<0 7=0G:>2Icon theme name ConfigDialog#25;8G8BL Increment ConfigDialog=5H=89 284 Interface ConfigDialogR0G8=0BL =C<5@0F8N AB@>: A B5:CI59 AB@>:8)Line numbers are relative to current line ConfigDialog82>9 ?@>A<>B@ Live preview ConfigDialogj 0AH8@5=8O A8=B0:A8A0 Markdown (@0745;Q==K5 70?OBK<8),Markdown syntax extensions (comma-separated) ConfigDialog 1KG=K9 ?@>A<>B@Normal preview ConfigDialog4'8A;> ?>A;54=8E 4>:C<5=B>2Number of recent documents ConfigDialogLB:@K20BL 2=5H=85 AAK;:8 2 >:=5 ReText$Open external links in ReText window ConfigDialog< 568< 4;O =C<5@>20==KE A?8A:>2Ordered list mode ConfigDialog>2B>@8BLRepeat ConfigDialog0!>E@0=OBL 35><5B@8N >:=0Restore window geometry ConfigDialog0>:070BL AB@C:BC@C ?0?:8Show directory tree ConfigDialog>B>1@060BL AB0B8AB8:C 4>:C<5=B0Show document stats ConfigDialogN>:07K20BL ?>;=K9 ?CBL 2 703>;>2:5 >:=0Show full path in window title ConfigDialog.>:07K20BL =><5@0 AB@>:Show line numbers ConfigDialog$09; AB8;O QtStylesheet file ConfigDialog*Tab 2AB02;O5B ?@>15;KTab key inserts spaces ConfigDialog (8@8=0 B01C;OF88Tabulation width ConfigDialog@A?>;L7CNBAO =0AB@>9:8 87 D09;0:Using configuration file at: ConfigDialog 01>G0O ?0?:0Working directory ConfigDialog4>;=0O AB@>:0 A ?5@5=>A0<8 Wrapped Line ConfigDialog6K15@8B5 ?0?:C 4;O >B:@KB8OSelect directory to openDirectorySelectButton62548B5 =0720=85 :>48@>2:8:Enter encoding name:EncodingDialog(=5 2K1@0=>)(none)FileDialogButton4K15@8B5 D09; 4;O >B:@KB8OSelect file to openFileSelectButton AB028BL B01;8FC Insert tableInsertTableDialog'8A;> AB>;1F>2Number of columnsInsertTableDialog'8A;> AB@>:Number of rowsInsertTableDialogH2548B5 :>4 ;>:0;8 (=0?@8<5@: en_US)"Enter locale name (example: en_US) LocaleDialogh>6=> C:070BL =5A:>;L:> O7K:>2, @0745;Q==KE 70?OB>9.AIt is possible to specify multiple languages, separated by comma. LocaleDialog.#AB0=>28BL ?> C<>;G0=8NSet as default LocaleDialog=D>@<0F8O InformationProxyvABL =5A>E@0=Q==K5 87<5=5=8O (4>102LB5 ! 4;O 83=>@8@>20=8O).No write since last change (add ! to override)Proxy$>1028BL 2 A;>20@LAdd to dictionary ReTextEdit27>1@065=8O (*.png *.jpg)Images (*.png *.jpg) ReTextEdit*!>E@0=8BL 87>1@065=85 Save image ReTextEdit@5 C40;>AL A>740BL D09; %s: %sCould not create file '%s': %s ReTextTab5 C40;>AL >1@01>B0BL A>45@68<>5 D09;0, C1548B5AL, GB> CAB0=>2;5= <a href="%s">=5>1E>48<K9 <>4C;L</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTab2!>740BL =54>AB0NI89 D09;?Create missing file? ReTextTab.5 C40;>AL A>740BL D09;File could not be created ReTextTab>2K9 4>:C<5=B New document ReTextTabb$09;0 %s =5 ACI5AB2C5B. K E>B8B5 A>740BL 53>?8The file '%s' does not exist. Do you want to create it? ReTextTab$09;K %s%s files ReTextWindow&@02:0&Edit ReTextWindow &$09;&File ReTextWindow&!?@02:0&Help ReTextWindow QtAbout Qt ReTextWindow ReText About ReText ReTextWindowA5 D09;K (*) All files (*) ReTextWindow(;LB5@=0B82=K9 B5:ABAlt text ReTextWindow82B>@: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowP2B><0B8G5A:>5 A>E@0=5=85 1K;> >B:;NG5=> 4;O MB>9 2:;04:8 2> 871560=85 ?>B5@8 40==KE. => 1C45B 2:;NG5=> A=>20, 5A;8 2K 703@C78B5 D09; 70=>2> 8;8 A>E@0=8B5 53> 2@CG=CN.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindow>;C68@=K9Bold ReTextWindowz52>7<>6=> A>E@0=8BL 2 D09;, :>B>@K9 >B:@KB 2 4@C3>9 2:;04:5!1Cannot save to file which is open in another tab! ReTextWindow"#G8BK20BL @538AB@Case sensitively ReTextWindow07<5=8BL H@8DB @540:B>@0Change editor font ReTextWindow07<5=8BL H@8DB ?@>A<>B@0Change preview font ReTextWindow0:@KBLClose ReTextWindow0:@KBL 2:;04:C Close tab ReTextWindow>?8@>20BLCopy ReTextWindowK@570BLCut ReTextWindow4/7K: @07<5B:8 ?> C<>;G0=8NDefault markup ReTextWindow*0=5;L @540:B8@>20=8O Edit toolbar ReTextWindow:;NG8BLEnable ReTextWindow-:A?>@BExport ReTextWindow.-:A?>@B8@>20BL 4>:C<5=BExport document ReTextWindow>-:A?>@B8@>20BL 4>:C<5=B :0: ODTExport document to ODT ReTextWindow>-:A?>@B8@>20BL 4>:C<5=B :0: PDFExport document to PDF ReTextWindow:52>7<>6=> 70?CAB8BL :><0=4C:Failed to execute the command: ReTextWindow 568< FakeVim FakeVim mode ReTextWindow0=5;L D09;0 File toolbar ReTextWindow>8A: B5:AB0 Find text ReTextWindow$>@<0B8@>20=85 Formatting ReTextWindow&>;=>M:@0==K9 @568<Fullscreen mode ReTextWindow6>;CG8BL ?><>IL 2 8=B5@=5B5Get help online ReTextWindow 5@59B8 : AB@>:5 Go to line ReTextWindow:>4 HTML HTML code ReTextWindow2$09;K HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindow<AB028BL 87>1@065=8O 87 D09;>2Insert images by file path ReTextWindow AB028BL B01;8FC Insert table ReTextWindow C@A82Italic ReTextWindow"5:AB AAK;:8 Link text ReTextWindow82>9 ?@>A<>B@ Live preview ReTextWindow$!8=B0:A8A MarkdownMarkdown syntax ReTextWindow.5@5<5AB8BL AB@>:C 2=87Move line down ReTextWindow05@5<5AB8BL AB@>:C 225@E Move line up ReTextWindow >2K9New ReTextWindow>2K9 4>:C<5=B New document ReTextWindow!;54CNI55Next ReTextWindow"!;54CNI0O 2:;04:0Next tab ReTextWindowB:@KBLOpen ReTextWindow"B:@KBL ?>A;54=85 Open recent ReTextWindowB$09;K B5:AB0 OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow"$09;K PDF (*.pdf)PDF files (*.pdf) ReTextWindowAB028BLPaste ReTextWindow(AB028BL 87>1@065=85 Paste image ReTextWindow*@>AB>9 B5:AB (*.txt)Plain text (*.txt) ReTextWindow.!=0G0;0 A>E@0=8B5 D09;. Please, save the file somewhere. ReTextWindow0AB@>9:8 Preferences ReTextWindow@>A<>B@Preview ReTextWindow@54K4CI55Previous ReTextWindow$@54K4CI0O 2:;04:0 Previous tab ReTextWindow 0A?5G0B0BLPrint ReTextWindow( 0A?5G0B0BL 4>:C<5=BPrint document ReTextWindow&@54?@>A<>B@ ?5G0B8 Print preview ReTextWindow KE>4Quit ReTextWindowFReText %s (8A?>;L7C5B PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow$>2B>@8BL 459AB285Redo ReTextWindow 03@C78BL 70=>2>Reload ReTextWindow0<5=8BLReplace ReTextWindow0<5=8BL 2A5 Replace all ReTextWindow0<5=8BL =0 Replace with ReTextWindow!>E@0=8BLSave ReTextWindow!>E@0=8BL :0:Save as ReTextWindow!>E@0=8BL D09; Save file ReTextWindow >8A:Search ReTextWindow0=5;L ?>8A:0Search toolbar ReTextWindow^K15@8B5 >48= 8;8 =5A:>;L:> D09;>2 4;O >B:@KB8O#Select one or several files to open ReTextWindowfK15@8B5 >4=> 8;8 =5A:>;L:> 87>1@065=89 4;O 2AB02:8$Select one or several images to open ReTextWindow(#AB0=>28BL :>48@>2:C Set encoding ReTextWindow"#AB0=>28BL ;>:0;L Set locale ReTextWindowB:@KBL ?0?:CShow directory ReTextWindowv@>AB>9, => <>I=K9 @540:B>@ 4;O Markdown 8 reStructuredText25@:0 >@D>3@0D88 Spell check ReTextWindow(>445@68205<K5 D09;KSupported files ReTextWindow!8<2>;KSymbols ReTextWindow6 568< @540:B8@>20=8O B01;8FTable editing mode ReTextWindowT>:C<5=B 1K; 87<5=Q=. !>E@0=8BL 87<5=5=8O?AThe document has been modified. Do you want to save your changes? ReTextWindow-B>B 4>:C<5=B 1K; 87<5=Q= 4@C38< ?@8;>65=85<. %>B8B5 ;8 2K 703@C78BL D09; 70=>2> (MB> >B<5=8B 2A5 20H8 87<5=5=8O)? {This document has been modified by other application. Do you want to reload the file (this will discard all your changes)?  ReTextWindow-B>B D09; 1K; C40;Q= 4@C38< ?@8;>65=85<. >60;C9AB0, C1548B5AL ?5@54 2KE>4><, GB> 2K A>E@0=8;8 D09;.`This file has been deleted by other application. Please make sure you save the file before exit. ReTextWindow(2548B5 =><5@ AB@>:8Type the line number ReTextWindowURLURL ReTextWindow>4GQ@:820=85 Underline ReTextWindow"B<5=8BL 459AB285Undo ReTextWindowV525@=>5 7=0G5=85 ?0@0<5B@0 paperSize: %s$Unrecognized paperSize setting "%s". ReTextWindowPA?>;L7>20BL 4286>: WebEngine (Chromium)!Use WebEngine (Chromium) renderer ReTextWindow$@>A<>B@ :>40 HTMLView HTML code ReTextWindow'B> =>2>3> What's new ReTextWindow4!8=B0:A8A reStructuredTextreStructuredText syntax ReTextWindow$%d w | %d a | %d c%d w | %d a | %d c TextInfoArea^!>740BL =>2>5 >:=>, 4065 5A;8 5ABL ACI5AB2CNI554Create a new window even if there is an existing onemain<5@5G8A;8B5 D09;K 4;O >B:@KB8OList of files to openmainDB:@K20BL D09;K 2 @568<5 ?@>A<>B@0Open the files in preview modemain ) , ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/ReText/locale/retext_ru.ts0000644000175000017500000010174714575355070017466 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Используются настройки из файла: Behavior Поведение Automatically save documents Автоматически сохранять документы Automatically open last documents on startup Автоматически открывать последние документы при запуске Number of recent documents Число последних документов Restore window geometry Сохранять геометрию окна Default preview state Режим отображения по умолчанию Open external links in ReText window Открывать внешние ссылки в окне ReText Markdown syntax extensions (comma-separated) Расширения синтаксиса Markdown (разделённые запятыми) Enable synchronized scrolling for Markdown Включить синхронную прокрутку для Markdown Editor Редактор Highlight current line Подсвечивать текущую строку Show line numbers Показывать номера строк Line numbers are relative to current line Начинать нумерацию строк с текущей строки Tab key inserts spaces Tab вставляет пробелы Tabulation width Ширина табуляции Draw vertical line at column Рисовать вертикальную линию в столбце Enable soft wrap Переносить строки Show document stats Отображать статистику документа Ordered list mode Режим для нумерованных списков Interface Внешний вид Hide toolbar Скрыть панель инструментов Icon theme name Тема значков Stylesheet file Файл стиля Qt Hide tabs bar when there is only one tab Скрыть панель вкладок, если вкладка всего одна Show full path in window title Показывать полный путь в заголовке окна Show directory tree Показать структуру папки Working directory Рабочая папка Help Справка Live preview Живой просмотр Normal preview Обычный просмотр Disabled Отключено Cursor Line Строка с курсором Wrapped Line Полная строка с переносами Increment Увеличить Repeat Повторить DirectorySelectButton Select directory to open Выберите папку для открытия EncodingDialog Enter encoding name: Введите название кодировки: FileDialogButton (none) (не выбрано) FileSelectButton Select file to open Выберите файл для открытия InsertTableDialog Insert table Вставить таблицу Number of rows Число строк Number of columns Число столбцов LocaleDialog Enter locale name (example: en_US) Введите код локали (например: en_US) It is possible to specify multiple languages, separated by comma. Можно указать несколько языков, разделённых запятой. Set as default Установить по умолчанию Proxy No write since last change (add ! to override) Есть несохранённые изменения (добавьте ! для игнорирования) Information Информация ReTextEdit Add to dictionary Добавить в словарь Save image Сохранить изображение Images (*.png *.jpg) Изображения (*.png *.jpg) ReTextTab New document Новый документ Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Не удалось обработать содержимое файла, убедитесь, что установлен <a href="%s">необходимый модуль</a>! Create missing file? Создать недостающий файл? The file '%s' does not exist. Do you want to create it? Файла «%s» не существует. Вы хотите создать его? File could not be created Не удалось создать файл Could not create file '%s': %s Не удалось создать файл «%s»: %s ReTextWindow File toolbar Панель файла Edit toolbar Панель редактирования Search toolbar Панель поиска New Новый Open Открыть Set encoding Установить кодировку Reload Загрузить заново Save Сохранить Save as Сохранить как Next tab Следующая вкладка Previous tab Предыдущая вкладка Close tab Закрыть вкладку Print Распечатать Print preview Предпросмотр печати View HTML code Просмотр кода HTML Change editor font Изменить шрифт редактора Change preview font Изменить шрифт просмотра Find text Поиск текста Go to line Перейти к строке Preview Просмотр Live preview Живой просмотр Insert table Вставить таблицу Table editing mode Режим редактирования таблиц Insert images by file path Вставить изображения из файлов FakeVim mode Режим FakeVim Fullscreen mode Полноэкранный режим Preferences Настройки Quit Выход Undo Отменить действие Redo Повторить действие Copy Копировать Cut Вырезать Paste Вставить Paste image Вставить изображение Move line up Переместить строку вверх Move line down Переместить строку вниз Enable Включить Set locale Установить локаль Use WebEngine (Chromium) renderer Использовать движок WebEngine (Chromium) Show directory Открыть папку Next Следующее Previous Предыдущее Replace Заменить Replace all Заменить все Close Закрыть Get help online Получить помощь в интернете What's new Что нового About ReText О ReText About Qt О Qt Bold Полужирный Italic Курсив Underline Подчёркивание Formatting Форматирование Symbols Символы &File &Файл &Edit &Правка &Help &Справка Open recent Открыть последние Export Экспорт Spell check Проверка орфографии Default markup Язык разметки по умолчанию Search Поиск Replace with Заменить на Case sensitively Учитывать регистр New document Новый документ Type the line number Введите номер строки Please, save the file somewhere. Сначала сохраните файл. Select one or several files to open Выберите один или несколько файлов для открытия Supported files Поддерживаемые файлы All files (*) Все файлы (*) Plain text (*.txt) Простой текст (*.txt) %s files Example of final string: Markdown files Файлы %s Save file Сохранить файл Cannot save to file which is open in another tab! Невозможно сохранить в файл, который открыт в другой вкладке! Export document to ODT Экспортировать документ как ODT OpenDocument text files (*.odt) Файлы текста OpenDocument (*.odt) HTML files (*.html *.htm) Файлы HTML (*.html *.htm) Unrecognized paperSize setting "%s". Неверное значение параметра paperSize: «%s» Export document to PDF Экспортировать документ как PDF PDF files (*.pdf) Файлы PDF (*.pdf) Print document Распечатать документ Export document Экспортировать документ Failed to execute the command: Невозможно запустить команду: Alt text Альтернативный текст URL URL Link text Текст ссылки This file has been deleted by other application. Please make sure you save the file before exit. Этот файл был удалён другим приложением. Пожалуйста, убедитесь перед выходом, что вы сохранили файл. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Этот документ был изменён другим приложением. Хотите ли вы загрузить файл заново (это отменит все ваши изменения)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. Автоматическое сохранение было отключено для этой вкладки во избежание потери данных. Оно будет включено снова, если вы загрузите файл заново или сохраните его вручную. The document has been modified. Do you want to save your changes? Документ был изменён. Сохранить изменения? HTML code код HTML Select one or several images to open Выберите одно или несколько изображений для вставки ReText %s (using PyMarkups %s) ReText %s (использует PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Простой, но мощный редактор для Markdown и reStructuredText Author: Dmitry Shachnev, 2011 Автор: Dmitry Shachnev, 2011 Markdown syntax Синтаксис Markdown reStructuredText syntax Синтаксис reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d w | %d a | %d c main Open the files in preview mode Открывать файлы в режиме просмотра Create a new window even if there is an existing one Создать новое окно, даже если есть существующее List of files to open Перечислите файлы для открытия ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_sk.qm0000644000175000017500000003023114575355102017425 0ustar00dmitrydmitryb$dy Yc'<gt z{r!6g=x p by%vR #S Nm:r5t"k/$g,#+p %W9 '0B -d0 E&:u[kX5)ϗ °ϡ #1 &T)+I9%>% '" @ h> n j3 la v# W 0 $4 ln ȗ t* Q f F  c( 5n ) ??e \'K  pH w * J U v$% Y!   U 2 #{ IM +/+3(&z eUGKxaˏ\*) ~ O)[.)i,:fPri spusten automaticky otvorie posledn dokumenty,Automatically open last documents on startup ConfigDialog:Automaticky ukladae dokumentyAutomatically save documents ConfigDialogSprvanieBehavior ConfigDialog"Predvolen nh>adDefault preview state ConfigDialogVypnutDisabled ConfigDialog EditorEditor ConfigDialogPomocnkHelp ConfigDialog*Skrye panel nstrojov Hide toolbar ConfigDialog2Zvraznie aktulny riadokHighlight current line ConfigDialog"Nzov motvu ikonIcon theme name ConfigDialogPrrastok Increment ConfigDialogRozhranie Interface ConfigDialogX slovanie riadkov za ne na aktulnom riadku)Line numbers are relative to current line ConfigDialog Priebe~n nh>ad Live preview ConfigDialog\Rozarenia syntaxe markdown ( iarkou oddelen),Markdown syntax extensions (comma-separated) ConfigDialogNormlny nh>adNormal preview ConfigDialog6Po et poslednch dokumentovNumber of recent documents ConfigDialogLOtvrae extern odkazy v okne ReText-u$Open external links in ReText window ConfigDialog0Re~im zoradenho zoznamuOrdered list mode ConfigDialogOpakovaeRepeat ConfigDialog0Obnovie umiestnenie oknaRestore window geometry ConfigDialog2Zobrazie adresrov stromShow directory tree ConfigDialog:Zobrazie atatistiku dokumentuShow document stats ConfigDialog,Zobrazie  sla riadkovShow line numbers ConfigDialogSbor so atlomStylesheet file ConfigDialog2Klves Tab vklad medzeryTab key inserts spaces ConfigDialog*Sbor s nastaveniami:Using configuration file at: ConfigDialog Pracovn adresrWorking directory ConfigDialog8Vyberte adresr na otvorenieSelect directory to openDirectorySelectButton(~iadny)(none)FileDialogButton4Vyberte sbor na otvorenieSelect file to openFileSelectButtonVlo~ie tabu>ku Insert tableInsertTableDialogPo et st:pcovNumber of columnsInsertTableDialogPo et riadkovNumber of rowsInsertTableDialogPZadajte nzov lokalizcie (napr.: sk_SK)"Enter locale name (example: en_US) LocaleDialog.Nastavie ako predvolenSet as default LocaleDialogInformcie InformationProxy$Pridae do slovnkuAdd to dictionary ReTextEdit*Obrzky (*.png *.jpg)Images (*.png *.jpg) ReTextEditUlo~ie obrzok Save image ReTextEditJNepodarilo sa vytvorie sbor '%s': %sCould not create file '%s': %s ReTextTab2Vytvorie chbajci sbor?Create missing file? ReTextTab8Sbor sa nepodarilo vytvorieFile could not be created ReTextTabNov dokument New document ReTextTabSbory %s%s files ReTextWindow&Upravie&Edit ReTextWindow &Sbor&File ReTextWindow&Pomocnk&Help ReTextWindowO QtAbout Qt ReTextWindow"O programe ReText About ReText ReTextWindow"Vaetky sbory (*) All files (*) ReTextWindowAlt textAlt text ReTextWindow8Autor: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindow Tu nBold ReTextWindow8Rozliaovanie ve>kosti psmenCase sensitively ReTextWindow(Zmenie psmo editoraChange editor font ReTextWindow(Zmenie psmo nh>aduChange preview font ReTextWindowZavrieeClose ReTextWindowZavriee kartu Close tab ReTextWindowKoprovaeCopy ReTextWindowVystrihneCut ReTextWindow0Predvolen markup syntaxDefault markup ReTextWindow4Panel nstrojov pre pravy Edit toolbar ReTextWindowPovolieEnable ReTextWindow ExportExport ReTextWindow&Exportovae dokumentExport document ReTextWindow4Exportovae dokument do ODTExport document to ODT ReTextWindow4Exportovae dokument do PDFExport document to PDF ReTextWindow:Nepodarilo sa spustie prkaz:Failed to execute the command: ReTextWindowRe~im FakeVim FakeVim mode ReTextWindow2Panel nstrojov pre sbor File toolbar ReTextWindowNjse text Find text ReTextWindowFormtovanie Formatting ReTextWindow*Celoobrazovkov re~imFullscreen mode ReTextWindow&Zskae online pomocGet help online ReTextWindow Prejse na riadok Go to line ReTextWindowHTML kd HTML code ReTextWindow4HTML sbory (*.html *.htm)HTML files (*.html *.htm) ReTextWindow8Vlo~ie obrzky zadanm cestyInsert images by file path ReTextWindowVlo~ie tabu>ku Insert table ReTextWindowKurzvaItalic ReTextWindowText odkazu Link text ReTextWindow Priebe~n nh>ad Live preview ReTextWindowSyntax MarkdownMarkdown syntax ReTextWindow,Presune riadok ni~aieMove line down ReTextWindow,Presune riadok vyaaie Move line up ReTextWindowNovNew ReTextWindowNov dokument New document ReTextWindowNasledujciNext ReTextWindowalaia kartaNext tab ReTextWindowOtvorieOpen ReTextWindowOtvorie nedvne Open recent ReTextWindowFOpenDocument textov sbory (*.odt)OpenDocument text files (*.odt) ReTextWindow$PDF sbory (*.pdf)PDF files (*.pdf) ReTextWindow Vlo~iePaste ReTextWindow Prilepie obrzok Paste image ReTextWindow.Jednoduch text (*.txt)Plain text (*.txt) ReTextWindow6Ulo~te prosm niekam sbor. Please, save the file somewhere. ReTextWindowPredvo>by Preferences ReTextWindow Nh>adPreview ReTextWindowPredchdzajciPrevious ReTextWindow(Predchdzajca karta Previous tab ReTextWindow Tla iePrint ReTextWindowTla ie dokumentPrint document ReTextWindow$Uk~ka pred tla ou Print preview ReTextWindowQuitQuit ReTextWindow ZnovaRedo ReTextWindowZnovu na taeReload ReTextWindowNahradieReplace ReTextWindowNahradie vaetko Replace all ReTextWindowNahradie Replace with ReTextWindow Ulo~ieSave ReTextWindowUlo~ie akoSave as ReTextWindowUlo~ie sbor Save file ReTextWindowVyh>advanieSearch ReTextWindow@Panel nstrojov pre vyh>advanieSearch toolbar ReTextWindowZVyberte jeden alebo viac sborov na otvorenie#Select one or several files to open ReTextWindow\Vyberte jeden alebo viac obrzkov na otvorenie$Select one or several images to open ReTextWindow$Nastavie kdovanie Set encoding ReTextWindow(Nastavie lokalizciu Set locale ReTextWindow$Zobrazie prie inokShow directory ReTextWindow~Jednoduch, no efektvny editor pre Markdown a ReStructuredTextkyTable editing mode ReTextWindow^Dokument bol zmenen. Chcete ulo~ie vaae zmeny?AThe document has been modified. Do you want to save your changes? ReTextWindow(Zadajte  slo riadkaType the line number ReTextWindowURL adresaURL ReTextWindowPod iarknut Underline ReTextWindowSpeUndo ReTextWindow"Zobrazie HTML kdView HTML code ReTextWindow.Syntax reStructuredTextreStructuredText syntax ReTextWindow6Zoznam sborov na otvorenieList of files to openmain././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/ReText/locale/retext_sk.ts0000644000175000017500000007216414575355070017455 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Súbor s nastaveniami: Behavior Správanie Automatically save documents Automaticky ukladať dokumenty Automatically open last documents on startup Pri spustení automaticky otvoriť posledné dokumenty Number of recent documents Počet posledných dokumentov Restore window geometry Obnoviť umiestnenie okna Default preview state Predvolený náhľad Open external links in ReText window Otvárať externé odkazy v okne ReText-u Markdown syntax extensions (comma-separated) Rozšírenia syntaxe markdown (čiarkou oddelené) Enable synchronized scrolling for Markdown Editor Editor Highlight current line Zvýrazniť aktuálny riadok Show line numbers Zobraziť čísla riadkov Line numbers are relative to current line Číslovanie riadkov začne na aktuálnom riadku Tab key inserts spaces Kláves Tab vkladá medzery Tabulation width Draw vertical line at column Enable soft wrap Show document stats Zobraziť štatistiku dokumentu Ordered list mode Režim zoradeného zoznamu Interface Rozhranie Hide toolbar Skryť panel nástrojov Icon theme name Názov motívu ikon Stylesheet file Súbor so štýlom Hide tabs bar when there is only one tab Show full path in window title Show directory tree Zobraziť adresárový strom Working directory Pracovný adresár Help Pomocník Live preview Priebežný náhľad Normal preview Normálny náhľad Disabled Vypnuté Cursor Line Wrapped Line Increment Prírastok Repeat Opakovať DirectorySelectButton Select directory to open Vyberte adresár na otvorenie EncodingDialog Enter encoding name: FileDialogButton (none) (žiadny) FileSelectButton Select file to open Vyberte súbor na otvorenie InsertTableDialog Insert table Vložiť tabuľku Number of rows Počet riadkov Number of columns Počet stĺpcov LocaleDialog Enter locale name (example: en_US) Zadajte názov lokalizácie (napr.: sk_SK) It is possible to specify multiple languages, separated by comma. Set as default Nastaviť ako predvolené Proxy No write since last change (add ! to override) Information Informácie ReTextEdit Add to dictionary Pridať do slovníku Save image Uložiť obrázok Images (*.png *.jpg) Obrázky (*.png *.jpg) ReTextTab New document Nový dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Create missing file? Vytvoriť chýbajúci súbor? The file '%s' does not exist. Do you want to create it? File could not be created Súbor sa nepodarilo vytvoriť Could not create file '%s': %s Nepodarilo sa vytvoriť súbor '%s': %s ReTextWindow File toolbar Panel nástrojov pre súbor Edit toolbar Panel nástrojov pre úpravy Search toolbar Panel nástrojov pre vyhľadávanie New Nový Open Otvoriť Set encoding Nastaviť kódovanie Reload Znovu načítať Save Uložiť Save as Uložiť ako Next tab Ďalšia karta Previous tab Predchádzajúca karta Close tab Zavrieť kartu Print Tlačiť Print preview Ukážka pred tlačou View HTML code Zobraziť HTML kód Change editor font Zmeniť písmo editora Change preview font Zmeniť písmo náhľadu Find text Nájsť text Go to line Prejsť na riadok Preview Náhľad Live preview Priebežný náhľad Insert table Vložiť tabuľku Table editing mode Režim úpravy tabuľky Insert images by file path Vložiť obrázky zadaním cesty FakeVim mode Režim FakeVim Fullscreen mode Celoobrazovkový režim Preferences Predvoľby Quit Quit Undo Späť Redo Znova Copy Kopírovať Cut Vystrihnúť Paste Vložiť Paste image Prilepiť obrázok Move line up Presunúť riadok vyššie Move line down Presunúť riadok nižšie Enable Povoliť Set locale Nastaviť lokalizáciu Use WebEngine (Chromium) renderer Show directory Zobraziť priečinok Next Nasledujúci Previous Predchádzajúci Replace Nahradiť Replace all Nahradiť všetko Close Zavrieť Get help online Získať online pomoc What's new About ReText O programe ReText About Qt O Qt Bold Tučné Italic Kurzíva Underline Podčiarknuté Formatting Formátovanie Symbols Symboly &File &Súbor &Edit &Upraviť &Help &Pomocník Open recent Otvoriť nedávne Export Export Spell check Kontrola pravopisu Default markup Predvolená markup syntax Search Vyhľadávanie Replace with Nahradiť Case sensitively Rozlišovanie veľkosti písmen New document Nový dokument Type the line number Zadajte číslo riadka Please, save the file somewhere. Uložte prosím niekam súbor. Select one or several files to open Vyberte jeden alebo viac súborov na otvorenie Supported files Podporované súbory All files (*) Všetky súbory (*) Plain text (*.txt) Jednoduchý text (*.txt) %s files Example of final string: Markdown files Súbory %s Save file Uložiť súbor Cannot save to file which is open in another tab! Export document to ODT Exportovať dokument do ODT OpenDocument text files (*.odt) OpenDocument textové súbory (*.odt) HTML files (*.html *.htm) HTML súbory (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Exportovať dokument do PDF PDF files (*.pdf) PDF súbory (*.pdf) Print document Tlačiť dokument Export document Exportovať dokument Failed to execute the command: Nepodarilo sa spustiť príkaz: Alt text Alt text URL URL adresa Link text Text odkazu This file has been deleted by other application. Please make sure you save the file before exit. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Dokument bol zmenený. Chcete uložiť vaše zmeny? HTML code HTML kód Select one or several images to open Vyberte jeden alebo viac obrázkov na otvorenie ReText %s (using PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Jednoduchý, no efektívny editor pre Markdown a ReStructuredText Author: Dmitry Shachnev, 2011 Autor: Dmitry Shachnev, 2011 Markdown syntax Syntax Markdown reStructuredText syntax Syntax reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open Zoznam súborov na otvorenie ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_sr.qm0000644000175000017500000002741414575355102017445 0ustar00dmitrydmitryTb!dy Yc'gtizMrDVgl)DD!s bLy%v+ #S4J&mr\5t!Fr)* W9 ;' a0 E#k 5%iϗϡ o #_T&)++I9")' ;7(  C @ h> j3 la v!! W $ ȗ t)O Q ~ F  c%3 ) ??es \# p> w " J U N^ Px [ v!_ Yz F U 2 In ~>/*J3$eI Uˏ*)  O%.1i+`0 ?>G5B:C, 0CB><0BA:8 >B2>@8 ?>A;54Z5 4>:C<5=B5,Automatically open last documents on startup ConfigDialog8CB><0BA:8 A0GC20X 4>:C<5=B5Automatically save documents ConfigDialog>=0H0Z5Behavior ConfigDialog8>4@07C<520=> AB0Z5 ?@53;540Default preview state ConfigDialogFAF@B0X 25@B8:0;=C ;8=8XC =0 :>;>=8Draw vertical line at column ConfigDialog#@5R820GEditor ConfigDialog$#:YCG8 <5:8 ?@5;><Enable soft wrap ConfigDialogR#:YCG8 A8=E@>=87>20=> :;870Z5 70 0@:40C=*Enable synchronized scrolling for Markdown ConfigDialog ><>[Help ConfigDialog&!0:@8X B@0:C 0;0B:8 Hide toolbar ConfigDialog.AB0:=8 B@5=CB=C ;8=8XCHighlight current line ConfigDialog 0782 B5<5 8:>=0Icon theme name ConfigDialog !CG5Y5 Interface ConfigDialog`@>X528 ;8=8X0 AC @5;0B82=8 C >4=>AC =0 B@5=CB=C)Line numbers are relative to current line ConfigDialog "@5=CB=8 ?@53;54 Live preview ConfigDialog\0@:40C= ?@>H8@5Z0 A8=B0:A5 (>42>X5=> 70?5B><),Markdown syntax extensions (comma-separated) ConfigDialog2@>X A:>@0HZ8E 4>:C<5=0B0Number of recent documents ConfigDialogJB20@0X A?>Y=5 2575 C  5"5:AB ?@>7>@C$Open external links in ReText window ConfigDialog2#?0<B8 35><5B@8XC ?@>7>@0Restore window geometry ConfigDialog8@8:068 AB0B8AB8:C 4>:C<5=B0Show document stats ConfigDialog,@8:068 1@>X525 ;8=8X0Show line numbers ConfigDialog$0X; @0A?>@540Stylesheet file ConfigDialog&"01 C10FCX5 @07<0:5Tab key inserts spaces ConfigDialog"(8@8=0 B01C;0F8X5Tabulation width ConfigDialog(=8HB0)(none)FileDialogButton7015@8B5 D0X;Select file to openFileSelectButton@>X :>;>=0Number of columnsInsertTableDialog@>X @54>20Number of rowsInsertTableDialogL#=5A8B5 >7=0:C ;>:0;8B5B0 (=?@. sr_RS)"Enter locale name (example: en_US) LocaleDialog2>AB028 :0> ?>4@07C<520=>Set as default LocaleDialog >40F8 InformationProxyl5<0 C?8A0 >4 ?>A;54Z5 87<5=5 (4>40XB5 ! 40 ?@53078B5).No write since last change (add ! to override)Proxy&!;8:5 (*.png *.jpg)Images (*.png *.jpg) ReTextEdit!0GC20X A;8:C Save image ReTextEdit5 <>3C 40 @0HG;0=8< A04@60X D0X;0. @>25@8B5 8<0B5 ;8 8=AB0;8@0= <a href="%s">=5>?E>4a= <>4C;</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTab>28 4>:C<5=B New document ReTextTab%s D0X;>28%s files ReTextWindow&#@5R820Z5&Edit ReTextWindow &$0X;&File ReTextWindow &><>[&Help ReTextWindow C"-CAbout Qt ReTextWindow  5"5:ABC About ReText ReTextWindow!28 D0X;>28 (*) All files (*) ReTextWindow;B B5:ABAlt text ReTextWindowZCB>@: <8B@8X (0G=52 (Dmitry Shachnev), 2011Author: Dmitry Shachnev, 2011 ReTextWindow>451Y0=>Bold ReTextWindowf5 <>3C 40 A0GC20< X5@ X5 >B2>@5= C 4@C3>< X578G:C!1Cannot save to file which is open in another tab! ReTextWindow*A5BY82 =0 25;. A;>20Case sensitively ReTextWindow*7<5=8 D>=B C@5R820G0Change editor font ReTextWindow(7<5=8 D>=B ?@53;540Change preview font ReTextWindow0B2>@8Close ReTextWindow>?8@0XCopy ReTextWindow A5F8Cut ReTextWindow.>4@07C<520=0 <0@:0F8X0Default markup ReTextWindow,;0B=0 B@0:0 C@5R820Z0 Edit toolbar ReTextWindow #:YCG8Enable ReTextWindow 72578Export ReTextWindow72578 4>:C<5=BExport document ReTextWindow*72578 4>:C<5=B C "Export document to ODT ReTextWindow*72578 4>:C<5=B C $Export document to PDF ReTextWindow45CA?5;> 872@H5Z5 :><0=45:Failed to execute the command: ReTextWindow06=8 8< @568< FakeVim mode ReTextWindow$;0B=0 B@0:0 D0X;0 File toolbar ReTextWindow0R8 B5:AB Find text ReTextWindow$>@<0B8@0Z5 Formatting ReTextWindow$ 568< ?C=>3 5:@0=0Fullscreen mode ReTextWindow8>B@068B5 ?><>[ =0 8=B5@=5BCGet help online ReTextWindow%" :>4 HTML code ReTextWindow6%" D0X;>28 (*.html *.htm)HTML files (*.html *.htm) ReTextWindowC@782=>Italic ReTextWindow"5:AB 2575 Link text ReTextWindow "@5=CB=8 ?@53;54 Live preview ReTextWindow"0@:40C= A8=B0:A0Markdown syntax ReTextWindow>2>New ReTextWindow>28 4>:C<5=B New document ReTextWindow!;545[5Next ReTextWindow!;545[8 X578G0:Next tab ReTextWindow B2>@8Open ReTextWindowB2>@8 =5402=5 Open recent ReTextWindowH?5=>:C<5=B B5:ABC0;=8 D0X; (*.odt)OpenDocument text files (*.odt) ReTextWindow&$ D0X;>28 (*.pdf)PDF files (*.pdf) ReTextWindow 0;5?8Paste ReTextWindow(18G0= B5:AB (*.txt)Plain text (*.txt) ReTextWindow*!0GC20XB5 D0X; =5345. Please, save the file somewhere. ReTextWindow>45H020Z0 Preferences ReTextWindow@53;54Preview ReTextWindow@5BE>4=>Previous ReTextWindow"@5BE>4=8 X578G0: Previous tab ReTextWindow(B0<?0XPrint ReTextWindow (B0<?0X 4>:C<5=BPrint document ReTextWindow@8:07 HB0<?5 Print preview ReTextWindow0?CAB8Quit ReTextWindowF 5"5:AB %s (:>@8AB5[8 PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow >=>28Redo ReTextWindow#G8B0X ?>=>2>Reload ReTextWindow 0<5=8Replace ReTextWindow0<5=8 A25 Replace all ReTextWindow0<5=8 A0 Replace with ReTextWindow!0GC20XSave ReTextWindow!0GC20X :0>Save as ReTextWindow!0GC20X D0X; Save file ReTextWindow "@068Search ReTextWindow(;0B=0 B@0:0 B@065Z0Search toolbar ReTextWindowX7015@8B5 X540= 8;8 28H5 D0X;>20 70 >B20@0Z5#Select one or several files to open ReTextWindow >AB028 :>48@0Z5 Set encoding ReTextWindow">AB028 ;>:0;8B5B Set locale ReTextWindow(@8:068 48@5:B>@8XC<Show directory ReTextWindow54=>AB020= 0;8 <>[0= C@5R820G 70 0@:40C= 8 @5AB@C:BC8@0=8 B5:AB25@0 ?@02>?8A0 Spell check ReTextWindow >4@60=8 D0X;>28Supported files ReTextWindow!8<1>;8Symbols ReTextWindow, 568< C@5R820Z0 B015;5Table editing mode ReTextWindown>:C<5=B X5 87<5Z5=. 5;8B5 ;8 40 A0GC20B5 20H5 87<5=5?AThe document has been modified. Do you want to save your changes? ReTextWindow20X 4>:C<5=B X5 87<5=8;0 4@C30 0?;8:0F8X0. 5;8B5 ;8 40 30 ?>=>2> CG8B0B5? (>2> [5 ?>=8HB8B8 A25 20H5 87<5=5){This document has been modified by other application. Do you want to reload the file (this will discard all your changes)?  ReTextWindow20X D0X; X5 >1@8A0;0 4@C30 0?;8:0F8X5. !0GC20XB5 30 ?@5 =53> HB> 870R5B5.`This file has been deleted by other application. Please make sure you save the file before exit. ReTextWindow# URL ReTextWindow>42CG5=> Underline ReTextWindow>=8HB8Undo ReTextWindowJ>@8AB8 51>B>@ (%@><8XC<) 8AF@B020G!Use WebEngine (Chromium) renderer ReTextWindow">3;540X %" :>4View HTML code ReTextWindow>!8=B0:A0 @5AB@C:BC8@0=>3 B5:AB0reStructuredText syntax ReTextWindow ) , ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/ReText/locale/retext_sr.ts0000644000175000017500000007572314575355070017470 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Behavior Понашање Automatically save documents Аутоматски сачувај документе Automatically open last documents on startup На почетку, аутоматски отвори последње документе Number of recent documents Број скорашњих докумената Restore window geometry Упамти геометрију прозора Default preview state Подразумевано стање прегледа Open external links in ReText window Отварај спољне везе у РеТекст прозору Markdown syntax extensions (comma-separated) Маркдаун проширења синтаксе (одвојено запетом) Enable synchronized scrolling for Markdown Укључи синхронизовано клизање за Маркдаун Editor Уређивач Highlight current line Истакни тренутну линију Show line numbers Прикажи бројеве линија Line numbers are relative to current line Бројеви линија су релативни у односу на тренутну Tab key inserts spaces Таб убацује размаке Tabulation width Ширина табулације Draw vertical line at column Исцртај вертикалну линију на колони Enable soft wrap Укључи меки прелом Show document stats Прикажи статистику документа Ordered list mode Interface Сучеље Hide toolbar Сакриј траку алатки Icon theme name Назив теме икона Stylesheet file Фајл распореда Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Помоћ Live preview Тренутни преглед Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (ништа) FileSelectButton Select file to open Изаберите фајл InsertTableDialog Insert table Number of rows Број редова Number of columns Број колона LocaleDialog Enter locale name (example: en_US) Унесите ознаку локалитета (нпр. sr_RS) It is possible to specify multiple languages, separated by comma. Set as default Постави као подразумевано Proxy No write since last change (add ! to override) Нема уписа од последње измене (додајте ! да прегазите) Information Подаци ReTextEdit Add to dictionary Save image Сачувај слику Images (*.png *.jpg) Слике (*.png *.jpg) ReTextTab New document Нови документ Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Не могу да рашчланим садржај фајла. Проверите имате ли инсталиран <a href="%s">неопходaн модул</a>! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Алатна трака фајла Edit toolbar Алатна трака уређивања Search toolbar Алатна трака тражења New Ново Open Отвори Set encoding Постави кодирање Reload Учитај поново Save Сачувај Save as Сачувај као Next tab Следећи језичак Previous tab Претходни језичак Close tab Print Штампај Print preview Приказ штампе View HTML code Погледај ХТМЛ код Change editor font Измени фонт уређивача Change preview font Измени фонт прегледа Find text Нађи текст Go to line Preview Преглед Live preview Тренутни преглед Insert table Table editing mode Режим уређивања табеле Insert images by file path FakeVim mode Лажни Вим режим Fullscreen mode Режим пуног екрана Preferences Подешавања Quit Напусти Undo Поништи Redo Понови Copy Копирај Cut Исеци Paste Налепи Paste image Move line up Move line down Enable Укључи Set locale Постави локалитет Use WebEngine (Chromium) renderer Користи ВебМотор (Хромијум) исцртавач Show directory Прикажи директоријум Next Следеће Previous Претходно Replace Замени Replace all Замени све Close Затвори Get help online Потражите помоћ на интернету What's new About ReText О РеТексту About Qt О КуТ-у Bold Подебљано Italic Курзивно Underline Подвучено Formatting Форматирање Symbols Симболи &File &Фајл &Edit &Уређивање &Help &Помоћ Open recent Отвори недавне Export Извези Spell check Провера правописа Default markup Подразумевана маркација Search Тражи Replace with Замени са Case sensitively Осетљив на вел. слова New document Нови документ Type the line number Please, save the file somewhere. Сачувајте фајл негде. Select one or several files to open Изаберите један или више фајлова за отварање Supported files Подржани фајлови All files (*) Сви фајлови (*) Plain text (*.txt) Обичан текст (*.txt) %s files Example of final string: Markdown files %s фајлови Save file Сачувај фајл Cannot save to file which is open in another tab! Не могу да сачувам јер је отворен у другом језичку! Export document to ODT Извези документ у ОДТ OpenDocument text files (*.odt) ОпенДокумент текстуални фајл (*.odt) HTML files (*.html *.htm) ХТМЛ фајлови (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Извези документ у ПДФ PDF files (*.pdf) ПДФ фајлови (*.pdf) Print document Штампај документ Export document Извези документ Failed to execute the command: Неуспело извршење команде: Alt text Алт текст URL УРЛ Link text Текст везе This file has been deleted by other application. Please make sure you save the file before exit. Овај фајл је обрисала друга апликације. Сачувајте га пре него што изађете. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Овај документ је изменила друга апликација. Желите ли да га поново учитате? (ово ће поништити све ваше измене) Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Документ је измењен. Желите ли да сачувате ваше измене? HTML code ХТМЛ код Select one or several images to open ReText %s (using PyMarkups %s) РеТекст %s (користећи PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Једноставан али моћан уређивач за Маркдаун и реструктуирани текст Author: Dmitry Shachnev, 2011 Аутор: Дмитриј Шачнев (Dmitry Shachnev), 2011 Markdown syntax Маркдаун синтакса reStructuredText syntax Синтакса реструктуираног текста TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_sr@latin.qm0000644000175000017500000002566014575355102020576 0ustar00dmitrydmitrybdy!Yc'gt Mz/rgl)*D!Y by%jv #Sq4J#m rN5tnFr&'Z' =0 Ek 5"Sϗlϡ S IT )+Id9'7$  ! @r h> la v ȗ t&= ] F  c" ) ??eW \ p w $ J U% N^_ Px vC Y` * U 2  IR ~>/':3!eIU*) O".i(bNa po etku, automatski otvori poslednje dokumente,Automatically open last documents on startup ConfigDialog8Automatski sa uvaj dokumenteAutomatically save documents ConfigDialogPonaaanjeBehavior ConfigDialogFIscrtaj vertikalnu liniju na koloniDraw vertical line at column ConfigDialogUreiva Editor ConfigDialogVUklju i sinhronizovano klizanje za Markdown*Enable synchronized scrolling for Markdown ConfigDialog PomoHelp ConfigDialog.Istakni trenutnu linijuHighlight current line ConfigDialog Naziv teme ikonaIcon theme name ConfigDialogSu elje Interface ConfigDialog Trenutni pregled Live preview ConfigDialog^Markdaun proairenja sintakse (odvojeno zapetom),Markdown syntax extensions (comma-separated) ConfigDialogJOtvaraj spoljne veze u ReText prozoru$Open external links in ReText window ConfigDialog2Upamti geometriju prozoraRestore window geometry ConfigDialog,Prika~i brojeve linijaShow line numbers ConfigDialogFajl rasporedaStylesheet file ConfigDialog&Tab ubacuje razmakeTab key inserts spaces ConfigDialog"`irina tabulacijeTabulation width ConfigDialog(niata)(none)FileDialogButtonIzaberite fajlSelect file to openFileSelectButtonLUnesite oznaku lokaliteta (npr. sr_RS)"Enter locale name (example: en_US) LocaleDialog2Postavi kao podrazumevanoSet as default LocaleDialog Podaci InformationProxynNema upisa od poslednje izmene (dodajte ! da pregazite).No write since last change (add ! to override)Proxy&Slike (*.png *.jpg)Images (*.png *.jpg) ReTextEditSa uvaj sliku Save image ReTextEditNe mogu da raa lanim sadr~aj fajla. Proverite da li imate instaliran <a href="%s">neophodan modul</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTabNovi dokument New document ReTextTab%s fajlovi%s files ReTextWindow&Ureivanje&Edit ReTextWindow &Fajl&File ReTextWindow &Pomo&Help ReTextWindow O QT-uAbout Qt ReTextWindowO ReText-u About ReText ReTextWindowSvi fajlovi (*) All files (*) ReTextWindowAlt tekstAlt text ReTextWindowZAutor: Dmitrij `a nev (Dmitry Shachnev), 2011Author: Dmitry Shachnev, 2011 ReTextWindowPodebljanoBold ReTextWindowfNe mogu da sa uvam jer je otvoren u drugom jezi ku!1Cannot save to file which is open in another tab! ReTextWindow,Osetljiv na vel. slovaCase sensitively ReTextWindow*Izmeni font ureiva aChange editor font ReTextWindow(Izmeni font pregledaChange preview font ReTextWindowZatvoriClose ReTextWindowKopirajCopy ReTextWindow IseciCut ReTextWindow.Podrazumevana markacijaDefault markup ReTextWindow$Uredi alatna traka Edit toolbar ReTextWindowUklju iEnable ReTextWindow IzveziExport ReTextWindowIzvezi dokumentExport document ReTextWindow*Izvezi dokument u ODTExport document to ODT ReTextWindow*Izvezi dokument u PDFExport document to PDF ReTextWindow6Neuspelo izvraenje komande:Failed to execute the command: ReTextWindowLa~ni Vim re~im FakeVim mode ReTextWindow"Fajl alatna traka File toolbar ReTextWindowNai tekst Find text ReTextWindowFormatiranje Formatting ReTextWindow$Re~im punog ekranaFullscreen mode ReTextWindow8Potra~ite pomo na internetuGet help online ReTextWindowHTML kod HTML code ReTextWindow6HTML fajlovi (*.html *.htm)HTML files (*.html *.htm) ReTextWindowKurzivnoItalic ReTextWindowTekst veze Link text ReTextWindow Trenutni pregled Live preview ReTextWindow"Markdaun sintaksaMarkdown syntax ReTextWindowNovoNew ReTextWindowNovi dokument New document ReTextWindowSledeeNext ReTextWindowSledei jezi akNext tab ReTextWindow OtvoriOpen ReTextWindowOtvori nedavne Open recent ReTextWindowHOpenDocument tekstualni fajl (*.odt)OpenDocument text files (*.odt) ReTextWindow&PDF fajlovi (*.pdf)PDF files (*.pdf) ReTextWindow NalepiPaste ReTextWindow(Obi an tekst (*.txt)Plain text (*.txt) ReTextWindow*Sa uvajte fajl negde. Please, save the file somewhere. ReTextWindowPodeaavanja Preferences ReTextWindowPregledPreview ReTextWindowPrethodnoPrevious ReTextWindow"Prethodni jezi ak Previous tab ReTextWindow`tampajPrint ReTextWindow `tampaj dokumentPrint document ReTextWindowPrikaz atampe Print preview ReTextWindowNapustiQuit ReTextWindowDReText %s (koristei PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow PonoviRedo ReTextWindowU itaj ponovoReload ReTextWindow ZameniReplace ReTextWindowZameni sve Replace all ReTextWindowZameni sa Replace with ReTextWindowSa uvajSave ReTextWindowSa uvaj kaoSave as ReTextWindowSa uvaj fajl Save file ReTextWindow Tra~iSearch ReTextWindow*Alatna traka tra~enjaSearch toolbar ReTextWindowZIzaberite jedan ili viae fajlova za otvaranje#Select one or several files to open ReTextWindow"Postavi kodiranje Set encoding ReTextWindow"Postavi lokalitet Set locale ReTextWindow(Prika~i direktorijumShow directory ReTextWindowJednostavan ali moan ureiva za Markdaun i restruktuirani tekstSintaksa restruktuiranog tekstareStructuredText syntax ReTextWindow././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/ReText/locale/retext_sr@latin.ts0000644000175000017500000007166614575355070020622 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Behavior Ponašanje Automatically save documents Automatski sačuvaj dokumente Automatically open last documents on startup Na početku, automatski otvori poslednje dokumente Number of recent documents Restore window geometry Upamti geometriju prozora Default preview state Open external links in ReText window Otvaraj spoljne veze u ReText prozoru Markdown syntax extensions (comma-separated) Markdaun proširenja sintakse (odvojeno zapetom) Enable synchronized scrolling for Markdown Uključi sinhronizovano klizanje za Markdown Editor Uređivač Highlight current line Istakni trenutnu liniju Show line numbers Prikaži brojeve linija Line numbers are relative to current line Tab key inserts spaces Tab ubacuje razmake Tabulation width Širina tabulacije Draw vertical line at column Iscrtaj vertikalnu liniju na koloni Enable soft wrap Show document stats Ordered list mode Interface Sučelje Hide toolbar Icon theme name Naziv teme ikona Stylesheet file Fajl rasporeda Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help Pomoć Live preview Trenutni pregled Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (ništa) FileSelectButton Select file to open Izaberite fajl InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) Unesite oznaku lokaliteta (npr. sr_RS) It is possible to specify multiple languages, separated by comma. Set as default Postavi kao podrazumevano Proxy No write since last change (add ! to override) Nema upisa od poslednje izmene (dodajte ! da pregazite) Information Podaci ReTextEdit Add to dictionary Save image Sačuvaj sliku Images (*.png *.jpg) Slike (*.png *.jpg) ReTextTab New document Novi dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Ne mogu da raščlanim sadržaj fajla. Proverite da li imate instaliran <a href="%s">neophodan modul</a>! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Fajl alatna traka Edit toolbar Uredi alatna traka Search toolbar Alatna traka traženja New Novo Open Otvori Set encoding Postavi kodiranje Reload Učitaj ponovo Save Sačuvaj Save as Sačuvaj kao Next tab Sledeći jezičak Previous tab Prethodni jezičak Close tab Print Štampaj Print preview Prikaz štampe View HTML code Pogledaj HTML kod Change editor font Izmeni font uređivača Change preview font Izmeni font pregleda Find text Nađi tekst Go to line Preview Pregled Live preview Trenutni pregled Insert table Table editing mode Režim uređivanja tabele Insert images by file path FakeVim mode Lažni Vim režim Fullscreen mode Režim punog ekrana Preferences Podešavanja Quit Napusti Undo Poništi Redo Ponovi Copy Kopiraj Cut Iseci Paste Nalepi Paste image Move line up Move line down Enable Uključi Set locale Postavi lokalitet Use WebEngine (Chromium) renderer Koristi WebEngine (Chromium) iscrtavač Show directory Prikaži direktorijum Next Sledeće Previous Prethodno Replace Zameni Replace all Zameni sve Close Zatvori Get help online Potražite pomoć na internetu What's new About ReText O ReText-u About Qt O QT-u Bold Podebljano Italic Kurzivno Underline Podvučeno Formatting Formatiranje Symbols Simboli &File &Fajl &Edit &Uređivanje &Help &Pomoć Open recent Otvori nedavne Export Izvezi Spell check Provera pravopisa Default markup Podrazumevana markacija Search Traži Replace with Zameni sa Case sensitively Osetljiv na vel. slova New document Novi dokument Type the line number Please, save the file somewhere. Sačuvajte fajl negde. Select one or several files to open Izaberite jedan ili više fajlova za otvaranje Supported files Podržani fajlovi All files (*) Svi fajlovi (*) Plain text (*.txt) Običan tekst (*.txt) %s files Example of final string: Markdown files %s fajlovi Save file Sačuvaj fajl Cannot save to file which is open in another tab! Ne mogu da sačuvam jer je otvoren u drugom jezičku! Export document to ODT Izvezi dokument u ODT OpenDocument text files (*.odt) OpenDocument tekstualni fajl (*.odt) HTML files (*.html *.htm) HTML fajlovi (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF Izvezi dokument u PDF PDF files (*.pdf) PDF fajlovi (*.pdf) Print document Štampaj dokument Export document Izvezi dokument Failed to execute the command: Neuspelo izvršenje komande: Alt text Alt tekst URL URL Link text Tekst veze This file has been deleted by other application. Please make sure you save the file before exit. Ovaj fajl je obrisala druga aplikacije. Sačuvajte ga pre nego što izađete. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Ovaj dokument je izmenila druga aplikacija. Želite li da ga ponovo učitate? (ovo će poništiti sve vaše izmene) Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Dokument je izmenjen. Želite li da sačuvate vaše izmene? HTML code HTML kod Select one or several images to open ReText %s (using PyMarkups %s) ReText %s (koristeći PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Jednostavan ali moćan uređivač za Markdaun i restruktuirani tekst Author: Dmitry Shachnev, 2011 Autor: Dmitrij Šačnev (Dmitry Shachnev), 2011 Markdown syntax Markdaun sintaksa reStructuredText syntax Sintaksa restruktuiranog teksta TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_sv.qm0000644000175000017500000003513714575355102017452 0ustar00dmitrydmitry b(dy Yc'gt$ !zbr$DVg&l)&4D! bFy%qvћr! #S S4J-mr5t&(y!Fr273 W9 m'"p0B<M50e -d00 E*A:u"k5,ϗ$N° Sϡ 'Q *T!)+I#H9(>)m''$7/3 s @ h> j3 lah v( W $ ȗ? t1 Q}  F  c,N 5? )a ??e \* #3z  p5 w & J U  N^ Px v(= Y%R $ U 2!B ' I! ~> 4/23+4E Hz eIUGKx8 ˏQ*)  O,.&i5hppna de senaste dokumenten automatiskt vid uppstart,Automatically open last documents on startup ConfigDialog4Spara dokument automatisktAutomatically save documents ConfigDialogBeteendeBehavior ConfigDialog8Frvalt frhandsvisningslgeDefault preview state ConfigDialog<Visa vertikal linje vid kolumnDraw vertical line at column ConfigDialogTextredigerareEditor ConfigDialog(Aktivera radbrytningEnable soft wrap ConfigDialogXAktivera synkroniserad rullning fr Markdown*Enable synchronized scrolling for Markdown ConfigDialog HjlpHelp ConfigDialogTDlj flikfltet nr det bara finns en flik(Hide tabs bar when there is only one tab ConfigDialog"Dlj verktygsflt Hide toolbar ConfigDialog&Markera aktuell radHighlight current line ConfigDialogIkon-temaIcon theme name ConfigDialogGrnssnitt Interface ConfigDialogZLinjenummer r i frhllande till aktuell rad)Line numbers are relative to current line ConfigDialog(Live frhandsvisning Live preview ConfigDialogjInsticksmoduler fr Markdown-syntax (kommaseparerade),Markdown syntax extensions (comma-separated) ConfigDialog,Normal frhandsvisningNormal preview ConfigDialog,Antal senaste dokumentNumber of recent documents ConfigDialogLppna externa lnkar i ReText-fnstret$Open external links in ReText window ConfigDialog0terstll fnsterstorlekRestore window geometry ConfigDialog,Visa dokumentstatistikShow document stats ConfigDialog>Visa full skvg i fnstertitelShow full path in window title ConfigDialogVisa radnummerShow line numbers ConfigDialogStilmallStylesheet file ConfigDialog@Konvertera tabbar till blankstegTab key inserts spaces ConfigDialogTabb-breddTabulation width ConfigDialog6Anvnd konfigurationsfilen:Using configuration file at: ConfigDialog(inget)(none)FileDialogButton.Vlj fil som ska ppnasSelect file to openFileSelectButtonInfoga tabell Insert tableInsertTableDialogAntal kolumnerNumber of columnsInsertTableDialogAntal raderNumber of rowsInsertTableDialog>Ange landsnamn (exempel: en_US)"Enter locale name (example: en_US) LocaleDialog"Ange som standardSet as default LocaleDialogInformation InformationProxyIngen verskrift av fil efter senaste ndring (lgg till ! fr att tvinga verskrift).No write since last change (add ! to override)Proxy(Lgg till i ordbokenAdd to dictionary ReTextEdit(Bilder (*.png *.jpg)Images (*.png *.jpg) ReTextEditSpara bild Save image ReTextEdit>Kunde inte skapa filen '%s': %sCould not create file '%s': %s ReTextTabMisslyckades att analysera filinnehllet, kontrollera att du har installerat den <a href="%s">ndvndiga modulen</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTab"Skapa saknad fil?Create missing file? ReTextTab6Filen kunde inte bli skapadFile could not be created ReTextTabNytt dokument New document ReTextTab\Filen '%s' existerar inte. Vill du skapa den?8The file '%s' does not exist. Do you want to create it? ReTextTab%s filer%s files ReTextWindow&Redigera&Edit ReTextWindow &Arkiv&File ReTextWindow &Hjlp&Help ReTextWindow Om QtAbout Qt ReTextWindowOm ReText About ReText ReTextWindowAlla filer (*) All files (*) ReTextWindowAlt textbildAlt text ReTextWindowBUpphovsman: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindowFetBold ReTextWindowjKan inte spara till fil som r ppen i en annan flik!1Cannot save to file which is open in another tab! ReTextWindow$SkiftlgesknsligtCase sensitively ReTextWindow:ndra typsnitt fr redigeringChange editor font ReTextWindowJndra typsnitt fr frhandsgranskningChange preview font ReTextWindow StngClose ReTextWindowStng flik Close tab ReTextWindowKopieraCopy ReTextWindowKlipp utCut ReTextWindowStandardtypDefault markup ReTextWindowRedigeringsflt Edit toolbar ReTextWindowAktiveraEnable ReTextWindowExporteraExport ReTextWindow$Exportera dokumentExport document ReTextWindow4Exportera dokument som ODTExport document to ODT ReTextWindow4Exportera dokument som PDFExport document to PDF ReTextWindowLMisslyckades med att utfra kommandot:Failed to execute the command: ReTextWindowFakeVim-lge FakeVim mode ReTextWindowFilverktygsflt File toolbar ReTextWindowHitta ord Find text ReTextWindowFormattering Formatting ReTextWindowFullskrmslgeFullscreen mode ReTextWindowF hjlp onlineGet help online ReTextWindowG till linje Go to line ReTextWindowHTML-kllkod HTML code ReTextWindow8HTML-dokument (*.html *.htm)HTML files (*.html *.htm) ReTextWindow4Infoga bilder efter skvgInsert images by file path ReTextWindowInfoga tabell Insert table ReTextWindow KursivItalic ReTextWindowLnktext Link text ReTextWindow.Live frhandsgranskning Live preview ReTextWindowMarkdown-syntaxMarkdown syntax ReTextWindow Flytta linje nerMove line down ReTextWindow Flytta linje upp Move line up ReTextWindowNyttNew ReTextWindowNytt dokument New document ReTextWindow NstaNext ReTextWindowNsta flikNext tab ReTextWindow ppnaOpen ReTextWindowppna senaste Open recent ReTextWindow<OpenDocument textfiler (*.odt)OpenDocument text files (*.odt) ReTextWindow"PDF-filer (*.pdf)PDF files (*.pdf) ReTextWindowKlistra inPaste ReTextWindowKlistra in bild Paste image ReTextWindow Ren text (*.txt)Plain text (*.txt) ReTextWindow,Vnligen, spara filen. Please, save the file somewhere. ReTextWindowInstllningar Preferences ReTextWindowFrhandsgranskaPreview ReTextWindowFregendePrevious ReTextWindowFregende flik Previous tab ReTextWindowSkriv utPrint ReTextWindow"Skriv ut dokumentPrint document ReTextWindow0Frhandsgranska utskrift Print preview ReTextWindowAvslutaQuit ReTextWindowBReText %s (anvnder PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow Gr omRedo ReTextWindowLadda omReload ReTextWindow ErsttReplace ReTextWindowErstt alla Replace all ReTextWindowErstt med Replace with ReTextWindow SparaSave ReTextWindowSpara somSave as ReTextWindowSpara fil Save file ReTextWindowSkSearch ReTextWindowSkfltSearch toolbar ReTextWindowFVlj en eller flera filer att ppna#Select one or several files to open ReTextWindowHVlj en eller flera bilder att ppna$Select one or several images to open ReTextWindowTeckenkodning Set encoding ReTextWindow"Ange lokalisering Set locale ReTextWindowVisa ordbokShow directory ReTextWindowEnkel men kraftfull textredigerare fr Markdown och reStructuredText ConfigDialog Using configuration file at: Använd konfigurationsfilen: Behavior Beteende Automatically save documents Spara dokument automatiskt Automatically open last documents on startup Öppna de senaste dokumenten automatiskt vid uppstart Number of recent documents Antal senaste dokument Restore window geometry Återställ fönsterstorlek Default preview state Förvalt förhandsvisningsläge Open external links in ReText window Öppna externa länkar i ReText-fönstret Markdown syntax extensions (comma-separated) Insticksmoduler för Markdown-syntax (kommaseparerade) Enable synchronized scrolling for Markdown Aktivera synkroniserad rullning för Markdown Editor Textredigerare Highlight current line Markera aktuell rad Show line numbers Visa radnummer Line numbers are relative to current line Linjenummer är i förhållande till aktuell rad Tab key inserts spaces Konvertera tabbar till blanksteg Tabulation width Tabb-bredd Draw vertical line at column Visa vertikal linje vid kolumn Enable soft wrap Aktivera radbrytning Show document stats Visa dokumentstatistik Ordered list mode Interface Gränssnitt Hide toolbar Dölj verktygsfält Icon theme name Ikon-tema Stylesheet file Stilmall Hide tabs bar when there is only one tab Dölj flikfältet när det bara finns en flik Show full path in window title Visa full sökväg i fönstertitel Show directory tree Working directory Help Hjälp Live preview Live förhandsvisning Normal preview Normal förhandsvisning Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (inget) FileSelectButton Select file to open Välj fil som ska öppnas InsertTableDialog Insert table Infoga tabell Number of rows Antal rader Number of columns Antal kolumner LocaleDialog Enter locale name (example: en_US) Ange landsnamn (exempel: en_US) It is possible to specify multiple languages, separated by comma. Set as default Ange som standard Proxy No write since last change (add ! to override) Ingen överskrift av fil efter senaste ändring (lägg till ! för att tvinga överskrift) Information Information ReTextEdit Add to dictionary Lägg till i ordboken Save image Spara bild Images (*.png *.jpg) Bilder (*.png *.jpg) ReTextTab New document Nytt dokument Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Misslyckades att analysera filinnehållet, kontrollera att du har installerat den <a href="%s">nödvändiga modulen</a>! Create missing file? Skapa saknad fil? The file '%s' does not exist. Do you want to create it? Filen '%s' existerar inte. Vill du skapa den? File could not be created Filen kunde inte bli skapad Could not create file '%s': %s Kunde inte skapa filen '%s': %s ReTextWindow File toolbar Filverktygsfält Edit toolbar Redigeringsfält Search toolbar Sökfält New Nytt Open Öppna Set encoding Teckenkodning Reload Ladda om Save Spara Save as Spara som Next tab Nästa flik Previous tab Föregående flik Close tab Stäng flik Print Skriv ut Print preview Förhandsgranska utskrift View HTML code Visa HTML-kod Change editor font Ändra typsnitt för redigering Change preview font Ändra typsnitt för förhandsgranskning Find text Hitta ord Go to line Gå till linje Preview Förhandsgranska Live preview Live förhandsgranskning Insert table Infoga tabell Table editing mode Tabellredigeringsläge Insert images by file path Infoga bilder efter sökväg FakeVim mode FakeVim-läge Fullscreen mode Fullskärmsläge Preferences Inställningar Quit Avsluta Undo Ångra Redo Gör om Copy Kopiera Cut Klipp ut Paste Klistra in Paste image Klistra in bild Move line up Flytta linje upp Move line down Flytta linje ner Enable Aktivera Set locale Ange lokalisering Use WebEngine (Chromium) renderer Använd WebEngine (Chromium) som renderare Show directory Visa ordbok Next Nästa Previous Föregående Replace Ersätt Replace all Ersätt alla Close Stäng Get help online Få hjälp online What's new About ReText Om ReText About Qt Om Qt Bold Fet Italic Kursiv Underline Understrykning Formatting Formattering Symbols Symboler &File &Arkiv &Edit &Redigera &Help &Hjälp Open recent Öppna senaste Export Exportera Spell check Stavningskontroll Default markup Standardtyp Search Sök Replace with Ersätt med Case sensitively Skiftlägeskänsligt New document Nytt dokument Type the line number Skriv ut radnummer Please, save the file somewhere. Vänligen, spara filen. Select one or several files to open Välj en eller flera filer att öppna Supported files Stödda filer All files (*) Alla filer (*) Plain text (*.txt) Ren text (*.txt) %s files Example of final string: Markdown files %s filer Save file Spara fil Cannot save to file which is open in another tab! Kan inte spara till fil som är öppen i en annan flik! Export document to ODT Exportera dokument som ODT OpenDocument text files (*.odt) OpenDocument textfiler (*.odt) HTML files (*.html *.htm) HTML-dokument (*.html *.htm) Unrecognized paperSize setting "%s". Kan inte läsa av inställningar för pappersstorlek "%s" Export document to PDF Exportera dokument som PDF PDF files (*.pdf) PDF-filer (*.pdf) Print document Skriv ut dokument Export document Exportera dokument Failed to execute the command: Misslyckades med att utföra kommandot: Alt text Alt textbild URL Webbadress URL Link text Länktext This file has been deleted by other application. Please make sure you save the file before exit. Den här filen har raderats av en annan applikation. Se till att du sparar filen innan du avslutar. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Detta dokument har ändrats av en annan applikation. Vill du ladda om filen (det här förkastar alla dina ändringar)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Dokumentet har ändrats. Vill du spara dina ändringar? HTML code HTML-källkod Select one or several images to open Välj en eller flera bilder att öppna ReText %s (using PyMarkups %s) ReText %s (använder PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Enkel men kraftfull textredigerare för Markdown och reStructuredText Author: Dmitry Shachnev, 2011 Upphovsman: Dmitry Shachnev, 2011 Markdown syntax Markdown-syntax reStructuredText syntax reStructuredText-syntax TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d ord | %d alfanumeriska tecken | %d tecken totalt main Open the files in preview mode Öppna filerna i förhandsvisningsläge Create a new window even if there is an existing one Skapa ett nytt fönster även om det finns ett befintligt List of files to open Lista över filer att öppna ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_tr.qm0000644000175000017500000004047214575355102017445 0ustar00dmitrydmitry gb.dyYc'gt"Y$z"^r*NDVg""x l),D!$ by%vћr1% $#S #4J4 mor5t,k y.9Fr89_W9'(r0BJM;e G9z-d0 E0u:u)k52ϗ*b°&Kϡ -3 0T')+I)L9/=Ja>/ ^',*75 ] @" h> j3' laJ v- W $ v l ȗ t7 QJ  F  c2 5#9 )= ??e! \1 #:?  p k w & J U N^B Px v.= Y+B *$ U/ 2'< -} I' ~>S ;M/9'314E % z e%I%UGKx$(!!)ˏ*)N O3%.Ji<&XBa_lang1ta son belgeleri otomatik olarak a,Automatically open last documents on startup ConfigDialogDBelgeleri otomatik olarak kaydedinAutomatically save documents ConfigDialogDavran1_Behavior ConfigDialog0mle izgisi Cursor Line ConfigDialog4Varsay1lan nizleme durumuDefault preview state ConfigDialog PasifDisabled ConfigDialog0Stuna dikey izgi izinDraw vertical line at column ConfigDialogDzenleyiciEditor ConfigDialog6Yumu_ak sarmay1 etkinle_tirEnable soft wrap ConfigDialogbMarkdown iin senkronize kayd1rmay1 etkinle_tirin*Enable synchronized scrolling for Markdown ConfigDialog Yard1mHelp ConfigDialogbYaln1zca bir sekme olduunda sekme ubuunu gizle(Hide tabs bar when there is only one tab ConfigDialog&Ara ubuunu gizle Hide toolbar ConfigDialog*Seili sat1r1 vurgulaHighlight current line ConfigDialog Simge temas1 ad1Icon theme name ConfigDialog Art1r Increment ConfigDialog Arayz Interface ConfigDialogLSat1r numaralar1 mevcut sat1ra gredir)Line numbers are relative to current line ConfigDialogCanl1 nizleme Live preview ConfigDialogdMarkdown sz dizimi uzant1lar1 (virglle ayr1lm1_),Markdown syntax extensions (comma-separated) ConfigDialogNormal nizlemeNormal preview ConfigDialog*Son belgelerin say1s1Number of recent documents ConfigDialogTReText penceresinde harici balant1lar1 a$Open external links in ReText window ConfigDialog"S1ral1 liste moduOrdered list mode ConfigDialog YineleRepeat ConfigDialog6Pencere boyutlar1n1 s1f1rlaRestore window geometry ConfigDialog(Dizin aac1n1 gsterShow directory tree ConfigDialog:Belge istatistiklerini gsterShow document stats ConfigDialogDPencere ba_l11nda tam yolu gsterShow full path in window title ConfigDialog2Sat1r numaralar1n1 gsterShow line numbers ConfigDialog(Stil sayfas1 dosyas1Stylesheet file ConfigDialog4Sekme tu_u bo_luklar eklerTab key inserts spaces ConfigDialogTablo geni_liiTabulation width ConfigDialogDYap1land1rma dosyas1n1 kullanarak:Using configuration file at: ConfigDialogal1_ma diziniWorking directory ConfigDialogSar1lm1_ izgi Wrapped Line ConfigDialog*A1lacak dizini seinSelect directory to openDirectorySelectButton(Kodlama ad1n1 girin:Enter encoding name:EncodingDialog (yok)(none)FileDialogButton,A1lacak dosyay1 seinSelect file to openFileSelectButtonTablo ekle Insert tableInsertTableDialog"Stunlar1n say1s1Number of columnsInsertTableDialog"Sat1rlar1n say1s1Number of rowsInsertTableDialog<Yerel ad1 girin (rnek: en_US)"Enter locale name (example: en_US) LocaleDialogjVirglle ay1rarak birden ok dil belirtmek mmkndr.AIt is possible to specify multiple languages, separated by comma. LocaleDialog(ntan1ml1 olarak ataSet as default LocaleDialogBilgiler InformationProxySon dei_iklikten bu yana yazma yok (geersiz k1lmak iin ekleyin !).No write since last change (add ! to override)ProxySzle ekleAdd to dictionary ReTextEdit*Grnt (*.png *.jpg)Images (*.png *.jpg) ReTextEdit Grnty kaydet Save image ReTextEdit>'%s' dosyas1 olu_turulamad1: %sCould not create file '%s': %s ReTextTabDosya ierii ayr1_t1r1lamad1, <a href="%s">gerekli modln</a> kurulu olup olmad11n1 kontrol edin!aCould not parse file contents, check if you have the necessary module installed! ReTextTab8Eksik dosya olu_turulsun mu?Create missing file? ReTextTab(Dosya olu_turulamad1File could not be created ReTextTabYeni belge New document ReTextTabn'%s' dosyas1 mevcut deil. Onu olu_turmak ister misin?8The file '%s' does not exist. Do you want to create it? ReTextTab%s dosyalar%s files ReTextWindow&Dzenle&Edit ReTextWindow &Dosya&File ReTextWindow&Yard1m&Help ReTextWindowQt hakk1ndaAbout Qt ReTextWindowReText hakk1nda About ReText ReTextWindow Tm dosyalar (*) All files (*) ReTextWindow Alternatif metinAlt text ReTextWindow8Yazar: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindow^Veri kayb1n1 nlemek iin bu sekme iin otomatik kaydetme geici olarak devre d1_1 b1rak1ld1. Dosyay1 yeniden yklediinizde veya kaydettiinizde yeniden etkinle_tirilecektir.Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. ReTextWindow Kal1nBold ReTextWindowbBa_ka bir sekmede a1k olan dosyaya kaydedilemez!1Cannot save to file which is open in another tab! ReTextWindow0Byk/kk harf duyarl1Case sensitively ReTextWindow@Dzenleyici yaz1 tipini dei_tirChange editor font ReTextWindow:nizleme yaz1 tipini dei_tirChange preview font ReTextWindow KapatClose ReTextWindowSekmeyi kapat Close tab ReTextWindowKopyalaCopy ReTextWindowKesCut ReTextWindow0Varsay1lan biimlendirmeDefault markup ReTextWindow0Ara ubuunu dzenleyin Edit toolbar ReTextWindow EtkinEnable ReTextWindowD1_ar1 AktarExport ReTextWindow$Belgeyi d1_a aktarExport document ReTextWindow(Belgeyi ODT'ye aktarExport document to ODT ReTextWindow(Belgeyi PDF'ye aktarExport document to PDF ReTextWindow&Komut yrtlemedi:Failed to execute the command: ReTextWindowFakeVim modu FakeVim mode ReTextWindow"Dosya ara ubuu File toolbar ReTextWindowMetin bul Find text ReTextWindow Biim Formatting ReTextWindowTam ekran moduFullscreen mode ReTextWindow*evrimii yard1m al1nGet help online ReTextWindowSat1ra git Go to line ReTextWindowHTML kodu HTML code ReTextWindow:Html dosyalar1 (*.html *.htm)HTML files (*.html *.htm) ReTextWindow@Resimleri dosya yoluna gre ekleInsert images by file path ReTextWindowTablo ekle Insert table ReTextWindow 0talikItalic ReTextWindowBalant1 metni Link text ReTextWindowCanl1 nizleme Live preview ReTextWindow$Markdown szdizimiMarkdown syntax ReTextWindow"Sat1r1 a_a1 ta_1Move line down ReTextWindow$Sat1r1 yukar1 ta_1 Move line up ReTextWindowYeniNew ReTextWindowYeni belge New document ReTextWindowSonrakiNext ReTextWindowSonraki sekmeNext tab ReTextWindowAOpen ReTextWindowSon a1lanlar Open recent ReTextWindowDOpenDocument metin dosyas1 (*.odt)OpenDocument text files (*.odt) ReTextWindow*PDF dosyalar1 (*.pdf)PDF files (*.pdf) ReTextWindowYap1_t1rPaste ReTextWindowResmi yap1_t1r Paste image ReTextWindow"Dz metin (*.txt)Plain text (*.txt) ReTextWindowBLtfen dosyay1 bir yere kaydedin. Please, save the file somewhere. ReTextWindowTercihler Preferences ReTextWindow nizlePreview ReTextWindow ncekiPrevious ReTextWindownceki sekme Previous tab ReTextWindow Yazd1rPrint ReTextWindowBelgeyi yazd1rPrint document ReTextWindowBask1 nizleme Print preview ReTextWindow 1k1_Quit ReTextWindowFReText %s (kullan1lan PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow YineleRedo ReTextWindowTekrar ykleReload ReTextWindowDei_tirReplace ReTextWindowTmn dei_tir Replace all ReTextWindow ^ununla dei_tir Replace with ReTextWindow KaydetSave ReTextWindowFarkl1 kaydetSave as ReTextWindowDosyay1 kaydet Save file ReTextWindowAraSearch ReTextWindow"Arama ara ubuuSearch toolbar ReTextWindowLAmak iin bir veya birka dosya sein#Select one or several files to open ReTextWindowLAmak iin bir veya birka resim sein$Select one or several images to open ReTextWindow&Kodlamay1 ayarlay1n Set encoding ReTextWindowYerel ayarla Set locale ReTextWindowDizini gsterShow directory ReTextWindowMarkdown ve Yeniden Yap1land1r1lm1_ Metin iin basit ama gl dzenleyiciDosyalar1 nizleme modunda a1nOpen the files in preview modemain././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/ReText/locale/retext_tr.ts0000644000175000017500000007424614575355070017470 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Yapılandırma dosyasını kullanarak: Behavior Davranış Automatically save documents Belgeleri otomatik olarak kaydedin Automatically open last documents on startup Başlangıçta son belgeleri otomatik olarak aç Number of recent documents Son belgelerin sayısı Restore window geometry Pencere boyutlarını sıfırla Default preview state Varsayılan önizleme durumu Open external links in ReText window ReText penceresinde harici bağlantıları aç Markdown syntax extensions (comma-separated) Markdown söz dizimi uzantıları (virgülle ayrılmış) Enable synchronized scrolling for Markdown Markdown için senkronize kaydırmayı etkinleştirin Editor Düzenleyici Highlight current line Seçili satırı vurgula Show line numbers Satır numaralarını göster Line numbers are relative to current line Satır numaraları mevcut satıra göredir Tab key inserts spaces Sekme tuşu boşluklar ekler Tabulation width Tablo genişliği Draw vertical line at column Sütuna dikey çizgi çizin Enable soft wrap Yumuşak sarmayı etkinleştir Show document stats Belge istatistiklerini göster Ordered list mode Sıralı liste modu Interface Arayüz Hide toolbar Araç çubuğunu gizle Icon theme name Simge teması adı Stylesheet file Stil sayfası dosyası Hide tabs bar when there is only one tab Yalnızca bir sekme olduğunda sekme çubuğunu gizle Show full path in window title Pencere başlığında tam yolu göster Show directory tree Dizin ağacını göster Working directory Çalışma dizini Help Yardım Live preview Canlı önizleme Normal preview Normal önizleme Disabled Pasif Cursor Line İmleç Çizgisi Wrapped Line Sarılmış Çizgi Increment Artır Repeat Yinele DirectorySelectButton Select directory to open Açılacak dizini seçin EncodingDialog Enter encoding name: Kodlama adını girin: FileDialogButton (none) (yok) FileSelectButton Select file to open Açılacak dosyayı seçin InsertTableDialog Insert table Tablo ekle Number of rows Satırların sayısı Number of columns Sütunların sayısı LocaleDialog Enter locale name (example: en_US) Yerel adı girin (örnek: en_US) It is possible to specify multiple languages, separated by comma. Virgülle ayırarak birden çok dil belirtmek mümkündür. Set as default Öntanımlı olarak ata Proxy No write since last change (add ! to override) Son değişiklikten bu yana yazma yok (geçersiz kılmak için ekleyin !) Information Bilgiler ReTextEdit Add to dictionary Sözlüğe ekle Save image Görüntüyü kaydet Images (*.png *.jpg) Görüntü (*.png *.jpg) ReTextTab New document Yeni belge Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Dosya içeriği ayrıştırılamadı, <a href="%s">gerekli modülün</a> kurulu olup olmadığını kontrol edin! Create missing file? Eksik dosya oluşturulsun mu? The file '%s' does not exist. Do you want to create it? '%s' dosyası mevcut değil. Onu oluşturmak ister misin? File could not be created Dosya oluşturulamadı Could not create file '%s': %s '%s' dosyası oluşturulamadı: %s ReTextWindow File toolbar Dosya araç çubuğu Edit toolbar Araç çubuğunu düzenleyin Search toolbar Arama araç çubuğu New Yeni Open Set encoding Kodlamayı ayarlayın Reload Tekrar yükle Save Kaydet Save as Farklı kaydet Next tab Sonraki sekme Previous tab Önceki sekme Close tab Sekmeyi kapat Print Yazdır Print preview Baskı Önizleme View HTML code HTML kodunu göster Change editor font Düzenleyici yazı tipini değiştir Change preview font Önizleme yazı tipini değiştir Find text Metin bul Go to line Satıra git Preview Önizle Live preview Canlı önizleme Insert table Tablo ekle Table editing mode Tablo düzenleme modu Insert images by file path Resimleri dosya yoluna göre ekle FakeVim mode FakeVim modu Fullscreen mode Tam ekran modu Preferences Tercihler Quit Çıkış Undo Geri al Redo Yinele Copy Kopyala Cut Kes Paste Yapıştır Paste image Resmi yapıştır Move line up Satırı yukarı taşı Move line down Satırı aşağı taşı Enable Etkin Set locale Yerel ayarla Use WebEngine (Chromium) renderer WebEngine (Chromium) oluşturucuyu kullanın Show directory Dizini göster Next Sonraki Previous Önceki Replace Değiştir Replace all Tümünü değiştir Close Kapat Get help online Çevrimiçi yardım alın What's new Neler yeni About ReText ReText hakkında About Qt Qt hakkında Bold Kalın Italic İtalik Underline Altı çizili Formatting Biçim Symbols Semboller &File &Dosya &Edit &Düzenle &Help &Yardım Open recent Son açılanlar Export Dışarı Aktar Spell check İmlâ kontrolü Default markup Varsayılan biçimlendirme Search Ara Replace with Şununla değiştir Case sensitively Büyük/küçük harf duyarlı New document Yeni belge Type the line number Satır numarasını yazın Please, save the file somewhere. Lütfen dosyayı bir yere kaydedin. Select one or several files to open Açmak için bir veya birkaç dosya seçin Supported files Desteklenen dosyalar All files (*) Tüm dosyalar (*) Plain text (*.txt) Düz metin (*.txt) %s files Example of final string: Markdown files %s dosyalar Save file Dosyayı kaydet Cannot save to file which is open in another tab! Başka bir sekmede açık olan dosyaya kaydedilemez! Export document to ODT Belgeyi ODT'ye aktar OpenDocument text files (*.odt) OpenDocument metin dosyası (*.odt) HTML files (*.html *.htm) Html dosyaları (*.html *.htm) Unrecognized paperSize setting "%s". Tanınmayan kağıt Boyutu ayarları "%s". Export document to PDF Belgeyi PDF'ye aktar PDF files (*.pdf) PDF dosyaları (*.pdf) Print document Belgeyi yazdır Export document Belgeyi dışa aktar Failed to execute the command: Komut yürütülemedi: Alt text Alternatif metin URL URL Link text Bağlantı metni This file has been deleted by other application. Please make sure you save the file before exit. Bu dosya başka bir uygulama tarafından silindi. Lütfen çıkmadan önce dosyayı kaydettiğinizden emin olun. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Bu belge başka bir uygulama tarafından değiştirildi. Dosyayı yeniden yüklemek istiyor musunuz (bu, tüm değişikliklerinizi atacaktır)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. Veri kaybını önlemek için bu sekme için otomatik kaydetme geçici olarak devre dışı bırakıldı. Dosyayı yeniden yüklediğinizde veya kaydettiğinizde yeniden etkinleştirilecektir. The document has been modified. Do you want to save your changes? Belge değiştirildi. Değişikliklerinizi kaydetmek istiyor musunuz? HTML code HTML kodu Select one or several images to open Açmak için bir veya birkaç resim seçin ReText %s (using PyMarkups %s) ReText %s (kullanılan PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Markdown ve Yeniden Yapılandırılmış Metin için basit ama güçlü düzenleyici Author: Dmitry Shachnev, 2011 Yazar: Dmitry Shachnev, 2011 Markdown syntax Markdown sözdizimi reStructuredText syntax yeniden Yapılandırılmış Metin sözdizimi TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d w | %d a | %d c main Open the files in preview mode Dosyaları önizleme modunda açın Create a new window even if there is an existing one Mevcut bir pencere olsa bile yeni bir pencere oluştur List of files to open Açılacak dosyaların listesi ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_uk.qm0000644000175000017500000003354714575355102017444 0ustar00dmitrydmitryy0Lf }%%C'>į/$**%S*07J6;V!WT$JkZSUPʆ kʇ(B+:s04L"nun"AI5UF)eZΩJ740> Eb(&dy Yc'gtw Cozr#DV/gKl)%rD!o by%vћrP #S 4J,mr5t&:k'x2Fr01 W9 '!0Bo G10 E)F:u"k5+ϗ#°3ϡ & )T )%+I"b9(o >'&#7.@  @ h> j3L la v's W $ ȗ' t/ Qc  F / c+u 5~ )9 ??e \) #2E p w 0 J U N^k Px ` v' Y$ #D U` 2 4 & I! ~>/1E3*z eIAU$Dˏ*)D O,.qi2h2B><0B8G=> 2V4:@820B8 >AB0==V 4>:C<5=B8 ?@8 70?CA:C,Automatically open last documents on startup ConfigDialog>2B><0B8G=> 715@V30B8 4>:C<5=B8Automatically save documents ConfigDialog>254V=:0Behavior ConfigDialogL0;N20B8 25@B8:0;L=C ;V=VN C AB>2?G8:CDraw vertical line at column ConfigDialog 5403C20B8Editor ConfigDialog 5@5=>A8B8 B5:ABEnable soft wrap ConfigDialogR#2V<:=CB8 A8=E@>==5 3>@B0==O 4;O Markdown*Enable synchronized scrolling for Markdown ConfigDialog>2V4:0Help ConfigDialog`@8E>20B8 ?0=5;L 2:;04>:, :>;8 ;8H5 >4=0 2:;04:0(Hide tabs bar when there is only one tab ConfigDialog:@8E>20B8 ?0=5;L V=AB@C<5=BV2 Hide toolbar ConfigDialog.84V;OB8 ?>B>G=89 @O4>:Highlight current line ConfigDialog2AB0=>28B8 B5<C ?V:B>3@0<Icon theme name ConfigDialog=B5@D59A Interface ConfigDialogJ>G8=0B8 =C<5@0FVN @O4:V2 7 ?>B>G=>3>)Line numbers are relative to current line ConfigDialog&4=>G0A=89 ?5@53;O4 Live preview ConfigDialogb >7H8@5==O A8=B0:A8AC Markdown (@>74V;5=V :><0<8),Markdown syntax extensions (comma-separated) ConfigDialog$28G09=89 ?5@53;O4Normal preview ConfigDialog:V;L:VABL =5402=VE 4>:C<5=BV2Number of recent documents ConfigDialogTV4:@8BV 7>2=VH=V ?>A8;0==O C 2V:=V ReText$Open external links in ReText window ConfigDialog6 568< 2?>@O4:>20=>3> A?8A:COrdered list mode ConfigDialog>2B>@8B8Repeat ConfigDialog8V4=>2;N20B8 35><5B@VN 2V:=0Restore window geometry ConfigDialog4>:070B8 45@52> 48@5:B>@V9Show directory tree ConfigDialog>>:07C20B8 AB0B8AB8:C 4>:C<5=B0Show document stats ConfigDialog0>:07C20B8 =><5@8 @O4:V2Show line numbers ConfigDialog$09; AB8;N QtStylesheet file ConfigDialog8;02VH0 Tab 2AB02;OT ?@>1V;8Tab key inserts spaces ConfigDialog$(8@8=0 B01C;N20==OTabulation width ConfigDialogL8:>@8AB>2CNBLAO =0;0HBC20==O 7 D09;C:Using configuration file at: ConfigDialog" >1>G0 48@5:B>@VOWorking directory ConfigDialog(=5 >1@0=89)(none)FileDialogButton6815@VBL D09; 4;O 2V4:@8BBOSelect file to openFileSelectButton AB028B8 B01;8FN Insert tableInsertTableDialog$V;L:VABL AB>2?FV2Number of columnsInsertTableDialog V;L:VABL @O4:V2Number of rowsInsertTableDialogF254VBL :>4 <>28 (=0?@8:;04: uk_UA)"Enter locale name (example: en_US) LocaleDialog "8?>2>Set as default LocaleDialog=D>@<0FVO InformationProxy\ =5715@565=V 7<V=8 (4>409B5 ! 4;O =5EBC20==O).No write since last change (add ! to override)Proxy$>40B8 4> A;>2=8:0Add to dictionary ReTextEdit0>1@065==O (*.png *.jpg)Images (*.png *.jpg) ReTextEdit&15@53B8 7>1@065==O Save image ReTextEdit5 240;>AO >?@0FN20B8 2<VAB D09;C, ?5@5:>=09B5AO, I> 2AB0=>2;5=> <a href="%s">=5>1EV4=89 <>4C;L</a>!aCould not parse file contents, check if you have the necessary module installed! ReTextTab2!B2>@8B8 ?@>?CI5=89 D09;?Create missing file? ReTextTab>289 4>:C<5=B New document ReTextTab$09;8 %s%s files ReTextWindow& 5403C20==O&Edit ReTextWindow &$09;&File ReTextWindow&>2V4:0&Help ReTextWindow @> QtAbout Qt ReTextWindow@> ReText About ReText ReTextWindowAV D09;8 (*) All files (*) ReTextWindow(;LB5@=0B82=89 B5:ABAlt text ReTextWindow82B>@: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindow 8@=89Bold ReTextWindowd5<>6;82> 715@53B8 D09; 2V4:@8B89 2 V=HV9 2:;04FV!1Cannot save to file which is open in another tab! ReTextWindow"@0EC20B8 @53VAB@Case sensitively ReTextWindow.<V=8B8 H@8DB @540:B>@0Change editor font ReTextWindow.<V=8B8 H@8DB ?5@53;O4CChange preview font ReTextWindow0:@8B8Close ReTextWindow0:@8B8 2:;04:C Close tab ReTextWindow!:>?VN20B8Copy ReTextWindow8@V70B8Cut ReTextWindow"8?>20 @>7<VB:0Default markup ReTextWindow$0=5;L @5403C20==O Edit toolbar ReTextWindow#2V<:=CB8Enable ReTextWindow:A?>@BExport ReTextWindow*:A?>@BC20B8 4>:C<5=BExport document ReTextWindow&:A?>@BC20B8 O: ODTExport document to ODT ReTextWindow&:A?>@BC20B8 O: PDFExport document to PDF ReTextWindow<><8;:0 ?@8 28:>=0==V :><0=48:Failed to execute the command: ReTextWindow 568< FakeVim FakeVim mode ReTextWindow0=5;L D09;C File toolbar ReTextWindow=09B8 B5:AB Find text ReTextWindow$>@<0BC20==O Formatting ReTextWindow0 C25AL 5:@0=Fullscreen mode ReTextWindow2B@8<0B8 4>2V4:C 2 <5@56VGet help online ReTextWindow 5@59B8 4> @O4:0 Go to line ReTextWindow>4 HTML HTML code ReTextWindow2$09;8 HTML (*.html *.htm)HTML files (*.html *.htm) ReTextWindow AB028B8 B01;8FN Insert table ReTextWindow C@A82Italic ReTextWindow"5:AB ?>A8;0==O Link text ReTextWindow&4=>G0A=89 ?5@53;O4 Live preview ReTextWindow$!8=B0:A8A MarkdownMarkdown syntax ReTextWindow&>AC=CB8 @O4>: 2=87Move line down ReTextWindow(>AC=CB8 @O4>: 23>@C Move line up ReTextWindow >289New ReTextWindow>289 4>:C<5=B New document ReTextWindow0ABC?=5Next ReTextWindow 0ABC?=0 2:;04:0Next tab ReTextWindowV4:@8B8Open ReTextWindow"V4:@8B8 >AB0==V9 Open recent ReTextWindowF"5:AB>2V D09;8 OpenDocument (*.odt)OpenDocument text files (*.odt) ReTextWindow"$09;8 PDF (*.pdf)PDF files (*.pdf) ReTextWindowAB028B8Paste ReTextWindow&AB028B8 7>1@065==O Paste image ReTextWindow*@>AB89 B5:AB (*.txt)Plain text (*.txt) ReTextWindowDC4L ;0A:0, 715@56VBL :C48AL D09;. Please, save the file somewhere. ReTextWindow0;0HBC20==O Preferences ReTextWindow5@53;O4Preview ReTextWindow>?5@54=TPrevious ReTextWindow">?5@54=O 2:;04:0 Previous tab ReTextWindow@C:C20B8Print ReTextWindow$@C:C20B8 4>:C<5=BPrint document ReTextWindow@>?5@54=V9 ?5@53;O4 ?5@54 4@C:>< Print preview ReTextWindow 89B8Quit ReTextWindowJReText %s (28:>@8AB>2CT PyMarkups %s)ReText %s (using PyMarkups %s) ReTextWindow>2B>@8B8 4VNRedo ReTextWindow5@57020=B068B8Reload ReTextWindow0<V=8B8Replace ReTextWindow0<V=8B8 2A5 Replace all ReTextWindow0<V=8B8 =0 Replace with ReTextWindow15@53B8Save ReTextWindow15@53B8 O:Save as ReTextWindow15@53B8 D09; Save file ReTextWindow >HC:Search ReTextWindow0=5;L ?>HC:CSearch toolbar ReTextWindow>815@VBL >48= 01> :V;L:0 D09;V2#Select one or several files to open ReTextWindow(AB0=>28B8 :>4C20==O Set encoding ReTextWindow81@0B8 <>2C Set locale ReTextWindow 5@53;O=CB8 B5:CShow directory ReTextWindow@>AB89 0;5 ?>BC6=89 B5:AB>289 @540:B>@ 4;O Markdown B0 reStructuredText ?8AC Spell check ReTextWindow,$09;8 I> ?V4B@8<CNBLAOSupported files ReTextWindow!8<2>;8Symbols ReTextWindow2 568< @5403C20==O B01;8FLTable editing mode ReTextWindowb>:C<5=B 1C;> 7<V=5=>. 060TB5 715@53B8 FV 7<V=8?AThe document has been modified. Do you want to save your changes? ReTextWindow&59 4>:C<5=B 1C2 7<V=5=89 V=H8< 70AB>AC=:><. 060TB5 ?5@57020=B068B8 D09; V 2B@0B8B8 =5715@565=V 7<V=8? {This document has been modified by other application. Do you want to reload the file (this will discard all your changes)?  ReTextWindow&59 D09; 1C2 2840;5=89 V=H8< 4>40B:><. C4L ;0A:0, ?5@5:>=09B5AO ?5@54 28E>4><, I> 28 715@53;8 D09;.`This file has been deleted by other application. Please make sure you save the file before exit. ReTextWindowURLURL ReTextWindowV4:@5A;5==O Underline ReTextWindow!:0AC20B8 4VNUndo ReTextWindowB5@>7?V7=0=89 @>7<V@ ?0?5@C "%s".$Unrecognized paperSize setting "%s". ReTextWindowH8:>@8AB>2C20B8 WebEngine (Chromium)!Use WebEngine (Chromium) renderer ReTextWindow(5@53;O=CB8 :>4 HTMLView HTML code ReTextWindow)> =>2>3> What's new ReTextWindow4!8=B0:A8A reStructuredTextreStructuredText syntax ReTextWindowd%d A;V2 | %d F8D@>1C:25==8E A8<2>;V2 | %d A8<2>;V2%d w | %d a | %d c TextInfoArea ) , ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/ReText/locale/retext_uk.ts0000644000175000017500000007735214575355070017463 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Використовуються налаштування з файлу: Behavior Поведінка Automatically save documents Автоматично зберігати документи Automatically open last documents on startup Автоматично відкривати останні документи при запуску Number of recent documents Кількість недавніх документів Restore window geometry Відновлювати геометрію вікна Default preview state Open external links in ReText window Відкриті зовнішні посилання у вікні ReText Markdown syntax extensions (comma-separated) Розширення синтаксису Markdown (розділені комами) Enable synchronized scrolling for Markdown Увімкнути синхронне гортання для Markdown Editor Редагувати Highlight current line Виділяти поточний рядок Show line numbers Показувати номери рядків Line numbers are relative to current line Починати нумерацію рядків з поточного Tab key inserts spaces Клавіша Tab вставляє пробіли Tabulation width Ширина табулювання Draw vertical line at column Малювати вертикальну лінію у стовпчику Enable soft wrap Переносити текст Show document stats Показувати статистику документа Ordered list mode Режим впорядкованого списку Interface Інтерфейс Hide toolbar Приховати панель інструментів Icon theme name Встановити тему піктограм Stylesheet file Файл стилю Qt Hide tabs bar when there is only one tab Приховати панель вкладок, коли лише одна вкладка Show full path in window title Show directory tree Показати дерево директорій Working directory Робоча директорія Help Довідка Live preview Одночасний перегляд Normal preview Звичайний перегляд Disabled Cursor Line Wrapped Line Increment Repeat Повторити DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) (не обраний) FileSelectButton Select file to open Виберіть файл для відкриття InsertTableDialog Insert table Вставити таблицю Number of rows Кількість рядків Number of columns Кількість стовпців LocaleDialog Enter locale name (example: en_US) Введіть код мови (наприклад: uk_UA) It is possible to specify multiple languages, separated by comma. Set as default Типово Proxy No write since last change (add ! to override) Є незбережені зміни (додайте ! для нехтування) Information Інформація ReTextEdit Add to dictionary Додати до словника Save image Зберегти зображення Images (*.png *.jpg) Зображення (*.png *.jpg) ReTextTab New document Новий документ Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Не вдалося опрацювати вміст файлу, переконайтеся, що встановлено <a href="%s">необхідний модуль</a>! Create missing file? Створити пропущений файл? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar Панель файлу Edit toolbar Панель редагування Search toolbar Панель пошуку New Новий Open Відкрити Set encoding Встановити кодування Reload Перезавантажити Save Зберегти Save as Зберегти як Next tab Наступна вкладка Previous tab Попередня вкладка Close tab Закрити вкладку Print Друкувати Print preview Попередній перегляд перед друком View HTML code Переглянути код HTML Change editor font Змінити шрифт редактора Change preview font Змінити шрифт перегляду Find text Знайти текст Go to line Перейти до рядка Preview Перегляд Live preview Одночасний перегляд Insert table Вставити таблицю Table editing mode Режим редагування таблиць Insert images by file path FakeVim mode Режим FakeVim Fullscreen mode На увесь екран Preferences Налаштування Quit Вийти Undo Скасувати дію Redo Повторити дію Copy Скопіювати Cut Вирізати Paste Вставити Paste image Вставити зображення Move line up Посунути рядок вгору Move line down Посунути рядок вниз Enable Увімкнути Set locale Вибрати мову Use WebEngine (Chromium) renderer Використовувати WebEngine (Chromium) Show directory Переглянути теку Next Наступне Previous Попереднє Replace Замінити Replace all Замінити все Close Закрити Get help online Отримати довідку в мережі What's new Що нового About ReText Про ReText About Qt Про Qt Bold Жирний Italic Курсив Underline Підкреслення Formatting Форматування Symbols Символи &File &Файл &Edit &Редагування &Help &Довідка Open recent Відкрити останній Export Експорт Spell check Перевірка правопису Default markup Типова розмітка Search Пошук Replace with Замінити на Case sensitively Врахувати регістр New document Новий документ Type the line number Please, save the file somewhere. Будь ласка, збережіть кудись файл. Select one or several files to open Виберіть один або кілька файлів Supported files Файли що підтримуються All files (*) Всі файли (*) Plain text (*.txt) Простий текст (*.txt) %s files Example of final string: Markdown files Файли %s Save file Зберегти файл Cannot save to file which is open in another tab! Неможливо зберегти файл відкритий в іншій вкладці! Export document to ODT Експортувати як ODT OpenDocument text files (*.odt) Текстові файли OpenDocument (*.odt) HTML files (*.html *.htm) Файли HTML (*.html *.htm) Unrecognized paperSize setting "%s". Нерозпізнаний розмір паперу "%s". Export document to PDF Експортувати як PDF PDF files (*.pdf) Файли PDF (*.pdf) Print document Друкувати документ Export document Експортувати документ Failed to execute the command: Помилка при виконанні команди: Alt text Альтернативний текст URL URL Link text Текст посилання This file has been deleted by other application. Please make sure you save the file before exit. Цей файл був видалений іншим додатком. Будь ласка, переконайтеся перед виходом, що ви зберегли файл. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Цей документ був змінений іншим застосунком. Бажаєте перезавантажити файл і втратити незбережені зміни? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? Документ було змінено. Бажаєте зберегти ці зміни? HTML code Код HTML Select one or several images to open ReText %s (using PyMarkups %s) ReText %s (використовує PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText Простий але потужний текстовий редактор для Markdown та reStructuredText Author: Dmitry Shachnev, 2011 Автор: Dmitry Shachnev, 2011 Markdown syntax Синтаксис Markdown reStructuredText syntax Синтаксис reStructuredText TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d слів | %d цифробуквенних символів | %d символів main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_zh_CN.qm0000644000175000017500000002642414575355102020022 0ustar00dmitrydmitrybdy Yc'gt 8zrDVgx ul)wD!o by%vћr #S/4J#m,r5tko^ Fr%& W9 r'0BM'e L-dC0 E :uk 5"cϗ%°ϡ n T)+IO9>  'BQ7#  2 @ h> j3 la v W $$ l ȗ t% QH  F g c"7 5 ) T ??e/ \! #& pN w J U N^| Px~ v, Y  Ug 2  I1 ~>- '/&D3!4Eh% BzemI UNGKxWpˏ0*)  O".i( T/ReRbS_N NN*ehc,Automatically open last documents on startup ConfigDialog RO[XeNAutomatically save documents ConfigDialogLN:Behavior ConfigDialogQIh~ Cursor Line ConfigDialog ؋N k!r`Default preview state ConfigDialogykbDisabled ConfigDialogu;QWvuL~Draw vertical line at column ConfigDialogEditor ConfigDialog T/u(oSEnable soft wrap ConfigDialog*[Markdown_T/NvT kenR*Enable synchronized scrolling for Markdown ConfigDialog^.RHelp ConfigDialogSg NN* ySaeϐ ySah(Hide tabs bar when there is only one tab ConfigDialog hh Hide toolbar ConfigDialogNf>y:_SRMLHighlight current line ConfigDialog VhN;T yIcon theme name ConfigDialogX Increment ConfigDialogNNuLb Interface ConfigDialogLSN_SRMLvQs)Line numbers are relative to current line ConfigDialog[e Live preview ConfigDialog(Markdown lbi\U (SR),Markdown syntax extensions (comma-separated) ConfigDialogkc^8Normal preview ConfigDialog geNepNumber of recent documents ConfigDialog$W( ReText zSN-bS_Yc$Open external links in ReText window ConfigDialog g ^Rhj!_Ordered list mode ConfigDialogY Repeat ConfigDialog`bY zSOMnY'\Restore window geometry ConfigDialogf>y:eNY9~gShow directory tree ConfigDialogf>y:ehc~ߋO`oShow document stats ConfigDialogzShf>y:Qh_Show full path in window title ConfigDialogf>y:LSShow line numbers ConfigDialog h7_heNStylesheet file ConfigDialogOu( zzh< fcb TabTab key inserts spaces ConfigDialogTab .[^Tabulation width ConfigDialogOu(MneNUsing configuration file at: ConfigDialog]O\v_UWorking directory ConfigDialogS~ Wrapped Line ConfigDialog b鉁bS_vv_USelect directory to openDirectorySelectButtone (none)FileDialogButtonbS_eNSelect file to openFileSelectButtoncQehh< Insert tableInsertTableDialogRepNumber of columnsInsertTableDialogLepNumber of rowsInsertTableDialog$QeT y (OY: zh_CN)"Enter locale name (example: en_US) LocaleDialogN:؋Set as default LocaleDialogO`o InformationProxy&]Oe9OF\g*O[XSu( ! _:R6bgL .No write since last change (add ! to override)Proxy mRR0QxAdd to dictionary ReTextEdit VrG (*.png *.jpg)Images (*.png *.jpg) ReTextEditO[XVrG Save image ReTextEditelR^eN '%s': %sCould not create file '%s': %s ReTextTabRN |4eNQ[ hgN f/T&[N <a href="%s">_ʼnj!WW</a> aCould not parse file contents, check if you have the necessary module installed! ReTextTabR^N"Y1eNCreate missing file? ReTextTab elR^eNFile could not be created ReTextTabe^ehc New document ReTextTab'%s' N [XW(0 f/T&R^8The file '%s' does not exist. Do you want to create it? ReTextTab %s eN%s files ReTextWindow (&E)&Edit ReTextWindow eN(&F)&File ReTextWindow ^.R(&H)&Help ReTextWindow QsN QtAbout Qt ReTextWindowQsN ReText About ReText ReTextWindowQheN (*) All files (*) ReTextWindowfcbeg,Alt text ReTextWindow2O\: Dmitry Shachnev, 2011Author: Dmitry Shachnev, 2011 ReTextWindow|OSBold ReTextWindow"]W(Qv[h{~YbS_ _SRMelO[X01Cannot save to file which is open in another tab! ReTextWindow [Y'\QeOaCase sensitively ReTextWindowOe9Vh[WOSChange editor font ReTextWindow Oe9[WOSChange preview font ReTextWindowQsClose ReTextWindowQsh{~ Close tab ReTextWindowY R6Copy ReTextWindowRjRCut ReTextWindow ؋j!_Default markup ReTextWindow ]Qwh Edit toolbar ReTextWindowom;Enable ReTextWindow[QExport ReTextWindow[QeNExport document ReTextWindow[QN: ODT ehcExport document to ODT ReTextWindow[Qh<_N: PDFExport document to PDF ReTextWindowN bgLT}N:Failed to execute the command: ReTextWindowFakeVim j!_ FakeVim mode ReTextWindow eN]Qwh File toolbar ReTextWindowgb~eg, Find text ReTextWindow[W{&h7_ Formatting ReTextWindowQh\Oj!_Fullscreen mode ReTextWindowW(~S^.Re Get help online ReTextWindowR0LY Go to line ReTextWindowHTML Nx HTML code ReTextWindow,HTML eN (*.html *.htm)HTML files (*.html *.htm) ReTextWindoweN_cQeVrGInsert images by file path ReTextWindowcQehh< Insert table ReTextWindoweOSItalic ReTextWindowceg, Link text ReTextWindow[e Live preview ReTextWindowMarkdown lMarkdown syntax ReTextWindowN yMove line down ReTextWindowN y Move line up ReTextWindowe^New ReTextWindoweeN New document ReTextWindowN NyNext ReTextWindow N NN*h{~Next tab ReTextWindowbS_Open ReTextWindow bS_gOu( Open recent ReTextWindow2OpenDocument eg,eN (*.odt)OpenDocument text files (*.odt) ReTextWindowPDF eN (*.pdf)PDF files (*.pdf) ReTextWindow|4Paste ReTextWindow|4VrG Paste image ReTextWindowfneg,ehc (*.txt)Plain text (*.txt) ReTextWindowO[XR0R+Y Please, save the file somewhere. ReTextWindow N*NPOY}[ Preferences ReTextWindowPreview ReTextWindowN NyPrevious ReTextWindow N NN*h{~ Previous tab ReTextWindowbSSpPrint ReTextWindowbSSpeNPrint document ReTextWindowbSSp Print preview ReTextWindowQQuit ReTextWindow4ReText %sOu( PyMarkups %s ReText %s (using PyMarkups %s) ReTextWindowPZRedo ReTextWindoweR}Reload ReTextWindowfcbReplace ReTextWindowfcbb@g  Replace all ReTextWindowfcbN: Replace with ReTextWindowO[XSave ReTextWindowS[XN:Save as ReTextWindowO[XeN Save file ReTextWindowd}"Search ReTextWindow d}"]QwhSearch toolbar ReTextWindow bNN*bYN*eNbS_#Select one or several files to open ReTextWindow b鉁bS_vVrG$Select one or several images to open ReTextWindowneg,xh<_ Set encoding ReTextWindow buLb Set locale ReTextWindow f>y:eNY9Show directory ReTextWindowJ{SUeHv Markdown N ReStructuredText Vh__SRMb@g Oe9 T {This document has been modified by other application. Do you want to reload the file (this will discard all your changes)?  ReTextWindow.eN]Qv[z ^R d0 xnW(QRMO[X0`This file has been deleted by other application. Please make sure you save the file before exit. ReTextWindowQeep[WType the line number ReTextWindowcURL ReTextWindowN R~ Underline ReTextWindowSmUndo ReTextWindow elՋR+v~_ Y'\n "%s"$Unrecognized paperSize setting "%s". ReTextWindow8Ou( WebEngine (Chromium) n2gVh!Use WebEngine (Chromium) renderer ReTextWindowgw HTML NxView HTML code ReTextWindow&reStructuredText lreStructuredText syntax ReTextWindow$%d w | %d a | %d c%d w | %d a | %d c TextInfoAreaR^NN*ezS4Create a new window even if there is an existing onemain_bS_veNRhList of files to openmainW(j!_N bS_eNOpen the files in preview modemain././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/ReText/locale/retext_zh_CN.ts0000644000175000017500000007213414575355070020036 0ustar00dmitrydmitry ConfigDialog Using configuration file at: 使用配置文件: Behavior 行为 Automatically save documents 自动保存文件 Automatically open last documents on startup 启动时自动打开上一个文档 Number of recent documents 最近文件数 Restore window geometry 恢复窗口位置大小 Default preview state 默认上次状态 Open external links in ReText window 在 ReText 窗口中打开外部链接 Markdown syntax extensions (comma-separated) Markdown 语法扩展 (逗号分隔) Enable synchronized scrolling for Markdown 对Markdown开启编辑与预览的同步滚动 Editor 编辑 Highlight current line 高亮显示当前行 Show line numbers 显示行号 Line numbers are relative to current line 行号与当前行相关 Tab key inserts spaces 使用 空格 替换 Tab Tabulation width Tab 键宽度 Draw vertical line at column 画出垂直边界线 Enable soft wrap 启用软包装 Show document stats 显示文档统计信息 Ordered list mode 有序列表模式 Interface 交互界面 Hide toolbar 隐藏标题栏 Icon theme name 图标主题名称 Stylesheet file 样式表文件 Hide tabs bar when there is only one tab 只有一个选项卡时隐藏选项卡栏 Show full path in window title 窗口标题显示全部路径 Show directory tree 显示文件夹结构 Working directory 工作目录 Help 帮助 Live preview 实时预览 Normal preview 正常预览 Disabled 禁止 Cursor Line 光标线 Wrapped Line 包装线 Increment 增量 Repeat 重复 DirectorySelectButton Select directory to open 选择要打开的目录 EncodingDialog Enter encoding name: FileDialogButton (none) (无) FileSelectButton Select file to open 打开文件 InsertTableDialog Insert table 插入表格 Number of rows 行数 Number of columns 列数 LocaleDialog Enter locale name (example: en_US) 输入语言名称 (例如: zh_CN) It is possible to specify multiple languages, separated by comma. Set as default 设为默认 Proxy No write since last change (add ! to override) 已修改但尚未保存(可用 ! 强制执行) Information 信息 ReTextEdit Add to dictionary 添加到词典 Save image 保存图片 Images (*.png *.jpg) 图片 (*.png *.jpg) ReTextTab New document 新建文档 Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! 不能粘贴文件内容,检查下是否安装了 <a href="%s">必要模块</a> ! Create missing file? 创建丢失文件? The file '%s' does not exist. Do you want to create it? '%s' 不存在。 是否创建? File could not be created 无法创建文件 Could not create file '%s': %s 无法创建文件 '%s': %s ReTextWindow File toolbar 文件工具栏 Edit toolbar 编辑工具栏 Search toolbar 搜索工具栏 New 新建 Open 打开 Set encoding 设置文本编码格式 Reload 重新加载 Save 保存 Save as 另存为 Next tab 下一个标签 Previous tab 上一个标签 Close tab 关闭标签 Print 打印 Print preview 打印预览 View HTML code 查看 HTML 代码 Change editor font 修改编辑器字体 Change preview font 修改预览字体 Find text 查找文本 Go to line 到行处 Preview 预览 Live preview 实时预览 Insert table 插入表格 Table editing mode 表格编辑模式 Insert images by file path 通过文件路径插入图片 FakeVim mode FakeVim 模式 Fullscreen mode 全屏模式 Preferences 个人偏好设定 Quit 退出 Undo 取消 Redo 重做 Copy 复制 Cut 剪切 Paste 粘贴 Paste image 粘贴图片 Move line up 上移 Move line down 下移 Enable 激活 Set locale 选择界面语言 Use WebEngine (Chromium) renderer 使用 WebEngine (Chromium) 渲染器 Show directory 显示文件夹 Next 下一项 Previous 上一项 Replace 替换 Replace all 替换所有 Close 关闭 Get help online 在线获取帮助(英文) What's new About ReText 关于 ReText About Qt 关于 Qt Bold 粗体 Italic 斜体 Underline 下划线 Formatting 字符样式 Symbols 符号 &File 文件(&F) &Edit 编辑(&E) &Help 帮助(&H) Open recent 打开最近使用 Export 导出 Spell check 拼写检查 Default markup 默认编辑模式 Search 搜索 Replace with 替换为 Case sensitively 对大小写敏感 New document 新文件 Type the line number 输入数字 Please, save the file somewhere. 请保存到别处! Select one or several files to open 选择一个或多个文件打开 Supported files 支持的文件类型 All files (*) 全部文件 (*) Plain text (*.txt) 普通文本文档 (*.txt) %s files Example of final string: Markdown files %s 文件 Save file 保存文件 Cannot save to file which is open in another tab! 已在其它标签处打开,当前无法保存。 Export document to ODT 导出为 ODT 文档 OpenDocument text files (*.odt) OpenDocument 文本文件 (*.odt) HTML files (*.html *.htm) HTML 文件 (*.html *.htm) Unrecognized paperSize setting "%s". 无法识别的纸张大小设置 "%s" Export document to PDF 导出格式为 PDF PDF files (*.pdf) PDF 文件 (*.pdf) Print document 打印文件 Export document 导出文件 Failed to execute the command: 不能执行命令: Alt text 替换文本 URL 链接 Link text 链接文本 This file has been deleted by other application. Please make sure you save the file before exit. 该文件已被其它程序删除。 请确认在退出前保存。 This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? 文件已被其它程序修改。 要重新载入文件(放弃当前所有修改)吗? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? 文件已更改,确认保存吗? HTML code HTML 代码 Select one or several images to open 选择要打开的图片 ReText %s (using PyMarkups %s) ReText %s(使用 PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText 简单高效的 Markdown 与 ReStructuredText 编辑器 Author: Dmitry Shachnev, 2011 作者: Dmitry Shachnev, 2011 Markdown syntax Markdown 语法 reStructuredText syntax reStructuredText 语法 TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters %d w | %d a | %d c main Open the files in preview mode 在预览模式下打开文件 Create a new window even if there is an existing one 创建一个新窗口 List of files to open 待打开的文件列表 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611010.0 ReText-8.0.2/ReText/locale/retext_zh_TW.qm0000644000175000017500000001054714575355102020053 0ustar00dmitrydmitry ConfigDialog Using configuration file at: Behavior Automatically save documents Automatically open last documents on startup Number of recent documents Restore window geometry Default preview state Open external links in ReText window Markdown syntax extensions (comma-separated) Enable synchronized scrolling for Markdown Editor Highlight current line Show line numbers Line numbers are relative to current line Tab key inserts spaces Tabulation width Draw vertical line at column Enable soft wrap Show document stats Ordered list mode Interface Hide toolbar Icon theme name Stylesheet file Hide tabs bar when there is only one tab Show full path in window title Show directory tree Working directory Help 說明 Live preview 同步預覽 Normal preview Disabled Cursor Line Wrapped Line Increment Repeat DirectorySelectButton Select directory to open EncodingDialog Enter encoding name: FileDialogButton (none) FileSelectButton Select file to open InsertTableDialog Insert table Number of rows Number of columns LocaleDialog Enter locale name (example: en_US) It is possible to specify multiple languages, separated by comma. Set as default Proxy No write since last change (add ! to override) Information ReTextEdit Add to dictionary Save image Images (*.png *.jpg) ReTextTab New document 新檔 Could not parse file contents, check if you have the <a href="%s">necessary module</a> installed! Create missing file? The file '%s' does not exist. Do you want to create it? File could not be created Could not create file '%s': %s ReTextWindow File toolbar 檔案工具列 Edit toolbar 編輯工具列 Search toolbar 尋找工具列 New 新增 Open 開啟 Set encoding Reload Save 儲存 Save as 另存新檔 Next tab Previous tab Close tab Print 列印 Print preview 列印預覽 View HTML code 檢視 HTML 程式碼 Change editor font Change preview font Find text 尋找文本 Go to line Preview 預覽 Live preview 同步預覽 Insert table Table editing mode Insert images by file path FakeVim mode Fullscreen mode 全螢幕 Preferences Quit 離開 Undo 復原 Redo 重做 Copy 複製 Cut 剪下 Paste 貼上 Paste image Move line up Move line down Enable 啟用 Set locale 選擇程式語言 Use WebEngine (Chromium) renderer Show directory 顯示目錄 Next 下一條 Previous 上一條 Replace Replace all Close Get help online 在線擷取幫助(英文) What's new About ReText 關於 ReText About Qt 關於 Qt Bold 加粗 Italic 傾斜 Underline 下劃線 Formatting 樣式 Symbols 特殊符號 &File 檔案 &Edit 編輯 &Help 說明 Open recent 開啟最近的 Export 匯出 Spell check 拼寫檢查 Default markup Search 尋找 Replace with Case sensitively 對大小写敏感 New document 新檔 Type the line number Please, save the file somewhere. 請,儲存到別的地方呦! Select one or several files to open 選擇一個或多個檔案以開啟 Supported files 支持的檔案格式 All files (*) 所有檔案 (*) Plain text (*.txt) 純文本 (*.txt) %s files Example of final string: Markdown files %s 檔案 Save file 儲存檔案 Cannot save to file which is open in another tab! Export document to ODT 匯出檔案到 ODT OpenDocument text files (*.odt) Libreoffice 檔案 (*.odt) HTML files (*.html *.htm) HTML 檔案 (*.html *.htm) Unrecognized paperSize setting "%s". Export document to PDF 匯出檔案到 PDF PDF files (*.pdf) PDF 檔案 (*.pdf) Print document 列印檔案 Export document 匯出檔案 Failed to execute the command: 不能執行指令: Alt text URL Link text This file has been deleted by other application. Please make sure you save the file before exit. This document has been modified by other application. Do you want to reload the file (this will discard all your changes)? Automatic saving has been temporarily disabled for this tab to prevent data loss. It will be re-enabled when you reload the file or save it manually. The document has been modified. Do you want to save your changes? 檔案已變更,確定儲存嗎? HTML code HTML 程式碼 Select one or several images to open ReText %s (using PyMarkups %s) Simple but powerful editor for Markdown and reStructuredText 簡單高效的 Markdown 與 reStructuredText 編輯器 Author: Dmitry Shachnev, 2011 作者: Dmitry Shachnev, 2011 Markdown syntax Markdown 句法 reStructuredText syntax reStructuredText 句法 TextInfoArea %d w | %d a | %d c count of words, alphanumeric characters, all characters main Open the files in preview mode Create a new window even if there is an existing one List of files to open ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710609411.0 ReText-8.0.2/ReText/mdx_posmap.py0000644000175000017500000001171014575352003016336 0ustar00dmitrydmitry''' Position Map Extension for Python-Markdown ========================================== This extension adds data-posmap attributes to the generated HTML elements that can be used to relate HTML elements to the corresponding lines in the markdown input file. Note: the line number stored in the data-posmap attribute corresponds to the empty line *after* the markdown block that the HTML was generated from. Copyright 2016 [Maurice van der Pot](griffon26@kfk4ever.com) 2017-2024 Dmitry Shachnev License: [BSD](http://www.opensource.org/licenses/bsd-license.php) ''' import re from xml.etree.ElementTree import SubElement from markdown.blockprocessors import BlockProcessor from markdown.extensions import Extension from markdown.extensions.codehilite import CodeHilite from markdown.preprocessors import Preprocessor from markdown.util import HTML_PLACEHOLDER_RE try: from pymdownx.highlight import Highlight except ImportError: Highlight = None POSMAP_MARKER_RE = re.compile(r'__posmapmarker__\d+\n\n') class PosMapExtension(Extension): """ Position Map Extension for Python-Markdown. """ def extendMarkdown(self, md): """ Insert the PosMapExtension blockprocessor before any other extensions to make sure our own markers, inserted by the preprocessor, are removed before any other extensions get confused by them. """ md.preprocessors.register(PosMapMarkPreprocessor(md), 'posmap_mark', 50) md.preprocessors.register(PosMapCleanPreprocessor(md), 'posmap_clean', 5) md.parser.blockprocessors.register(PosMapBlockProcessor(md.parser), 'posmap', 150) # Monkey patch CodeHilite constructor to remove the posmap markers from # text before highlighting it orig_codehilite_init = CodeHilite.__init__ def new_codehilite_init(self, src=None, *args, **kwargs): src = POSMAP_MARKER_RE.sub('', src) orig_codehilite_init(self, src=src, *args, **kwargs) CodeHilite.__init__ = new_codehilite_init # Same for PyMdown Extensions if it is available if Highlight is not None: orig_highlight_highlight = Highlight.highlight def new_highlight_highlight(self, src, *args, **kwargs): src = POSMAP_MARKER_RE.sub('', src) return orig_highlight_highlight(self, src, *args, **kwargs) Highlight.highlight = new_highlight_highlight class PosMapMarkPreprocessor(Preprocessor): """ PosMapMarkPreprocessor - insert __posmapmarker__linenr entries at each empty line """ def run(self, lines): new_text = [] for i, line in enumerate(lines): new_text.append(line) if line == '': # Do not insert markers in the middle of an indented block. if 0 < i < len(lines) - 1: # Find the closest lines before and after this one that have # non-whitespace characters, and check if they are indented. i_prev = i - 1 while i_prev > 0 and lines[i_prev].strip() == "": i_prev -= 1 i_next = i + 1 while i_next < len(lines) - 1 and lines[i_next].strip() == "": i_next += 1 if lines[i_prev].startswith(" ") and lines[i_next].startswith(" "): continue new_text.append('__posmapmarker__%d' % i) new_text.append('') return new_text class PosMapCleanPreprocessor(Preprocessor): """ PosMapCleanPreprocessor - remove __posmapmarker__linenr entries that accidentally ended up in the htmlStash. This could have happened because they were inside html tags or a fenced code block. """ def run(self, lines): for i in range(self.md.htmlStash.html_counter): block = self.md.htmlStash.rawHtmlBlocks[i] block = re.sub(POSMAP_MARKER_RE, '', block) self.md.htmlStash.rawHtmlBlocks[i] = block return lines class PosMapBlockProcessor(BlockProcessor): """ PosMapBlockProcessor - remove each marker and add a data-posmap attribute to the previous HTML element """ def test(self, parent, block): return block.startswith('__posmapmarker__') def run(self, parent, blocks): block = blocks.pop(0) line_nr = block.split('__')[2] last_child = self.lastChild(parent) if last_child != None: # Avoid setting the attribute on HTML placeholders, because it # would interfere with later replacement with literal HTML # fragments. In this case just add an empty

with the attribute. if last_child.text and re.match(HTML_PLACEHOLDER_RE, last_child.text): last_child = SubElement(parent, 'p') last_child.set('data-posmap', line_nr) def makeExtension(*args, **kwargs): return PosMapExtension(*args, **kwargs) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/preview.py0000644000175000017500000000604314575336012015655 0ustar00dmitrydmitry# vim: ts=8:sts=8:sw=8:noexpandtab # # This file is part of ReText # Copyright: 2017-2022 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from os.path import exists import time from PyQt6.QtCore import QDir, QUrl from PyQt6.QtGui import QDesktopServices, QTextCursor, QTextDocument from PyQt6.QtWidgets import QTextBrowser from ReText import globalSettings class ReTextPreview(QTextBrowser): def __init__(self, tab): QTextBrowser.__init__(self) self.tab = tab # if set to True, links to other files will unsuccessfully be opened as anchors self.setOpenLinks(False) self.anchorClicked.connect(self.openInternal) self.lastRenderTime = 0 self.distToBottom = None self.verticalScrollBar().rangeChanged.connect(self.updateScrollPosition) def disconnectExternalSignals(self): pass def openInternal(self, link): url = link.url() if url.startswith('#'): self.scrollToAnchor(url[1:]) return elif link.isRelative(): fileToOpen = QDir.current().filePath(url) else: fileToOpen = link.toLocalFile() if link.isLocalFile() else None if fileToOpen is not None: if exists(fileToOpen): link = QUrl.fromLocalFile(fileToOpen) if globalSettings.handleWebLinks and fileToOpen.endswith('.html'): self.setSource(link) return # This is outside the "if exists" block because we can prompt for # creating the file if self.tab.openSourceFile(fileToOpen): return QDesktopServices.openUrl(link) def findText(self, text, flags, wrap=False): cursor = self.textCursor() if wrap and flags & QTextDocument.FindFlag.FindBackward: cursor.movePosition(QTextCursor.MoveOperation.End) elif wrap: cursor.movePosition(QTextCursor.MoveOperation.Start) newCursor = self.document().find(text, cursor, flags) if not newCursor.isNull(): self.setTextCursor(newCursor) return True if not wrap: return self.findText(text, flags, wrap=True) return False def updateScrollPosition(self, minimum, maximum): """Called when vertical scroll bar range changes. If this happened during preview rendering (less than 0.5s since it was started), set the position such that distance to bottom is the same as before refresh. """ timeSinceRender = time.time() - self.lastRenderTime if timeSinceRender < 0.5 and self.distToBottom is not None and maximum: newValue = maximum - self.distToBottom if newValue >= minimum: self.verticalScrollBar().setValue(newValue) def setFont(self, font): self.document().setDefaultFont(font) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710609411.0 ReText-8.0.2/ReText/syncscroll.py0000644000175000017500000001354314575352003016370 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2016-2023 Maurice van der Pot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from PyQt6.QtCore import QPoint class SyncScroll: def __init__(self, previewFrame, editorPositionToSourceLineFunc, sourceLineToEditorPositionFunc): self.posmap = {} self.frame = previewFrame self.editorPositionToSourceLine = editorPositionToSourceLineFunc self.sourceLineToEditorPosition = sourceLineToEditorPositionFunc self.previewPositionBeforeLoad = QPoint() self.contentIsLoading = False self.editorViewportHeight = 0 self.editorViewportOffset = 0 self.editorCursorPosition = 0 self.frame.contentsSizeChanged.connect(self._handlePreviewResized) self.frame.loadStarted.connect(self._handleLoadStarted) self.frame.loadFinished.connect(self._handleLoadFinished) def isActive(self): return bool(self.posmap) def handleEditorResized(self, editorViewportHeight): self.editorViewportHeight = editorViewportHeight self._updatePreviewScrollPosition() def handleEditorScrolled(self, editorViewportOffset): self.editorViewportOffset = editorViewportOffset return self._updatePreviewScrollPosition() def handleCursorPositionChanged(self, editorCursorPosition): self.editorCursorPosition = editorCursorPosition return self._updatePreviewScrollPosition() def _handleLoadStarted(self): # Store the current scroll position so it can be restored when the new # content is presented self.previewPositionBeforeLoad = self.frame.scrollPosition() self.contentIsLoading = True def _handleLoadFinished(self): self.frame.setScrollPosition(self.previewPositionBeforeLoad) self.contentIsLoading = False self.frame.getPositionMap(self._setPositionMap) def _handlePreviewResized(self): self.frame.getPositionMap(self._setPositionMap) self._updatePreviewScrollPosition() if not self.posmap and self.frame.scrollPosition().y() == 0: self.frame.setScrollPosition(self.previewPositionBeforeLoad) def _linearScale(self, fromValue, fromMin, fromMax, toMin, toMax): fromRange = fromMax - fromMin toRange = toMax - toMin toValue = toMin if fromRange: toValue += ((fromValue - fromMin) * toRange) / float(fromRange) return toValue def _updatePreviewScrollPosition(self): if not self.posmap: # Loading new content resets the scroll position to the top. If we # don't have a posmap to calculate the new best position, then # restore the position stored at the beginning of the load. if self.contentIsLoading: self.frame.setScrollPosition(self.previewPositionBeforeLoad) return textedit_pixel_to_scroll_to = self.editorCursorPosition if textedit_pixel_to_scroll_to < self.editorViewportOffset: textedit_pixel_to_scroll_to = self.editorViewportOffset last_viewport_pixel = self.editorViewportOffset + self.editorViewportHeight if textedit_pixel_to_scroll_to > last_viewport_pixel: textedit_pixel_to_scroll_to = last_viewport_pixel line_to_scroll_to = self.editorPositionToSourceLine(textedit_pixel_to_scroll_to) # Do a binary search through the posmap to find the nearest line above # and below the line to scroll to for which the rendered position is # known. posmap_lines = [0] + sorted(self.posmap.keys()) min_index = 0 max_index = len(posmap_lines) - 1 while max_index - min_index > 1: current_index = int((min_index + max_index) / 2) if posmap_lines[current_index] > line_to_scroll_to: max_index = current_index else: min_index = current_index # number of nearest line above and below for which we have a position min_line = posmap_lines[min_index] max_line = posmap_lines[max_index] min_textedit_pos = self.sourceLineToEditorPosition(min_line) max_textedit_pos = self.sourceLineToEditorPosition(max_line) # rendered pixel position of nearest line above and below min_preview_pos = self.posmap[min_line] max_preview_pos = self.posmap[max_line] # calculate rendered pixel position of line corresponding to cursor # (0 == top of document) preview_pixel_to_scroll_to = self._linearScale(textedit_pixel_to_scroll_to, min_textedit_pos, max_textedit_pos, min_preview_pos, max_preview_pos) distance_to_top_of_viewport_editor = textedit_pixel_to_scroll_to - self.editorViewportOffset distance_to_top_of_viewport_preview = distance_to_top_of_viewport_editor / self.frame.zoomFactor() preview_scroll_offset = preview_pixel_to_scroll_to - distance_to_top_of_viewport_preview pos = self.frame.scrollPosition() pos.setY(preview_scroll_offset) self.frame.setScrollPosition(pos) def _setPositionMap(self, posmap): self.posmap = posmap if posmap: self.posmap[0] = 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603607.0 ReText-8.0.2/ReText/tab.py0000644000175000017500000004667414575336527014773 0ustar00dmitrydmitry# vim: ts=8:sts=8:sw=8:noexpandtab # # This file is part of ReText # Copyright: 2015-2023 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from os.path import exists, splitext import locale import time from markups import get_markup_for_file_name, find_markup_class_by_name from markups.common import MODULE_HOME_PAGE from ReText import app_version, globalSettings, converterprocess from ReText.editor import ReTextEdit from ReText.highlighter import ReTextHighlighter from ReText.preview import ReTextPreview from PyQt6.QtCore import pyqtSignal, Qt, QDir, QFile, QFileInfo, QPoint, QTimer, QUrl from PyQt6.QtGui import QPalette, QTextCursor, QTextDocument from PyQt6.QtWidgets import QApplication, QTextEdit, QSplitter, QMessageBox try: from ReText.webenginepreview import ReTextWebEnginePreview except ImportError: ReTextWebEnginePreview = None PreviewDisabled, PreviewLive, PreviewNormal = range(3) class ReTextTab(QSplitter): fileNameChanged = pyqtSignal() modificationStateChanged = pyqtSignal() activeMarkupChanged = pyqtSignal() # Make _fileName a read-only property to make sure that any # modification happens through the proper functions. These functions # will make sure that the fileNameChanged signal is emitted when # applicable. @property def fileName(self): return self._fileName def __init__(self, parent, fileName, previewState=PreviewDisabled): super().__init__(Qt.Orientation.Horizontal, parent=parent) self.p = parent self._fileName = fileName self.editBox = ReTextEdit(self) self.previewBox = self.createPreviewBox(self.editBox) self.activeMarkupClass = None self.markup = None self.converted = None self.previewState = previewState self.previewOutdated = False self.conversionPending = False self.cssFileExists = False self.forceDisableAutoSave = False self.converterProcess = converterprocess.ConverterProcess() self.converterProcess.conversionDone.connect(self.updatePreviewBox) textDocument = self.editBox.document() self.highlighter = ReTextHighlighter(textDocument) if parent.actionEnableSC.isChecked(): dictionaries, _errors = parent.getSpellCheckDictionaries() self.highlighter.dictionaries = dictionaries # Rehighlighting is tied to the change in markup class that # happens at the end of this function self.editBox.textChanged.connect(self.triggerPreviewUpdate) self.editBox.undoAvailable.connect(parent.actionUndo.setEnabled) self.editBox.redoAvailable.connect(parent.actionRedo.setEnabled) self.editBox.copyAvailable.connect(parent.enableCopy) # Give both boxes a minimum size so the minimumSizeHint will be # ignored when splitter.setSizes is called below for widget in self.editBox, self.previewBox: widget.setMinimumWidth(125) self.addWidget(widget) self.setSizes((50, 50)) self.setChildrenCollapsible(False) textDocument.modificationChanged.connect(self.handleModificationChanged) self.updateActiveMarkupClass() def handleModificationChanged(self): self.modificationStateChanged.emit() def createPreviewBox(self, editBox): # Use closures to avoid a hard reference from ReTextWebEnginePreview # to self, which would keep the tab and its resources alive # even after other references to it have disappeared. def editorPositionToSourceLine(editorPosition): viewportPosition = editorPosition - editBox.verticalScrollBar().value() sourceLine = editBox.cursorForPosition(QPoint(0,viewportPosition)).blockNumber() return sourceLine def sourceLineToEditorPosition(sourceLine): doc = editBox.document() block = doc.findBlockByNumber(sourceLine) rect = doc.documentLayout().blockBoundingRect(block) return rect.top() if ReTextWebEnginePreview and globalSettings.useWebEngine: preview = ReTextWebEnginePreview(self, editorPositionToSourceLine, sourceLineToEditorPosition) else: preview = ReTextPreview(self) return preview def getActiveMarkupClass(self): ''' Return the currently active markup class for this tab. No objects should be created of this class, it should only be used to retrieve markup class specific information. ''' return self.activeMarkupClass def updateActiveMarkupClass(self): ''' Update the active markup class based on the default class and the current filename. If the active markup class changes, the highlighter is rerun on the input text, the markup object of this tab is replaced with one of the new class and the activeMarkupChanged signal is emitted. ''' previousMarkupClass = self.activeMarkupClass self.activeMarkupClass = find_markup_class_by_name(globalSettings.defaultMarkup) if self._fileName: markupClass = get_markup_for_file_name( self._fileName, return_class=True) if markupClass: self.activeMarkupClass = markupClass if self.activeMarkupClass != previousMarkupClass: self.highlighter.docType = self.activeMarkupClass.name if self.activeMarkupClass else None self.highlighter.rehighlight() self.activeMarkupChanged.emit() self.triggerPreviewUpdate() def getDocumentTitleFromConverted(self, converted): if converted: try: return converted.get_document_title() except Exception: self.p.printError() return self.getBaseName() def getBaseName(self): if self._fileName: fileinfo = QFileInfo(self._fileName) basename = fileinfo.completeBaseName() return (basename if basename else fileinfo.fileName()) return self.tr("New document") def getHtmlFromConverted(self, converted, includeStyleSheet=True, webenv=False): if converted is None: markupClass = self.getActiveMarkupClass() errMsg = self.tr('Could not parse file contents, check if ' 'you have the necessary module ' 'installed!') try: errMsg %= markupClass.attributes[MODULE_HOME_PAGE] except (AttributeError, KeyError): # Remove the link if markupClass doesn't have the needed attribute errMsg = errMsg.replace('', '').replace('', '') return '

%s

' % errMsg headers = '' if includeStyleSheet and self.p.ss is not None: headers += '\n' elif includeStyleSheet: style = 'td, th { border: 1px solid #c3c3c3; padding: 0 3px 0 3px; }\n' style += 'table { border-collapse: collapse; }\n' style += 'img { max-width: 100%; }\n' # QTextDocument seems to use media=screen even for printing if not isinstance(self.previewBox, QTextEdit) and not webenv: # https://github.com/retext-project/retext/pull/187 palette = QApplication.palette() fgColor = palette.color(QPalette.ColorRole.Text).name() bgColor = palette.color(QPalette.ColorRole.Base).name() linkColor = palette.color(QPalette.ColorRole.Link).name() visitedLinkColor = palette.color(QPalette.ColorRole.LinkVisited).name() style += ('@media screen {\n' f' html {{ color: {fgColor}; background-color: {bgColor}; }}\n' f' a, a * {{ color: {linkColor}; }}\n' f' a:visited, a:visited * {{ color: {visitedLinkColor}; }}\n' '}\n') # https://github.com/retext-project/retext/issues/408 style += '@media print { html { background-color: white; } }\n' headers += '\n' baseName = self.getBaseName() if self.cssFileExists: headers += ('\n' % baseName) headers += ('\n' % app_version) return converted.get_whole_html( custom_headers=headers, include_stylesheet=includeStyleSheet, fallback_title=baseName, webenv=webenv) def getDocumentForExport(self, includeStyleSheet=True, webenv=False): markupClass = self.getActiveMarkupClass() if markupClass and markupClass.available(): exportMarkup = markupClass(filename=self._fileName) text = self.editBox.toPlainText() converted = exportMarkup.convert(text) else: converted = None return (self.getDocumentTitleFromConverted(converted), self.getHtmlFromConverted(converted, includeStyleSheet=includeStyleSheet, webenv=webenv), self.previewBox) def updatePreviewBox(self): self.conversionPending = False try: self.converted = self.converterProcess.get_result() except converterprocess.MarkupNotAvailableError: self.converted = None except converterprocess.ConversionError: return self.p.printError() if isinstance(self.previewBox, QTextEdit): scrollbar = self.previewBox.verticalScrollBar() scrollbarValue = scrollbar.value() # If scrollbar was not on top, save its distance to bottom so that # it will be restored in previewBox.updateScrollPosition() later. if scrollbarValue: self.previewBox.distToBottom = scrollbar.maximum() - scrollbarValue else: self.previewBox.distToBottom = None try: html = self.getHtmlFromConverted(self.converted) except Exception: return self.p.printError() self.previewBox.setFont(globalSettings.getPreviewFont()) if isinstance(self.previewBox, QTextEdit): self.previewBox.lastRenderTime = time.time() self.previewBox.setHtml(html) self.previewBox.updateScrollPosition(scrollbar.minimum(), scrollbar.maximum()) else: # Always provide a baseUrl otherwise QWebView will # refuse to show images or other external objects if self._fileName: baseUrl = QUrl.fromLocalFile(self._fileName) else: baseUrl = QUrl.fromLocalFile(QDir.currentPath()) self.previewBox.setHtml(html, baseUrl) if self.previewOutdated: self.triggerPreviewUpdate() def triggerPreviewUpdate(self): self.previewOutdated = True if self.previewState == PreviewDisabled: return if not self.conversionPending: self.conversionPending = True QTimer.singleShot(500, self.startPendingConversion) def startPendingConversion(self): self.previewOutdated = False requested_extensions = ['ReText.mdx_posmap'] if globalSettings.syncScroll else [] self.converterProcess.start_conversion(self.getActiveMarkupClass().name, self.fileName, requested_extensions, self.editBox.toPlainText(), QDir.currentPath()) def updateBoxesVisibility(self): self.editBox.setVisible(self.previewState < PreviewNormal) self.previewBox.setVisible(self.previewState > PreviewDisabled) def rebuildPreviewBox(self): self.previewBox.disconnectExternalSignals() self.previewBox.setParent(None) self.previewBox.deleteLater() self.previewBox = self.createPreviewBox(self.editBox) self.previewBox.setMinimumWidth(125) self.addWidget(self.previewBox) self.setSizes((50, 50)) self.triggerPreviewUpdate() self.updateBoxesVisibility() def detectEncoding(self, raw: bytes): ''' Detect content encoding of the given data. It will return None if it can't determine the encoding. ''' try: import chardet except ImportError: return result = chardet.detect(raw) if result['confidence'] > 0.9: if result['encoding'].lower() == 'ascii': # UTF-8 files can be falsely detected as ASCII files if they # don't contain non-ASCII characters in first 2048 bytes. # We map ASCII to UTF-8 to avoid such situations. return 'utf-8' return result['encoding'] def readTextFromFile(self, fileName=None, encoding=None): previousFileName = self._fileName fileName = fileName or self._fileName try: with open(fileName, 'rb') as openfile: data = openfile.read() except OSError as ex: QMessageBox.warning(self, '', str(ex)) return # Only try to detect encoding if it is not specified if encoding is None and globalSettings.detectEncoding: encoding = self.detectEncoding(data[:2048]) encoding = encoding or globalSettings.defaultCodec or None try: text = data.decode(encoding or locale.getpreferredencoding(False)) except (UnicodeDecodeError, LookupError) as ex: QMessageBox.warning(self, '', str(ex)) return if encoding: # If encoding is specified or detected, we should save the file with # the same encoding self.editBox.document().setProperty("encoding", encoding) self._fileName = fileName if previousFileName != self._fileName: self.updateActiveMarkupClass() self.forceDisableAutoSave = False self.editBox.setPlainText(text) self.editBox.document().setModified(False) self.handleModificationChanged() cssFileName = self.getBaseName() + '.css' self.cssFileExists = QFile.exists(cssFileName) if previousFileName != self._fileName: self.fileNameChanged.emit() def writeTextToFile(self, fileName=None): # Just writes the text to file, without any changes to tab object # Used directly for e.g. export extensions # Get text from the cursor to avoid tweaking special characters, # see https://bugreports.qt.io/browse/QTBUG-57552 and # https://github.com/retext-project/retext/issues/216 cursor = self.editBox.textCursor() cursor.select(QTextCursor.SelectionType.Document) text = cursor.selectedText().replace('\u2029', '\n') fileName = fileName or self._fileName encoding = self.editBox.document().property("encoding") encoding = encoding or globalSettings.defaultCodec or None try: data = text.encode(encoding or locale.getpreferredencoding(False)) except (UnicodeEncodeError, LookupError) as ex: QMessageBox.warning(self, '', str(ex)) return False try: with open(fileName, 'wb') as savefile: savefile.write(data) except OSError as ex: QMessageBox.warning(self, '', str(ex)) return False return True def saveTextToFile(self, fileName=None): # Sets fileName as tab fileName and writes the text to that file if self._fileName: self.p.fileSystemWatcher.removePath(self._fileName) result = self.writeTextToFile(fileName) if result: self.forceDisableAutoSave = False self.editBox.document().setModified(False) self.p.fileSystemWatcher.addPath(fileName or self._fileName) if fileName and self._fileName != fileName: self._fileName = fileName self.updateActiveMarkupClass() self.fileNameChanged.emit() return result def goToLine(self,line): block = self.editBox.document().findBlockByLineNumber(line) if block.isValid(): newCursor = QTextCursor(block) self.editBox.setTextCursor(newCursor) def find(self, text, flags, replaceText=None, wrap=False): if self.previewState == PreviewNormal and replaceText is None: return self.previewBox.findText(text, flags) cursor = self.editBox.textCursor() if wrap and flags & QTextDocument.FindFlag.FindBackward: cursor.movePosition(QTextCursor.MoveOperation.End) elif wrap: cursor.movePosition(QTextCursor.MoveOperation.Start) if replaceText is not None and cursor.selectedText() == text: newCursor = cursor else: newCursor = self.editBox.document().find(text, cursor, flags) if not newCursor.isNull(): if replaceText is not None: newCursor.insertText(replaceText) newCursor.movePosition(QTextCursor.MoveOperation.Left, QTextCursor.MoveMode.MoveAnchor, len(replaceText)) newCursor.movePosition(QTextCursor.MoveOperation.Right, QTextCursor.MoveMode.KeepAnchor, len(replaceText)) self.editBox.setTextCursor(newCursor) if self.editBox.cursorRect().bottom() >= self.editBox.height() - 3: scrollValue = self.editBox.verticalScrollBar().value() areaHeight = self.editBox.fontMetrics().height() self.editBox.verticalScrollBar().setValue(scrollValue + areaHeight) return True if not wrap: return self.find(text, flags, replaceText, True) return False def replaceAll(self, text, replaceText): cursor = self.editBox.textCursor() cursor.beginEditBlock() cursor.movePosition(QTextCursor.MoveOperation.Start) flags = QTextDocument.FindFlag(0) cursor = lastCursor = self.editBox.document().find(text, cursor, flags) while not cursor.isNull(): cursor.insertText(replaceText) lastCursor = cursor cursor = self.editBox.document().find(text, cursor, flags) if not lastCursor.isNull(): lastCursor.movePosition(QTextCursor.MoveOperation.Left, QTextCursor.MoveMode.MoveAnchor, len(replaceText)) lastCursor.movePosition(QTextCursor.MoveOperation.Right, QTextCursor.MoveMode.KeepAnchor, len(replaceText)) self.editBox.setTextCursor(lastCursor) self.editBox.textCursor().endEditBlock() return not lastCursor.isNull() def openSourceFile(self, linkPath): """Finds and opens the source file for link target fileToOpen. When links like [test](test) are clicked, the file test.md is opened. It has to be located next to the current opened file. Relative paths like [test](../test) or [test](folder/test) are also possible. """ fileToOpen = self.resolveSourceFile(linkPath) if exists(fileToOpen) and get_markup_for_file_name(fileToOpen, return_class=True): self.p.openFileWrapper(fileToOpen) return fileToOpen if get_markup_for_file_name(fileToOpen, return_class=True): if not QFile.exists(fileToOpen) and QFileInfo(fileToOpen).dir().exists(): if self.promptFileCreation(fileToOpen): self.p.openFileWrapper(fileToOpen) return fileToOpen def promptFileCreation(self, fileToCreate): """ Prompt user if a file should be created for the clicked link, and try to create it. Return True on success. """ buttonReply = QMessageBox.question(self, self.tr('Create missing file?'), self.tr("The file '%s' does not exist.\n\nDo you want to create it?") % fileToCreate, QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, QMessageBox.StandardButton.No) if buttonReply == QMessageBox.StandardButton.Yes: return self.createFile(fileToCreate) elif buttonReply == QMessageBox.StandardButton.No: return False def resolveSourceFile(self, linkPath): """ Finds the actual path of the file to open in a new tab. When the link has no extension, eg: [Test](test), the extension of the current file is assumed (eg test.md for a markdown file). When the link is an html file eg: [Test](test.html), the extension of the current file is assumed (eg test.md for a markdown file). Relative paths like [test](../test) or [test](folder/test) are also possible. """ basename, ext = splitext(linkPath) if self.fileName: currentExt = splitext(self.fileName)[1] if ext in ('.html', '') and (exists(basename+currentExt) or not exists(linkPath)): ext = currentExt return basename+ext def createFile(self, fileToCreate): """Try to create file, return True if successful""" try: # Create file: open(fileToCreate, 'x').close() return True except OSError as err: QMessageBox.warning(self, self.tr("File could not be created"), self.tr("Could not create file '%s': %s") % (fileToCreate, err)) return False def autoSaveActive(self) -> bool: return (globalSettings.autoSave and not self.forceDisableAutoSave and self.fileName is not None and QFileInfo(self.fileName).isWritable()) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/tabledialog.py0000644000175000017500000000627714575336012016454 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2018 Changhee Kim, 2018-2022 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from markups import ReStructuredTextMarkup from PyQt6.QtCore import Qt from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QGridLayout, QLabel, \ QSpinBox class InsertTableDialog(QDialog): def __init__(self, parent): QDialog.__init__(self, parent) self.parent = parent self.setWindowTitle(self.tr('Insert table')) buttonBox = QDialogButtonBox(self) buttonBox.setStandardButtons(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel) buttonBox.accepted.connect(self.makeTable) buttonBox.rejected.connect(self.close) layout = QGridLayout(self) rowsLabel = QLabel(self.tr('Number of rows') + ':', self) columnsLabel = QLabel(self.tr('Number of columns') + ':', self) self.rowsSpinBox = QSpinBox(self) self.columnsSpinBox = QSpinBox(self) self.rowsSpinBox.setRange(1, 10) self.columnsSpinBox.setRange(1, 10) self.rowsSpinBox.setValue(3) self.columnsSpinBox.setValue(3) layout.addWidget(rowsLabel, 0, 0) layout.addWidget(self.rowsSpinBox, 0, 1, Qt.AlignmentFlag.AlignRight) layout.addWidget(columnsLabel, 1, 0) layout.addWidget(self.columnsSpinBox, 1, 1, Qt.AlignmentFlag.AlignRight) layout.addWidget(buttonBox, 2, 0, 1, 2) def makeTable(self): rowsCount = self.rowsSpinBox.value() columnsCount = self.columnsSpinBox.value() + 1 tab = self.parent.currentTab cursor = tab.editBox.textCursor() tableCode = '' if cursor.atBlockStart() else '\n\n' if tab.activeMarkupClass == ReStructuredTextMarkup: # Insert reStructuredText grid table tableCode += '-----'.join('+' * columnsCount) + '\n' tableCode += ' '.join('|' * columnsCount) + '\n' tableCode += '====='.join('+' * columnsCount) + '\n' tableCode += (' '.join('|' * columnsCount) + '\n' + '-----'.join('+' * columnsCount) + '\n') * rowsCount else: # Insert Markdown table tableCode += ' '.join('|' * columnsCount) + '\n' tableCode += '-----'.join('|' * columnsCount) + '\n' tableCode += (' '.join('|' * columnsCount) + '\n') * rowsCount cursor.insertText(tableCode) self.close() # Activate the Table editing mode self.parent.actionTableMode.setChecked(True) tab.editBox.tableModeEnabled = True ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/tablemode.py0000644000175000017500000002166514575336012016137 0ustar00dmitrydmitry# vim: ts=8:sts=8:sw=8:noexpandtab # # This file is part of ReText # Copyright: 2014, 2017 Maurice van der Pot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import sys from markups import MarkdownMarkup, ReStructuredTextMarkup from PyQt6.QtGui import QTextCursor LARGER_THAN_ANYTHING = sys.maxsize class Row: def __init__(self, block=None, text=None, separatorline=False, paddingchar=' '): self.block = block self.text = text self.separatorline = separatorline self.paddingchar = paddingchar def __repr__(self): return "" % (self.text, self.separatorline, self.paddingchar) def _getTableLines(doc, pos, markupClass): startblock = doc.findBlock(pos) editedlineindex = 0 offset = pos - startblock.position() rows = [ Row(block = startblock, text = startblock.text()) ] block = startblock.previous() while any(c in block.text() for c in '+|'): rows.insert(0, Row(block = block, text = block.text())) editedlineindex += 1 block = block.previous() block = startblock.next() while any(c in block.text() for c in '+|'): rows.append(Row(block = block, text = block.text())) block = block.next() if markupClass == MarkdownMarkup: for i, row in enumerate(rows): if i == 1: row.separatorline = True row.paddingchar = '-' elif markupClass == ReStructuredTextMarkup: for row in rows: if row.text.strip().startswith(('+-','+=')): row.separatorline = True row.paddingchar = row.text.strip()[1] row.text = row.text.replace('+', '|') return rows, editedlineindex, offset # Modify the edited line to put the table borders after the edition in their original positions. # It does not matter that this function changes the position of table borders before the edition, # because table editing mode only ever changes the table to the right of the cursor position. def _sortaUndoEdit(rows, editedlineindex, offset, editsize): aftertext = rows[editedlineindex].text if editsize < 0: beforetext = ' ' * -editsize + aftertext else: beforetext = aftertext[:offset] + aftertext[offset + editsize:] rows[editedlineindex].text = beforetext # Given text and the position of the n-th edge, returns n - 1 def _getEdgeIndex(text, edge): return text[:edge].count('|') def _determineRoomInCell(row, edge, edgeIndex, shrinking, startposition=0): if len(row.text) > edge and row.text[edge] == '|' and \ (not edgeIndex or _getEdgeIndex(row.text, edge) == edgeIndex): clearance = 0 cellwidth = 0 afterContent = True for i in range(edge - 1, startposition - 1, -1): if row.text[i] == '|': break else: if row.text[i] == row.paddingchar and afterContent: clearance += 1 else: afterContent = False cellwidth += 1 if row.separatorline: if shrinking: # do not shrink separator cells below 3 room = max(0, cellwidth - 3) else: # start expanding the cell if only the space for a right-align marker is left room = max(0, cellwidth - 1) else: room = clearance else: room = LARGER_THAN_ANYTHING return room # Add an edit for a row to match the specified shift if it has an edge on the # specified position def _performShift(row, rowShift, edge, edgeIndex, shift): editlist = [] # Any row that has an edge on the specified position and that doesn't # already have edits that shift it 'shift' positions, will get an # additional edit if len(row.text) > edge and row.text[edge] == '|' and rowShift != shift and \ (not edgeIndex or _getEdgeIndex(row.text, edge) == edgeIndex): editsize = -(rowShift - shift) rowShift = shift # Insert one position further to the left on separator lines, because # there may be a space (for esthetical reasons) or an alignment marker # on the last position before the edge and that should stay next to the # edge. if row.separatorline: edge -= 1 editlist.append((edge, editsize)) return editlist, rowShift # Finds the next edge position starting at offset in any row that is shifting. # Rows that are not shifting when we are searching for an edge starting at # offset, are rows that (upto offset) did not have any edges that aligned with # shifting edges on other rows. def _determineNextEdge(rows, rowShifts, offset): nextedge = None nextedgerow = None for row, rowShift in zip(rows, rowShifts): if rowShift != 0: edge = row.text.find('|', offset) if edge != -1 and (nextedge is None or edge < nextedge): nextedge = edge nextedgerow = row return nextedge, _getEdgeIndex(nextedgerow.text, nextedge) if nextedge else None # Return a list of edits to be made in other lines to adapt the table lines to # a single edit in the edited line. def _determineEditLists(rows, editedlineindex, offset, editsize, alignWithAnyEdge): # rowShift represents how much the characters on a line will shift as a # result of the already collected edits to be made. rowShifts = [0 for _ in rows] rowShifts[editedlineindex] = editsize editLists = [[] for _ in rows] # Find the next edge position on the edited row currentedge, currentedgeindex = _determineNextEdge(rows, rowShifts, offset) firstEdge = True while currentedge: if alignWithAnyEdge: # Ignore what column the edge belongs to currentedgeindex = None if editsize < 0: # How much an edge shifts to the left depends on how much room # there is in the cells on any row that shares this edge. leastLeftShift = min((-rowShift + _determineRoomInCell(row, currentedge, currentedgeindex, True) for row, rowShift in zip(rows, rowShifts))) shift = max(editsize, -leastLeftShift) else: # When shifting right, determine how much only once based on how # much the edited cell needs to expand if firstEdge: room = _determineRoomInCell(rows[editedlineindex], currentedge, currentedgeindex, False, offset) shift = max(0, editsize - room) for i, row in enumerate(rows): editList, newRowShift = _performShift(row, rowShifts[i], currentedge, currentedgeindex, shift) rowShifts[i] = newRowShift editLists[i].extend(editList) currentedge, currentedgeindex = _determineNextEdge(rows, rowShifts, currentedge + 1) firstEdge = False return editLists def _performEdits(cursor, rows, editLists, linewithoffset, offset): cursor.joinPreviousEditBlock() for i, (row, editList) in enumerate(zip(rows, editLists)): for editpos, editsize in sorted(editList, reverse=True): if i == linewithoffset: editpos += offset cursor.setPosition(row.block.position() + editpos) if editsize > 0: cursor.insertText(editsize * row.paddingchar) else: for _ in range(-editsize): cursor.deletePreviousChar() cursor.endEditBlock() def adjustTableToChanges(doc, pos, editsize, markupClass): if markupClass in (MarkdownMarkup, ReStructuredTextMarkup): # This is needed because in ReSt cells can span multiple columns # and we can therefore not determine which edges in other rows # are supposed to be aligned with the edges in the edited row. alignWithAnyEdge = (markupClass == ReStructuredTextMarkup) rows, editedlineindex, offset = _getTableLines(doc, pos, markupClass) _sortaUndoEdit(rows, editedlineindex, offset, editsize) editLists = _determineEditLists(rows, editedlineindex, offset, editsize, alignWithAnyEdge) cursor = QTextCursor(doc) _performEdits(cursor, rows, editLists, editedlineindex, editsize) def handleReturn(cursor, markupClass, newRow): if markupClass not in (MarkdownMarkup, ReStructuredTextMarkup): return False positionInBlock = cursor.positionInBlock() cursor.select(QTextCursor.SelectionType.BlockUnderCursor) oldLine = cursor.selectedText().lstrip('\u2029') if not ('| ' in oldLine or ' |' in oldLine): cursor.setPosition(cursor.block().position() + positionInBlock) return False indent = 0 while oldLine[indent] in ' \t': indent += 1 indentChars, oldLine = oldLine[:indent], oldLine[indent:] newLine = ''.join('|' if c in '+|' else ' ' for c in oldLine).rstrip() cursor.movePosition(QTextCursor.MoveOperation.EndOfBlock) if newRow and markupClass == MarkdownMarkup: sepLine = ''.join(c if c in ' |' else '-' for c in oldLine) cursor.insertText('\n' + indentChars + sepLine) elif newRow: sepLine = ''.join('+' if c in '+|' else '-' for c in oldLine) cursor.insertText('\n' + indentChars + sepLine) cursor.insertText('\n' + indentChars + newLine) positionInBlock = min(positionInBlock, len(indentChars + newLine)) cursor.setPosition(cursor.block().position() + positionInBlock) return True ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/webenginepreview.py0000644000175000017500000001626414575336012017547 0ustar00dmitrydmitry# vim: ts=4:sw=4:expandtab # This file is part of ReText # Copyright: 2017-2023 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from ReText import globalSettings from ReText.syncscroll import SyncScroll from PyQt6.QtCore import QEvent, Qt from PyQt6.QtGui import QDesktopServices, QFontInfo, QGuiApplication, QTextDocument from PyQt6.QtWebEngineCore import ( QWebEnginePage, QWebEngineSettings, QWebEngineUrlRequestInfo, QWebEngineUrlRequestInterceptor, ) from PyQt6.QtWebEngineWidgets import QWebEngineView class ReTextWebEngineUrlRequestInterceptor(QWebEngineUrlRequestInterceptor): def interceptRequest(self, info): if (info.resourceType() == QWebEngineUrlRequestInfo.ResourceType.ResourceTypeXhr and info.requestUrl().isLocalFile()): # For security reasons, disable XMLHttpRequests to local files info.block(True) class ReTextWebEnginePage(QWebEnginePage): def __init__(self, parent, tab): QWebEnginePage.__init__(self, parent) self.tab = tab self.interceptor = ReTextWebEngineUrlRequestInterceptor(self) self.setUrlRequestInterceptor(self.interceptor) def setScrollPosition(self, pos): self.runJavaScript("window.scrollTo(%s, %s);" % (pos.x(), pos.y())) def getPositionMap(self, callback): def resultCallback(result): if result: return callback({int(a): b for a, b in result.items()}) script = """ var elements = document.querySelectorAll('[data-posmap]'); var result = {}; var bodyTop = document.body.getBoundingClientRect().top; for (var i = 0; i < elements.length; ++i) { var element = elements[i]; value = element.getAttribute('data-posmap'); bottom = element.getBoundingClientRect().bottom - bodyTop; result[value] = bottom; } result; """ self.runJavaScript(script, resultCallback) def javaScriptConsoleMessage(self, level, message, lineNumber, sourceId): print("level=%r message=%r lineNumber=%r sourceId=%r" % (level, message, lineNumber, sourceId)) def acceptNavigationRequest(self, url, type, isMainFrame): if not isMainFrame: return True if url.scheme() == "data": return True if url.isLocalFile(): localFile = url.toLocalFile() if localFile == self.tab.fileName: self.tab.startPendingConversion() return False if self.tab.openSourceFile(localFile): return False if globalSettings.handleWebLinks: return True QDesktopServices.openUrl(url) return False class ReTextWebEnginePreview(QWebEngineView): def __init__(self, tab, editorPositionToSourceLineFunc, sourceLineToEditorPositionFunc): QWebEngineView.__init__(self, parent=tab) webPage = ReTextWebEnginePage(self, tab) self.setPage(webPage) self.syncscroll = SyncScroll(webPage, editorPositionToSourceLineFunc, sourceLineToEditorPositionFunc) self.editBox = tab.editBox settings = self.settings() settings.setDefaultTextEncoding('utf-8') settings.setAttribute(QWebEngineSettings.WebAttribute.LocalContentCanAccessRemoteUrls, True) # Events relevant to sync scrolling self.editBox.cursorPositionChanged.connect(self._handleCursorPositionChanged) self.editBox.verticalScrollBar().valueChanged.connect(self.syncscroll.handleEditorScrolled) self.editBox.resized.connect(self._handleEditorResized) # Scroll the preview when the mouse wheel is used to scroll # beyond the beginning/end of the editor self.editBox.scrollLimitReached.connect(self._handleWheelEvent) def setFont(self, font): settings = self.settings() settings.setFontFamily(QWebEngineSettings.FontFamily.StandardFont, font.family()) settings.setFontSize(QWebEngineSettings.FontSize.DefaultFontSize, QFontInfo(font).pixelSize()) def setHtml(self, html, baseUrl): # A hack to prevent WebEngine from stealing the focus self.setEnabled(False) super().setHtml(html, baseUrl) self.setEnabled(True) def _handleWheelEvent(self, event): # Only pass wheelEvents on to the preview if syncscroll is # controlling the position of the preview if self.syncscroll.isActive(): QGuiApplication.sendEvent(self.focusProxy(), event) def event(self, event): # Work-around https://bugreports.qt.io/browse/QTBUG-43602 if event.type() == QEvent.Type.ChildAdded: event.child().installEventFilter(self) elif event.type() == QEvent.Type.ChildRemoved: event.child().removeEventFilter(self) return super().event(event) def eventFilter(self, object, event): if event.type() == QEvent.Type.Wheel: if QGuiApplication.keyboardModifiers() == Qt.KeyboardModifier.ControlModifier: self.wheelEvent(event) return True return False def findText(self, text, flags): options = QWebEnginePage.FindFlag(0) if flags & QTextDocument.FindFlag.FindBackward: options |= QWebEnginePage.FindFlag.FindBackward if flags & QTextDocument.FindFlag.FindCaseSensitively: options |= QWebEnginePage.FindFlag.FindCaseSensitively super().findText(text, options) return True def disconnectExternalSignals(self): self.editBox.cursorPositionChanged.disconnect(self._handleCursorPositionChanged) self.editBox.verticalScrollBar().valueChanged.disconnect(self.syncscroll.handleEditorScrolled) self.editBox.resized.disconnect(self._handleEditorResized) self.editBox.scrollLimitReached.disconnect(self._handleWheelEvent) def _handleCursorPositionChanged(self): editorCursorPosition = self.editBox.verticalScrollBar().value() + \ self.editBox.cursorRect().top() self.syncscroll.handleCursorPositionChanged(editorCursorPosition) def _handleEditorResized(self, rect): self.syncscroll.handleEditorResized(rect.height()) def wheelEvent(self, event): if QGuiApplication.keyboardModifiers() == Qt.KeyboardModifier.ControlModifier: zoomFactor = self.zoomFactor() zoomFactor *= 1.001 ** event.angleDelta().y() self.setZoomFactor(zoomFactor) return super().wheelEvent(event) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/ReText/window.py0000644000175000017500000014176014575355070015516 0ustar00dmitrydmitry# vim: ts=8:sts=8:sw=8:noexpandtab # # This file is part of ReText # Copyright: 2012-2024 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import markups import sys import os from subprocess import Popen import warnings from ReText import (getBundledIcon, app_version, globalSettings, readListFromSettings, writeListToSettings) from ReText.tab import (ReTextTab, ReTextWebEnginePreview, PreviewDisabled, PreviewNormal, PreviewLive) from ReText.dialogs import EncodingDialog, HtmlDialog, LocaleDialog from ReText.config import ConfigDialog, setIconThemeFromSettings from ReText.tabledialog import InsertTableDialog try: from ReText.fakevimeditor import ReTextFakeVimHandler, FakeVimMode except ImportError: ReTextFakeVimHandler = None try: import enchant except ImportError: enchant = None from PyQt6.QtCore import QDir, QFile, QFileInfo, QFileSystemWatcher, \ QIODevice, QLocale, QMarginsF, QStandardPaths, QTextStream, QTimer, \ QUrl, Qt, pyqtSlot from PyQt6.QtGui import QAction, QActionGroup, QColor, QDesktopServices, \ QFileSystemModel, QIcon, QKeySequence, QPageLayout, QPageSize, \ QPalette, QTextDocument, QTextDocumentWriter from PyQt6.QtWidgets import QApplication, QCheckBox, QComboBox, QDialog, \ QFileDialog, QFontDialog, QInputDialog, QLineEdit, QMainWindow, QMenu, \ QMessageBox, QSplitter, QTabWidget, QToolBar, QToolButton, QTreeView from PyQt6.QtPrintSupport import QPrintDialog, QPrintPreviewDialog, QPrinter class ReTextWindow(QMainWindow): def __init__(self, parent=None): QMainWindow.__init__(self, parent) self.resize(950, 700) qApp = QApplication.instance() screenRect = self.screen().geometry() if globalSettings.windowGeometry: self.restoreGeometry(globalSettings.windowGeometry) else: self.move((screenRect.width() - self.width()) // 2, (screenRect.height() - self.height()) // 2) if not screenRect.contains(self.geometry()): self.showMaximized() if sys.platform.startswith('darwin'): # https://github.com/retext-project/retext/issues/198 searchPaths = QIcon.themeSearchPaths() searchPaths.append('/opt/local/share/icons') searchPaths.append('/usr/local/share/icons') QIcon.setThemeSearchPaths(searchPaths) setIconThemeFromSettings() if QFile.exists(getBundledIcon('retext')): self.setWindowIcon(QIcon(getBundledIcon('retext'))) elif QFile.exists('/usr/share/pixmaps/retext.png'): self.setWindowIcon(QIcon('/usr/share/pixmaps/retext.png')) else: self.setWindowIcon(QIcon.fromTheme('retext', QIcon.fromTheme('accessories-text-editor'))) self.splitter = QSplitter(self) self.treeView = QTreeView(self.splitter) self.treeView.doubleClicked.connect(self.treeItemSelected) self.tabWidget = QTabWidget(self.splitter) self.initTabWidget() self.splitter.setSizes([self.width() // 5, self.width() * 4 // 5]) self.initDirectoryTree(globalSettings.showDirectoryTree, globalSettings.directoryPath) self.setCentralWidget(self.splitter) self.tabWidget.currentChanged.connect(self.changeIndex) self.tabWidget.tabCloseRequested.connect(self.closeTab) self.toolBar = QToolBar(self.tr('File toolbar'), self) self.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.toolBar) self.editBar = QToolBar(self.tr('Edit toolbar'), self) self.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.editBar) self.searchBar = QToolBar(self.tr('Search toolbar'), self) self.addToolBar(Qt.ToolBarArea.BottomToolBarArea, self.searchBar) self.toolBar.setVisible(not globalSettings.hideToolBar) self.editBar.setVisible(not globalSettings.hideToolBar) self.actionNew = self.act(self.tr('New'), 'document-new', self.createNew, shct=QKeySequence.StandardKey.New) self.actionOpen = self.act(self.tr('Open'), 'document-open', self.openFile, shct=QKeySequence.StandardKey.Open) self.actionSetEncoding = self.act(self.tr('Set encoding'), trig=self.showEncodingDialog) self.actionSetEncoding.setEnabled(False) self.actionReload = self.act(self.tr('Reload'), 'view-refresh', lambda: self.currentTab.readTextFromFile()) self.actionReload.setEnabled(False) self.actionSave = self.act(self.tr('Save'), 'document-save', self.saveFile, shct=QKeySequence.StandardKey.Save) self.actionSave.setEnabled(False) self.actionSaveAs = self.act(self.tr('Save as'), 'document-save-as', self.saveFileAs, shct=QKeySequence.StandardKey.SaveAs) self.actionNextTab = self.act(self.tr('Next tab'), 'go-next', lambda: self.switchTab(1), shct=Qt.Modifier.CTRL | Qt.Key.Key_PageDown) self.actionPrevTab = self.act(self.tr('Previous tab'), 'go-previous', lambda: self.switchTab(-1), shct=Qt.Modifier.CTRL | Qt.Key.Key_PageUp) self.actionCloseCurrentTab = self.act(self.tr('Close tab'), 'window-close', lambda: self.closeTab(self.ind), shct=QKeySequence.StandardKey.Close) self.actionPrint = self.act(self.tr('Print'), 'document-print', self.printFile, shct=QKeySequence.StandardKey.Print) self.actionPrintPreview = self.act(self.tr('Print preview'), 'document-print-preview', self.printPreview) self.actionViewHtml = self.act(self.tr('View HTML code'), 'text-html', self.viewHtml) self.actionChangeEditorFont = self.act(self.tr('Change editor font'), trig=self.changeEditorFont) self.actionChangePreviewFont = self.act(self.tr('Change preview font'), trig=self.changePreviewFont) self.actionSearch = self.act(self.tr('Find text'), 'edit-find', self.search, shct=QKeySequence.StandardKey.Find) self.actionGoToLine = self.act(self.tr('Go to line'), trig=self.goToLine, shct=Qt.Modifier.CTRL | Qt.Key.Key_G) self.searchBar.visibilityChanged.connect(self.searchBarVisibilityChanged) self.actionPreview = self.act(self.tr('Preview'), shct=Qt.Modifier.CTRL | Qt.Key.Key_E, trigbool=self.preview) if QIcon.hasThemeIcon('document-preview'): self.actionPreview.setIcon(QIcon.fromTheme('document-preview')) elif QIcon.hasThemeIcon('preview-file'): self.actionPreview.setIcon(QIcon.fromTheme('preview-file')) elif QIcon.hasThemeIcon('x-office-document'): self.actionPreview.setIcon(QIcon.fromTheme('x-office-document')) else: self.actionPreview.setIcon(QIcon(getBundledIcon('document-preview'))) self.actionLivePreview = self.act(self.tr('Live preview'), shct=Qt.Modifier.CTRL | Qt.Key.Key_L, trigbool=self.enableLivePreview) menuPreview = QMenu() menuPreview.addAction(self.actionLivePreview) self.actionInsertTable = self.act(self.tr('Insert table'), trig=lambda: self.insertFormatting('table')) self.actionTableMode = self.act(self.tr('Table editing mode'), shct=Qt.Modifier.CTRL | Qt.Key.Key_T, trigbool=lambda x: self.currentTab.editBox.enableTableMode(x)) self.actionInsertImages = self.act(self.tr('Insert images by file path'), trig=lambda: self.insertImages()) if ReTextFakeVimHandler: self.actionFakeVimMode = self.act(self.tr('FakeVim mode'), shct=Qt.Modifier.CTRL | Qt.Modifier.ALT | Qt.Key.Key_V, trigbool=self.enableFakeVimMode) if globalSettings.useFakeVim: self.actionFakeVimMode.setChecked(True) self.enableFakeVimMode(True) self.actionFullScreen = self.act(self.tr('Fullscreen mode'), 'view-fullscreen', shct=QKeySequence.StandardKey.FullScreen, trigbool=self.enableFullScreen) self.actionFullScreen.setChecked(self.isFullScreen()) self.actionConfig = self.act(self.tr('Preferences'), icon='preferences-system', trig=self.openConfigDialog) self.actionConfig.setMenuRole(QAction.MenuRole.PreferencesRole) self.actionSaveHtml = self.act('HTML', 'text-html', self.saveFileHtml) self.actionPdf = self.act('PDF', 'application-pdf', self.savePdf) self.actionOdf = self.act('ODT', 'x-office-document', self.saveOdf) self.getExportExtensionsList() self.actionQuit = self.act(self.tr('Quit'), 'application-exit', shct=QKeySequence.StandardKey.Quit) self.actionQuit.setMenuRole(QAction.MenuRole.QuitRole) self.actionQuit.triggered.connect(self.close) self.actionUndo = self.act(self.tr('Undo'), 'edit-undo', lambda: self.currentTab.editBox.undo(), shct=QKeySequence.StandardKey.Undo) self.actionRedo = self.act(self.tr('Redo'), 'edit-redo', lambda: self.currentTab.editBox.redo(), shct=QKeySequence.StandardKey.Redo) self.actionCopy = self.act(self.tr('Copy'), 'edit-copy', lambda: self.currentTab.editBox.copy(), shct=QKeySequence.StandardKey.Copy) self.actionCut = self.act(self.tr('Cut'), 'edit-cut', lambda: self.currentTab.editBox.cut(), shct=QKeySequence.StandardKey.Cut) self.actionPaste = self.act(self.tr('Paste'), 'edit-paste', lambda: self.currentTab.editBox.paste(), shct=QKeySequence.StandardKey.Paste) self.actionPasteImage = self.act(self.tr('Paste image'), 'edit-paste', lambda: self.currentTab.editBox.pasteImage(), shct=Qt.Modifier.CTRL | Qt.Modifier.SHIFT | Qt.Key.Key_V) self.actionMoveUp = self.act(self.tr('Move line up'), 'go-up', lambda: self.currentTab.editBox.moveLineUp(), shct=Qt.Modifier.ALT | Qt.Key.Key_Up) self.actionMoveDown = self.act(self.tr('Move line down'), 'go-down', lambda: self.currentTab.editBox.moveLineDown(), shct=Qt.Modifier.ALT | Qt.Key.Key_Down) self.actionUndo.setEnabled(False) self.actionRedo.setEnabled(False) self.actionCopy.setEnabled(False) self.actionCut.setEnabled(False) qApp.clipboard().dataChanged.connect(self.clipboardDataChanged) self.clipboardDataChanged() self.actionEnableSC = self.act(self.tr('Enable'), trigbool=self.enableSpellCheck) self.actionSetLocale = self.act(self.tr('Set locale'), trig=self.changeLocale) self.actionWebEngine = self.act(self.tr('Use WebEngine (Chromium) renderer'), trigbool=self.enableWebEngine) if ReTextWebEnginePreview is None: globalSettings.useWebEngine = False self.actionWebEngine.setEnabled(False) self.actionWebEngine.setChecked(globalSettings.useWebEngine) self.actionShow = self.act(self.tr('Show directory'), 'system-file-manager', self.showInDir) self.actionFind = self.act(self.tr('Next'), 'go-next', self.find, shct=QKeySequence.StandardKey.FindNext) self.actionFindPrev = self.act(self.tr('Previous'), 'go-previous', lambda: self.find(back=True), shct=QKeySequence.StandardKey.FindPrevious) self.actionReplace = self.act(self.tr('Replace'), 'edit-find-replace', lambda: self.find(replace=True)) self.actionReplaceAll = self.act(self.tr('Replace all'), trig=self.replaceAll) menuReplace = QMenu() menuReplace.addAction(self.actionReplaceAll) self.actionCloseSearch = self.act(self.tr('Close'), 'window-close', lambda: self.searchBar.setVisible(False), shct=QKeySequence.StandardKey.Cancel) self.actionCloseSearch.setPriority(QAction.Priority.LowPriority) self.actionHelp = self.act(self.tr('Get help online'), 'help-contents', self.openHelp) self.actionWhatsNew = self.act(self.tr("What's new"), trig=self.openReleases) self.aboutWindowTitle = self.tr('About ReText') self.actionAbout = self.act(self.aboutWindowTitle, 'help-about', self.aboutDialog) self.actionAbout.setMenuRole(QAction.MenuRole.AboutRole) self.actionAboutQt = self.act(self.tr('About Qt')) self.actionAboutQt.setMenuRole(QAction.MenuRole.AboutQtRole) self.actionAboutQt.triggered.connect(qApp.aboutQt) availableMarkups = markups.get_available_markups() if not availableMarkups: print('Warning: no markups are available!') if len(availableMarkups) > 1: self.chooseGroup = QActionGroup(self) markupActions = [] for markup in availableMarkups: markupAction = self.act(markup.name, trigbool=self.markupFunction(markup)) if markup.name == globalSettings.defaultMarkup: markupAction.setChecked(True) self.chooseGroup.addAction(markupAction) markupActions.append(markupAction) self.actionBold = self.act(self.tr('Bold'), shct=QKeySequence.StandardKey.Bold, trig=lambda: self.insertFormatting('bold')) self.actionItalic = self.act(self.tr('Italic'), shct=QKeySequence.StandardKey.Italic, trig=lambda: self.insertFormatting('italic')) self.actionUnderline = self.act(self.tr('Underline'), shct=QKeySequence.StandardKey.Underline, trig=lambda: self.insertFormatting('underline')) self.usefulTags = ('header', 'italic', 'bold', 'underline', 'numbering', 'bullets', 'image', 'link', 'inline code', 'code block', 'blockquote', 'table') self.usefulChars = ('deg', 'divide', 'euro', 'hellip', 'laquo', 'larr', 'lsquo', 'mdash', 'middot', 'minus', 'nbsp', 'ndash', 'raquo', 'rarr', 'rsquo', 'times') self.formattingBox = QComboBox(self.editBar) self.formattingBox.addItem(self.tr('Formatting')) self.formattingBox.addItems(self.usefulTags) self.formattingBox.textActivated.connect(self.insertFormatting) self.symbolBox = QComboBox(self.editBar) self.symbolBox.addItem(self.tr('Symbols')) self.symbolBox.addItems(self.usefulChars) self.symbolBox.activated.connect(self.insertSymbol) self.updateStyleSheet() menubar = self.menuBar() menuFile = menubar.addMenu(self.tr('&File')) menuEdit = menubar.addMenu(self.tr('&Edit')) menuHelp = menubar.addMenu(self.tr('&Help')) menuFile.addAction(self.actionNew) menuFile.addAction(self.actionOpen) self.menuRecentFiles = menuFile.addMenu(self.tr('Open recent')) self.menuRecentFiles.aboutToShow.connect(self.updateRecentFiles) menuFile.addAction(self.actionShow) menuFile.addAction(self.actionSetEncoding) menuFile.addAction(self.actionReload) menuFile.addSeparator() menuFile.addAction(self.actionSave) menuFile.addAction(self.actionSaveAs) menuFile.addSeparator() menuFile.addAction(self.actionNextTab) menuFile.addAction(self.actionPrevTab) menuFile.addAction(self.actionCloseCurrentTab) menuFile.addSeparator() menuExport = menuFile.addMenu(self.tr('Export')) menuExport.addAction(self.actionSaveHtml) menuExport.addAction(self.actionOdf) menuExport.addAction(self.actionPdf) if self.extensionActions: menuExport.addSeparator() for action, mimetype in self.extensionActions: menuExport.addAction(action) menuExport.aboutToShow.connect(self.updateExtensionsVisibility) menuFile.addAction(self.actionPrint) menuFile.addAction(self.actionPrintPreview) menuFile.addSeparator() menuFile.addAction(self.actionQuit) menuEdit.addAction(self.actionUndo) menuEdit.addAction(self.actionRedo) menuEdit.addSeparator() menuEdit.addAction(self.actionCut) menuEdit.addAction(self.actionCopy) menuEdit.addAction(self.actionPaste) menuEdit.addAction(self.actionPasteImage) menuEdit.addSeparator() menuEdit.addAction(self.actionMoveUp) menuEdit.addAction(self.actionMoveDown) menuEdit.addSeparator() if enchant is not None: menuSC = menuEdit.addMenu(self.tr('Spell check')) menuSC.addAction(self.actionEnableSC) menuSC.addAction(self.actionSetLocale) menuEdit.addAction(self.actionSearch) menuEdit.addAction(self.actionGoToLine) menuEdit.addAction(self.actionChangeEditorFont) menuEdit.addAction(self.actionChangePreviewFont) menuEdit.addSeparator() if len(availableMarkups) > 1: self.menuMode = menuEdit.addMenu(self.tr('Default markup')) for markupAction in markupActions: self.menuMode.addAction(markupAction) menuFormat = menuEdit.addMenu(self.tr('Formatting')) menuFormat.addAction(self.actionBold) menuFormat.addAction(self.actionItalic) menuFormat.addAction(self.actionUnderline) menuEdit.addAction(self.actionWebEngine) menuEdit.addSeparator() menuEdit.addAction(self.actionViewHtml) menuEdit.addAction(self.actionPreview) menuEdit.addAction(self.actionLivePreview) menuEdit.addAction(self.actionInsertTable) menuEdit.addAction(self.actionTableMode) menuEdit.addAction(self.actionInsertImages) if ReTextFakeVimHandler: menuEdit.addAction(self.actionFakeVimMode) menuEdit.addSeparator() menuEdit.addAction(self.actionFullScreen) menuEdit.addAction(self.actionConfig) menuHelp.addAction(self.actionHelp) menuHelp.addAction(self.actionWhatsNew) menuHelp.addSeparator() menuHelp.addAction(self.actionAbout) menuHelp.addAction(self.actionAboutQt) self.toolBar.addAction(self.actionNew) self.toolBar.addSeparator() self.toolBar.addAction(self.actionOpen) self.toolBar.addAction(self.actionSave) self.toolBar.addAction(self.actionPrint) self.toolBar.addSeparator() previewButton = QToolButton(self.toolBar) previewButton.setDefaultAction(self.actionPreview) previewButton.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon) previewButton.setPopupMode(QToolButton.ToolButtonPopupMode.MenuButtonPopup) previewButton.setMenu(menuPreview) self.toolBar.addWidget(previewButton) self.toolBar.addAction(self.actionFullScreen) self.editBar.addAction(self.actionUndo) self.editBar.addAction(self.actionRedo) self.editBar.addSeparator() self.editBar.addAction(self.actionCut) self.editBar.addAction(self.actionCopy) self.editBar.addAction(self.actionPaste) self.editBar.addSeparator() self.editBar.addWidget(self.formattingBox) self.editBar.addWidget(self.symbolBox) self.searchEdit = QLineEdit(self.searchBar) self.searchEdit.setPlaceholderText(self.tr('Search')) self.searchEdit.returnPressed.connect(self.find) self.replaceEdit = QLineEdit(self.searchBar) self.replaceEdit.setPlaceholderText(self.tr('Replace with')) self.replaceEdit.returnPressed.connect(self.find) self.csBox = QCheckBox(self.tr('Case sensitively'), self.searchBar) self.searchBar.addWidget(self.searchEdit) self.searchBar.addWidget(self.replaceEdit) self.searchBar.addSeparator() self.searchBar.addWidget(self.csBox) self.searchBar.addAction(self.actionFindPrev) self.searchBar.addAction(self.actionFind) replaceButton = QToolButton(self.searchBar) replaceButton.setDefaultAction(self.actionReplace) replaceButton.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon) replaceButton.setPopupMode(QToolButton.ToolButtonPopupMode.MenuButtonPopup) replaceButton.setMenu(menuReplace) self.searchBar.addWidget(replaceButton) self.searchBar.addAction(self.actionCloseSearch) self.searchBar.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon) self.searchBar.setVisible(False) self.autoSaveTimer = QTimer(self) self.autoSaveTimer.timeout.connect(self.saveAll) if globalSettings.autoSave: self.autoSaveTimer.start(60000) self.ind = None if enchant is not None: self.spellCheckLanguages = globalSettings.spellCheckLocale languages, errors = self.getSpellCheckDictionaries() for error in errors: warnings.warn(error, RuntimeWarning) if not languages: globalSettings.spellCheck = False if globalSettings.spellCheck: self.actionEnableSC.setChecked(True) self.fileSystemWatcher = QFileSystemWatcher() self.fileSystemWatcher.fileChanged.connect(self.fileChanged) def restoreLastOpenedFiles(self): for file in readListFromSettings("lastFileList"): self.openFileWrapper(file) # Show the tab of last opened file lastTabIndex = globalSettings.lastTabIndex if lastTabIndex >= 0 and lastTabIndex < self.tabWidget.count(): self.tabWidget.setCurrentIndex(lastTabIndex) def iterateTabs(self): for i in range(self.tabWidget.count()): yield self.tabWidget.widget(i) def updateStyleSheet(self): self.ss = None if globalSettings.styleSheet: sheetfile = QFile(globalSettings.styleSheet) sheetfile.open(QIODevice.OpenModeFlag.ReadOnly) self.ss = QTextStream(sheetfile).readAll() sheetfile.close() def initTabWidget(self): def dragEnterEvent(e): e.acceptProposedAction() def dropEvent(e): fn = bytes(e.mimeData().data('text/plain')).decode().rstrip() if fn.startswith('file:'): fn = QUrl(fn).toLocalFile() self.openFileWrapper(fn) self.tabWidget.setTabsClosable(True) self.tabWidget.setAcceptDrops(True) self.tabWidget.setMovable(True) self.tabWidget.dragEnterEvent = dragEnterEvent self.tabWidget.dropEvent = dropEvent self.tabWidget.setTabBarAutoHide(globalSettings.tabBarAutoHide) def initDirectoryTree(self, visible, path): if visible: self.fileSystemModel = QFileSystemModel(self.treeView) self.fileSystemModel.setRootPath(path) supportedExtensions = ['.txt'] for markup in markups.get_all_markups(): supportedExtensions += markup.file_extensions filters = ["*" + s for s in supportedExtensions] self.fileSystemModel.setNameFilters(filters) self.fileSystemModel.setNameFilterDisables(False) self.treeView.setModel(self.fileSystemModel) self.treeView.setRootIndex(self.fileSystemModel.index(path)) self.treeView.setColumnHidden(1, True) self.treeView.setColumnHidden(2, True) self.treeView.setColumnHidden(3, True) self.treeView.setHeaderHidden(True) self.treeView.setVisible(visible) def treeItemSelected(self, signal): file_path = self.fileSystemModel.filePath(signal) if os.path.isdir(file_path): return self.openFileWrapper(file_path) def act(self, name, icon=None, trig=None, trigbool=None, shct=None): if not isinstance(shct, QKeySequence): shct = QKeySequence(shct) if icon: action = QAction(self.actIcon(icon), name, self) else: action = QAction(name, self) if trig: action.triggered.connect(trig) elif trigbool: action.setCheckable(True) action.triggered[bool].connect(trigbool) if shct: action.setShortcut(shct) return action def actIcon(self, name): return QIcon.fromTheme(name, QIcon(getBundledIcon(name))) def printError(self): import traceback print('Exception occurred while parsing document:', file=sys.stderr) traceback.print_exc() def updateTabTitle(self, ind, tab): changed = tab.editBox.document().isModified() if changed: title = tab.getBaseName() + '*' else: title = tab.getBaseName() self.tabWidget.setTabText(ind, title) def tabFileNameChanged(self, tab): ''' Perform all UI state changes that need to be done when the filename of the current tab has changed. ''' if tab == self.currentTab: if tab.fileName: self.setWindowTitle("") if globalSettings.windowTitleFullPath: self.setWindowTitle(tab.fileName + '[*]') self.setWindowFilePath(tab.fileName) self.updateTabTitle(self.ind, tab) self.tabWidget.setTabToolTip(self.ind, tab.fileName) QDir.setCurrent(QFileInfo(tab.fileName).dir().path()) else: self.setWindowFilePath('') self.setWindowTitle(self.tr('New document') + '[*]') canReload = bool(tab.fileName) and not tab.autoSaveActive() self.actionSetEncoding.setEnabled(canReload) self.actionReload.setEnabled(canReload) def tabActiveMarkupChanged(self, tab): ''' Perform all UI state changes that need to be done when the active markup class of the current tab has changed. ''' if tab == self.currentTab: markupClass = tab.getActiveMarkupClass() dtMarkdown = (markupClass == markups.MarkdownMarkup) dtMkdOrReST = dtMarkdown or (markupClass == markups.ReStructuredTextMarkup) self.formattingBox.setEnabled(dtMarkdown) self.symbolBox.setEnabled(dtMarkdown) self.actionUnderline.setEnabled(dtMarkdown) self.actionBold.setEnabled(dtMkdOrReST) self.actionItalic.setEnabled(dtMkdOrReST) def tabModificationStateChanged(self, tab): ''' Perform all UI state changes that need to be done when the modification state of the current tab has changed. ''' if tab == self.currentTab: changed = tab.editBox.document().isModified() self.actionSave.setEnabled(changed) self.updateTabTitle(self.ind, tab) self.setWindowModified(changed) def createTab(self, fileName): previewStatesByName = { 'editor': PreviewDisabled, 'normal-preview': PreviewNormal, 'live-preview': PreviewLive, } previewState = previewStatesByName.get(globalSettings.defaultPreviewState, PreviewDisabled) if previewState == PreviewNormal and not fileName: previewState = PreviewDisabled # Opening empty document in preview mode makes no sense self.currentTab = ReTextTab(self, fileName, previewState) self.currentTab.fileNameChanged.connect(lambda: self.tabFileNameChanged(self.currentTab)) self.currentTab.modificationStateChanged.connect(lambda: self.tabModificationStateChanged(self.currentTab)) self.currentTab.activeMarkupChanged.connect(lambda: self.tabActiveMarkupChanged(self.currentTab)) self.tabWidget.addTab(self.currentTab, self.tr("New document")) self.currentTab.updateBoxesVisibility() if previewState > 0: QTimer.singleShot(500, self.currentTab.triggerPreviewUpdate) def closeTab(self, ind): if self.maybeSave(ind): if self.tabWidget.count() == 1: self.createTab("") closedTab = self.tabWidget.widget(ind) if closedTab.fileName: self.fileSystemWatcher.removePath(closedTab.fileName) self.tabWidget.removeTab(ind) closedTab.deleteLater() def changeIndex(self, ind): ''' This function is called when a different tab is selected. It changes the state of the window to mirror the current state of the newly selected tab. Future changes to this state will be done in response to signals emitted by the tab, to which the window was subscribed when the tab was created. The window is subscribed to all tabs like this, but only the active tab will logically generate these signals. Aside from the above this function also calls the handlers for the other changes that are implied by a tab switch: filename change, modification state change and active markup change. ''' self.currentTab = self.tabWidget.currentWidget() editBox = self.currentTab.editBox previewState = self.currentTab.previewState self.actionUndo.setEnabled(editBox.document().isUndoAvailable()) self.actionRedo.setEnabled(editBox.document().isRedoAvailable()) self.actionCopy.setEnabled(editBox.textCursor().hasSelection()) self.actionCut.setEnabled(editBox.textCursor().hasSelection()) self.actionPreview.setChecked(previewState >= PreviewLive) self.actionLivePreview.setChecked(previewState == PreviewLive) self.actionTableMode.setChecked(editBox.tableModeEnabled) self.editBar.setEnabled(previewState < PreviewNormal) self.ind = ind editBox.setFocus(Qt.FocusReason.OtherFocusReason) self.tabFileNameChanged(self.currentTab) self.tabModificationStateChanged(self.currentTab) self.tabActiveMarkupChanged(self.currentTab) def changeEditorFont(self): font, ok = QFontDialog.getFont(globalSettings.getEditorFont(), self) if ok: self.setEditorFont(font) def setEditorFont(self, font): globalSettings.editorFont = font.toString() for tab in self.iterateTabs(): tab.editBox.updateFont() def changePreviewFont(self): font, ok = QFontDialog.getFont(globalSettings.getPreviewFont(), self) if ok: self.setPreviewFont(font) def setPreviewFont(self, font): globalSettings.font = font.toString() for tab in self.iterateTabs(): tab.triggerPreviewUpdate() def preview(self, viewmode): self.currentTab.previewState = viewmode * 2 self.actionLivePreview.setChecked(False) self.editBar.setDisabled(viewmode) self.currentTab.updateBoxesVisibility() self.currentTab.triggerPreviewUpdate() def enableLivePreview(self, livemode): self.currentTab.previewState = int(livemode) self.actionPreview.setChecked(livemode) self.editBar.setEnabled(True) self.currentTab.updateBoxesVisibility() self.currentTab.triggerPreviewUpdate() def enableWebEngine(self, enable): globalSettings.useWebEngine = enable for tab in self.iterateTabs(): tab.rebuildPreviewBox() def enableCopy(self, copymode): self.actionCopy.setEnabled(copymode) self.actionCut.setEnabled(copymode) def enableFullScreen(self, yes): if yes: self.showFullScreen() else: self.showNormal() def openConfigDialog(self): dlg = ConfigDialog(self) dlg.setWindowTitle(self.tr('Preferences')) dlg.show() def enableFakeVimMode(self, yes): globalSettings.useFakeVim = yes if yes: FakeVimMode.init(self) for tab in self.iterateTabs(): tab.editBox.installFakeVimHandler() else: FakeVimMode.exit(self) def getSpellCheckDictionaries(self): """Returns the list of languages and the list of errors.""" dictionaries = [] errors = [] if enchant is None: return dictionaries, errors for language in self.spellCheckLanguages.split(','): try: dict = enchant.Dict(language.strip() or None) except enchant.errors.Error as e: errors.append(str(e)) else: dictionaries.append(dict) return dictionaries, errors def enableSpellCheck(self, yes): dictionaries = [] if yes: dictionaries, errors = self.getSpellCheckDictionaries() if errors: QMessageBox.warning(self, '', '\n'.join(errors)) for tab in self.iterateTabs(): tab.highlighter.dictionaries = dictionaries tab.highlighter.rehighlight() globalSettings.spellCheck = bool(dictionaries) self.actionEnableSC.setChecked(bool(dictionaries)) def changeLocale(self): localedlg = LocaleDialog(self, defaultText=self.spellCheckLanguages) if localedlg.exec() != QDialog.DialogCode.Accepted: return self.spellCheckLanguages = localedlg.localeEdit.text() self.enableSpellCheck(True) globalSettings.spellCheckLocale = self.spellCheckLanguages def search(self): self.searchBar.setVisible(True) self.searchEdit.setFocus(Qt.FocusReason.ShortcutFocusReason) def goToLine(self): line, ok = QInputDialog.getInt(self, self.tr("Go to line"), self.tr("Type the line number")) if ok: self.currentTab.goToLine(line-1) def searchBarVisibilityChanged(self, visible): if visible: self.searchEdit.setFocus(Qt.FocusReason.ShortcutFocusReason) def find(self, back=False, replace=False): flags = QTextDocument.FindFlag(0) if back: flags |= QTextDocument.FindFlag.FindBackward if self.csBox.isChecked(): flags |= QTextDocument.FindFlag.FindCaseSensitively text = self.searchEdit.text() replaceText = self.replaceEdit.text() if replace else None found = self.currentTab.find(text, flags, replaceText=replaceText) self.setSearchEditColor(found) def replaceAll(self): text = self.searchEdit.text() replaceText = self.replaceEdit.text() found = self.currentTab.replaceAll(text, replaceText) self.setSearchEditColor(found) def setSearchEditColor(self, found): palette = self.searchEdit.palette() palette.setColor(QPalette.ColorGroup.Active, QPalette.ColorRole.Base, Qt.GlobalColor.white if found else QColor(255, 102, 102)) self.searchEdit.setPalette(palette) def showInDir(self): if self.currentTab.fileName: path = QFileInfo(self.currentTab.fileName).path() QDesktopServices.openUrl(QUrl.fromLocalFile(path)) else: QMessageBox.warning(self, '', self.tr("Please, save the file somewhere.")) def moveToTopOfRecentFileList(self, fileName): if fileName: files = readListFromSettings("recentFileList") if fileName in files: files.remove(fileName) files.insert(0, fileName) recentCount = globalSettings.recentDocumentsCount if len(files) > recentCount: del files[recentCount:] writeListToSettings("recentFileList", files) def createNew(self, text=None): self.createTab("") self.ind = self.tabWidget.count()-1 self.tabWidget.setCurrentIndex(self.ind) if text: self.currentTab.editBox.textCursor().insertText(text) def switchTab(self, shift=1): self.tabWidget.setCurrentIndex((self.ind + shift) % self.tabWidget.count()) def updateRecentFiles(self): self.menuRecentFiles.clear() self.recentFilesActions = [] filesOld = readListFromSettings("recentFileList") files = [] for f in filesOld: if QFile.exists(f): files.append(f) self.recentFilesActions.append(self.act(f, trig=self.openFunction(f))) writeListToSettings("recentFileList", files) for action in self.recentFilesActions: self.menuRecentFiles.addAction(action) def markupFunction(self, markup): return lambda: self.setDefaultMarkup(markup) def openFunction(self, fileName): return lambda: self.openFileWrapper(fileName) def extensionFunction(self, data): return lambda: \ self.runExtensionCommand(data['Exec'], data['FileFilter'], data['DefaultExtension']) def getExportExtensionsList(self): extensions = [] datadirs = QStandardPaths.standardLocations( QStandardPaths.StandardLocation.GenericDataLocation) for datadir in datadirs: extsdir = QDir(os.path.join(datadir, 'retext', 'export-extensions')) if extsdir.exists(): for fileInfo in extsdir.entryInfoList(['*.desktop', '*.ini'], QDir.Filter.Files | QDir.Filter.Readable): extensions.append(self.readExtension(fileInfo.filePath())) locale = QLocale.system().name() self.extensionActions = [] for extension in extensions: try: if ('Name[%s]' % locale) in extension: name = extension['Name[%s]' % locale] elif ('Name[%s]' % locale.split('_')[0]) in extension: name = extension['Name[%s]' % locale.split('_')[0]] else: name = extension['Name'] data = {} for prop in ('FileFilter', 'DefaultExtension', 'Exec'): if 'X-ReText-'+prop in extension: data[prop] = extension['X-ReText-'+prop] elif prop in extension: data[prop] = extension[prop] else: data[prop] = '' action = self.act(name, trig=self.extensionFunction(data)) if 'Icon' in extension: action.setIcon(self.actIcon(extension['Icon'])) mimetype = extension['MimeType'] if 'MimeType' in extension else None except KeyError: print('Failed to parse extension: Name is required', file=sys.stderr) else: self.extensionActions.append((action, mimetype)) def updateExtensionsVisibility(self): markupClass = self.currentTab.getActiveMarkupClass() for action in self.extensionActions: if markupClass is None: action[0].setEnabled(False) continue mimetype = action[1] if mimetype is None: enabled = True elif markupClass == markups.MarkdownMarkup: enabled = (mimetype == "text/markdown") elif markupClass == markups.ReStructuredTextMarkup: enabled = (mimetype == "text/x-rst") else: enabled = False action[0].setEnabled(enabled) def readExtension(self, fileName): extFile = QFile(fileName) extFile.open(QIODevice.OpenModeFlag.ReadOnly) extension = {} stream = QTextStream(extFile) while not stream.atEnd(): line = stream.readLine() if '=' in line: index = line.index('=') extension[line[:index].rstrip()] = line[index+1:].lstrip() extFile.close() return extension def openFile(self): supportedExtensions = ['.txt'] for markup in markups.get_all_markups(): supportedExtensions += markup.file_extensions fileFilter = ' (' + str.join(' ', ['*'+ext for ext in supportedExtensions]) + ');;' fileNames = QFileDialog.getOpenFileNames(self, self.tr("Select one or several files to open"), QDir.currentPath(), self.tr("Supported files") + fileFilter + self.tr("All files (*)")) for fileName in fileNames[0]: self.openFileWrapper(fileName) @pyqtSlot(str) def openFileWrapper(self, fileName): if not fileName: return fileName = QFileInfo(fileName).canonicalFilePath() exists = False for i, tab in enumerate(self.iterateTabs()): if tab.fileName == fileName: exists = True ex = i if exists: self.tabWidget.setCurrentIndex(ex) elif QFile.exists(fileName): noEmptyTab = ( (self.ind is None) or self.currentTab.fileName or self.currentTab.editBox.toPlainText() or self.currentTab.editBox.document().isModified() ) if noEmptyTab: self.createTab(fileName) self.ind = self.tabWidget.count()-1 self.tabWidget.setCurrentIndex(self.ind) if fileName: self.fileSystemWatcher.addPath(fileName) self.currentTab.readTextFromFile(fileName) self.moveToTopOfRecentFileList(self.currentTab.fileName) def showEncodingDialog(self): if not self.maybeSave(self.ind): return dialog = EncodingDialog(self) if dialog.exec() == QDialog.DialogCode.Accepted: encoding = dialog.encodingEdit.text() self.currentTab.readTextFromFile(None, encoding) def saveFileAs(self): self.saveFile(dlg=True) def saveAll(self): for tab in self.iterateTabs(): if tab.autoSaveActive() and tab.editBox.document().isModified(): tab.saveTextToFile() def saveFile(self, dlg=False): fileNameToSave = self.currentTab.fileName if (not fileNameToSave) or dlg: proposedFileName = "" markupClass = self.currentTab.getActiveMarkupClass() if (markupClass is None) or not hasattr(markupClass, 'default_extension'): defaultExt = self.tr("Plain text (*.txt)") ext = ".txt" else: defaultExt = self.tr('%s files', 'Example of final string: Markdown files') \ % markupClass.name + ' (' + str.join(' ', ('*'+extension for extension in markupClass.file_extensions)) + ')' if markupClass == markups.MarkdownMarkup: ext = globalSettings.markdownDefaultFileExtension elif markupClass == markups.ReStructuredTextMarkup: ext = globalSettings.restDefaultFileExtension else: ext = markupClass.default_extension if fileNameToSave is not None: proposedFileName = fileNameToSave fileNameToSave = QFileDialog.getSaveFileName(self, self.tr("Save file"), proposedFileName, defaultExt)[0] if fileNameToSave: if not QFileInfo(fileNameToSave).suffix(): fileNameToSave += ext # Make sure we don't overwrite a file opened in other tab for tab in self.iterateTabs(): if tab is not self.currentTab and tab.fileName == fileNameToSave: QMessageBox.warning(self, "", self.tr("Cannot save to file which is open in another tab!")) return False self.actionSetEncoding.setDisabled(self.currentTab.autoSaveActive()) if fileNameToSave: if self.currentTab.saveTextToFile(fileNameToSave): self.moveToTopOfRecentFileList(self.currentTab.fileName) return True return False def saveHtml(self, fileName): if not QFileInfo(fileName).suffix(): fileName += ".html" try: _, htmltext, _ = self.currentTab.getDocumentForExport(webenv=True) except Exception: return self.printError() encoding = globalSettings.defaultCodec or None try: with open(fileName, 'w', encoding=encoding) as htmlFile: htmlFile.write(htmltext) except (OSError, UnicodeEncodeError, LookupError) as ex: QMessageBox.warning(self, '', str(ex)) def textDocument(self, title, htmltext): td = QTextDocument() td.setMetaInformation(QTextDocument.MetaInformation.DocumentTitle, title) td.setHtml(htmltext) td.setDefaultFont(globalSettings.getPreviewFont()) return td def saveOdf(self): title, htmltext, _ = self.currentTab.getDocumentForExport() try: document = self.textDocument(title, htmltext) except Exception: return self.printError() fileName = QFileDialog.getSaveFileName(self, self.tr("Export document to ODT"), self.currentTab.getBaseName() + ".odt", self.tr("OpenDocument text files (*.odt)"))[0] if not QFileInfo(fileName).suffix(): fileName += ".odt" writer = QTextDocumentWriter(fileName) writer.setFormat(b"odf") writer.write(document) def saveFileHtml(self): fileName = QFileDialog.getSaveFileName(self, self.tr("Save file"), self.currentTab.getBaseName() + ".html", self.tr("HTML files (*.html *.htm)"))[0] if fileName: self.saveHtml(fileName) def getDocumentForPrint(self, title, htmltext, preview): try: return self.textDocument(title, htmltext) except Exception: self.printError() def standardPrinter(self, title): printer = QPrinter(QPrinter.PrinterMode.HighResolution) printer.setDocName(title) printer.setCreator('ReText %s' % app_version) if globalSettings.paperSize: pageSize = self.getPageSizeByName(globalSettings.paperSize) if pageSize is not None: printer.setPageSize(pageSize) else: QMessageBox.warning(self, '', self.tr('Unrecognized paperSize setting "%s".') % globalSettings.paperSize) return printer def getPageSizeByName(self, pageSizeName): """ Returns a validated QPageSize instance corresponding to the given name. Returns None if the name is not a valid PageSize. """ sizesByName = {e.name.lower(): e for e in QPageSize.PageSizeId} sizeId = sizesByName.get(pageSizeName.lower()) if sizeId is not None: return QPageSize(sizeId) def savePdf(self): fileName = QFileDialog.getSaveFileName(self, self.tr("Export document to PDF"), self.currentTab.getBaseName() + ".pdf", self.tr("PDF files (*.pdf)"))[0] if fileName: if not QFileInfo(fileName).suffix(): fileName += ".pdf" title, htmltext, preview = self.currentTab.getDocumentForExport() if globalSettings.useWebEngine: pageSize = self.getPageSizeByName(globalSettings.paperSize) if pageSize is None: pageSize = QPageSize(QPageSize.PageSizeId.A4) margins = QMarginsF(20, 20, 13, 20) # left, top, right, bottom (in millimeters) layout = QPageLayout(pageSize, QPageLayout.Orientation.Portrait, margins, QPageLayout.Unit.Millimeter) preview.page().printToPdf(fileName, layout) return printer = self.standardPrinter(title) printer.setOutputFormat(QPrinter.OutputFormat.PdfFormat) printer.setOutputFileName(fileName) document = self.getDocumentForPrint(title, htmltext, preview) if document != None: document.print(printer) def printFile(self): title, htmltext, preview = self.currentTab.getDocumentForExport() printer = self.standardPrinter(title) dlg = QPrintDialog(printer, self) dlg.setWindowTitle(self.tr("Print document")) if (dlg.exec() == QDialog.DialogCode.Accepted): document = self.getDocumentForPrint(title, htmltext, preview) if document != None: document.print(printer) def printPreview(self): title, htmltext, preview = self.currentTab.getDocumentForExport() document = self.getDocumentForPrint(title, htmltext, preview) if document is None: return printer = self.standardPrinter(title) preview = QPrintPreviewDialog(printer, self) preview.paintRequested.connect(document.print) preview.exec() def runExtensionCommand(self, command, filefilter, defaultext): import shlex of = ('%of' in command) html = ('%html' in command) if of: if defaultext and not filefilter: filefilter = '*'+defaultext fileName = QFileDialog.getSaveFileName(self, self.tr('Export document'), '', filefilter)[0] if not fileName: return if defaultext and not QFileInfo(fileName).suffix(): fileName += defaultext else: fileName = 'out' + defaultext basename = '.%s.retext-temp' % self.currentTab.getBaseName() if html: tmpname = basename+'.html' self.saveHtml(tmpname) else: tmpname = basename + self.currentTab.getActiveMarkupClass().default_extension self.currentTab.writeTextToFile(tmpname) command = command.replace('%of', shlex.quote(fileName)) command = command.replace('%html' if html else '%if', shlex.quote(tmpname)) try: Popen(str(command), shell=True).wait() except Exception as error: errorstr = str(error) QMessageBox.warning(self, '', self.tr('Failed to execute the command:') + '\n' + errorstr) QFile(tmpname).remove() def clipboardDataChanged(self): mimeData = QApplication.instance().clipboard().mimeData() if mimeData is not None: self.actionPaste.setEnabled(mimeData.hasText()) self.actionPasteImage.setEnabled(mimeData.hasImage()) def insertFormatting(self, formatting): if formatting == 'table': dialog = InsertTableDialog(self) dialog.show() self.formattingBox.setCurrentIndex(0) return cursor = self.currentTab.editBox.textCursor() text = cursor.selectedText() moveCursorTo = None def c(cursor): nonlocal moveCursorTo moveCursorTo = cursor.position() def ensurenl(cursor): if not cursor.atBlockStart(): cursor.insertText('\n\n') toinsert = { 'header': (ensurenl, '# ', text), 'italic': ('*', text, c, '*'), 'bold': ('**', text, c, '**'), 'underline': ('', text, c, ''), 'numbering': (ensurenl, ' 1. ', text), 'bullets': (ensurenl, ' * ', text), 'image': ('![', text or self.tr('Alt text'), c, '](', self.tr('URL'), ')'), 'link': ('[', text or self.tr('Link text'), c, '](', self.tr('URL'), ')'), 'inline code': ('`', text, c, '`'), 'code block': (ensurenl, ' ', text), 'blockquote': (ensurenl, '> ', text), } if formatting not in toinsert: return cursor.beginEditBlock() for token in toinsert[formatting]: if callable(token): token(cursor) else: cursor.insertText(token) cursor.endEditBlock() self.formattingBox.setCurrentIndex(0) # Bring back the focus on the editor self.currentTab.editBox.setFocus(Qt.FocusReason.OtherFocusReason) if moveCursorTo: cursor.setPosition(moveCursorTo) self.currentTab.editBox.setTextCursor(cursor) def insertSymbol(self, num): if num: self.currentTab.editBox.insertPlainText('&'+self.usefulChars[num-1]+';') self.symbolBox.setCurrentIndex(0) def fileChanged(self, fileName): tab = None for testtab in self.iterateTabs(): if testtab.fileName == fileName: tab = testtab if tab is None: self.fileSystemWatcher.removePath(fileName) return if not QFile.exists(fileName): self.tabWidget.setCurrentWidget(tab) tab.editBox.document().setModified(True) QMessageBox.warning(self, '', self.tr( 'This file has been deleted by other application.\n' 'Please make sure you save the file before exit.')) elif not tab.editBox.document().isModified(): # File was not modified in ReText, reload silently tab.readTextFromFile() else: tab.forceDisableAutoSave = True self.tabWidget.setCurrentWidget(tab) text = self.tr( 'This document has been modified by other application.\n' 'Do you want to reload the file (this will discard all ' 'your changes)?\n') if globalSettings.autoSave: text += self.tr( 'Automatic saving has been temporarily disabled for this ' 'tab to prevent data loss. It will be re-enabled when you ' 'reload the file or save it manually.') messageBox = QMessageBox(QMessageBox.Icon.Warning, '', text) reloadButton = messageBox.addButton(self.tr('Reload'), QMessageBox.ButtonRole.YesRole) messageBox.addButton(QMessageBox.StandardButton.Cancel) messageBox.exec() if messageBox.clickedButton() is reloadButton: tab.readTextFromFile() if fileName not in self.fileSystemWatcher.files(): # https://github.com/retext-project/retext/issues/137 self.fileSystemWatcher.addPath(fileName) def maybeSave(self, ind): tab = self.tabWidget.widget(ind) if tab.autoSaveActive(): tab.saveTextToFile() return True if not tab.editBox.document().isModified(): return True self.tabWidget.setCurrentIndex(ind) ret = QMessageBox.warning(self, '', self.tr("The document has been modified.\nDo you want to save your changes?"), QMessageBox.StandardButton.Save | QMessageBox.StandardButton.Discard | QMessageBox.StandardButton.Cancel) if ret == QMessageBox.StandardButton.Save: return self.saveFile(False) elif ret == QMessageBox.StandardButton.Cancel: return False return True def closeEvent(self, closeevent): for ind in range(self.tabWidget.count()): if not self.maybeSave(ind): return closeevent.ignore() if globalSettings.saveWindowGeometry: globalSettings.windowGeometry = self.saveGeometry() if globalSettings.openLastFilesOnStartup: files = [tab.fileName for tab in self.iterateTabs()] writeListToSettings("lastFileList", files) globalSettings.lastTabIndex = self.tabWidget.currentIndex() closeevent.accept() def viewHtml(self): htmlDlg = HtmlDialog(self) try: _, htmltext, _ = self.currentTab.getDocumentForExport(includeStyleSheet=False) except Exception: return self.printError() winTitle = self.currentTab.getBaseName() htmlDlg.setWindowTitle(winTitle+" ("+self.tr("HTML code")+")") htmlDlg.textEdit.setPlainText(htmltext.rstrip()) htmlDlg.hl.rehighlight() htmlDlg.show() htmlDlg.raise_() htmlDlg.activateWindow() def insertImages(self): supportedExtensions = ['.png', '.jpg', '.jpeg', '.gif', '.bmp'] fileFilter = ' (%s);;' % ' '.join('*' + ext for ext in supportedExtensions) fileNames, _selectedFilter = QFileDialog.getOpenFileNames(self, self.tr("Select one or several images to open"), QDir.currentPath(), self.tr("Supported files") + fileFilter + self.tr("All files (*)")) cursor = self.currentTab.editBox.textCursor() imagesMarkup = '\n'.join( self.currentTab.editBox.getImageMarkup(fileName) for fileName in fileNames) cursor.insertText(imagesMarkup) self.formattingBox.setCurrentIndex(0) self.currentTab.editBox.setFocus(Qt.FocusReason.OtherFocusReason) def openHelp(self): QDesktopServices.openUrl(QUrl('https://github.com/retext-project/retext/wiki')) def openReleases(self): QDesktopServices.openUrl(QUrl('https://github.com/retext-project/retext/releases')) def aboutDialog(self): QMessageBox.about(self, self.aboutWindowTitle, '

' + (self.tr('ReText %s (using PyMarkups %s)') % (app_version, markups.__version__)) +'

' + self.tr('Simple but powerful editor' ' for Markdown and reStructuredText') +'

'+self.tr('Author: Dmitry Shachnev, 2011').replace('2011', '2011–2024') +'
GitHub | ' +'' +self.tr('Markdown syntax') +' | ' +self.tr('reStructuredText syntax')+'

') def setDefaultMarkup(self, markupClass): globalSettings.defaultMarkup = markupClass.name for tab in self.iterateTabs(): if not tab.fileName: tab.updateActiveMarkupClass() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/ReText/xsettings.py0000644000175000017500000001550414575336012016226 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2015-2017 Dmitry Shachnev # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # This is implementation of XSettings specification, described at # import ctypes import ctypes.util import struct class _xcb_reply_t(ctypes.Structure): # this can be used instead of xcb_intern_atom_reply_t, # xcb_get_selection_owner_reply_t, etc _fields_ = [('response_type', ctypes.c_uint8), ('pad0', ctypes.c_uint8), ('sequence', ctypes.c_uint16), ('length', ctypes.c_uint32), ('payload', ctypes.c_uint32)] class _xcb_cookie_t(ctypes.Structure): # this can be used instead of xcb_intern_atom_cookie_t, # xcb_get_selection_owner_cookie_t, etc _fields_ = [('sequence', ctypes.c_uint)] _xcb_error_messages = [ None, 'XCB error: socket, pipe and other stream error', 'XCB connection closed: extension unsupported', 'XCB connection closed: insufficient memory', 'XCB connection closed: request length exceeded', 'XCB connection closed: DISPLAY parse error', 'XCB connection closed: invalid screen' ] class XSettingsError(RuntimeError): pass class XSettingsParseError(XSettingsError): pass def get_raw_xsettings(display=0): # initialize the libraries xcb_library_name = ctypes.util.find_library('xcb') if xcb_library_name is None: raise XSettingsError('Xcb library not found') xcb = ctypes.CDLL(xcb_library_name) c_library_name = ctypes.util.find_library('c') if c_library_name is None: raise XSettingsError('C library not found') c = ctypes.CDLL(c_library_name) # set some args and return types c.free.argtypes = [ctypes.c_void_p] c.free.restype = None xcb.xcb_connect.argtypes = [ctypes.c_char_p, ctypes.POINTER(ctypes.c_int)] xcb.xcb_connect.restype = ctypes.c_void_p xcb.xcb_connection_has_error.argtypes = [ctypes.c_void_p] xcb.xcb_connection_has_error.restype = ctypes.c_int xcb.xcb_disconnect.argtypes = [ctypes.c_void_p] xcb.xcb_disconnect.restype = None xcb.xcb_intern_atom.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_char_p] xcb.xcb_intern_atom.restype = _xcb_cookie_t xcb.xcb_intern_atom_reply.argtypes = [ctypes.c_void_p, _xcb_cookie_t, ctypes.c_void_p] xcb.xcb_intern_atom_reply.restype = ctypes.POINTER(_xcb_reply_t) xcb.xcb_get_selection_owner.argtypes = [ctypes.c_void_p, ctypes.c_uint32] xcb.xcb_get_selection_owner.restype = _xcb_cookie_t xcb.xcb_get_selection_owner_reply.argtypes = [ctypes.c_void_p, _xcb_cookie_t, ctypes.c_void_p] xcb.xcb_get_selection_owner_reply.restype = ctypes.POINTER(_xcb_reply_t) xcb.xcb_get_property.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32] xcb.xcb_get_property.restype = _xcb_cookie_t xcb.xcb_get_property_reply.argtypes = [ctypes.c_void_p, _xcb_cookie_t, ctypes.c_void_p] xcb.xcb_get_property_reply.restype = ctypes.c_void_p xcb.xcb_get_property_value_length.argtypes = [ctypes.c_void_p] xcb.xcb_get_property_value_length.restype = ctypes.c_int xcb.xcb_get_property_value.argtypes = [ctypes.c_void_p] xcb.xcb_get_property_value.restype = ctypes.c_void_p # open the connection connection = xcb.xcb_connect(None, None) error = xcb.xcb_connection_has_error(connection) if error: raise XSettingsError(_xcb_error_messages[error]) # get selection atom cookie buffer = ('_XSETTINGS_S%d' % display).encode() cookie = xcb.xcb_intern_atom(connection, 0, len(buffer), buffer) # get selection atom reply reply = xcb.xcb_intern_atom_reply(connection, cookie, None) selection_atom = reply.contents.payload c.free(reply) # get selection owner cookie cookie = xcb.xcb_get_selection_owner(connection, selection_atom) # get selection owner reply reply = xcb.xcb_get_selection_owner_reply(connection, cookie, None) window = reply.contents.payload c.free(reply) # get settings atom cookie buffer = b'_XSETTINGS_SETTINGS' cookie = xcb.xcb_intern_atom(connection, 0, len(buffer), buffer) # get settings atom reply reply = xcb.xcb_intern_atom_reply(connection, cookie, None) settings_atom = reply.contents.payload c.free(reply) # get property cookie cookie = xcb.xcb_get_property(connection, 0, window, settings_atom, 0, 0, 0x2000) # get property reply reply = xcb.xcb_get_property_reply(connection, cookie, None) if reply is not None: length = xcb.xcb_get_property_value_length(reply) pointer = xcb.xcb_get_property_value(reply) if length else None result = ctypes.string_at(pointer, length) c.free(reply) # close the connection xcb.xcb_disconnect(connection) # handle possible errors if reply is None or not length: raise XSettingsError('XSettings not available') return result def parse_xsettings(raw_xsettings): if len(raw_xsettings) < 12: raise XSettingsParseError('length < 12') if raw_xsettings[0] not in (0, 1): raise XSettingsParseError('wrong order byte: %d' % raw_xsettings[0]) byte_order = '<>'[raw_xsettings[0]] settings_count = struct.unpack(byte_order + 'I', raw_xsettings[8:12])[0] TypeInteger, TypeString, TypeColor = range(3) result = {} raw_xsettings = raw_xsettings[12:] offset = 0 for i in range(settings_count): setting_type = raw_xsettings[offset] offset += 2 name_length = struct.unpack(byte_order + 'H', raw_xsettings[offset:offset + 2])[0] offset += 2 name = raw_xsettings[offset:offset + name_length] offset += name_length if offset & 3: offset += 4 - (offset & 3) offset += 4 # skip last-change-serial if setting_type == TypeInteger: value = struct.unpack(byte_order + 'I', raw_xsettings[offset:offset + 4])[0] offset += 4 elif setting_type == TypeString: value_length = struct.unpack(byte_order + 'I', raw_xsettings[offset:offset + 4])[0] offset += 4 value = raw_xsettings[offset:offset + value_length] offset += value_length if offset & 3: offset += 4 - (offset & 3) elif setting_type == TypeColor: value = struct.unpack(byte_order + 'HHHH', raw_xsettings[offset:offset + 8]) offset += 8 else: raise XSettingsParseError('Wrong setting type: %d' % setting_type) result[name] = value return result def get_xsettings(display=0): raw_xsettings = get_raw_xsettings(display) return parse_xsettings(raw_xsettings) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6972506 ReText-8.0.2/ReText.egg-info/0000755000175000017500000000000014575355105015315 5ustar00dmitrydmitry././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611012.0 ReText-8.0.2/ReText.egg-info/PKG-INFO0000644000175000017500000000275614575355104016423 0ustar00dmitrydmitryMetadata-Version: 2.1 Name: ReText Version: 8.0.2 Summary: Simple editor for Markdown and reStructuredText Home-page: https://github.com/retext-project/retext Author: Dmitry Shachnev Author-email: mitya57@gmail.com License: GPL 2+ Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: X11 Applications :: Qt Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) Classifier: Programming Language :: Python :: 3 :: Only Classifier: Topic :: Text Editors Classifier: Topic :: Text Processing :: Markup Requires: docutils Requires: Markdown Requires: Markups(>=2.0) Requires: pyenchant Requires: Pygments Requires: PyQt6 Requires-Python: >=3.6 License-File: LICENSE_GPL Requires-Dist: docutils Requires-Dist: Markdown>=3.0 Requires-Dist: Markups>=2.0 Requires-Dist: Pygments Requires-Dist: PyQt6 Provides-Extra: spellcheck Requires-Dist: pyenchant; extra == "spellcheck" Provides-Extra: encoding-detection Requires-Dist: chardet; extra == "encoding-detection" Provides-Extra: webengine Requires-Dist: PyQt6-WebEngine; extra == "webengine" ReText is simple text editor that supports Markdown and reStructuredText markup languages. It is written in Python using PyQt libraries. It supports live preview, tabs, math formulas, export to various formats including PDF and HTML. For more details, please go to the `home page`_ or to the `wiki`_. .. _`home page`: https://github.com/retext-project/retext .. _`wiki`: https://github.com/retext-project/retext/wiki ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611012.0 ReText-8.0.2/ReText.egg-info/SOURCES.txt0000644000175000017500000000671014575355104017204 0ustar00dmitrydmitryLICENSE_GPL MANIFEST.in README.md changelog.md configuration.md setup.py ReText/__init__.py ReText/__main__.py ReText/config.py ReText/converterprocess.py ReText/dialogs.py ReText/editor.py ReText/fakevimeditor.py ReText/highlighter.py ReText/icontheme.py ReText/mdx_posmap.py ReText/preview.py ReText/syncscroll.py ReText/tab.py ReText/tabledialog.py ReText/tablemode.py ReText/webenginepreview.py ReText/window.py ReText/xsettings.py ReText.egg-info/PKG-INFO ReText.egg-info/SOURCES.txt ReText.egg-info/dependency_links.txt ReText.egg-info/entry_points.txt ReText.egg-info/requires.txt ReText.egg-info/top_level.txt ReText/icons/COPYING ReText/icons/README.md ReText/icons/application-exit.png ReText/icons/application-pdf.png ReText/icons/document-new.png ReText/icons/document-open-recent.png ReText/icons/document-open.png ReText/icons/document-preview.png ReText/icons/document-print-preview.png ReText/icons/document-print.png ReText/icons/document-save-as.png ReText/icons/document-save.png ReText/icons/edit-copy.png ReText/icons/edit-cut.png ReText/icons/edit-find.png ReText/icons/edit-paste.png ReText/icons/edit-redo.png ReText/icons/edit-undo.png ReText/icons/go-next.png ReText/icons/go-previous.png ReText/icons/help-about.png ReText/icons/internet-web-browser.png ReText/icons/retext.ico ReText/icons/retext.png ReText/icons/retext.svg ReText/icons/system-file-manager.png ReText/icons/text-html.png ReText/icons/view-fullscreen.png ReText/icons/x-office-document.png ReText/locale/retext_ar.qm ReText/locale/retext_ar.ts ReText/locale/retext_ca.qm ReText/locale/retext_ca.ts ReText/locale/retext_cs.qm ReText/locale/retext_cs.ts ReText/locale/retext_cy.qm ReText/locale/retext_cy.ts ReText/locale/retext_da.qm ReText/locale/retext_da.ts ReText/locale/retext_de.qm ReText/locale/retext_de.ts ReText/locale/retext_es.qm ReText/locale/retext_es.ts ReText/locale/retext_es_CO.qm ReText/locale/retext_es_CO.ts ReText/locale/retext_et.qm ReText/locale/retext_et.ts ReText/locale/retext_eu.qm ReText/locale/retext_eu.ts ReText/locale/retext_fa.qm ReText/locale/retext_fa.ts ReText/locale/retext_fi.qm ReText/locale/retext_fi.ts ReText/locale/retext_fr.qm ReText/locale/retext_fr.ts ReText/locale/retext_hr.qm ReText/locale/retext_hr.ts ReText/locale/retext_hu.qm ReText/locale/retext_hu.ts ReText/locale/retext_it.qm ReText/locale/retext_it.ts ReText/locale/retext_ja.qm ReText/locale/retext_ja.ts ReText/locale/retext_ko.qm ReText/locale/retext_ko.ts ReText/locale/retext_nl.qm ReText/locale/retext_nl.ts ReText/locale/retext_no.qm ReText/locale/retext_no.ts ReText/locale/retext_pl.qm ReText/locale/retext_pl.ts ReText/locale/retext_pt.qm ReText/locale/retext_pt.ts ReText/locale/retext_pt_BR.qm ReText/locale/retext_pt_BR.ts ReText/locale/retext_ru.qm ReText/locale/retext_ru.ts ReText/locale/retext_sk.qm ReText/locale/retext_sk.ts ReText/locale/retext_sr.qm ReText/locale/retext_sr.ts ReText/locale/retext_sr@latin.qm ReText/locale/retext_sr@latin.ts ReText/locale/retext_sv.qm ReText/locale/retext_sv.ts ReText/locale/retext_tr.qm ReText/locale/retext_tr.ts ReText/locale/retext_uk.qm ReText/locale/retext_uk.ts ReText/locale/retext_zh_CN.qm ReText/locale/retext_zh_CN.ts ReText/locale/retext_zh_TW.qm ReText/locale/retext_zh_TW.ts data/me.mitya57.ReText.appdata.xml data/me.mitya57.ReText.desktop data/retext-kde5.png tests/__init__.py tests/test_editor.py tests/test_posmap.py tests/test_settings.py tests/test_tablemode.py tests/test_window.py tests/testdata/existing_file.md tests/testdata/existing_file.rst././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611012.0 ReText-8.0.2/ReText.egg-info/dependency_links.txt0000644000175000017500000000000114575355104021362 0ustar00dmitrydmitry ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611012.0 ReText-8.0.2/ReText.egg-info/entry_points.txt0000644000175000017500000000005414575355104020611 0ustar00dmitrydmitry[gui_scripts] retext = ReText.__main__:main ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611012.0 ReText-8.0.2/ReText.egg-info/requires.txt0000644000175000017500000000020614575355104017712 0ustar00dmitrydmitrydocutils Markdown>=3.0 Markups>=2.0 Pygments PyQt6 [encoding-detection] chardet [spellcheck] pyenchant [webengine] PyQt6-WebEngine ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611012.0 ReText-8.0.2/ReText.egg-info/top_level.txt0000644000175000017500000000000714575355104020043 0ustar00dmitrydmitryReText ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710609732.0 ReText-8.0.2/changelog.md0000644000175000017500000004157114575352504014671 0ustar00dmitrydmitry## ReText 8.0.2 (2024-03-16) * Improvements and bugs fixed: - Fixed synchronized scrolling for zoom factors other than 1 (contributed by Maurice van der Pot). - Stopped passing `.desktop` suffix to setDesktopFileName() (contributed by Chris Mayo in #633). - Issue #98 — Made `mdx_posmap` not break indented code blocks which use `pymdownx.superfences` extension. - Issue #637 — Fixed crash when clicking on line information area. * Translations updated: - Basque (contributed by Aitor Salaberria). - German (contributed by cosmic_snow). - Korean (contributed by Minpa Lee). - Ukrainian (contributed by Oleksandr Tsvirkun). ## ReText 8.0.1 (2023-05-28) * Bugs fixed: - Issue #594 — Fix opening files in existing window by relative path. - Issue #597 — Fix unreachable text at the bottom of the file. - Issue #599 — Fix truncating file when new text cannot be encoded with the selected encoding. - Issue #604 — Allow WebEngine renderer to load iframes such as YouTube embeds. - Issue #609 — Fix incorrect font size with WebEngine renderer. - Issue #620 — LICENSE_GPL file now has text of GPL v2. * Translations updated: - Dutch (contributed by Heimen Stoffels). - French (contributed by uGwA0XP3cm2w). - Italian (contributed by Alessandro Melillo). - Norwegian (Bokmål) (new, contributed by Sverre Våbenø). - Persian (contributed by Hadi F and Arya Younesi). - Portuguese (Brazil) (contributed by Rodrigo Zimmermann). - Spanish (contributed by Antonio Villamarin). - Turkish (contributed by Serkan ÖNDER). ## ReText 8.0.0 (2022-07-24) * Dependency changes: - ReText is now using Qt 6 and PyQt6. - PyQt6-WebEngine is required for JavaScript support. - WebKit is no longer supported. * Improvements and bugs fixed: - PR #543 — Added Apply button to Preferences dialog (contributed by Amos Kong). - Issue #384 — Save button is now enabled in auto-save mode. - Issue #536 — Support spell checking for multiple languages. - Issue #555 — Support setting bold font for editor. - Issue #581 — Added backtick key to surround keys. - Run-time resources are now installed into package directory. - `setup.py` now allows building wheels. * Translations updated: - Polish (contributed by Maciej Haudek). - Spanish (contributed by Pedro Torcatt). - Turkish (contributed by Serkan ÖNDER in #556). ## ReText 7.2.3 (2022-02-03) * Issues #573, #574 — Fixed TypeError crash with Python 3.10 and Qt WebKit. * Translations updated: - Chinese (China) (contributed by liulitchi). - Portuguese (Brazil) (contributed by Igor Garcia and Christiano Morais). - Slovak (contributed by Jose Riha). ## ReText 7.2.2 (2021-10-11) * Issue #552 — Fixed bad Spanish translation causing a crash. * Fixed `TypeError: index 0 has type 'float' but 'int' is expected` with Python 3.10. * Fixed `RuntimeError: ffi_prep_cif_var failed` in XSettings code. ## ReText 7.2.1 (2021-03-06) * Issues #255, #492 — Improved support for dark Qt themes. * Fixed preview jumping to top during MathJax rendering. * Issue #544 — Fixed QTextBrowser-based preview jumping. * Issue #548 — Fixed opening files with spaces from QTextBrowser-based preview. * Issue #549 — Use `defaultCodec` setting by default when saving files; correctly detect encoding for UTF-8 files with BOM. ## ReText 7.2.0 (2021-02-08) * Dependency changes: - Python ≥ 3.6 is now required. - Qt and PyQt ≥ 5.11 are now required. * General improvements: - Added ability to show a side panel with directory tree (contributed by Xavier Gouchet in #531). - Added support for searching in the preview mode. - When some text is selected and a quote, bracket or emphasis key is pressed, the text is surrounded rather than replaced (contributed by Daniel Venturini in #520). - Added an option to fully highlight wrapped lines (contributed by nihillum in #523). - Improved current line highlighting for right-to-left text layout. - Ordered list behavior can now be configured to repeat or increment the list item number (contributed by Binokkio in #527). - Added mnemonics to open the menus from keyboard (contributed by David Hebbeker in #528). - Added Apply button to the Preferences dialog (contributed by Amos Kong in #543). - Removed use of deprecated Python, Python-Markdown, Qt and PyQt API. * Bugs fixed: - Issue #507 — Improved the error message when trying to build ReText as a wheel package. - Issue #529 — Markup that intersects with code blocks is no longer highlighted. - PR #530 — Preview is no longer updated when it is not shown (contributed by rhn in #530). - Issue #533 — Fixed showing local images with Qt WebEngine 5.15. * Translations updated: - Arabic (contributed by ZamanOof). - Chinese (China) (contributed by liulitchi). - Dutch (contributed by Heimen Stoffels). - Japanese (contributed by YAMADA Shinichirou). - Persian (contributed by Hadi F). - Polish (contributed by Maciej Haudek). - Russian. - Spanish (contributed by Félix Fischer). - Swedish (contributed by Philip Andersen). ## ReText 7.1.0 (2020-04-04) * General improvements: - New files are now opened in new tabs by default, not new windows (contributed by Daniele Scasciafratte in #476). This can be disabled using `openFilesInExistingWindow` configuration option. - Preferences dialog improvements: it now uses tabs; added a link to configuration file (contributed by Xavier Gouchet in #327); clicking on checkbox label now changes checkbox state. - Return key now automatically continues quote blocks and ordered lists (contributed by Xavier Gouchet in #298 and #326). - It is now possible to close the current tab with Ctrl+W (contributed by Xavier Gouchet in #283). - Ctrl+wheel on editor now increases/decreases font size (contributed by Xavier Gouchet in #328). Ctrl+wheel in preview zooms in/out (#400). - Alt+Up/Down arrow now moves the current line up/down (contributed by Xavier Gouchet in #337). - Added “Jump to Line” feature, with Ctrl+G shortcut (contributed by Xavier Gouchet in #382). - Table mode improvements (contributed by Maurice van der Pot). - “Paste Image” moved to a separate action, with Ctrl+Shift+V shortcut. - Added “Insert table” dialog (contributed by Changhee Kim in #431). - Clicking a link to nonexistent file now prompts the user to create it (contributed by red-kite in #436 and Xavier Gouchet in #459). - Added a menu action to insert images from filesystem (contributed by Daniel Venturini in #500). * New options added: - `relativeLineNumbers` — count line numbers as relative to the current line (contributed by Xavier Gouchet in #270). - `documentStatsEnabled` — show text statistics in the lower left corner of the editor (contributed by Xavier Gouchet in #268 and #338). - `rightMarginWrap` — soft-wrap text at user specified margin line (contributed by Oğuzhan Öğreden in #313). - `paperSize` — set the default paper size for print or PDF export (contributed by mray271 in #335). - `recentDocumentsCount` — number of recent files to show in the menu (contributed by red-kite in #407). - `windowTitleFullPath` — show full path in window title (contributed by red-kite in #429). - `defaultPreviewState` — mode for new tabs: `editor`, `normal-preview` or `live-preview` (contributed by red-kite in #435). It replaces the old `livePreviewByDefault` option. - `wideCursor` — make cursor as wide as characters. * Bugs fixed: - Issue #252 — Limit max-width of images to 100%. - Issue #267 — setup.py now installs retext.svg icon. - Issues #281, #469 — Autofill current filename for PDF export and Save As dialogs (the Save As part contributed by Xavier Gouchet in #474). - Issue #291 — Make sure search result does not overlap with stats/info areas. - Issue #301 — Made the Markdown include extension working. - PR #315 — Fixed handling multi-line rows in reStructuredText tables in table mode (contributed by R1dO). - Issue #346 — Ctrl+F now focuses the search field, not closes the search bar. To close the search bar, now the Escape key can be used. - Issue #378 — Ensure that cursor is visible after resizes. - Issue #397 — Only check whether .css file exists on initial page load. - Issue #399 — Try to load libGL.so.1 before creating QApplication. - Issue #408 — Fix printing with dark themes. - Issue #409 — Make the WebKit renderer use disk cache. - PRs #411, #417, #426, #494 — AppData file improvements (contributed by scx). - Issue #441 — Files reloading no longer triggers tab change. - Issue #445 — Implemented PDF export for the WebEngine renderer. - Issue #451 — Make the synchronized scroll implementation not break the pymdownx.highlight extension. - Issues #452, #497, #499 — Prevent pip from building wheels, as that results in broken desktop files. - Issues #467, #488 — WebEngine renderer broken with new Qt versions. - Issue #468 — Include the stylesheet in exported HTML. - Issue #479 — Display `*` in tab title when document is modified and unsaved (contributed by Xavier Gouchet in #480). - Issue #487 — Added a workaround for missing icons in Ubuntu 19.10 Yaru theme. - PR #496 — Enable HiDPI icons (contributed by Guo Yunhe). * Translations updated: - Chinese (China) (contributed by liulitchi and the Chinese team). - Czech (contributed by David Kolibáč). - Danish (contributed by scootergrisen). - Dutch (contributed by Heimen Stoffels). - Finnish (contributed by elguitar). - German (contributed by Oliver A. Gubler in #370, Carsten Beck). - Italian (contributed by Alessandro Menti). - Korean (contributed by MukKim in #415). - Portuguese (Brazil) (contributed by EdemarSantos). - Portuguese (European) (contributed by Ricardo Simões in #278). - Russian (contributed by Vladislav Glinsky, Виктор Ерухин). - Serbian (contributed by Slobodan Simić). - Spanish (contributed by Félix Fischer, Fito JB). - Swedish (contributed by Philip Andersen). - Ukrainian (contributed by Vladislav Glinsky). ## ReText 7.0 (2017-02-11) * It is now possible to install ReText on Windows and macOS using a simple `pip install ReText` command. This will pull PyQt5 wheels from PyPI, and also download and extract the icons pack needed on this platforms. Setup now also generates a wrapper batch script (this was contributed by Hong-She Liang). * Added experimental Qt WebEngine renderer, in addition to the existing Qt WebKit one. * The highlighter got support for reStructuredText links, field lists and for Markdown and reStructuredText code spans. * The replace option was added to the search toolbar. * The WebKit and WebEngine previewers can now detect links to local HTML files and open the corresponding source files in new tab if those are found. * The table mode is now able to insert inter-cell line breaks and new rows, when Return and Shift-Return are pressed (respectively). * ReText can now automatically detect files encoding when `chardet` module is present (contributed by Hong-She Liang). * A configuration option for automatically opening last files was added (contributed by Hong-She Liang). * A configuration option for hiding the tabs bar when there is only one tab was added. *Bugfix update 7.0.1 was released on 2017-06-25 with improved installation procedure in setup.py, some crash fixes, and updated translations.* *Bugfix update 7.0.2 was released on 2018-06-05, fixing many bugs. Most importantly, issues with installation (#324, #363, #365), with synchronized scrolling breaking code blocks highlighting (#299), with emoji support (#357, #368), and with some lines disappearing after opening files (#345).* *Bugfix update 7.0.3 was released on 2018-06-06 with minor changes and fixed tarball contents.* *Bugfix update 7.0.4 was released on 2018-09-23 with improved editor performance (#360), fixed crash on Windows when pasting images (#385), support for Python-Markdown 3.0, and updated translations.* ## ReText 6.0 (2016-05-10) * The live preview now automatically scrolls to match its position with the editor (only for Markdown). * Markup conversion is now performed in a background process, improving responsiveness of the editor. * Images can now be copied and pasted into ReText (contributed by Bart Clephas). * Added a button to quickly close the search bar. * Added basic CSS styling for tables. * Replaced the tags box with the new “Formatting” box for Markdown (contributed by Donato Marrazzo). * Hitting return twice now ends the Markdown list. * ReText now depends on version 2.0 or higher of pymarkups. * The QtWebKit dependency is now optional (though still recommended). *Bugfix update 6.0.1 was released on 2016-06-25, fixing some crashes and making auto-save work again.* *Bugfix update 6.0.2 was released on 2016-10-03, fixing an issue with startup on Plasma and adding some new translations.* ## ReText 5.3 (2015-12-20) * Tabs are now reorderable. * All colors used in editor and highlighter are now configurable via the configuration file. * Links referencing other source files are now opened in ReText as new tabs (feature contributed by Jan Korte). * Code refactoring: some code moved to the new tab.py module, and some old hacks dropped. * The ReText logo is now installed to the data directory. * Appstream metadata updated to a newer format. * The desktop file no longer hardcodes the executable path (fix contributed by Buo-Ren Lin). ## ReText 5.2 (2015-09-23) * ReText now tries to load the icon theme from system settings if Qt cannot auto-detect it. * Added a GUI option to change the editor font. * Added appdata file for appstream. ## ReText 5.1 (2015-06-30) * Editor now displays cursor position in bottom-right corner. * Added FakeVim mode (contributed by Lukas Holecek). * ReText now shows a notification when the file was modified by another application, to prevent data loss. * WebPages generator removed (as better alternatives exist). * Plain text mode removed. * Added ability to configure file extensions for Markdown and reStructuredText. ## ReText 5.0 (2014-07-26) * Table editing mode. * New settings: `colorSchemeFile` and `uiLanguage`. * More settings are now configurable from GUI. * Code base simplification and modernization. * Dropped support for Qt 4. * Added testsuite. ## ReText 4.1 (2013-08-18) * Added configuration dialog. * Added current line highlighting and line numbers support. * Added support for PyQt5 and PySide libraries. * Use new signals/slots syntax. * Added option to select file encoding. * Dropped support for Python 2 and support for running without WebKit installed. ## ReText 4.0 (2012-12-06) * Switch to pymarkups backend. * Switch to Python 3 by default. * Split `retext.py` to smaller files. * MathJax support. * Tab now inserts 4 spaces by default. * Automatic indentation of new lines. * External links are now opened in a web browser by default. * Support for per-document CSS stylesheets. ## ReText 3.1 (2012-06-07) * Spell checker suggestions. * Markup-specific highlighting. * Re-written parser and document-type logic. * Lots of code clean-up. ## ReText 3.0 (2012-03-08) * Python 3 support. * Improved highlighter. * Export extensions. * Recent files menu. * Spell checking improvements. * Shortcuts for formatting. * WebKit engine improvements. ## ReText 2.1 (2011-10-02) * Ability to use QtWebKit. * Splitter between edit and preview boxes. * Support for opening several files via command-line. * Support for GData 3 API and replacing existing document in Google Docs. * Help page. ## ReText 2.0 (2011-08-04) * Support for reStructuredText, with a GUI option to switch between Markdown and reStructuredText. * Text search. * Global CSS file support. * File auto-save support. * WpGen 0.4, also with reST support. * Getting title from ReST title or Markdown metadata. * Changed the default extension for Markdown to `.mkd`. * New “About” dialog. ## ReText 1.1 (2011-05-28) * Added spell checker based on enchant. * Added fullscreen mode. ## ReText 1.0 (2011-04-24) * First stable release. * Add “Select default font” option. * Use HTML input when Markdown is not loaded. * Add Ctrl+Shift+E sequence for Live preview. ## ReText 0.8 (2011-04-09) * Add “Show folder”, “Markdown syntax examples” actions. * Start even if Python-Markdown is not installed. * Do not highlight quotes outside the tags. * Save plain text documents with `*.txt` format. ## ReText 0.7 (2011-04-05) * Tabs support. * GUI for WpGen. * Launching preview on Ctrl+E shortcut. ## ReText 0.4 (2011-03-13) * First public beta release. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/configuration.md0000644000175000017500000001640414575336012015602 0ustar00dmitrydmitryReText stores all of its configuration in a text file. A path to that file is printed to stdout during ReText startup. Possible configuration options ============================== Configuration options that you can set to improve your experience: option name | type | description ----------- | ---- | ----------- `appStyleSheet` | file path | file containing a [Qt stylesheet file] `autoSave` | boolean | whether to automatically save documents (default: false) `defaultCodec` | string | name of encoding to use by default (default: use system encoding) `defaultMarkup` | string | name of markup to use for unknown files `defaultPreviewState` | string | mode for new tabs: `editor`, `normal-preview` or `live-preview` (default: `editor`) `detectEncoding` | boolean | whether to automatically detect files encoding; needs chardet package (default: true) `directoryPath` | string | the path to the root directory to display in the side panel if `showDirectoryTree` is true (default: `~`) `documentStatsEnabled` | boolean | whether to show document stats (word count, character count) (default: false) `editorFont` | string | font to use for editor (comma-separated string as returned by [QFont.toString()]) `font` | string | font to use for previews (comma-separated string as returned by [QFont.toString()]) `handleWebLinks` | boolean | whether to use ReText preview area to open external links (default: false) `hideToolBar` | boolean | whether to hide the toolbars from the UI (default: false) `highlightCurrentLine` | string | current line highlight mode: `disabled`, `cursor-line` or `wrapped-line` (default: `disabled`) `iconTheme` | string | name of the system icon theme to use (see below) `lineNumbersEnabled` | boolean | whether to show column with line numbers in editor (default: false) `markdownDefaultFileExtension` | string | default file extension for Markdown files (default: `.mkd`) `openFilesInExistingWindow` | boolean | whether to open new files in the existing window (default: true) `openLastFilesOnStartup` | boolean | whether to automatically open last documents on startup (default: false) `orderedListMode` | string | editor behavior for lists continuation: `increment` or `repeat` (default: `increment`) `paperSize` | string | name of default page size to use for print and export (e.g. A4, Letter) `pygmentsStyle` | string | name of Pygments syntax highlighting style to use (default: `default`) `recentDocumentsCount` | integer | number of recent files to show in the menu (default: 10) `relativeLineNumbers` | boolean | whether to show line numbers as relative from the current line (default: false) `restDefaultFileExtension` | string | default file extension for reStructuredText files (default: `.rst`) `rightMargin` | integer | enable drawing of vertical line on defined position (or 0 to disable) `rightMarginWrap` | boolean | enable soft wrap at specified margin line (default: false) `saveWindowGeometry` | boolean | whether to restore window geometry from previous session (default: false) `showDirectoryTree` | boolean | whether to show a directory tree on the left side of the window (default: false) `spellCheck` | boolean | whether to enable spell checking `spellCheckLocale` | string | spell check locale to use, possibly comma-separated (examples: `pt_BR`, `ru,en_US`) `styleSheet` | file path | CSS file to use in preview area `syncScroll` | boolean | whether to enable synchronized scrolling for Markdown (default: true) `tabBarAutoHide` | boolean | whether to hide the tabs bar when only one tab is open (default: false) `tabInsertsSpaces` | boolean | whether Tab key should insert spaces instead of tabs (default: true) `tabWidth` | integer | the width of tab character (default: 4) `uiLanguage` | string | short name of locale to use for interface (examples: `en_US`, `ru`, `pt_BR`) `useFakeVim` | boolean | whether to use the FakeVim editor, if available (default: false) `useWebEngine` | boolean | whether to use the WebEngine (Chromium) as HTML previewer (default: false) `wideCursor` | boolean | make cursor as wide as characters (default: false) `windowTitleFullPath` | boolean | whether the window title should show the full path of file (default: false) [Qt stylesheet file]: https://doc.qt.io/qt-6/stylesheet-reference.html [QFont.toString()]: https://doc.qt.io/qt-6/qfont.html#toString If the type is 'file path', then the value should be an absolute path to a file. These options can be set internally by ReText and should never be set manually: `recentFileList`, `lastFileList`, `lastTabIndex` and `windowGeometry`. Icon themes =========== If ReText starts and does not show icons, go to Preferences dialog and fill the "icon theme" field with the icon theme being used. By default Qt (the toolkit used by ReText) can correctly detect icon theme only on KDE and on a fixed list of GTK-based environments (when the gtk platformtheme is used). If you don't know name of your icon theme, look at the names of subdirectories in `/usr/share/icons/` directory. Color scheme setting ==================== It is possible to configure ReText highlighter to use custom colors set, by providing these colors in a separate section in the configuration file. The example of such section is: [ColorScheme] htmlTags=green htmlSymbols=#ff8800 htmlComments=#abc Color names for the text editor: color name | main setting | description ---------- | ------------ | ----------- `marginLine` | `rightMargin` | the vertical right margin line `currentLineHighlight` | `highlightCurrentLine` | highlighting of the text line being edited `infoArea` | | the info box in the bottom-right corner `statsArea` | `documentStatsEnabled` | the stats box in the bottom-right corner `lineNumberArea` | `lineNumbersEnabled` | the line numbers area background `lineNumberAreaText` | `lineNumbersEnabled` | the line numbers area foreground Color names for the highlighter: color name | description ---------- | ----------- `htmlTags` | HTML tags, e.g. `` `htmlStrings` | string properties inside HTML tags, e.g. `"baz"` inside `` `htmlSymbols` | HTML symbols, e.g. `&bar;` `htmlComments` | HTML comments, e.g. `` `markdownLinks` | Markdown links and images text, e.g. `foo` inside `[foo](http://example.com)` `blockquotes` | blockquotes, e.g. `> quote` in Markdown `codeSpans` | code spans, e.g. `` `code` `` in Markdown `restDirectives` | reStructuredText directives, e.g. `.. math::` `restRoles` | reStructuredText roles, e.g. `:math:` `whitespaceOnEnd` | whitespace at line endings ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6932507 ReText-8.0.2/data/0000755000175000017500000000000014575355105013321 5ustar00dmitrydmitry././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/data/me.mitya57.ReText.appdata.xml0000644000175000017500000001771114575355070020575 0ustar00dmitrydmitry me.mitya57.ReText ReText Simple text editor for Markdown and reStructuredText محرر نصوص بسيط لمارك داون Markdown  و ريستكرجر تيكست reStructuredText Editor de Markdown i reStructuredText senzill alhora que potent Jednoduchý editor pro Markdown a reStructuredText Golygydd testun syml ar gyfer Markdown a reStructuredText Enkel editor til Markdown og reStructuredText Einfacher Texteditor für Markdown und reStructuredText Απλός επεξεργαστής κειμένου για Markdown και ReStructuredText Editor básico de texto para Markdown y reStructuredText Lihtne tekstiredaktor Markdown ning reStructuredText süntaksitele Markdown eta reStructuredText-erako editore sinplea یک ویرایشگر متن ساده برای متن های قالب Markdown و reStructuredText Yksinkertainen tekstieditori Markdownille ja reStructuredTextille Éditeur de texte simple pour Markdown et reStructuredText Egyszerű Markdown és reStructuredText szövegszerkesztő Semplice editor di testo per Markdown e reStructuredText MarkdownとreStructuredTextのためのシンプルで強力なエディタ Markdown과 reStructuredText용 텍스트 편집기 Eenvoudige teksteditor voor Markdown en reStructuredText En enkel tekstbehandler for Markdown og reStructuredText Prosty edytor Markdown i reStructuredText Editor simples para Markdown e reStructuredText Простой редактор для Markdown и reStructuredText Jednoduchý textový editor pre Markdown a reStructuredText Једноставан уређивач за Markdown и reStructuredText Jednostavan uređivač za Markdown i reStructuredText Enkel textredigerare för Markdown och reStructuredText Markdown ve reStructuredText için basit ama güçlü düzenleyici Простий текстовий редактор для Markdown та reStructuredText 支持 Markdown 和 reStructuredText 语法的简易文本编辑器 簡單高效的 Markdown 與 reStructuredText 編輯器

ReText is a text editor for plain text markup languages, such as Markdown and reStructuredText.

ReText ist ein Texteditor für vereinfachten Auszeichnungssprachen wie Markdown und reStructuredText.

ReText — это текстовый редактор для языков разметки, таких как Markdown и reStructuredText.

It supports tabs, live text preview, synchronized scrolling and syntax highlighting.

Er unterstützt Reiter, Live-Vorschau, synchrones Scrollen und Syntaxhervorhebung.

Он поддерживает вкладки, живой просмотр, синхронную прокрутку и подсветку синтаксиса.

ReText can export to HTML, ODT and PDF formats. It is also possible to write custom export extensions.

ReText kann Dokumente in HTML, ODT und PDF exportieren. Es ist auch möglich, benutzerdefinierte Export-Erweiterungen zu schreiben.

ReText может экспортировать в форматы HTML, ODT и PDF. Также возможно написание собственных расширений экспорта.

https://github.com/retext-project/retext CC0 GPL-2.0+ retext me.mitya57.ReText.desktop https://raw.githubusercontent.com/retext-project/retext/master/data/retext-kde5.png retext Dmitry Shachnev mitya57_AT_gmail.com
././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710606401.0 ReText-8.0.2/data/me.mitya57.ReText.desktop0000644000175000017500000000501414575344101020017 0ustar00dmitrydmitry[Desktop Entry] Version=1.0 Name=ReText Comment=Simple text editor for Markdown and reStructuredText Comment[ar]=محرر نصوص بسيط لمارك داون Markdown  و ريستكرجر تيكست reStructuredText Comment[ca]=Editor de Markdown i reStructuredText senzill alhora que potent Comment[cs]=Jednoduchý editor pro Markdown a reStructuredText Comment[cy]=Golygydd testun syml ar gyfer Markdown a reStructuredText Comment[da]=Enkel editor til Markdown og reStructuredText Comment[de]=Einfacher Texteditor für Markdown und reStructuredText Comment[el]=Απλός επεξεργαστής κειμένου για Markdown και ReStructuredText Comment[es]=Editor básico de texto para Markdown y reStructuredText Comment[et]=Lihtne tekstiredaktor Markdown ning reStructuredText süntaksitele Comment[eu]=Markdown eta reStructuredText-erako editore sinplea Comment[fa]=یک ویرایشگر متن ساده برای متن های قالب Markdown و reStructuredText Comment[fi]=Yksinkertainen tekstieditori Markdownille ja reStructuredTextille Comment[fr]=Éditeur de texte simple pour Markdown et reStructuredText Comment[hu]=Egyszerű Markdown és reStructuredText szövegszerkesztő Comment[it]=Semplice editor di testo per Markdown e reStructuredText Comment[ja]=MarkdownとreStructuredTextのためのシンプルで強力なエディタ Comment[ko]=Markdown과 reStructuredText용 텍스트 편집기 Comment[nl]=Eenvoudige teksteditor voor Markdown en reStructuredText Comment[no]=En enkel tekstbehandler for Markdown og reStructuredText Comment[pl]=Prosty edytor Markdown i reStructuredText Comment[pt_BR]=Editor simples para Markdown e reStructuredText Comment[ru]=Простой редактор для Markdown и reStructuredText Comment[sk]=Jednoduchý textový editor pre Markdown a reStructuredText Comment[sr]=Једноставан уређивач за Markdown и reStructuredText Comment[sr@latin]=Jednostavan uređivač za Markdown i reStructuredText Comment[sv]=Enkel textredigerare för Markdown och reStructuredText Comment[tr]=Markdown ve reStructuredText için basit ama güçlü düzenleyici Comment[uk]=Простий текстовий редактор для Markdown та reStructuredText Comment[zh_CN]=支持 Markdown 和 reStructuredText 语法的简易文本编辑器 Comment[zh_TW]=簡單高效的 Markdown 與 reStructuredText 編輯器 Categories=Office;WordProcessor; Exec=retext %F Type=Application Icon=retext StartupWMClass=ReText MimeType=text/markdown;text/x-rst; Keywords=Text;Editor;Markdown;reStructuredText; ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/data/retext-kde5.png0000644000175000017500000037400414575336012016174 0ustar00dmitrydmitryPNG  IHDRBpzTXtRaw profile type exifxU 0D#f*JnTNp skҠ=D ^uqwkt 3v<45V=oB,&7 iTXtXML:com.adobe.xmp :AsBIT|d IDATxwtUwҀ$R=4" MPTP(V*v,(`Q@DAB RIv# 96;3wf̖y;ooШF-io2*!"""""""b6ӳ2җm]bejԔ>U"""""""_Ψ0"""""""bL&J噱NDmT̆M[hXdeeۨdb=4kҐpvvJ@6mFzuHKK'&6ժAH DvN[lumXfǎг[Wl^T$.ٳ]paک=[&UT&sպ`A(ZE7'*"_,ii'rZb B\]pw'6>̣$&'g~RRص{G df$&yĤd38p0Bqsu3Z2LTDxiAUT ;#6>3frHyovmgOWݍ4|#=5g,||+I~~ddfa<cE4W7mɑpv`^Nrs!VR0sZVT*UTO>k׎^{+VбcATt& nRAȍ7\lL&y祏7^g@n>Qg|?l)scϼ@zuz3u/""y͛4`톍|Q%)8V{NaăCmevF>zS>siP7۶s]B!ޖ4|||hҤ ;w}%>-VL&q TN Yj-͚0888^-`›2/4?pyhX> \]]2jXa!Ya`0nk StHIMcgIع Oz?¼ӏ_ JݨH  __/\̊UkJl>x?>/.Y?71a4R1y&&GzuprrjOT݆/ ֘XLJ?@`OHb!$*OZeiczt̫o_ǘG aDم-X1L-f>2c ZWJl"-=*2*x'Z ︍ZaX,~V^(wϼ4|}y'Ϲout?zqؑp 4_c5ƙB \P*ymP>aȉdăCKiݼ\A<dXJ+,,ĐAJ吐>̊+SN5+ۢ?.tlDz/(P"d{]|~4/ynwZH-zƽTbw7}%1Gy⹗4jP6ӤQCF^f<# 6o^HD5&T fD7kc䩼Gw@L_v]yz+Gܟ%5-2c [m''7$Tcy..nά?aZcԉYs#Æʺ "6m9k`pjP ATo)`ʴ}2J};et­} `b"_=7f:u BDDb3B+d?+ҩ)% =#l B| aZY"hVk֨NDx-~exa4:j/5-Ϸɩ%IIMϗS-$։?R-8f֘_l6'C NNN%[2x|,lNVQbhѬ G:z#I'9YbrO6m u عgCBXbɵ=>VXH~~~&9TJt&uܵ֍T[mΰ{>G<ߌ&\]\H?z|+aX~m] cҿ^""bsj(q"(+T!ȹ[3Xwm9UH^NNԩ{#Fلr=SV,kTp&ǃK2vԳaꌙ3s֮M{g-;#3&Lbϲw~m#;'ՊUmt|9t9??SS1-ܵZIcݰAcXwʟ/ϿQ;LJc$Kػ` g/ս+cƿMNN.a5xdF ErJ*];wSz3uϥfмI#֬HZz$).#-4Ol.5Ǜn]:_˸[pfRr Vҩcp=^rn''GZhFNn.;w`nߗoza bx)i%~ZG7c*/''O^^gZtŃ{@&M>}zQr B=Plz[zek %*9go/X"~s!쟘1k*c!#dž_V xóvFޝ8c*[Ojs,9cqʗ!kNptth4r3w\7nc_HDDD l9^5?rHLJ1qZǾyGxi|o:}rV^;EKŅW_z"t`su{@6nb+ϷV_~]s|_>֘j ?[@6xaC﹓_,un ^^~-zЅ,ڟ땲fڟuw?;o[obs7Y˘6c&w[FSd6G~N៕2t\^| ~wlQe%e0x'PpDq۶`{\EDDr9|$'L!呓Lr/cUfpsq&YS\]]myyyE`` ԨQOOrZsttEDD1"DDDJIMcͺ Ԭ^ ?L j_^#Xzu#2<6Z`(_Nsnf+F'Y9#@QnNp۸iilO`l֪ B"rqvrnXYNJB\l𕑞?ϻf_c:EDDDDDDbo.88,wcggL+/KX<=lVw,5oRr2sb붘ŗNT-]mm֤ 7]'F>ˍ=ѵK.xɟPZ5"""""""epƿ6ڵJ<ϓ?ZavAK e1 ǵk؇}Sk(C$1?p2icP+ʇ L8xz}2᫯eӖ-ylpݯZ|l.-x`%Bn4G㷅1͸3_DDDDDD,gE=1#|loV?ۋ33Yv]9vj֨o瞾j!LNBbR"/yXYf-}7ܙɧ:EDDDDDn]tgg&Mx]OO:PHKK_ܟ~}-G7,Ӌ|vUbK˶f~w?̶N2IcOa4qqqaC>T-^6F%C{ D*<}U݊@LLժ`u̞ iǧԡQ"ènEX^~v '~ T'EDDC5GPDDB)1""":!"""""""b7XwyA+*6ߟ~_;gDZi8vWձc.hQΝc;yqX;#}Bի l󑘘bjժeN?rUT_smӕ0Wk^]hxr9^0/s)w~~> ~w6mXz-/ESy]E9fj\hxbo7<1^^nqq|8q"~uXXVeVW= fT\dCB–͛ bPDDDD.9s9?-/{r/BB+ש!Hݺu+l}Ӳe TVؑ@DDdi;w1רn2ZwtDVXE"EDD0!'K>Kxb䳸ar0ahs%[]1*Ծhωs!ǘ4iYYY1u/ooDEѳWojԨqE+3#xRSS(/(ի֭;&ԛu%f6W Qn]*L akw~;9y/ָ .!CSre&#ΛvG>a899R'2!MHH%)?Q B$xɟ BDDDņ!EEE|)6 *+!55ƌQxyzZ *?$$;ݮ2pttG)";MN{M\jVXvMDxxyy֛ªU+nyBBCCٽk[nylٲ-L!ń%ײzYf37؇ EVDm}Zzy,N֭ؼe+nnnNNs1[ M7qͷ\tHpƗSM0Ko@=ӫUC! AKiKIS0L  ~󣨨п__6i|旼3 = IDATj5lAH[\ۺ>3駞 00-g^BCٲu5d-T^}P-$䲆 :7*9p" Y fÏ0jԋ4iu`e v0! TZM6w\]~>\Kwqpp`wZɌyٸi33gLɉg~Evv6Pܵ?`0vɷ7)uϊiݝv׵ѯ04jT vZrwm\_uɱ>0 71;7f4;wf+lۜxDx~wzOߏ?jֻ3OyJmɐ{cZȼu("" Nh sE{dk4jccqswiHfVM7g;k֮UwJZ&00mZDE@Xh(cx`}L){Ȏ; ׉y0$22iՋy~tgx"# A+d5hؐŋAٺRUBkڞ_-\je% XV˗Պa 4i_JGV-y٧/֟}}+yͷkղ\<<=oy)ލ~7h4,X;ڶ!9%$7jȡGpvvKXVBk 7/n7tjT I{-7cZ1Lэ ~S,_~m{ヒ{{GV[K] 9R֡0gP>Hgg6Ylt;u&:l oo7jȺh2cl/-=ĤeB"yi 'GG|}+NJj* ;wҫGw.Bxxͻl姦qUNNNj1đEs_a.2b Z<=4ܜ\6_:Q"W= x)-s I }AK\B^P90_-yQ˲ ooV獥C5s6nLz;5jƍ9|ժ_ rw󚫗Xv;baÆvy~}J"d{lϞo ֻXV|||HMMosss[:P| h԰i1]ʨc.DE2lNu''PkZadfdhG_n[dhٲ~~X,222`0Z3~_ĈÝF ;Qz5R;tϕىTf$;;];wS+W&!>-ŵ4`jFF[٦u؞si8880{O2Ze3y_iӪչ$eÜޭ+~VXmݻ1≧Zgggw7EEE2ڷ͍6[e}wcZ; uH"nxzzu}9PDDDAHTN4m,NNx!59?h$fMc0hٲ.$8 `'a61oזڶnHGP1K||$2"B"%$u'5%B!yyy_n__3^t6lXh$#=J*ѴY3\|%eܙhތK2fkҰA-oۛԴ4{?t///ǘ0q.&:v\K/#=#JV-g+T*7tr]+ࠪ >"3Z7#2u:<4 g}wZ&5jTcO0x{{1b01^""" BkENU0AF'z w:/Tc#q^7iAn Р~}ԯ_kKw<8gGVsZɼy9˶Ȉ]/!ժUر6֯[7͚7'!! k6QF_y$$$azڴm{շiw˕:[w_.1db%mӇ{7C6Y?ꊫ+o>뾚.]w ,ǎq:\ժU3m8ןm;::800н[Rpuu-s^x>xo!1OAtz7wyƮ/gVQtԙ.ic6C||{F:;`y_[7jEDDH B`2r}ݻ?|ͷ PR }mΝ;s*vRTTľ}HHg޼yt܅>}^߾7%K "<??mJ*@xx8 %BJ{C"W"/ZL5U#7/.⑇լI؝+)A*JsS+?Z1gv5j[vj!q^5z"u'FO//9T:TR)/jVM5c,^___4mzA\DRK]bШAWFS-$qZשT|s~oڼF z\]+)>n ;T1QDxk[zV\MfMn֮@ըZԡ1 DDDDDDD^8 DDDơ:!"""""""b7P =_ƺk36׊4\\\l_C{ D*ƈP""""""""v1B 58(**dr _!%8;;^FR(3ILJJDZZW!%sU"""""QOyyy;aŪDGAZ KAÈ:P""""""""vAUpm#)%,;^Js'$p!rzFpPTJ aXطɥ哗ϑ#IT@juS;d6Yf-qeffEX"#nɤJsM_-g=ҿb!.>tcX*~M>Ck?Ů]=̢.6.El6DDDDD\p0jNqE6>==?>/`[γo>bZVQɶ!Ï9mkoЧ *w:.f /d5krH"gĴGYfEDDDD\TTm5$&RXXxyy FS>|hڸ- ILJ"/7lRMrJ 7n[- n};VxILOϰqpp[o&ZHBp7ظ83.("""""vۻ'?ϛO:uZJlϿ̧c0j4o:F]w;³OSz5f3Ͻ87^|v{ё-[Xזeޯ^6II|;{RSpvvOx{{>n 'ѱC{_Q+,Ĥ$32clٺIh԰oEff.16BY prr"//4tDfMYBv x\]Kvd{l1ٱkkbΝdc{rJwdj֨~'IQsWEsL=WĘk乧"$$`y6juع^|7_G0wg|NQa!QQ 'do^ۛxoY<{L&[0| |'k׭󸻹خ ~Yc4qcXrKZW_7fk4o 6Bvv6IIztԁ_}M[HKKgc#Xa#}%E`ҽ 9v32rC9Ukl6O0!4iܨ6'$r Yl9۷c8-9\QQ)etsݸ!~>28|_Q/DpP{5d- j!!sG3Okvaw/z;δ3HOOмYS۲Ϲv&(*|[Ąas9`)-G=ϝo狙_Z=lظn7\CeCvX,ztUܩ#3TŃ\*#=;wRV-|*A2Nu?++$Eoז[?ۻEǏ}b_̘NmnR?2|۞?Ȩѯ0x | n ׬رc|yԇMg/Y26O\|EEE\yi5m|2gKZbf3?Ǔ'ŧҋxyzҩC{bbn ֭HN{? x+iMfܟؽ{||xчyuҠ~R!CJ}`R-Dr"9A ***AzԨQy.(5+i2ڶiqԉ".qzl; /Qjevݡu'׵r%[+$8 jZbpssMV;m4tsrretq hӦRҰX,lݍM/ppt$38Ĩ]> F22REnYaHxڄ!9Ӳv8::ҧwO[m 5 ~, 6`cT M%^hؠ>KEv@t֬u庶mdm]ظxͦ{ll޲Mݽ 'vX1HF#NNN,s)yyy΋.;,_[4&iPAh$%5̺ 77Wj Yv^^C+-+ ԡ=iYKr[7ަa%nۚNbbMn{xỌMV89:[ wwwRRSIع^=XGnn.VOOOs*gQb_Jb H·mUp;jh0`Z1ͤUb?-f na49Vx B a.*={p;='Ə{j< ~[%?fyO I*1䏦R_PCjjZ#'(TJӪTLbRq͚~Fnќ&M3iXVvCdɀsd4__\ ?ŗUh}!ݫ'/xɟҿrI v ]mofόѱž#""""""v8;;3;˯~_} Z7v/L9|7o~4jԀ7s6أܼ<[sr]>>X&--|||H-y''G,]z{}||C/5-aγ.k8Ej"%DwekS9ZGaQ& ڶnWLHHpq`2Qd6 Al\<5.^={Z^b{i&*ؾώ|g_x6b2qnf~5;+[.T'w51QDDDDDD댗Za4i܈_\-g [BZZ0f(! ǟK Z`0Ьiw5kiݒVZ\~bb1ci݂H32XvV|})**"#JbR u"IIM-qWr-V"9W!ȉ1CN}Im jZnpmd\TDFFxzz8_J6f||8#E%;;}cGqѼ))<~ <}{,jﰵj׶5g|F&{OtrttOOtc9[]xzxy[TzFaadddw>۴իЪe4?Zf'>N3zp) ul;>1L3f3Fw['TjE7^DFDYmnog1i F7k®{lw ibǧ8 x|7_Sx /^f qp0QATOĈYOFjdsNwߕ?* ?#G[@M&jja CXq1,SBX䠢& nE1ѸQCFSSOcO/ۻÇ= /??_nV5 '1mL&i; Zjkom|l#իWOyqX#rsxwD/WFCeGS  ёsMرE`+WUtɻ%E=pcJ!YmwwA+LO'PT {!11XʸC*RgLT`m|4u:S>pշeUaȩ=թӢ"#i*߰6QUPUV6BSyyyQz5Ue --S g ANVJ[4A Z8HF#T <缕8AAuОΝ:Vm1Lt Q7*2]غ;Uh4Rf *LVV&ǎ߂ //o*ʺBNj3LnMTd ;8x 9@a]mEDDDDD셂k+5kTWEUC@sUiBDDDDDDD솂 BDDDDDDDn(Q`dvbV%gdu6U\S\]] X!=#z[nqF9h IDATLڵJMSOK^~~p(LiE '| '!"""d`f;wN>WTTDLv,*HDDD.hn:88;(W2|65&%"{|YÜ.bbS+&  ))lNF 9o䛹!؟n\7b(Z֥#DDDDDDDD솂 BDDDDDDDn( DDDDDDDD솂;pZG,[ТM^zUU&Z@6{T!"""""q{/`xxZ4QZ^׉.fiծ3YGڦZ@rr c_{\fff1ftygvaiEP@PykwwwwAݤ bбXً~|sٙa|O5zt܃=#uRRuv ([:{o&?ٍ2cFAA hj+ԭݫ^@ť3rI˽||qrt _>c|\Z9*w΂E8MEiټyq̗!ɸr2L:kѰ~]   m%[XxЫ[=wq=pUk7H\6G9~ff=}2669j /fFBBBΖP(hԬqq9y=]]^ѬU{vbƵL2SҪE3y^@.3r`j$%%5H9u,Nɣf߁C;pH ;90jxًc&\׮dϾ_Z53g}'<ضsaᘛѵsԫKZZ=,]4Wl׉7obٸv%ZACGHLL rȱ4oru IyCPp0..L8#߬wJJ koyO޽{=Ch3ob!ʖq{Cvٶcg{R^{^DSSzuGGʖve<}Gbb:4Wv&hPO}8Ȅ1#'==N=J\ΐ}>-D&1w4a\_aƌYJ:s9v Rœ#2i Sli:oXѾM+oB jѾmkRSS9s<>WYt=A6L\.cx^LMIII!==*W@:nb ?,##ϋ8v܃/_:܆d g*U(?+ ڶ {;.;|83f5k~[}utS߆|4|omy 6oN̙1DGE   ƏU[fjjsز7ob9yy nfΛ%κ |9 KAcFҬɧ싗/iE;( vUH"Μ}ILLۗe\y qq@HrJ%==3fDRD D/GHFAf>4Hz/R.% BrVq FFcdDZZujTchhHڵ(VH4|x%˙p .^FGG{{[d2MM,Gcɲ<| Xm֫Gν{<㜧'{z L6ŊFWWG|wzzz89:ТYnݾˡ#TD*~Μ;-GqfF-\\.88{Δ*Y߫8@HJj* a=zhkK[`+Us8ooݹG9~C`l'Gbb:Jz=--M!))KyYcnٺ'Ϟc:,t˛Pۭ&ƌ({S>ٽ7?]K\셓/!89CGELgWYM5#N`w.]J%&yh?k ~QXYΖ& TZ+P+RIæ-y7C\'ۻZ䲷g]ʵkݒݻp1.{c㼴jޔvmZ}q8uN?}FDx:::åd wvluz6;#_s9IXX8Ο"0(}Cյy>怪7Q} ;۳sNx"É}Qn ,HmRtdwD[KFZpެl=[>v?"_PA WyK9u2{5oݞWaڷe?%/Nz&s^GEK~SS֧Ejר޽N:Y8ov66lߵn-ʔa&& ʵ넾 ֆ\Ttٛ3gs-&E lڶ{!.ӳ;?ǒ9rU6ʍ-uj gb߾֏G7<Ws_t %ٵg׮T |^[6g!AAy4u? {gRn#i"3c7ߧ1e,N9@fM([ڕh]]X0g&sHnXm&6{;[^GEgA!;#Ab9TXAG3Rr۶.]L1#s4]\߯7.%G5^֛ BFMP ̤f݆-Sge$''ӪES*/OPp0l'!1mmm!l֪=> VX?:g|O/_T S4}nH+VYǹ^ M7ť #MMM7#a:}VITT4CF?u9sEcc6 y}ρCG8|8+_MݽSCTϟ#̙m;tQUjmeIL]ԂASʖkR\TRQ@xx/H'0l|J,6Jh̻Xb)Ϟgj*\f%{vlA.^8tT n\?Ȉʀ# ǵ ڵ&6-ySzU@?L6Sʁ3kjըk 9{;;F Ha'oN9x(fmmmm?DPp0zzz_ {{ӧ~̘3O֮M+B˗!0xLObEglLRR#L͛QÇHoܼ*uKg~tO ,Grfe˔f߁Cҹ0G!AtS̢E ?[̛5]y~s-m92pnݾ!M?)wϖ/>'k,{\4ν޻G`/ C ڵnvޱK6oX\#A:oQéVCӳ{nݾy uV.]D:: 'V-gҌ`nwkV,a)ү7 Y=zs擜̬S׻'5`X[Y~gbEey2DZv˛h/ZB*RjU+ӵs'uU_INNVirB̙)= dj9 kn)Zy=CF&25^Ӽic+J3M{?WǍsgJص#N (JOOWe¥jU]@vr$*:EPJ%8zp/}zvޟȈqcFwV6[vrGy T*10g٢mݒAmKOWŤ˗!Rf\2#p]:q!`BYr)d!Ro/^JC оmk̳%j֠}ִoۚu.)`meIUhĝiS>$5cV ?֦WkwTCv>.sfLKfܵw?EOO kVС]Z6oʒs$$$0m\2220̕reK3is;>~WfQԨVU/^pYX0gt{ XZbˆ5vW̬'Odݪy*`![K8}<-ٵmZO s̝9V1x@?tttczjAyϋܺ}n]:1x@?ڵnɜSsQ~7޳ajbcE o/׭-=NJpoޚk֩U"2,[ѶZJ3:sNJ`I>}%K8ӸQ\J:Ӭ;t$)H-q-BZ51ӐWն9@2HII!%%4Q MHL֭;'SVM<ѡjojӲ9jTVꘚ|\S@ 4Kss3 /=d,[<'X|1e˔KIIa`͙tk?jܨ%K8=Tuuu`,nZvKIgNree5W{C\J:ӦU Zh圣:6(+PjeSv̟=wK9j=ec)fDi~GA4E̜*TPDC'˙:i5kTcيx6mX`aK92ʲt3l~6.SR ~CSv-1qݺ{^[W|ʽ3?i( @ll/?ۢk)_Xt!fY*Ν = ޿/=.\<[""_cV ?rq )ܹ{@xxf˶r-沷wHUr\Ǭ ---lml &##=ҡ]tꀽ-K(]ʅB- }g~`oR؉r*uw9FrLPo>oihh0y8:uAJj*֬GKKAͩV3r:_91 OO|\xSlm:u `҄ق0w'&qӶzd;~~PliP A9))z"W(ha.⟳mIL4 RRRؼu;wn4oXy4kҘe+W^!;GD~9R֝?k7x6VכEKWHu]t>hܨ͛5{- v\OK5R$& DK炠`<^HmG_K3d2l@HNyVօ[T*y} jJ wwCcAAh˩S{oQ)",,k7n% b9O?))ɿYo>\yLF]O3g=9s}*V(2N=O&-8y/^0l@Ν:_v&+׬/_6[nO59e_Vre\2pɋ ʢ3 o߾GTZ峳jv6lݸ>=K ~߾}ܽOd K"y>Cjj*G o322z Ν}Ck+K^"+V#11)޽{h۱+vd gn\˩Ԇhf hL&OlٰF'/:u6c @  GKr\V{=wnCN"!)Y|,;H#_GIy/~ ;Ԭ^-G?)G##6[E&R_|2=@_4; }od[!.N!sJ@smģE ;7n/_|\ET~Н·8iѿo/'@S['o<ԨVU 8KiҸq+eM &CfY8o6}zv@9*/>>1&QQAry IyUkw^@]4~ E ;})aYrXBb" vrd[R%UIJ% /6 @  NJj*/^d[ҹڹX14 RJKS*Jo5S0KB~R^9Zts\?8D'r9-i_(ƞ}r|yio36jMÜ5)T)jf/hl߉a\t{UW]E];wRKigI`2Rh_-!>AϤ>J~WbyG0iXƏ)-5wg|NbE`/9%Z&55[ryI u?۟+J$ߓ3?͛Xi\NcRҙI=FIIIE7!|9̘KhmAA[.:ۏSZVTffֹdG^jԟ%5|Бc]X97vɛ'eJѺzzmKfeiI^=s/ҩ3?Gy: /o_?rqf;$ͩRTʕ*d^Pt))Y{?rR?!3Qpiʖqt㙔D_%/[ MAw_GRՅfMU9e t}NA s:k#=:}%>^5vLUێP-p2ʖvyfj$$$Hǟn>p{te+cUf9WԾ#\.岱Q"gA~_Dpw{AO\]E c'c)tfff9w^Qѳ[6n16+%UreKEJ*H洹Y}? }Edk7%99YL-%6m!** [cbؾs75W\NSFZͳ' MHL$$$,R?yJ"E!**!_HP>qȈܹ Y`.vRQT)^GE\.'<ʒnݾâ+e`@j>W?:rIJ%/c^63ٍW\EJj*.`20!uy151!..'O2}u_kx&?ݻAG5^JcA_N{jSlJ/^rEnݺëpbccXcY ͛6\_LV{G 0(H Zccc[ԪY]G@*5 01#5wV9z%We[6x@?:uh'=`2$y`Y e˔Yc&j*$-tӥ\m;v%(8uKC6F9r9׼Uܻ ԄhӪVsWUw)l߹GWL66ٱcӖDEeo6,9t3W[q*%+V5o!Nֱdmt:O {;[6n$i3pId2Gbl>аcESSsGĥ_ۏ p$Ox0elգ+{tbٶs7>Ux8(wn 4icwԫŞ)QѸ7k G f歬^!z}4iцlo^),eRRRojKIgjՠbrGDp2n޾.v7[t[-0ԺesBC_ImмulbJpf=GG Y!ƏQ(¿JN!dNAPfAA7}V-ɕˀ6-ABoBCsgIjAAWȠaҺes9q( ¿ xzB@*#2  &%jwJZWHMM%$4,*=/)q/&j~_s:tMMHKS AAR(5yP ~ɴLXm;vfXضcV#D >nc"  /ިH/`/#·@\&AAAEd/AAA_CBAAAAAAAA5D DAAA AAA_CBAAAA ?x&-Pݭ>s,߮    j~_ ,aB󴴯RϽ/\m;o77٪ESKzuk>sБ_Z )[:e+UrڴnG  nߥ{[   S"E|yӃw`Յ5^ J|[?AKiRRRa|2_]gx̏}sr6T%WAAA!֟gd6ȿڊm:`mm¹BrG`2=x6-5kdU+$KGQ+sfN@T~ !1%3f0LMMe꒜Lصg?e˸2}_?]h}nvlـWSjPnR ku v( @<ž}сceiIRR]zufj1oBBBY` <޾}Ghܨ!ݻ!PAAA9B^yTJN, $%'-IIMXXs~֯^ x>$$&o,- qxnNOGqV.[#1̕SKٸn&&&rxn} 2CvQXQΡ}8ozzz9x)^(OlشS'qU*Wb񤧧ÜSY~#\%/oN\.ܜCv1mDrK[AAAA@HЧj@@!V ɓgv-Eega:vh=tl׆7o,1t0Ŭ 5m2FF  -1GAAA)tBhQptr ʒ?yJ0̕K^d2 ȏkҦC,7)(GDbnf Ct`/<111154r Ӊ}7OoPsFXd9ǎ{PFu{DD$YzZfj,[B \>AAArHO[{chhȾ,T\N15۾ZBIZZmOXx8J|)1bllLD/n/r\o6LFFU26΋q^&MKjJ?]ӮM+֯,\ G{""^c^:oCjȯXx&Q+   }o)51 : 8njoL%8Q¹8<reJ~HOO癟?7nV+ښzJd,_$9qZZVǎ{*d6lB%r"u3u;#ܴm݂Uk6uoѬ 7o? >p)RSS8u>WrN-tlˤ߸9r};Sum۰{~{^[͟{ƍHOOgDFDOҥ_6ϙ3!K0W. sb0[6thۚ="iĝ=mg89:`og+\AAAb߾6 G7<Ws_o AOͣ1)ݻXd۩\K^+Zi&/DAG\z]-q=&Gh*AAi&NΙѡvL7$j7hLvm߷'~#5- 22>d˕E,[IDd$ٴn-#tfؐAL2m`ajM$ =BAAG*Z ===P mx) сNxyǼ%!>B Fɕ+{ofܾ{%W~q[cY:KRXQ\͛Xs0޾{ǦuذfeKҥGBBBQ(4_h۫mP̚}}.sx1;wbn޺u8gyeq(ʯ-C3( IDAT cٺq- >S+W/gˆ5yKϾHKK ##3s=ꏆO]-t, /cִݱ[2l""#]W,FGG;[455)^긱nr89~ 2L*ha!&AABAAե$7nۇʕ*PJ%nݹKBB=ť' ~NݐdSByN=(JV@U(V e͓#NݺH?:CSS57P(#blժ-zzzq-ex@9vNڢL&[M  6[v=tVjÞݻNx东Waatޛ0o͛EM忢J+VS^,- Pv-RRSp2݃ټm{bܘ9*LFA sq0 jAAʔv !TʕXa3Wf* M.;r&)) &6;[5θtVwvvrmmm, q/]kZpC222ؽw?G ))XYBK)?y9 "uZ޽{ϸ&3vdvl 3u *:0h*AA sSRkӊ/bZ6]n"" ?Baxƍ-. B- yNNˇ/A]E2"ݺ݉]("bݍشJ3@geEwݟy|vg{μ˽gNҤQ>Jezzz,[<_4?刎NaOCHƌNY%11k4#FFL0&-۲! ԪySڵiv Y-!]ݰQ;i%zB71g΀DZ!,} *W=khhPRΜ@@@`  <<FlVr6"౷꽘xIv ,W(jgˋQ7w5Ks+7hޭ)cF.]v]P&(.T5脇qbcc y6^Wv-iۨhI|\ !!Nɟ/o^3ILL$ B {ܻ@KKzsE88='.{&}8n4ڵƦHafΙGdTT1y s,bYr" !HqSf``[}byQێTРÃPJM&uS!E)굿9Ξ;ObEɟ71;(::/QVMJ*)'B^z-?,Y\F]]hwޣg5x߸ٳ4m ޽_W!B>j nFk/[T(_V#BtxJ /[~en34&$^:u$B!B9AD̛iӠgOȞ]"/B!BiMI CcB!B!I B!B!~LCHBD!B!:"B!B߆4!B!! !B!B!mHCB!B!~"B!B߆4!B!! !hڲ-Sl>.XLMQ!7nzy*WwWkۋдe[p2W!G?q=M88:1fd B!]`ڴBCS%00SgRZm))]NȞ-/q8]vpÍ%.X[޳92q)щ+i_Ež}t[[)s!B@JZךq!损dhMY[tԁnzP*B%B!܆~l~~,\[w!CZ5oFћ3Yɛ'7`tMpH g䴶V+mlپ??Q # FWWWM 2?nG D8;b)7nz|Z=9JjUkzQQ1|@*V(@xx8-khiiQF5 臎Kރz… b93'NҧmR%FGGӭg?ڴjNIb_/_d\ EqM+/]aYTV'>DGGӧTVEV'"޿gƬy\yek̝iE}i֬@``9s0|@L:Ȩ(""ӢMM@Q;4 --M|}C O̞1 ##C;G*qGRL)#"6c6w'2*ٳ1?*OnGptrf#~n=2 J/wz  &&0UM5G.^y$[jub;`|}eU^Skt~2BmpپٳZ' iXώ-ɛ'7J thF25K{STIβ,Y_aȞS,2O^0 OCUfuȟc'XމoߢKV-޵ZנЬU{NsGOO7gcOptڙkyA=ƍS6c6'Na% ӧNpr$B;Gh_^ 6.CG-fv?cɶKLLlڰw3b L)xr=Ʉq9~ԕ[7r6}64ᯛ̘6{vz9ttxS?ʸ#8e:^Q+k7ng6_I7.a|e~ M[TgV"̛5.{))I-̝e~Sr9LDP;laӧNbҴ;v"4, }.x9ĨCɠֱ=)6xǏYF 9lme;#"WΜs>j5|Ҡn=~ IY̬\'2w=km /sϞ˒sU87mڶ %XXQr;'k x%kWّc'yvBAF9~TH0ru͞[HLLe>թ>kۊJ*ʬlRI)][7rӝV-1vd"##hܰ>J`1~4tf#@6++lgIklt\Uv?,nՉCe;6Eۻi5ȞvPw1٪ҺFGdTu\B:n<`fjʌ#2LŰ!8q[6RXQA) 9>ʹtOU>()KPv-9DEYr9 !BBRT$tݺA wk~ݠ 4ad7޽c?‚V-r !}{ C _vO(?tjߖoZjX.v6E"kG_lצU ,-,T72dÔ+SڵjP((Q(eJ3qq<}XYY~9U*8yn;a``@f33ڶn=̑==]2+gNrdNHp75%i5WNkF˜=o!OHwmmm6Hꑐ7On ǙsH ""+lXc8y;[*+&-7EWO+WӬFx;ׯ)ۓ#{6444(REl&N҅(كԉSghբ&&d63MҪŋν{IbcƳݻ(Q&644$o<>KдQC._FH[܏RFuTԮY}== ŋZiоM+LQ(hքxxf>{N~135k?۱}[ 3e"o,?YԭߣiㆸvăPkTz?R?|j|^ zzdȐ͚~񽿷ӒTP(xfDBwx1;ܻOBBu6 N…~HmlP|YtttS&O=C! ɗ73{u,{UW`1Ѷc7նqdL P`} &{~Z_lpċWHT*!B |&֝nׯQɓKvsf3?k,Ph&yijjB /5%ĵF,_9c Ҋkjyh`]`ddzMo;ulGLL N' +2vp Ҟ#8$$Y@pvPZ~8twy.%KU_?|sCz?mYU-;)XXQZKLL AA%44 l\3fBELLLY-)Q(ж5Gg~>_˷ǚu=( HlljZ6oYdyCN['Gՙh)>BKKׯPf Dz`5k@< kq∋'66yZ2dٶÅu6b93V KߥŊrUn߹K֬\xXlF[['!BiI&(jmjjjJ,檇O,--b;6y[ZZоmkُ֯cQ1P(X^U5%իVf1-Ѻe3"=o!KVbyfB[[s$=o_HL~:q]d9?wѩCoNttj ʗ-lsmm- oλe`1h(;Hi싥LCBTs((C[dJ֮\ρCI$Qɤqc051K>.UJʫ[Xxjа0UsFH%U _.\H5_Dzt|ҴqC6mNN54%ECAb◱ܼu׮d%@u?|5ֹ#3g_ɒMcԭ ԭ]7IsԬBk߿W;CM5ٳ]]]nzݢ?CfQo]ҥ(SJ=b?P(TXQop+Ճ7A7Y*B!7oBXDGãGIs)Ö-43$$$7WPk͛afn%&&…P(qL7mԀNs+<B<;ǣ& 2}jT|vޫ*?;G<<9S'g)lظwBR{M[ <}Fʕm;w.ݸkZyt*_ 11] hh.5U\|RR'3G```@\9y0>/4a:}AA@ G=P*z=Y#dZxѢlܼSb6mI6\ =R;WTeS*~^ s s>#o׎pZbjj$ {>&&1&ӽkgK22mWURNۜа0~J077籷wži9dCSԩrZseEJˣDEEl̓.εٲj<~ou"B@GG=}=UMz.ɝظ8NcOZ=b(.yhijQF5ws,J깒)21jNVgGLOqqԪ3SOHVKdՃ SZ>yrqZuի7̝BӥV4kH2>u 1/q[by\@n=144$kVo7jט0Ş5+ЭKGѩ[O ț'wcbEu ;[rdΌ(^4u@pukgAΝiԩU'OѤE4554~ ʕKL>NzGR%5],tjtS=r`M[[g5خ {CPмicՉ.1~6@PmZClm016&&6İ!5g>]ȟ/sޤF__']Z#!!RJA# f%ESKҥJs؈A2dhSrdRڽ&_l̞1]РXQ[444֦Jr y%+VDҥNLOLOb߼!GloZنwi𡃾XJ*[4W,Z]7q-^ݏej{w}qo7]Mbb"٬ѽ M7ҹC;EF ՞_|u=}#ʔJlV)]NA]h{?*=g[dǫZ)x g &7o+]T 6 ["j5ΈW!-2>93}qϾ̙ VcgSD*~r_>cqd4Ȉ jmu,_' ԟ%|#7oMc*2*j3dѰY+*/q6bxw^Ͼf}035e9}ܸ8Z>FVg_`ql@B2na9*g/+ٳ-7`@<4kH!?ؓ'>ԕ#{6lN9${Zחs/ߤy;޾]KL;YځPf Ԫ!Az9_ E Wljy?!22e0b`45lܼ#g IDATԪQ\9Yl%uba)Cop| KKKNUVna뎝p}a?k7ns`3gw:reKX|% `gg,)@ҤWsb!˛HV]SP,JR5><|hlդqqq88nsa% Ǐ&UMmߕkg>|]ۛ? 7k¨CR3;m tґ[u6Y̳0r`޻DZ~Gu?f$aag[W#|IF :߹wUxJdd$m۴RHlR Μ=L WԬ^ IfxݺCRY^.^3 jn*W'O-~8oʱ'6y<._aL0J*$;Ϊشe;ff <5{ٻ Zhii]ڱb\ryr3xTP'7i*‚.{pڸl٬1trI79w"FFL?R%÷o1wb sg1c<.]JܹЯ7UTщ;](TeT~񓦢T*1===ڶnI9q4&&&g_PlƏZNj ˞}7oY:ƍV Lщxț'WŘqR93ɘl߹}}B¨U:=wAPpEv͝;8}jZQ?re˰aj7<а0֭qJʔ*I}y4_`bbb׻';6o$G̞,[4% r}\S9o]uٳs+ 5U&}̈́1#(XɓÇ0j4clٌŋE a? y3PBy6:w?I 3eP޼֦ ̤~صM[R./_߀!jٜ[6hVZ1MZ.Xa,[4+0b MǞӧLԄڵjsFA֪BP  :GLa 2RJ%}S&sdgj׬e+q޴&m6mpXXd\)W +ĩ=ڷi1gCL|{дI#fLLl\, ,W+K"{6_]ۈCCCan" RJDݻvĄeofaL4qä%njLeXb)+qu&4?y%2ebQ4n<}F:Ҡ^]768iC BcZq̘р#G1ul KXx>b<$˖ASSS8Ĵ9l0+.֦Wwi1|*)vcF&M"gΝO3mu5&kSJ.ĸ1Isoۚ(JN=7oT ٧9sZ3qh3SΆhq*вyS'O$::9  B_صg/~ _gP|9DOOV-mL0ЯOTK&J`̨k mm͋(Y8vIcnjFYr)F,[ꨖS&qqK:Gvx 8tۡuj੯/O|_uS&UTbwr&!>͚cLTJ(aL˛["SPAh(iϓVZȝ+'U*Up5"ٲm' )cٲCܹ8zxeNZhiw)YҥJbtO\ijjB29Ibb"qqqpի~sΑ#jvmZѯOOfOJɎ9̲4?.{[gݱҢL\att4_z*N?t133%{6+-7LTPu먽zׯ 44 fO1 piCg\J*kVLGe΁>/^)s'=C)°P(<}L:]iQTlʖ.E`937㠫ϞSd͝;zzzjATjU*cS~YժT0ӨA=lmgRψOԨԮ1]bSCozݦ\2s.\LMeܬI#J+Jiڨ!Ϟ?W!g1B! g~uL6C^hXFFDGG~}88:c'gg'(8k7n2x( iΆ٬M5:::כkcuZSoyϐ!9spvKkkk}=Uc;wILLdǮ8xX=W}ǎNێ]پ+򯥝N4&/W4??9gs۷IHHP[1I7R6u @\z??o~0~&7nAEaufY@UCqnBTbI 5ʗeńs *WHN̞h.^EfH{jhٶ#m[Khk'թ ivN>Cu9t؝!;m##C5M[^wőtE--45OO9AԫS+y(DܽGJ?޾{Cbv/fM呼~[Ғ?k: Qʖx8ֹ#/]M?{T*Չ!D!yJezzz,[< &&gcH?1z$B޾M=͏㭚7]Vߜn.Vk;(=}*_T^8%j7fpGk``_ԯW']1^nuS(;%El7k:SnpKժcGдIZ?w%^~õ7hѴgG\\\:XT,_D߼'ѽ ͉OHի\x{zQL)lgl޶'@ƌΝ… v%KT77 cc#GQTi*^etLtgKֵ)-˕I޾{M[6hL̻P=} B!^G~4/SL?U*=UV2eȥW9͐?yܹs1g4'-}=<bE[K}_D6-R" ,Ǖ7޽dHqB p_鹓Z٤SO${cod1"K_O+y$!O)ٲYajj^( >>kii]C.eА /5GzԮ1]Q|YYbEԤ\2hii [j]ܥ! LjXrkиE-]A<~k"~H^c P!j+Lb/-Ç?|?C Syn~9w"kx?p=RoyT7:::Ν ]]]5muUC@6oAb?.T5脇g\A8o٦S}]EV-7j Y(]1'Nq%60?bccv&KLlR7On7Ϟ} Qo^qa!TZ)Uq~Tgb\v]5lbv,M[Е/_vă r(?[jJT?n]D|dQ͋I:P(= u~\yO1GTT&>O}Iڹ=iC:iM[i6GB?rMVڳ-7!6kJ%'>ε̻PԤ_oE1l޺kV0z0J,GxOҥR= ݻvgTPnC~ٽkұu !Q^|1,Yy?ACCC5݆ٹ{߿;ȑܹrRZU|伅 79 ʊ)A<}KI7uZ)/o([[ϟ.{xƏ7 ",,-vȞ-{)\:ƪ58ቑ!͛5A/{8?ɶ.>{&1ԫ] [wprތCBX0w&9g'(8xdjoprLhXO|Q s%TTXXjG^MԨV%եfT]x7AGҥJ N9ˣGM=H1::qp$88gϞSdq~!!!DFFRΖkcblDj"U-\[w!CZ5oF>k>s;Q4v=NP@~ƍjE6sQQ̞1 HZ+zeluv$22CFK۷XeM nF ѽ !jq0UnQ|Y Gu3SS/#6m6j@ϞQ.^-_#]h(7nck Pl\ [6+5+8~:AW7i?OCTT'9g_g=o!bblL6++lgԤIrlgviB!7;|}ûQ 1MwD^p5޽{ǐP(UuZ2I!BP*$($͘=mmmBCC޵D(C~Ɇ)ȗ'r͝b)Ѷc7նqdl PjؾӅ\Uikk_+[[T✿xMI B!?3p{cמl(ALPvăm[Sj Q !XXdo\v2?d1븖o:#iټ)6nI!_`E̴„x;ܜа0FPP0-t`RB!B_/RL) džaE<~BU 3'Zu5iDv0ŞjӾSw._ь?n]:agSfϘM[yٳYѱ]GfpptJF||<^!<"BjB!BB!?Y>W!?B!B!?@!'Or/_&GhkC$YhݲR8S,,z޽wcc#g2kIЅB߄B!/V>zcFvn݈9sY5h@_֭ij*Wzmg[co%'B!D! ѵ3\Uk bSp7n@;$=J%[D)'!W'CcByfdﻺaN!1CSli:k5i`X#'DFFRlF L@` 7,7{tj21}D܏(tmmm׮B!~A"B`V]O|yiݪ#Ghr6_u;Qcٳk+j;>>CFPd vnHdd$]zaU5еGbcȕm--ga2)\ w#Sƌ,[<_ K!!BVYG6hԬ5F8;0S& iHʲk_9S&qq=@CC*/chii1i^z%˙2}S'G___ H!=B.^+W "U+ !BmV8u `~'(8k7n2xXDdfELlixݺ6PRPA:o˖m;Я7B!~^Cȕ+p<4m ٲAx8IąB]jVFF عk7{tGOOeB7]V}l2==4dfB':C[[[ F!yCc.^ڵ@00YX".BVNmb{VVYɔ1#._Mq ,@xx8>Jq x9띜&>>>wraJB9 !QQ >ep!ݛB!?J/EvއRDKKzsE88='.{Vͱʄ)𐸸8|2{B>|@tt4`򄱔-Sy{aϠ#1{'NJ !qi;?=yB%B!HQf̙5E&s IDAT`x?eN=w-3yXN9K-ܽOPV ^N~8s:3e,)U&ϛW U!Eh Kwޣxb =sE,X[M{+,^!B>j nFk/[T(_V#BtxJ /[|b`R B!B!RmmyAbb5ȗO".B!B[>N8|. $B!B!hB",B!B_BB B!B߅4!B!! !B!B!mHCB!B!~"B!B߆4!B![5L>-RJM<%iվ3Lj㗫\;r4i=rkдe[yc B33MΜHٻwP3;~=2Sggo?ͫ&{h;7hڲ-fϾ)nk^͘R@B!rpX--ow9fϞg;cȠIhݾ?hώ-~_S9;`ukפUfJ-sp5رC'O02 4Ѐ_ym4$~>NNJll4 {{¶mݻ *[))Y8W)n˛'4ve>6mpߐ011a?Z89oM//YA%޵Tf!B_!&LHަMP`͙9 2|Ըdd^MMyȑF5ᫍ '+Vc[vce=Z*c ,ty `,_<gϔ&B?_޾7ox4v{g5ww$( B)Z)-Ekq-n~,,l"HoI=sf;sF r !/^2pH5]n:r싊:vI=f > ?/'NѥG4hB&-=w:sk?x8wUNi 6oAiަNʖLIIT^ISӸyC]֫2mƯ5kMVefK6`~8FZѢmG6mَ$;dI߼u-'ٺ 2nͩӠ Gi۱+fJtt m;vmǮlܼ-[ed9m;vYQ{~?>ܽFZѸyt}"<{&^=MXKb ֭{Fr WW#GM1˗km.c˖߅=fehą 2jԐce@ ?quU`jHmʱS+r9#bzӄͫV-9!!כ?њyԮ-K;+WdX[u <~,#>^mѹn(ZTAr"#5&$رr(G9ooo -Qa~nM,_.mv,[zQC&͚im}Yyd$)V1c|xLruVn$IxyL^Yύi3~ߍՃr vJNHHH!j/Yf=m;ve8f)t՗GѱkOvw֎]{([4%gnjz솱x{@ . !rQ*0qQ~1%Vp/"'ٰi sfMcԬQqvv'W(:ygώ<{20fi=ch`@LL,cƵe*/%%%%ۛڲ{~J\fܸuˡ};ٺi->bْ-Udqq~֯p̹{d&{N+:w>K~OJgکJ%ݻv=yK f]ȓ'7о]퓽/Fо]*YAj711OBB"cA:}"9B6rՃ4mS3~+W4ʕ%<=XXMb==ӨVMc1BK޽ժf>Ѫ1c$x0=[geH~}ǏӈNc`Ν張}6}qp4.سGm&G;\FXXfI(ٿiCY\Γ'i͋ 1lG֭4|}HLqto^^2]Ss~{ʸ~]sn.61BYm֠-MNԜ{|(A3۷Ӹ|ϞÓ" Mz6[yO;VفX}8w'oY׭b_enqx<$^ި*͞Ɏ-P%v٧#'ɟ/_IJ{~[w& ڈ7@   *|vQ= OQDqj׮{u)B{NDFF@&n.Y===,-iؠؾ-6X[chh>MPl Lpt,c0קj.^B155ҒNqlv=5|X[ӾmON=m~Y~+K_kQl_\[&Ҷu+=<(w iҸNȪ?~CJZI'W~6m$:t++){Hk 1iBr HML?pvMƄ j4a͛K[H9"c25u%; ....,ahE@PÎ2-ؕLIf}h䵰R$g3ԫZ ʘ0A"W.%2cfn@酹Ǐ%9xuZZ>4dxxRԥH0| dtr$((XJs6a[jʸ)k7зw/ @ Wǚ7vgϟDD;W. ۬,-y6s aמ}>r\M__Ȩ(> ZMBB"Ŋ{'&&&Sd2RRR-B.GPhÄr9iiiƑT^, Ȗl!*ԭ{2[==m~= :q%2  au<{JDT)zza'ꏟCPXZ[;?T>]Ή2F.TB>JHfb0)PmhJVzל_ˠP*|J IУ콁bbq0>$%}{FFjʱt{ܧ~hblLbBL^TX^{ [[CG…1!#C<ɟ? 9WDFFqlXkoMV[@ rD_,-%UԾІGD`eerP_1ƚ.:Ь[IRɨ0n ͚!Yq =`"%v$\',<GG`q!3llɟϊ}59Ntmi'b7=brԨV5[r| 88sx1K.E.)V2돟-DDh&&AANNi.Z$%8w. kk\N9"wss`қ|_ߌsC&@d$pt}L |e2 I}^e2rܟ-,d-*}VHa^QrtƊ =Es3So2Oz잡!(.>1ol˽i6׭MA' m`?j@ pUK"H]J/nGR;W^~:9*ٹ  1l*,}yAMov{ڹSϢN&tއw!033eL2ٔ/[i FcnfN]gʖO:KC]hФ%s-$9IwE@>Jd䧅fL8+WS~c,_-s-7jJL>+IF4f$! 1'ֹ#}Yݰ)Gٽ3OӤe[n]"+2돟:VУyԯe&kVMYZƁ2 Vqʗ8tH2ll4ޅC V葌 4e ]&:*TSYΘ]ȝ[Aժٿmڤu+GNZRiWWYS2EvYYܹjZSȉʕj5eͫI/rhQ RYY:o訠iSy|25y@Ѣ *WVP&ʗu/x%oB.VY~#цU ,A̜3f9|PȿG;p(-v.[Nz1vnK>߅/)_f·ħsړˮl |h:K/eߍs·|/[*~ޛ+o2OǍ ."YNR渍Ȣc|>}F&sm/~qXBr:._K[w2}2_G0{>d-5QÿL)))nЄ/U [~۹ӯ&sYέ{NOlcUs1}ɓ[ÓYӧְ'ˑbiB ̛@V^㿟pȁ/VnPP0c'Lښ?nK&<;[o*glknG9"Sθ. QȒu_u'zoOҶGw>$15}*fyZx=S!7ڔq]BR8(W^p~dMsCCHs[wtl=Tp,6cjJ9qX(BlcԧWw}|135$#hmN)C#hg)Ճ%KPCoǁdli)u4q.ӛk<.v+c2E򙡯\~sC?F}L>wqc%_Vu} ~X 0V4桦cTW^c/r|W߷e)YGh _Z]{r<˗\&}z"6 vOXW#_`$?P@yg*W _ڹc[|XT)\șqG+WORd\vRur`78~4CR$1nt3}.YJb-\͉^MUf]ZRӾMkcܽdѭ =v`\z \AgÚ`ʴjf͞1:ӆ)UJ8G ~Ly%Omĩ3,[U.aLy'OͰ*U*amU˗diعg+Vcl\U0vp *JuL E bHM/?OfƵ:_cnnΔIiѼ)OҕY1GkY6(Dt)Ǟhҫ#5 [bLjCTqolYCbif@603N< fMZ$e׬W ebԣ9,qp`JfIO/Itx憜V?VbPMgc#q}շ rZʴ K$^01S^SSX$RhVҚ*ӮHf4/ξd,=`bQR\ 0|cb1L͒iJbXBLr+lK~37,>UqLlv5K/2aȰ:7њ&%)er_e<6ΪY?2\FzLoVe84^$@ ɪQ(trP(߷7/_qĩGGΘ hԠ/^rҹS{ )\o(_,KiAL?=fRJ,N2?+U(OjUi?lB tkQciiAڵX<&&&T,_~kPlj*W@geE69z$?*s/80N2"䔗O" 7g!H^Mj:ۉy|fN/zVqdZK5' :Ik)kPOE>y/zΨπ IDATrB!13/8(0z+GshzAK 6%fz(m@5!15 [2"Q3%|hQ' ͒MJZgerkU]Ցrо%lyQ%[6[=BsC#.h-erkf%@ Bc@ gyo `A̢.I㿟жuH9r8L&qgMۇ|VZ͛ ?sEc `ioW  ",<ƍtW)Z$3 :9f(s`P0a{c Ivkm(ɐ$… Ņ;wCGYl\;;[]7$]NV8CO@V̌c 䶘^F}OX\j*ʮo:7QIݪ%9*+>=h:$}&F:'x 髁BN[O@t2q)y]c@^cRUkF Y [ǘ^a\ 2A3Fsjp>d62^K0d7n%=狕݃Gqܩ gYv= kJ-SVSQ3V.%k?6Z|>z)siwΰf)iT.>&ƍ99%S'}qHc/U,!@"CVyz04&7=;j8̈́ӈN#UGt.ڷiE}~d>1o8vܹ{ʕ*doiX$*:7o&˪fJ)3U!CISr2ݵ_?Ck;3Eq< YP'ˠLSk Oi۷Tn |Ѳ1wJgTD&r7C"47ۮ̌?HJ% gŬXgOMMMMeؐM9~`ѱGeA14oژRVMw&`ƯU4j֊-/OL0Du?N4lڒ'Ok5}kivF_n˶$Ꮵ~tR!ҥ@J縼w[d˜xiS&RV~Iy{{;,,-)]Gϵ̌[~H;ͥ5ڰt)^>>?>llYj9E]6W"#%K)2]SwrzNV}03:hR q:!y>?|O@$/*9ЭRL >Eg+S!!5-S=G&zoplYCO+Ӿ>1Fze VLiJ~sLQk} ̠(0-@6*޼u"E SCԡ ϏT *Y{yq*ST|̮{o]0ۯ4$e #dz +4DG=kTrd/3~a"C1i87#c'N1a4V@B|?YS7 ˛_falش{PByLMש{oٴu;mdԫS\ٴe;e韫033T:nܼ Ql۹?WӋki{`_ظy #Rf5,-,8x(S¥q18D 56=3>ks,Бcj'ÓHXǷƘ `Mԭ]+ ibb"K\ň!077v;|GӖP(\עnbʴ,^'/_ťw6lن7xzygܻOF us9tc޻YJpp?'Onjת9|8sfN0S9<>\Rz5RRRٵw?n,Qzuj\Љ`v;@@`  #&&;/sޞ;wfFyʏr=vKll,޾4_ȐQҌ3/_wBWE+j^PzG0y1j+ԳP"RKSzJC5 7e2{T1+(fcN=|7E)aiǞs/"Rzlx^'`ˈ/" cwS OFa?Lu.#f (&DJؚse$OX<秴}nrsq.rYyPގ9(D%~I4*W^p#TRTrʋ9<^a51I k? O8"q4Գ#)<)\gϽ7xbm8>4_Eer3j߼H$86+S+ҩC,@x&@ǖB#w ).>Au0DBOR]v]ۨ3)55UL\RPpRnܒqKJHHbbbHs-О/UZK;`IRI_(JFFҽu$\CZfRp|RCGIZ||_H !#5J:_:pHST҈?IkoL=3_~#wk.m۱KJLJ<}&ըHT*菥RuKWJ*JZ~ּR$rWr߾sOۨG߱'jK7nޖT*tr.]*iT~㦔";pHrkZJMMcN&^wAҎ]{tU!۰YRTRTtTn#\~CP4k<)..^RTҋ/zۨtITJ6oܚNwTJz㿟h%''K &O!EDDJaRnjY~ԢMGyotdSTҐᣥ;w7R: K*J޻N-kwB¤J}[H-T*csw)55UzOӰt̹lĩ3RHi1БcȨl?WQz %&%IM&<]RTRێ]31)ILzy/""RUMȓ^'9vBy Q&hoٶ4lX)!!AR*Rn\cҘ&e؏7o.~ )JKR5а0IRI)))RNݤOjDæk+cǮ=R^}s$aldDZZ6lbĐAtrАʕ*P\xzygVz*t}}skQ릇[6VT(WpgVzEPPȹ`r?ww'Ÿ{xQN-m2B&۴Jb=b(U+WBPкes""" q,⯛ mVtmiiA]Mn++K2{xzaooDŽq1~nkc+2իN\|uQT:9Z=Add$3~LܹK:5y^X87nᗩ_mRb~Nxx8Ijrk :wEJțT5qCO 1) ۷-7Kr9)7酑!=$O<,Y4\xe6Σٱ{/S'}}TeQϟ]{ŋqvrkLDZ;Z2.E HE]4I!33Mh "/zzzқkQ&~{IR=<u^?4rxL&[ll,AAAq<1uOs^nܺ3ևKm9t8^E ujJ(=PB a 66r)^̕pڽ wxoTd91:POO/zu!JJ"<޵(O=q<|7eJbzzzeqφɞ+W.lmm8xۇTʕ-]b;89ܻ6f[o&bjI2L.$D;z1x_!%5"xxxѡm\\7Q*IIIznL'{vR07QΘN<>M˛[Ѷu+CFG.t؞Ȩ(V]I cc5,,CGг{W@ &@ ! 5Svnޫg7/\ɓ7(\PT+\3=yfh&xzywڶnŏ{Nddι^ԩF^p!ȝ+7G.RD͛~%WTtRILf)V:QHa/fdصw?z  93b`aV\tkR.kl;gμԪ{;vo߬@,_/ELi~uVS=<)\P zg`)c L1?.ŔI?ӡ}f6}6iĈ=4:COh"""ک-uF!Ӿmkc|țW'TCS&dJfΞKBXh6!LJ^=l1tAێHSK˗c~L6g`pժrq7o7"/11޻/Șc||4@ @ _/GHs'̛dIPAh\ @ 7xHl 0y2J%<(4.@ u !qq10([<=@ @ |3!Lcx 5<@ |\rf۳f/ZnDD$sNmhվ3hަW]M ߄cˡ[7 aACq@ =O&,,}!I)3,, FVcp)JĞ 䩳 C>B@ r̮=Xt ɟ?˕Op*oբ^޴iLEc C[5UŹ`A OL&k?yV-.o\@ FN8vh>=s^̚J'4l$1_k󋔗+ge@϶QTt4ܚyێGCjUEG7AB@ |wd2[k֩ŘQMɭ;w  DT```o4\{@O@ ac{T*:©3x&2[@V-t8w";+?$[[5iL]s>{,cιO=gӖmxzyK Oe2;L6CǮ/իǢy<|wKRbEe&4oLJ{>{+W1z0jըΈ1?c'8{"셓#;˛%3c ر{.^&<Xb)^^ޜ8u??\0}d2FFFivnܺMhh~ Ā0@ o⥟ ~5s/ҸQΛ6s6s-ı˕L5;;[\uz/z[x1QvvֹGXx c'0rxFɣ2x0e82 ysfbgkwaQ-}ǿt (؊vc`(6(yQDccqu<9ٳ{wfe-]AL?tt{ѬZ]M#yMV.4k @^s,tuu2}Oc^ @5*VLJ]N?kdje",^L&cGQLiۖLRRRmblLbŔ+F6*T/Xr #BX[1q;k7([4׬0}Ѵq#d e@6>~c4= kWqM|y{r?y܏)\ۦ/wD454(Yu 43<,aC62HB]ܦ&*PSzɂ9xnέi{>nwxb?=QSSK 吣H ,T*.sẢ!TbcBGG[T7~*r_,_\T*sC[UK$MBb"˛hhh\VCSvq .D7W\]hҸ$''cddHʕ(S$cG`65:z$HRWU[Y'9!=~TץS{\ z?h#HH$8Գc@!իڲ!ssmIFNd"HNNV懧r4I$jTȱƑ*6dd2E%Onq ";{ ŵes9짗elIT[r6=zKKKA)\;6 +-/}.9F [ـ~󞃇r @=FZZ}{2!,Z}1lЀ =(zJ|xnGŇ ƹA2szX|NG['CG䟥kjjr58ŝ{UN::l{ԲA\FDGcٍ;wmJT(_N0 \Hش f΄sYT~I {ժ9rk'{eKW'<QFu&SHJdE&Q`tPd5tv, dK 0h!wn(_=J|ѧCÏ]MuC}{VcPļܺ}m;<ٶ^1gT֩MţMkBC8t116fמ}ڳ %l9lrs/j:_eb,^0mmmѠqsz2%˹} .YcF)'3|vɓ[94S/.Y3Lsڵ%mݔw<̴shټ)/^==]znQTfG]ӎȨ(&CBb"W^We< f\oj*s֩MbEy1A! <,^k+K:kA߁CQJiފ7o3R455iBڲ9͚8A>zw7W^ `8ԫ߳gѣktuuYz-Lm3yX.]ƩgiѬ +U@?}ӯۓL2=1fulپ-Rpa.XרY:zzz<}F r\e(N: пX[)@NBJk玬] +::L9͛R6iii(zdO?OHLP?))I9xbR2M.#H;\xW&qe?85OnSBBC9|hkԠ>,,+Z=_?n鶫, @v4rr7m܈]xġ\. 3otMcbAM3wM[ڦ= kԨVf2LL tjߎOp2=:Ң9IL:^MG.pk畿`̨=rew"J1uR=O:€Õ JO^ѕsgR`AKa X ;5QΙtj95VnWPP0k׳nf߼Qcj/5w>?uIHHd̨TPW@GGs>ҥ{o;A)T rKDFE)^Y^d[84"2R񔚵7ңO?I0oĩ30Yԅ[wr#p0{\[6ȐPFXA\ww8r##([V MZ(8Tа) bQʴOtڋMljeScEOEK:srŘILLbמ}4ccc*U,φ8|QQ*%%%cϘQYz͜@3c _]orJfWH"=[L144 4=SE μT"H/]ƺ xZe6"DOOq᥮H] ))(_YE V/ <ڴVUͮҡ][ʕ*0j!}wd'Hhټ7=)&;ײA-Y/f3dzϟ?ϝ4F ʨC33ߺz!CZ2ٻsk*/mjOJLL mZSƚ6ԫ[͛ҩkOSRzÔADij :ЧB_|E(acMX<.۳r"J*% PWW*Lz}.$cyU oyyzTrrœj&Lƛ7A1U)},Rx]khh:!z |Z axNTTTְbA+z܁BmC.s"55{>4pR΍8q e˔r ߴqql߹dN< cjjjO}  !#S s33e[[K Oe_I9 SB9,¥ˌ;,x];wR ?t(6pd_XfQQܼuLkf?PK$(]iK%poOHH-DWW&)zA?r$+z@"_|K7{C%y)::/f)ꔰfӖ.UBzQ5R'Oܩ7ov_T n-h抺:ڵ܍jU(? ZZZ߸w11Ь3͛6V6w٧\ϝs>&&4paђܽׯcmeY[Y=q _N< %2.R ؤ$%dq_e}Yo2_IBAA$HR%Yr)Q : "߷W*(+ IDAT\a_\u+N:CpHW˼|r5~~'$uNڷkNqHhZZ,]4Tx͜DzuGڵ]jըy92}ʥ79%lUҺtl۝'6F[Cʺn`. Mhc)ACcAA-Iצ&4k {v~Mk?\LXzr"P"aHAg(a_zUYdٱڻw'o_J' ¿" ?F\|<yUr?D{ +g@^3γu'm/.%&LF|B؉hhhr!r9aDFEClޔljbϜ ahjj2b@v;hTB]&G ss3k??Z4k|0sQ?Are4/vx}n .ȒsJ<|e+Vөzq9BCøyU*WSmx[̚6 rq8?{ xŊUk񡸅sgMCMM}qU|Я79%&1Eq'5--HOhɭh.EKWMKb[$swXҦ~޳ѧgwe5nfvH{Oמ}}.;mrɖ;Yd96`٢hjjG>xydufȠL9͛ac9Tf˔鳘>k.riAR%ҽ7R5)E03˃/H4j؀-Z;055mt4X[[fȻp2Ϝc1?A?zпo/ںaQ(?23ڕSն2ϜcYg޲eJܨ/^ڪ8 8>~Z-55Le@,,U;uN#˙8eq,Y0mmm7?Rŋg) ?a̝9 /'$Ã?{;Dqisri2ǵBO I2vʿ~=5iܢtc~;;)7JTK7~-hꎭ=/^eܨ1cқsUϥ׫nи>GfwR/_ޟ ޾*TPy! P B 3^^_N[[w7l?G?EVrJ5޾sM;ghf̻wF|~Զ(Se˔4Ūtj]K٭/B~^.ZZZthז>6kou⟬zyo)ٽc3woClZZ B*r=xBace{eKwn *^ BeoϾJO^<|D%ާG"{|tQ.d8_:57Pc֭^FddC\\/; )i?7k"bXz92Av DOT,(R- FFPG c;qUkǘQ(_,][2iLB7a ڥJ9͛6SA²iN}& 6o}W]Um@ѣv$py2M.Ԯߐ6pIEZnڍ$%%ԥ5vxrMlYBq5mliӾK-SCDd;weuөGzM&>󧄍ZZZʴ Gf]H?΄GDpk<~'Nm[\Z{ڃdkpuoGæ-qh,C'29fĥfAE6lƽ}gSR2ݿٶÓ=e]^檒~=uꊽC#OBACK_Wv8}Jo9_RRR̨1r3SphԌNM;`{D&vFn8Pwc՚u9f<ظe;̓Oz(|^W2YZu.6H$#"U^)Te}v|ZɏB>zBTbET'1I1뇡yV/^a||H$X4HHLp޽!<"b,[4`||~9&n΅RVEܬ޲Kz?iii<Acdhx@l\Ϟ?'.}*-MM~ѧh ի@߸ ÷lj6lފE7k̍[?xIII_ݶ8ƌohܐ'OӅl0yX140`L0ҥw7N9Ǥi3ա_IӸ~L<]]]-YΆ[ oʪ8'c}Z4k c߷g-S^ ÇԄnq^^ޔ|jj*$>!=;uw=T,c}V8 7l])[=]ٷk;Um+gkuut빍f Cl\,S&cώ-@܁Ty!سS1.~۵۔]ãѹC;IINag#ĶJeN2%d '>~~[2*.CB;a#CFz|GSI|EF*7oذAR2y ޽zr ;a{@RRR4|| ƾv-N=@2ع֬`ڤah`݊3ٷk;nը<v(̌EfiN> ~pM˳ayTeNR< 5=qQ˭wU9T  gI\\oy*Us`?|c'u?UknΡ;9qd?nZ赱zz.\ڕK9y::ʠzz1ʕr:[6%!!gY2y-w+/9mZ"55M[#//_^ںGMo~Y[YR|Yd2 eO֮ȫWk,u3͵% 7pU֮H>҃ Xt9ƍSj֨]űw0^>x= +[cRSS9}.ĘysfPӮ:?T)Gjہgөj ٷ&&,3ڲ9AA\K|q#'F ̩ijTsC' ZZ87t¹y]whܐC;G g!?_7Qն2NʻQeJ¹ke޲[9婗7C}mZrK<~TbX.ǗҟQQQL'FFS׾ι{5WW,>>2/C}l,1_H$H$ttqs_!111;u/^ KK[UV ZZZQbRSU/.vE>f䉘w.Uŋ)f򏈈@.d2TP?&k][N\lӭ[%t a*|ەj4542Ǘ<\˛mϺ"3^޾ >~(mJpHHW,sۦL6:]{;sBpi\%}݆M4rrNHRԲS6tƹzU ѡ`Ɵ39T*e+ŋ#(8{۵7RPA鉮.ԯk6oٺÓGM VKvWؘd7rB]M}2'zvό9xԋF\۠1дq#V.] ؏Cq5ZjÈ?ЉBWW0~T@1bQH$fMBua#P`YjP\YbcXt9Ϟ` M _ĜxAṛ}̭wH$+zZNًKs֮HPHH7hÉSgThքAFҽw_3~(nܺ3ս+z4p&HRZ6o†[8t$>>b'73{B\CJJ ޾~*555lXa3mؔrSt͉ӊ2ޞ1x@?di 9+׮cjbebL6+ObHդ9n"TۋҽW?""#2͚:YdfP~Fsʴ>>!ݷޣ{ ޭ z}y5sE+/)d> xʡG!rzeUT-RcGl(ZQ Vb57*;oeYa "p1c``kٴe;zriN|BŋCMM1Ӈ1!a_ݶo" 1M;Ahr޾ťELǦfkz)fT/??&&ȟ?\dI՞ gϝ}lr@bR:Ȑ2?NLLH2(|Uم t8/o/aS\9z$oIMIm;!ecmg9[#"TN\x {YN0XLizƢ #CWngv?|N55%ǀJeY-GrJ )))h|ҫ"!!WQ/5kT,9e||hڤQU(?e2_;ٱqVjײј֬Uzd2_SiȟOe=VAǯ_׏eJ) 88zٛX#Ӽn`HxFDFbjb6__<+> ۋW;psmkl-+JqwsrhOUߝqH1OQI.kW.͐F{L'^/]$mTҶmZaѴq+V(勳WSSc̨aͲE*sfQÇ2jЯ*i?݆|s9M8ӴJZ1 ~~7W8}JZܡJZ3|洱lˬ!j:4,:]1ӌ;A+;,7;˼Umɗ//+q1N:MNMPiii~6JYqڗ8" *w=Ti{Ȟ`Κ~Xx)QobddȂKZʝlfToIuj̺q퍡ah s'MNNf1XZΝ{\vZv5TG>q{CCƥJ $Dve#c.,7nK̚6|򒒒Bnl%(#Oܘ7>y>.ԟxN]{QˮJcklyȩVMu%8;g?bQ x23455Uzx{ҽk gZvLL !YN7nFCCJ*|1JDd$fˆ柿pX}֨#11ܦ/]2ᏜK_W_g*;w)fQTc׏$ -7%*-Faђ|yͩQE FCC /c9ƻw1T(W]]];30;Ŧ-9|䘲'K 򍛶Oٽo?׮+\t{PqGO&S=~rSL'I+Q†c'NZ9Gjj*#Əwn,^"øа0tuU&}QvV>0ұ IDATeoC!eE-44<f[Ep bb24f{T\txC?y`bPpb17 U#%uu e7ٟmmml+W;>'֟< b2̇'Ct3q} go뎎v]{pk1I Z(yj:zt򁁾>FF\L:ؙs9ul{\Z //obbbxquiA{x9yLڑc'3&$rEe@X1 Dqqq_P(HHH$lQ89UA{d0m[(/`'3N0fLH$P#+ۿo/9y =J O\b}{1k\Z#M&#_^sں!H$LT*iFiEYF0 D]C-f1OHLL")) Jٱy::x{P_%~ѓ?H||͕ܵOChȉ9 q ,P5g>w#q. *H1&Bl֊i3gS~C ώ-HMMŽ}gRSRxXZWNٹC;iߩ))(һ2G{L5m-‚313/A__ax 95k*҃aH 'Cr֬HIrNӡӧed-ڕ+*hpۇ"E g#ĭUK&O&΍0ooe^"EQnmdԭSDFFF36IriAN߸u cCB9z$;ntO>KLF$ FdC 024T~\Z2h߹KؘAp]:Ž=j4oڄ^pzE|215w>Fr娝>JiѬ ]B&öJe-:OzQ@~=҃O|G֫  e%}4AT h2 ~ >X.M=D#8y,!vʅ͛au'"]4׬̴@io v^yss[?e,9lpݺt!  M AAAAAAAA3D DAAA JMM#~EeWaيբ"AAAf.\z-G>tm=))AR̢/0`Sh`֬K|||=ػ !CAA_y.PJXH>9VϠ+jjj{ƱeNwo__ *ᑤx:IZv{@|c   =}<+WKf<|hers޽R s$& a'$Ah֤1]t +/ZʽedD]h޴1~޻?wl&O܄GнOZlA[WF.##\n{ Hؼ~ zzz_ݯ"Jd`hh0ΕK{4j xHbb"ZNy ==]:whG֭}xw;b w혵K⫵j֪Yժ]{ڵV#vXAdH$$2ܤ1b#usss]s]x)\Mʗ-èCiGNs3fqY'ON2?/ŽM=ygqUg7q+v;͛:}fř_nj޽{L2vPӣ{th4nٶi3fq'$@Ϛ0۾,Q%K0{tAj(f9s۷d¹\)8|(S3_'LfԈ!dvrb}!>#{-wڴGq%:u[8g'kNLPH<xa>z%W0I/uO;5b%e8c43s*'}٧W,NPnLL {S&\tٗkӨAիRzUKi^kN._JDD$)R$׿""""""rj̙sV2M4`0`0Ț5 |}Yt9?slX[[Sv-OJp3&6eJѼgX[Y/oͩgy:w]}n)]%(bcqqv~k{4`0=7o29wC Sdʔk++.Z[4iH!JWuן~3v<-?oJU֖jU+'_pK$k$ӘF<ݾtXXXP:s; ϒ;WfwH&5ӧRxJ=8}s-Uʔ`P!"""""{?G=G-߹/,--շXLL vv֭S3kҧ珧s 'eZllR!#%3gə3OM{r WF8::39?9s&n䔨vmܽ] r'$$۵kL:{_֯Uk?{Kӓ> f `C$O>] Y˶c"V5- {n ")mS_ BޜG_J ϛ(-$$n<ݻܼy+ї͜鿙EoꚓcfAʗ-/9/oԴ'Zs۵Me`| 4=ٵ/2f̐h-/@ڴiowK Rg{{z'LY>gΜ-BݨU陳dɒ >{ 2fH4{75sdGGz98~fbccyo E M:52edDGGϩu0v`ҤNK&Nl~a~u+Wp_~{a7 Hpys?=Аř&L_%z3̹ɓ+Kslذj: e  pvk7lJI=͕˕۷wx߿Ͼ\{~~Mu͛M[q]vy$۷!>>WEDDDDDDymgΞ#3FԮGtړO֠W9{\`@)[|N^sڏ#s1ժGͺ 07,--cА 6H5d굉ڰmNj}ڈ%=r<-5k>~9=*:Ky'bZ :oG;wb+/7[[[~5k7PzmZi-e<_g͝OMj89ez{% qPZM~ւ5k7$yѤqF#5foǻ}ݑSTQo&p;! 탻{_<_zTUqpu5jڂ^=R\wrm~7nТ,_3}.Z•!"T^Fk.yyLy-'exy01޾.A$n%{gAg jxMzED#ٻCbZj `Zkt Woϫڵ| 847Z,Dي~WW;ACFףoힳ|xN>8 Ȱyv֬`~\rWuNDDD^{yWDDDxr~09qk++(Zĝ[5K.p!7fMLZz|iF+Z[}'*/ǚuȜ z DDD MMn2~/Zv2FJLL,kocW펏N]֕ʒى% 10_(W"gP DDDD;kk٦%S TX^=Gޫvoظ2 -$""<9&$4"իl޲M[:u*~3>l޺mwRã}zv{z]cYx^=Mȟ// {L>{:^}co~GDd$ʗ0{K/ǃݻwwH&[mG9tGgͺ صIo=#""_n3 )[V=."""/-}t8gl߹,m떤N 5~j!eJ۷)S2yXsNHcMd]L4'g{7(7o4iL#HDDDD^kNvP`9@Frq &S~,,,ƯyAΝ@ϥ|Ѳ9'9ϩG||x;uh4UDDDހ3g`meE֬YH.-`zkyNUu/cM"""ҜG>?@Ċ?WaRHNNk<( Kp=("""Ov .@֠WHh ڵuv @4})Zh+rpv` aw}@쉊~bz?1=+wmmmM/|7 CiҼE u++W2x8gN\9Xo{Z}%.(:F2y-fɜ ϒe+Yb%6m!((ۻ; GCh("""""""" B$P""""""d.x3ζ;6%m4u|..,c{ӶGbcc^ٳecŒ""""""#Ba;˗o&ȑ믦$}7,R+yv6lB UfNk~JH@@ #FkqШYK4iISToeڔ([e+Inׁtn:?޷gwnIS([Gy/jۛmy^=b0+4k|/o_hΟ}TC-S}^؍ԩR?@ܹcA>)_.{B^ƍDϓ:U*zJ͸rL;/%.^'NҾsW~u-ZI*6cXr1{.w¸xɗ#Gh2-Y@.=ǑTB.ˆ>66lkOr&m6۷Ӡ E3}ʄ7r3oĂEKq&N2Ѷu j **rm޲[Ϟ򲚵l%__N5g>׭'8SrO׷;i $){!"J埛=Kv~=GRjefogүo/hoOd?i =u3xQ|ݽxuO|zz:RNMLa>Q4*a¤߸v:퓤&KbKbEjWݼ@6_&8~\46lہa[ݽ>hfҦU J*I.6i{}CF pgoaP2agɓ˸ ԟpߌ>{$73ydD7p;wXQw,--1]ý{zM """aeeB` IDATё7nOHi2QyX[=۫w:~+V^:˛獴MDDDDDD]x@HLFli"#QӛcR7:!QĽ07oݢHҖxlY?^rа~]:JJr9ri68::po/V^հJҵ=m7osq1~&*UγjZ+JT)1< z$bMDDDDDDQ.4n58tIʴ^ Kvݏл,oSH9\>$op1Mp˛шϩӴi/nXNh.=MէYFtҙ?NE9"=sʗ-cՃGpqV bbbYtgz_VZxʗ+uGwfQQL9 Pf :kkLDDHM9XlݭKg}n_pttjJU)""= [>jU*1jP7m ҧ@NRNJyC.o:BDD=Scaz3miΉEDDRfScjxr.\ÈcѤHMQvMNⷩ3iYcZ5o:};vLű)ҹWXYYfΜ=GܹuhҤIlڲKW`kcCHh(U+W]/0=7/'-_ISʏ#`@tt43fc}DGё~Kf''=8""z!Bf_guku?:uAF Xp#ζ;VMyɒȚ% nj%-?s+W%-lcգ+S'g⸟Yv? ɬ :oG9 (4fx;μSsO $..N|^=bk ŋCƌAiy/Y[[ѭK'6]ɦ+֥}c̴ɒ93ժTL.lٶ+++7On2dp.=>@Ex"d˚+W8&NF(R4nP7rU  {X[[Ѫy3 rA͓+W{ kmUf`0^2|}p`5Pܿ?K^ߘa0ySYn$ 0ի&8;+9{gĘ^oAԦd*=ɘѴh< ?A˜[ɚ%u wf{ )S$vqo/nɞH6 %D GCh("""""""" Ku|̢>s66oNtl%VWgn/[O'.Uk1$5)o߽M`߽-ADDDDIF߯}i!P8dҍ`i`xaݻv&0(W2}RLI͓$5VVVX[[۵LLeuٗ5b>k=jөk\ hԬ%~gͿ` Q .۹{M[Rڴ#'9iN;v܋j>eނ?hݮu4a݆MIj.o!""{k;ǏCԦ O|ɓ'БȟL2vs̜ LK1kodLu 9sx |; ~KΣg~p+Pnqnݗ\廡3v,^56ЫoVԩRzG~37Vdɒ=mzEDD^Q5L]˹p#..#G"E 6iD59sߦNHߧgiռgYؽ2JǾF_aeeŚu8syr1I&KAܽC3 ݻtlRl߱n22f2w2gv◟F>]:6m+!$4+ѮZs_DD>Lo`EBCM뉜Cݨ\5nH-~G:W\Mȝ Z~ޔ`Ν@"k8gFɱKO`` ޹kn PTI,,,hԠS$DDFr?ImWӱn{{;hݲ9A)2CsfPvM]S4nԀ% ?2l۾+++j Щ,Y0Y0zXR21>Xr+Qz'lll(Ue˔LkF?kLڴiyHҧK-hz8gV]?GDD>XooDm;;u 5WNNإOOf''2;9θu˟Kz;w0>yaaaaa4Z²pKpΎA濮F D%m"""j֥sG}f&KTR̖m;^ Zg28P xPhe•^C%%DFFrU*}RIܼoCO\\Ldb)\{{7ϴis->> !11ȱ} oooȑ%+W j|Ott41DGE`T{Ξ;ÿ<ҨA=[@.לrݰ0ڻ?WQbfΙÔ*QkAŒtfpqXyQȭ c~-eK">>c͎h Б#=K}ط=uygHX%Yb%~aIrL:&LzKھs7 `:a2Žs_Hvط\]6yo~D 8::)IFHD{0q" +W+Kϡ#Gu4k̩ZIa kod1Q\Y|;Xeݏ`̩888pEVX} |a}zvc,۱jbV-_ E DGG'8u?"""ɗ7kodM6i׬ uT >ROKx;Lϝ/6i O=u {vr |ָ!m[;+WӲE3rr‚7%88s/)cȚ%3ٳ"ErZ:9e"M4=wSPJ [XZZmN>[Y2,Y2_E;zEDDDDDDpj %K>Siqx4 &vӓɉI\`uݺYfbe6-,ha1: G9} wB`oooog@PPӥӓ,""""""o'bk ɓVT(.`0xƌijHwgu R587AAi4ks%v}SpLPDDDDDDDD$ _x4"6ִ[~pi]Q[fޢxyFtT4QQQ98sD5ǜy 8"wXqs;^'{!?5 r%.^ƭ`Vĺw0{|. """""""/GQ.4nzuذ&LrZŜ9{:kmyսݻtfL<9\4ZX -lmm)V5=6~ѲCG 1,_;̑(J,@y1 HaYӠ^]nSDDDR`F NOK0 M4Qw[WKAlHi:A%1"""Z<N:A,dTWBh("""""""" BDDDDDDD䣡@|4^@@ ,^Fv(W۶h?ᣨXZcNk>4mنktEDe.9dɒ=-⥜=wkkkg.٥'>>3gϱyvnA" }:ڷu6aiiɔXVaccePd 2evlشeBidzg ?'St)K_uJ.r^mo?h(.^`0j^oLcL ƚccMW@` EDD$RJm ~fN|E__dv\z*{6|ߍhdJRy ex'9I6_Ҹa}:o?DD?!qq0j M۷''ѣ7I@ߍ?uzu??v|y%лDGG0÷.İ$JH$mۛ`0٭ eJb\?WcnΜS&=""}~ƍ"""J_k`^/Z$A: IDATx6oֲ(_L>qʔk8u3,pv!ǫ2m{ΝT(WEa#wqVj&AG#EDD>`ZJDDDKmhν{\LSIz芍M-Q&gβn&ا|ɯ^ ۷5g>洨h?:Z˴M8|(S6}(4Q z,Xm=""{DDD佔6m&iwFKCYf6)RнkgjH46MEyAr۵w~EKaaabbc|lY?_^Z,fٻ|y)PlVgRy=kTITt4޽㑑Oݾr*Z{B;Sϐ>]:*W|,--ai^ƒQ|+BWDD>Ho1cFͯ1䉿aZ|[d}ҥuI6 ׮mvC\\?))^9K4jڂG;΢%hҰyϔ)mI^FHH(iҤuIvxO*ޞR%3 wBBz͏k׮"Er5Ϸ{beeI9 Yt99s-kVsےR˶>ښ1^i6)^x<8IJ(!qdZʊs{sNٳedbo}ꎈ˸~/A,-3 Mݽyp6t|㍌5BDDDDDDD䣡@$YLL !!DDD3DDDDDD䃤@[r%Vd/XCSlEOHHSkc)""""""Az@Hx8,YcprwMc/5Q|e6oΆM[(] wO dĨ?n5k @&͓=66Q>*Uk>\4A꘷J_y@Ь׮x tص+IE<@2طH*9}ɝ {{;{w*+enH,3g˰[A>JϾ/Z;u"]WD1Ào mmxqyzP XY~r珮:q֨knKVȴ1/W r7,|9r,cђet҃IO*85tɒl޺Fkft$%%ѡ];AJjjJCNGnwoΑc'ӳ;K$ /_PD1N/r[6Ǿr咧O!B!(Ҡl^.[?z}FeX}J˷u^ɛ7O355a?HHLǗ3`E4o---2SB!B=TU  ݸM]EӽKgr2$== )Q:ؐ7/J 뇑5ȐF9hđ=)_,|9m[d < XYYf)Z5iVV]O2k7_- iРiiiܹ{Ŋa[o-5aOex%W}|}o*TCQT)ΞIxb\˨SS=7oq Aȑƍ}Q)] Uz:̑C0u96yQNmyB!B|% fxiP! sA[,-?- 8$xʕ-sRhѡtlN23mlKD[[[ݫ_ġ#G =ƌBPdzlʕ_iԘGMQ*p߶+נ5-eC166愧'O[R,P\ o8/\ ؾ-zޅr%NvTbϡ#رkf?o?}011qϗٳXYZ23]nԪ/~(ZBB!B㴞ƥʛ7Ynvgۚgɕ[!Q tFR0B!,/]FreOnB!B!7C!B!B!fH D!B! !B!!!B!B|3$"B!BoBB!B#_!4Twoy=&<< , ttre_ԅB!B!ZZP8t۷  }J !B!_CCR xwۋ 5k[AŊp㆔B!z'Nѽw?֬K6pvY""B|%1BbbąBq߶ZӐN1u2];u`䰟5F [RB! p"BT5HJB!q/_dq8,!%%Կ<8wBRI=X'//]cB񯈊ᆿ?a>boSPTL> }}}:uhGfMen<%!!Nӣkgp] SQJŹ @ʠ?˾ܹ{R%K[ʮm111a T*TB!ZQ*!-M9-M^XHHP ժI !K9s/w[E4jPPLqOtuuto @*100JJXYZT*.ǡ=*V ۴fC< |X[YKX4EWW=H{ {BTt4NfX_dqӹqk3gNJ9߸Izz:[d~(\ !j}z D[&Or?B!0U 1g愯Z禓Y#)^H!RB!%%%c> ȖJsR%F?4{^…011߽wmmmʗ/tJ* ?/KB"!B|v˜ ;agS?'WH/^dܯyAJJ W}|Yx˝6C/>~Dİk>ڵiUұ-]F z-NxBdd7m኷T!_-Ÿq( (Y0 [l?tB!7fD,G`iQ;ҪE3:R3N-j׬i'N1"b>%q Ԩ1>~;0ΛUj_/bMBB۷%MƔ3  !<< ԯ[WUph\+YEllX|%=w6-[0hhiiu.Yl!4WpcbHIMr%j׬Arr w궚+W)[ƖuP(2 !feG`nn~ZbމFܼ鏝]Erc/8<3€_B!o?C4~~רQA F!b~~(W.5F!B! !B!!!B!B|3t>7%==(Y!ztJ[@{{h>>{+W֝$$$plM[5:ҥذ-ú5}#6VRCB!BOoj?C^ !!0x0 >>Lȑ֭Z0A~ݺt ЏŋqqVX*@!B!F|zZ|62;;u ׮_W12z5uː([Ɩelxr_6zzz{BOO/,6!GH 11e+VrU:cF}PlK"'N2t.K:u+%#L p[[111;1uDlK4oB!B!xȶBCP!9\cn_taYʞ,^8=;5A?lX]IJJef{޼yصu3>~(^93uǮ,q`'Ocx9@1zϟkٺigYΛB!B!+^NIQ#ܽ ?^JHL &&o<}bcm11YJiʗ+Kj( ڵiEN\|UO 尲r%=~ !B!sƼv>9=z@)F QXQ:vINѭfۨӫ˖WKɇB1wй3}C S?WO{Ti*J%)))f'**{i餤ig{33קSc-XDLSy^r#׭7eT*'11wM!M9ܩ=bea?rwQ@_ׯKɇB%!˗zuZZ0isÆKB-rLa#5˵5F_?'g)ǁAtړa?tx2CGaJWMP~QzJZ54뾫]#N`_қ_2G}| :&]{ѮMK[BtB!ZPpdz}[mŊt)ؖ&w\TR9Ki:p߾ȨhFX6qzvBF Xd!KK>ӣFuzvJTt43f`~Ph+ؽw?'Oe\ q[h>Pwٺ}']Z,Z\3>k-7%>.(ϟKY*BL+Bԗ0}B!{:}q.](Ӄ%rbNAXYJvيxzdKlڲ%ٖ.ņ5nUr IDATY< F h߶b!B!"}z $>j HJݻ!hU:P2+f9ϟ3)bͽ;ayM}ݺtSvlܲOS[S !B!!jldvv".y/%;vHUb_ k׳% BOO/,6!GH-[ϐL3r,^;b[8uSvmŜ;ȨhiV6_ͼ051ay(C|.y*:::4_!sB!B!ķ,f B5sJ{Pƶ?RkVg;cwMwVvqvYٞ7ovm݌%cilݱ+K5|{vSl~ߗ=;ٳ*U䆿;ܸOreQ(uv!.>=;a޾~ݰIjB!B C@89ek/\Liצտ^P >zC~}ӓ'5X[Z3SSl &:mW}ƍhԘ礤Ts)B!B!K>/p8ݻCٖe+Vre.r&w\xhiiqVLa*tnm-bWTѬ= \[%*:++Kc0{+0"B!Bs.;(vt:J?`ɲ; gT*3Mێ]ٽw_ʲJ"%%4 RSS/_>3޻a>M3o"bbΓ/_>ݿJvؼuժVNߴR%K3gN_;o˗/a4_OjB!BOor<| WY&?ƍo͘0aLKKc-4mfUYYT* #-[U\^clKb <+XĕbEx<2+AajfJMޙSgѤe[ٱeUU: "!vv52j8s/MǮ(thP.}zu.B!BEYl;1n ζ5gB!!7]_QB!>K32Q\wӖB!B!ķB!B!B!fH D!B! !B!!!B!B|3$"B!BoBB!B#o܀K * dIpt9۽-\jזB!B!Ŀ!PXX@R Av퉉Т};@RB!B!W|zטZL02ss7ۛ704bŠHۅB!g_S#!R ?oͺ8hCTt7y!L6Zq1B|lK)4 z6J*fM)q!Bdj¤:J¡=K]U;а'ԭSL˪ *r8_'YFhXҩ:Ӽwl9|[w#7-̓Eܾs'MQ}|IIMELu;5vg]@KK*=c*'N׏4+WbtttM'Q|qlGae`NN~UH !"S3Nc6 0ixjTs`Yҕ+]]f|2hiih\lmKSxqΞ;RpބܽGEf3rby*Ykk-r Ȩ(~}zqc/}+W.C,--޲u;6n/->?r:ѣ: $vmF!Y|7,[R.22;w3R@?Fu~p{fM5C:5"../eij׬nQ@_%5/_dR"|^{ xwJ@K^$%%ѯO/v:u}«RX+WIKK#99r%Wf];qßӞGp߶7oM&Gٺ}'ZZZ<{KN޵}RJHOgTsȼӧϘ=oahhȲE x.:::9ŊjԨJK?˾ܹ{R%K{ej*͙8 ;'ʬn:E& ,E/~׈pBX[plof⥤)ӈ|̜:9y v"q G`޻\r];AX66L`RvދݺvO<2U2q//[[Y|%)))$%%QhF Q'߸'}.y=87ji `Ū9{#$'Ǟ׎;00'66ƍգ+ݷsQLMMXpLɑYp璘WfqӋeq߸el9g*,, ;TXS&QXQ\,66s߾s&Qݡ*˗tr9q{u R͡ Wf+y|dTwB x AAL#a7<Ǐ/aGp1Mat؞c.^/Xj9o!%5dJ%? Il\kWzRWw AWWM&99u:,-,5g> Y}FTfP;wnq[\N-rfcRas.W`7͞>{;g1zP8Sl/[gϨY]$|=-7YD 7'55kk+V,uaq\auޕQr%]2p0ڷkMpK#ܼ|[iղ9DJj .VEWWSg:uhdž5n1sB}KXfxٶiB!L_?'~ߵu20A@}V`_َ*XJ/!M###,-޿k @{2b`v#zQ+EXJ%4ni]|Wvӳ{W dTw %аWOTiy|cbla]"6kQTܽwPwݳ;*EKĩ1VV4nԀTN:i9AllZZZ̚6c;A@c~7 ݻÊUkZ?9&UT*+aeiA`Ppգ[g Ңq< GY?.K\֫_57~ĩ1)))x<c'pl{63%4,5k뉍5V< Jy(4L9mJ-Xy_=խS#/VM(_, 4oDX]=tBPн[gM0ꇾ xYz6,--hP;:wl9u2uj|Bc'ucFjZ+̞JrԭSeݰ:92QSM.%Kps|52BGGAU{sب!9sƚB b;7NDī rX.n*V G{bQv+ЮM+WV4qlL`&3~{N1}~$ 'K !⳵m݂kcddDɽv{7@%|ś'O133߸@E4:9j>Wgؾs7׮kk53CLyѼ~³XRSSIȱڶ3|Nҿo32-B ~VyUwuj1"Nb_َ0cHOOǢp!SR2Mw`~27uFٽ ]?o]S9LOWW=4- ߸Izz:[d~(\ϳ\~D2۵gur._  q1ZlǙ9;ze-7Jy㧁q]wѻgwZ6om{R~HjU155#TᣴhDu,3tG+Y{m)4>g=aOxY4*RL_(u#= u4Ͻz --ܿ޻} BB! ###rNh_u+n_n#ng@>6a,1BBeo͛RTI;61q b<}K\R(̟=.궊?c8T}Vt/P՞;ٸŝ[rӋ ;xOkϹׁGfcKı1m`meQTBȟPk7yZTٝkbZϚåWV!mmm:6f9c=Y43S|Ljj*LZkeIIx٪TT(_93ek+c[Z?RB!Z/W{dX}Q@~ ZZZ(Stҥ4lIxnܱ;feͺ 0LM3;˗ thך-נP(5III\{}2{ ..l/ҥJwM3fx~{w(BBRhZ4k®=o_F  …8w"IT*>Kaz޻ۉ&$4M[3'ڤplFCT**G$q/M]]ؖ. J׫q=3 z?G)Ŷt)ttti`]r</^r vړyWZ//9եX"n++KV]iqVU 'mR4jPk9v“"#Xi W}omemRɬ#$<KJr aOpC(Qva=CDOO2)X<lJ;A4{CR1x(nzKkA ڵn6zaߺMBKxq(u4yyS1>~;0Λ&M^-cKtt +VelrʥWѡxb*S9y-[wp9cmX̀}g<|@՘ocҢ|+ADDDbjbBя񶤤d5|H`޼yN-vޫښO&gYz6 ;!QQiY0Ծ.^bܻU9}!O(bcE}ʖ`>ru7y4RZ5tuu(QW}Xf=>rY"""ɛ7/W}|ٷ߃8ChP.S;DEG'OXt91<ƶt)+FUʜx+װ}nؾ->b5DEGq +qU6o'>>ҨA=dN9x0lo ˩Zw)Ё nB-Wum 辳ضRDDGֹc{Ma˶:rMk#rkiis^,9yݻߵo*(MAB <|tu=bG ڬfPZ!7'Y)FF`nvvf [A) ƍ9s#jy(? c3uƞ}4ۼ}hԴe4ծ  e_qjކN-;MTaC݆Mhؤ%g0y՚uٸٝ~?Eێ19Qc'Լ u8ѭW_.^_`I4jڒ@"""TnJ.[fS߱?5p1-vqVL6/_~R Yhe /0]g:}hAL't O?Dߎ`{|| xס#q߶C|ծϩgܽt`1Yߓ~:<{;#gCؾs7n&tYwPBb"UkeܯqjކMhӡ+z#>>^ص'1aՏ`R~>vӐũ=zܓm.Οoxk?~‹]z9Zg݆MۅB!,d e\w= kgL iؠ /#8$~@24oIJEܽwv} 2F 677/ R%cl΀~k fӶc7QbLϭT*ZŞ!{`ܯ8|`7evb8gzzzܾszH]e}o\y>BHJJlc|#"ٰ }}}~> g%6alnpmڻ7sNN&Al{3޵Bik֬U[{SFA"dON~NABs]<{yǟHC^Q:sn*΅%8>8Ε)ӽ %;ĠO6qqls%II 2EKn(S'ӨykE}:8q ۶[0d?|7:kgŒ8뮕K/KGēb>*e_N8Jp,hPyv䌓l݄qncJv(Iepn.c=ݠg G;tܮ1)t؁ʕ*R*?g~0stAWr%֮XB_K;k:)))TU<ޞ :l$}`bb8S';vw9ڹkKycyzz:bd Ș?//3~kA?>u ֮Uk8u:}N?rߏo5jTg9ǎGҿϗbjjJ&7OagkO^ʹ'[ZZRPA1m]ATҪE3R5nݾc؁T(yqŸMPI?s|zTQ*+SJsaYoeT_~WDt+i?'h{GV7m^20x 5APy-RM#§Q3ύ7_꼨]']j\]\gmDN(Z0*Ο':::S6:173CTRlioV_Z-J[neB![ΝХ XY_p.j6䱢dSU#X?֖аp͋9]x_`ᢥ !]%>>3O\2*Ȉd;55__cIJLtDn:";u 99oGxx5{1bWXXXz+_,tŋ1rW <,t~ =Zj='W.n὇cWR})T =q,HąBφm]w5Aҝ+* JRD@XX/eJp@xp*ceq,툥shx W/W\rʅCi8y%;qn5kC~ﶰvMouz7p;Ѥ!%%5}l k)'1JBAra׹OZL6+W12Rq=֩GRI~gUЦe's33Eπ!Xq ]:f[o?g_m[m$$&2aTf̞̩qtu;s/]/hFne_vϏ>)١$:B'2^^4/>嵗sf6fxvMq,m--sV.]6ɉZ5? PK}*Yf-&M(֢}Kf~bn6;d}SE:l( \HxܪxȶK/x7 . n^Jgtƍ +,Ԕspȿlz-LMMS022nZt066FѣC^ +_ll~;\Ky {ʕ*=ٗkёO۷}DxJAJ+PbZ-Ș?q`KףB!x;^)Uز:t;;h2 eiZGڰxr4 9|(ujSsqv&99Y?{/j^UP(̞I$''}zJr ),QRIlvޓc"a:acc r?{>{.Su6阚Pd3zNvt:.hPaR"az<IOO'4,={ oF?1ڄT6Mº5\\~n׋!12͚6 3g J5kd ㉌b ԭ]ˠr7o҈q_9T&*b`kgkRBMne(ӭ 17cP(ܸ0%ڔ /ԄT\rce͊AaL::b2NtlPy ̝;ߏ ŋer5 ^D_u3x%Xۯ;.>Q)=s^bnkɒP3 Nٵsƌ@fP*r)|=d o.TF**V(i=.OX΅Oޗ|zѵ>>´-UzJEl4GꭔgI!9%O0:2?'Na6?.[nO·Ǘʕre3]Kڵ`?q{{{?G-5!--KxX8TPNf߁4kJwSʤkYnOm\ϸrvwB!o"&A.PƻqC5!;|/׶\O@lÊWs77nf9MGx_ZSJe!B'Nee?g,If!Qrx^c 䰘XNVKbb[mZ*M/^shDB!H@w'C>Jx4f̚CxxffNNދѧ?7n3dPWJ>,B!@#cooǪe˲>o@!B!^tB!B!GC!B!B!hH D!B! !B!R/^'}06E~}05ͼ\Z̟0jԸB!֮]{xdž5+x ѤQC5 ,?G*S!x[Ajп?½{uÇGB!^`lۑJ^5iݾkm[xZWMu>zIe!]<#HOvtI7`WLi9aBW^EHj[ZBٲ"O k6mB!A|‚_ _/[~^]div$Jz|E.LӬ,۲>˲CoL1{7V7s'd9aBWr.Gݻ/_g6oF@)HB!ޔ=v~Z{!+ ዧ;NNWHM !n'99nݦJJ1 cYj gΞAYj !wQb7b6lɆ153v@& gO?Ēe+ؾc>ujB}IJJgw_:vh/Xt9,,8q4)\EAN>!o;wB.`eOCzRB!x\eT\_g9}.HEZZ }ĩ|8,s&:&{B,a}V]Ǣ173cQ5u݄vښ_O6r'. M떬^iS&2{|}9:]6YUE VPA oGto4mܐ5Iskqqq&,<++SMB9{1ґiS&S077:O\ (# \[@κOÇ0y2YCBօBaɷgKeZ&_޼v$U*Wsssn߹@wsXM&(R0oKm9},] Kܸȏw5/J/ƈa_QңW!-- RII:t^UQ˯-Y"q{vYs]z>u1 4 t$SNԨE j-S;ݻts(iiixUuvpq·B!+5Uغ>@T*ɫ6F;'UeN:w?H_$'BjĈ{bD}J~F KX~\!%W\(uAXX8.nw!WP(9<.^ƚuy.B5p7B\ %=JpiΝ'{hբ)B`\zOM\ ̰!U;SLMxŊR@ *}!k@BBڴƚʕ*m~޻K( .^!**B 2 KhX8+Z[kΞ;9t(yt;OdT11*&pNaaFa_[oYkkN:;Xl%obe:9`###8H"iѬBJHLp1̻"&AhĥK-[FGickH ![KyVƿw欹ߴv=w_bkc'f~H&(3Ӈ`Ӗm\'VqM.[I@n\B!IO8OϒY1T) Cp?\EKV .89:Rݫ*#%%9B!{FRB!hj_-WՒ}~'LFVKwd=:;av56iY0 !# !ʙ}}aiٶ#ƏX"?x(#ۓKdَRon:oKqHNn={윗\S>uBA@$%%jeuvfϝOTt4c),B<Nj155AU^'G~ `IDAT4B!>XxNT7|kB``u 3q&-۲zb t#8vhq@ ,9WM\ݞ9fol+W%{0`pw/8t(3~ÃqԬQ=KטJ^5د7%<"^U1+stBCèQ:nݦ}V4mH!x˶w KΔj- P[1  Eɜd!)A߿]Q=zAB!w!_Μguu`oǜ_✏+W@J/NmGP#ʍt7V-Xl!Xq3#7T*iڤ!wB\%,<j5fffDEESݝy(W4;vcڳ?`P5JNRRSM޼yo`ʕ+ @ddvy "uukH`H!DHh zOC.,4-N,iyq }>J"/otXW:(P!X 5غ:wlzU@5h66688g \_ȌYs?ZL:vqq$%%axT\I??BMsvŒlnaa?2y fΞG)^( e8YTt4W[7B!\p,*#iy/Fq}Wِi`M8RB! Y.] S]B~đV9BI9~&LogΟ=w>3n̷/e+8~hOm;2|R U+I!rIL6ϹQ sK]DT2RrFѡ ȃB#KnilsKGvK/]Fʩ}[P(u D<vDW?TRYB!^;&t,y<=KfYH*~fq=x"E acmѿ(%K !o6-=ˮ~*90`VuR2P Y{KAF'w}f 8hJ:$?B!BBB!Bѐ!B!;*B!0EJD-!B;ɘ)JGFJ!EDDTŠ!K-~IghAk˱B!>**KkfG .rM !BRA4 ue(U!B<###J)%!BB !B!@R;B!B!xDGEcfnyj DI*B!B)L@B!B!ćHr!B!⣡LNJjB!B!ć.1!!V !B!B|/^8:_Ae˗sq0RͤZB!B!ILH=s.:?'ҫ!SIENDB`././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6972506 ReText-8.0.2/setup.cfg0000644000175000017500000000004614575355105014231 0ustar00dmitrydmitry[egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/setup.py0000755000175000017500000001277414575355070014141 0ustar00dmitrydmitry#!/usr/bin/env python3 VERSION = '8.0.2' long_description = '''\ ReText is simple text editor that supports Markdown and reStructuredText markup languages. It is written in Python using PyQt libraries. It supports live preview, tabs, math formulas, export to various formats including PDF and HTML. For more details, please go to the `home page`_ or to the `wiki`_. .. _`home page`: https://github.com/retext-project/retext .. _`wiki`: https://github.com/retext-project/retext/wiki''' import logging import os import sys from os.path import join, basename from setuptools import setup, Command from setuptools.command.sdist import sdist from setuptools.command.install import install from setuptools.command.build import build from subprocess import check_call, check_output from glob import glob if sys.version_info[0] < 3: sys.exit('Error: Python 3.x is required.') def bundle_icons(): import urllib.request import tarfile from io import BytesIO icons_tgz = 'https://github.com/retext-project/retext/archive/icons.tar.gz' response = urllib.request.urlopen(icons_tgz) tario = BytesIO(response.read()) tar = tarfile.open(fileobj=tario, mode='r') for member in tar: if member.isfile(): member.path = basename(member.path) logging.info('bundling ReText/icons/%s', member.path) tar.extract(member, join('ReText', 'icons')) tar.close() class retext_build_translations(Command): description = 'Build .qm files from .ts files using lrelease' user_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): environment = dict(os.environ, QT_SELECT='6') # Add Qt 6 binaries directory to PATH. try: qt6_path = check_output(('qmake6', '-query', 'QT_INSTALL_BINS')) except OSError: logging.exception('Could not run qmake6:') else: qt6_path = qt6_path.decode('utf-8').rstrip() environment['PATH'] = qt6_path + os.pathsep + environment['PATH'] for ts_file in glob(join('ReText', 'locale', '*.ts')): try: check_call(('lrelease', ts_file), env=environment) except Exception: logging.exception('Failed to build translations:') break class retext_build(build): sub_commands = build.sub_commands + [('build_translations', None)] class retext_sdist(sdist): def run(self): self.run_command('build_translations') bundle_icons() sdist.run(self) class retext_install(install): def change_roots(self, *names): self.orig_install_scripts = self.install_scripts self.orig_install_data = self.install_data self.orig_install_lib = self.install_lib install.change_roots(self, *names) def run(self): install.run(self) if self.root is None: self.orig_install_scripts = self.install_scripts self.orig_install_data = self.install_data self.orig_install_lib = self.install_lib retext = join(self.orig_install_scripts, 'retext') desktop_file_path = join(self.install_data, 'share', 'applications', 'me.mitya57.ReText.desktop') if self.root and self.root.endswith('/wheel'): # Desktop files don't allow relative paths, and we don't know the # absolute path when building a wheel. logging.info('removing the .desktop file from the wheel') os.remove(desktop_file_path) return # Fix Exec and Icon fields in the desktop file icon_path = join(self.orig_install_lib, 'ReText', 'icons', 'retext.svg') with open(desktop_file_path, encoding="utf-8") as desktop_file: desktop_contents = desktop_file.read() logging.info('fixing Exec line in %s', desktop_file_path) desktop_contents = desktop_contents.replace('Exec=retext', 'Exec=%s' % retext) if self.orig_install_data != '/usr': logging.info('fixing Icon line in %s', desktop_file_path) desktop_contents = desktop_contents.replace('Icon=retext', 'Icon=%s' % icon_path) with open(desktop_file_path, 'w', encoding="utf-8") as desktop_file: desktop_file.write(desktop_contents) classifiers = [ 'Development Status :: 5 - Production/Stable', 'Environment :: X11 Applications :: Qt', 'License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)', 'Programming Language :: Python :: 3 :: Only', 'Topic :: Text Editors', 'Topic :: Text Processing :: Markup' ] setup(name='ReText', version=VERSION, description='Simple editor for Markdown and reStructuredText', long_description=long_description, author='Dmitry Shachnev', author_email='mitya57@gmail.com', url='https://github.com/retext-project/retext', packages=['ReText'], entry_points={ 'gui_scripts': ['retext = ReText.__main__:main'], }, data_files=[ ('share/applications', ['data/me.mitya57.ReText.desktop']), ('share/icons/hicolor/scalable/apps', ['ReText/icons/retext.svg']), ('share/metainfo', ['data/me.mitya57.ReText.appdata.xml']), ], package_data={ 'ReText': ['icons/*.png', 'icons/*.svg', 'locale/*.qm'], }, python_requires='>=3.6', requires=['docutils', 'Markdown', 'Markups(>=2.0)', 'pyenchant', 'Pygments', 'PyQt6'], install_requires=[ 'docutils', 'Markdown>=3.0', 'Markups>=2.0', 'Pygments', 'PyQt6', ], extras_require={ 'spellcheck': ['pyenchant'], 'encoding-detection': ['chardet'], 'webengine': ['PyQt6-WebEngine'], }, cmdclass={ 'build_translations': retext_build_translations, 'build': retext_build, 'sdist': retext_sdist, 'install': retext_install, }, test_suite='tests', classifiers=classifiers, license='GPL 2+' ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6932507 ReText-8.0.2/tests/0000755000175000017500000000000014575355105013552 5ustar00dmitrydmitry././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/tests/__init__.py0000644000175000017500000000014614575336012015660 0ustar00dmitrydmitry#!/usr/bin/env python3 from unittest.main import main if __name__ == '__main__': main(module=None) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/tests/test_editor.py0000644000175000017500000002216414575336012016452 0ustar00dmitrydmitry# vim: ts=8:sts=8:sw=8:noexpandtab # This file is part of ReText # Copyright: 2014-2022 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import sys import unittest from unittest.mock import patch from ReText.editor import ReTextEdit from ReText.editor import documentIndentMore, documentIndentLess from PyQt6.QtGui import QImage, QTextCursor, QTextDocument, QKeyEvent from PyQt6.QtCore import Qt, QMimeData, QEvent from PyQt6.QtWidgets import QApplication from PyQt6.QtTest import QTest from markups import MarkdownMarkup, ReStructuredTextMarkup QApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts) # Keep a reference so it is not garbage collected app = QApplication.instance() or QApplication(sys.argv) class SettingsMock: tabWidth = 4 tabInsertsSpaces = True class TestIndentation(unittest.TestCase): def setUp(self): self.document = QTextDocument() self.document.setPlainText('foo\nbar\nbaz') self.settings = SettingsMock() def test_indentMore(self): cursor = QTextCursor(self.document) cursor.setPosition(4) documentIndentMore(self.document, cursor, self.settings) self.assertEqual('foo\n bar\nbaz', self.document.toPlainText()) cursor.setPosition(3) documentIndentMore(self.document, cursor, self.settings) self.assertEqual('foo \n bar\nbaz', self.document.toPlainText()) def test_indentMoreWithTabs(self): cursor = QTextCursor(self.document) self.settings.tabInsertsSpaces = False documentIndentMore(self.document, cursor, self.settings) self.assertEqual('\tfoo\nbar\nbaz', self.document.toPlainText()) def test_indentMoreWithSelection(self): cursor = QTextCursor(self.document) cursor.setPosition(1) cursor.setPosition(6, QTextCursor.MoveMode.KeepAnchor) self.assertEqual('oo\u2029ba', # \u2029 is paragraph separator cursor.selectedText()) documentIndentMore(self.document, cursor, self.settings) self.assertEqual(' foo\n bar\nbaz', self.document.toPlainText()) def test_indentLess(self): self.document.setPlainText(' foo') cursor = QTextCursor(self.document) cursor.setPosition(10) documentIndentLess(self.document, cursor, self.settings) self.assertEqual(' foo', self.document.toPlainText()) documentIndentLess(self.document, cursor, self.settings) self.assertEqual('foo', self.document.toPlainText()) def test_indentLessWithSelection(self): self.document.setPlainText(' foo\n bar\nbaz') cursor = QTextCursor(self.document) cursor.setPosition(5) cursor.setPosition(11, QTextCursor.MoveMode.KeepAnchor) documentIndentLess(self.document, cursor, self.settings) self.assertEqual('foo\nbar\nbaz', self.document.toPlainText()) class TestClipboardHandling(unittest.TestCase): class DummyReTextTab(): def __init__(self): self.markupClass = None def getActiveMarkupClass(self): return self.markupClass def setUp(self): self.p = self self.editor = ReTextEdit(self) self.dummytab = self.DummyReTextTab() self.editor.tab = self.dummytab def _create_image(self): image = QImage(80, 60, QImage.Format.Format_RGB32) image.fill(Qt.GlobalColor.green) return image def test_pasteText(self): mimeData = QMimeData() mimeData.setText('pasted text') self.editor.insertFromMimeData(mimeData) self.assertTrue('pasted text' in self.editor.toPlainText()) @patch.object(ReTextEdit, 'getImageFilename', return_value='/tmp/myimage.jpg') @patch.object(QImage, 'save') def test_pasteImage_Markdown(self, _mock_image, _mock_editor): mimeData = QMimeData() mimeData.setImageData(self._create_image()) app.clipboard().setMimeData(mimeData) self.dummytab.markupClass = MarkdownMarkup self.dummytab.fileName = '/tmp/foo.md' self.editor.pasteImage() self.assertTrue('![myimage](myimage.jpg)' in self.editor.toPlainText()) @patch.object(ReTextEdit, 'getImageFilename', return_value='/tmp/myimage.jpg') @patch.object(QImage, 'save') def test_pasteImage_RestructuredText(self, _mock_image, _mock_editor): mimeData = QMimeData() mimeData.setImageData(self._create_image()) app.clipboard().setMimeData(mimeData) self.dummytab.markupClass = ReStructuredTextMarkup self.dummytab.fileName = '/tmp/foo.rst' self.editor.pasteImage() self.assertTrue('.. image:: myimage.jpg' in self.editor.toPlainText()) class TestSurround(unittest.TestCase): def setUp(self): self.p = self self.editor = ReTextEdit(self) self.document = QTextDocument() self.document.setPlainText('foo bar baz qux corge grault') self.cursor = QTextCursor(self.document) def getText(self, key): if key == Qt.Key.Key_ParenLeft: return '(' if key == Qt.Key.Key_BracketLeft: return '[' if key == Qt.Key.Key_Underscore: return '_' if key == Qt.Key.Key_Asterisk: return '*' if key == Qt.Key.Key_QuoteDbl: return '"' if key == Qt.Key.Key_Apostrophe: return '\'' def getEvent(self, key): return QKeyEvent(QEvent.Type.KeyPress, key, Qt.KeyboardModifier.NoModifier, text=self.getText(key)) def test_isSurroundKey(self): # close keys should not start a surrounding self.assertFalse(self.editor.isSurroundKey(Qt.Key.Key_ParenRight)) self.assertFalse(self.editor.isSurroundKey(Qt.Key.Key_BracketRight)) self.assertTrue(self.editor.isSurroundKey(Qt.Key.Key_ParenLeft)) self.assertTrue(self.editor.isSurroundKey(Qt.Key.Key_BracketLeft)) self.assertTrue(self.editor.isSurroundKey(Qt.Key.Key_Underscore)) self.assertTrue(self.editor.isSurroundKey(Qt.Key.Key_Asterisk)) self.assertTrue(self.editor.isSurroundKey(Qt.Key.Key_QuoteDbl)) self.assertTrue(self.editor.isSurroundKey(Qt.Key.Key_Apostrophe)) def test_getCloseKey(self): self.assertEqual(self.editor.getCloseKey(self.getEvent(Qt.Key.Key_Underscore), Qt.Key.Key_Underscore), '_') self.assertEqual(self.editor.getCloseKey(self.getEvent(Qt.Key.Key_Asterisk), Qt.Key.Key_Asterisk), '*') self.assertEqual(self.editor.getCloseKey(self.getEvent(Qt.Key.Key_QuoteDbl), Qt.Key.Key_QuoteDbl), '"') self.assertEqual(self.editor.getCloseKey(self.getEvent(Qt.Key.Key_Apostrophe), Qt.Key.Key_Apostrophe), '\'') self.assertEqual(self.editor.getCloseKey(self.getEvent(Qt.Key.Key_ParenLeft), Qt.Key.Key_ParenLeft), ')') self.assertEqual(self.editor.getCloseKey(self.getEvent(Qt.Key.Key_BracketLeft), Qt.Key.Key_BracketLeft), ']') def changeCursor(self, posI, posF): self.cursor.setPosition(posI) self.cursor.setPosition(posF, QTextCursor.MoveMode.KeepAnchor) def test_surroundText(self): self.changeCursor(0, 3) self.editor.surroundText(self.cursor, self.getEvent(Qt.Key.Key_Underscore), Qt.Key.Key_Underscore) self.assertEqual(self.document.toPlainText(), '_foo_ bar baz qux corge grault') self.changeCursor(6, 9) self.editor.surroundText(self.cursor, self.getEvent(Qt.Key.Key_Asterisk), Qt.Key.Key_Asterisk) self.assertEqual(self.document.toPlainText(), '_foo_ *bar* baz qux corge grault') self.changeCursor(12, 15) self.editor.surroundText(self.cursor, self.getEvent(Qt.Key.Key_QuoteDbl), Qt.Key.Key_QuoteDbl) self.assertEqual(self.document.toPlainText(), '_foo_ *bar* "baz" qux corge grault') self.changeCursor(18, 21) self.editor.surroundText(self.cursor, self.getEvent(Qt.Key.Key_Apostrophe), Qt.Key.Key_Apostrophe) self.assertEqual(self.document.toPlainText(), '_foo_ *bar* "baz" \'qux\' corge grault') self.changeCursor(24, 29) self.editor.surroundText(self.cursor, self.getEvent(Qt.Key.Key_ParenLeft), Qt.Key.Key_ParenLeft) self.assertEqual(self.document.toPlainText(), '_foo_ *bar* "baz" \'qux\' (corge) grault') self.changeCursor(32, 38) self.editor.surroundText(self.cursor, self.getEvent(Qt.Key.Key_BracketLeft), Qt.Key.Key_BracketLeft) self.assertEqual(self.document.toPlainText(), '_foo_ *bar* "baz" \'qux\' (corge) [grault]') class TestOrderedListMode(unittest.TestCase): class DummyReTextTab(): def __init__(self): self.markupClass = None def getActiveMarkupClass(self): return self.markupClass def setUp(self): self.p = self def test_increment(self): editor = ReTextEdit(self) editor.tab = self.DummyReTextTab() QTest.keyClicks(editor, '1. Hello') QTest.keyClick(editor, Qt.Key.Key_Return) QTest.keyClicks(editor, 'World') self.assertEqual(editor.document().toPlainText(), '1. Hello\n2. World') def test_repeat(self): class TestSettings: orderedListMode = 'repeat' useFakeVim = False editor = ReTextEdit(self, settings=TestSettings()) editor.tab = self.DummyReTextTab() QTest.keyClicks(editor, '1. Hello') QTest.keyClick(editor, Qt.Key.Key_Return) QTest.keyClicks(editor, 'World') self.assertEqual(editor.document().toPlainText(), '1. Hello\n1. World') if __name__ == '__main__': unittest.main() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710609411.0 ReText-8.0.2/tests/test_posmap.py0000644000175000017500000001231514575352003016456 0ustar00dmitrydmitry# vim: ts=4:sw=4:expandtab # This file is part of ReText # Copyright: 2018-2024 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from textwrap import dedent from unittest import skipIf, TestCase from markdown import markdown from markdown.extensions.codehilite import CodeHiliteExtension from markdown.extensions.fenced_code import FencedCodeExtension try: from pymdownx.superfences import SuperFencesCodeExtension except ImportError: SuperFencesCodeExtension = None from ReText.mdx_posmap import PosMapExtension class PosMapTest(TestCase): maxDiff = None extensionsPosMap = [ CodeHiliteExtension(), FencedCodeExtension(), PosMapExtension() ] extensionsNoPosMap = [ CodeHiliteExtension(), FencedCodeExtension() ] def test_normalUse(self): text = dedent("""\ # line 1 - line 3 - line 4 - line 5 line 7 line 8 code block, line 10 """) html = markdown(text, extensions=[PosMapExtension()]) self.assertIn('

line 1

', html) self.assertIn('
    ', html) self.assertIn('

    ', html) self.assertIn('

    code block, line 10', html)
            self.assertNotIn("posmapmarker", html)
    
        def test_highlightC(self):
            text = dedent("""\
            ```c
            #include 
    
            int main(int argc, char **argv)
            {
                printf("Hello, world!\\n");
            }
            ```""")
            html = markdown(text, extensions=self.extensionsPosMap)
            expected = markdown(text, extensions=self.extensionsNoPosMap)
            self.assertIn('
    ', html) self.assertMultiLineEqual(html, expected) def test_highlightEmptyC(self): text = dedent("""\ ```c ```""") html = markdown(text, extensions=self.extensionsPosMap) expected = markdown(text, extensions=self.extensionsNoPosMap) self.assertIn('
    ', html) self.assertMultiLineEqual(html, expected) def test_highlightPython(self): text = dedent("""\ ```python if __name__ == "__main__": print("Hello, world!") ```""") html = markdown(text, extensions=self.extensionsPosMap) expected = markdown(text, extensions=self.extensionsNoPosMap) self.assertIn('
    ', html) self.assertMultiLineEqual(html, expected) def test_highlightEmptyPython(self): text = dedent("""\ ```python ```""") html = markdown(text, extensions=self.extensionsPosMap) expected = markdown(text, extensions=self.extensionsNoPosMap) self.assertIn('
    ', html) self.assertMultiLineEqual(html, expected) def test_traditionalCodeBlock(self): text = dedent("""\ :::python if __name__ == "__main__": print("Hello, world!") a paragraph following the code block, line 5 """) extensions = [CodeHiliteExtension(), PosMapExtension()] html = markdown(text, extensions=extensions) self.assertNotIn('posmapmarker', html) self.assertIn('
    ', html) self.assertIn('

    ', html) @skipIf(SuperFencesCodeExtension is None, "pymdownx module is not available") def test_superFences(self): text = dedent("""\ ```bash tee ~/test << EOF A B C EOF ```""") extensions = [SuperFencesCodeExtension(), PosMapExtension()] html = markdown(text, extensions=extensions) self.assertNotIn("posmapmarker", html) expected = markdown(text, extensions=[SuperFencesCodeExtension()]) self.assertMultiLineEqual(html, expected) @skipIf(SuperFencesCodeExtension is None, "pymdownx module is not available") def test_superFencesInList(self): text = dedent("""\ 1. List item 1 ```python import sys sys.stdout.write("Hello, world!") sys.stdout.write("One more call.") ``` 2. List item 2 """) extensions = [SuperFencesCodeExtension(), PosMapExtension()] html = markdown(text, extensions=extensions) self.assertIn('

      ', html) html = html.replace(' data-posmap="12"', "") self.assertNotIn("posmapmarker", html) expected = markdown(text, extensions=[SuperFencesCodeExtension()]) self.assertMultiLineEqual(html, expected) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/tests/test_settings.py0000644000175000017500000000636014575336012017024 0ustar00dmitrydmitry# This file is part of ReText # Copyright: 2014-2022 Dmitry Shachnev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import unittest import tempfile import sys from os.path import basename, dirname, splitext from PyQt6.QtCore import Qt, QSettings from PyQt6.QtGui import QColor from PyQt6.QtWidgets import QApplication from ReText import readListFromSettings, writeListToSettings, \ readFromSettings, writeToSettings from ReText.editor import getColor, updateColorScheme # For this particular test, QCoreApplication is enough. However, we should # only have one QCoreApplication instance for all tests in a process. As # other tests need QApplication, we should not create a bare QCoreApplication # here. Also, keep a reference so it is not garbage collected. QApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts) app = QApplication.instance() or QApplication(sys.argv) class TestSettings(unittest.TestCase): def setUp(self): self.tempFile = tempfile.NamedTemporaryFile(prefix='retext-', suffix='.ini') baseName = splitext(basename(self.tempFile.name))[0] QSettings.setPath(QSettings.Format.IniFormat, QSettings.Scope.UserScope, dirname(self.tempFile.name)) self.settings = QSettings(QSettings.Format.IniFormat, QSettings.Scope.UserScope, baseName) def tearDown(self): del self.settings # this should be deleted before tempFile self.tempFile.close() def test_storingLists(self): data = ( ['1', '2', '3', 'test'], [], ['1'], ['true'], ['foo, bar', 'foo, bar'] ) for l in data: writeListToSettings('testList', l, self.settings) lnew = readListFromSettings('testList', self.settings) self.assertListEqual(lnew, l) def test_storingBooleans(self): writeToSettings('testBool', 1, None, self.settings) self.assertTrue(readFromSettings('testBool', bool, self.settings)) writeToSettings('testBool', 'false', None, self.settings) self.assertFalse(readFromSettings('testBool', bool, self.settings)) writeToSettings('testBool', 0, None, self.settings) self.assertFalse(readFromSettings('testBool', bool, self.settings)) def test_storingColors(self): self.settings.setValue('ColorScheme/htmlTags', 'green') self.settings.setValue('ColorScheme/htmlSymbols', '#ff8800') self.settings.setValue('ColorScheme/htmlComments', '#abc') updateColorScheme(self.settings) self.assertEqual(getColor('htmlTags'), QColor(0x00, 0x80, 0x00)) self.assertEqual(getColor('htmlSymbols'), QColor(0xff, 0x88, 0x00)) self.assertEqual(getColor('htmlStrings'), Qt.GlobalColor.darkYellow) # default self.assertEqual(getColor('htmlComments'), QColor(0xaa, 0xbb, 0xcc)) if __name__ == '__main__': unittest.main() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/tests/test_tablemode.py0000644000175000017500000003771114575336012017124 0ustar00dmitrydmitry# vim: noexpandtab:ts=4:sw=4 # # This file is part of ReText # Copyright: 2014 Maurice van der Pot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import unittest from ReText import tablemode class TestTableMode(unittest.TestCase): def performEdit(self, text, offset, editSize, paddingchar=None, fragment=None): if editSize < 0: text = text[:offset + editSize] + text[offset:] else: fragment = paddingchar * editSize if not fragment else fragment text = text[:offset] + fragment + text[offset:] return text def checkDetermineEditLists(self, paddingChars, before, edit, after, alignWithAnyEdge): class Row(): def __init__(self, text, separatorLine, paddingChar): self.text = text self.separatorline = separatorLine self.paddingchar = paddingChar # Do some sanity checks on the test data to catch simple mistakes self.assertEqual(len(paddingChars), len(before), 'The number of padding chars should be equal to the number of rows') self.assertEqual(len(before), len(after), 'The number of rows before and after should be the same') # Apart from spacing edit only contains a's or d's self.assertTrue(edit[1].strip(' d') == '' or edit[1].strip(' a') == '', "An edit should be a sequence of a's or d's surrounded by spaces") rows = [] for paddingChar, text in zip(paddingChars, before): rows.append(Row(text, (paddingChar != ' '), paddingChar)) editedline = edit[0] editstripped = edit[1].strip() editsize = len(editstripped) # The offset passed to _determineEditLists is the one received from the # contentsChange signal and is always the start of the set of chars # that are added or removed. contentsChangeOffset = edit[1].index(editstripped[0]) # However, the editoffset indicates the position before which chars # must be deleted or after which they must be added (just like the # offset used in the edits returned by _determineEditLists), # so for deletions we'll need to add the size of the edit to it if editstripped[0] == 'd': editsize = -editsize editoffset = contentsChangeOffset + len(editstripped) else: editoffset = contentsChangeOffset editLists = tablemode._determineEditLists(rows, edit[0], contentsChangeOffset, editsize, alignWithAnyEdge) editedRows = [] self.assertEqual(len(editLists), len(rows)) for i, (row, editList) in enumerate(zip(rows, editLists)): editedText = row.text for editEntry in editList: editedText = self.performEdit(editedText, editEntry[0], editEntry[1], paddingchar=row.paddingchar) editedRows.append(editedText) editedRows[editedline] = self.performEdit(editedRows[editedline], editoffset, editsize, fragment=editstripped) if editedRows != after: if alignWithAnyEdge: alignmentScenario = "when aligning any edge with another" else: alignmentScenario = "when only aligning edges of cells in the same column" assertMessage = ["Output differs %s." % alignmentScenario, "", "Input:"] + \ ["%3d '%s'" % (i, line) for i, line in enumerate(before)] + \ ["", "Edit:", "%3d '%s'" % edit, "", "Expected output:"] + \ ["%3d '%s'" % (i, line) for i, line in enumerate(after)] + \ ["", "Actual output:"] + \ ["%3d '%s'" % (i, line) for i, line in enumerate(editedRows)] self.fail('\n'.join(assertMessage)) def test_simpleInsert(self): # Insert at the start of a cell so it doesn't need to grow separatorChars = ' ' before = ['| |', '| |'] edit = (0, ' a ') after = ['|a |', '| |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert at the last position in a cell where it doesn't need to grow separatorChars = ' ' before = ['| |', '| |'] edit = (0, ' a') after = ['| a|', '| |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert at the end of a cell so it will have to grow separatorChars = ' ' before = ['| |', '| |'] edit = (0, ' a') after = ['| a|', '| |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) def test_insertPushAhead(self): # Insert with enough room to push without growing the cell separatorChars = ' ' before = ['| x |', '| |'] edit = (0, ' a ') after = ['|a x|', '| |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert without enough room to push, so the cell will have to grow separatorChars = ' ' before = ['| x|', '| |'] edit = (0, ' a ') after = ['|a x|', '| |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) # Insert without enough room to push, so the cell will have to grow, # but the edge of the cell below it does not move with it because it is # of an earlier column separatorChars = ' ' before = ['| | x|', ' | |'] edit = (0, ' a ') after = ['| |a x|', ' | |'] self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert without enough room to push, so the cell will have to grow, # but the edge of the cell below it does not move with it because it is # of a later column separatorChars = ' ' before = [' | x|', '| | |'] edit = (0, ' a ') after = [' |a x|', '| | |'] self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert multiple characters forcing a partial grow separatorChars = ' ' before = ['| |', '| |'] edit = (0, ' aaaaaa') after = ['| aaaaaa|', '| |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert multiple characters forcing a partial grow through pushing other chars ahead separatorChars = ' ' before = ['| bb |', '| |'] edit = (0, ' aaaaaaa') after = ['| aaaaaaabb|', '| |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) def test_insertInSeparatorCell(self): # Insert in a cell on a separator line separatorChars = ' -' before = ['| |', '|----|'] edit = (1, ' a ') after = ['| |', '|--a-|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert in a cell on a separator line forcing it to grow separatorChars = ' -' before = ['| |', '|----|'] edit = (1, ' a ') after = ['| |', '|---a-|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert in a cell on a separator line with an alignment marker separatorChars = ' -' before = ['| |', '|---:|'] edit = (1, ' a ') after = ['| |', '|--a:|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert in a cell on a separator line with an alignment marker forcing it to grow separatorChars = ' -' before = ['| |', '|---:|'] edit = (1, ' a ') after = ['| |', '|---a:|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert in a cell on a separator line after the alignment marker forcing it to grow separatorChars = ' -' before = ['| |', '|---:|'] edit = (1, ' a') after = ['| |', '|---:a|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) def test_insertAboveSeparatorLine(self): # Insert on another line, without growing the cell separatorChars = ' -' before = ['| |', '|----|'] edit = (0, ' a') after = ['| a|', '|----|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert on another line, forcing the separator cell to grow separatorChars = ' -' before = ['| |', '|----|'] edit = (0, ' a') after = ['| a|', '|-----|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert on another line, without growing the cell with alignment marker separatorChars = ' -' before = ['| |', '|---:|'] edit = (0, ' a') after = ['| a|', '|---:|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert on another line, forcing the separator cell with alignment marker to grow separatorChars = ' -' before = ['| |', '|---:|'] edit = (0, ' a') after = ['| a|', '|----:|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Insert on another line, forcing the separator cell that ends with a regular char to grow separatorChars = ' -' before = ['| |', '|--- |'] edit = (0, ' a') after = ['| a|', '|---- |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) def test_insertCascade(self): # Test if growing of cells cascades onto other lines through edges that are shifted separatorChars = ' ' before = ['| |', ' | |', ' | |', ' |'] edit = (0, ' a') after = ['| a|', ' | |', ' | |', ' |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) # Test if growing of cells cascades onto other lines but does not affect unconnected edges separatorChars = ' ' before = ['| |', ' | |', ' | | |'] edit = (0, ' a') after = ['| a|', ' | |', ' | | |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) def test_simpleDelete(self): # Delete at start of cell separatorChars = ' ' before = ['|abcd|', '| |'] edit = (0, ' d ') after = ['|bcd|', '| |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Delete at end of cell separatorChars = ' ' before = ['|abcd|', '| |'] edit = (0, ' d') after = ['|abc|', '| |'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) def test_deleteShrinking(self): # Shrinking limited by cell on other row separatorChars = ' ' before = ['|abc |', '|efgh|'] edit = (0, ' d ') after = ['|bc |', '|efgh|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Shrinking limited by cell on other row (cont'd) separatorChars = ' ' before = ['|abcd|', '|efgh|'] edit = (0, ' d') after = ['|abc |', '|efgh|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Shrinking of next cell limited by cell on other row separatorChars = ' ' before = ['|abc | |', '|efghi|klm|'] edit = (0, ' d ') after = ['|bc | |', '|efghi|klm|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Shrink current cell fully, grow next cell a partially separatorChars = ' ' before = ['| aabb| |', '|xxxxxx|x |'] edit = (0, ' dddd') after = ['| | |', '|xxxxxx|x|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Shrink current cell fully, do not change next cell separatorChars = ' ' before = ['| aabb| |', '|xxxxxxxx |'] edit = (0, ' dddd') after = ['| | |', '|xxxxxxxx |'] self.checkDetermineEditLists(separatorChars, before, edit, after, False) def test_deleteShrinkingSeparatorRow(self): # Shrinking not limited by size of separator cell separatorChars = ' -' before = ['|abcd|', '|----|'] edit = (0, ' d ') after = ['|acd|', '|---|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Shrinking limited by size of separator cell separatorChars = ' -' before = ['|abc|', '|---|'] edit = (0, ' d ') after = ['|ac |', '|---|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Shrinking not limited by size of separator cell with alignment markers separatorChars = ' -' before = ['|abcd|', '|:--:|'] edit = (0, ' d ') after = ['|acd|', '|:-:|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Shrinking limited by size of separator cell with alignment markers separatorChars = ' -' before = ['|abc|', '|:-:|'] edit = (0, ' d ') after = ['|ac |', '|:-:|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) # Shrinking partially limited by size of separator cell with alignment markers separatorChars = ' -' before = ['|abcde|', '|:---:|'] edit = (0, ' dddd') after = ['|a |', '|:-:|'] self.checkDetermineEditLists(separatorChars, before, edit, after, True) self.checkDetermineEditLists(separatorChars, before, edit, after, False) if __name__ == '__main__': unittest.main() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710611000.0 ReText-8.0.2/tests/test_window.py0000644000175000017500000004534714575355070016510 0ustar00dmitrydmitry# vim: ts=4:sw=4:expandtab # This file is part of ReText # Copyright: 2016 Maurice van der Pot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from contextlib import suppress import markups import os import sys import tempfile import unittest from unittest.mock import patch, MagicMock import warnings import platform from markups.abstract import ConvertedMarkup from PyQt6.QtCore import pyqtSignal, QObject, Qt from PyQt6.QtGui import QTextCursor from PyQt6.QtTest import QTest from PyQt6.QtWidgets import QApplication, QMessageBox import ReText from ReText.window import ReTextWindow path_to_testdata = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'testdata') QApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts) app = QApplication.instance() or QApplication(sys.argv) def handle_timer_event(): print('timer event received') class FakeConverterProcess(QObject): conversionDone = pyqtSignal() def start_conversion(self, name, filename, extensions, text, current_dir): self.conversionDone.emit() def get_result(self): return ConvertedMarkup('') @patch('ReText.tab.converterprocess.ConverterProcess', FakeConverterProcess) class TestWindow(unittest.TestCase): def setUp(self): warnings.simplefilter("ignore", Warning) self.readListFromSettingsMock = patch('ReText.window.readListFromSettings', return_value=[]).start() self.writeListToSettingsMock = patch('ReText.window.writeListToSettings').start() self.globalSettingsMock = patch('ReText.window.globalSettings', MagicMock(**ReText.configOptions)).start() self.fileSystemWatcherPatcher = patch('ReText.window.QFileSystemWatcher') self.fileSystemWatcherMock = self.fileSystemWatcherPatcher.start() ReText.tab.globalSettings = self.globalSettingsMock def tearDown(self): patch.stopall() # # Helper functions # @staticmethod def get_ui_enabled_states(window): enabled = set() disabled = set() for item in ('actionBold', 'actionCopy', 'actionCut', 'actionItalic', 'actionUnderline', 'actionUndo', 'actionRedo', 'actionReload', 'actionSave', 'actionSetEncoding', 'editBar', 'formattingBox', 'symbolBox'): if getattr(window, item).isEnabled(): enabled.add(item) else: disabled.add(item) return enabled, disabled def check_widget_state(self, window, expected_enabled, expected_disabled): actually_enabled, actually_disabled = self.get_ui_enabled_states(window) self.assertEqual(expected_enabled - actually_enabled, set(), 'These widgets are unexpectedly disabled') self.assertEqual(expected_disabled - actually_disabled, set(), 'These widgets are unexpectedly enabled') def check_widgets_enabled_for_markdown(self, window): self.check_widget_state(window, {'actionBold', 'actionItalic', 'actionUnderline', 'formattingBox', 'symbolBox'}, set()) def check_widgets_enabled_for_restructuredtext(self, window): self.check_widget_state(window, {'actionBold', 'actionItalic'}, {'actionUnderline', 'formattingBox', 'symbolBox'}) def check_widgets_enabled(self, window, widgets): self.check_widget_state(window, set(widgets), set()) def check_widgets_disabled(self, window, widgets): self.check_widget_state(window, set(), set(widgets)) # # Tests # def test_windowTitleAndTabs_afterStartWithEmptyTab(self): self.window = ReTextWindow() self.window.createNew('') app.processEvents() self.assertEqual(1, self.window.tabWidget.count()) self.assertEqual('New document[*]', self.window.windowTitle()) self.assertFalse(self.window.currentTab.fileName) @patch('ReText.window.QFileDialog.getOpenFileNames', return_value=([os.path.join(path_to_testdata, 'existing_file.md')], None)) def test_windowTitleAndTabs_afterLoadingFile(self, getOpenFileNamesMock): self.window = ReTextWindow() self.window.createNew('') self.window.actionOpen.trigger() app.processEvents() # Check that file is opened in the existing empty tab self.assertEqual(1, self.window.tabWidget.count()) self.assertEqual('existing_file.md[*]', self.window.windowTitle()) self.assertTrue(self.window.currentTab.fileName.endswith('tests/testdata/existing_file.md')) self.assertEqual(self.window.tabWidget.tabText(0), 'existing_file') self.assertFalse(self.window.isWindowModified()) @patch('ReText.window.QFileDialog.getOpenFileNames', return_value=([os.path.join(path_to_testdata, 'existing_file.md')], None)) def test_windowTitleAndTabs_afterSwitchingTab(self, getOpenFileNamesMock): self.window = ReTextWindow() self.window.createNew('') self.window.actionOpen.trigger() app.processEvents() tab_with_file = self.window.currentTab self.window.createNew('bla') app.processEvents() tab_with_unsaved_content = self.window.currentTab self.assertEqual('New document[*]', self.window.windowTitle()) self.assertIs(self.window.currentTab, tab_with_unsaved_content) self.assertIs(self.window.tabWidget.currentWidget(), tab_with_unsaved_content) self.assertEqual(self.window.ind, 1) self.assertEqual(self.window.tabWidget.tabText(0), 'existing_file') self.assertEqual(self.window.tabWidget.tabText(1), 'New document*') self.window.switchTab() app.processEvents() self.assertEqual('existing_file.md[*]', self.window.windowTitle()) self.assertIs(self.window.currentTab, tab_with_file) self.assertIs(self.window.tabWidget.currentWidget(), tab_with_file) @patch('ReText.window.QFileDialog.getOpenFileNames', return_value=([os.path.join(path_to_testdata, 'existing_file.md')], None)) def test_activeTab_afterLoadingFileThatIsAlreadyOpenInOtherTab(self, getOpenFileNamesMock): self.window = ReTextWindow() self.window.createNew('') self.window.actionOpen.trigger() app.processEvents() tab_with_file = self.window.currentTab self.window.createNew('') app.processEvents() # Make sure that the newly created tab is the active one self.assertFalse(self.window.currentTab.fileName) # Load the same document again self.window.actionOpen.trigger() app.processEvents() # Check that we have indeed been switched back to the previous tab self.assertIs(self.window.currentTab, tab_with_file) self.assertTrue(self.window.currentTab.fileName.endswith('tests/testdata/existing_file.md')) def test_markupDependentWidgetStates_afterStartWithEmptyTabAndMarkdownAsDefaultMarkup(self): self.window = ReTextWindow() self.window.createNew('') app.processEvents() # markdown is the default markup self.check_widgets_enabled_for_markdown(self.window) def test_markupDependentWidgetStates_afterStartWithEmptyTabAndRestructuredtextAsDefaultMarkup(self): self.globalSettingsMock.defaultMarkup = 'reStructuredText' self.window = ReTextWindow() self.window.createNew('') app.processEvents() self.check_widgets_enabled_for_restructuredtext(self.window) def test_markupDependentWidgetStates_afterChangingDefaultMarkup(self): self.window = ReTextWindow() self.window.createNew('') app.processEvents() self.window.setDefaultMarkup(markups.ReStructuredTextMarkup) self.check_widgets_enabled_for_restructuredtext(self.window) @patch('ReText.window.QFileDialog.getOpenFileNames', return_value=([os.path.join(path_to_testdata, 'existing_file.md')], None)) def test_markupDependentWidgetStates_afterLoadingMarkdownDocument(self, getOpenFileNamesMock): self.window = ReTextWindow() self.window.createNew('') self.window.actionOpen.trigger() app.processEvents() self.check_widgets_enabled_for_markdown(self.window) @patch('ReText.window.QFileDialog.getOpenFileNames', return_value=([os.path.join(path_to_testdata, 'existing_file.rst')], None)) def test_markupDependentWidgetStates_afterLoadingRestructuredtextDocument(self, getOpenFileNamesMock): self.window = ReTextWindow() self.window.createNew('') self.window.actionOpen.trigger() app.processEvents() self.check_widgets_enabled_for_restructuredtext(self.window) @patch('ReText.window.QFileDialog.getOpenFileNames', side_effect=[ ([os.path.join(path_to_testdata, 'existing_file.md')], None), ([os.path.join(path_to_testdata, 'existing_file.rst')], None) ]) def test_markupDependentWidgetStates_afterSwitchingTab(self, getOpenFileNamesMock): self.window = ReTextWindow() self.window.createNew('') self.window.actionOpen.trigger() self.window.actionOpen.trigger() app.processEvents() # Just to make sure that sending two actionOpen triggers has had the desired effect self.assertIn('.rst', self.window.windowTitle()) self.window.switchTab() app.processEvents() self.assertIn('.md', self.window.windowTitle()) self.check_widgets_enabled_for_markdown(self.window) @patch('ReText.window.QFileDialog.getOpenFileNames', return_value=([os.path.join(path_to_testdata, 'existing_file.md')], None)) @patch('ReText.window.QFileDialog.getSaveFileName', return_value=(os.path.join(path_to_testdata, 'not_existing_file.rst'), None)) def test_markupDependentWidgetStates_afterSavingDocumentAsDifferentMarkup(self, getSaveFileNameMock, getOpenFileNamesMock): self.window = ReTextWindow() self.window.createNew('') self.window.actionOpen.trigger() app.processEvents() try: self.window.actionSaveAs.trigger() app.processEvents() finally: os.remove(os.path.join(path_to_testdata, 'not_existing_file.rst')) self.check_widgets_enabled_for_restructuredtext(self.window) @patch('ReText.window.QFileDialog.getOpenFileNames', return_value=([os.path.join(path_to_testdata, 'existing_file.md')], None)) @patch('ReText.window.QFileDialog.getSaveFileName', return_value=(os.path.join(path_to_testdata, 'not_existing_file.md'), None)) def test_saveWidgetStates(self, getSaveFileNameMock, getOpenFileNamesMock): self.window = ReTextWindow() # check if save is disabled at first self.window.createNew('') app.processEvents() self.check_widgets_disabled(self.window, ('actionSave',)) self.assertFalse(self.window.isWindowModified()) self.assertEqual(self.window.tabWidget.tabText(0), 'New document') # check if it's enabled after inserting some text self.window.currentTab.editBox.textCursor().insertText('some text') app.processEvents() self.check_widgets_enabled(self.window, ('actionSave',)) self.assertTrue(self.window.isWindowModified()) self.assertEqual(self.window.tabWidget.tabText(0), 'New document*') # check if it's disabled again after loading a file in a second tab and switching to it self.window.actionOpen.trigger() app.processEvents() self.check_widgets_disabled(self.window, ('actionSave',)) self.assertFalse(self.window.isWindowModified()) self.assertEqual(self.window.tabWidget.tabText(0), 'New document*') self.assertEqual(self.window.tabWidget.tabText(1), 'existing_file') # check if it's enabled again after switching back self.window.switchTab() app.processEvents() self.check_widgets_enabled(self.window, ('actionSave',)) self.assertTrue(self.window.isWindowModified()) self.assertEqual(self.window.tabWidget.tabText(0), 'New document*') self.assertEqual(self.window.tabWidget.tabText(1), 'existing_file') # check if it's disabled after saving try: self.window.actionSaveAs.trigger() app.processEvents() self.check_widgets_disabled(self.window, ('actionSave',)) self.assertFalse(self.window.isWindowModified()) self.assertEqual(self.window.tabWidget.tabText(0), 'not_existing_file') self.assertEqual(self.window.tabWidget.tabText(1), 'existing_file') finally: os.remove(os.path.join(path_to_testdata, 'not_existing_file.md')) @patch('ReText.window.QFileDialog.getOpenFileNames', return_value=([os.path.join(path_to_testdata, 'existing_file.md')], None)) def test_encodingAndReloadWidgetStates(self, getOpenFileNamesMock): self.window = ReTextWindow() # check if reload/set encoding is disabled for a tab without filename set self.window.createNew('') app.processEvents() self.check_widgets_disabled(self.window, ('actionReload','actionSetEncoding')) self.window.actionOpen.trigger() app.processEvents() self.check_widgets_enabled(self.window, ('actionReload','actionSetEncoding')) @patch('ReText.window.QFileDialog.getOpenFileNames', return_value=([os.path.join(path_to_testdata, 'existing_file.md')], None)) def test_encodingAndReloadWidgetStates_alwaysDisabledWhenAutosaveEnabled(self, getOpenFileNamesMock): self.globalSettingsMock.autoSave = True self.window = ReTextWindow() # check if reload/set encoding is disabled for a tab without filename set self.window.createNew('') app.processEvents() self.check_widgets_disabled(self.window, ('actionReload','actionSetEncoding')) self.window.actionOpen.trigger() app.processEvents() self.check_widgets_disabled(self.window, ('actionReload','actionSetEncoding')) def test_doesNotTweakSpecialCharacters(self): fileName = tempfile.mkstemp(suffix='.mkd')[1] content = 'Non-breaking\u00a0space\n\nLine\u2028separator\n' with open(fileName, 'w', encoding='utf-8') as tempFile: tempFile.write(content) window = ReTextWindow() window.openFileWrapper(fileName) self.assertTrue(window.saveFile()) with open(fileName, encoding='utf-8') as tempFile: self.assertMultiLineEqual(content, tempFile.read()) with suppress(PermissionError): os.remove(fileName) def test_autoSave(self): self.globalSettingsMock.autoSave = True window = ReTextWindow() window.autoSaveTimer.start(250) fileName = tempfile.mkstemp(suffix='.mkd')[1] with open(fileName, 'w', encoding='utf-8') as tempFile: tempFile.write('first content') window.openFileWrapper(fileName) cursor = window.currentTab.editBox.textCursor() cursor.select(QTextCursor.SelectionType.Document) cursor.insertText('second content') QTest.qWait(300) # more than the timer interval with open(fileName, encoding='utf-8') as tempFile: self.assertEqual(tempFile.read(), 'second content') window.closeTab(0) with suppress(PermissionError): os.remove(fileName) @unittest.skipIf(platform.system() == 'Windows', 'QFileSystemWatcher does not work reliably') @patch('ReText.window.QMessageBox.exec', return_value=None) def test_reloadFileNotModified(self, messageBoxExecMock): self.fileSystemWatcherPatcher.stop() window = ReTextWindow() fileName = tempfile.mkstemp(suffix='.mkd')[1] with open(fileName, 'w', encoding='utf-8') as tempFile: tempFile.write('first content') window.openFileWrapper(fileName) self.assertEqual(window.fileSystemWatcher.files(), [fileName.replace('\\', '/')]) editBox = window.currentTab.editBox self.assertEqual(editBox.toPlainText(), 'first content') self.assertFalse(editBox.document().isModified()) app.processEvents() with open(fileName, 'w', encoding='utf-8') as tempFile: tempFile.write('modified externally') QTest.qWait(100) self.assertEqual(editBox.toPlainText(), 'modified externally') self.assertFalse(window.currentTab.forceDisableAutoSave) window.closeTab(0) self.assertEqual(window.fileSystemWatcher.files(), []) with suppress(PermissionError): os.remove(fileName) @unittest.skipIf(platform.system() == 'Windows', 'QFileSystemWatcher does not work reliably') @patch('ReText.window.QMessageBox.warning', return_value=QMessageBox.StandardButton.Discard) @patch('ReText.window.QMessageBox.exec', return_value=None) def test_reloadFileModified(self, messageBoxExecMock, messageBoxWarningMock): self.fileSystemWatcherPatcher.stop() window = ReTextWindow() fileName = tempfile.mkstemp(suffix='.mkd')[1] with open(fileName, 'w', encoding='utf-8') as tempFile: tempFile.write('first content') window.openFileWrapper(fileName) self.assertEqual(window.fileSystemWatcher.files(), [fileName.replace('\\', '/')]) editBox = window.currentTab.editBox self.assertEqual(editBox.toPlainText(), 'first content') editBox.textCursor().insertText('modified ') app.processEvents() self.assertTrue(editBox.document().isModified()) with open(fileName, 'w', encoding='utf-8') as tempFile: tempFile.write('modified externally') QTest.qWait(100) self.assertEqual(editBox.toPlainText(), 'modified first content') self.assertTrue(window.currentTab.forceDisableAutoSave) window.closeTab(0) self.assertEqual(window.fileSystemWatcher.files(), []) with suppress(PermissionError): os.remove(fileName) if __name__ == '__main__': unittest.main() ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1710611012.6972506 ReText-8.0.2/tests/testdata/0000755000175000017500000000000014575355105015363 5ustar00dmitrydmitry././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/tests/testdata/existing_file.md0000644000175000017500000000002614575336012020530 0ustar00dmitrydmitryexisting_file_content ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1710603274.0 ReText-8.0.2/tests/testdata/existing_file.rst0000644000175000017500000000002614575336012020740 0ustar00dmitrydmitryexisting_file_content