diff -Nru ghostwriter-1.5.0+ds1/CONTRIBUTING.md ghostwriter-1.6.0/CONTRIBUTING.md
--- ghostwriter-1.5.0+ds1/CONTRIBUTING.md 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/CONTRIBUTING.md 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,28 @@
+# Contributing
+
+## Bug Reports
+
+Bug reports are the number one way you can contribute to *ghostwriter*. Please include the following information when filing a bug report in GitHub:
+
+* Your Operating System
+* If on GNU/Linux, your desktop environment
+* Steps that can be used to replicate the problem
+* Any sample Markdown files that might be useful in replicating the problem
+
+## New Feature Requests
+
+At this present time, I do not have the bandwidth to work on new feature requests. As such, new feature requests filed in GitHub will be closed. This does not mean *ghostwriter* will cease to have new features. On the contrary! *ghostwriter* has quite the backlog of feature requests already filed in GitHub. Also, I have a secret list of features I would like to work on that I think the community will very much enjoy. I do appreciate the community's enthusiasm for *ghostwriter*. Thank you for all your feedback!
+
+## Pull Requests
+
+Pull requests are presently only accepted for translations into different languages. I will be closing all other pull requests. This is simply because I do not have the time that contributors deserve to review the code, let alone spend time thoroughly testing it.
+
+## Translations
+
+As stated above, pull requests are still accepted for translations into different languages. Being a Qt application, *ghostwriter* requires translators to use Qt Linguist to create translation files.
+
+## Packaging
+
+*ghostwriter* still needs to be packaged for different GNU/Linux distributions. If you are a maintainer for a GNU/Linux distribution, or would like to volunteer to become one, please consider packaging *ghostwriter* for your distribution's repository.
+
+Finally, I am also looking for someone to contribute a regular MacOS build, as well as a Windows build. While I am maintaining the Windows build releases at present, I would like to hand that off to someone else in the long term. If you are interested, please let me know by filing a new Issue, and we can work together to get you started in creating the Windows executables.
diff -Nru ghostwriter-1.5.0+ds1/CREDITS.md ghostwriter-1.6.0/CREDITS.md
--- ghostwriter-1.5.0+ds1/CREDITS.md 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/CREDITS.md 2018-04-07 21:47:43.000000000 +0000
@@ -12,8 +12,10 @@
* Japanese - piyo-gh
* German - dhbwmawhd
* Czech - Pavel Fric (pafri)
+* Polish - mleko69
* French - pygoliae
-* Spanish - cemetary
+* Spanish - cemetary, Icaro Perseo (icaroperseo)
+* Chinese - gledos
Libraries
=========
diff -Nru ghostwriter-1.5.0+ds1/debian/changelog ghostwriter-1.6.0/debian/changelog
--- ghostwriter-1.5.0+ds1/debian/changelog 2017-05-13 20:57:04.000000000 +0000
+++ ghostwriter-1.6.0/debian/changelog 2018-04-07 21:47:43.000000000 +0000
@@ -1,3 +1,15 @@
+ghostwriter (1.6.0-0ppa1~trusty1) trusty; urgency=low
+
+ * New upstream release.
+
+ -- wereturtle Sat, 7 Apr 2018 14:30:00 -0700
+
+ghostwriter (1.5.0+ds2-1ppa2~trusty1) trusty; urgency=low
+
+ * Dependency fix for Artful Aardvark.
+
+ -- wereturtle Thu, 31 Aug 2017 23:00:00 -0700
+
ghostwriter (1.5.0+ds1-1ppa1~trusty1) trusty; urgency=low
* New upstream release.
diff -Nru ghostwriter-1.5.0+ds1/debian/control ghostwriter-1.6.0/debian/control
--- ghostwriter-1.5.0+ds1/debian/control 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/debian/control 2018-04-07 21:47:43.000000000 +0000
@@ -28,8 +28,8 @@
distraction-free writing environment, along with a live HTML
preview as you type, easy document navigation with an outline HUD,
and export to popular document formats with Sundown, Pandoc,
- MultiMarkdown, Discount or cmark processors. It also features a
- live word count and auto-save. Eliminate distractions in
+ MultiMarkdown, Discount, cmark, or cmark-gfm processors. It also
+ features a live word count and auto-save. Eliminate distractions in
fullscreen mode, or concentrate on the current text you are writing
in focus mode. It even remembers your last opened file and position
within the file, so you can pick up where you last left off.
diff -Nru ghostwriter-1.5.0+ds1/debian/copyright ghostwriter-1.6.0/debian/copyright
--- ghostwriter-1.5.0+ds1/debian/copyright 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/debian/copyright 2018-04-07 21:47:43.000000000 +0000
@@ -5,11 +5,11 @@
git://github.com/wereturtle/ghostwriter.git
Files: *
-Copyright: 2014-2016 wereturtle
+Copyright: 2014-2018 wereturtle
License: GPL-3.0+
Files: debian/*
-Copyright: 2015-2016 wereturtle
+Copyright: 2015-2018 wereturtle
License: GPL-3.0+
License: GPL-3.0+
diff -Nru ghostwriter-1.5.0+ds1/ghostwriter.pro ghostwriter-1.6.0/ghostwriter.pro
--- ghostwriter-1.5.0+ds1/ghostwriter.pro 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/ghostwriter.pro 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
################################################################################
#
-# Copyright (C) 2014-2017 wereturtle
+# Copyright (C) 2014-2018 wereturtle
# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Graeme Gott
#
# This program is free software: you can redistribute it and/or modify
@@ -18,26 +18,24 @@
#
################################################################################
-lessThan(QT_VERSION, 4.8) {
- error("ghostwriter requires Qt 4.8 or greater")
+lessThan(QT_MAJOR_VERSION, 5) {
+ error("ghostwriter requires Qt 5.2 or greater")
}
-macx:greaterThan(QT_MAJOR_VERSION, 4):lessThan(QT_VERSION, 5.2) {
+
+isEqual(QT_MAJOR_VERSION, 5) : lessThan(QT_MINOR_VERSION, 2) {
error("ghostwriter requires Qt 5.2 or greater")
}
TEMPLATE = app
-greaterThan(QT_MAJOR_VERSION, 4) { # QT v. 5
- QT += printsupport webkitwidgets widgets concurrent
-}
-else { # QT v. 4
- QT += webkit concurrent
-}
+
+QT += printsupport webkitwidgets widgets concurrent
+
CONFIG -= debug
CONFIG += warn_on
# Set program version
isEmpty(VERSION) {
- VERSION = v1.5.0
+ VERSION = v1.6.0
}
DEFINES += APPVERSION='\\"$${VERSION}\\"'
@@ -68,9 +66,7 @@
OBJECTIVE_SOURCES += src/spelling/dictionary_provider_nsspellchecker.mm
} else:win32 {
- greaterThan(QT_MAJOR_VERSION, 4) {
- LIBS += -lz
- }
+ LIBS += -lz
INCLUDEPATH += src/spelling/hunspell
@@ -90,9 +86,6 @@
src/spelling/hunspell/replist.cxx \
src/spelling/hunspell/suggestmgr.cxx
- lessThan(QT_MAJOR_VERSION, 5) {
- LIBS += -lOle32
- }
} else:unix {
CONFIG += link_pkgconfig
PKGCONFIG += hunspell
@@ -141,7 +134,6 @@
src/HighlighterLineStates.h \
src/HighlightTokenizer.h \
src/MarkdownTokenizer.h \
- src/EffectsMenuBar.h \
src/TimeLabel.h \
src/LocaleDialog.h \
src/AbstractStatisticsWidget.h \
@@ -150,6 +142,7 @@
src/SessionStatistics.h \
src/SessionStatisticsWidget.h \
src/PreferencesDialog.h \
+ src/PreviewOptionsDialog.h \
src/find_dialog.h \
src/image_button.h \
src/color_button.h \
@@ -171,7 +164,6 @@
src/MarkdownEditor.cpp \
src/Token.cpp \
src/HtmlPreview.cpp \
- src/Exporter.cpp \
src/ExportFormat.cpp \
src/Theme.cpp \
src/ThemeFactory.cpp \
@@ -180,6 +172,7 @@
src/ThemeSelectionDialog.cpp \
src/ThemePreviewer.cpp \
src/ThemeEditorDialog.cpp \
+ src/Exporter.cpp \
src/ExporterFactory.cpp \
src/ColorHelper.cpp \
src/AppSettings.cpp \
@@ -196,7 +189,6 @@
src/SundownExporter.cpp \
src/HighlightTokenizer.cpp \
src/MarkdownTokenizer.cpp \
- src/EffectsMenuBar.cpp \
src/TimeLabel.cpp \
src/LocaleDialog.cpp \
src/AbstractStatisticsWidget.cpp \
@@ -205,6 +197,7 @@
src/DocumentStatistics.cpp \
src/DocumentStatisticsWidget.cpp \
src/PreferencesDialog.cpp \
+ src/PreviewOptionsDialog.cpp \
src/find_dialog.cpp \
src/image_button.cpp \
src/color_button.cpp \
diff -Nru ghostwriter-1.5.0+ds1/ghostwriter.pro.user.87e17b4 ghostwriter-1.6.0/ghostwriter.pro.user.87e17b4
--- ghostwriter-1.5.0+ds1/ghostwriter.pro.user.87e17b4 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/ghostwriter.pro.user.87e17b4 1970-01-01 00:00:00.000000000 +0000
@@ -1,271 +0,0 @@
-
-
-
-
-
- EnvironmentId
- {87e17b4d-1604-4faa-804d-ed96587c9fcd}
-
-
- ProjectExplorer.Project.ActiveTarget
- 0
-
-
- ProjectExplorer.Project.EditorSettings
-
- true
- false
- true
-
- Cpp
-
- CppGlobal
-
-
-
- QmlJS
-
- QmlJSGlobal
-
-
- 2
- UTF-8
- false
- 4
- false
- 80
- true
- true
- 1
- true
- false
- 0
- true
- 0
- 8
- true
- 1
- true
- true
- true
- false
-
-
-
- ProjectExplorer.Project.PluginSettings
-
-
-
- ProjectExplorer.Project.Target.0
-
- Desktop
- Desktop
- {36b40a45-f215-4a78-a160-c490e3d914a3}
- 1
- 0
- 0
-
- /home/mustangsally/build-ghostwriter-Desktop-Debug
-
-
- true
- qmake
-
- QtProjectManager.QMakeBuildStep
- false
- true
-
- false
- false
- false
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- -w
- -r
-
- false
-
-
-
- 2
- Build
-
- ProjectExplorer.BuildSteps.Build
-
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- -w
- -r
-
- true
- clean
-
-
- 1
- Clean
-
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Debug
-
- Qt4ProjectManager.Qt4BuildConfiguration
- 2
- true
-
-
- /home/mustangsally/build-ghostwriter-Desktop-Release
-
-
- true
- qmake
-
- QtProjectManager.QMakeBuildStep
- false
- true
-
- false
- false
- false
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- -w
- -r
-
- false
-
-
-
- 2
- Build
-
- ProjectExplorer.BuildSteps.Build
-
-
-
- true
- Make
-
- Qt4ProjectManager.MakeStep
-
- -w
- -r
-
- true
- clean
-
-
- 1
- Clean
-
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Release
-
- Qt4ProjectManager.Qt4BuildConfiguration
- 0
- true
-
- 2
-
-
- 0
- Deploy
-
- ProjectExplorer.BuildSteps.Deploy
-
- 1
- Deploy locally
-
- ProjectExplorer.DefaultDeployConfiguration
-
- 1
-
-
-
- false
- false
- false
- false
- true
- 0.01
- 10
- true
- 1
- 25
-
- 1
- true
- false
- true
- valgrind
-
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
-
- 2
-
- ghostwriter
-
- Qt4ProjectManager.Qt4RunConfiguration:/home/mustangsally/ghostwriter/ghostwriter.pro
-
- ghostwriter.pro
- false
- false
-
- 3768
- false
- true
- false
- false
- true
-
- 1
-
-
-
- ProjectExplorer.Project.TargetCount
- 1
-
-
- ProjectExplorer.Project.Updater.FileVersion
- 18
-
-
- Version
- 18
-
-
diff -Nru ghostwriter-1.5.0+ds1/README.md ghostwriter-1.6.0/README.md
--- ghostwriter-1.5.0+ds1/README.md 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/README.md 2018-04-07 21:47:43.000000000 +0000
@@ -1,4 +1,4 @@
-![ghostwriter](http://wereturtle.github.io/images/logo.png)
+![ghostwriter](http://wereturtle.github.io/ghostwriter/images/logo.png)
About *ghostwriter*
===================
@@ -126,7 +126,7 @@
``` shell
$ brew install qt5 --with-qtwebkit # Compication takes a while, and drains the battery
-$ resources/mac/Info.plist resources/
+$ cp resources/mac/Info.plist resources/
$ qmake -spec macx-g++
$ make
```
@@ -183,9 +183,7 @@
Contribute
==========
-Please submit any bugs you find through [GitHub](http://github.com/wereturtle/ghostwriter) with a detailed description on how to replicate the problem.
-
-Finally, if you wish to thank me by donating to the tip jar, you can flattr me from GitHub. Simply sign up for [Flattr](http://flattr.com) if you haven't already, connect your Flattr account to your GitHub account, and then Star my repository from GitHub. You can also simply visit the [*ghostwriter* project page](http://wereturtle.github.io/ghostwriter) and click on the Flattr button at the bottom of the page. I'll use your generous tip to treat my family to fish tacos. Yum!
+Please submit any bugs you find through [GitHub](http://github.com/wereturtle/ghostwriter) with a detailed description on how to replicate the problem. New translations are also welcome. However, please note that new feature requests are no longer being accepted. Please read the [contributing guide](https://github.com/wereturtle/ghostwriter/blob/master/CONTRIBUTING.md) for further details on how you can contribute to the project.
Roadmap
========
diff -Nru ghostwriter-1.5.0+ds1/resources/images/close-delete.svg ghostwriter-1.6.0/resources/images/close-delete.svg
--- ghostwriter-1.5.0+ds1/resources/images/close-delete.svg 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/close-delete.svg 1970-01-01 00:00:00.000000000 +0000
@@ -1,173 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Gnome Symbolic Icon Theme
-
-
-
- image/svg+xml
-
- Gnome Symbolic Icon Theme
-
-
-
-
-
-
diff -Nru ghostwriter-1.5.0+ds1/resources/images/close-hover.svg ghostwriter-1.6.0/resources/images/close-hover.svg
--- ghostwriter-1.5.0+ds1/resources/images/close-hover.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/close-hover.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gnome Symbolic Icon Theme
+
+
+
+ image/svg+xml
+
+ Gnome Symbolic Icon Theme
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/close-pressed.svg ghostwriter-1.6.0/resources/images/close-pressed.svg
--- ghostwriter-1.5.0+ds1/resources/images/close-pressed.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/close-pressed.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gnome Symbolic Icon Theme
+
+
+
+ image/svg+xml
+
+ Gnome Symbolic Icon Theme
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/close.svg ghostwriter-1.6.0/resources/images/close.svg
--- ghostwriter-1.5.0+ds1/resources/images/close.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/close.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gnome Symbolic Icon Theme
+
+
+
+ image/svg+xml
+
+ Gnome Symbolic Icon Theme
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/configure-dark.svg ghostwriter-1.6.0/resources/images/configure-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/configure-dark.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/configure-dark.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/configure-light.svg ghostwriter-1.6.0/resources/images/configure-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/configure-light.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/configure-light.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,63 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/copy-html-dark.svg ghostwriter-1.6.0/resources/images/copy-html-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/copy-html-dark.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/copy-html-dark.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/copy-html-light.svg ghostwriter-1.6.0/resources/images/copy-html-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/copy-html-light.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/copy-html-light.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/COPYING ghostwriter-1.6.0/resources/images/COPYING
--- ghostwriter-1.5.0+ds1/resources/images/COPYING 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/COPYING 2018-04-07 21:47:43.000000000 +0000
@@ -1,20 +1,21 @@
-Files: view-fullscreen-light.svg, view-fullscreen-light-hover.svg,
- view-fullscreen-dark.svg, view-fullscreen-dark-hover.svg,
- view-restore-light.svg, view-restore-light-hover.svg,
- view-restore-dark.svg, view-restore-dark-hover.svg
+Files: configure-dark.svg, configure-light.svg,
+ copy-html-dark.svg, copy-html-light.svg,
+ export-dark.svg, export-light.svg, focus-dark.svg,
+ focus-light.svg, fullscreen-dark.svg,
+ fullscreen-light.svg, hemingway-dark.svg,
+ hemingway-light.svg, html-preview-dark.svg,
+ html-preview-light.svg, hide-huds-dark.svg,
+ hide-huds-light.svg
Author: wereturtle
-License: CC BY-SA3
- Creative Commons Attribution 3.0 Share-Alike License
+License: GNU LGPL v3
+ GNU Lesser General Public License Version 3.0
- These are derivative of the "Adwaita Icon Theme" by the GNOME Project
- , used under a Creative Commons Attribution 3.0
- Share-Alike License. They are licened under Creative Commons Attribution
- 3.0 Share-Alike License by wereturtle. The original version from the
- Gnome Project can be found at .
+ These are derived from the "Papirus Icon Theme", Copyright 2016 Sergei
+ Eremenko. The "Papirus Icon Theme" is distributed under the terms of
+ the GNU LGPL v3. The original version can be found at
+ .
- To view a copy of this licence, visit
- http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
- Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
+ To view a copy of this licence, visit .
Files: ghostwriter.svg, close-delete.svg, size-grip.svg, unavailable.svg
@@ -28,4 +29,4 @@
Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
When attributing the artwork, using "wereturtle" is enough. Please link to
- http://github.com/wereturtle/ghostwriter where available.
\ No newline at end of file
+ http://github.com/wereturtle/ghostwriter where available.
diff -Nru ghostwriter-1.5.0+ds1/resources/images/export-dark.svg ghostwriter-1.6.0/resources/images/export-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/export-dark.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/export-dark.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/export-light.svg ghostwriter-1.6.0/resources/images/export-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/export-light.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/export-light.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,63 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/focus-dark.svg ghostwriter-1.6.0/resources/images/focus-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/focus-dark.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/focus-dark.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/focus-light.svg ghostwriter-1.6.0/resources/images/focus-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/focus-light.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/focus-light.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,63 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/fullscreen-dark.svg ghostwriter-1.6.0/resources/images/fullscreen-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/fullscreen-dark.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/fullscreen-dark.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/fullscreen-light.svg ghostwriter-1.6.0/resources/images/fullscreen-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/fullscreen-light.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/fullscreen-light.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,63 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/hemingway-dark.svg ghostwriter-1.6.0/resources/images/hemingway-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/hemingway-dark.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/hemingway-dark.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/hemingway-light.svg ghostwriter-1.6.0/resources/images/hemingway-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/hemingway-light.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/hemingway-light.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,63 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/hide-huds-dark.svg ghostwriter-1.6.0/resources/images/hide-huds-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/hide-huds-dark.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/hide-huds-dark.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/hide-huds-light.svg ghostwriter-1.6.0/resources/images/hide-huds-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/hide-huds-light.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/hide-huds-light.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,63 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/html-preview-dark.svg ghostwriter-1.6.0/resources/images/html-preview-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/html-preview-dark.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/html-preview-dark.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/html-preview-light.svg ghostwriter-1.6.0/resources/images/html-preview-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/html-preview-light.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/html-preview-light.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,62 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/markdown-mark.svg ghostwriter-1.6.0/resources/images/markdown-mark.svg
--- ghostwriter-1.5.0+ds1/resources/images/markdown-mark.svg 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/markdown-mark.svg 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,575 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ markdown-mark/markdown-mark.svg at master · dcurtis/markdown-mark · GitHub
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Permalink
+
+
+
+
+
+
+
+
+
+
+ f93b4bb
+
+ Jan 31, 2014
+
+
+
+
+
+ 3
+ contributors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sorry, something went wrong.
Reload?
+
Sorry, we cannot display this file.
+
Sorry, this file is invalid so it cannot be displayed.
+
+
+
+
+
+
+
+
+
Jump to Line
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ You can't perform that action at this time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
You signed in with another tab or window. Reload to refresh your session.
+
You signed out in another tab or window. Reload to refresh your session.
+
+
+
+
+
+
+
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/images/view-fullscreen-dark-hover.svg ghostwriter-1.6.0/resources/images/view-fullscreen-dark-hover.svg
--- ghostwriter-1.5.0+ds1/resources/images/view-fullscreen-dark-hover.svg 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/view-fullscreen-dark-hover.svg 1970-01-01 00:00:00.000000000 +0000
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
- Gnome Symbolic Icon Theme
-
-
-
- Gnome Symbolic Icon Theme
-
-
-
-
-
-
-
-
-
-
-
-
-
diff -Nru ghostwriter-1.5.0+ds1/resources/images/view-fullscreen-dark.svg ghostwriter-1.6.0/resources/images/view-fullscreen-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/view-fullscreen-dark.svg 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/view-fullscreen-dark.svg 1970-01-01 00:00:00.000000000 +0000
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
- Gnome Symbolic Icon Theme
-
-
-
- Gnome Symbolic Icon Theme
-
-
-
-
-
-
-
-
-
-
-
-
-
diff -Nru ghostwriter-1.5.0+ds1/resources/images/view-fullscreen-light-hover.svg ghostwriter-1.6.0/resources/images/view-fullscreen-light-hover.svg
--- ghostwriter-1.5.0+ds1/resources/images/view-fullscreen-light-hover.svg 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/view-fullscreen-light-hover.svg 1970-01-01 00:00:00.000000000 +0000
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
- Gnome Symbolic Icon Theme
-
-
-
- Gnome Symbolic Icon Theme
-
-
-
-
-
-
-
-
-
-
-
-
-
diff -Nru ghostwriter-1.5.0+ds1/resources/images/view-fullscreen-light.svg ghostwriter-1.6.0/resources/images/view-fullscreen-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/view-fullscreen-light.svg 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/view-fullscreen-light.svg 1970-01-01 00:00:00.000000000 +0000
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
- Gnome Symbolic Icon Theme
-
-
-
- Gnome Symbolic Icon Theme
-
-
-
-
-
-
-
-
-
-
-
-
-
diff -Nru ghostwriter-1.5.0+ds1/resources/images/view-restore-dark-hover.svg ghostwriter-1.6.0/resources/images/view-restore-dark-hover.svg
--- ghostwriter-1.5.0+ds1/resources/images/view-restore-dark-hover.svg 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/view-restore-dark-hover.svg 1970-01-01 00:00:00.000000000 +0000
@@ -1,113 +0,0 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
- Gnome Symbolic Icon Theme
-
-
-
- Gnome Symbolic Icon Theme
-
-
-
-
-
-
-
-
-
-
-
-
diff -Nru ghostwriter-1.5.0+ds1/resources/images/view-restore-dark.svg ghostwriter-1.6.0/resources/images/view-restore-dark.svg
--- ghostwriter-1.5.0+ds1/resources/images/view-restore-dark.svg 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/view-restore-dark.svg 1970-01-01 00:00:00.000000000 +0000
@@ -1,113 +0,0 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
- Gnome Symbolic Icon Theme
-
-
-
- Gnome Symbolic Icon Theme
-
-
-
-
-
-
-
-
-
-
-
-
diff -Nru ghostwriter-1.5.0+ds1/resources/images/view-restore-light-hover.svg ghostwriter-1.6.0/resources/images/view-restore-light-hover.svg
--- ghostwriter-1.5.0+ds1/resources/images/view-restore-light-hover.svg 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/view-restore-light-hover.svg 1970-01-01 00:00:00.000000000 +0000
@@ -1,113 +0,0 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
- Gnome Symbolic Icon Theme
-
-
-
- Gnome Symbolic Icon Theme
-
-
-
-
-
-
-
-
-
-
-
-
diff -Nru ghostwriter-1.5.0+ds1/resources/images/view-restore-light.svg ghostwriter-1.6.0/resources/images/view-restore-light.svg
--- ghostwriter-1.5.0+ds1/resources/images/view-restore-light.svg 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/images/view-restore-light.svg 1970-01-01 00:00:00.000000000 +0000
@@ -1,113 +0,0 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
- Gnome Symbolic Icon Theme
-
-
-
- Gnome Symbolic Icon Theme
-
-
-
-
-
-
-
-
-
-
-
-
diff -Nru ghostwriter-1.5.0+ds1/resources/linux/ghostwriter.1 ghostwriter-1.6.0/resources/linux/ghostwriter.1
--- ghostwriter-1.5.0+ds1/resources/linux/ghostwriter.1 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/linux/ghostwriter.1 2018-04-07 21:47:43.000000000 +0000
@@ -1,5 +1,5 @@
.\" Manpage for ghostwriter.
-.TH man 1 "13 May 2017" "1.5.0" "ghostwriter man page"
+.TH man 1 "8 February 2018" "1.6.0" "ghostwriter man page"
.SH NAME
ghostwriter \- distraction\-free text editor for Markdown
.SH SYNOPSIS
@@ -12,7 +12,7 @@
A live HTML preview allows you to view the final formatting as you type.
HTML preview and export options are provided by the built-in Markdown processor,
Sundown; but you may add more by installing Pandoc, MultiMarkdown, Discount,
-or cmark processors. The application will automatically detect their
+cmark, or cmark-gfm processors. The application will automatically detect their
installation if their locations are in the system's PATH environment variable.
.SH AUTHOR
wereturtle
diff -Nru ghostwriter-1.5.0+ds1/resources/linux/ghostwriter.appdata.xml ghostwriter-1.6.0/resources/linux/ghostwriter.appdata.xml
--- ghostwriter-1.5.0+ds1/resources/linux/ghostwriter.appdata.xml 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/linux/ghostwriter.appdata.xml 2018-04-07 21:47:43.000000000 +0000
@@ -10,8 +10,8 @@
a live HTML preview as you type, theme creation, focus mode, fullscreen
mode, live word count, and document navigation in an aesthetic writing
environment. It comes with the Sundown Markdown processor built in, and
- can integrate with Pandoc, MultiMarkdown, Discount, and cmark processors
- if they are installed.
+ can integrate with Pandoc, MultiMarkdown, Discount, cmark, and cmark-gfm
+ processors if they are installed.
@@ -27,6 +27,6 @@
ghostwriter
-
+
diff -Nru ghostwriter-1.5.0+ds1/resources/quickreferenceguide_en.md ghostwriter-1.6.0/resources/quickreferenceguide_en.md
--- ghostwriter-1.5.0+ds1/resources/quickreferenceguide_en.md 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources/quickreferenceguide_en.md 2018-04-07 21:47:43.000000000 +0000
@@ -2,7 +2,7 @@
Welcome to *ghostwriter*! This quick reference guide gives examples of writing in Markdown, a plain text markup format created by John Gruber. For more information and help, please visit John Gruber's website at . The official *ghostwriter* website can be found at .
-*ghostwriter* has built-in support for the Sundown processor. However, it also can auto-detect Pandoc, MultiMarkdown, Discount, or cmark processors. To use any or all of the latter three, simply install them and ensure that their installation locations are added to your system's `PATH` environment variable. *ghostwriter* will auto-detect their installation on startup, and give you live HTML preview and export options accordingly.
+*ghostwriter* has built-in support for the Sundown processor. However, it also can auto-detect Pandoc, MultiMarkdown, Discount, cmark, or cmark-gfm processors. To use any or all of the latter three, simply install them and ensure that their installation locations are added to your system's `PATH` environment variable. *ghostwriter* will auto-detect their installation on startup, and give you live HTML preview and export options accordingly.
# Headings
@@ -169,6 +169,7 @@
+ MultiMarkdown:
+ Discount:
+ cmark:
++ cmark-gfm:
The original John Gruber Markdown specification can be found at .
diff -Nru ghostwriter-1.5.0+ds1/resources/quickreferenceguide_ru.html ghostwriter-1.6.0/resources/quickreferenceguide_ru.html
--- ghostwriter-1.5.0+ds1/resources/quickreferenceguide_ru.html 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/quickreferenceguide_ru.html 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,286 @@
+
+
+
+
+
+
+ Quick Reference Guide - Russian
+
+
+
+
+Введение
+Добро пожаловать в ghostwriter ! Эта краткая справка показывает примеры использования Markdown, облегчённого языка разметки, созданного Джоном Грубером (John Gruber). Для дополнительной информации, посетите сайт Джона Грубера на http://www.daringfireball.net . Официальный сайт ghostwriter доступен на http://www.github.com/wereturtle/ghostwriter .
+ghostwriter имеет встроенный конвертер Sundown. Однако, он может также автоматически обнаружить конвертеры Pandoc, MultiMarkdown, Discount, или cmark. Для их использования, просто установите их, и убедитесь, что их пути установки добавлены в переменную окружения PATH
. ghostwriter обнаружит конвертеры при запуске и предоставит соответствующие опции для предпросмотра HTML и экспорта.
+Заголовки
+# Заголовок первого уровня
+## Заголовок второго уровня ##
+###### Заголовок шестого уровня
+
+Заголовок первого уровня
+===============
+какой-то текст
+
+Заголовок второго уровня
+---------------
+ещё текст
+Абзацы
+Это абзац.
+Это другая строка всё того же абзаца, с ручным переводом строки.
+
+Это — новый абзац.
+Форматирование строк
+Слова можно делать курсивными и даже жирными двумя способами. Первый — окружить их звёздочками (*). Второй — окружить подчёркиваниями (_).
+*Курсив* со звёздочками.
+_Курсив_ с подчёркиваниями.
+
+**Жирно** и со звёздочками.
+__Жирно__ и с подчёркиваниями.
+Смешивая то и другое, можно получить жирный курсив :
+***Жирный курсив*** со звёздочками.
+**_Жирный курвив_** с тем и другим.
+Вот ещё один *__жирный курсив__*.
+Ну и так далее.
+Ссылки
+Можно делать ссылки на сайты:
+Жми [сюда](http://url.com "Заголовок") чтобы зайти на сайт.
+Ещё можно делать ссылки-сноски:
+[Эту][id] ссылку определят чуть ниже.
+
+[id]: http://url.com "Заголовок"
+Картинки
+Картинки вставляют вот так:
+![альтернативный текст](./image.jpg "Заголовок")
+Их можно определять так же, как и ссылки-сноски:
+![alternate text][id] for a reference defined below.
+
+[id]: ./image.jpg "Title"
+Списки
+Можно сделать нумерованный список:
+1. Пункт первый.
+2. Пункт второй.
+3. Пункт третий.
+А можно — маркированный:
+* Первый пункт.
++ Второй.
+- Третий.
+Ещё их можно смешивать:
+1. Пункт первый
+ * Подпункт первый
+ * Подпункт второй
+2. Пункт второй
+ - Подпункт раз
+ - Подпункт два
+3. Пункт третий
+ 1. Подпункт три
+Блоки кода
+Отступ четырьмя и более пробелами (а также отступ символами табуляции) порождает блок кода:
+Простой абзац, за которым следует блок кода.
+
+ for (int i = 0; i < 10; i++) {
+ System.out.println("i = " + i);
+ }
+
+Фрагмент выше станет отформатированным блоком кода
+Некоторые конвертеры Markdown, такие как Pandoc, позволяют выделить блок кода обратными апострофами вместо отступов:
+```
+for (int i = 0; i < 10; i++) {
+ System.out.println("i = " + i);
+}
+```
+Этот блок будет также отображён как неформатированный блок кода.
+Строчный код
+Код в середине абзаца можно обозначить обратными апострофами, как вот этот `<html>`
тег. Содержащий обратные апострофы код можно выделить используя дополнительные апострофы, вот так: `` `экранированные апострофы` ``
.
+Блочные цитаты
+Блочные цитаты обозначаются так же, как и в электронных письмах:
+> Это — блочная цитата.
+>
+>> А это вложенная блочная цитата.
+Горизонтальная черта
+Горизонтальная черта получается из трёх дефисов (-), подчёркиваний (_) или звёздочек (*):
+---
+
+***
+___
+Между ними даже могут быть пробелы:
+- - -
+Расширения Markdown
+Некоторые конвертеры Markdown добавляют синтаксис для таблиц, сносок и прочего, расширяя первоначальную спецификацию Markdown. Вот пример сноски для Pandoc, MultiMarkdown и других конвертеров, поддерживающих это расширение:
+Этот текст снабжён сноской.[^footnoteid]
+
+[^footnoteid]: А вот, собственно, и она.
+Вот пример таблицы Pandoc:
+Column One Column Two
+---------- ----------
+Row Text 1 Row Text 2
+Row Text 1 Row Text 2
+
+Table: Pandoc sample table.
+А вот пример таблицы Sundown или MultiMarkdown:
+Column One | Column Two
+---------- | ----------
+Row Text 1 | Row Text 2
+Row Text 1 | Row Text 2
+Конвертеры Markdown могут поддерживать множество других синтаксисов таблиц. И существует ещё много других расширений. Для дополнительной информации, посетите следующие сайты:
+
+Первоначальная спецификация Джона Грубера можно найти на http://daringfireball.net/projects/markdown/ .
+Горячие клавиши
+У ghostwriter есть несколько горячих клавиш для редактирования Markdown:
+
+Ctrl+B
+Применяет жирное форматирование.
+
+Ctrl+I
+Применяет курсивное форматирование.
+
+Ctrl+K
+Применяет перечёркнуторе форматирование.
+
+Ctrl+/
+Нажатие клавиши Ctrl
вместе с /
либо вставит комментарий HTML на место курсора, либо пребразует выделенный текст в комментарий.
+
+Tab
+Когда текст в редакторе выделен, нажатие клавиши табуляции добавляет отступы к выбраным строкам текста.
+
+Shift+Tab
+Когда текст в редакторе выделен, нажатие Tab
вместе с Shift
уберёт один уровень отступа у выбранных строк текста.
+
+Shift+Enter
+Вставляет перевод строки в стиле Markdown.
+
+Ctrl+Enter
+Вставляет обычные перевод строки, но игнорируя текущий отступ. Иначе говоря, если нажать Ctrl+Enter
в строке с отступом, новая строка добавится без него. Обратите внимание, Ctrl
можно совместить с Shift
, получив тем самым перевод строки в стиле Markdown с новой стркой без отступа.
+
+Ctrl+.
+Нажатие Ctrl
вместе с .
превращает выделеные строки в блочную цитату.
+
+Ctrl+,
+Нажатие Ctrl
вместе с ,
отменяет цитирование, превращая все блочные цитаты в выделеных строках в обычный текст.
+
+Ctrl+8
+Нажатие Ctrl
вместе с 8
превращает выделенные строки в маркированный список с *
в качестве маркера. Например, пусть выбраны следующие строки:
+Первый элемент списка.
+Второй элемент списка.
+Нажатие Ctrl+8
превратит эти строки в такой список:
+* Первый элемент списка.
+* Второй элемент списка.
+
+Ctrl+Shift+-
+Нажатие Ctrl
вместе с Shift
и -
превращает выделенные строки в маркированный список с -
в качестве маркера. Например, пусть выбраны следующие строки:
+Первый элемент списка.
+Второй элемент списка.
+Нажатие Ctrl+Shift+-
превратит эти строки в такой список:
+- Первый элемент списка.
+- Второй элемент списка.
+
+Ctrl+Shift+=
+Нажатие Ctrl
вместе с Shift
и -
превращает выделенные строки в маркированный список с +
в качестве маркера. Например, пусть выбраны следующие строки:
+Первый элемент списка.
+Второй элемент списка.
+Нажатие Ctrl+Shift+=
превратит эти строки в такой список:
++ Первый элемент списка.
++ Второй элемент списка.
+
+Ctrl+1
+Нажатие Ctrl
вместе с 1
(число 1) превращает выделенные строки в нумерованный список с маркером .
. Например, пусть выбраны следующие строки:
+Первый элемент списка.
+Второй элемент списка.
+Нажатие Ctrl+1
превратит эти строки в такой список:
+1. Первый элемент списка.
+2. Второй элемент списка.
+
+Ctrl+0
+Нажатие Ctrl
вместе с 1
(число 0) превращает выделенные строки в нумерованный список с маркером )
. Например, пусть выбраны следующие строки:
+Первый элемент списка.
+Второй элемент списка.
+Нажатие Ctrl+0
превратит эти строки в такой список:
+1) Первый элемент списка.
+2) Второй элемент списка.
+
+Ctrl+T
+Нажатие Ctrl+T
превращает выбранные строки в список задач в стиле Github. Например, пусть выбраны следующие строки:
+Важная задача!
+Другая задача, не менее важная.
+Нажатие Ctrl+T
превратит эти строки в список задач:
+- [ ] Важная задача!
+- [ ] Другая задача, не менее важная.
+
+Ctrl+D
+Если текущая строка является пунктом списка задач, нажатие Ctrl+D
поменяет состояние задачи, поставив крестик, если его нет, или убрав крестик, если он есть. Например:
+- [ ] Невыполненная задача.
+- [x] `Ctrl+D` пометило эту задачу как выполненую!
+
+"
, '
, (
, [
, {
, *
, _
, `
, <
+Если выбран текст внутри строки, ввод любого из этих символов заключит выделеный текст между этим символом и соответствующим закрывающим символом. Например, если выбрать слово кот
и затем ввести (
, слово кот
будет заключено в скобки и превратится в (кот)
. Вот таблица открывающих и закрывающих символов:
+
+
+
+
+
+
+"
+"
+
+
+'
+'
+
+
+(
+)
+
+
+[
+]
+
+
+{
+}
+
+
+*
+*
+
+
+_
+_
+
+
+`
+`
+
+
+<
+>
+
+
+
+Чтобы сиволы автоматически дополнялись при наборе, включите опцию «Автоматически дополнять символы» в параметрах редактора. Там же можно настроить и то, какие именно символы дополнять.
+
+Перетаскивание изображений
+Вместо того, чтобы выбирать открывать меню правки и выбирать там «Вставить изображение…», можно просто перетащить файл изображения в окно редактора. Приложение вставит изображение с путём, относительным к расположению текущего документа, или же, если докумен не сохранён, изображение с полным путём. Например:
+![](../../относительный/путь/к/файлу.png)
+или если документ не сохранён:
+![](file:///полный/путь/к/файлу.png)
+
+
+
+Все права защищены © 2014-2017 wereturtle
+
+
diff -Nru ghostwriter-1.5.0+ds1/resources/quickreferenceguide_ru.md ghostwriter-1.6.0/resources/quickreferenceguide_ru.md
--- ghostwriter-1.5.0+ds1/resources/quickreferenceguide_ru.md 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/resources/quickreferenceguide_ru.md 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,311 @@
+# Введение
+
+Добро пожаловать в *ghostwriter*! Эта краткая справка показывает примеры использования Markdown, облегчённого языка разметки, созданного Джоном Грубером (John Gruber). Для дополнительной информации, посетите сайт Джона Грубера на .
+Официальный сайт *ghostwriter* доступен на .
+
+*ghostwriter* имеет встроенный конвертер Sundown. Однако, он может также автоматически обнаружить конвертеры Pandoc, MultiMarkdown, Discount, или cmark. Для их использования, просто установите их, и убедитесь, что их пути установки добавлены в переменную окружения `PATH`. *ghostwriter* обнаружит конвертеры при запуске и предоставит соответствующие опции для предпросмотра HTML и экспорта.
+
+
+# Заголовки
+
+ # Заголовок первого уровня
+ ## Заголовок второго уровня ##
+ ###### Заголовок шестого уровня
+
+ Заголовок первого уровня
+ ===============
+ какой-то текст
+
+ Заголовок второго уровня
+ ---------------
+ ещё текст
+
+# Абзацы
+
+ Это абзац.
+ Это другая строка всё того же абзаца, с ручным переводом строки.
+
+ Это — новый абзац.
+
+# Форматирование строк
+
+Слова можно делать *курсивными* и даже **жирными** двумя способами. Первый — окружить их звёздочками (\*). Второй — окружить подчёркиваниями (\_).
+
+ *Курсив* со звёздочками.
+ _Курсив_ с подчёркиваниями.
+
+ **Жирно** и со звёздочками.
+ __Жирно__ и с подчёркиваниями.
+
+Смешивая то и другое, можно получить ***жирный курсив***:
+
+ ***Жирный курсив*** со звёздочками.
+ **_Жирный курвив_** с тем и другим.
+ Вот ещё один *__жирный курсив__*.
+ Ну и так далее.
+
+# Ссылки
+
+Можно делать ссылки на сайты:
+
+ Жми [сюда](http://url.com "Заголовок") чтобы зайти на сайт.
+
+Ещё можно делать ссылки-сноски:
+
+ [Эту][id] ссылку определят чуть ниже.
+
+ [id]: http://url.com "Заголовок"
+
+# Картинки
+
+Картинки вставляют вот так:
+
+ ![альтернативный текст](./image.jpg "Заголовок")
+
+Их можно определять так же, как и ссылки-сноски:
+
+ ![alternate text][id] for a reference defined below.
+
+ [id]: ./image.jpg "Title"
+
+# Списки
+
+Можно сделать нумерованный список:
+
+ 1. Пункт первый.
+ 2. Пункт второй.
+ 3. Пункт третий.
+
+А можно — маркированный:
+
+ * Первый пункт.
+ + Второй.
+ - Третий.
+
+Ещё их можно смешивать:
+
+ 1. Пункт первый
+ * Подпункт первый
+ * Подпункт второй
+ 2. Пункт второй
+ - Подпункт раз
+ - Подпункт два
+ 3. Пункт третий
+ 1. Подпункт три
+
+# Блоки кода
+
+Отступ четырьмя и более пробелами (а также отступ символами табуляции) порождает блок кода:
+
+ Простой абзац, за которым следует блок кода.
+
+ for (int i = 0; i < 10; i++) {
+ System.out.println("i = " + i);
+ }
+
+ Фрагмент выше станет отформатированным блоком кода
+
+Некоторые конвертеры Markdown, такие как Pandoc, позволяют выделить блок кода обратными апострофами вместо отступов:
+
+ ```
+ for (int i = 0; i < 10; i++) {
+ System.out.println("i = " + i);
+ }
+ ```
+
+Этот блок будет также отображён как неформатированный блок кода.
+
+# Строчный код
+
+Код в середине абзаца можно обозначить обратными апострофами, как вот этот `` `` `` тег. Содержащий обратные апострофы код можно выделить используя дополнительные апострофы, вот так: ``` `` `экранированные апострофы` `` ```.
+
+# Блочные цитаты
+
+Блочные цитаты обозначаются так же, как и в электронных письмах:
+
+ > Это — блочная цитата.
+ >
+ >> А это вложенная блочная цитата.
+
+# Горизонтальная черта
+
+Горизонтальная черта получается из трёх дефисов (\-), подчёркиваний (\_) или звёздочек (\*):
+
+ ---
+
+ ***
+ ___
+
+Между ними даже могут быть пробелы:
+
+ - - -
+
+# Расширения Markdown
+
+Некоторые конвертеры Markdown добавляют синтаксис для таблиц, сносок и прочего, расширяя первоначальную спецификацию Markdown. Вот пример сноски для Pandoc, MultiMarkdown и других конвертеров, поддерживающих это расширение:
+
+ Этот текст снабжён сноской.[^footnoteid]
+
+ [^footnoteid]: А вот, собственно, и она.
+
+Вот пример таблицы Pandoc:
+
+ Column One Column Two
+ ---------- ----------
+ Row Text 1 Row Text 2
+ Row Text 1 Row Text 2
+
+ Table: Pandoc sample table.
+
+А вот пример таблицы Sundown или MultiMarkdown:
+
+ Column One | Column Two
+ ---------- | ----------
+ Row Text 1 | Row Text 2
+ Row Text 1 | Row Text 2
+
+Конвертеры Markdown могут поддерживать множество других синтаксисов таблиц. И существует ещё много других расширений. Для дополнительной информации, посетите следующие сайты:
+
++ Sundown:
++ Pandoc:
++ MultiMarkdown:
++ Discount:
++ cmark:
+
+Первоначальная спецификация Джона Грубера можно найти на .
+
+# Горячие клавиши
+
+У *ghostwriter* есть несколько горячих клавиш для редактирования Markdown:
+
+`Ctrl+B`
+: Применяет жирное форматирование.
+
+`Ctrl+I`
+: Применяет курсивное форматирование.
+
+`Ctrl+K`
+: Применяет перечёркнуторе форматирование.
+
+`Ctrl+/`
+: Нажатие клавиши `Ctrl` вместе с `/` либо вставит комментарий HTML на место курсора, либо пребразует выделенный текст в комментарий.
+
+`Tab`
+: Когда текст в редакторе выделен, нажатие клавиши табуляции добавляет отступы к выбраным строкам текста.
+
+`Shift+Tab`
+: Когда текст в редакторе выделен, нажатие `Tab` вместе с `Shift` уберёт один уровень отступа у выбранных строк текста.
+
+`Shift+Enter`
+: Вставляет перевод строки в стиле Markdown.
+
+`Ctrl+Enter`
+: Вставляет обычные перевод строки, но игнорируя текущий отступ. Иначе говоря, если нажать `Ctrl+Enter` в строке с отступом, новая строка добавится без него. Обратите внимание, `Ctrl` можно совместить с `Shift`, получив тем самым перевод строки в стиле Markdown с новой стркой без отступа.
+
+`Ctrl+.`
+: Нажатие `Ctrl` вместе с `.` превращает выделеные строки в блочную цитату.
+
+`Ctrl+,`
+: Нажатие `Ctrl` вместе с `,` отменяет цитирование, превращая все блочные цитаты в выделеных строках в обычный текст.
+
+`Ctrl+8`
+: Нажатие `Ctrl` вместе с `8` превращает выделенные строки в маркированный список с `*` в качестве маркера. Например, пусть выбраны следующие строки:
+
+ Первый элемент списка.
+ Второй элемент списка.
+
+ Нажатие `Ctrl+8` превратит эти строки в такой список:
+
+ * Первый элемент списка.
+ * Второй элемент списка.
+
+`Ctrl+Shift+-`
+: Нажатие `Ctrl` вместе с `Shift` и `-` превращает выделенные строки в маркированный список с `-` в качестве маркера. Например, пусть выбраны следующие строки:
+
+ Первый элемент списка.
+ Второй элемент списка.
+
+ Нажатие `Ctrl+Shift+-` превратит эти строки в такой список:
+
+ - Первый элемент списка.
+ - Второй элемент списка.
+
+`Ctrl+Shift+=`
+: Нажатие `Ctrl` вместе с `Shift` и `-` превращает выделенные строки в маркированный список с `+` в качестве маркера. Например, пусть выбраны следующие строки:
+
+ Первый элемент списка.
+ Второй элемент списка.
+
+ Нажатие `Ctrl+Shift+=` превратит эти строки в такой список:
+
+ + Первый элемент списка.
+ + Второй элемент списка.
+
+`Ctrl+1`
+: Нажатие `Ctrl` вместе с `1` (число 1) превращает выделенные строки в нумерованный список с маркером `.`. Например, пусть выбраны следующие строки:
+
+ Первый элемент списка.
+ Второй элемент списка.
+
+ Нажатие `Ctrl+1` превратит эти строки в такой список:
+
+ 1. Первый элемент списка.
+ 2. Второй элемент списка.
+
+`Ctrl+0`
+: Нажатие `Ctrl` вместе с `1` (число 0) превращает выделенные строки в нумерованный список с маркером `)`. Например, пусть выбраны следующие строки:
+
+ Первый элемент списка.
+ Второй элемент списка.
+
+ Нажатие `Ctrl+0` превратит эти строки в такой список:
+
+ 1) Первый элемент списка.
+ 2) Второй элемент списка.
+
+`Ctrl+T`
+: Нажатие `Ctrl+T` превращает выбранные строки в список задач в стиле Github. Например, пусть выбраны следующие строки:
+
+ Важная задача!
+ Другая задача, не менее важная.
+
+ Нажатие `Ctrl+T` превратит эти строки в список задач:
+
+ - [ ] Важная задача!
+ - [ ] Другая задача, не менее важная.
+
+`Ctrl+D`
+: Если текущая строка является пунктом списка задач, нажатие `Ctrl+D` поменяет состояние задачи, поставив крестик, если его нет, или убрав крестик, если он есть. Например:
+
+ - [ ] Невыполненная задача.
+ - [x] `Ctrl+D` пометило эту задачу как выполненую!
+
+`"`, `'`, `(`, `[`, `{`, `*`, `_`, `` ` ``, `<`
+: Если выбран текст внутри строки, ввод любого из этих символов заключит выделеный текст между этим символом и соответствующим закрывающим символом. Например, если выбрать слово `кот` и затем ввести `(`, слово `кот` будет заключено в скобки и превратится в `(кот)`. Вот таблица открывающих и закрывающих символов:
+
+ Открывающие | Закрывающие
+ ------------|------------
+ `"` | `"`
+ `'` | `'`
+ `(` | `)`
+ `[` | `]`
+ `{` | `}`
+ `*` | `*`
+ `_` | `_`
+ `` ` `` | `` ` ``
+ `<` | `>`
+
+ Чтобы сиволы автоматически дополнялись при наборе, включите опцию «Автоматически дополнять символы» в параметрах редактора. Там же можно настроить и то, какие именно символы дополнять.
+
+Перетаскивание изображений
+: Вместо того, чтобы выбирать открывать меню правки и выбирать там «Вставить изображение...», можно просто перетащить файл изображения в окно редактора. Приложение вставит изображение с путём, относительным к расположению текущего документа, или же, если докумен не сохранён, изображение с полным путём. Например:
+
+ ![](../../относительный/путь/к/файлу.png)
+
+ или если документ не сохранён:
+
+ ![](file:///полный/путь/к/файлу.png)
+
+- - - -
+
+Все права защищены © 2014-2017 [wereturtle](http://www.github.com/wereturtle)
diff -Nru ghostwriter-1.5.0+ds1/resources.qrc ghostwriter-1.6.0/resources.qrc
--- ghostwriter-1.5.0+ds1/resources.qrc 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/resources.qrc 2018-04-07 21:47:43.000000000 +0000
@@ -1,19 +1,30 @@
- resources/images/close-delete.svg
+ resources/images/close.svg
+ resources/images/close-hover.svg
+ resources/images/close-pressed.svg
resources/images/size-grip.svg
resources/images/unavailable.svg
- resources/images/view-fullscreen-dark-hover.svg
- resources/images/view-fullscreen-dark.svg
- resources/images/view-fullscreen-light-hover.svg
- resources/images/view-fullscreen-light.svg
- resources/images/view-restore-dark-hover.svg
- resources/images/view-restore-dark.svg
- resources/images/view-restore-light-hover.svg
- resources/images/view-restore-light.svg
+ resources/images/focus-dark.svg
+ resources/images/focus-light.svg
+ resources/images/fullscreen-dark.svg
+ resources/images/fullscreen-light.svg
+ resources/images/hemingway-dark.svg
+ resources/images/hemingway-light.svg
+ resources/images/hide-huds-dark.svg
+ resources/images/hide-huds-light.svg
+ resources/images/html-preview-dark.svg
+ resources/images/html-preview-light.svg
+ resources/images/copy-html-dark.svg
+ resources/images/copy-html-light.svg
+ resources/images/export-dark.svg
+ resources/images/export-light.svg
+ resources/images/configure-dark.svg
+ resources/images/configure-light.svg
resources/images/ghostwriter.svg
resources/github.css
resources/quickreferenceguide_en.html
resources/quickreferenceguide_ja.html
+ resources/quickreferenceguide_ru.html
diff -Nru ghostwriter-1.5.0+ds1/src/AppMain.cpp ghostwriter-1.6.0/src/AppMain.cpp
--- ghostwriter-1.5.0+ds1/src/AppMain.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/AppMain.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014-2016 wereturtle
+ * Copyright (C) 2014-2018 wereturtle
*
* 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
@@ -40,9 +40,32 @@
AppSettings* appSettings = AppSettings::getInstance();
QLocale::setDefault(appSettings->getLocale());
- // Translate application based on locale.
- QTranslator translator;
- bool ok = translator.load
+ QTranslator qtTranslator;
+ bool ok = qtTranslator.load("qt_" + appSettings->getLocale(),
+ QLibraryInfo::location(QLibraryInfo::TranslationsPath));
+
+ if (!ok)
+ {
+ qtTranslator.load("qt_" + appSettings->getLocale(),
+ appSettings->getTranslationsPath());
+ }
+
+ app.installTranslator(&qtTranslator);
+
+ QTranslator qtBaseTranslator;
+ ok = qtBaseTranslator.load("qtbase_" + appSettings->getLocale(),
+ QLibraryInfo::location(QLibraryInfo::TranslationsPath));
+
+ if (!ok)
+ {
+ qtBaseTranslator.load("qtbase_" + appSettings->getLocale(),
+ appSettings->getTranslationsPath());
+ }
+
+ app.installTranslator(&qtBaseTranslator);
+
+ QTranslator appTranslator;
+ ok = appTranslator.load
(
QString("ghostwriter_") + appSettings->getLocale(),
appSettings->getTranslationsPath()
@@ -50,14 +73,14 @@
if (!ok)
{
- translator.load
+ appTranslator.load
(
"ghostwriter_en",
appSettings->getTranslationsPath()
);
}
- app.installTranslator(&translator);
+ app.installTranslator(&appTranslator);
QString filePath = QString();
diff -Nru ghostwriter-1.5.0+ds1/src/AppSettings.cpp ghostwriter-1.6.0/src/AppSettings.cpp
--- ghostwriter-1.5.0+ds1/src/AppSettings.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/AppSettings.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -28,6 +28,7 @@
#include
#include "AppSettings.h"
+#include "ExporterFactory.h"
#include "dictionary_manager.h"
#define GW_AUTOSAVE_KEY "Save/autoSave"
@@ -44,8 +45,11 @@
#define GW_HIDE_MENU_BAR_IN_FULL_SCREEN_KEY "Style/hideMenuBarInFullScreenEnabled"
#define GW_THEME_KEY "Style/theme"
#define GW_EDITOR_WIDTH_KEY "Style/editorWidth"
+#define GW_INTERFACE_STYLE_KEY "Style/interfaceStyle"
#define GW_BLOCKQUOTE_STYLE_KEY "Style/blockquoteStyle"
#define GW_DISPLAY_TIME_IN_FULL_SCREEN_KEY "Style/displayTimeInFullScreen"
+#define GW_HIDE_HUDS_WHEN_TYPING_KEY "Style/hideHudsWhenTypingEnabled"
+#define GW_HIDE_HUDS_ON_PREVIEW_KEY "Style/hideHudsOnPreviewEnabled"
#define GW_TAB_WIDTH_KEY "Tabs/tabWidth"
#define GW_SPACES_FOR_TABS_KEY "Tabs/insertSpacesForTabs"
#define GW_DICTIONARY_KEY "Spelling/locale"
@@ -55,6 +59,10 @@
#define GW_HUD_ROW_COLORS_KEY "HUD/alternateRowColors"
#define GW_DESKTOP_COMPOSITING_KEY "HUD/desktopCompositingEnabled"
#define GW_HUD_OPACITY_KEY "HUD/opacity"
+#define GW_HTML_PREVIEW_OPEN_KEY "Preview/htmlPreviewOpen"
+#define GW_CUSTOM_STYLE_SHEETS_KEY "Preview/customStyleSheets"
+#define GW_LAST_USED_STYLE_SHEET_KEY "Preview/lastUsedStyleSheet"
+#define GW_LAST_USED_EXPORTER_KEY "Preview/lastUsedExporter"
AppSettings* AppSettings::instance = NULL;
@@ -92,18 +100,26 @@
appSettings.setValue(GW_HIDE_MENU_BAR_IN_FULL_SCREEN_KEY, QVariant(hideMenuBarInFullScreenEnabled));
appSettings.setValue(GW_REMEMBER_FILE_HISTORY_KEY, QVariant(fileHistoryEnabled));
appSettings.setValue(GW_DISPLAY_TIME_IN_FULL_SCREEN_KEY, QVariant(displayTimeInFullScreenEnabled));
+ appSettings.setValue(GW_HIDE_HUDS_WHEN_TYPING_KEY, QVariant(hideHudsWhenTypingEnabled));
+ appSettings.setValue(GW_HIDE_HUDS_ON_PREVIEW_KEY, QVariant(hideHudsOnPreviewEnabled));
appSettings.setValue(GW_THEME_KEY, QVariant(themeName));
appSettings.setValue(GW_DICTIONARY_KEY, QVariant(dictionaryLanguage));
appSettings.setValue(GW_LOCALE_KEY, QVariant(locale));
appSettings.setValue(GW_LIVE_SPELL_CHECK_KEY, QVariant(liveSpellCheckEnabled));
appSettings.setValue(GW_EDITOR_WIDTH_KEY, QVariant(editorWidth));
+ appSettings.setValue(GW_INTERFACE_STYLE_KEY, QVariant(interfaceStyle));
appSettings.setValue(GW_BLOCKQUOTE_STYLE_KEY, QVariant(blockquoteStyle));
appSettings.setValue(GW_HUD_BUTTON_LAYOUT_KEY, QVariant(hudButtonLayout));
appSettings.setValue(GW_HUD_ROW_COLORS_KEY, QVariant(alternateHudRowColorsEnabled));
appSettings.setValue(GW_DESKTOP_COMPOSITING_KEY, QVariant(desktopCompositingEnabled));
appSettings.setValue(GW_HUD_OPACITY_KEY, QVariant(hudOpacity));
+ appSettings.setValue(GW_HTML_PREVIEW_OPEN_KEY, QVariant(htmlPreviewVisible));
+ appSettings.setValue(GW_CUSTOM_STYLE_SHEETS_KEY, QVariant(customCssFiles));
+ appSettings.setValue(GW_LAST_USED_STYLE_SHEET_KEY, QVariant(currentCssFile));
+ appSettings.setValue(GW_LAST_USED_EXPORTER_KEY, QVariant(currentHtmlExporter->getName()));
+
appSettings.sync();
}
@@ -269,7 +285,7 @@
void AppSettings::setFocusMode(FocusMode focusMode)
{
- if ((focusMode >= FocusModeDisabled) && (focusMode <= FocusModeParagraph))
+ if ((focusMode >= FocusModeFirst) && (focusMode <= FocusModeLast))
{
this->focusMode = focusMode;
emit focusModeChanged(focusMode);
@@ -309,6 +325,28 @@
emit displayTimeInFullScreenChanged(enabled);
}
+bool AppSettings::getHideHudsWhenTypingEnabled() const
+{
+ return hideHudsWhenTypingEnabled;
+}
+
+void AppSettings::setHideHudsWhenTypingEnabled(bool enabled)
+{
+ hideHudsWhenTypingEnabled = enabled;
+ emit hideHudsWhenTypingChanged(enabled);
+}
+
+bool AppSettings::getHideHudsOnPreviewEnabled() const
+{
+ return hideHudsOnPreviewEnabled;
+}
+
+void AppSettings::setHideHudsOnPreviewEnabled(bool enabled)
+{
+ hideHudsOnPreviewEnabled = enabled;
+ emit hideHudsOnPreviewChanged(enabled);
+}
+
QString AppSettings::getThemeName() const
{
return themeName;
@@ -358,13 +396,24 @@
void AppSettings::setEditorWidth(EditorWidth editorWidth)
{
- if ((editorWidth >= EditorWidthNarrow) && (editorWidth <= EditorWidthFull))
+ if ((editorWidth >= EditorWidthFirst) && (editorWidth <= EditorWidthLast))
{
this->editorWidth = editorWidth;
emit editorWidthChanged(editorWidth);
}
}
+InterfaceStyle AppSettings::getInterfaceStyle() const
+{
+ return interfaceStyle;
+}
+
+void AppSettings::setInterfaceStyle(InterfaceStyle style)
+{
+ interfaceStyle = style;
+ emit interfaceStyleChanged(style);
+}
+
BlockquoteStyle AppSettings::getBlockquoteStyle() const
{
return blockquoteStyle;
@@ -372,7 +421,7 @@
void AppSettings::setBlockquoteStyle(BlockquoteStyle style)
{
- if ((style >= BlockquoteStylePlain) && (style <= BlockquoteStyleFancy))
+ if ((style >= BlockquoteStyleFirst) && (style <= BlockquoteStyleLast))
{
blockquoteStyle = style;
emit blockquoteStyleChanged(style);
@@ -434,6 +483,55 @@
emit highlightLineBreaksChanged(enabled);
}
+bool AppSettings::getHtmlPreviewVisible() const
+{
+ return htmlPreviewVisible;
+}
+
+void AppSettings::setHtmlPreviewVisible(bool visible)
+{
+ htmlPreviewVisible = visible;
+}
+
+QStringList AppSettings::getCustomCssFiles() const
+{
+ return customCssFiles;
+}
+
+void AppSettings::setCustomCssFiles(const QStringList& cssFilePathList)
+{
+ customCssFiles = cssFilePathList;
+ emit customCssFilesChanged(customCssFiles);
+}
+
+QString AppSettings::getCurrentCssFile() const
+{
+ return currentCssFile;
+}
+
+void AppSettings::setCurrentCssFile(const QString& filePath)
+{
+ bool emitChangeSignal = (filePath != currentCssFile);
+ currentCssFile = filePath;
+
+ // Only emit the property changed signal if it actually changed.
+ if (emitChangeSignal)
+ {
+ emit currentCssFileChanged(filePath);
+ }
+}
+
+Exporter *AppSettings::getCurrentHtmlExporter() const
+{
+ return currentHtmlExporter;
+}
+
+void AppSettings::setCurrentHtmlExporter(Exporter* exporter)
+{
+ currentHtmlExporter = exporter;
+ emit currentHtmlExporterChanged(exporter);
+}
+
AppSettings::AppSettings()
{
QCoreApplication::setOrganizationName("ghostwriter");
@@ -627,7 +725,7 @@
bulletPointCyclingEnabled = appSettings.value(GW_BULLET_CYCLING_KEY, QVariant(true)).toBool();
focusMode = (FocusMode) appSettings.value(GW_FOCUS_MODE_KEY, QVariant(FocusModeSentence)).toInt();
- if ((focusMode < FocusModeDisabled) || (focusMode > FocusModeParagraph))
+ if ((focusMode < FocusModeFirst) || (focusMode > FocusModeLast))
{
focusMode = FocusModeSentence;
}
@@ -635,6 +733,8 @@
hideMenuBarInFullScreenEnabled = appSettings.value(GW_HIDE_MENU_BAR_IN_FULL_SCREEN_KEY, QVariant(true)).toBool();
fileHistoryEnabled = appSettings.value(GW_REMEMBER_FILE_HISTORY_KEY, QVariant(true)).toBool();
displayTimeInFullScreenEnabled = appSettings.value(GW_DISPLAY_TIME_IN_FULL_SCREEN_KEY, QVariant(true)).toBool();
+ hideHudsWhenTypingEnabled = appSettings.value(GW_HIDE_HUDS_WHEN_TYPING_KEY, QVariant(false)).toBool();
+ hideHudsOnPreviewEnabled = appSettings.value(GW_HIDE_HUDS_ON_PREVIEW_KEY, QVariant(false)).toBool();
themeName = appSettings.value(GW_THEME_KEY, QVariant("Classic Light")).toString();
dictionaryLanguage = appSettings.value(GW_DICTIONARY_KEY, QLocale().name()).toString();
@@ -650,13 +750,23 @@
locale = appSettings.value(GW_LOCALE_KEY, QLocale().name()).toString();
liveSpellCheckEnabled = appSettings.value(GW_LIVE_SPELL_CHECK_KEY, QVariant(true)).toBool();
editorWidth = (EditorWidth) appSettings.value(GW_EDITOR_WIDTH_KEY, QVariant(EditorWidthMedium)).toInt();
+ interfaceStyle = (InterfaceStyle) appSettings.value(GW_INTERFACE_STYLE_KEY, QVariant(InterfaceStyleRounded)).toInt();
blockquoteStyle = (BlockquoteStyle) appSettings.value(GW_BLOCKQUOTE_STYLE_KEY, QVariant(BlockquoteStylePlain)).toInt();
- if ((editorWidth < EditorWidthNarrow) || (editorWidth > EditorWidthFull))
+ if ((editorWidth < EditorWidthFirst) || (editorWidth > EditorWidthLast))
{
editorWidth = EditorWidthMedium;
}
+ if ((interfaceStyle < InterfaceStyleFirst) || (interfaceStyle > InterfaceStyleLast))
+ {
+ interfaceStyle = InterfaceStyleRounded;
+ }
+
+ if ((blockquoteStyle < BlockquoteStyleFirst) || (blockquoteStyle > BlockquoteStyleLast))
+ {
+ blockquoteStyle = BlockquoteStylePlain;
+ }
#ifdef Q_OS_MAC
HudWindowButtonLayout defaultHudButtonLayout = HudWindowButtonLayoutLeft;
@@ -668,4 +778,15 @@
alternateHudRowColorsEnabled = appSettings.value(GW_HUD_ROW_COLORS_KEY, QVariant(false)).toBool();
desktopCompositingEnabled = appSettings.value(GW_DESKTOP_COMPOSITING_KEY, QVariant(true)).toBool();
hudOpacity = appSettings.value(GW_HUD_OPACITY_KEY, QVariant(200)).toInt();
+ htmlPreviewVisible = appSettings.value(GW_HTML_PREVIEW_OPEN_KEY, QVariant(false)).toBool();
+ customCssFiles = appSettings.value(GW_CUSTOM_STYLE_SHEETS_KEY, QStringList()).toStringList();
+ currentCssFile = appSettings.value(GW_LAST_USED_STYLE_SHEET_KEY).toString();
+
+ QString exporterName = appSettings.value(GW_LAST_USED_EXPORTER_KEY).toString();
+ currentHtmlExporter = ExporterFactory::getInstance()->getExporterByName(exporterName);
+
+ if (NULL == currentHtmlExporter)
+ {
+ currentHtmlExporter = ExporterFactory::getInstance()->getHtmlExporters().first();
+ }
}
diff -Nru ghostwriter-1.5.0+ds1/src/AppSettings.h ghostwriter-1.6.0/src/AppSettings.h
--- ghostwriter-1.5.0+ds1/src/AppSettings.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/AppSettings.h 2018-04-07 21:47:43.000000000 +0000
@@ -22,11 +22,13 @@
#include
#include
+#include
#include
#include "MarkdownEditorTypes.h"
#include "MarkdownStyles.h"
#include "HudWindowTypes.h"
+#include "Exporter.h"
/**
* Loads and stores application settings via QSettings, particularly for
@@ -107,6 +109,14 @@
Q_SLOT void setDisplayTimeInFullScreenEnabled(bool enabled);
Q_SIGNAL void displayTimeInFullScreenChanged(bool enabled);
+ bool getHideHudsWhenTypingEnabled() const;
+ Q_SLOT void setHideHudsWhenTypingEnabled(bool enabled);
+ Q_SIGNAL void hideHudsWhenTypingChanged(bool enabled);
+
+ bool getHideHudsOnPreviewEnabled() const;
+ Q_SLOT void setHideHudsOnPreviewEnabled(bool enabled);
+ Q_SIGNAL void hideHudsOnPreviewChanged(bool enabled);
+
QString getThemeName() const;
void setThemeName(const QString& name);
@@ -125,6 +135,10 @@
void setEditorWidth(EditorWidth editorWidth);
Q_SIGNAL void editorWidthChanged(EditorWidth editorWidth);
+ InterfaceStyle getInterfaceStyle() const;
+ void setInterfaceStyle(InterfaceStyle style);
+ Q_SIGNAL void interfaceStyleChanged(InterfaceStyle style);
+
BlockquoteStyle getBlockquoteStyle() const;
void setBlockquoteStyle(BlockquoteStyle style);
Q_SIGNAL void blockquoteStyleChanged(BlockquoteStyle style);
@@ -149,6 +163,21 @@
Q_SLOT void setHighlightLineBreaks(bool enabled);
Q_SIGNAL void highlightLineBreaksChanged(bool enabled);
+ bool getHtmlPreviewVisible() const;
+ void setHtmlPreviewVisible(bool visible);
+
+ QStringList getCustomCssFiles() const;
+ void setCustomCssFiles(const QStringList& cssFilePathList);
+ Q_SIGNAL void customCssFilesChanged(const QStringList& cssFilePathList);
+
+ QString getCurrentCssFile() const;
+ Q_SLOT void setCurrentCssFile(const QString& filePath);
+ Q_SIGNAL void currentCssFileChanged(const QString& filePath);
+
+ Exporter* getCurrentHtmlExporter() const;
+ Q_SLOT void setCurrentHtmlExporter(Exporter* exporter);
+ Q_SIGNAL void currentHtmlExporterChanged(Exporter* exporter);
+
private:
AppSettings();
@@ -172,17 +201,24 @@
bool hideMenuBarInFullScreenEnabled;
bool fileHistoryEnabled;
bool displayTimeInFullScreenEnabled;
+ bool hideHudsWhenTypingEnabled;
+ bool hideHudsOnPreviewEnabled;
QString themeName;
QString dictionaryLanguage;
QString locale;
bool liveSpellCheckEnabled;
EditorWidth editorWidth;
+ InterfaceStyle interfaceStyle;
BlockquoteStyle blockquoteStyle;
HudWindowButtonLayout hudButtonLayout;
bool alternateHudRowColorsEnabled;
bool desktopCompositingEnabled;
int hudOpacity;
bool highlightLineBreaks;
+ bool htmlPreviewVisible;
+ QStringList customCssFiles;
+ QString currentCssFile;
+ Exporter* currentHtmlExporter;
};
#endif // APPSETTINGS_H
diff -Nru ghostwriter-1.5.0+ds1/src/ColorHelper.cpp ghostwriter-1.6.0/src/ColorHelper.cpp
--- ghostwriter-1.5.0+ds1/src/ColorHelper.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/ColorHelper.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -137,5 +137,70 @@
//
double ColorHelper::getLuminance(const QColor& color)
{
- return (0.30 * color.redF()) + (0.59 * color.greenF()) + (0.11 * color.blueF());
+ QColor c = color;
+
+ // Ensure color is non-zero.
+ if (c == QColor(Qt::black))
+ {
+ c.setRgb(1, 1, 1);
+ }
+
+ return (0.30 * c.redF()) + (0.59 * c.greenF()) + (0.11 * c.blueF());
+}
+
+QColor ColorHelper::lightenToMatchContrastRatio
+(
+ const QColor& foreground,
+ const QColor& background,
+ double contrastRatio
+)
+{
+ double fgBrightness = getLuminance(foreground);
+ double bgBrightness = getLuminance(background);
+
+ // If the background color is brighter than the foreground color...
+ if (bgBrightness > fgBrightness)
+ {
+ double actualContrastRatio = bgBrightness / fgBrightness;
+ double colorFactor = contrastRatio / actualContrastRatio;
+
+ QColor result = foreground;
+
+ // Ensure color is non-zero.
+ if (result == QColor(Qt::black))
+ {
+ result.setRgb(1, 1, 1);
+ }
+
+ qreal r = result.redF() / colorFactor;
+ qreal g = result.greenF() / colorFactor;
+ qreal b = result.blueF() / colorFactor;
+
+ if (r > 1.0)
+ {
+ r = 1.0;
+ }
+
+ if (g > 1.0)
+ {
+ g = 1.0;
+ }
+
+ if (b > 1.0)
+ {
+ b = 1.0;
+ }
+
+ result.setRgbF(r, g, b);
+
+ return result;
+ }
+ else
+ {
+ // This algorithm cannot change the foreground color when it is
+ // lighter than the background color, so return the original
+ // foreground color.
+ //
+ return foreground;
+ }
}
diff -Nru ghostwriter-1.5.0+ds1/src/ColorHelper.h ghostwriter-1.6.0/src/ColorHelper.h
--- ghostwriter-1.5.0+ds1/src/ColorHelper.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/ColorHelper.h 2018-04-07 21:47:43.000000000 +0000
@@ -79,6 +79,25 @@
*/
static double getLuminance(const QColor& color);
+ /**
+ * Returns a new color based on the given foreground color,
+ * such that the new color is lightened to achieve the desired
+ * contrast ratio against the given background color.
+ *
+ * Note:
+ *
+ * This method assumes that the foreground color is darker
+ * than the background color. Passing in a foreground color
+ * that is lighter than the background color results in
+ * the original foreground color being returned.
+ */
+ static QColor lightenToMatchContrastRatio
+ (
+ const QColor& foreground,
+ const QColor& background,
+ double contrastRatio
+ );
+
private:
/**
* Helper method for applying alpha value to a single color channel.
diff -Nru ghostwriter-1.5.0+ds1/src/CommandLineExporter.cpp ghostwriter-1.6.0/src/CommandLineExporter.cpp
--- ghostwriter-1.5.0+ds1/src/CommandLineExporter.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/CommandLineExporter.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014, 2015 wereturtle
+ * Copyright (C) 2014-2017 wereturtle
*
* 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
@@ -190,6 +190,17 @@
smartTypographyOffArgument
);
}
+ else
+ {
+ // Replace the smart typography argument with an empty string
+ // in case the above two cases are not applicable.
+ //
+ expandedCommand.replace
+ (
+ SMART_TYPOGRAPHY_ARG,
+ ""
+ );
+ }
if (!inputFilePath.isNull() && !inputFilePath.isEmpty())
{
diff -Nru ghostwriter-1.5.0+ds1/src/DocumentManager.cpp ghostwriter-1.6.0/src/DocumentManager.cpp
--- ghostwriter-1.5.0+ds1/src/DocumentManager.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/DocumentManager.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -56,14 +56,16 @@
DocumentManager::DocumentManager
(
MarkdownEditor* editor,
+ Outline* outline,
DocumentStatistics* documentStats,
SessionStatistics* sessionStats,
QWidget* parent
)
: QObject(parent), parentWidget(parent), editor(editor),
- documentStats(documentStats), sessionStats(sessionStats),
- fileHistoryEnabled(true), createBackupOnSave(true),
- saveInProgress(false)
+ outline(outline), documentStats(documentStats),
+ sessionStats(sessionStats), fileHistoryEnabled(true),
+ createBackupOnSave(true), saveInProgress(false),
+ autoSaveEnabled(false), documentModifiedNotifVisible(false)
{
saveFutureWatcher = new QFutureWatcher(this);
@@ -499,9 +501,12 @@
if
(
!saveInProgress &&
- (fileInfo.lastModified() > document->getTimestamp())
+ (fileInfo.lastModified() > document->getTimestamp()) &&
+ !documentModifiedNotifVisible
)
{
+ documentModifiedNotifVisible = true;
+
int response =
MessageBoxHelper::question
(
@@ -512,6 +517,8 @@
QMessageBox::Yes
);
+ documentModifiedNotifVisible = false;
+
if (QMessageBox::Yes == response)
{
reload();
@@ -533,6 +540,10 @@
printerTheme.getBackgroundColor(),
printerTheme.getMarkupColor(),
printerTheme.getLinkColor(),
+ printerTheme.getHeadingColor(),
+ printerTheme.getEmphasisColor(),
+ printerTheme.getBlockquoteColor(),
+ printerTheme.getCodeColor(),
printerTheme.getSpellingErrorColor()
);
e.setSpellCheckEnabled(false);
@@ -606,6 +617,7 @@
return false;
}
+ outline->clear();
document->clearUndoRedoStacks();
document->setUndoRedoEnabled(false);
document->setPlainText("");
diff -Nru ghostwriter-1.5.0+ds1/src/DocumentManager.h ghostwriter-1.6.0/src/DocumentManager.h
--- ghostwriter-1.5.0+ds1/src/DocumentManager.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/DocumentManager.h 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014-2016 wereturtle
+ * Copyright (C) 2014-2017 wereturtle
*
* 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
@@ -26,6 +26,7 @@
#include
#include "MarkdownEditor.h"
+#include "Outline.h"
#include "DocumentStatistics.h"
#include "SessionStatistics.h"
#include "TextDocument.h"
@@ -50,6 +51,7 @@
DocumentManager
(
MarkdownEditor* editor,
+ Outline* outline,
DocumentStatistics* documentStats,
SessionStatistics* sessionStats,
QWidget* parent = 0
@@ -229,6 +231,7 @@
QWidget* parentWidget;
TextDocument* document;
MarkdownEditor* editor;
+ Outline* outline;
DocumentStatistics* documentStats;
SessionStatistics* sessionStats;
QFutureWatcher* saveFutureWatcher;
@@ -259,6 +262,13 @@
bool autoSaveEnabled;
/*
+ * Boolean flag used to track if the prompt for the file having been
+ * externally modified is already displayed and should not be displayed
+ * again.
+ */
+ bool documentModifiedNotifVisible;
+
+ /*
* Begins asynchronous save operation. Called by save() and saveAs().
*/
void saveFile();
diff -Nru ghostwriter-1.5.0+ds1/src/EffectsMenuBar.cpp ghostwriter-1.6.0/src/EffectsMenuBar.cpp
--- ghostwriter-1.5.0+ds1/src/EffectsMenuBar.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/EffectsMenuBar.cpp 1970-01-01 00:00:00.000000000 +0000
@@ -1,161 +0,0 @@
-/***********************************************************************
- *
- * Copyright (C) 2016 wereturtle
- *
- * 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 3 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 .
- *
- ***********************************************************************/
-
-#include "EffectsMenuBar.h"
-
-EffectsMenuBar::EffectsMenuBar(QWidget *parent) :
- QMenuBar(parent),
- dropShadowEffect(NULL),
- opacityEffect(NULL),
- menuIsVisible(true),
- dropShadowEnabled(false),
- autoHideEnabled(false),
- mouseIsHovering(false),
- menuActivated(false)
-{
-
-}
-
-EffectsMenuBar::~EffectsMenuBar()
-{
-
-}
-
-void EffectsMenuBar::setDropShadow
-(
- const QColor& color,
- qreal blurRadius,
- qreal xOffset,
- qreal yOffset
-)
-{
- dropShadowEnabled = true;
- dropShadowColor = color;
- dropShadowBlurRadius = blurRadius;
- dropShadowXOffset = xOffset;
- dropShadowYOffset = yOffset;
-
- if (menuIsVisible)
- {
- dropShadowEffect = new QGraphicsDropShadowEffect();
- dropShadowEffect->setColor(color);
- dropShadowEffect->setBlurRadius(blurRadius);
- dropShadowEffect->setXOffset(xOffset);
- dropShadowEffect->setYOffset(yOffset);
- this->setGraphicsEffect(dropShadowEffect);
- }
-}
-
-void EffectsMenuBar::removeDropShadow()
-{
- if ((NULL != dropShadowEffect) && dropShadowEnabled && menuIsVisible)
- {
- this->setGraphicsEffect(NULL);
- }
-
- dropShadowEffect = NULL;
- dropShadowEnabled = false;
-}
-
-void EffectsMenuBar::setAutoHideEnabled(bool enabled)
-{
- autoHideEnabled = enabled;
-
- if (autoHideEnabled)
- {
- hideBar();
- }
- else
- {
- showBar();
- }
-}
-
-bool EffectsMenuBar::isVisible() const
-{
- return menuIsVisible;
-}
-
-void EffectsMenuBar::onAboutToShow()
-{
- menuActivated = true;
- showBar();
-}
-
-void EffectsMenuBar::onAboutToHide()
-{
- menuActivated = false;
- hideBar();
-}
-
-void EffectsMenuBar::showBar()
-{
- if (!menuIsVisible)
- {
- this->setGraphicsEffect(NULL);
- opacityEffect = NULL;
- this->menuIsVisible = true;
-
- if (dropShadowEnabled)
- {
- dropShadowEffect = new QGraphicsDropShadowEffect();
- dropShadowEffect->setColor(dropShadowColor);
- dropShadowEffect->setBlurRadius(dropShadowBlurRadius);
- dropShadowEffect->setXOffset(dropShadowXOffset);
- dropShadowEffect->setYOffset(dropShadowYOffset);
- this->setGraphicsEffect(dropShadowEffect);
- }
- }
-}
-
-void EffectsMenuBar::hideBar()
-{
- if (autoHideEnabled && !mouseIsHovering)
- {
- if (dropShadowEnabled)
- {
- dropShadowEffect = NULL;
- }
-
- opacityEffect = new QGraphicsOpacityEffect();
- opacityEffect->setOpacity(0.0);
- opacityEffect->setEnabled(true);
- this->setGraphicsEffect(opacityEffect);
- this->menuIsVisible = false;
- }
-}
-
-void EffectsMenuBar::enterEvent(QEvent* event)
-{
- mouseIsHovering = true;
- showBar();
- QMenuBar::enterEvent(event);
-}
-
-void EffectsMenuBar::leaveEvent(QEvent* event)
-{
- mouseIsHovering = false;
-
- if (!menuActivated)
- {
- hideBar();
- }
-
- QMenuBar::leaveEvent(event);
-}
diff -Nru ghostwriter-1.5.0+ds1/src/EffectsMenuBar.h ghostwriter-1.6.0/src/EffectsMenuBar.h
--- ghostwriter-1.5.0+ds1/src/EffectsMenuBar.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/EffectsMenuBar.h 1970-01-01 00:00:00.000000000 +0000
@@ -1,129 +0,0 @@
-/***********************************************************************
- *
- * Copyright (C) 2016 wereturtle
- *
- * 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 3 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 .
- *
- ***********************************************************************/
-
-#ifndef EFFECTSMENUBAR_H
-#define EFFECTSMENUBAR_H
-
-#include
-#include
-#include
-#include
-
-/**
- * Menu bar that can do drop shadows on its items or be hidden/shown
- * (for use in full screen mode). Drop shadows are included in this
- * class because the autohide capability uses a QGraphicsEffect.
- * Since drop shadows also use a QGraphicsEffect, and since only one
- * QGraphicsEffect can be used at a time on a widget, this class
- * facilitates easy switching between the two effects as needed.
- */
-class EffectsMenuBar : public QMenuBar
-{
- Q_OBJECT
-
- public:
- /**
- * Constructor.
- */
- explicit EffectsMenuBar(QWidget* parent = 0);
-
- /**
- * Destructor.
- */
- ~EffectsMenuBar();
-
- /**
- * Adds a QGraphicsDropShadowEffect drop shadow to the menu bar using
- * the specified color, blur radius, and x and y offsets.
- */
- void setDropShadow
- (
- const QColor& color,
- qreal blurRadius,
- qreal xOffset,
- qreal yOffset
- );
-
- /**
- * Removes any drop shadow previously applied to the menu bar.
- */
- void removeDropShadow();
-
- /**
- * Sets whether auto hiding the menu bar is enabled.
- */
- void setAutoHideEnabled(bool enabled);
-
- /**
- * Returns true of the menu bar is currently visible.
- */
- bool isVisible() const;
-
- /*
- * Shows the menu bar.
- */
- void showBar();
-
- /*
- * Hides the menu bar. (Note that this is instead of calling QWidget's hide()
- * method, since we want shortcut keys for the actions to still be
- * available.)
- */
- void hideBar();
-
- public slots:
- /**
- * Connect this method to QMenu's aboutToShow() signal when adding
- * the menu to this menu bar.
- */
- void onAboutToShow();
-
- /**
- * Connect this method to QMenu's aboutToHide() signal when adding
- * the menu to this menu bar.
- */
- void onAboutToHide();
-
- private:
- QColor dropShadowColor;
- qreal dropShadowBlurRadius;
- qreal dropShadowXOffset;
- qreal dropShadowYOffset;
- QGraphicsDropShadowEffect* dropShadowEffect;
- QGraphicsOpacityEffect* opacityEffect;
- bool menuIsVisible;
- bool dropShadowEnabled;
- bool autoHideEnabled;
- bool mouseIsHovering;
- bool menuActivated;
-
- /*
- * Detects when the mouse hovers over the menu bar, so that we can
- * show it again.
- */
- void enterEvent(QEvent* event);
-
- /*
- * Detects when the mouse leaves the menu bar, so that we can
- * hide it again.
- */
- void leaveEvent(QEvent* event);
-};
-
-#endif // EFFECTSMENUBAR_H
diff -Nru ghostwriter-1.5.0+ds1/src/ExporterFactory.cpp ghostwriter-1.6.0/src/ExporterFactory.cpp
--- ghostwriter-1.5.0+ds1/src/ExporterFactory.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/ExporterFactory.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014-2017 wereturtle
+ * Copyright (C) 2014-2018 wereturtle
*
* 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
@@ -18,8 +18,8 @@
***********************************************************************/
#include
-#include
-#include
+#include
+#include
#include "ExporterFactory.h"
#include "SundownExporter.h"
@@ -54,6 +54,35 @@
return htmlExporters;
}
+Exporter* ExporterFactory::getExporterByName(const QString& name)
+{
+ // Search in HTML exporter list first.
+ foreach (Exporter* exporter, htmlExporters)
+ {
+ if (exporter->getName() == name)
+ {
+ // Found a match!
+ return exporter;
+ }
+ }
+
+ // If HTML exporter list does not contain an exporter
+ // with the desired name, search in the file exporter
+ // list next.
+ //
+ foreach (Exporter* exporter, fileExporters)
+ {
+ if (exporter->getName() == name)
+ {
+ // Found a match!
+ return exporter;
+ }
+ }
+
+ // No match found.
+ return NULL;
+}
+
ExporterFactory::ExporterFactory()
{
CommandLineExporter* exporter = NULL;
@@ -61,6 +90,7 @@
bool mmdIsAvailable = isCommandAvailable("multimarkdown --version");
bool discountIsAvailable = isCommandAvailable("markdown -V");
bool cmarkIsAvailable = isCommandAvailable("cmark --version");
+ bool cmarkGfmIsAvailable = isCommandAvailable("cmark-gfm --version");
SundownExporter* sundownExporter = new SundownExporter();
fileExporters.append(sundownExporter);
@@ -68,41 +98,60 @@
if (pandocIsAvailable)
{
- addPandocExporter("Pandoc", "markdown");
+ int majorVersion = 0;
+ int minorVersion = 0;
// Check whether version of Pandoc can read CommonMark.
QList versionNumber = extractVersionNumber("pandoc --version");
if (versionNumber.length() > 0)
{
- int majorVersion = versionNumber[0];
- int minorVersion = 0;
+ majorVersion = versionNumber[0];
if (versionNumber.length() > 1)
{
minorVersion = versionNumber[1];
}
+ }
- if
- (
- (majorVersion > 1) ||
- ((1 == majorVersion) && (minorVersion >= 14))
- )
- {
- addPandocExporter("Pandoc CommonMark", "commonmark");
- }
+ addPandocExporter("Pandoc", "markdown", majorVersion, minorVersion);
+
+ if
+ (
+ (majorVersion > 1) ||
+ ((1 == majorVersion) && (minorVersion >= 14))
+ )
+ {
+ addPandocExporter("Pandoc CommonMark", "commonmark", majorVersion, minorVersion);
}
- addPandocExporter("Pandoc GitHub-flavored Markdown", "markdown_github");
- addPandocExporter("Pandoc PHP Markdown Extra", "markdown_phpextra");
- addPandocExporter("Pandoc MultiMarkdown", "markdown_mmd");
- addPandocExporter("Pandoc Strict", "markdown_strict");
+ addPandocExporter("Pandoc GitHub-flavored Markdown", "markdown_github", majorVersion, minorVersion);
+ addPandocExporter("Pandoc PHP Markdown Extra", "markdown_phpextra", majorVersion, minorVersion);
+ addPandocExporter("Pandoc MultiMarkdown", "markdown_mmd", majorVersion, minorVersion);
+ addPandocExporter("Pandoc Strict", "markdown_strict", majorVersion, minorVersion);
}
if (mmdIsAvailable)
{
+ int majorVersion = 0;
+
+ QList versionNumber = extractVersionNumber("multimarkdown --version");
+
+ if (versionNumber.length() > 0)
+ {
+ majorVersion = versionNumber[0];
+ }
+
exporter = new CommandLineExporter("MultiMarkdown");
- exporter->setSmartTypographyOnArgument("--smart");
+
+ // Smart typography option (--smart) is only availabe in version 5 and below.
+ // The option is was removed and enabled by default in version 6 and above.
+ //
+ if (majorVersion < 6)
+ {
+ exporter->setSmartTypographyOnArgument("--smart");
+ }
+
exporter->setSmartTypographyOffArgument("--nosmart");
exporter->setHtmlRenderCommand(QString("multimarkdown %1 -t html")
.arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG));
@@ -190,6 +239,40 @@
fileExporters.append(exporter);
htmlExporters.append(exporter);
}
+
+ if (cmarkGfmIsAvailable)
+ {
+ QString commandStr = "cmark-gfm -t %1 %2"
+ " -e table -e strikethrough -e autolink -e tagfilter";
+ exporter = new CommandLineExporter("cmark-gfm");
+ exporter->setSmartTypographyOnArgument("--smart");
+ exporter->setHtmlRenderCommand(commandStr
+ .arg("html")
+ .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG));
+ exporter->addFileExportCommand
+ (
+ ExportFormat::HTML,
+ commandStr
+ .arg("html")
+ .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
+ );
+ exporter->addFileExportCommand
+ (
+ ExportFormat::LATEX,
+ commandStr
+ .arg("latex")
+ .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
+ );
+ exporter->addFileExportCommand
+ (
+ ExportFormat::MANPAGE,
+ commandStr
+ .arg("man")
+ .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
+ );
+ fileExporters.append(exporter);
+ htmlExporters.append(exporter);
+ }
}
QList ExporterFactory::extractVersionNumber(const QString& command) const
@@ -209,12 +292,13 @@
}
QString versionStr = QString::fromUtf8(process.readAllStandardOutput().data());
- QRegExp versionRegex("\\d+(\\.\\d+)*");
- int pos = versionRegex.indexIn(versionStr);
+ QRegularExpression versionRegex("\\d+(\\.\\d+)*");
+ QRegularExpressionMatch match;
+ int pos = versionStr.indexOf(versionRegex, 0, &match);
- if (pos >= 0)
+ if ((pos >= 0) && match.hasMatch())
{
- versionStr = versionStr.mid(pos, versionRegex.matchedLength());
+ versionStr = match.captured();
}
QStringList numbers = versionStr.split('.', QString::SkipEmptyParts);
@@ -247,125 +331,115 @@
void ExporterFactory::addPandocExporter
(
const QString& name,
- const QString& inputFormat
+ const QString& inputFormat,
+ int majorVersion,
+ int minorVersion
)
{
+ Q_UNUSED(minorVersion)
+
CommandLineExporter* exporter = new CommandLineExporter(name);
- exporter->setSmartTypographyOnArgument("--smart");
- exporter->setHtmlRenderCommand(QString("pandoc %1 -f %2 -t html")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat));
+
+ if (majorVersion >= 2)
+ {
+ exporter->setSmartTypographyOnArgument("+smart");
+ exporter->setSmartTypographyOffArgument("-smart");
+ }
+ else
+ {
+ exporter->setSmartTypographyOnArgument(" --smart");
+ }
+
+ exporter->setHtmlRenderCommand
+ (
+ QString("pandoc -f ") +
+ inputFormat +
+ CommandLineExporter::SMART_TYPOGRAPHY_ARG +
+ " -t html"
+ );
+
+ QString standardExportStr =
+ QString("pandoc -f ") +
+ inputFormat +
+ CommandLineExporter::SMART_TYPOGRAPHY_ARG +
+ " -t %1 --standalone -o " +
+ CommandLineExporter::OUTPUT_FILE_PATH_VAR;
+
exporter->addFileExportCommand
(
ExportFormat::HTML,
- QString("pandoc %1 -f %2 -t html --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("html")
);
exporter->addFileExportCommand
(
ExportFormat::HTML5,
- QString("pandoc %1 -f %2 -t html5 --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("html5")
);
exporter->addFileExportCommand
(
ExportFormat::ODT,
- QString("pandoc %1 -f %2 -t odt --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("odt")
);
exporter->addFileExportCommand
(
ExportFormat::ODF,
- QString("pandoc %1 -f %2 -t opendocument --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("opendocument")
);
exporter->addFileExportCommand
(
ExportFormat::RTF,
- QString("pandoc %1 -f %2 -t rtf --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("rtf")
);
exporter->addFileExportCommand
(
ExportFormat::DOCX,
- QString("pandoc %1 -f %2 -t docx --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("docx")
);
exporter->addFileExportCommand
(
ExportFormat::PDF_LATEX,
- QString("pandoc %1 -f %2 -t latex -Vlinkcolor=blue -Vcitecolor=blue -Vurlcolor=blue -Vtoccolor=blue -Vmargin-left=1in -Vmargin-right=1in -Vmargin-top=1in -Vmargin-bottom=1in --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("latex") +
+ " -Vlinkcolor=blue -Vcitecolor=blue -Vurlcolor=blue -Vtoccolor=blue -Vmargin-left=1in -Vmargin-right=1in -Vmargin-top=1in -Vmargin-bottom=1in"
);
exporter->addFileExportCommand
(
ExportFormat::PDF_CONTEXT,
- QString("pandoc %1 -f %2 -t context --variable pagenumbering:location=footer --variable layout:header=0mm --variable layout:top=1in --variable layout:bottom=1in --variable layout:leftmargin=1in --variable layout:rightmargin=1in -Vlinkcolor=blue --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("context") +
+ " --variable pagenumbering:location=footer --variable layout:header=0mm --variable layout:top=1in --variable layout:bottom=1in --variable layout:leftmargin=1in --variable layout:rightmargin=1in -Vlinkcolor=blue"
);
exporter->addFileExportCommand
(
ExportFormat::PDF_WKHTML,
- QString("pandoc %1 -f %2 -t html5 -Vmargin-left=1in -Vmargin-right=1in -Vmargin-top=1in -Vmargin-bottom=1in --mathjax --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("html5") +
+ " -Vmargin-left=1in -Vmargin-right=1in -Vmargin-top=1in -Vmargin-bottom=1in --mathjax"
);
exporter->addFileExportCommand
(
ExportFormat::EPUBV2,
- QString("pandoc %1 -f %2 -t epub --standalone --toc --toc-depth 6 -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("epub") +
+ " --toc --toc-depth 6"
);
exporter->addFileExportCommand
(
ExportFormat::EPUBV3,
- QString("pandoc %1 -f %2 -t epub3 --standalone --toc --toc-depth 6 -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("epub3") +
+ " --toc --toc-depth 6"
);
exporter->addFileExportCommand
(
ExportFormat::FICTIONBOOK2,
- QString("pandoc %1 -f %2 -t fb2 --standalone --toc --toc-depth 6 -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("fb2") +
+ " --toc --toc-depth 6"
);
exporter->addFileExportCommand
(
ExportFormat::LATEX,
- QString("pandoc %1 -f %2 -t latex --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("latex")
);
exporter->addFileExportCommand
(
ExportFormat::GROFFMAN,
- QString("pandoc %1 -f %2 -t man --standalone -o %3")
- .arg(CommandLineExporter::SMART_TYPOGRAPHY_ARG)
- .arg(inputFormat)
- .arg(CommandLineExporter::OUTPUT_FILE_PATH_VAR)
+ standardExportStr.arg("man")
);
fileExporters.append(exporter);
htmlExporters.append(exporter);
diff -Nru ghostwriter-1.5.0+ds1/src/ExporterFactory.h ghostwriter-1.6.0/src/ExporterFactory.h
--- ghostwriter-1.5.0+ds1/src/ExporterFactory.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/ExporterFactory.h 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014, 2015 wereturtle
+ * Copyright (C) 2014-2017 wereturtle
*
* 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
@@ -51,6 +51,12 @@
*/
QList getHtmlExporters();
+ /**
+ * Returns the exporter with the given name, or NULL if one
+ * with that name does not exist.
+ */
+ Exporter* getExporterByName(const QString& name);
+
private:
static ExporterFactory* instance;
QList fileExporters;
@@ -92,7 +98,9 @@
void addPandocExporter
(
const QString& name,
- const QString& inputFormat
+ const QString& inputFormat,
+ int majorVersion,
+ int minorVersion
);
diff -Nru ghostwriter-1.5.0+ds1/src/HtmlPreview.cpp ghostwriter-1.6.0/src/HtmlPreview.cpp
--- ghostwriter-1.5.0+ds1/src/HtmlPreview.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/HtmlPreview.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014-2016 wereturtle
+ * Copyright (C) 2014-2018 wereturtle
*
* 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
@@ -18,52 +18,30 @@
***********************************************************************/
#include
-#include
#include
#include
#include
-#include
-#include
-#include
#include
#include
-#include
#include
#include
#include
-#include
#include
#include
-#include
#include
#include
#include "HtmlPreview.h"
#include "Exporter.h"
-#include "ExporterFactory.h"
-#include "ExportDialog.h"
-#include "MessageBoxHelper.h"
-#include "StyleSheetManagerDialog.h"
-
-#define GW_CUSTOM_STYLE_SHEETS_KEY "Preview/customStyleSheets"
-#define GW_LAST_USED_STYLE_SHEET_KEY "Preview/lastUsedStyleSheet"
-#define GW_LAST_USED_EXPORTER_KEY "Preview/lastUsedExporter"
HtmlPreview::HtmlPreview
(
TextDocument* document,
+ Exporter* exporter,
QWidget* parent
)
- : QMainWindow(parent), document(document), handlingStyleSheetChange(false)
+ : QMainWindow(parent), document(document), exporter(exporter)
{
- QSettings settings;
- QString currentCssFile =
- settings.value(GW_LAST_USED_STYLE_SHEET_KEY, QString()).toString();
- QString currentExporterName =
- settings.value(GW_LAST_USED_EXPORTER_KEY).toString();
- customCssFiles =
- settings.value(GW_CUSTOM_STYLE_SHEETS_KEY, QStringList()).toStringList();
-
htmlBrowser = new QWebView(this);
htmlBrowser->settings()->setDefaultTextEncoding("utf-8");
@@ -77,104 +55,12 @@
htmlBrowser->page()->action(QWebPage::OpenLink)->setVisible(false);
htmlBrowser->page()->action(QWebPage::OpenLinkInNewWindow)->setVisible(false);
connect(htmlBrowser, SIGNAL(linkClicked(QUrl)), this, SLOT(onLinkClicked(QUrl)));
- headingTagExp.setMinimal(true);
- headingTagExp.setPattern("[Hh][1-6]");
-
- this->statusBar()->setSizeGripEnabled(false);
- this->statusBar()->setStyleSheet("QStatusBar::item { border: 0 }");
-
- defaultStyleSheets.append(":/resources/github.css");
-
- QPushButton* copyHtmlButton = new QPushButton(tr("Copy HTML"));
- copyHtmlButton->setFocusPolicy(Qt::NoFocus);
- connect(copyHtmlButton, SIGNAL(clicked()), this, SLOT(copyHtml()));
- this->statusBar()->addPermanentWidget(copyHtmlButton);
-
- QPushButton* exportButton = new QPushButton(tr("Export"));
- exportButton->setFocusPolicy(Qt::NoFocus);
- connect(exportButton, SIGNAL(clicked()), this, SLOT(onExport()));
- this->statusBar()->addPermanentWidget(exportButton);
-
- QPushButton* printButton = new QPushButton(tr("Print"));
- printButton->setFocusPolicy(Qt::NoFocus);
- connect(printButton, SIGNAL(clicked()), this, SLOT(printPreview()));
- this->statusBar()->addPermanentWidget(printButton);
-
- previewerComboBox = new QComboBox(this);
-
- QList exporters = ExporterFactory::getInstance()->getHtmlExporters();
-
- if (exporters.isEmpty())
- {
- setHtml(QString("") +
- tr("No markdown (pandoc, multimarkdown, discount) processors are "
- "installed. Please install or add their installation locations "
- "to your system PATH environment variable.") + QString(" "));
- exporter = NULL;
- }
- else
- {
- int currentExporterIndex = 0;
-
- for (int i = 0; i < exporters.length(); i++)
- {
- Exporter* exporter = exporters.at(i);
- previewerComboBox->addItem(exporter->getName(), qVariantFromValue((void *) exporter));
-
- if (exporter->getName() == currentExporterName)
- {
- currentExporterIndex = i;
- }
- }
-
- exporter = exporters.at(currentExporterIndex);
- previewerComboBox->setCurrentIndex(currentExporterIndex);
- }
-
- this->statusBar()->addWidget(previewerComboBox);
- connect(previewerComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onPreviewerChanged(int)));
-
- styleSheetComboBox = new QComboBox(this);
- styleSheetComboBox->addItem(tr("Github (Default)"));
- styleSheetComboBox->setItemData(0, QVariant(defaultStyleSheets.at(0)));
-
- int customCssIndexStart = defaultStyleSheets.size();
-
- int cssIndex = 0;
- lastStyleSheetIndex = -1;
-
- for (int i = 0; i < customCssFiles.size(); i++)
- {
- QFileInfo fileInfo(customCssFiles.at(i));
-
- if (fileInfo.exists())
- {
- styleSheetComboBox->addItem(fileInfo.completeBaseName());
- styleSheetComboBox->setItemData(customCssIndexStart + i, QVariant(customCssFiles.at(i)));
- }
- }
-
- styleSheetComboBox->addItem(tr("Add/Remove Style Sheets..."));
-
- // Find the last used style sheet, and set it as selected in the combo box.
- for (int i = 0; i < styleSheetComboBox->count() - 1; i++)
- {
- if (styleSheetComboBox->itemData(i).toString() == currentCssFile)
- {
- cssIndex = i;
- styleSheetComboBox->setCurrentIndex(i);
- break;
- }
- }
-
- connect(styleSheetComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeStyleSheet(int)));
- this->statusBar()->addWidget(styleSheetComboBox);
+ headingTagExp.setPattern("^[Hh][1-6]$");
this->setCentralWidget(htmlBrowser);
futureWatcher = new QFutureWatcher(this);
this->connect(futureWatcher, SIGNAL(finished()), SLOT(onHtmlReady()));
- this->changeStyleSheet(cssIndex);
this->connect(document, SIGNAL(filePathChanged()), SLOT(updateBaseDir()));
this->updateBaseDir();
@@ -195,49 +81,6 @@
HtmlPreview::~HtmlPreview()
{
- QSettings settings;
-
- // Store the selected exporter name.
- QString exporterName;
-
- if (previewerComboBox->count() > 0)
- {
- exporterName =
- previewerComboBox->itemText(previewerComboBox->currentIndex());
- }
-
- if (!exporterName.isNull())
- {
- settings.setValue
- (
- GW_LAST_USED_EXPORTER_KEY,
- exporterName
- );
- }
- else
- {
- // Clean up key if no exporters were even installed from which
- // to select.
- //
- settings.remove(GW_LAST_USED_EXPORTER_KEY);
- }
-
- // Store the custom style sheet list.
- settings.setValue(GW_CUSTOM_STYLE_SHEETS_KEY, customCssFiles);
-
- // Store the last used style sheet.
- // Use count > 1 to exclude the "Add/Remove Custom Style Sheets" option.
- if
- (
- (styleSheetComboBox->count() > 1) &&
- (styleSheetComboBox->currentIndex() < (styleSheetComboBox->count() - 1))
- )
- {
- QString cssPath =
- styleSheetComboBox->itemData(styleSheetComboBox->currentIndex()).toString();
- settings.setValue(GW_LAST_USED_STYLE_SHEET_KEY, cssPath);
- }
-
// Wait for thread to finish if in the middle of updating the preview.
futureWatcher->waitForFinished();
}
@@ -247,7 +90,7 @@
if (this->isVisible())
{
// Some markdown processors don't handle empty text very well
- // and will error. Thus, only pass in text from the document
+ // and will err. Thus, only pass in text from the document
// into the markdown processor if the text isn't empty or null.
//
if (document->isEmpty())
@@ -320,196 +163,97 @@
//
while (!newLine.isNull())
{
+ differenceFound = true;
anchoredHtmlDoc << newLine << "\n";
newLine = newHtmlDoc.readLine();
}
- setHtml(anchoredHtml);
- this->html = html;
-
- // Traverse the DOM in the browser, and find all the H1-H6 tags.
- // Set the id attribute of each heading tag to have a unique
- // sequence number, so that when the navigateToHeading() slot
- // is triggered, we can scroll to the desired heading.
- //
- QWebFrame* frame = htmlBrowser->page()->mainFrame();
- QWebElement element = frame->documentElement();
- QStack elementStack;
- int headingId = 1;
-
- elementStack.push(element);
-
- while (!elementStack.isEmpty())
+ if (differenceFound)
{
- element = elementStack.pop();
+ setHtml(anchoredHtml);
+ this->html = html;
- // If the element is a heading tag (H1-H6), set an anchor id for it.
- if (headingTagExp.exactMatch(element.tagName()))
- {
- element.prependOutside(QString(" ").arg(headingId));
- headingId++;
- }
- // else if the element is something that would have a heading tag
- // (not a paragraph, blockquote, code, etc.), then add its children
- // to traverse and look for headings.
+ // Traverse the DOM in the browser, and find all the H1-H6 tags.
+ // Set the id attribute of each heading tag to have a unique
+ // sequence number, so that when the navigateToHeading() slot
+ // is triggered, we can scroll to the desired heading.
//
- else if
- (
- (0 != element.tagName().compare("blockquote", Qt::CaseInsensitive))
- && (0 != element.tagName().compare("code", Qt::CaseInsensitive))
- && (0 != element.tagName().compare("p", Qt::CaseInsensitive))
- && (0 != element.tagName().compare("ol", Qt::CaseInsensitive))
- && (0 != element.tagName().compare("ul", Qt::CaseInsensitive))
- && (0 != element.tagName().compare("table", Qt::CaseInsensitive))
- )
+ QWebFrame* frame = htmlBrowser->page()->mainFrame();
+ QWebElement element = frame->documentElement();
+ QStack elementStack;
+ int headingId = 1;
+
+ elementStack.push(element);
+
+ while (!elementStack.isEmpty())
{
- QStack childStack;
- element = element.firstChild();
+ element = elementStack.pop();
- while (!element.isNull())
+ // If the element is a heading tag (H1-H6), set an anchor id for it.
+ if (element.tagName().contains(headingTagExp))
{
- childStack.push(element);
- element = element.nextSibling();
+ element.prependOutside(QString(" ").arg(headingId));
+ headingId++;
}
-
- while (!childStack.isEmpty())
+ // else if the element is something that would have a heading tag
+ // (not a paragraph, blockquote, code, etc.), then add its children
+ // to traverse and look for headings.
+ //
+ else if
+ (
+ (0 != element.tagName().compare("blockquote", Qt::CaseInsensitive))
+ && (0 != element.tagName().compare("code", Qt::CaseInsensitive))
+ && (0 != element.tagName().compare("p", Qt::CaseInsensitive))
+ && (0 != element.tagName().compare("ol", Qt::CaseInsensitive))
+ && (0 != element.tagName().compare("ul", Qt::CaseInsensitive))
+ && (0 != element.tagName().compare("table", Qt::CaseInsensitive))
+ )
{
- elementStack.push(childStack.pop());
+ QStack childStack;
+ element = element.firstChild();
+
+ while (!element.isNull())
+ {
+ childStack.push(element);
+ element = element.nextSibling();
+ }
+
+ while (!childStack.isEmpty())
+ {
+ elementStack.push(childStack.pop());
+ }
}
}
}
}
-void HtmlPreview::onPreviewerChanged(int index)
+void HtmlPreview::setHtmlExporter(Exporter* exporter)
{
- QVariant exporterVariant = previewerComboBox->itemData(index);
-
- exporter = (Exporter*) exporterVariant.value();
+ this->exporter = exporter;
setHtml("");
updatePreview();
}
-void HtmlPreview::changeStyleSheet(int index)
+void HtmlPreview::setStyleSheet(const QString& filePath)
{
- // Prevent recursion, since calls to the combo box's setCurrentIndex
- // method will trigger changeStyleSheet to be called again.
- //
- if (handlingStyleSheetChange)
- {
- return;
- }
-
- bool previewUpdateNeeded = true;
-
- handlingStyleSheetChange = true;
-
- QString filePath;
- int selectionIndex = index;
-
- // If the "Add/Remove Custom Style Sheets" option was selected...
- if (styleSheetComboBox->count() == (index + 1))
+ // Update the HTML preview with the newly selected style sheet, if needed.
+ if (!filePath.startsWith(":"))
{
- // Save off the style sheet file path of the last selected item.
- QString oldSelection =
- styleSheetComboBox->itemData(lastStyleSheetIndex).toString();
-
- // Now make sure the last style sheet is what is selected in the
- // combo box, that way the user doesn't see the
- // "Add/Remove Custom Style Sheets" as selected.
- //
- styleSheetComboBox->setCurrentIndex(lastStyleSheetIndex);
-
- // Let the user add/remove style sheets via the StyleSheetManagerDialog.
- StyleSheetManagerDialog ssmDialog(customCssFiles, this);
- int result = ssmDialog.exec();
-
- // If changes are accepted (user clicked OK), reload the style sheets
- // into the combo box, and select the last used style sheet if it
- // wasn't removed.
- //
- if (QDialog::Accepted == result)
- {
- customCssFiles = ssmDialog.getStyleSheets();
-
- // Remove all the old style sheets from the combo box.
- while (styleSheetComboBox->count() > (defaultStyleSheets.size() + 1))
- {
- styleSheetComboBox->removeItem(1);
- }
-
- selectionIndex = 0;
-
- // Now put the new list of style sheets back into the combo box.
- for (int i = customCssFiles.size() - 1; i >= 0; i--)
- {
- QString styleSheet = customCssFiles[i];
- QFileInfo fileInfo(styleSheet);
- styleSheetComboBox->insertItem
- (
- defaultStyleSheets.size(),
- fileInfo.completeBaseName(),
- styleSheet
- );
-
- if (styleSheet == oldSelection)
- {
- previewUpdateNeeded = false;
- selectionIndex = i + 1;
- }
- }
-
- // If the last selected style sheet was one of the default ones,
- // and is still currently selected, then we don't need to update
- // the preview again.
- //
- if
- (
- (lastStyleSheetIndex == selectionIndex) &&
- (selectionIndex < defaultStyleSheets.size())
- )
- {
- previewUpdateNeeded = false;
- }
-
- styleSheetComboBox->setCurrentIndex(selectionIndex);
- filePath = styleSheetComboBox->itemData(selectionIndex).toString();
- }
- else
- {
- // If the user canceled adding/removing custom CSS files, return.
- handlingStyleSheetChange = false;
- return;
- }
+ htmlBrowser->settings()->setUserStyleSheetUrl
+ (
+ QUrl::fromLocalFile(filePath)
+ );
}
else
{
- filePath = styleSheetComboBox->itemData(index).toString();
- }
-
- // Update the HTML preview with the newly selected style sheet, if needed.
- if (previewUpdateNeeded)
- {
- if (selectionIndex >= defaultStyleSheets.size())
- {
- htmlBrowser->settings()->setUserStyleSheetUrl
- (
- QUrl::fromLocalFile(filePath)
- );
- }
- else
- {
- htmlBrowser->settings()->setUserStyleSheetUrl
- (
- QUrl(QString("qrc") + defaultStyleSheets.at(selectionIndex))
- );
- }
-
- setHtml("");
- updatePreview();
+ htmlBrowser->settings()->setUserStyleSheetUrl
+ (
+ QUrl(QString("qrc") + filePath)
+ );
}
- lastStyleSheetIndex = selectionIndex;
- handlingStyleSheetChange = false;
+ setHtml("");
+ updatePreview();
}
void HtmlPreview::printPreview()
@@ -532,22 +276,6 @@
this->htmlBrowser->print(printer);
}
-void HtmlPreview::onExport()
-{
- ExportDialog exportDialog(document);
-
- connect(&exportDialog, SIGNAL(exportStarted(QString)), this, SIGNAL(operationStarted(QString)));
- connect(&exportDialog, SIGNAL(exportComplete()), this, SIGNAL(operationFinished()));
-
- exportDialog.exec();
-}
-
-void HtmlPreview::copyHtml()
-{
- QClipboard *clipboard = QApplication::clipboard();
- clipboard->setText(html);
-}
-
void HtmlPreview::onLinkClicked(const QUrl& url)
{
QDesktopServices::openUrl(url);
diff -Nru ghostwriter-1.5.0+ds1/src/HtmlPreview.h ghostwriter-1.6.0/src/HtmlPreview.h
--- ghostwriter-1.5.0+ds1/src/HtmlPreview.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/HtmlPreview.h 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014, 2015 wereturtle
+ * Copyright (C) 2014-2018 wereturtle
*
* 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
@@ -23,13 +23,11 @@
#include
#include
#include
-#include
#include
#include
#include
#include
-#include
-#include
+#include
#include
#include
#include
@@ -61,6 +59,7 @@
HtmlPreview
(
TextDocument* document,
+ Exporter* exporter,
QWidget* parent = 0
);
@@ -69,24 +68,6 @@
*/
virtual ~HtmlPreview();
- signals:
- /**
- * Emitted when a lengthy operation has started, such as when the user
- * chooses to export the document to disk, so that the user can be
- * informed, perhaps via a progress bar. The description provides
- * descriptive text as to the nature of the operation to display to
- * the user.
- */
- void operationStarted(const QString& description);
-
- /**
- * Emitted when a lengthy operation has finished, such as when an
- * exportation of the document to disk has completed, so that the user
- * can be informed, perhaps via the removal of a progress bar previously
- * displayed when the operation began.
- */
- void operationFinished();
-
public slots:
/**
* Call this method to re-render the HTML for the document.
@@ -102,14 +83,26 @@
*/
void navigateToHeading(int headingSequenceNumber);
+ /**
+ * Call this method to set the HTML exporter used in
+ * generating HTML from the Markdown document.
+ */
+ void setHtmlExporter(Exporter* exporter);
+
+ /**
+ * Call this method to change the CSS style sheet.
+ */
+ void setStyleSheet(const QString& filePath);
+
+ /**
+ * Call this method to display a print preview dialog of
+ * the rendered HTML.
+ */
+ void printPreview();
+
private slots:
void onHtmlReady();
- void onPreviewerChanged(int index);
- void changeStyleSheet(int index);
- void printPreview();
void printHtmlToPrinter(QPrinter* printer);
- void onExport();
- void copyHtml();
void onLinkClicked(const QUrl& url);
/**
@@ -127,17 +120,12 @@
QWebView* htmlBrowser;
QUrl baseUrl;
TextDocument* document;
- QComboBox* previewerComboBox;
- QComboBox* styleSheetComboBox;
- Exporter* exporter;
QTimer* htmlPreviewUpdateTimer;
- int minWidth;
bool documentChanged;
bool typingPaused;
QString html;
- QRegExp headingTagExp;
- int lastStyleSheetIndex;
- QStringList customCssFiles;
+ QRegularExpression headingTagExp;
+ Exporter* exporter;
/*
* Used to set default page layout options for printing. Also,
@@ -147,11 +135,7 @@
*/
QPrinter printer;
- // flag used to prevent recursion in changeStyleSheet
- bool handlingStyleSheetChange;
-
QFutureWatcher* futureWatcher;
- QStringList defaultStyleSheets;
/*
* Sets the HTML contents to display, and creates a backup of the old
diff -Nru ghostwriter-1.5.0+ds1/src/HudWindow.cpp ghostwriter-1.6.0/src/HudWindow.cpp
--- ghostwriter-1.5.0+ds1/src/HudWindow.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/HudWindow.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -60,13 +60,17 @@
this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
this->setMouseTracking(true);
desktopCompositingEnabled = true;
+ hudWindowShape = HudWindowShapeRounded;
// Set up the close button.
closeButton = new QPushButton(this);
closeButton->setFocusPolicy(Qt::NoFocus);
- closeButton->setStyleSheet("margin: 1; padding: 0; border: 0; width: 16px; "
- "height: 16px; background: transparent; "
- "image: url(:/resources/images/close-delete.svg)");
+ closeButton->setStyleSheet(
+ "QPushButton { margin: 1; padding: 0; border: 0; width: 16px; "
+ "height: 16px; background: transparent; "
+ "image: url(:/resources/images/close.svg) } "
+ "QPushButton:hover:!pressed { image: url(:/resources/images/close-hover.svg) } "
+ "QPushButton:pressed { image: url(:/resources/images/close-pressed.svg) }");
closeButtonColorEffect = new QGraphicsColorizeEffect();
closeButtonColorEffect->setColor(QColor(Qt::white));
closeButtonColorEffect->setStrength(1.0);
@@ -74,6 +78,7 @@
closeButton->installEventFilter(this);
closeButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
+ connect(closeButton, SIGNAL(clicked()), this, SIGNAL(closed()));
// Set up initial window title (blank).
windowTitleLabel = new QLabel("");
@@ -86,7 +91,8 @@
QGridLayout* sizeGripLayout = new QGridLayout();
sizeGripContainer->setLayout(sizeGripLayout);
sizeGrip = new QSizeGrip(this);
- sizeGrip->setStyleSheet("width: 16px; height 16px; "
+ sizeGrip->setStyleSheet(
+ "width: 16px; height 16px; "
"image: url(:/resources/images/size-grip.svg)");
sizeGripColorEffect = new QGraphicsColorizeEffect();
sizeGripColorEffect->setColor(QColor(Qt::white));
@@ -163,11 +169,11 @@
void HudWindow::keyPressEvent(QKeyEvent* e)
{
int key = e->key();
-
switch (key)
{
case Qt::Key_Escape:
this->hide();
+ emit closed();
break;
default:
break;
@@ -211,8 +217,6 @@
this->setStyleSheet(styleSheet);
closeButtonColorEffect->setColor(foregroundColor);
sizeGripColorEffect->setColor(foregroundColor);
-
- resetTitleButtonHoverColor();
}
QColor HudWindow::getBackgroundColor()
@@ -223,7 +227,6 @@
void HudWindow::setBackgroundColor(const QColor& color)
{
backgroundColor = color;
- resetTitleButtonHoverColor();
}
void HudWindow::setSizeGripEnabled(bool enabled)
@@ -285,6 +288,13 @@
}
}
+void HudWindow::setShape(HudWindowShape shape)
+{
+ hudWindowShape = shape;
+ predrawDropShadow();
+ repaint(rect());
+}
+
void HudWindow::setDesktopCompositingEnabled(bool enabled)
{
desktopCompositingEnabled = enabled;
@@ -340,7 +350,17 @@
painter.setCompositionMode(QPainter::CompositionMode_Clear);
painter.setPen(QPen(Qt::transparent, penWidth));
painter.setBrush(QBrush(Qt::transparent));
- painter.drawRoundedRect(rect().adjusted(adjX1, adjY1, adjX2, adjY2), 5, 5);
+
+ QRect r = rect().adjusted(adjX1, adjY1, adjX2, adjY2);
+
+ if (HudWindowShapeRounded == hudWindowShape)
+ {
+ painter.drawRoundedRect(r, 5, 5);
+ }
+ else
+ {
+ painter.drawRect(r);
+ }
// And now draw the HUD window itself.
QPixmap pixmap(w, h);
@@ -351,12 +371,23 @@
pixPainter.setCompositionMode(QPainter::CompositionMode_Source);
pixPainter.setPen(QPen(QBrush(foregroundColor), penWidth));
pixPainter.setBrush(QBrush(QBrush(backgroundColor)));
- pixPainter.drawRoundedRect
- (
- pixmap.rect().adjusted(adjX1 * dpr, adjY1 * dpr, adjX2 * dpr, adjY2 * dpr),
- xRadius * dpr,
- yRadius * dpr
- );
+
+ r = pixmap.rect().adjusted(adjX1 * dpr, adjY1 * dpr, adjX2 * dpr, adjY2 * dpr);
+
+ if (HudWindowShapeRounded == hudWindowShape)
+ {
+ pixPainter.drawRoundedRect
+ (
+ r,
+ xRadius * dpr,
+ yRadius * dpr
+ );
+ }
+ else
+ {
+ pixPainter.drawRect(r);
+ }
+
pixPainter.end();
#if QT_VERSION >= 0x050600
@@ -457,35 +488,6 @@
}
}
-bool HudWindow::eventFilter(QObject* obj, QEvent* event)
-{
- if (obj == closeButton)
- {
- if (QEvent::HoverEnter == event->type())
- {
- closeButtonColorEffect->setColor(titleBarButtonHoverColor);
- }
- else if (QEvent::HoverLeave == event->type())
- {
- closeButtonColorEffect->setColor(foregroundColor);
- }
- }
-
- return false;
-}
-
-void HudWindow::resetTitleButtonHoverColor()
-{
- // Set up the close button hover color based on the foreground
- // and background colors.
- titleBarButtonHoverColor = ColorHelper::applyAlpha
- (
- foregroundColor,
- backgroundColor,
- 200
- );
-}
-
void HudWindow::predrawDropShadow()
{
if (desktopCompositingEnabled)
@@ -516,7 +518,18 @@
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(QPen(Qt::NoPen));
painter.setBrush(QBrush(QColor(0, 0, 0, 200)));
- painter.drawRoundedRect(rect().adjusted(10, 12, -10, -8), 5.0, 5.0);
+
+ QRect r = rect().adjusted(10, 12, -10, -8);
+
+ if (HudWindowShapeRounded == hudWindowShape)
+ {
+ painter.drawRoundedRect(r, 5.0, 5.0);
+ }
+ else
+ {
+ painter.drawRect(r);
+ }
+
painter.end();
// Now we need to blur the shadow onto its final destination image,
diff -Nru ghostwriter-1.5.0+ds1/src/HudWindow.h ghostwriter-1.6.0/src/HudWindow.h
--- ghostwriter-1.5.0+ds1/src/HudWindow.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/HudWindow.h 2018-04-07 21:47:43.000000000 +0000
@@ -39,6 +39,8 @@
*/
class HudWindow : public QWidget
{
+ Q_OBJECT
+
public:
/**
* Constructor.
@@ -104,6 +106,13 @@
void setButtonLayout(HudWindowButtonLayout layout);
/**
+ * Sets the shape of the window to have either square or rounded
+ * corners. Note that if desktop compositing is disabled, the
+ * corners will be square regardless of this setting.
+ */
+ void setShape(HudWindowShape shape);
+
+ /**
* Sets whether desktop compositing is enabled for the HUD. Enabling
* will allow transparency of the HUD, as well as the drop shadow
* and rounded corners of the window. Disabling will cause a plain
@@ -114,6 +123,9 @@
*/
void setDesktopCompositingEnabled(bool enabled);
+ signals:
+ void closed();
+
protected:
QGridLayout* layout;
QLabel* windowTitleLabel;
@@ -129,6 +141,7 @@
QPoint mouseDragStartingPoint;
bool desktopCompositingEnabled;
QGridLayout* titleBarLayout;
+ HudWindowShape hudWindowShape;
QSize sizeHint() const;
void paintEvent(QPaintEvent* event);
@@ -137,10 +150,8 @@
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent* event);
void mouseMoveEvent(QMouseEvent* event);
- bool eventFilter(QObject* obj, QEvent* event);
private:
- void resetTitleButtonHoverColor();
void predrawDropShadow();
};
diff -Nru ghostwriter-1.5.0+ds1/src/HudWindowTypes.h ghostwriter-1.6.0/src/HudWindowTypes.h
--- ghostwriter-1.5.0+ds1/src/HudWindowTypes.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/HudWindowTypes.h 2018-04-07 21:47:43.000000000 +0000
@@ -26,4 +26,10 @@
HudWindowButtonLayoutLeft
};
+enum HudWindowShape
+{
+ HudWindowShapeRounded,
+ HudWindowShapeSquare
+};
+
#endif // HUDWINDOWTYPES_H
diff -Nru ghostwriter-1.5.0+ds1/src/MainWindow.cpp ghostwriter-1.6.0/src/MainWindow.cpp
--- ghostwriter-1.5.0+ds1/src/MainWindow.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MainWindow.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014-2017 wereturtle
+ * Copyright (C) 2014-2018 wereturtle
* Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Graeme Gott
*
* This program is free software: you can redistribute it and/or modify
@@ -50,6 +50,8 @@
#include
#include
#include
+#include
+#include
#include "MainWindow.h"
#include "ThemeFactory.h"
@@ -69,6 +71,10 @@
#include "SessionStatistics.h"
#include "SessionStatisticsWidget.h"
#include "PreferencesDialog.h"
+#include "ExporterFactory.h"
+#include "Exporter.h"
+#include "PreviewOptionsDialog.h"
+#include "StyleSheetManagerDialog.h"
#define GW_MAIN_WINDOW_GEOMETRY_KEY "Window/mainWindowGeometry"
#define GW_MAIN_WINDOW_STATE_KEY "Window/mainWindowState"
@@ -80,8 +86,6 @@
#define GW_CHEAT_SHEET_HUD_OPEN_KEY "HUD/cheatSheetHudOpen"
#define GW_DOCUMENT_STATISTICS_HUD_OPEN_KEY "HUD/documentStatisticsHudOpen"
#define GW_SESSION_STATISTICS_HUD_OPEN_KEY "HUD/sessionStatisticsHudOpen"
-#define GW_HTML_PREVIEW_GEOMETRY_KEY "Preview/htmlPreviewGeometry"
-#define GW_HTML_PREVIEW_OPEN "Preview/htmlPreviewOpen"
MainWindow::MainWindow(const QString& filePath, QWidget* parent)
: QMainWindow(parent)
@@ -91,6 +95,10 @@
this->setObjectName("mainWindow");
this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+ qApp->installEventFilter(this);
+
+ lastMousePos = QPoint(-1, -1);
+
appSettings = AppSettings::getInstance();
outlineWidget = new Outline();
@@ -104,11 +112,14 @@
outlineWidget->verticalScrollBar()->setStyle(new QCommonStyle());
outlineWidget->horizontalScrollBar()->setStyle(new QCommonStyle());
- outlineHud = new HudWindow(this);
- outlineHud->setWindowTitle(tr("Outline"));
- outlineHud->setCentralWidget(outlineWidget);
- outlineHud->setButtonLayout(appSettings->getHudButtonLayout());
- outlineHud->setDesktopCompositingEnabled(appSettings->getDesktopCompositingEnabled());
+ outlineHud =
+ createHudWindow
+ (
+ tr("Outline"),
+ outlineWidget,
+ GW_OUTLINE_HUD_GEOMETRY_KEY,
+ GW_OUTLINE_HUD_OPEN_KEY
+ );
cheatSheetWidget = new QListWidget();
@@ -141,11 +152,14 @@
cheatSheetWidget->addItem(tr("![Image][./image.jpg \"Title\"]"));
cheatSheetWidget->addItem(tr("--- *** ___ Horizontal Rule"));
- cheatSheetHud = new HudWindow(this);
- cheatSheetHud->setWindowTitle(tr("Cheat Sheet"));
- cheatSheetHud->setCentralWidget(cheatSheetWidget);
- cheatSheetHud->setButtonLayout(appSettings->getHudButtonLayout());
- cheatSheetHud->setDesktopCompositingEnabled(appSettings->getDesktopCompositingEnabled());
+ cheatSheetHud =
+ createHudWindow
+ (
+ tr("Cheat Sheet"),
+ cheatSheetWidget,
+ GW_CHEAT_SHEET_HUD_GEOMETRY_KEY,
+ GW_CHEAT_SHEET_HUD_OPEN_KEY
+ );
documentStatsWidget = new DocumentStatisticsWidget();
documentStatsWidget->verticalScrollBar()->setStyle(new QCommonStyle());
@@ -153,11 +167,14 @@
documentStatsWidget->setSelectionMode(QAbstractItemView::NoSelection);
documentStatsWidget->setAlternatingRowColors(appSettings->getAlternateHudRowColorsEnabled());
- documentStatsHud = new HudWindow(this);
- documentStatsHud->setWindowTitle(tr("Document Statistics"));
- documentStatsHud->setCentralWidget(documentStatsWidget);
- documentStatsHud->setButtonLayout(appSettings->getHudButtonLayout());
- documentStatsHud->setDesktopCompositingEnabled(appSettings->getDesktopCompositingEnabled());
+ documentStatsHud =
+ createHudWindow
+ (
+ tr("Document Statistics"),
+ documentStatsWidget,
+ GW_DOCUMENT_STATISTICS_HUD_GEOMETRY_KEY,
+ GW_DOCUMENT_STATISTICS_HUD_OPEN_KEY
+ );
sessionStatsWidget =new SessionStatisticsWidget();
sessionStatsWidget->verticalScrollBar()->setStyle(new QCommonStyle());
@@ -165,11 +182,16 @@
sessionStatsWidget->setSelectionMode(QAbstractItemView::NoSelection);
sessionStatsWidget->setAlternatingRowColors(appSettings->getAlternateHudRowColorsEnabled());
- sessionStatsHud = new HudWindow(this);
- sessionStatsHud->setWindowTitle(tr("Session Statistics"));
- sessionStatsHud->setCentralWidget(sessionStatsWidget);
- sessionStatsHud->setButtonLayout(appSettings->getHudButtonLayout());
- sessionStatsHud->setDesktopCompositingEnabled(appSettings->getDesktopCompositingEnabled());
+ sessionStatsHud =
+ createHudWindow
+ (
+ tr("Session Statistics"),
+ sessionStatsWidget,
+ GW_SESSION_STATISTICS_HUD_GEOMETRY_KEY,
+ GW_SESSION_STATISTICS_HUD_OPEN_KEY
+ );
+
+ connect(appSettings, SIGNAL(hideHudsOnPreviewChanged(bool)), this, SLOT(onHideHudsOnPreviewChanged(bool)));
TextDocument* document = new TextDocument();
@@ -182,6 +204,7 @@
editor->setBulletPointCyclingEnabled(appSettings->getBulletPointCyclingEnabled());
editor->setPlainText("");
editor->setEditorWidth((EditorWidth) appSettings->getEditorWidth());
+ editor->setEditorCorners((InterfaceStyle) appSettings->getInterfaceStyle());
editor->setBlockquoteStyle(appSettings->getBlockquoteStyle());
editor->setSpellCheckEnabled(appSettings->getLiveSpellCheckEnabled());
connect(outlineWidget, SIGNAL(documentPositionNavigated(int)), editor, SLOT(navigateDocument(int)));
@@ -189,6 +212,8 @@
connect(editor, SIGNAL(fontSizeChanged(int)), this, SLOT(onFontSizeChanged(int)));
connect(editor, SIGNAL(headingFound(int,QString,QTextBlock)), outlineWidget, SLOT(insertHeadingIntoOutline(int,QString,QTextBlock)));
connect(editor, SIGNAL(headingRemoved(int)), outlineWidget, SLOT(removeHeadingFromOutline(int)));
+ connect(editor, SIGNAL(typingPaused()), this, SLOT(onTypingPaused()));
+ connect(editor, SIGNAL(typingResumed()), this, SLOT(onTypingResumed()));
// We need to set an empty style for the editor's scrollbar in order for the
// scrollbar CSS stylesheet to take full effect. Otherwise, the scrollbar's
@@ -221,7 +246,7 @@
connect(editor, SIGNAL(typingPaused()), sessionStats, SLOT(onTypingPaused()));
connect(editor, SIGNAL(typingResumed()), sessionStats, SLOT(onTypingResumed()));
- documentManager = new DocumentManager(editor, documentStats, sessionStats, this);
+ documentManager = new DocumentManager(editor, outlineWidget, documentStats, sessionStats, this);
documentManager->setAutoSaveEnabled(appSettings->getAutoSaveEnabled());
documentManager->setFileBackupEnabled(appSettings->getBackupFileEnabled());
documentManager->setFileHistoryEnabled(appSettings->getFileHistoryEnabled());
@@ -247,8 +272,6 @@
editorPane->setObjectName("editorLayoutArea");
editorPane->setLayout(editor->getPreferredLayout());
- setCentralWidget(editorPane);
-
findReplaceDialog = new FindDialog(editor);
findReplaceDialog->setModal(false);
@@ -369,6 +392,7 @@
connect(appSettings, SIGNAL(dictionaryLanguageChanged(QString)), editor, SLOT(setDictionary(QString)));
connect(appSettings, SIGNAL(liveSpellCheckChanged(bool)), editor, SLOT(setSpellCheckEnabled(bool)));
connect(appSettings, SIGNAL(editorWidthChanged(EditorWidth)), this, SLOT(changeEditorWidth(EditorWidth)));
+ connect(appSettings, SIGNAL(interfaceStyleChanged(InterfaceStyle)), this, SLOT(changeInterfaceStyle(InterfaceStyle)));
connect(appSettings, SIGNAL(blockquoteStyleChanged(BlockquoteStyle)), editor, SLOT(setBlockquoteStyle(BlockquoteStyle)));
connect(appSettings, SIGNAL(hudButtonLayoutChanged(HudWindowButtonLayout)), this, SLOT(changeHudButtonLayout(HudWindowButtonLayout)));
connect(appSettings, SIGNAL(alternateHudRowColorsChanged(bool)), this, SLOT(toggleOutlineAlternateRowColors(bool)));
@@ -376,13 +400,9 @@
connect(appSettings, SIGNAL(hudOpacityChanged(int)), this, SLOT(changeHudOpacity(int)));
connect(appSettings, SIGNAL(highlightLineBreaksChanged(bool)), editor, SLOT(setHighlightLineBreaks(bool)));
- if (this->isFullScreen())
- {
- effectsMenuBar->setAutoHideEnabled(appSettings->getHideMenuBarInFullScreenEnabled());
- }
- else
+ if (this->isFullScreen() && appSettings->getHideMenuBarInFullScreenEnabled())
{
- effectsMenuBar->setAutoHideEnabled(false);
+ hideMenuBar();
}
QString themeName = appSettings->getThemeName();
@@ -391,9 +411,6 @@
theme = ThemeFactory::getInstance()->loadTheme(themeName, err);
- fullScreenButtonColorEffect = new QGraphicsColorizeEffect();
- fullScreenButtonColorEffect->setColor(QColor(Qt::white));
-
// Default language for dictionary is set from AppSettings intialization.
QString language = appSettings->getDictionaryLanguage();
@@ -419,95 +436,73 @@
// Note that the parent widget for this new window must be NULL, so that
// it will hide beneath other windows when it is deactivated.
//
- htmlPreview = new HtmlPreview(documentManager->getDocument(), NULL);
+ htmlPreview = new HtmlPreview
+ (
+ documentManager->getDocument(),
+ appSettings->getCurrentHtmlExporter(),
+ this
+ );
connect(editor, SIGNAL(typingPaused()), htmlPreview, SLOT(updatePreview()));
connect(outlineWidget, SIGNAL(headingNumberNavigated(int)), htmlPreview, SLOT(navigateToHeading(int)));
- connect(htmlPreview, SIGNAL(operationStarted(QString)), this, SLOT(onOperationStarted(QString)));
- connect(htmlPreview, SIGNAL(operationFinished()), this, SLOT(onOperationFinished()));
+ connect(appSettings, SIGNAL(currentHtmlExporterChanged(Exporter*)), htmlPreview, SLOT(setHtmlExporter(Exporter*)));
+ connect(appSettings, SIGNAL(currentCssFileChanged(QString)), htmlPreview, SLOT(setStyleSheet(QString)));
- // Set dimensions for all the windows/HUDs.
+ htmlPreview->setStyleSheet(appSettings->getCurrentCssFile());
- if (windowSettings.contains(GW_OUTLINE_HUD_GEOMETRY_KEY))
- {
- outlineHud->restoreGeometry(windowSettings.value(GW_OUTLINE_HUD_GEOMETRY_KEY).toByteArray());
- }
- else
- {
- outlineHud->move(200, 200);
- outlineHud->adjustSize();
- }
+ splitter = new QSplitter(this);
+ splitter->addWidget(editorPane);
+ splitter->addWidget(htmlPreview);
+ splitter->setStyleSheet("QSplitter:handle { border: 0 }"
+ "QSplitter { border: 0; margin: 0; padding: 0 }");
+ setCentralWidget(splitter);
- if (windowSettings.contains(GW_CHEAT_SHEET_HUD_GEOMETRY_KEY))
+ if (appSettings->getHtmlPreviewVisible())
{
- cheatSheetHud->restoreGeometry(windowSettings.value(GW_CHEAT_SHEET_HUD_GEOMETRY_KEY).toByteArray());
- }
- else
- {
- cheatSheetHud->move(400, 400);
- cheatSheetHud->adjustSize();
- }
-
- if (windowSettings.contains(GW_DOCUMENT_STATISTICS_HUD_GEOMETRY_KEY))
- {
- documentStatsHud->restoreGeometry(windowSettings.value(GW_DOCUMENT_STATISTICS_HUD_GEOMETRY_KEY).toByteArray());
+ htmlPreview->show();
}
else
{
- documentStatsHud->move(400, 400);
- documentStatsHud->adjustSize();
+ htmlPreview->hide();
}
- if (windowSettings.contains(GW_SESSION_STATISTICS_HUD_GEOMETRY_KEY))
- {
- sessionStatsHud->restoreGeometry(windowSettings.value(GW_SESSION_STATISTICS_HUD_GEOMETRY_KEY).toByteArray());
- }
- else
+ // Set dimensions for all the windows/HUDs.
+ for (int i = 0; i < huds.length(); i++)
{
- sessionStatsHud->move(400, 400);
- sessionStatsHud->adjustSize();
- }
+ HudWindow* hud = huds.at(i);
+ QString key = hudGeometryKeys.at(i);
- if (windowSettings.contains(GW_HTML_PREVIEW_GEOMETRY_KEY))
- {
- htmlPreview->restoreGeometry(windowSettings.value(GW_HTML_PREVIEW_GEOMETRY_KEY).toByteArray());
- }
- else
- {
- htmlPreview->adjustSize();
+ if (windowSettings.contains(key))
+ {
+ hud->restoreGeometry(windowSettings.value(key).toByteArray());
+ }
+ else
+ {
+ hud->move(200, 200);
+ hud->adjustSize();
+ }
}
quickReferenceGuideViewer = NULL;
+ openHudsVisible = !appSettings->getHideHudsOnPreviewEnabled() || !appSettings->getHtmlPreviewVisible();
+
// Show the main window.
show();
// Show the remaining windows/HUDs based on whether they had been previously
// opened during the last session.
//
- if (windowSettings.value(GW_OUTLINE_HUD_OPEN_KEY, QVariant(false)).toBool())
- {
- outlineHud->show();
- }
-
- if (windowSettings.value(GW_CHEAT_SHEET_HUD_OPEN_KEY, QVariant(false)).toBool())
- {
- cheatSheetHud->show();
- }
-
- if (windowSettings.value(GW_DOCUMENT_STATISTICS_HUD_OPEN_KEY, QVariant(false)).toBool())
+ for (int i = 0; i < huds.length(); i++)
{
- documentStatsHud->show();
- }
+ HudWindow* hud = huds.at(i);
+ QString key = hudOpenKeys.at(i);
- if (windowSettings.value(GW_SESSION_STATISTICS_HUD_OPEN_KEY, QVariant(false)).toBool())
- {
- sessionStatsHud->show();
- }
-
- if (windowSettings.value(GW_HTML_PREVIEW_OPEN, QVariant(false)).toBool())
- {
- htmlPreview->show();
+ if (windowSettings.value(key, QVariant(false)).toBool())
+ {
+ hud->setVisible(openHudsVisible);
+ openHuds.append(hud);
+ }
}
// Apply the theme only after show() is called on all the widgets,
@@ -515,6 +510,7 @@
// the theme is applied before show().
//
applyTheme();
+ adjustEditorWidth(this->width());
this->update();
qApp->processEvents();
@@ -555,8 +551,7 @@
void MainWindow::resizeEvent(QResizeEvent* event)
{
- // Resize the editor's margins based on the new size of the window.
- editor->setupPaperMargins(event->size().width());
+ adjustEditorWidth(event->size().width());
if (!originalBackgroundImage.isNull())
{
@@ -590,15 +585,15 @@
}
break;
case Qt::Key_Alt:
- if (appSettings->getHideMenuBarInFullScreenEnabled())
+ if (this->isFullScreen() && appSettings->getHideMenuBarInFullScreenEnabled())
{
- if (!effectsMenuBar->isVisible())
+ if (!isMenuBarVisible())
{
- effectsMenuBar->showBar();
+ showMenuBar();
}
else
{
- effectsMenuBar->hideBar();
+ hideMenuBar();
}
}
break;
@@ -609,6 +604,74 @@
QMainWindow::keyPressEvent(e);
}
+bool MainWindow::eventFilter(QObject* obj, QEvent* event)
+{
+ Q_UNUSED(obj)
+
+ // If the option to hide the HUD windows when viewing the HTML preview
+ // is enabled, and if the HTML preview is currently visible and the
+ // main window has now been activated (instead of a HUD), then hide
+ // any visible HUDs.
+ //
+ if
+ (
+ (obj == this) &&
+ (event->type() == QEvent::WindowActivate) &&
+ !openHudsVisible &&
+ appSettings->getHideHudsOnPreviewEnabled() &&
+ htmlPreview->isVisible()
+ )
+ {
+ setOpenHudsVisibility(false);
+ }
+ else if (event->type() == QEvent::MouseMove)
+ {
+ QMouseEvent* mouseEvent = static_cast(event);
+
+ int hotSpotHeight = 5;
+
+ if (isMenuBarVisible())
+ {
+ hotSpotHeight = menuBarHeight;
+ }
+
+ if (this->isFullScreen() && appSettings->getHideMenuBarInFullScreenEnabled())
+ {
+ // Check for enter hot spot conditions.
+ if (mouseEvent->globalPos().y() < hotSpotHeight)
+ {
+ if
+ (
+ ((lastMousePos.y() < 0) || (lastMousePos.y() >= hotSpotHeight))
+ &&
+ !isMenuBarVisible()
+ )
+ {
+ // Entered the hot spot. Show the menu bar if it is not already visible.
+ showMenuBar();
+ }
+ }
+ // Check for exit hot spot conditions.
+ else if
+ (
+ ((lastMousePos.y() < 0) || (lastMousePos.y() < hotSpotHeight))
+ &&
+ isMenuBarVisible()
+ &&
+ !menuBarMenuActivated
+ )
+ {
+ // Exited the hot spot. Hide the menu bar if it is not already hidden.
+ hideMenuBar();
+ }
+ }
+
+ lastMousePos = mouseEvent->globalPos();
+ }
+
+ return false;
+}
+
void MainWindow::paintEvent(QPaintEvent* event)
{
QPainter painter(this);
@@ -656,18 +719,28 @@
appSettings->store();
QSettings windowSettings;
+
windowSettings.setValue(GW_MAIN_WINDOW_GEOMETRY_KEY, saveGeometry());
windowSettings.setValue(GW_MAIN_WINDOW_STATE_KEY, saveState());
- windowSettings.setValue(GW_OUTLINE_HUD_GEOMETRY_KEY, outlineHud->saveGeometry());
- windowSettings.setValue(GW_OUTLINE_HUD_OPEN_KEY, QVariant(outlineHud->isVisible()));
- windowSettings.setValue(GW_CHEAT_SHEET_HUD_GEOMETRY_KEY, cheatSheetHud->saveGeometry());
- windowSettings.setValue(GW_CHEAT_SHEET_HUD_OPEN_KEY, QVariant(cheatSheetHud->isVisible()));
- windowSettings.setValue(GW_DOCUMENT_STATISTICS_HUD_GEOMETRY_KEY, documentStatsHud->saveGeometry());
- windowSettings.setValue(GW_DOCUMENT_STATISTICS_HUD_OPEN_KEY, QVariant(documentStatsHud->isVisible()));
- windowSettings.setValue(GW_SESSION_STATISTICS_HUD_GEOMETRY_KEY, sessionStatsHud->saveGeometry());
- windowSettings.setValue(GW_SESSION_STATISTICS_HUD_OPEN_KEY, QVariant(sessionStatsHud->isVisible()));
- windowSettings.setValue(GW_HTML_PREVIEW_GEOMETRY_KEY, htmlPreview->saveGeometry());
- windowSettings.setValue(GW_HTML_PREVIEW_OPEN, QVariant(htmlPreview->isVisible()));
+
+ for (int i = 0; i < huds.length(); i++)
+ {
+ HudWindow* hud = huds.at(i);
+ QString geomKey = hudGeometryKeys.at(i);
+ QString openKey = hudOpenKeys.at(i);
+
+ windowSettings.setValue(geomKey, hud->saveGeometry());
+
+ bool isVisible = hud->isVisible();
+
+ if (openHuds.contains(hud))
+ {
+ isVisible = true;
+ }
+
+ windowSettings.setValue(openKey, QVariant(isVisible));
+ }
+
windowSettings.sync();
DictionaryManager::instance().addProviders();
@@ -680,11 +753,11 @@
void MainWindow::changeTheme()
{
ThemeSelectionDialog* themeDialog = new ThemeSelectionDialog(theme.getName(), this);
+ themeDialog->setAttribute(Qt::WA_DeleteOnClose);
connect(themeDialog, SIGNAL(applyTheme(Theme)), this, SLOT(applyTheme(Theme)));
themeDialog->show();
}
-
void MainWindow::showFindReplaceDialog()
{
findReplaceDialog->show();
@@ -696,6 +769,43 @@
preferencesDialog->show();
}
+void MainWindow::toggleHtmlPreview(bool checked)
+{
+ htmlPreviewButton->blockSignals(true);
+ htmlPreviewMenuAction->blockSignals(true);
+
+ htmlPreviewButton->setChecked(checked);
+ htmlPreviewMenuAction->setChecked(checked);
+ appSettings->setHtmlPreviewVisible(checked);
+
+ if (checked)
+ {
+ htmlPreview->show();
+ htmlPreview->updatePreview();
+
+ if (appSettings->getHideHudsOnPreviewEnabled())
+ {
+ setOpenHudsVisibility(false);
+ }
+ }
+ else
+ {
+ htmlPreview->hide();
+
+ if (appSettings->getHideHudsOnPreviewEnabled())
+ {
+ setOpenHudsVisibility(true);
+ }
+ }
+
+ adjustEditorWidth(this->width());
+
+ applyStatusBarStyle();
+
+ htmlPreviewButton->blockSignals(false);
+ htmlPreviewMenuAction->blockSignals(false);
+}
+
void MainWindow::toggleHemingwayMode(bool checked)
{
if (checked)
@@ -722,99 +832,81 @@
void MainWindow::toggleFullScreen(bool checked)
{
- // This method can be called either from the menu bar (View->Full Screen)
- // or from the full screen toggle button on the status bar. To keep their
- // "checked/unchecked" states in sync, we have to determine who called
- // this method (which "sender" triggered the event--the button or the
- // menu option), and set the other's checked/unchecked state accordingly.
- // Unfortunately, setting their checked states causes this slot to be
- // triggered again recursively. This means we have to use only one of the
- // "senders" as the source of "truth" to determine whether to go
- // full screen or to restore. Thus, whenever the sender is the button in
- // the status bar, we'll toggle full screen mode. Otherwise, we'll just
- // set the button's state, knowing that this slot will be triggered again
- // recursively in doing so and that the full screen mode will be toggled
- // accordingly.
- //
-
static bool lastStateWasMaximized = false;
+ fullScreenButton->blockSignals(true);
+ fullScreenMenuAction->blockSignals(true);
+
+ fullScreenButton->setChecked(checked);
+ fullScreenMenuAction->setChecked(checked);
+
if (this->isFullScreen() || !checked)
{
- if (this->sender() != fullScreenButton)
+ if (appSettings->getDisplayTimeInFullScreenEnabled())
{
- fullScreenButton->setChecked(false);
+ timeLabel->hide();
}
+
+ // If the window had been maximized prior to entering
+ // full screen mode, then put the window back to
+ // to maximized. Don't call showNormal(), as that
+ // doesn't restore the window to maximized.
+ //
+ if (lastStateWasMaximized)
+ {
+ showMaximized();
+ }
+ // Put the window back to normal (not maximized).
else
{
- if (appSettings->getDisplayTimeInFullScreenEnabled())
- {
- statusBarLayout->removeWidget(timeLabel);
- timeLabel->hide();
- }
-
- fullScreenMenuAction->setChecked(false);
-
- // If the window had been maximized prior to entering
- // full screen mode, then put the window back to
- // to maximized. Don't call showNormal(), as that
- // doesn't restore the window to maximized.
- //
- if (lastStateWasMaximized)
- {
- showMaximized();
- }
- // Put the window back to normal (not maximized).
- else
- {
- showNormal();
- }
+ showNormal();
+ }
- if (appSettings->getHideMenuBarInFullScreenEnabled())
- {
- effectsMenuBar->setAutoHideEnabled(false);
- }
+ if (appSettings->getHideMenuBarInFullScreenEnabled())
+ {
+ showMenuBar();
}
}
else
{
- if (this->sender() != fullScreenButton)
+ if (appSettings->getDisplayTimeInFullScreenEnabled())
+ {
+ timeLabel->show();
+ }
+
+ if (this->isMaximized())
{
- fullScreenButton->setChecked(true);
+ lastStateWasMaximized = true;
}
else
{
- if (appSettings->getDisplayTimeInFullScreenEnabled())
- {
- statusBarLayout->addWidget(timeLabel, 0, 0, Qt::AlignLeft);
- timeLabel->show();
- }
-
- if (this->isMaximized())
- {
- lastStateWasMaximized = true;
- }
- else
- {
- lastStateWasMaximized = false;
- }
+ lastStateWasMaximized = false;
+ }
- fullScreenMenuAction->setChecked(true);
- showFullScreen();
+ showFullScreen();
- if (appSettings->getHideMenuBarInFullScreenEnabled())
- {
- effectsMenuBar->setAutoHideEnabled(true);
- }
+ if (appSettings->getHideMenuBarInFullScreenEnabled())
+ {
+ hideMenuBar();
}
}
+
+ fullScreenButton->blockSignals(false);
+ fullScreenMenuAction->blockSignals(false);
}
void MainWindow::toggleHideMenuBarInFullScreen(bool checked)
{
if (this->isFullScreen())
{
- effectsMenuBar->setAutoHideEnabled(checked);
+ if (checked)
+ {
+ hideMenuBar();
+ }
+ else
+ {
+ showMenuBar();
+ }
}
}
@@ -843,12 +935,10 @@
{
if (checked)
{
- statusBarLayout->addWidget(timeLabel, 0, 0, Qt::AlignLeft);
this->timeLabel->show();
}
else
{
- statusBarLayout->removeWidget(timeLabel);
this->timeLabel->hide();
}
}
@@ -856,24 +946,57 @@
void MainWindow::toggleDesktopCompositingEffects(bool checked)
{
- outlineHud->setDesktopCompositingEnabled(checked);
- cheatSheetHud->setDesktopCompositingEnabled(checked);
- documentStatsHud->setDesktopCompositingEnabled(checked);
- sessionStatsHud->setDesktopCompositingEnabled(checked);
+ foreach (HudWindow* hud, huds)
+ {
+ hud->setDesktopCompositingEnabled(checked);
+ }
+}
+
+void MainWindow::toggleOpenHudsVisibility()
+{
+ setOpenHudsVisibility(!openHudsVisible);
+}
+
+void MainWindow::toggleOpenHudsVisibility(bool checked)
+{
+ setOpenHudsVisibility(!checked);
}
void MainWindow::changeHudButtonLayout(HudWindowButtonLayout layout)
{
- this->outlineHud->setButtonLayout(layout);
- this->cheatSheetHud->setButtonLayout(layout);
- this->documentStatsHud->setButtonLayout(layout);
- this->sessionStatsHud->setButtonLayout(layout);
+ foreach (HudWindow* hud, huds)
+ {
+ hud->setButtonLayout(layout);
+ }
}
void MainWindow::changeEditorWidth(EditorWidth editorWidth)
{
editor->setEditorWidth(editorWidth);
- editor->setupPaperMargins(this->width());
+ adjustEditorWidth(this->width());
+}
+
+void MainWindow::changeInterfaceStyle(InterfaceStyle style)
+{
+ HudWindowShape shape;
+
+ switch (style)
+ {
+ case InterfaceStyleRounded:
+ shape = HudWindowShapeRounded;
+ break;
+ default:
+ shape = HudWindowShapeSquare;
+ break;
+ }
+
+ foreach (HudWindow* hud, huds)
+ {
+ hud->setShape(shape);
+ }
+
+ editor->setEditorCorners(style);
+ applyTheme();
}
void MainWindow::insertImage()
@@ -926,6 +1049,24 @@
}
}
+void MainWindow::showStyleSheetManager()
+{
+ // Allow the user add/remove style sheets via the StyleSheetManagerDialog.
+ StyleSheetManagerDialog ssmDialog(appSettings->getCustomCssFiles(), this);
+ int result = ssmDialog.exec();
+
+ // If changes are accepted (user clicked OK), store the new
+ // style sheet file list to the app settings. Note that
+ // all listeners to this app settings property will be
+ // notified of the new list.
+ //
+ if (QDialog::Accepted == result)
+ {
+ QStringList customCssFiles = ssmDialog.getStyleSheets();
+ appSettings->setCustomCssFiles(customCssFiles);
+ }
+}
+
void MainWindow::showQuickReferenceGuide()
{
if (NULL == quickReferenceGuideViewer)
@@ -1002,26 +1143,58 @@
void MainWindow::showOutlineHud()
{
- outlineHud->show();
- outlineHud->activateWindow();
+ showHud(outlineHud);
}
void MainWindow::showCheatSheetHud()
{
- cheatSheetHud->show();
- cheatSheetHud->activateWindow();
+ showHud(cheatSheetHud);
}
void MainWindow::showDocumentStatisticsHud()
{
- documentStatsHud->show();
- documentStatsHud->activateWindow();
+ showHud(documentStatsHud);
}
void MainWindow::showSessionStatisticsHud()
{
- sessionStatsHud->show();
- sessionStatsHud->activateWindow();
+ showHud(sessionStatsHud);
+}
+
+void MainWindow::onHideHudsOnPreviewChanged(bool enabled)
+{
+ if (enabled)
+ {
+ setOpenHudsVisibility(!htmlPreview->isVisible());
+ }
+ else
+ {
+ setOpenHudsVisibility(true);
+ }
+}
+
+void MainWindow::onHudClosed()
+{
+ openHuds.removeAll((HudWindow*)QObject::sender());
+}
+
+void MainWindow::onTypingPaused()
+{
+ if (appSettings->getHideHudsWhenTypingEnabled())
+ {
+ if (!appSettings->getHideHudsOnPreviewEnabled() || !htmlPreview->isVisible())
+ {
+ setOpenHudsVisibility(true);
+ }
+ }
+}
+
+void MainWindow::onTypingResumed()
+{
+ if (appSettings->getHideHudsWhenTypingEnabled())
+ {
+ setOpenHudsVisibility(false);
+ }
}
void MainWindow::onQuickRefGuideLinkClicked(const QUrl& url)
@@ -1034,7 +1207,7 @@
QString aboutText =
QString("") + qAppName() + QString(" ")
+ qApp->applicationVersion() + QString("
")
- + tr("Copyright © 2014-2016 wereturtle"
+ + tr("
Copyright © 2014-2018 wereturtle"
"
You may use and redistribute this software under the terms of the "
""
"GNU General Public License Version 3 .
"
@@ -1079,19 +1252,6 @@
applyTheme();
}
-void MainWindow::openHtmlPreview()
-{
- if (!htmlPreview->isVisible())
- {
- htmlPreview->show();
- htmlPreview->updatePreview();
- }
- else
- {
- htmlPreview->activateWindow();
- }
-}
-
void MainWindow::openRecentFile()
{
QAction* action = qobject_cast(this->sender());
@@ -1167,8 +1327,6 @@
statusLabel->setText(description);
}
- statusBarLayout->removeWidget(wordCountLabel);
- statusBarLayout->addWidget(statusLabel, 0, 1, Qt::AlignCenter);
wordCountLabel->hide();
statusLabel->show();
this->update();
@@ -1178,10 +1336,8 @@
void MainWindow::onOperationFinished()
{
statusLabel->setText(QString());
- statusBarLayout->removeWidget(statusLabel);
wordCountLabel->show();
statusLabel->hide();
- statusBarLayout->addWidget(wordCountLabel, 0, 1, Qt::AlignCenter);
this->update();
qApp->processEvents();
}
@@ -1236,14 +1392,81 @@
{
QColor color = outlineHud->getBackgroundColor();
color.setAlpha(value);
- outlineHud->setBackgroundColor(color);
- outlineHud->update();
- cheatSheetHud->setBackgroundColor(color);
- cheatSheetHud->update();
- documentStatsHud->setBackgroundColor(color);
- documentStatsHud->update();
- sessionStatsHud->setBackgroundColor(color);
- sessionStatsHud->update();
+
+ foreach (HudWindow* hud, huds)
+ {
+ hud->setBackgroundColor(color);
+ hud->update();
+ }
+}
+
+void MainWindow::copyHtml()
+{
+ Exporter* htmlExporter = appSettings->getCurrentHtmlExporter();
+
+ if (NULL != htmlExporter)
+ {
+ QTextCursor c = editor->textCursor();
+ QString markdownText;
+ QString html;
+
+ if (c.hasSelection())
+ {
+ // Get only selected text from the document.
+ markdownText = c.selection().toPlainText();
+ }
+ else
+ {
+ // Get all text from the document.
+ markdownText = editor->toPlainText();
+ }
+
+ // Convert Markdown to HTML.
+ htmlExporter->exportToHtml(markdownText, html);
+
+ // Insert HTML into clipboard.
+ QClipboard *clipboard = QApplication::clipboard();
+ clipboard->setText(html);
+ }
+}
+
+void MainWindow::showPreviewOptions()
+{
+ PreviewOptionsDialog* dialog = new PreviewOptionsDialog(this);
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ dialog->setModal(false);
+ dialog->show();
+}
+
+void MainWindow::onAboutToHideMenuBarMenu()
+{
+ menuBarMenuActivated = false;
+
+ if
+ (
+ !this->menuBar()->underMouse()
+ && this->isFullScreen()
+ && appSettings->getHideMenuBarInFullScreenEnabled()
+ && isMenuBarVisible()
+ )
+ {
+ hideMenuBar();
+ }
+}
+
+void MainWindow::onAboutToShowMenuBarMenu()
+{
+ menuBarMenuActivated = true;
+
+ if
+ (
+ this->isFullScreen()
+ && appSettings->getHideMenuBarInFullScreenEnabled()
+ && !isMenuBarVisible()
+ )
+ {
+ showMenuBar();
+ }
}
QAction* MainWindow::addMenuAction
@@ -1276,11 +1499,43 @@
return action;
}
-void MainWindow::buildMenuBar()
+HudWindow* MainWindow::createHudWindow
+(
+ const QString& title,
+ QWidget* centralWidget,
+ const QString& geometrySettingsKey,
+ const QString& openSettingsKey
+)
{
- effectsMenuBar = new EffectsMenuBar(this);
- this->setMenuBar(effectsMenuBar);
+ HudWindow* hud = new HudWindow(this);
+ hud->setWindowTitle(title);
+ hud->setCentralWidget(centralWidget);
+ hud->setButtonLayout(appSettings->getHudButtonLayout());
+ hud->setDesktopCompositingEnabled(appSettings->getDesktopCompositingEnabled());
+ huds.append(hud);
+ hudGeometryKeys.append(geometrySettingsKey);
+ hudOpenKeys.append(openSettingsKey);
+ connect(hud, SIGNAL(closed()), this, SLOT(onHudClosed()));
+
+ HudWindowShape hudShape;
+
+ switch (appSettings->getInterfaceStyle())
+ {
+ case InterfaceStyleRounded:
+ hudShape = HudWindowShapeRounded;
+ break;
+ default:
+ hudShape = HudWindowShapeSquare;
+ break;
+ }
+
+ hud->setShape(hudShape);
+
+ return hud;
+}
+void MainWindow::buildMenuBar()
+{
QMenu* fileMenu = this->menuBar()->addMenu(tr("&File"));
fileMenu->addAction(tr("&New"), documentManager, SLOT(close()), QKeySequence::New);
@@ -1320,6 +1575,7 @@
editMenu->addAction(tr("Cu&t"), editor, SLOT(cut()), QKeySequence::Cut);
editMenu->addAction(tr("&Copy"), editor, SLOT(copy()), QKeySequence::Copy);
editMenu->addAction(tr("&Paste"), editor, SLOT(paste()), QKeySequence::Paste);
+ editMenu->addAction(tr("Copy &HTML"), this, SLOT(copyHtml()), QKeySequence("SHIFT+CTRL+C"));
editMenu->addSeparator();
editMenu->addAction(tr("&Insert Image..."), this, SLOT(insertImage()));
editMenu->addSeparator();
@@ -1359,12 +1615,21 @@
connect(fullScreenMenuAction, SIGNAL(toggled(bool)), this, SLOT(toggleFullScreen(bool)));
viewMenu->addAction(fullScreenMenuAction);
- viewMenu->addAction(tr("&Preview in HTML"), this, SLOT(openHtmlPreview()), QKeySequence("CTRL+M"));
+ htmlPreviewMenuAction = new QAction(tr("&Preview in HTML"), this);
+ htmlPreviewMenuAction->setCheckable(true);
+ htmlPreviewMenuAction->setChecked(appSettings->getHtmlPreviewVisible());
+ htmlPreviewMenuAction->setShortcut(QKeySequence("CTRL+M"));
+ connect(htmlPreviewMenuAction, SIGNAL(toggled(bool)), this, SLOT(toggleHtmlPreview(bool)));
+ viewMenu->addAction(htmlPreviewMenuAction);
+
viewMenu->addAction(tr("&Outline HUD"), this, SLOT(showOutlineHud()), QKeySequence("CTRL+L"));
- viewMenu->addAction(tr("&Cheat Sheet HUD"), this, SLOT(showCheatSheetHud()));
+ viewMenu->addAction(tr("&Cheat Sheet HUD"), this, SLOT(showCheatSheetHud()), QKeySequence::HelpContents);
viewMenu->addAction(tr("&Document Statistics HUD"), this, SLOT(showDocumentStatisticsHud()));
viewMenu->addAction(tr("&Session Statistics HUD"), this, SLOT(showSessionStatisticsHud()));
viewMenu->addSeparator();
+ hideOpenHudsAction =
+ viewMenu->addAction(tr("Hide Open &HUD Windows"), this, SLOT(toggleOpenHudsVisibility()), QKeySequence("CTRL+SHIFT+H"));
+ viewMenu->addSeparator();
viewMenu->addAction(tr("Increase Font Size"), editor, SLOT(increaseFontSize()), QKeySequence("CTRL+="));
viewMenu->addAction(tr("Decrease Font Size"), editor, SLOT(decreaseFontSize()), QKeySequence("CTRL+-"));
@@ -1372,6 +1637,8 @@
settingsMenu->addAction(tr("Themes..."), this, SLOT(changeTheme()));
settingsMenu->addAction(tr("Font..."), this, SLOT(changeFont()));
settingsMenu->addAction(tr("Application Language..."), this, SLOT(onSetLocale()));
+ settingsMenu->addAction(tr("Style Sheets..."), this, SLOT(showStyleSheetManager()));
+ settingsMenu->addAction(tr("Preview Options..."), this, SLOT(showPreviewOptions()));
settingsMenu->addAction(tr("Preferences..."), this, SLOT(openPreferencesDialog()));
QMenu* helpMenu = this->menuBar()->addMenu(tr("&Help"));
@@ -1380,26 +1647,78 @@
helpMenu->addAction(tr("Quick &Reference Guide"), this, SLOT(showQuickReferenceGuide()));
helpMenu->addAction(tr("Wiki"), this, SLOT(showWikiPage()));
- connect(fileMenu, SIGNAL(aboutToShow()), effectsMenuBar, SLOT(onAboutToShow()));
- connect(fileMenu, SIGNAL(aboutToHide()), effectsMenuBar, SLOT(onAboutToHide()));
- connect(editMenu, SIGNAL(aboutToShow()), effectsMenuBar, SLOT(onAboutToShow()));
- connect(editMenu, SIGNAL(aboutToHide()), effectsMenuBar, SLOT(onAboutToHide()));
- connect(formatMenu, SIGNAL(aboutToShow()), effectsMenuBar, SLOT(onAboutToShow()));
- connect(formatMenu, SIGNAL(aboutToHide()), effectsMenuBar, SLOT(onAboutToHide()));
- connect(viewMenu, SIGNAL(aboutToShow()), effectsMenuBar, SLOT(onAboutToShow()));
- connect(viewMenu, SIGNAL(aboutToHide()), effectsMenuBar, SLOT(onAboutToHide()));
- connect(settingsMenu, SIGNAL(aboutToShow()), effectsMenuBar, SLOT(onAboutToShow()));
- connect(settingsMenu, SIGNAL(aboutToHide()), effectsMenuBar, SLOT(onAboutToHide()));
- connect(helpMenu, SIGNAL(aboutToShow()), effectsMenuBar, SLOT(onAboutToShow()));
- connect(helpMenu, SIGNAL(aboutToHide()), effectsMenuBar, SLOT(onAboutToHide()));
+ connect(fileMenu, SIGNAL(aboutToShow()), this, SLOT(onAboutToShowMenuBarMenu()));
+ connect(fileMenu, SIGNAL(aboutToHide()), this, SLOT(onAboutToHideMenuBarMenu()));
+ connect(editMenu, SIGNAL(aboutToShow()), this, SLOT(onAboutToShowMenuBarMenu()));
+ connect(editMenu, SIGNAL(aboutToHide()), this, SLOT(onAboutToHideMenuBarMenu()));
+ connect(formatMenu, SIGNAL(aboutToShow()), this, SLOT(onAboutToShowMenuBarMenu()));
+ connect(formatMenu, SIGNAL(aboutToHide()), this, SLOT(onAboutToHideMenuBarMenu()));
+ connect(viewMenu, SIGNAL(aboutToShow()), this, SLOT(onAboutToShowMenuBarMenu()));
+ connect(viewMenu, SIGNAL(aboutToHide()), this, SLOT(onAboutToHideMenuBarMenu()));
+ connect(settingsMenu, SIGNAL(aboutToShow()), this, SLOT(onAboutToShowMenuBarMenu()));
+ connect(settingsMenu, SIGNAL(aboutToHide()), this, SLOT(onAboutToHideMenuBarMenu()));
+ connect(helpMenu, SIGNAL(aboutToShow()), this, SLOT(onAboutToShowMenuBarMenu()));
+ connect(helpMenu, SIGNAL(aboutToHide()), this, SLOT(onAboutToHideMenuBarMenu()));
}
void MainWindow::buildStatusBar()
{
- statusBarWidget = new QFrame();
- statusBarLayout = new QGridLayout(statusBarWidget);
+ QFrame* statusBarWidget = new QFrame(statusBar());
+ QGridLayout* statusBarLayout = new QGridLayout(statusBarWidget);
+
+ // Divide the status bar into thirds for placing widgets.
+ QFrame* leftWidget = new QFrame(statusBarWidget);
+ leftWidget->setObjectName("leftStatusBarWidget");
+ leftWidget->setStyleSheet("#leftStatusBarWidget { border: 0; margin: 0; padding: 0 }");
+ QFrame* midWidget = new QFrame(statusBarWidget);
+ midWidget->setObjectName("midStatusBarWidget");
+ midWidget->setStyleSheet("#midStatusBarWidget { border: 0; margin: 0; padding: 0 }");
+ QFrame* rightWidget = new QFrame(statusBarWidget);
+ rightWidget->setObjectName("rightStatusBarWidget");
+ rightWidget->setStyleSheet("#rightStatusBarWidget { border: 0; margin: 0; padding: 0 }");
+
+ QHBoxLayout* leftLayout = new QHBoxLayout(leftWidget);
+ leftWidget->setLayout(leftLayout);
+ leftLayout->setMargin(0);
+ QHBoxLayout* midLayout = new QHBoxLayout(midWidget);
+ midWidget->setLayout(midLayout);
+ midLayout->setMargin(0);
+ QHBoxLayout* rightLayout = new QHBoxLayout(rightWidget);
+ rightWidget->setLayout(rightLayout);
+ rightLayout->setMargin(0);
+
+ // Add left-most widgets to status bar.
+ timeLabel = new TimeLabel(this);
+ leftLayout->addWidget(timeLabel, 0, Qt::AlignLeft);
+ if (!this->isFullScreen() || appSettings->getDisplayTimeInFullScreenEnabled())
+ {
+ timeLabel->hide();
+ }
+
+ previewOptionsButton = new QPushButton();
+ previewOptionsButton->setFocusPolicy(Qt::NoFocus);
+ previewOptionsButton->setToolTip(tr("Preview Options"));
+ connect(previewOptionsButton, SIGNAL(clicked(bool)), this, SLOT(showPreviewOptions()));
+ leftLayout->addWidget(previewOptionsButton, 0, Qt::AlignLeft);
+
+ exportButton = new QPushButton();
+ exportButton->setFocusPolicy(Qt::NoFocus);
+ exportButton->setToolTip(tr("Export"));
+ connect(exportButton, SIGNAL(clicked(bool)), documentManager, SLOT(exportFile()));
+ leftLayout->addWidget(exportButton, 0, Qt::AlignLeft);
+
+ copyHtmlButton = new QPushButton();
+ copyHtmlButton->setFocusPolicy(Qt::NoFocus);
+ copyHtmlButton->setToolTip(tr("Copy HTML"));
+ connect(copyHtmlButton, SIGNAL(clicked(bool)), this, SLOT(copyHtml()));
+ leftLayout->addWidget(copyHtmlButton, 0, Qt::AlignLeft);
+
+ statusBarLayout->addWidget(leftWidget, 0, 0, 0, 1, Qt::AlignLeft);
+
+ // Add middle widgets to status bar.
statusLabel = new QLabel();
+ midLayout->addWidget(statusLabel, 0, Qt::AlignCenter);
statusLabel->hide();
wordCountLabel = new QLabel();
@@ -1407,67 +1726,141 @@
wordCountLabel->setFrameShape(QFrame::NoFrame);
wordCountLabel->setLineWidth(0);
updateWordCount(0);
- statusBarLayout->addWidget(wordCountLabel, 0, 1, Qt::AlignCenter);
- statusBarLayout->setColumnStretch(1, 1);
-
- timeLabel = new TimeLabel(this);
-
- if (this->isFullScreen() && appSettings->getDisplayTimeInFullScreenEnabled())
- {
- statusBarLayout->addWidget(timeLabel, 0, 0, Qt::AlignLeft);
- }
- else
- {
- timeLabel->hide();
- }
+ midLayout->addWidget(wordCountLabel, 0, Qt::AlignCenter);
+ statusBarLayout->addWidget(midWidget, 0, 1, 0, 1, Qt::AlignCenter);
- statusBarLayout->setColumnStretch(0, 0);
+ // Add right-most widgets to status bar.
+ hideOpenHudsButton = new QPushButton();
+ hideOpenHudsButton->setFocusPolicy(Qt::NoFocus);
+ hideOpenHudsButton->setToolTip(tr("Hide Open HUD Windows"));
+ hideOpenHudsButton->setCheckable(true);
+ hideOpenHudsButton->setChecked(appSettings->getHtmlPreviewVisible());
+ connect(hideOpenHudsButton, SIGNAL(toggled(bool)), this, SLOT(toggleOpenHudsVisibility(bool)));
+ rightLayout->addWidget(hideOpenHudsButton, 0, Qt::AlignRight);
+
+ htmlPreviewButton = new QPushButton();
+ htmlPreviewButton->setFocusPolicy(Qt::NoFocus);
+ htmlPreviewButton->setToolTip(tr("Toggle Live HTML Preview"));
+ htmlPreviewButton->setCheckable(true);
+ htmlPreviewButton->setChecked(appSettings->getHtmlPreviewVisible());
+ connect(htmlPreviewButton, SIGNAL(toggled(bool)), this, SLOT(toggleHtmlPreview(bool)));
+ rightLayout->addWidget(htmlPreviewButton, 0, Qt::AlignRight);
- hemingwayModeButton = new QPushButton(tr("Hemingway"));
+ hemingwayModeButton = new QPushButton();
hemingwayModeButton->setFocusPolicy(Qt::NoFocus);
hemingwayModeButton->setToolTip(tr("Toggle Hemingway mode"));
hemingwayModeButton->setCheckable(true);
connect(hemingwayModeButton, SIGNAL(toggled(bool)), this, SLOT(toggleHemingwayMode(bool)));
- statusBar()->addPermanentWidget(hemingwayModeButton);
+ rightLayout->addWidget(hemingwayModeButton, 0, Qt::AlignRight);
- focusModeButton = new QPushButton(tr("Focus"));
+ focusModeButton = new QPushButton();
focusModeButton->setFocusPolicy(Qt::NoFocus);
focusModeButton->setToolTip(tr("Toggle distraction free mode"));
focusModeButton->setCheckable(true);
connect(focusModeButton, SIGNAL(toggled(bool)), this, SLOT(toggleFocusMode(bool)));
- statusBar()->addPermanentWidget(focusModeButton);
+ rightLayout->addWidget(focusModeButton, 0, Qt::AlignRight);
- fullScreenButton = new QCheckBox();
+ fullScreenButton = new QPushButton();
fullScreenButton->setFocusPolicy(Qt::NoFocus);
fullScreenButton->setObjectName("fullscreenButton");
fullScreenButton->setToolTip(tr("Toggle full screen mode"));
fullScreenButton->setCheckable(true);
fullScreenButton->setChecked(this->isFullScreen());
connect(fullScreenButton, SIGNAL(toggled(bool)), this, SLOT(toggleFullScreen(bool)));
- statusBar()->addPermanentWidget(fullScreenButton);
+ rightLayout->addWidget(fullScreenButton, 0, Qt::AlignRight);
+
+ statusBarLayout->addWidget(rightWidget, 0, 2, 0, 1, Qt::AlignRight);
statusBarLayout->setSpacing(0);
statusBarWidget->setLayout(statusBarLayout);
- statusBarWidget->setObjectName("statusbar");
- statusBarWidget->setStyleSheet("background: transparent; border: 0; padding: 0; margin: 0");
statusBar()->addWidget(statusBarWidget, 1);
statusBar()->setSizeGripEnabled(false);
- // The permanent widgets added to the right of the status bar offset the centering
- // of the word count. Set the minimum column width of the status label
- // (the leftmost column in the layout) to compensate and recenter the word count.
+ statusBar()->layout()->setContentsMargins(0, 0, 0, 0);
+ statusBarLayout->setContentsMargins(2, 0, 2, 0);
+
+ statusBar()->show();
+
+ // Add status bar widgets to a list for convenience
+ // in applying graphics effects to them.
//
- statusBarLayout->setColumnMinimumWidth
+ statusBarButtons.append(previewOptionsButton);
+ statusBarButtons.append(exportButton);
+ statusBarButtons.append(copyHtmlButton);
+ statusBarButtons.append(hideOpenHudsButton);
+ statusBarButtons.append(htmlPreviewButton);
+ statusBarButtons.append(hemingwayModeButton);
+ statusBarButtons.append(focusModeButton);
+ statusBarButtons.append(fullScreenButton);
+
+ statusBarWidgets = statusBarButtons;
+ statusBarWidgets.append(timeLabel);
+ statusBarWidgets.append(wordCountLabel);
+}
+
+void MainWindow::showHud(HudWindow *hud)
+{
+ hud->show();
+ hud->activateWindow();
+
+ if (!openHuds.contains(hud))
+ {
+ openHuds.append(hud);
+ }
+}
+
+void MainWindow::adjustEditorWidth(int width)
+{
+ int editorWidth = width;
+
+ if (htmlPreview->isVisible())
+ {
+ editorWidth /= 2;
+
+ QList sizes;
+ sizes.append(editorWidth);
+ sizes.append(editorWidth);
+ splitter->setSizes(sizes);
+ }
+
+ // Resize the editor's margins based on the size of the window.
+ editor->setupPaperMargins(editorWidth);
+
+ // Scroll to cursor position.
+ editor->centerCursor();
+}
+
+void MainWindow::applyStatusBarStyle()
+{
+ QString styleSheet = "";
+ QTextStream stream(&styleSheet);
+
+ int border = 0;
+
+ if
(
- 0,
- hemingwayModeButton->sizeHint().width()
- +
- focusModeButton->sizeHint().width()
- +
- fullScreenButton->sizeHint().width()
- );
+ (EditorAspectStretch == theme.getEditorAspect())
+ ||
+ htmlPreview->isVisible()
+ )
+ {
+ border = 1;
+ }
- statusBar()->show();
+ QColor borderColor = theme.getDefaultTextColor();
+ borderColor.setAlpha(30);
+
+ QString borderColorRGBA = ColorHelper::toRgbaString(borderColor);
+
+ stream
+ << "QStatusBar { margin: 0; padding: 0; border-top: "
+ << border
+ << "px solid "
+ << borderColorRGBA
+ << "; border-left: 0; border-right: 0; border-bottom: 0; background: transparent } "
+ << "QStatusBar::item { border: 0; padding: 0; margin: 0 } ";
+
+ statusBar()->setStyleSheet(styleSheet);
}
void MainWindow::applyTheme()
@@ -1485,36 +1878,53 @@
QString styleSheet;
QTextStream stream(&styleSheet);
- QColor scrollBarColor = theme.getDefaultTextColor();
+ double fgBrightness = ColorHelper::getLuminance(theme.getDefaultTextColor());
+ double bgBrightness = ColorHelper::getLuminance(theme.getEditorBackgroundColor());
- // If the background color is brighter than the text, then
- // set the scrollbar color to be a blend of the text foreground
- // with the editor background color, rather than calling
- // QColor::lighter(), which doesn't work on black due to
- // black having a value of zero.
- //
- if
- (
- ColorHelper::getLuminance(theme.getEditorBackgroundColor())
- > ColorHelper::getLuminance(theme.getDefaultTextColor())
- )
+ QColor scrollBarColor;
+ QColor chromeFgColor = theme.getDefaultTextColor();
+
+ // If the background color is brighter than the foreground color...
+ if (bgBrightness > fgBrightness)
{
- scrollBarColor = theme.getDefaultTextColor();
- scrollBarColor.setAlpha(100);
+ // Create a UI chrome color based on a lightened editor text color,
+ // such that the new color achieves a lower contrast ratio.
+ //
+ chromeFgColor = ColorHelper::lightenToMatchContrastRatio
+ (
+ theme.getDefaultTextColor(),
+ theme.getEditorBackgroundColor(),
+ 2.1
+ );
- scrollBarColor =
- ColorHelper::applyAlpha
+ // Slightly blend the new UI chrome color with the editor background color
+ // to help it match the theme better.
+ //
+ chromeFgColor.setAlpha(220);
+ chromeFgColor = ColorHelper::applyAlpha
+ (
+ chromeFgColor,
+ theme.getEditorBackgroundColor()
+ );
+
+ // Blend the UI chrome color with the background color even further for
+ // the scroll bar color, as the scroll bar will otherwise tend to
+ // stand out.
+ //
+ scrollBarColor = chromeFgColor;
+ scrollBarColor.setAlpha(200);
+ scrollBarColor = ColorHelper::applyAlpha
(
scrollBarColor,
theme.getEditorBackgroundColor()
);
+
}
- // Else simply set the scrollbar color to be the darkened
- // text color.
- //
+ // Else if the foreground color is brighter than the background color...
else
{
- scrollBarColor = theme.getDefaultTextColor().darker(160);
+ chromeFgColor = chromeFgColor.darker(120);
+ scrollBarColor = chromeFgColor;
}
QString scrollbarColorRGB = ColorHelper::toRgbString(scrollBarColor);
@@ -1545,78 +1955,38 @@
QString menuBarItemBgPressColorRGBA;
QString fullScreenIcon;
- QString fullScreenIconHover;
- QString fullScreenIconPressed;
-
- QString restoreIcon;
- QString restoreIconHover;
- QString restoreIconPressed;
+ QString focusIcon;
+ QString hemingwayIcon;
+ QString htmlPreviewIcon;
+ QString hideOpenHudsIcon;
+ QString copyHtmlIcon;
+ QString exportIcon;
+ QString markdownOptionsIcon;
QString statusBarItemFgColorRGB;
QString statusBarButtonFgPressHoverColorRGB;
QString statusBarButtonBgPressHoverColorRGBA;
- // Add status bar widgets to a list for convenience
- // in applying graphics effects to them.
- //
- QList statusBarWidgets;
- statusBarWidgets.append(timeLabel);
- statusBarWidgets.append(wordCountLabel);
- statusBarWidgets.append(hemingwayModeButton);
- statusBarWidgets.append(focusModeButton);
- statusBarWidgets.append(fullScreenButton);
-
if (EditorAspectStretch == theme.getEditorAspect())
{
- QColor buttonFgColor = theme.getDefaultTextColor();
-
- // If the background color is brighter than the text, then
- // set the button/label foreground color to be a blend of the
- // text foreground with the editor background color, rather than
- // calling QColor::lighter(), which doesn't work on black due to
- // black having a value of zero.
- //
- if
- (
- ColorHelper::getLuminance(theme.getEditorBackgroundColor())
- >
- ColorHelper::getLuminance(buttonFgColor)
- )
- {
- buttonFgColor = theme.getDefaultTextColor();
- buttonFgColor.setAlpha(130);
+ fullScreenIcon = ":/resources/images/fullscreen-dark.svg";
+ focusIcon = ":/resources/images/focus-dark.svg";
+ hemingwayIcon = ":/resources/images/hemingway-dark.svg";
+ htmlPreviewIcon = ":/resources/images/html-preview-dark.svg";
+ hideOpenHudsIcon = ":/resources/images/hide-huds-dark.svg";
+ copyHtmlIcon = ":/resources/images/copy-html-dark.svg";
+ exportIcon = ":/resources/images/export-dark.svg";
+ markdownOptionsIcon = ":/resources/images/configure-dark.svg";
- buttonFgColor =
- ColorHelper::applyAlpha
- (
- buttonFgColor,
- theme.getEditorBackgroundColor()
- );
- }
- // Else simply set the button/label color to be the darkened
- // text color.
- //
- else
- {
- buttonFgColor = theme.getDefaultTextColor().darker(160);
- }
-
- QColor buttonPressColor(theme.getDefaultTextColor());
- buttonPressColor.setAlpha(20);
+ QColor buttonPressColor(chromeFgColor);
+ buttonPressColor.setAlpha(30);
- menuBarItemFgColorRGB = ColorHelper::toRgbString(buttonFgColor);
+ menuBarItemFgColorRGB = ColorHelper::toRgbString(chromeFgColor);
menuBarItemBgColorRGBA = "transparent";
menuBarItemFgPressColorRGB = menuBarItemFgColorRGB;
menuBarItemBgPressColorRGBA =
ColorHelper::toRgbaString(buttonPressColor);
- fullScreenIcon = ":/resources/images/view-fullscreen-dark.svg";
- fullScreenIconHover = ":/resources/images/view-fullscreen-dark-hover.svg";
- fullScreenIconPressed = ":/resources/images/view-fullscreen-dark-hover.svg";
- restoreIcon = ":/resources/images/view-restore-dark.svg";
- restoreIconHover = ":/resources/images/view-restore-dark-hover.svg";
- restoreIconPressed = ":/resources/images/view-restore-dark-hover.svg";
-
statusBarItemFgColorRGB = menuBarItemFgColorRGB;
statusBarButtonFgPressHoverColorRGB = menuBarItemFgPressColorRGB;
statusBarButtonBgPressHoverColorRGBA = menuBarItemBgPressColorRGBA;
@@ -1624,24 +1994,29 @@
// Remove old graphics effects from the status bar widgets.
foreach (QWidget* widget, statusBarWidgets)
{
+ // Do NOT delete the old QGraphicsColorizeEffect. Qt seems to
+ // delete it at an arbitrary time, based on parental ownership.
+ //
widget->setGraphicsEffect(NULL);
}
- // Remove menu bar text drop shadow effect.
- effectsMenuBar->removeDropShadow();
+ // Set colorize effects for icon buttons.
+ foreach (QWidget* widget, statusBarButtons)
+ {
+ QGraphicsColorizeEffect* colorizeEffect = new QGraphicsColorizeEffect(this);
+ colorizeEffect->setColor(chromeFgColor);
+ widget->setGraphicsEffect(colorizeEffect);
+ }
- // We can't reuse the old QGraphicsColorizeEffect once it's
- // been removed from the button, since Qt seems to delete it
- // at an arbitrary time, sooner or later causing a crash while
- // switching themes. Thus, create a new one.
- //
- fullScreenButtonColorEffect = new QGraphicsColorizeEffect();
- fullScreenButtonColorEffect->setColor(buttonFgColor);
- fullScreenButton->setGraphicsEffect(fullScreenButtonColorEffect);
+ // Remove menu bar text drop shadow effect.
+ this->menuBar()->setGraphicsEffect(NULL);
}
else
{
- QColor chromeFgColor = QColor("#FFFFFF");
+ // Make the UI chrome color an off white. A drop shadow will be
+ // applied to supply contrast with the background image.
+ //
+ QColor chromeFgColor = QColor("#e5e8e8");
menuBarItemFgColorRGB = ColorHelper::toRgbString(chromeFgColor);
menuBarItemBgColorRGBA = "transparent";
@@ -1649,22 +2024,19 @@
chromeFgColor.setAlpha(50);
menuBarItemBgPressColorRGBA = ColorHelper::toRgbaString(chromeFgColor);
- fullScreenIcon = ":/resources/images/view-fullscreen-light.svg";
- fullScreenIconHover = ":/resources/images/view-fullscreen-light-hover.svg";
- fullScreenIconPressed = ":/resources/images/view-fullscreen-light-hover.svg";
- restoreIcon = ":/resources/images/view-restore-light.svg";
- restoreIconHover = ":/resources/images/view-restore-light-hover.svg";
- restoreIconPressed = ":/resources/images/view-restore-light-hover.svg";
+ fullScreenIcon = ":/resources/images/fullscreen-light.svg";
+ focusIcon = ":/resources/images/focus-light.svg";
+ hemingwayIcon = ":/resources/images/hemingway-light.svg";
+ htmlPreviewIcon = ":/resources/images/html-preview-light.svg";
+ hideOpenHudsIcon = ":/resources/images/hide-huds-light.svg";
+ copyHtmlIcon = ":/resources/images/copy-html-light.svg";
+ exportIcon = ":/resources/images/export-light.svg";
+ markdownOptionsIcon = ":/resources/images/configure-light.svg";
statusBarItemFgColorRGB = menuBarItemFgColorRGB;
statusBarButtonFgPressHoverColorRGB = menuBarItemFgPressColorRGB;
statusBarButtonBgPressHoverColorRGBA = menuBarItemBgPressColorRGBA;
- // Do NOT delete the old QGraphicsColorizeEffect. Qt seems to
- // delete it at an arbitrary time, based on parental ownership.
- //
- fullScreenButton->setGraphicsEffect(NULL);
-
// Set drop shadow effect for status bar widgets.
foreach (QWidget* widget, statusBarWidgets)
{
@@ -1677,8 +2049,14 @@
widget->setGraphicsEffect(chromeDropShadowEffect);
}
+ QGraphicsDropShadowEffect* menuBarTextDropShadowEffect = new QGraphicsDropShadowEffect();
+ menuBarTextDropShadowEffect->setColor(QColor(Qt::black));
+ menuBarTextDropShadowEffect->setBlurRadius(3.5);
+ menuBarTextDropShadowEffect->setXOffset(1.0);
+ menuBarTextDropShadowEffect->setYOffset(1.0);
+
// Set drop shadow effect for menu bar text.
- effectsMenuBar->setDropShadow(Qt::black, 3.5, 1.0, 1.0);
+ this->menuBar()->setGraphicsEffect(menuBarTextDropShadowEffect);
}
editor->setAspect(theme.getEditorAspect());
@@ -1686,14 +2064,22 @@
styleSheet = "";
QString corners = "";
+ QString scrollBarRadius = "0px";
+ QString scrollAreaPadding = "3px 3px 0px 3px";
- if
- (
- (EditorCornersRounded == theme.getEditorCorners()) &&
- (EditorAspectStretch != theme.getEditorAspect())
- )
+ if (EditorAspectCenter == theme.getEditorAspect())
{
- corners = "border-radius: 8;";
+ scrollAreaPadding = "3px";
+ }
+
+ if (InterfaceStyleRounded == appSettings->getInterfaceStyle())
+ {
+ if (EditorAspectCenter == theme.getEditorAspect())
+ {
+ corners = "border-radius: 8;";
+ }
+
+ scrollBarRadius = "4px";
}
QString defaultTextColorRGB =
@@ -1712,15 +2098,21 @@
<< editorSelectionBgColorRGB
<< " } "
<< "QAbstractScrollArea::corner { background: transparent } "
- << "QAbstractScrollArea { padding: 3 } "
+ << "QAbstractScrollArea { padding: "
+ << scrollAreaPadding
+ << "; margin: 0 } "
<< "QScrollBar::horizontal { border: 0; background: transparent; height: 8px; margin: 0 } "
<< "QScrollBar::handle:horizontal { border: 0; background: "
<< scrollbarColorRGB
- << "; min-width: 50px; border-radius: 4px; } "
+ << "; min-width: 50px; border-radius: "
+ << scrollBarRadius
+ << "; } "
<< "QScrollBar::vertical { border: 0; background: transparent; width: 8px; margin: 0 } "
<< "QScrollBar::handle:vertical { border: 0; background: "
<< scrollbarColorRGB
- << "; min-height: 50px; border-radius: 4px; } "
+ << "; min-height: 50px; border-radius: "
+ << scrollBarRadius
+ << "; } "
<< "QScrollBar::handle:vertical:hover { background: "
<< scrollBarHoverRGB
<< " } "
@@ -1737,44 +2129,14 @@
theme.getEditorBackgroundColor(),
theme.getMarkupColor(),
theme.getLinkColor(),
+ theme.getHeadingColor(),
+ theme.getEmphasisColor(),
+ theme.getBlockquoteColor(),
+ theme.getCodeColor(),
theme.getSpellingErrorColor()
);
editor->setStyleSheet(styleSheet);
- // Ensure DPI scaling of full screen button with application menu bar font.
- //
- int menuBarFontWidth = this->menuBar()->fontInfo().pixelSize() + 3;
- styleSheet = "";
-
- stream
- << "QCheckBox { background: transparent; padding: 3 3 3 3; margin: 0 5 0 5 } "
- << "QCheckBox::indicator { width: "
- << menuBarFontWidth
- << "px; height: "
- << menuBarFontWidth
- << "px; background: transparent } "
- << "QCheckBox::indicator:unchecked { image: url("
- << fullScreenIcon
- << ") } "
- << "QCheckBox::indicator:unchecked:hover { image: url("
- << fullScreenIconHover
- << ") } "
- << "QCheckBox::indicator:unchecked:pressed { image: url("
- << fullScreenIconPressed
- << ") } "
- << "QCheckBox::indicator:checked { image: url("
- << restoreIcon
- << ") } "
- << "QCheckBox::indicator:checked:hover { image: url("
- << restoreIconHover
- << ") } "
- << "QCheckBox::indicator:checked:pressed { image: url("
- << restoreIconHover
- << ") } "
- ;
-
- fullScreenButton->setStyleSheet(styleSheet);
-
styleSheet = "";
// Wipe out old background image drawing material.
@@ -1810,6 +2172,16 @@
setStyleSheet(styleSheet);
+ styleSheet = "";
+
+ stream
+ << "QSplitter::handle:vertical { height: 0px; } "
+ << "QSplitter::handle:horizontal { width: 0px; } ";
+
+ splitter->setStyleSheet(styleSheet);
+
+ applyStatusBarStyle();
+
// Make the word count and focus mode button font size
// match the menu bar's font size, since on Windows using
@@ -1822,27 +2194,48 @@
styleSheet = "";
stream
- << "QStatusBar { margin: 0; padding: 0; border: 0; background: transparent } "
- << "QStatusBar::item { border: 0 } "
<< "QLabel { font-size: "
<< menuBarFontSize
- << "pt; margin: 3px; padding: 5px; border: 0; background: transparent; color: "
+ << "pt; margin: 0px; padding: 5px; border: 0; background: transparent; color: "
<< statusBarItemFgColorRGB
<< " } "
- << "QPushButton { font-size: "
- << menuBarFontSize
- << "pt; padding: 5px; margin: 3px; border: 0; border-radius: 5px; background: transparent"
+ << "QPushButton { padding: 2 5 2 5; margin: 0; border: 0; border-radius: 5px; background: transparent"
<< "; color: "
<< statusBarItemFgColorRGB
<< " } "
- << "QPushButton:pressed, QPushButton:flat, QPushButton:checked, QPushButton:hover { padding: 5px; margin: 3px; color: "
+ << "QPushButton:pressed, QPushButton:flat, QPushButton:checked, QPushButton:hover { padding: 2 5 2 5; margin: 0; color: "
<< statusBarButtonFgPressHoverColorRGB
<< "; background-color: "
<< statusBarButtonBgPressHoverColorRGBA
<< " } "
;
- statusBar()->setStyleSheet(styleSheet);
+ foreach (QWidget* w, statusBarWidgets)
+ {
+ w->setStyleSheet(styleSheet);
+ }
+
+ // Ensure DPI scaling of buttons with application menu bar font.
+ //
+ int menuBarFontWidth = this->menuBar()->fontInfo().pixelSize() + 10;
+
+ fullScreenButton->setIcon(QIcon(fullScreenIcon));
+ fullScreenButton->setIconSize(QSize(menuBarFontWidth, menuBarFontWidth));
+ focusModeButton->setIcon(QIcon(focusIcon));
+ focusModeButton->setIconSize(QSize(menuBarFontWidth, menuBarFontWidth));
+ hemingwayModeButton->setIcon(QIcon(hemingwayIcon));
+ hemingwayModeButton->setIconSize(QSize(menuBarFontWidth, menuBarFontWidth));
+ htmlPreviewButton->setIcon(QIcon(htmlPreviewIcon));
+ htmlPreviewButton->setIconSize(QSize(menuBarFontWidth, menuBarFontWidth));
+ hideOpenHudsButton->setIcon(QIcon(hideOpenHudsIcon));
+ hideOpenHudsButton->setIconSize(QSize(menuBarFontWidth, menuBarFontWidth));
+ copyHtmlButton->setIcon(QIcon(copyHtmlIcon));
+ copyHtmlButton->setIconSize(QSize(menuBarFontWidth, menuBarFontWidth));
+ exportButton->setIcon(QIcon(exportIcon));
+ exportButton->setIconSize(QSize(menuBarFontWidth, menuBarFontWidth));
+ previewOptionsButton->setIcon(QIcon(markdownOptionsIcon));
+ previewOptionsButton->setIconSize(QSize(menuBarFontWidth, menuBarFontWidth));
+
styleSheet = "";
@@ -1860,21 +2253,6 @@
// Style the HUDs
- QColor alphaHudBackgroundColor = theme.getHudBackgroundColor();
- alphaHudBackgroundColor.setAlpha(appSettings->getHudOpacity());
-
- outlineHud->setForegroundColor(theme.getHudForegroundColor());
- outlineHud->setBackgroundColor(alphaHudBackgroundColor);
- cheatSheetHud->setForegroundColor(theme.getHudForegroundColor());
- cheatSheetHud->setBackgroundColor(alphaHudBackgroundColor);
- documentStatsHud->setForegroundColor(theme.getHudForegroundColor());
- documentStatsHud->setBackgroundColor(alphaHudBackgroundColor);
- sessionStatsHud->setForegroundColor(theme.getHudForegroundColor());
- sessionStatsHud->setBackgroundColor(alphaHudBackgroundColor);
-
- // Style the outline itself.
- alphaHudBackgroundColor.setAlpha(0);
-
QString hudFgString = ColorHelper::toRgbString(theme.getHudForegroundColor());
QColor alphaHudSelectionColor = theme.getHudForegroundColor();
@@ -1884,6 +2262,13 @@
int hudFontSize = cheatSheetWidget->font().pointSize();
+ QString listSelectionBorderRadius = "3px";
+
+ if (InterfaceStyleSquare == appSettings->getInterfaceStyle())
+ {
+ listSelectionBorderRadius = "0px";
+ }
+
// Important! For QListWidget (used in Outline HUD), set
// QListWidget { outline: none } for the style sheet to get rid of the
// focus rectangle without losing keyboard focus capability.
@@ -1902,7 +2287,9 @@
<< " } QListWidget::item:alternate { padding: 1; margin: 0; background-color: "
<< "rgba(255, 255, 255, 10)"
<< " } "
- << "QListWidget::item:selected { border-radius: 3px; color: "
+ << "QListWidget::item:selected { border-radius: "
+ << listSelectionBorderRadius
+ << "; color: "
<< hudSelectionFgString
<< "; background-color: "
<< hudSelectionBgString
@@ -1916,7 +2303,9 @@
<< "; font-size: "
<< hudFontSize
<< "pt } QListWidget::item { padding: 1 0 1 0; margin: 0; background-color: transparent } "
- << "QListWidget::item:selected { border-radius: 3px; color: "
+ << "QListWidget::item:selected { border-radius: "
+ << listSelectionBorderRadius
+ << "; color: "
<< hudSelectionFgString
<< "; background-color: "
<< hudSelectionBgString
@@ -1924,6 +2313,13 @@
;
}
+ QString hudScrollBarRadius = "4px";
+
+ if (InterfaceStyleSquare == appSettings->getInterfaceStyle())
+ {
+ hudScrollBarRadius = "0px";
+ }
+
stream << "QLabel { border: 0; padding: 0; margin: 0; background-color: transparent; "
<< "font-size: "
<< hudFontSize
@@ -1931,22 +2327,35 @@
<< "QScrollBar::horizontal { border: 0; background: transparent; height: 8px; margin: 0 } "
<< "QScrollBar::handle:horizontal { border: 0; background: "
<< hudFgString
- << "; min-width: 20px; border-radius: 4px; } "
+ << "; min-width: 20px; border-radius: "
+ << hudScrollBarRadius
+ << "; } "
<< "QScrollBar::vertical { border: 0; background: transparent; width: 8px; margin: 0 } "
<< "QScrollBar::handle:vertical { border: 0; background: "
<< hudFgString
- << "; min-height: 20px; border-radius: 4px;} "
+ << "; min-height: 20px; border-radius: "
+ << hudScrollBarRadius
+ << "; } "
<< "QScrollBar::add-line { background: transparent; border: 0 } "
<< "QScrollBar::sub-line { background: transparent; border: 0 } "
<< "QAbstractScrollArea::corner { background: transparent } "
;
+ QColor alphaHudBackgroundColor = theme.getHudBackgroundColor();
+ alphaHudBackgroundColor.setAlpha(appSettings->getHudOpacity());
+
+ foreach (HudWindow* hud, huds)
+ {
+ hud->setForegroundColor(theme.getHudForegroundColor());
+ hud->setBackgroundColor(alphaHudBackgroundColor);
+ }
+
outlineWidget->setStyleSheet(styleSheet);
cheatSheetWidget->setStyleSheet(styleSheet);
documentStatsWidget->setStyleSheet(styleSheet);
sessionStatsWidget->setStyleSheet(styleSheet);
- editor->setupPaperMargins(this->width());
+ adjustEditorWidth(this->width());
}
// Lifted from FocusWriter's theme.cpp file
@@ -2039,3 +2448,70 @@
painter.end();
}
+
+void MainWindow::showMenuBar()
+{
+ // Protect against the menu bar being set to a height of zero.
+ if (menuBarHeight > 0)
+ {
+ // Restore the menu bar to its original height to make
+ // it visible.
+ //
+ this->menuBar()->setFixedHeight(menuBarHeight);
+ }
+}
+
+void MainWindow::hideMenuBar()
+{
+ // Protect against menuBarHeight being set to zero in
+ // case this method is mistakenly called twice in
+ // succession.
+ //
+ if (this->menuBar()->height() > 0)
+ {
+ // Store the menu bar height while it was visible.
+ menuBarHeight = this->menuBar()->height();
+ }
+
+ // Hide the menu bar by setting it's height to zero. Note that
+ // we can't call menuBar()->hide() because that will disable
+ // the application shortcut keys in Qt 5.
+ //
+ this->menuBar()->setFixedHeight(0);
+}
+
+bool MainWindow::isMenuBarVisible() const
+{
+ return (this->menuBar()->height() > 0);
+}
+
+void MainWindow::setOpenHudsVisibility(bool visible)
+{
+ openHudsVisible = visible;
+
+ foreach (HudWindow* hud, openHuds)
+ {
+ hud->setVisible(visible);
+ }
+
+ if (visible)
+ {
+ hideOpenHudsAction->setText(tr("Hide Open &HUD Windows"));
+
+ hideOpenHudsButton->blockSignals(true);
+ hideOpenHudsButton->setChecked(false);
+ hideOpenHudsButton->setToolTip(tr("Hide Open HUD Windows"));
+ hideOpenHudsButton->blockSignals(false);
+
+ // Set focus on the editor.
+ this->activateWindow();
+ }
+ else
+ {
+ hideOpenHudsAction->setText(tr("Show Open &HUD Windows"));
+ hideOpenHudsButton->blockSignals(true);
+ hideOpenHudsButton->setChecked(true);
+ hideOpenHudsButton->setToolTip(tr("Show Open HUD Windows"));
+ hideOpenHudsButton->blockSignals(false);
+ }
+}
diff -Nru ghostwriter-1.5.0+ds1/src/MainWindow.h ghostwriter-1.6.0/src/MainWindow.h
--- ghostwriter-1.5.0+ds1/src/MainWindow.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MainWindow.h 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014-2017 wereturtle
+ * Copyright (C) 2014-2018 wereturtle
*
* 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
@@ -35,7 +35,6 @@
#include "HtmlPreview.h"
#include "AppSettings.h"
#include "TimeLabel.h"
-#include "EffectsMenuBar.h"
#include "find_dialog.h"
#include "spelling/dictionary_manager.h"
@@ -70,6 +69,7 @@
void resizeEvent(QResizeEvent* event);
void moveEvent(QMoveEvent* event);
void keyPressEvent(QKeyEvent* e);
+ bool eventFilter(QObject* obj, QEvent* event);
void paintEvent(QPaintEvent* event);
void closeEvent(QCloseEvent* event);
@@ -78,6 +78,7 @@
void changeTheme();
void showFindReplaceDialog();
void openPreferencesDialog();
+ void toggleHtmlPreview(bool checked);
void toggleHemingwayMode(bool checked);
void toggleFocusMode(bool checked);
void toggleFullScreen(bool checked);
@@ -86,21 +87,28 @@
void toggleFileHistoryEnabled(bool checked);
void toggleDisplayTimeInFullScreen(bool checked);
void toggleDesktopCompositingEffects(bool checked);
+ void toggleOpenHudsVisibility();
+ void toggleOpenHudsVisibility(bool checked);
void changeHudButtonLayout(HudWindowButtonLayout layout);
void changeEditorWidth(EditorWidth editorWidth);
+ void changeInterfaceStyle(InterfaceStyle style);
void insertImage();
+ void showStyleSheetManager();
void showQuickReferenceGuide();
void showWikiPage();
void showOutlineHud();
void showCheatSheetHud();
void showDocumentStatisticsHud();
void showSessionStatisticsHud();
+ void onHideHudsOnPreviewChanged(bool enabled);
+ void onHudClosed();
+ void onTypingPaused();
+ void onTypingResumed();
void onQuickRefGuideLinkClicked(const QUrl& url);
void showAbout();
void updateWordCount(int newWordCount);
void changeFocusMode(FocusMode focusMode);
void applyTheme(const Theme& theme);
- void openHtmlPreview();
void openRecentFile();
void refreshRecentFiles();
void clearRecentFileHistory();
@@ -111,31 +119,46 @@
void onFontSizeChanged(int size);
void onSetLocale();
void changeHudOpacity(int value);
+ void copyHtml();
+ void showPreviewOptions();
+ void onAboutToHideMenuBarMenu();
+ void onAboutToShowMenuBarMenu();
private:
MarkdownEditor* editor;
+ QSplitter* splitter;
DocumentManager* documentManager;
ThemeFactory* themeFactory;
Theme theme;
QString language;
- QGridLayout* statusBarLayout;
QLabel* wordCountLabel;
QLabel* statusLabel;
TimeLabel* timeLabel;
+ QPushButton* previewOptionsButton;
+ QPushButton* exportButton;
+ QPushButton* copyHtmlButton;
QPushButton* hemingwayModeButton;
QPushButton* focusModeButton;
+ QPushButton* htmlPreviewButton;
+ QPushButton* hideOpenHudsButton;
FindDialog* findReplaceDialog;
HtmlPreview* htmlPreview;
QWebView* quickReferenceGuideViewer;
+ QAction* htmlPreviewMenuAction;
QAction* fullScreenMenuAction;
- QCheckBox* fullScreenButton;
+ QPushButton* fullScreenButton;
QGraphicsColorizeEffect* fullScreenButtonColorEffect;
- QFrame* statusBarWidget;
HudWindow* outlineHud;
Outline* outlineWidget;
HudWindow* cheatSheetHud;
HudWindow* documentStatsHud;
HudWindow* sessionStatsHud;
+ QVector huds;
+ QVector openHuds;
+ QVector hudGeometryKeys;
+ QVector hudOpenKeys;
+ bool openHudsVisible;
+ QAction* hideOpenHudsAction;
DocumentStatistics* documentStats;
DocumentStatisticsWidget* documentStatsWidget;
SessionStatistics* sessionStats;
@@ -144,9 +167,13 @@
QPixmap originalBackgroundImage;
QPixmap adjustedBackgroundImage;
QFileSystemWatcher* fileWatcher;
- QDialog* hudOpacityDialog = NULL;
QAction* recentFilesActions[MAX_RECENT_FILES];
- EffectsMenuBar* effectsMenuBar;
+ int menuBarHeight = 0;
+ QPoint lastMousePos;
+ bool menuBarMenuActivated;
+
+ QList statusBarButtons;
+ QList statusBarWidgets;
Exporter* exporter;
QThread* exporterThread;
@@ -163,11 +190,26 @@
QActionGroup* actionGroup = 0
);
+ HudWindow* createHudWindow
+ (
+ const QString& title,
+ QWidget* centralWidget,
+ const QString& geometrySettingsKey,
+ const QString& openSettingsKey
+ );
+
void buildMenuBar();
void buildStatusBar();
+ void showHud(HudWindow* hud);
+ void adjustEditorWidth(int width);
+ void applyStatusBarStyle();
void applyTheme();
void predrawBackgroundImage();
+ void showMenuBar();
+ void hideMenuBar();
+ bool isMenuBarVisible() const;
+ void setOpenHudsVisibility(bool visible);
};
#endif
diff -Nru ghostwriter-1.5.0+ds1/src/MarkdownEditor.cpp ghostwriter-1.6.0/src/MarkdownEditor.cpp
--- ghostwriter-1.5.0+ds1/src/MarkdownEditor.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MarkdownEditor.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014-2017 wereturtle
+ * Copyright (C) 2014-2018 wereturtle
* Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Graeme Gott
* Copyright (C) Dmitry Shachnev 2012
*
@@ -77,6 +77,10 @@
numberedListRegex.setPattern("^\\s*([0-9]+)[.)]\\s+");
bulletListRegex.setPattern("^\\s*[+*-]\\s+");
taskListRegex.setPattern("^\\s*[-*+] \\[([x ])\\]\\s+");
+ emptyBlockquoteRegex.setPattern("^ {0,3}(>\\s*)+$");
+ emptyNumberedListRegex.setPattern("^\\s*([0-9]+)[.)]\\s+$");
+ emptyBulletListRegex.setPattern("^\\s*[+*-]\\s+$");
+ emptyTaskListRegex.setPattern("^\\s*[-*+] \\[([x ])\\]\\s+$");
this->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@@ -94,6 +98,7 @@
insertSpacesForTabs = false;
setTabulationWidth(4);
editorWidth = EditorWidthMedium;
+ editorCorners = InterfaceStyleRounded;
markupPairs.insert('"', '"');
markupPairs.insert('\'', '\'');
@@ -148,6 +153,10 @@
QColor(Qt::white),
QColor(Qt::black),
QColor(Qt::blue),
+ QColor(Qt::black),
+ QColor(Qt::black),
+ QColor(Qt::black),
+ QColor(Qt::black),
QColor(Qt::red)
);
@@ -180,8 +189,145 @@
void MarkdownEditor::paintEvent(QPaintEvent* event)
{
+ QPainter painter(viewport());
+ QRect viewportRect = viewport()->rect();
+ painter.fillRect(viewportRect, Qt::transparent);
+
+ QPointF offset(contentOffset());
+ QTextBlock block = firstVisibleBlock();
+
+ bool firstVisible = true;
+
+ QRectF blockAreaRect; // Code or block quote rect.
+ bool inBlockArea = false;
+ BlockType blockType = BlockTypeNone;
+ bool clipTop = false;
+ bool drawBlock = false;
+ int dy = 0;
+ bool done = false;
+
+ int cornerRadius = 5;
+
+ if (InterfaceStyleSquare == editorCorners)
+ {
+ cornerRadius = 0;
+ }
+
+ // Draw text block area backgrounds for code blocks and block quotes.
+ // The backgrounds are drawn per each block area (consisting of multiple
+ // text blocks or lines), rather than one rectangle area per text block/
+ // line in case there are margins between each text block. This way,
+ // the background will extend to cover the margins between text blocks
+ // as well.
+ //
+ // NOTE: Algorithm for looping through text blocks is a partial lift from
+ // Qt's QPlainTextEdit paintEvent() code. Please refer to the
+ // LGPL v. 3 license for the original Qt code.
+ //
+ while (block.isValid() && !done)
+ {
+ QRectF r = blockBoundingRect(block).translated(offset);
+
+ // If the block begins a new text block area...
+ if (!inBlockArea && atBlockAreaStart(block, blockType))
+ {
+ blockAreaRect = r;
+ dy = 0;
+ inBlockArea = true;
+
+ BlockType prevType;
+
+ // If this is the first visible block within the viewport
+ // and if the previous block is part of the text block area,
+ // then the rectangle to draw for the block area will have
+ // its top clipped by the viewport and will need to be
+ // drawn specially.
+ //
+ if
+ (
+ firstVisible
+ && atBlockAreaStart(block.previous(), prevType)
+ && (blockType == prevType)
+ )
+ {
+ clipTop = true;
+ }
+ }
+ // Else if the block ends a text block area...
+ else if (inBlockArea && atBlockAreaEnd(block, blockType))
+ {
+ drawBlock = true;
+ inBlockArea = false;
+ blockAreaRect.setHeight(dy);
+ }
+
+ // If the block is at the end of the document and ends a text
+ // block area...
+ //
+ if (inBlockArea && (block == this->document()->lastBlock()))
+ {
+ drawBlock = true;
+ inBlockArea = false;
+ dy += r.height();
+ blockAreaRect.setHeight(dy);
+ }
+
+ offset.ry() += r.height();
+ dy += r.height();
+
+ // If this is the last text block visible within the viewport...
+ if (offset.y() > viewportRect.height())
+ {
+ if (inBlockArea)
+ {
+ blockAreaRect.setHeight(dy);
+ drawBlock = true;
+ }
+
+ // Finished drawing.
+ done = true;
+ }
+
+ if (drawBlock)
+ {
+ painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ painter.setPen(Qt::NoPen);
+ painter.setBrush(QBrush(blockColor));
+
+ // If the first visible block is "clipped" such that the previous block
+ // is part of the text block area, then only draw a rectangle with the
+ // bottom corners rounded, and with the top corners square to reflect
+ // that the first visible block is part of a larger block of text.
+ //
+ if (clipTop)
+ {
+ QPainterPath path;
+ path.setFillRule(Qt::WindingFill);
+ path.addRoundedRect(blockAreaRect, cornerRadius, cornerRadius);
+ qreal adjustedHeight = blockAreaRect.height() / 2;
+ path.addRect(blockAreaRect.adjusted(0, 0, 0, -adjustedHeight));
+ painter.drawPath(path.simplified());
+ clipTop = false;
+ }
+ // Else draw the entire rectangle with all corners rounded.
+ else
+ {
+ painter.drawRoundedRect(blockAreaRect, cornerRadius, cornerRadius);
+ }
+
+ drawBlock = false;
+ }
+
+ block = block.next();
+ firstVisible = false;
+ }
+
+ painter.end();
+
+ // Draw the visible editor text.
QPlainTextEdit::paintEvent(event);
-
+
+ // Draw the text cursor/caret.
if (textCursorVisible)
{
// Get the cursor rect so that we have the ideal height for it,
@@ -193,6 +339,7 @@
QPainter painter(viewport());
painter.fillRect(r, QBrush(cursorColor));
+ painter.end();
}
}
@@ -251,6 +398,10 @@
const QColor& backgroundColor,
const QColor& markupColor,
const QColor& linkColor,
+ const QColor& headingColor,
+ const QColor& emphasisColor,
+ const QColor& blockquoteColor,
+ const QColor& codeColor,
const QColor& spellingErrorColor
)
{
@@ -260,11 +411,30 @@
backgroundColor,
markupColor,
linkColor,
+ headingColor,
+ emphasisColor,
+ blockquoteColor,
+ codeColor,
spellingErrorColor
);
this->cursorColor = linkColor;
+ blockColor = defaultTextColor;
+
+ int blockAlpha = 20;
+
+ if (backgroundColor.alpha() < 255)
+ {
+ blockAlpha = 18;
+ }
+ else if (ColorHelper::getLuminance(blockColor) < 0.5)
+ {
+ blockAlpha = 10;
+ }
+
+ blockColor.setAlpha(blockAlpha);
+
QColor fadedForegroundColor = defaultTextColor;
fadedForegroundColor.setAlpha(100);
@@ -355,6 +525,10 @@
{
e->acceptProposedAction();
}
+ else
+ {
+ QPlainTextEdit::dragEnterEvent(e);
+ }
}
void MarkdownEditor::dragMoveEvent(QDragMoveEvent* e)
@@ -441,6 +615,10 @@
QPlainTextEdit::dropEvent(e);
}
}
+ else
+ {
+ QPlainTextEdit::dropEvent(e);
+ }
}
/*
@@ -461,6 +639,7 @@
{
// Insert Markdown-style line break
cursor.insertText(" ");
+ highlighter->rehighlightBlock(cursor.block());
}
if (e->modifiers() & Qt::ControlModifier)
@@ -902,20 +1081,23 @@
{
int indent = tabWidth;
QString indentText = "";
+ QRegularExpressionMatch match;
cursor.beginEditBlock();
switch (cursor.block().userState())
{
case MarkdownStateNumberedList:
- if (numberedListRegex.exactMatch(cursor.block().text()))
+ match = emptyNumberedListRegex.match(cursor.block().text());
+
+ if (match.hasMatch())
{
- QStringList capture = numberedListRegex.capturedTexts();
+ QStringList capture = match.capturedTexts();
// Restart numbering for the nested list.
if (capture.size() == 2)
{
- QRegExp numberRegex("\\d+");
+ QRegularExpression numberRegex("\\d+");
cursor.movePosition(QTextCursor::StartOfBlock);
cursor.movePosition
@@ -939,7 +1121,11 @@
break;
case MarkdownStateBulletPointList:
{
- if (bulletListRegex.exactMatch(cursor.block().text()))
+ if (emptyTaskListRegex.match(cursor.block().text()).hasMatch())
+ {
+ cursor.movePosition(QTextCursor::StartOfBlock);
+ }
+ else if (emptyBulletListRegex.match(cursor.block().text()).hasMatch())
{
if (bulletPointCyclingEnabled)
{
@@ -979,10 +1165,6 @@
cursor.movePosition(QTextCursor::StartOfBlock);
}
- else if (taskListRegex.exactMatch(cursor.block().text()))
- {
- cursor.movePosition(QTextCursor::StartOfBlock);
- }
break;
}
@@ -1057,7 +1239,7 @@
if
(
(MarkdownStateBulletPointList == cursor.block().userState())
- && (bulletListRegex.exactMatch(cursor.block().text()))
+ && (emptyBulletListRegex.match(cursor.block().text()).hasMatch())
&& bulletPointCyclingEnabled
)
{
@@ -1119,13 +1301,15 @@
while (block != end)
{
+ QRegularExpressionMatch match;
+
if
(
(block.userState() == MarkdownStateBulletPointList)
- && (block.text().indexOf(taskListRegex) == 0)
+ && (block.text().indexOf(taskListRegex, 0, &match) == 0)
)
{
- QStringList capture = taskListRegex.capturedTexts();
+ QStringList capture = match.capturedTexts();
if (capture.size() == 2)
{
@@ -1220,6 +1404,11 @@
editorWidth = width;
}
+void MarkdownEditor::setEditorCorners(InterfaceStyle corners)
+{
+ editorCorners = corners;
+}
+
void MarkdownEditor::runSpellChecker()
{
if (this->spellCheckEnabled)
@@ -1417,7 +1606,7 @@
break;
}
-
+ // `FocusModeTypewriter` implicitly handeled here as we don't highlight anything but center the current line.
default:
break;
}
@@ -1499,12 +1688,14 @@
}
else
{
+ QRegularExpressionMatch match;
+
switch (cursor.block().userState())
{
case MarkdownStateNumberedList:
{
- autoInsertText = getPriorMarkdownBlockItemStart(numberedListRegex);
- QStringList capture = numberedListRegex.capturedTexts();
+ autoInsertText = getPriorMarkdownBlockItemStart(numberedListRegex, match);
+ QStringList capture = match.capturedTexts();
if (!autoInsertText.isEmpty() && (capture.size() == 2))
{
@@ -1516,7 +1707,7 @@
// Else auto-increment the list number.
else
{
- QRegExp numberRegex("\\d+");
+ QRegularExpression numberRegex("\\d+");
int number = capture.at(1).toInt();
number++;
autoInsertText =
@@ -1535,14 +1726,14 @@
}
case MarkdownStateBulletPointList:
// Check for GFM task list before checking for bullet point.
- autoInsertText = getPriorMarkdownBlockItemStart(taskListRegex);
+ autoInsertText = getPriorMarkdownBlockItemStart(taskListRegex, match);
// If the string is empty, then it wasn't a GFM task list item.
// Treat it as a normal bullet point.
//
if (autoInsertText.isEmpty())
{
- autoInsertText = getPriorMarkdownBlockItemStart(bulletListRegex);
+ autoInsertText = getPriorMarkdownBlockItemStart(bulletListRegex, match);
if (autoInsertText.isEmpty())
{
@@ -1573,7 +1764,7 @@
}
break;
case MarkdownStateBlockquote:
- autoInsertText = getPriorMarkdownBlockItemStart(blockquoteRegex);
+ autoInsertText = getPriorMarkdownBlockItemStart(blockquoteRegex, match);
break;
default:
autoInsertText = getPriorIndentation();
@@ -1609,24 +1800,24 @@
{
case MarkdownStateNumberedList:
{
- if (numberedListRegex.exactMatch(textCursor().block().text()))
+ if (emptyNumberedListRegex.match(textCursor().block().text()).hasMatch())
{
- backtrackIndex = cursor.block().text().indexOf(QRegExp("\\d"));
+ backtrackIndex = cursor.block().text().indexOf(QRegularExpression("\\d"));
}
break;
}
case MarkdownStateBulletPointList:
if
(
- bulletListRegex.exactMatch(cursor.block().text())
- || taskListRegex.exactMatch(cursor.block().text())
+ emptyBulletListRegex.match(cursor.block().text()).hasMatch()
+ || emptyTaskListRegex.match(cursor.block().text()).hasMatch()
)
{
- backtrackIndex = cursor.block().text().indexOf(QRegExp("[+*-]"));
+ backtrackIndex = cursor.block().text().indexOf(QRegularExpression("[+*-]"));
}
break;
case MarkdownStateBlockquote:
- if (blockquoteRegex.exactMatch(cursor.block().text()))
+ if (emptyBlockquoteRegex.match(cursor.block().text()).hasMatch())
{
backtrackIndex = cursor.block().text().lastIndexOf('>');
}
@@ -1770,8 +1961,9 @@
cursor.insertText(firstChar);
cursor.setPosition(textCursor().selectionEnd());
cursor.insertText(lastChar);
- cursor = textCursor();
+ cursor.endEditBlock();
+ cursor = this->textCursor();
cursor.setPosition(cursor.selectionStart());
cursor.setPosition
(
@@ -1779,7 +1971,6 @@
QTextCursor::KeepAnchor
);
setTextCursor(cursor);
- cursor.endEditBlock();
return true;
}
}
@@ -1955,17 +2146,84 @@
return indent;
}
-QString MarkdownEditor::getPriorMarkdownBlockItemStart(QRegExp& itemRegex)
+QString MarkdownEditor::getPriorMarkdownBlockItemStart
+(
+ const QRegularExpression& itemRegex,
+ QRegularExpressionMatch& match
+)
{
QTextCursor cursor = this->textCursor();
QTextBlock block = cursor.block();
QString text = block.text();
- if (itemRegex.indexIn(text, 0) >= 0)
+ if ((text.indexOf(itemRegex, 0, &match) >= 0) && match.hasMatch())
{
- return text.left(itemRegex.matchedLength());
+ return match.captured();
}
return QString("");
}
+
+bool MarkdownEditor::atBlockAreaStart(const QTextBlock& block, MarkdownEditor::BlockType& type) const
+{
+ if (!block.isValid())
+ {
+ type = BlockTypeNone;
+ return false;
+ }
+
+ if (atCodeBlockStart(block))
+ {
+ type = BlockTypeCode;
+ return true;
+ }
+
+ if (isBlockquote(block))
+ {
+ type = BlockTypeQuote;
+ return true;
+ }
+
+ type = BlockTypeNone;
+ return false;
+}
+
+bool MarkdownEditor::atBlockAreaEnd(const QTextBlock& block, const MarkdownEditor::BlockType type) const
+{
+ switch (type)
+ {
+ case BlockTypeCode:
+ return atCodeBlockEnd(block);
+ case BlockTypeQuote:
+ return !isBlockquote(block);
+ default:
+ return true;
+ }
+}
+
+bool MarkdownEditor::atCodeBlockStart(const QTextBlock& block) const
+{
+ return
+ (
+ (MarkdownStateCodeBlock == block.userState())
+ || (MarkdownStateInGithubCodeFence == block.userState())
+ || (MarkdownStateInPandocCodeFence == block.userState())
+ );
+}
+
+bool MarkdownEditor::atCodeBlockEnd(const QTextBlock& block) const
+{
+ return
+ (
+ (MarkdownStateCodeBlock != block.userState())
+ && (MarkdownStateInPandocCodeFence != block.userState())
+ && (MarkdownStateInGithubCodeFence != block.userState())
+ && (MarkdownStateCodeFenceEnd != block.userState())
+ );
+}
+
+bool MarkdownEditor::isBlockquote(const QTextBlock& block) const
+{
+ return (MarkdownStateBlockquote == block.userState());
+}
diff -Nru ghostwriter-1.5.0+ds1/src/MarkdownEditor.h ghostwriter-1.6.0/src/MarkdownEditor.h
--- ghostwriter-1.5.0+ds1/src/MarkdownEditor.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MarkdownEditor.h 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014-2017 wereturtle
+ * Copyright (C) 2014-2018 wereturtle
*
* 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
@@ -29,7 +29,7 @@
#include
#include
#include
-#include
+#include
#include "GraphicsFadeEffect.h"
#include "MarkdownEditorTypes.h"
@@ -64,7 +64,9 @@
virtual ~MarkdownEditor();
/**
- * Draws the text cursor. This has to be done as of Qt 5.8, since
+ * Draws the block quote and code block backgrounds.
+ *
+ * Also draws the text cursor. This has to be done as of Qt 5.8, since
* this version of Qt chooses the cursor's color based on the
* editor's background color, rather than the foreground color as it
* used to in prior versions. This means that we cannot control the
@@ -119,6 +121,10 @@
const QColor& backgroundColor,
const QColor& markupColor,
const QColor& linkColor,
+ const QColor& headingColor,
+ const QColor& emphasisColor,
+ const QColor& blockquoteColor,
+ const QColor& codeColor,
const QColor& spellingErrorColor
);
@@ -358,6 +364,11 @@
void setEditorWidth(EditorWidth width);
/**
+ * Sets the editor corners.
+ */
+ void setEditorCorners(InterfaceStyle corners);
+
+ /**
* Runs the spell checker over the entire document for the
* live spell checking.
*/
@@ -389,6 +400,14 @@
void toggleCursorBlink();
private:
+
+ typedef enum
+ {
+ BlockTypeNone,
+ BlockTypeQuote,
+ BlockTypeCode
+ } BlockType;
+
TextDocument* textDocument;
MarkdownHighlighter* highlighter;
QGridLayout* preferredLayout;
@@ -404,14 +423,20 @@
bool hemingwayModeEnabled;
FocusMode focusMode;
QBrush fadeColor;
+ QColor blockColor;
EditorAspect aspect;
bool insertSpacesForTabs;
int tabWidth;
EditorWidth editorWidth;
- QRegExp blockquoteRegex;
- QRegExp numberedListRegex;
- QRegExp bulletListRegex;
- QRegExp taskListRegex;
+ InterfaceStyle editorCorners;
+ QRegularExpression emptyBlockquoteRegex;
+ QRegularExpression emptyNumberedListRegex;
+ QRegularExpression emptyBulletListRegex;
+ QRegularExpression emptyTaskListRegex;
+ QRegularExpression blockquoteRegex;
+ QRegularExpression numberedListRegex;
+ QRegularExpression bulletListRegex;
+ QRegularExpression taskListRegex;
// Used for auto-insert and pairing.
QHash markupPairs;
@@ -449,8 +474,17 @@
bool handleWhitespaceInEmptyMatch(const QChar whitespace);
void insertFormattingMarkup(const QString& markup);
QString getPriorIndentation();
- QString getPriorMarkdownBlockItemStart(QRegExp& itemRegex);
- void checkSpelling(const QString& text);
+ QString getPriorMarkdownBlockItemStart
+ (
+ const QRegularExpression& itemRegex,
+ QRegularExpressionMatch& match
+ );
+
+ bool atBlockAreaStart(const QTextBlock& block, BlockType& type) const;
+ bool atBlockAreaEnd(const QTextBlock& block, const BlockType type) const;
+ bool atCodeBlockStart(const QTextBlock& block) const;
+ bool atCodeBlockEnd(const QTextBlock& block) const;
+ bool isBlockquote(const QTextBlock& block) const;
};
diff -Nru ghostwriter-1.5.0+ds1/src/MarkdownEditorTypes.h ghostwriter-1.6.0/src/MarkdownEditorTypes.h
--- ghostwriter-1.5.0+ds1/src/MarkdownEditorTypes.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MarkdownEditorTypes.h 2018-04-07 21:47:43.000000000 +0000
@@ -22,19 +22,32 @@
enum FocusMode
{
- FocusModeDisabled,
+ FocusModeFirst,
+ FocusModeDisabled = FocusModeFirst,
FocusModeSentence,
FocusModeCurrentLine,
FocusModeThreeLines,
- FocusModeParagraph
+ FocusModeParagraph,
+ FocusModeTypewriter,
+ FocusModeLast = FocusModeTypewriter
};
enum EditorWidth
{
- EditorWidthNarrow,
+ EditorWidthFirst,
+ EditorWidthNarrow = EditorWidthFirst,
EditorWidthMedium,
EditorWidthWide,
- EditorWidthFull
+ EditorWidthFull,
+ EditorWidthLast = EditorWidthFull
+};
+
+enum InterfaceStyle
+{
+ InterfaceStyleFirst,
+ InterfaceStyleRounded = InterfaceStyleFirst,
+ InterfaceStyleSquare,
+ InterfaceStyleLast = InterfaceStyleSquare,
};
#endif // MARKDOWNEDITORTYPES_H
diff -Nru ghostwriter-1.5.0+ds1/src/MarkdownHighlighter.cpp ghostwriter-1.6.0/src/MarkdownHighlighter.cpp
--- ghostwriter-1.5.0+ds1/src/MarkdownHighlighter.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MarkdownHighlighter.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -21,7 +21,7 @@
#include
#include
#include
-#include
+#include
#include
#include
#include
@@ -37,13 +37,10 @@
#include "MarkdownTokenizer.h"
#include "MarkdownTokenTypes.h"
#include "MarkdownStates.h"
-#include "ColorHelper.h"
#include "TextBlockData.h"
#include "spelling/dictionary_ref.h"
#include "spelling/dictionary_manager.h"
-#define GW_FADE_ALPHA 140
-
MarkdownHighlighter::MarkdownHighlighter(MarkdownEditor* editor)
: QSyntaxHighlighter(editor),
editor(editor),
@@ -58,12 +55,17 @@
backgroundColor(Qt::white),
markupColor(Qt::black),
linkColor(Qt::blue),
+ headingColor(Qt::black),
+ emphasisColor(Qt::black),
+ blockquoteColor(Qt::black),
+ codeColor(Qt::black),
spellingErrorColor(Qt::red)
{
setDocument(editor->document());
connect(editor, SIGNAL(typingResumed()), this, SLOT(onTypingResumed()));
connect(editor, SIGNAL(typingPaused()), this, SLOT(onTypingPaused()));
+ connect(editor, SIGNAL(cursorPositionChanged()), this, SLOT(onCursorPositionChanged()));
connect(this, SIGNAL(headingFound(int,QString,QTextBlock)), editor, SIGNAL(headingFound(int,QString,QTextBlock)));
connect(this, SIGNAL(headingRemoved(int)), editor, SIGNAL(headingRemoved(int)));
@@ -137,6 +139,9 @@
strongMarkup[TokenNumberedList] = true;
strongMarkup[TokenBlockquote] = true;
strongMarkup[TokenBulletPointList] = true;
+
+ heading1SetextRegex.setPattern("^===+\\s*$");
+ heading2SetextRegex.setPattern("^---+\\s*$");
}
MarkdownHighlighter::~MarkdownHighlighter()
@@ -236,8 +241,32 @@
//
if
(
- isHeadingBlockState(lastState)
- && !isHeadingBlockState(currentBlockState())
+ (
+ isHeadingBlockState(lastState)
+ && !isHeadingBlockState(currentBlockState())
+ )
+ ||
+ // The following check is for a rare corner case where if the setext
+ // markup (line #2 of the heading) is selected and then deleted with the
+ // cursor position starting at the end of the previous line (line #1 of
+ // of the heading), then the block state of the setext markup line is
+ // merged with the previous line (the heading text line, or line #1).
+ // This creates a state where the heading text line temporarily has the
+ // wrong block state until it is rehighlighted. Thus, the lastState
+ // will be set to MarkdownStateSetextHeading1Line2 or
+ // MarkdownStateSetextHeading2Line2 in this situation.
+ //
+ (
+ (
+ (MarkdownStateSetextHeading1Line2 == lastState)
+ || (MarkdownStateSetextHeading2Line2 == lastState)
+ )
+ && !isHeadingBlockState(currentBlockState())
+ && (MarkdownStateSetextHeading1Line2 != currentBlockState())
+ && (MarkdownStateSetextHeading2Line2 != currentBlockState())
+ && !matchesHeading1SetextMarkup(text)
+ && !matchesHeading2SetextMarkup(text)
+ )
)
{
emit headingRemoved(currentBlock().position());
@@ -272,6 +301,10 @@
const QColor& backgroundColor,
const QColor& markupColor,
const QColor& linkColor,
+ const QColor& headingColor,
+ const QColor& emphasisColor,
+ const QColor& blockquoteColor,
+ const QColor& codeColor,
const QColor& spellingErrorColor
)
{
@@ -279,6 +312,10 @@
this->backgroundColor = backgroundColor;
this->markupColor = markupColor;
this->linkColor = linkColor;
+ this->headingColor = headingColor;
+ this->emphasisColor = emphasisColor;
+ this->blockquoteColor = blockquoteColor;
+ this->codeColor = codeColor;
this->spellingErrorColor = spellingErrorColor;
defaultFormat.setForeground(QBrush(defaultTextColor));
setupTokenColors();
@@ -322,8 +359,26 @@
void MarkdownHighlighter::onTypingPaused()
{
typingPaused = true;
- QTextBlock block = document()->findBlock(editor->textCursor().position());
- rehighlightBlock(block);
+
+ if (spellCheckEnabled)
+ {
+ QTextBlock block = document()->findBlock(editor->textCursor().position());
+ rehighlightBlock(block);
+ }
+}
+
+void MarkdownHighlighter::onCursorPositionChanged()
+{
+ if
+ (
+ spellCheckEnabled &&
+ (currentLine != editor->textCursor().block())
+ )
+ {
+ rehighlightBlock(currentLine);
+ }
+
+ currentLine = editor->textCursor().block();
}
void MarkdownHighlighter::setBlockquoteStyle(const BlockquoteStyle style)
@@ -409,31 +464,17 @@
colorForToken[i] = defaultTextColor;
}
- QColor fadedColor;
-
- if
- (
- ColorHelper::getLuminance(backgroundColor)
- >
- ColorHelper::getLuminance(defaultTextColor)
- )
- {
- fadedColor =
- ColorHelper::applyAlpha
- (
- defaultTextColor,
- backgroundColor,
- GW_FADE_ALPHA
- );
- }
- else
- {
- fadedColor = defaultTextColor.darker(130);
- }
-
- colorForToken[TokenBlockquote] = fadedColor;
- colorForToken[TokenCodeBlock] = fadedColor;
- colorForToken[TokenVerbatim] = fadedColor;
+ colorForToken[TokenAtxHeading1] = headingColor;
+ colorForToken[TokenAtxHeading2] = headingColor;
+ colorForToken[TokenAtxHeading3] = headingColor;
+ colorForToken[TokenAtxHeading4] = headingColor;
+ colorForToken[TokenAtxHeading5] = headingColor;
+ colorForToken[TokenAtxHeading6] = headingColor;
+ colorForToken[TokenEmphasis] = emphasisColor;
+ colorForToken[TokenStrong] = emphasisColor;
+ colorForToken[TokenBlockquote] = blockquoteColor;
+ colorForToken[TokenCodeBlock] = codeColor;
+ colorForToken[TokenVerbatim] = codeColor;
colorForToken[TokenHtmlTag] = markupColor;
colorForToken[TokenHtmlEntity] = markupColor;
colorForToken[TokenAutomaticLink] = linkColor;
@@ -447,6 +488,8 @@
colorForToken[TokenGithubCodeFence] = markupColor;
colorForToken[TokenPandocCodeFence] = markupColor;
colorForToken[TokenCodeFenceEnd] = markupColor;
+ colorForToken[TokenSetextHeading1Line1] = headingColor;
+ colorForToken[TokenSetextHeading2Line1] = headingColor;
colorForToken[TokenSetextHeading1Line2] = markupColor;
colorForToken[TokenSetextHeading2Line2] = markupColor;
colorForToken[TokenTableDivider] = markupColor;
@@ -492,17 +535,6 @@
QColor tokenColor = colorForToken[tokenType];
- if (inBlockquote && token.getType() != TokenBlockquote)
- {
- tokenColor =
- ColorHelper::applyAlpha
- (
- tokenColor,
- backgroundColor,
- GW_FADE_ALPHA
- );
- }
-
if (highlightLineBreaks && token.getType() == TokenLineBreak)
{
format.setBackground(QBrush(markupColor));
@@ -550,20 +582,7 @@
markupFormat = this->format(token.getPosition());
}
- QColor adjustedMarkupColor = this->markupColor;
-
- if (inBlockquote && token.getType() != TokenBlockquote)
- {
- adjustedMarkupColor =
- ColorHelper::applyAlpha
- (
- adjustedMarkupColor,
- backgroundColor,
- GW_FADE_ALPHA
- );
- }
-
- markupFormat.setForeground(QBrush(adjustedMarkupColor));
+ markupFormat.setForeground(QBrush(markupColor));
if (strongMarkup[tokenType])
{
@@ -578,7 +597,7 @@
&& (BlockquoteStyleFancy == blockquoteStyle)
)
{
- markupFormat.setBackground(QBrush(adjustedMarkupColor));
+ markupFormat.setBackground(QBrush(markupColor));
QString text = currentBlock().text();
for (int i = token.getPosition(); i < token.getOpeningMarkupLength(); i++)
@@ -708,3 +727,13 @@
return false;
}
}
+
+bool MarkdownHighlighter::matchesHeading1SetextMarkup(const QString& text) const
+{
+ return heading1SetextRegex.match(text).hasMatch();
+}
+
+bool MarkdownHighlighter::matchesHeading2SetextMarkup(const QString &text) const
+{
+ return heading2SetextRegex.match(text).hasMatch();
+}
diff -Nru ghostwriter-1.5.0+ds1/src/MarkdownHighlighter.h ghostwriter-1.6.0/src/MarkdownHighlighter.h
--- ghostwriter-1.5.0+ds1/src/MarkdownHighlighter.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MarkdownHighlighter.h 2018-04-07 21:47:43.000000000 +0000
@@ -30,7 +30,7 @@
#include "MarkdownEditor.h"
class QColor;
-class QRegExp;
+class QRegularExpression;
class QString;
class QTextCharFormat;
class MarkdownEditor;
@@ -84,6 +84,10 @@
const QColor& backgroundColor,
const QColor& markupColor,
const QColor& linkColor,
+ const QColor& headingColor,
+ const QColor& emphasisColor,
+ const QColor& blockquoteColor,
+ const QColor& codeColor,
const QColor& spellingErrorColor
);
@@ -161,6 +165,16 @@
*/
void onTypingPaused();
+ /**
+ * Signalled by a text editor when the user changes the text
+ * cursor position. This signal is used to ensure spell
+ * checking is performed for the previous line in which the
+ * text cursor was positioned before the user changed the text
+ * position, in case the last word the user was typing was not
+ * yet spell checked.
+ */
+ void onCursorPositionChanged();
+
private slots:
/*
* Highlights the text block at the given cursor position of the
@@ -180,6 +194,7 @@
DictionaryRef dictionary;
bool spellCheckEnabled;
bool typingPaused;
+ QTextBlock currentLine;
bool useUndlerlineForEmphasis;
bool highlightLineBreaks;
bool inBlockquote;
@@ -188,6 +203,10 @@
QColor backgroundColor;
QColor markupColor;
QColor linkColor;
+ QColor headingColor;
+ QColor emphasisColor;
+ QColor blockquoteColor;
+ QColor codeColor;
QColor spellingErrorColor;
QTextCharFormat defaultFormat;
@@ -199,6 +218,9 @@
bool strikethroughToken[TokenLast];
int fontSizeIncrease[TokenLast];
+ QRegularExpression heading1SetextRegex;
+ QRegularExpression heading2SetextRegex;
+
void spellCheck(const QString& text);
void setupTokenColors();
void setupHeadingFontSize(bool useLargeHeadings);
@@ -212,6 +234,18 @@
*/
bool isHeadingBlockState(int state) const;
+ /**
+ * Returns true if the given block of text matches the markup for
+ * the second line of a setext heading for level 1.
+ */
+ bool matchesHeading1SetextMarkup(const QString& text) const;
+
+ /**
+ * Returns true if the given block of text matches the markup for
+ * the second line of a setext heading for level 2.
+ */
+ bool matchesHeading2SetextMarkup(const QString& text) const;
+
};
#endif
diff -Nru ghostwriter-1.5.0+ds1/src/MarkdownStyles.h ghostwriter-1.6.0/src/MarkdownStyles.h
--- ghostwriter-1.5.0+ds1/src/MarkdownStyles.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MarkdownStyles.h 2018-04-07 21:47:43.000000000 +0000
@@ -22,9 +22,11 @@
typedef enum
{
- BlockquoteStylePlain,
+ BlockquoteStyleFirst,
+ BlockquoteStylePlain = BlockquoteStyleFirst,
BlockquoteStyleItalic,
- BlockquoteStyleFancy
+ BlockquoteStyleFancy,
+ BlockquoteStyleLast = BlockquoteStyleFancy
} BlockquoteStyle;
#endif // MARKDOWNSTYLES_H
diff -Nru ghostwriter-1.5.0+ds1/src/MarkdownTokenizer.cpp ghostwriter-1.6.0/src/MarkdownTokenizer.cpp
--- ghostwriter-1.5.0+ds1/src/MarkdownTokenizer.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MarkdownTokenizer.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014-2016 wereturtle
+ * Copyright (C) 2014-2017 wereturtle
*
* 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
@@ -19,7 +19,8 @@
#include
#include
-#include
+#include
+#include
#include "MarkdownTokenizer.h"
#include "MarkdownStates.h"
@@ -45,29 +46,32 @@
pandocCodeFenceEndRegex.setPattern("^~~~+\\s*$");
numberedListRegex.setPattern("^ {0,3}[0-9]+[.)]\\s+.*$");
numberedNestedListRegex.setPattern("^\\s*[0-9]+[.)]\\s+.*$");
- hruleRegex.setPattern("\\s*(\\*\\s*){3,}|(\\s*(_\\s*){3,})|((\\s*(-\\s*){3,}))");
+ hruleRegex.setPattern("^\\s*(\\*\\s*){3,}$|^(\\s*(_\\s*){3,})$|^((\\s*(-\\s*){3,}))$");
lineBreakRegex.setPattern(".*\\s{2,}$");
- emphasisRegex.setPattern("(\\*(?![\\s*]).*[^\\s*]\\*)|_(?![\\s_]).*[^\\s_]_");
- emphasisRegex.setMinimal(true);
- strongRegex.setPattern("\\*\\*(?=\\S).*\\S\\*\\*(?!\\*)|__(?=\\S).*\\S__(?!_)");
- strongRegex.setMinimal(true);
- strikethroughRegex.setPattern("~~[^\\s]+.*[^\\s]+~~");
- strikethroughRegex.setMinimal(true);
+ // **strong** text
+ strongRegex.setPattern("(\\*|_){2}(?=\\S)(.+?)(?<=\\S)\\1{2}");
+ // *emphasis* text
+ emphasisRegex.setPattern("(\\*|_)(?=\\S)(.+?)(?<=\\S)\\1");
+ // *emphasis **strong emphasis*** text
+ emphasisStrongRegex1.setPattern("(\\*|_)(?=\\S)(.+?)\\1{2}(?=\\S)(.+?)(?<=\\S)\\1{3}");
+ // ***strong emphasis** emphasis* text
+ emphasisStrongRegex2.setPattern("(\\*|_){3}(?=\\S)(.+?)(?<=\\S)\\1{2}(.+?)(?<=\\S)\\1");
+ // ***strong emphasis*** text
+ strongEmphasisRegex1.setPattern("(\\*|_){3}(?=\\S)(.+?)(?<=\\S)\\1{3}");
+ // **strong *strong emphasis*** text
+ strongEmphasisRegex2.setPattern("(\\*|_){2}(?=\\S)(.+?)\\1(?=\\S)(.+?)(?<=\\S)\\1{3}");
+ // _smart_emphasis_
+ smartEmphasisRegex.setPattern("(?]+>");
- htmlTagRegex.setMinimal(true);
+ htmlTagRegex.setPattern("(?:<[a-zA-Z!$](?:[^<>])*>)|(?s:<\\?.*?\\?>)|(?:[a-zA-Z]+>)");
htmlEntityRegex.setPattern("&[a-zA-Z]+;|?[0-9]+;");
- automaticLinkRegex.setPattern("(<[a-zA-Z]+\\:.+>)|(<.+@.+>)");
- automaticLinkRegex.setMinimal(true);
- inlineLinkRegex.setPattern("\\[.+\\]\\(.+\\)");
- inlineLinkRegex.setMinimal(true);
- referenceLinkRegex.setPattern("\\[(.+)\\]");
- referenceLinkRegex.setMinimal(true);
- referenceDefinitionRegex.setPattern("^\\s*\\[.+\\]:");
- imageRegex.setPattern("!\\[.*\\]\\(.+\\)");
- imageRegex.setMinimal(true);
- htmlInlineCommentRegex.setPattern("");
- htmlInlineCommentRegex.setMinimal(true);
+ automaticLinkRegex.setPattern("(<[a-zA-Z]+\\:(.+?)>)|(<.+@(.+?)>)");
+ inlineLinkRegex.setPattern("\\[(.+?)\\]\\((.+?)\\)");
+ referenceLinkRegex.setPattern("\\[(.+?)\\]");
+ referenceDefinitionRegex.setPattern("^\\s*\\[(.+?)\\]:");
+ imageRegex.setPattern("!\\[(.*?)\\]\\((.+?)\\)");
+ htmlInlineCommentRegex.setPattern("");
mentionRegex.setPattern("\\B@\\w+(\\-\\w+)*(/\\w+(\\-\\w+)*)?");
pipeTableDividerRegex.setPattern("^ {0,3}(\\|[ :]?)?-{3,}([ :]?\\|[ :]?-{3,}([ :]?\\|)?)+\\s*$");
}
@@ -91,11 +95,6 @@
if
(
- (
- (MarkdownStateInGithubCodeFence == previousState)
- || (MarkdownStateInPandocCodeFence == previousState)
- )
- &&
tokenizeCodeBlock(text)
)
{
@@ -104,7 +103,7 @@
else if
(
(MarkdownStateComment != previousState)
- && paragraphBreakRegex.exactMatch(text)
+ && paragraphBreakRegex.match(text).hasMatch()
)
{
if
@@ -132,7 +131,6 @@
else if
(
tokenizeSetextHeadingLine2(text)
- || tokenizeCodeBlock(text)
|| tokenizeMultilineComment(text)
|| tokenizeHorizontalRule(text)
|| tokenizeTableDivider(text)
@@ -251,21 +249,21 @@
if (MarkdownStateSetextHeading1Line1 == previousState)
{
level = 1;
- setextMatch = heading1SetextRegex.exactMatch(text);
+ setextMatch = heading1SetextRegex.match(text).hasMatch();
setState(MarkdownStateSetextHeading1Line2);
token.setType(TokenSetextHeading1Line2);
}
else if (MarkdownStateSetextHeading2Line1 == previousState)
{
level = 2;
- setextMatch = heading2SetextRegex.exactMatch(text);
+ setextMatch = heading2SetextRegex.match(text).hasMatch();
setState(MarkdownStateSetextHeading2Line2);
token.setType(TokenSetextHeading2Line2);
}
else if (MarkdownStateParagraph == previousState)
{
- bool h1Line2 = heading1SetextRegex.exactMatch(text);
- bool h2Line2 = heading2SetextRegex.exactMatch(text);
+ bool h1Line2 = heading1SetextRegex.match(text).hasMatch();
+ bool h2Line2 = heading2SetextRegex.match(text).hasMatch();
if (h1Line2 || h2Line2)
{
@@ -382,7 +380,7 @@
|| (MarkdownStateCodeBlock == previousState)
|| (MarkdownStateCodeFenceEnd == previousState)
)
- && numberedListRegex.exactMatch(text)
+ && numberedListRegex.match(text).hasMatch()
)
||
(
@@ -391,7 +389,7 @@
|| (MarkdownStateNumberedList == previousState)
|| (MarkdownStateBulletPointList == previousState)
)
- && numberedNestedListRegex.exactMatch(text)
+ && numberedNestedListRegex.match(text).hasMatch()
)
)
{
@@ -559,7 +557,7 @@
bool MarkdownTokenizer::tokenizeHorizontalRule(const QString& text)
{
- if (hruleRegex.exactMatch(text))
+ if (hruleRegex.match(text).hasMatch())
{
Token token;
token.setType(TokenHorizontalRule);
@@ -597,7 +595,7 @@
case MarkdownStateBlockquote:
case MarkdownStateNumberedList:
case MarkdownStateBulletPointList:
- if (lineBreakRegex.exactMatch(text))
+ if (lineBreakRegex.match(text).hasMatch())
{
Token token;
token.setType(TokenLineBreak);
@@ -622,7 +620,7 @@
if
(
(MarkdownStateBlockquote == previousState)
- || blockquoteRegex.exactMatch(text)
+ || blockquoteRegex.match(text).hasMatch()
)
{
// Find any '>' characters at the front of the line.
@@ -678,12 +676,12 @@
(
(
(MarkdownStateInGithubCodeFence == previousState)
- && githubCodeFenceEndRegex.exactMatch(text)
+ && githubCodeFenceEndRegex.match(text).hasMatch()
)
||
(
(MarkdownStateInPandocCodeFence == previousState)
- && pandocCodeFenceEndRegex.exactMatch(text)
+ && pandocCodeFenceEndRegex.match(text).hasMatch()
)
)
{
@@ -729,18 +727,19 @@
|| (MarkdownStateParagraph == previousState)
|| (MarkdownStateUnknown == previousState)
|| (MarkdownStateListLineBreak == previousState)
+ || (MarkdownStateCodeFenceEnd == previousState)
)
{
bool foundCodeFenceStart = false;
Token token;
- if (githubCodeFenceStartRegex.exactMatch(text))
+ if (githubCodeFenceStartRegex.match(text).hasMatch())
{
foundCodeFenceStart = true;
token.setType(TokenGithubCodeFence);
setState(MarkdownStateInGithubCodeFence);
}
- else if (pandocCodeFenceStartRegex.exactMatch(text))
+ else if (pandocCodeFenceStartRegex.match(text).hasMatch())
{
foundCodeFenceStart = true;
token.setType(TokenPandocCodeFence);
@@ -803,7 +802,7 @@
QString escapedText = dummyOutEscapeCharacters(text);
// Check if the line is a reference definition.
- if (referenceDefinitionRegex.exactMatch(escapedText))
+ if (referenceDefinitionRegex.match(escapedText).hasMatch())
{
int colonIndex = escapedText.indexOf(':');
Token token;
@@ -833,9 +832,15 @@
tokenizeMatches(TokenHtmlEntity, escapedText, htmlEntityRegex);
tokenizeMatches(TokenAutomaticLink, escapedText, automaticLinkRegex, 0, 0, false, true);
tokenizeMatches(TokenStrikethrough, escapedText, strikethroughRegex, 2, 2);
+
+ tokenizeMatches(TokenStrong, escapedText, strongEmphasisRegex1, 2, 2, true);
+ tokenizeMatches(TokenEmphasis, escapedText, emphasisStrongRegex2, 1, 1, true);
+ tokenizeMatches(TokenStrong, escapedText, strongEmphasisRegex2, 2, 2, true);
+ tokenizeMatches(TokenEmphasis, escapedText, emphasisStrongRegex1, 1, 1, true);
tokenizeMatches(TokenStrong, escapedText, strongRegex, 2, 2, true);
+ tokenizeMatches(TokenEmphasis, escapedText, smartEmphasisRegex, 1, 1, true);
tokenizeMatches(TokenEmphasis, escapedText, emphasisRegex, 1, 1, true);
- tokenizeMatches(TokenHtmlTag, escapedText, htmlTagRegex);
+ tokenizeMatches(TokenHtmlTag, escapedText, htmlTagRegex, 0, 0, false, true);
tokenizeMatches(TokenMention, escapedText, mentionRegex, 0, 0, false, true);
return true;
@@ -843,12 +848,13 @@
void MarkdownTokenizer::tokenizeVerbatim(QString& text)
{
- int index = verbatimRegex.indexIn(text);
+ QRegularExpressionMatch match = verbatimRegex.match(text);
+ int index = match.capturedStart();
- while (index >= 0)
+ while ((match.hasMatch()) && (index >= 0))
{
QString end = "";
- int count = verbatimRegex.matchedLength();
+ int count = match.capturedLength();
// Search for the matching end, which should have the same number
// of back ticks as the start.
@@ -889,7 +895,8 @@
index++;
}
- index = verbatimRegex.indexIn(text, index);
+ match = verbatimRegex.match(text, index);
+ index = match.capturedStart();
}
}
@@ -910,11 +917,12 @@
}
// Now check for inline comments (non-multiline).
- int commentStart = text.indexOf(htmlInlineCommentRegex);
+ QRegularExpressionMatch match;
+ int commentStart = text.indexOf(htmlInlineCommentRegex, 0, &match);
while (commentStart >= 0)
{
- int commentLength = htmlInlineCommentRegex.matchedLength();
+ int commentLength = match.capturedLength();
Token token;
token.setType(TokenHtmlComment);
@@ -933,7 +941,8 @@
commentStart = text.indexOf
(
htmlInlineCommentRegex,
- commentStart + commentLength
+ commentStart + commentLength,
+ &match
);
}
@@ -1036,7 +1045,7 @@
{
if (MarkdownStatePipeTableHeader == previousState)
{
- if (pipeTableDividerRegex.exactMatch(text))
+ if (pipeTableDividerRegex.match(text).hasMatch())
{
setState(MarkdownStatePipeTableDivider);
@@ -1056,7 +1065,7 @@
}
else if (MarkdownStateParagraph == previousState)
{
- if (pipeTableDividerRegex.exactMatch(text))
+ if (pipeTableDividerRegex.match(text).hasMatch())
{
// Restart tokenizing on the previous line.
this->requestBacktrack();
@@ -1110,18 +1119,19 @@
(
MarkdownTokenType tokenType,
QString& text,
- QRegExp& regex,
+ QRegularExpression& regex,
const int markupStartCount,
const int markupEndCount,
const bool replaceMarkupChars,
const bool replaceAllChars
)
{
- int index = text.indexOf(regex);
+ QRegularExpressionMatch match;
+ int index = text.indexOf(regex, 0, &match);
- while (index >= 0)
+ while (match.hasMatch() && (index >= 0))
{
- int length = regex.matchedLength();
+ int length = match.capturedLength();
Token token;
token.setType(tokenType);
@@ -1159,7 +1169,7 @@
}
addToken(token);
- index = text.indexOf(regex, index + length);
+ index = text.indexOf(regex, index + length, &match);
}
}
diff -Nru ghostwriter-1.5.0+ds1/src/MarkdownTokenizer.h ghostwriter-1.6.0/src/MarkdownTokenizer.h
--- ghostwriter-1.5.0+ds1/src/MarkdownTokenizer.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/MarkdownTokenizer.h 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014, 2015 wereturtle
+ * Copyright (C) 2014-2017 wereturtle
*
* 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
@@ -21,9 +21,10 @@
#ifndef MARKDOWNTOKENIZER_H
#define MARKDOWNTOKENIZER_H
+#include
+
#include "HighlightTokenizer.h"
-class QRegExp;
class QString;
enum MarkdownTokenType
@@ -90,32 +91,37 @@
int previousState;
int nextState;
- QRegExp paragraphBreakRegex;
- QRegExp heading1SetextRegex;
- QRegExp heading2SetextRegex;
- QRegExp blockquoteRegex;
- QRegExp githubCodeFenceStartRegex;
- QRegExp githubCodeFenceEndRegex;
- QRegExp pandocCodeFenceStartRegex;
- QRegExp pandocCodeFenceEndRegex;
- QRegExp numberedListRegex;
- QRegExp numberedNestedListRegex;
- QRegExp hruleRegex;
- QRegExp lineBreakRegex;
- QRegExp emphasisRegex;
- QRegExp strongRegex;
- QRegExp strikethroughRegex;
- QRegExp verbatimRegex;
- QRegExp htmlTagRegex;
- QRegExp htmlEntityRegex;
- QRegExp automaticLinkRegex;
- QRegExp inlineLinkRegex;
- QRegExp referenceLinkRegex;
- QRegExp referenceDefinitionRegex;
- QRegExp imageRegex;
- QRegExp htmlInlineCommentRegex;
- QRegExp mentionRegex;
- QRegExp pipeTableDividerRegex;
+ QRegularExpression paragraphBreakRegex;
+ QRegularExpression heading1SetextRegex;
+ QRegularExpression heading2SetextRegex;
+ QRegularExpression blockquoteRegex;
+ QRegularExpression githubCodeFenceStartRegex;
+ QRegularExpression githubCodeFenceEndRegex;
+ QRegularExpression pandocCodeFenceStartRegex;
+ QRegularExpression pandocCodeFenceEndRegex;
+ QRegularExpression numberedListRegex;
+ QRegularExpression numberedNestedListRegex;
+ QRegularExpression hruleRegex;
+ QRegularExpression lineBreakRegex;
+ QRegularExpression emphasisRegex;
+ QRegularExpression strongRegex;
+ QRegularExpression strongEmphasisRegex1;
+ QRegularExpression strongEmphasisRegex2;
+ QRegularExpression emphasisStrongRegex1;
+ QRegularExpression emphasisStrongRegex2;
+ QRegularExpression smartEmphasisRegex;
+ QRegularExpression strikethroughRegex;
+ QRegularExpression verbatimRegex;
+ QRegularExpression htmlTagRegex;
+ QRegularExpression htmlEntityRegex;
+ QRegularExpression automaticLinkRegex;
+ QRegularExpression inlineLinkRegex;
+ QRegularExpression referenceLinkRegex;
+ QRegularExpression referenceDefinitionRegex;
+ QRegularExpression imageRegex;
+ QRegularExpression htmlInlineCommentRegex;
+ QRegularExpression mentionRegex;
+ QRegularExpression pipeTableDividerRegex;
bool tokenizeSetextHeadingLine1(const QString& text);
@@ -162,7 +168,7 @@
(
MarkdownTokenType tokenType,
QString& text,
- QRegExp& regex,
+ QRegularExpression& regex,
const int markupStartCount = 0,
const int markupEndCount = 0,
const bool replaceMarkupChars = false,
diff -Nru ghostwriter-1.5.0+ds1/src/PreferencesDialog.cpp ghostwriter-1.6.0/src/PreferencesDialog.cpp
--- ghostwriter-1.5.0+ds1/src/PreferencesDialog.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/PreferencesDialog.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -78,6 +78,12 @@
appSettings->setEditorWidth((EditorWidth) combo->itemData(index).toInt());
}
+void PreferencesDialog::onInterfaceStyleChanged(int index)
+{
+ QComboBox* combo = (QComboBox*) sender();
+ appSettings->setInterfaceStyle((InterfaceStyle) combo->itemData(index).toInt());
+}
+
void PreferencesDialog::onBlockquoteStyleChanged(int index)
{
QComboBox* combo = (QComboBox*) sender();
@@ -208,6 +214,14 @@
connect(menuBarCheckBox, SIGNAL(toggled(bool)), appSettings, SLOT(setHideMenuBarInFullScreenEnabled(bool)));
displayGroupLayout->addRow(menuBarCheckBox);
+ QComboBox* cornersComboBox = new QComboBox(this);
+ cornersComboBox->addItem(tr("Rounded"), QVariant(InterfaceStyleRounded));
+ cornersComboBox->addItem(tr("Square"), QVariant(InterfaceStyleSquare));
+ cornersComboBox->setCurrentIndex((int) appSettings->getInterfaceStyle());
+
+ connect(cornersComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onInterfaceStyleChanged(int)));
+ displayGroupLayout->addRow(tr("Interface style"), cornersComboBox);
+
QGroupBox* savingGroupBox = new QGroupBox(tr("File Saving"));
tabLayout->addWidget(savingGroupBox);
@@ -283,6 +297,7 @@
focusModeCombo->addItem(tr("Current Line"), FocusModeCurrentLine);
focusModeCombo->addItem(tr("Three Lines"), FocusModeThreeLines);
focusModeCombo->addItem(tr("Paragraph"), FocusModeParagraph);
+ focusModeCombo->addItem(tr("Typewriter"), FocusModeTypewriter);
focusModeCombo->setCurrentIndex(appSettings->getFocusMode() - 1);
connect(focusModeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onFocusModeChanged(int)));
@@ -423,6 +438,18 @@
connect(compositingCheckBox, SIGNAL(toggled(bool)), appSettings, SLOT(setDesktopCompositingEnabled(bool)));
tabLayout->addRow(compositingCheckBox);
+ QCheckBox* hideHudsWhenTypingCheckBox = new QCheckBox(tr("Auto-hide HUD windows when typing"));
+ hideHudsWhenTypingCheckBox->setCheckable(true);
+ hideHudsWhenTypingCheckBox->setChecked(appSettings->getHideHudsWhenTypingEnabled());
+ connect(hideHudsWhenTypingCheckBox, SIGNAL(toggled(bool)), appSettings, SLOT(setHideHudsWhenTypingEnabled(bool)));
+ tabLayout->addRow(hideHudsWhenTypingCheckBox);
+
+ QCheckBox* hideHudsOnPreviewCheckBox = new QCheckBox(tr("Auto-hide HUD windows when previewing HTML"));
+ hideHudsOnPreviewCheckBox->setCheckable(true);
+ hideHudsOnPreviewCheckBox->setChecked(appSettings->getHideHudsOnPreviewEnabled());
+ connect(hideHudsOnPreviewCheckBox, SIGNAL(toggled(bool)), appSettings, SLOT(setHideHudsOnPreviewEnabled(bool)));
+ tabLayout->addRow(hideHudsOnPreviewCheckBox);
+
QSlider* slider = new QSlider(Qt::Horizontal, this);
slider->setMinimum(0);
slider->setMaximum(255);
diff -Nru ghostwriter-1.5.0+ds1/src/PreferencesDialog.h ghostwriter-1.6.0/src/PreferencesDialog.h
--- ghostwriter-1.5.0+ds1/src/PreferencesDialog.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/PreferencesDialog.h 2018-04-07 21:47:43.000000000 +0000
@@ -40,11 +40,12 @@
/**
* Destructor.
*/
- ~PreferencesDialog();
+ virtual ~PreferencesDialog();
private slots:
void onFocusModeChanged(int index);
void onEditorWidthChanged(int index);
+ void onInterfaceStyleChanged(int index);
void onBlockquoteStyleChanged(int index);
void onEmphasisStyleChanged(int index);
void onDictionaryChanged(int index);
diff -Nru ghostwriter-1.5.0+ds1/src/PreviewOptionsDialog.cpp ghostwriter-1.6.0/src/PreviewOptionsDialog.cpp
--- ghostwriter-1.5.0+ds1/src/PreviewOptionsDialog.cpp 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/src/PreviewOptionsDialog.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,152 @@
+/***********************************************************************
+ *
+ * Copyright (C) 2017 wereturtle
+ *
+ * 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 3 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 .
+ *
+ ***********************************************************************/
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "PreviewOptionsDialog.h"
+#include "AppSettings.h"
+
+PreviewOptionsDialog::PreviewOptionsDialog(QWidget *parent)
+ : QDialog(parent)
+{
+ this->setWindowTitle(tr("Preview Options"));
+
+ exporterFactory = ExporterFactory::getInstance();
+ defaultStyleSheets.append(":/resources/github.css");
+
+ QWidget* mainContents = new QWidget(this);
+ QVBoxLayout* layout = new QVBoxLayout();
+ this->setLayout(layout);
+ layout->addWidget(mainContents);
+
+ QFormLayout* optionsLayout = new QFormLayout();
+ mainContents->setLayout(optionsLayout);
+
+ previewerComboBox = new QComboBox();
+
+ QList exporters = exporterFactory->getHtmlExporters();
+ Exporter* currentExporter = AppSettings::getInstance()->getCurrentHtmlExporter();
+
+ int currentExporterIndex = 0;
+
+ for (int i = 0; i < exporters.length(); i++)
+ {
+ Exporter* exporter = exporters.at(i);
+ previewerComboBox->addItem(exporter->getName(), qVariantFromValue((void *) exporter));
+
+ if (exporter == currentExporter)
+ {
+ currentExporterIndex = i;
+ }
+ }
+
+ previewerComboBox->setCurrentIndex(currentExporterIndex);
+
+ connect(previewerComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onExporterChanged(int)));
+
+ optionsLayout->addRow(tr("Markdown Flavor"), previewerComboBox);
+
+ styleSheetComboBox = new QComboBox(this);
+ buildStyleSheetComboBox();
+ optionsLayout->addRow(tr("Style Sheet"), styleSheetComboBox);
+
+ QDialogButtonBox* buttonBox = new QDialogButtonBox(Qt::Horizontal, this);
+ buttonBox->addButton(QDialogButtonBox::Close);
+ layout->addWidget(buttonBox);
+
+ connect(buttonBox->button(QDialogButtonBox::Close), SIGNAL(clicked()), this, SLOT(close()));
+
+ connect(AppSettings::getInstance(), SIGNAL(customCssFilesChanged(QStringList)), this, SLOT(onCustomCssFilesChanged(QStringList)));
+}
+
+PreviewOptionsDialog::~PreviewOptionsDialog()
+{
+ ;
+}
+
+void PreviewOptionsDialog::onExporterChanged(int index)
+{
+ QVariant exporterVariant = previewerComboBox->itemData(index);
+ Exporter* exporter = (Exporter*) exporterVariant.value();
+ AppSettings::getInstance()->setCurrentHtmlExporter(exporter);
+}
+
+void PreviewOptionsDialog::onStyleSheetChanged(int index)
+{
+ QString filePath = styleSheetComboBox->itemData(index).toString();
+ AppSettings::getInstance()->setCurrentCssFile(filePath);
+}
+
+void PreviewOptionsDialog::onCustomCssFilesChanged(const QStringList& fileList)
+{
+ Q_UNUSED(fileList);
+
+ buildStyleSheetComboBox();
+}
+
+void PreviewOptionsDialog::buildStyleSheetComboBox()
+{
+ styleSheetComboBox->disconnect();
+ styleSheetComboBox->clear();
+ styleSheetComboBox->addItem(tr("Github (Default)"));
+ styleSheetComboBox->setItemData(0, QVariant(defaultStyleSheets.at(0)));
+
+ int customCssIndexStart = defaultStyleSheets.size();
+
+ AppSettings* appSettings = AppSettings::getInstance();
+ QString currentCssFile = appSettings->getCurrentCssFile();
+ QStringList customCssFiles = appSettings->getCustomCssFiles();
+
+ for (int i = 0; i < customCssFiles.size(); i++)
+ {
+ QFileInfo fileInfo(customCssFiles.at(i));
+
+ if (fileInfo.exists())
+ {
+ styleSheetComboBox->addItem(fileInfo.completeBaseName());
+ styleSheetComboBox->setItemData(customCssIndexStart + i, QVariant(customCssFiles.at(i)));
+ }
+ }
+
+ bool foundLastUsedCssFile = false;
+
+ // Find the last used style sheet, and set it as selected in the combo box.
+ for (int i = 0; i < styleSheetComboBox->count(); i++)
+ {
+ if (styleSheetComboBox->itemData(i).toString() == currentCssFile)
+ {
+ styleSheetComboBox->setCurrentIndex(i);
+ foundLastUsedCssFile = true;
+ break;
+ }
+ }
+
+ if (!foundLastUsedCssFile)
+ {
+ styleSheetComboBox->setCurrentIndex(0);
+ AppSettings::getInstance()->setCurrentCssFile(defaultStyleSheets.first());
+ }
+
+ connect(styleSheetComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onStyleSheetChanged(int)));
+}
diff -Nru ghostwriter-1.5.0+ds1/src/PreviewOptionsDialog.h ghostwriter-1.6.0/src/PreviewOptionsDialog.h
--- ghostwriter-1.5.0+ds1/src/PreviewOptionsDialog.h 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/src/PreviewOptionsDialog.h 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,54 @@
+/***********************************************************************
+ *
+ * Copyright (C) 2017 wereturtle
+ *
+ * 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 3 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 .
+ *
+ ***********************************************************************/
+
+#ifndef PREVIEWOPTIONSDIALOG_H
+#define PREVIEWOPTIONSDIALOG_H
+
+#include
+#include
+
+#include "ExporterFactory.h"
+
+class QComboBox;
+
+class PreviewOptionsDialog : public QDialog
+{
+ Q_OBJECT
+
+ public:
+ PreviewOptionsDialog(QWidget* parent = NULL);
+ virtual ~PreviewOptionsDialog();
+
+ private slots:
+ void onExporterChanged(int index);
+ void onStyleSheetChanged(int index);
+ void onCustomCssFilesChanged(const QStringList& fileList);
+
+
+ private:
+ ExporterFactory* exporterFactory;
+ QStringList defaultStyleSheets;
+ QComboBox* previewerComboBox;
+ QComboBox* styleSheetComboBox;
+ QStringList customCssFiles;
+
+ void buildStyleSheetComboBox();
+};
+
+#endif // PREVIEWOPTIONSDIALOG_H
diff -Nru ghostwriter-1.5.0+ds1/src/spelling/dictionary_provider_hunspell.cpp ghostwriter-1.6.0/src/spelling/dictionary_provider_hunspell.cpp
--- ghostwriter-1.5.0+ds1/src/spelling/dictionary_provider_hunspell.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/spelling/dictionary_provider_hunspell.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -301,7 +301,7 @@
xdg.append("/usr/local/share");
xdg.append("/usr/share");
}
- QStringList subdirs = QStringList() << "/hunspell" << "/myspell/dicts" << "/myspell";
+ QStringList subdirs = QStringList() << "/hunspell" << "/myspell/dicts" << "/myspell" << "/mozilla-dicts";
foreach (const QString& subdir, subdirs) {
foreach (const QString& dir, xdg) {
QString path = dir + subdir;
diff -Nru ghostwriter-1.5.0+ds1/src/Theme.cpp ghostwriter-1.6.0/src/Theme.cpp
--- ghostwriter-1.5.0+ds1/src/Theme.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/Theme.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -88,6 +88,46 @@
linkColor = value;
}
+QColor Theme::getHeadingColor() const
+{
+ return headingColor;
+}
+
+void Theme::setHeadingColor(const QColor& value)
+{
+ headingColor = value;
+}
+
+QColor Theme::getEmphasisColor() const
+{
+ return emphasisColor;
+}
+
+void Theme::setEmphasisColor(const QColor& value)
+{
+ emphasisColor = value;
+}
+
+QColor Theme::getBlockquoteColor() const
+{
+ return blockquoteColor;
+}
+
+void Theme::setBlockquoteColor(const QColor& value)
+{
+ blockquoteColor = value;
+}
+
+QColor Theme::getCodeColor() const
+{
+ return codeColor;
+}
+
+void Theme::setCodeColor(const QColor& value)
+{
+ codeColor = value;
+}
+
QColor Theme::getSpellingErrorColor() const
{
return spellingErrorColor;
@@ -118,26 +158,6 @@
}
}
-EditorCorners Theme::getEditorCorners() const
-{
- return editorCorners;
-}
-
-void Theme::setEditorCorners(const EditorCorners value)
-{
- if ((value < EditorCornersFirst) || (value > EditorCornersLast))
- {
- editorCorners = EditorCornersFirst;
- qCritical() << "Theme editor corners value of " << value
- << " is out of range. Defaulting to value of "
- << editorCorners;
- }
- else
- {
- editorCorners = value;
- }
-}
-
PictureAspect Theme::getBackgroundImageAspect() const
{
return backgroundImageAspect;
diff -Nru ghostwriter-1.5.0+ds1/src/ThemeEditorDialog.cpp ghostwriter-1.6.0/src/ThemeEditorDialog.cpp
--- ghostwriter-1.5.0+ds1/src/ThemeEditorDialog.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/ThemeEditorDialog.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -58,6 +58,12 @@
linkColorButton = new ColorButton(this);
linkColorButton->setColor(theme.getLinkColor());
+ emphasisColorButton = new ColorButton(this);
+ emphasisColorButton->setColor(theme.getEmphasisColor());
+
+ blockTextColorButton = new ColorButton(this);
+ blockTextColorButton->setColor(theme.getBlockquoteColor());
+
spellcheckColorButton = new ColorButton(this);
spellcheckColorButton->setColor(theme.getSpellingErrorColor());
@@ -101,11 +107,6 @@
}
}
- cornersComboBox = new QComboBox(this);
- cornersComboBox->addItem(tr("Rounded"), QVariant(EditorCornersRounded));
- cornersComboBox->addItem(tr("Square"), QVariant(EditorCornersSquare));
- cornersComboBox->setCurrentIndex((int) theme.getEditorCorners());
-
editorAspectComboBox = new QComboBox(this);
editorAspectComboBox->addItem(tr("Stretch"), QVariant(EditorAspectStretch));
editorAspectComboBox->addItem(tr("Center"), QVariant(EditorAspectCenter));
@@ -144,6 +145,8 @@
editorColorsLayout->addRow(tr("Text Color"), textColorButton);
editorColorsLayout->addRow(tr("Markup Color"), markupColorButton);
editorColorsLayout->addRow(tr("Link Color"), linkColorButton);
+ editorColorsLayout->addRow(tr("Emphasis Color"), emphasisColorButton);
+ editorColorsLayout->addRow(tr("Block Text Color"), blockTextColorButton);
editorColorsLayout->addRow(tr("Spelling Error Color"), spellcheckColorButton);
editorColorsLayout->addRow(tr("Text Area Background Color"), editorBackgroundColorButton);
@@ -158,7 +161,6 @@
backgroundSettingsLayout->addRow(tr("Background Color"), backgroundColorButton);
backgroundSettingsLayout->addWidget(backgroundImageButton);
backgroundSettingsLayout->addRow(tr("Editor Aspect"), editorAspectComboBox);
- backgroundSettingsLayout->addRow(tr("Editor Corners"), cornersComboBox);
backgroundSettingsLayout->addRow(tr("Editor Opacity"), editorOpacitySlider);
tab = new QWidget();
@@ -220,6 +222,10 @@
theme.setDefaultTextColor(textColorButton->color());
theme.setMarkupColor(markupColorButton->color());
theme.setLinkColor(linkColorButton->color());
+ theme.setHeadingColor(emphasisColorButton->color());
+ theme.setEmphasisColor(emphasisColorButton->color());
+ theme.setBlockquoteColor(blockTextColorButton->color());
+ theme.setCodeColor(blockTextColorButton->color());
theme.setSpellingErrorColor(spellcheckColorButton->color());
theme.setBackgroundColor(backgroundColorButton->color());
theme.setBackgroundImageAspect((PictureAspect) pictureAspectComboBox->currentIndex());
@@ -228,7 +234,6 @@
editorBgColor.setAlpha(editorOpacitySlider->value());
theme.setEditorBackgroundColor(editorBgColor);
theme.setEditorAspect((EditorAspect) editorAspectComboBox->currentIndex());
- theme.setEditorCorners((EditorCorners) cornersComboBox->currentIndex());
if (PictureAspectNone == theme.getBackgroundImageAspect())
{
diff -Nru ghostwriter-1.5.0+ds1/src/ThemeEditorDialog.h ghostwriter-1.6.0/src/ThemeEditorDialog.h
--- ghostwriter-1.5.0+ds1/src/ThemeEditorDialog.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/ThemeEditorDialog.h 2018-04-07 21:47:43.000000000 +0000
@@ -65,12 +65,13 @@
private:
QLineEdit* themeNameEdit;
- QComboBox* cornersComboBox;
QComboBox* editorAspectComboBox;
QComboBox* pictureAspectComboBox;
ColorButton* textColorButton;
ColorButton* markupColorButton;
ColorButton* linkColorButton;
+ ColorButton* emphasisColorButton;
+ ColorButton* blockTextColorButton;
ColorButton* spellcheckColorButton;
ColorButton* editorBackgroundColorButton;
ColorButton* hudForegroundColorButton;
diff -Nru ghostwriter-1.5.0+ds1/src/ThemeFactory.cpp ghostwriter-1.6.0/src/ThemeFactory.cpp
--- ghostwriter-1.5.0+ds1/src/ThemeFactory.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/ThemeFactory.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -35,13 +35,16 @@
#include "AppSettings.h"
#define GW_EDITOR_ASPECT "Editor/aspect"
-#define GW_EDITOR_CORNERS "Editor/corners"
#define GW_EDITOR_BACKGROUND_COLOR "Editor/backgroundColor"
#define GW_EDITOR_BACKGROUND_OPACITY "Editor/backgroundOpacity"
#define GW_SPELLING_ERROR_COLOR "Editor/spellingErrorColor"
#define GW_DEFAULT_TEXT_COLOR "Markdown/defaultTextColor"
#define GW_MARKUP_COLOR "Markdown/markupColor"
#define GW_LINK_COLOR "Markdown/linkColor"
+#define GW_HEADING_COLOR "Markdown/headingColor"
+#define GW_EMPHASIS_COLOR "Markdown/emphasisColor"
+#define GW_BLOCKQUOTE_COLOR "Markdown/blockquoteColor"
+#define GW_CODE_COLOR "Markdown/codeColor"
#define GW_IMAGE_ASPECT "Background/imageAspect"
#define GW_IMAGE_URL "Background/imageUrl"
#define GW_BACKGROUND_COLOR "Background/color"
@@ -75,12 +78,15 @@
theme.setBackgroundImageAspect(PictureAspectNone);
theme.setHudBackgroundColor("#31363b");
theme.setHudForegroundColor("#eff0f1");
- theme.setEditorCorners(EditorCornersSquare);
theme.setEditorAspect(EditorAspectStretch);
theme.setEditorBackgroundColor("#eff0f1");
theme.setDefaultTextColor("#31363b");
theme.setMarkupColor("#bdc3c7");
theme.setLinkColor("#2980b9");
+ theme.setHeadingColor("#31363b");
+ theme.setEmphasisColor("#31363b");
+ theme.setBlockquoteColor("#31363b");
+ theme.setCodeColor("#31363b");
theme.setSpellingErrorColor("#da4453");
builtInThemes.append(theme);
@@ -93,12 +99,15 @@
theme.setBackgroundImageAspect(PictureAspectNone);
theme.setHudBackgroundColor("#152F3D");
theme.setHudForegroundColor("#bdc3c7");
- theme.setEditorCorners(EditorCornersSquare);
theme.setEditorAspect(EditorAspectStretch);
theme.setEditorBackgroundColor("#151719");
theme.setDefaultTextColor("#bdc3c7");
theme.setMarkupColor("#575b5f");
theme.setLinkColor("#5f8eb1");
+ theme.setHeadingColor("#bdc3c7");
+ theme.setEmphasisColor("#bdc3c7");
+ theme.setBlockquoteColor("#bdc3c7");
+ theme.setCodeColor("#bdc3c7");
theme.setSpellingErrorColor("#da4453");
builtInThemes.append(theme);
@@ -154,7 +163,6 @@
int editorAspect;
int backgroundImageAspect;
QString backgroundImageUrl;
- int editorCorners = EditorCornersSquare;
QColor editorBackgroundColor;
QColor spellingErrorColor;
QColor backgroundColor;
@@ -163,6 +171,10 @@
QColor defaultTextColor;
QColor markupColor;
QColor linkColor;
+ QColor headingColor;
+ QColor emphasisColor;
+ QColor blockquoteColor;
+ QColor codeColor;
// Load and validate the theme contents.
if
@@ -184,6 +196,24 @@
return builtInThemes[0];
}
+ // If theme colors added after 1.5.0 are missing, clear the error message and set
+ // default colors for backwards compatiblity with older themes.
+ //
+ if
+ (
+ !extractColorSetting(themeSettings, GW_HEADING_COLOR, headingColor, err)
+ || !extractColorSetting(themeSettings, GW_EMPHASIS_COLOR, emphasisColor, err)
+ || !extractColorSetting(themeSettings, GW_BLOCKQUOTE_COLOR, blockquoteColor, err)
+ || !extractColorSetting(themeSettings, GW_CODE_COLOR, codeColor, err)
+ )
+ {
+ err = QString();
+ headingColor = defaultTextColor;
+ emphasisColor = defaultTextColor;
+ blockquoteColor = defaultTextColor;
+ codeColor = defaultTextColor;
+ }
+
Theme theme;
theme.setEditorAspect((EditorAspect) editorAspect);
editorBackgroundColor.setAlpha(editorBackgroundAlpha);
@@ -196,19 +226,10 @@
theme.setDefaultTextColor(defaultTextColor);
theme.setMarkupColor(markupColor);
theme.setLinkColor(linkColor);
-
- // Check that if the editor aspect is set to Center, that the corners are set.
- if
- (
- (EditorAspectCenter == theme.getEditorAspect())
- && !extractIntSetting(themeSettings, GW_EDITOR_CORNERS, editorCorners, EditorCornersFirst, EditorCornersLast, err)
- )
- {
- // Default to rounded corners if not set.
- editorCorners = EditorCornersRounded;
- }
-
- theme.setEditorCorners((EditorCorners) editorCorners);
+ theme.setHeadingColor(headingColor);
+ theme.setEmphasisColor(emphasisColor);
+ theme.setBlockquoteColor(blockquoteColor);
+ theme.setCodeColor(codeColor);
// Check if the picture aspect is set to be a background image (not None), that
// the background image URL is set.
@@ -437,13 +458,16 @@
}
settings.setValue(GW_EDITOR_ASPECT, QVariant((int) theme.getEditorAspect()));
- settings.setValue(GW_EDITOR_CORNERS, QVariant((int) theme.getEditorCorners()));
settings.setValue(GW_EDITOR_BACKGROUND_COLOR, QVariant(theme.getEditorBackgroundColor().name()));
settings.setValue(GW_EDITOR_BACKGROUND_OPACITY, QVariant(theme.getEditorBackgroundColor().alpha()));
settings.setValue(GW_SPELLING_ERROR_COLOR, QVariant(theme.getSpellingErrorColor().name()));
settings.setValue(GW_DEFAULT_TEXT_COLOR, QVariant(theme.getDefaultTextColor().name()));
settings.setValue(GW_MARKUP_COLOR, QVariant(theme.getMarkupColor().name()));
settings.setValue(GW_LINK_COLOR, QVariant(theme.getLinkColor().name()));
+ settings.setValue(GW_HEADING_COLOR, QVariant(theme.getHeadingColor().name()));
+ settings.setValue(GW_EMPHASIS_COLOR, QVariant(theme.getEmphasisColor().name()));
+ settings.setValue(GW_BLOCKQUOTE_COLOR, QVariant(theme.getBlockquoteColor().name()));
+ settings.setValue(GW_CODE_COLOR, QVariant(theme.getCodeColor().name()));
settings.setValue(GW_IMAGE_ASPECT, QVariant((int) theme.getBackgroundImageAspect()));
settings.setValue(GW_BACKGROUND_COLOR, QVariant(theme.getBackgroundColor().name()));
settings.setValue(GW_HUD_FOREGROUND_COLOR, QVariant(theme.getHudForegroundColor().name()));
diff -Nru ghostwriter-1.5.0+ds1/src/Theme.h ghostwriter-1.6.0/src/Theme.h
--- ghostwriter-1.5.0+ds1/src/Theme.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/Theme.h 2018-04-07 21:47:43.000000000 +0000
@@ -31,14 +31,6 @@
EditorAspectLast = EditorAspectCenter
};
-enum EditorCorners
-{
- EditorCornersFirst,
- EditorCornersRounded = EditorCornersFirst,
- EditorCornersSquare,
- EditorCornersLast = EditorCornersSquare,
-};
-
enum TextWidth
{
TextWidthNarrow,
@@ -83,15 +75,24 @@
QColor getLinkColor() const;
void setLinkColor(const QColor& value);
+ QColor getHeadingColor() const;
+ void setHeadingColor(const QColor& value);
+
+ QColor getEmphasisColor() const;
+ void setEmphasisColor(const QColor& value);
+
+ QColor getBlockquoteColor() const;
+ void setBlockquoteColor(const QColor& value);
+
+ QColor getCodeColor() const;
+ void setCodeColor(const QColor& value);
+
QColor getSpellingErrorColor() const;
void setSpellingErrorColor(const QColor& value);
EditorAspect getEditorAspect() const;
void setEditorAspect(const EditorAspect value);
- EditorCorners getEditorCorners() const;
- void setEditorCorners(const EditorCorners value);
-
PictureAspect getBackgroundImageAspect() const;
void setBackgroundImageAspect(const PictureAspect value);
@@ -120,10 +121,13 @@
QColor editorBackgroundColor;
QColor markupColor;
QColor linkColor;
+ QColor headingColor;
+ QColor emphasisColor;
+ QColor blockquoteColor;
+ QColor codeColor;
QColor spellingErrorColor;
EditorAspect editorAspect;
- EditorCorners editorCorners;
PictureAspect backgroundImageAspect;
QString backgroundImageUrl;
QColor backgroundColor;
diff -Nru ghostwriter-1.5.0+ds1/src/ThemePreviewer.cpp ghostwriter-1.6.0/src/ThemePreviewer.cpp
--- ghostwriter-1.5.0+ds1/src/ThemePreviewer.cpp 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/ThemePreviewer.cpp 2018-04-07 21:47:43.000000000 +0000
@@ -116,21 +116,7 @@
if (EditorAspectCenter == theme.getEditorAspect())
{
- if (EditorCornersSquare == theme.getEditorCorners())
- {
- painter.drawRect(x, y, w, h);
- }
- else if (EditorCornersRounded == theme.getEditorCorners())
- {
- int cornerRadius = 5.0 * height / 100.0;
-
- if (cornerRadius > 10.0)
- {
- cornerRadius = 10.0;
- }
-
- painter.drawRoundedRect(x, y, w, h, cornerRadius, cornerRadius);
- }
+ painter.drawRect(x, y, w, h);
}
else
{
diff -Nru ghostwriter-1.5.0+ds1/src/Token.h ghostwriter-1.6.0/src/Token.h
--- ghostwriter-1.5.0+ds1/src/Token.h 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/src/Token.h 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
/***********************************************************************
*
- * Copyright (C) 2014, 2015 wereturtle
+ * Copyright (C) 2014-2017 wereturtle
*
* 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
@@ -42,7 +42,7 @@
* them to be formatted together in one chunk, as that is more efficient for
* the editor. Of course, this could be solved by traversing an AST, but
* it was instead decided to use a flattened AST in the form of a list of tokens
- * per line in the document. See LineParser.h for rationale.
+ * per line in the document. See MarkdownTokenizer.h for rationale.
*/
class Token
{
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_cs.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_cs.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_cs.ts ghostwriter-1.6.0/translations/ghostwriter_cs.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_cs.ts 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_cs.ts 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
-
+
AbstractStatisticsWidget
@@ -33,109 +33,109 @@
DictionaryDialog
Set Dictionary
- Nastavit slovník
+ Nastavit slovník
DocumentManager
-
+
Open File
Otevřít soubor
-
+
Could not open %1
Nepodařilo se otevřít %1
-
+
Permission denied.
Přístup odepřen.
-
+
The document has been modified.
Dokument byl změněn.
-
+
Discard changes?
Zahodit změny?
-
+
Rename File
Přejmenovat soubor
-
+
Failed to rename %1
Nepodařilo se přejmenovat %1
-
+
Save File
Uložit soubor
-
+
Error saving %1
Chyba při ukládání %1
-
+
The document has been modified by another program.
Dokument byl změněn jiným programem.
-
+
Would you like to reload the document?
Chcete dokument nahrát znovu?
-
-
+
+
Could not read %1
Nepodařilo se přečíst %1
-
+
opening %1
Otevírá se %1
-
+
File has been modified.
Soubor byl změněn.
-
+
%1 has been modified.
%1 byl změněn.
-
+
Would you like to save your changes?
Chcete uložit změny?
-
+
%1 is read only.
%1 je pouze pro čtení.
-
+
Overwrite protected file?
Přepsat chráněný soubor?
-
+
Overwrite failed.
Nepodařilo se přepsat.
-
+
Please save file to another location.
Uložte, prosím, soubor na jiném místě.
@@ -363,43 +363,37 @@
HtmlPreview
-
+
HTML Preview
Náhled na HTML
-
Copy HTML
- Kopírovat HTML
+ Kopírovat HTML
-
Export
- Vyvést
+ Vyvést
-
Print
- Tisk
+ Tisk
-
No markdown (pandoc, multimarkdown, discount) processors are installed. Please install or add their installation locations to your system PATH environment variable.
- Nejsou nainstalovány žádné procesory Markdown (pandoc, multimarkdown, discount). Nainstalujte je, prosím, anebo přidejte jejich instalaci do proměnné systémového prostřesí (PATH).
+ Nejsou nainstalovány žádné procesory Markdown (pandoc, multimarkdown, discount). Nainstalujte je, prosím, anebo přidejte jejich instalaci do proměnné systémového prostřesí (PATH).
-
Github (Default)
- Github (výchozí)
+ Github (výchozí)
-
Add/Remove Style Sheets...
- Přidat/Odstranit styly...
+ Přidat/Odstranit styly...
Add/Remove Custom Style Sheets...
- Přidat/Odstranit vlastní styly...
+ Přidat/Odstranit vlastní styly...
@@ -436,228 +430,232 @@
MainWindow
-
+
Outline
Přehled
-
+
# Heading 1
# Nadpis 1
-
+
## Heading 2
## Nadpis 2
-
+
### Heading 3
### Nadpis 3
-
+
#### Heading 4
#### Nadpis 4
-
+
##### Heading 5
##### Nadpis 5
-
+
###### Heading 6
###### Nadpis 6
-
+
*Emphasis* _Emphasis_
*Zvýraznění* _Zvýraznění_
-
+
**Strong** __Strong__
**Silně** __Silně__
-
+
1. Numbered List
1. Číslovaný seznam
-
+
* Bullet List
* Seznam s odrážkami
-
+
+ Bullet List
+ Seznam s odrážkami
-
+
- Bullet List
- Seznam s odrážkami
-
+
> Block Quote
> Blokové uvozovky
-
+
`Code Span`
`Kód v souvislém textu`
-
+
``` Code Block
``` Blok kódu
-
+
[Reference Link][ID]
[Odkaz na referenci][ID]
-
+
![Image][./image.jpg "Title"]
![Obrázek][./obrázek.jpg "Název"]
-
+
--- *** ___ Horizontal Rule
--- *** ___ Vodorovná čára
-
+
Cheat Sheet
Krátké odkazy
-
+
Insert Image
Vložit obrázek
-
+
Images
Obrázky
-
+
All Files
Všechny soubory
Tabulation Width
- Šířka odsazení
+ Šířka odsazení
Spaces
- Mezery
+ Mezery
-
+
Failed to open Quick Reference Guide.
Nepodařilo se otevřít rychlé odkazy.
-
+
Quick Reference Guide
Rychlé odkazy
-
<p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
- <p>Autorské právo © 2014-2016 wereturtle</b><p>Tento software můžete používat a šířit za podmínek <a href="http://www.gnu.org/licenses/gpl.html">licence GNU General Public verze 3</a>.</p><p>Navštivte veřejné stránky na <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Zvláštní poděkování a zásluhy za použitý kód</p><p><a href="mailto:graeme@gottcode.org">Graemovi Gottovi</a>, autoru programu <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitryovi Shachnevovi, autoru programu <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabrieli M. Beddingfieldovi</a>, autoru programu <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Také jsem hluboce zavázán <a href="mailto:w.vollprecht@gmail.com">Wolfu Vollprechtovi</a>, autoru programu <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, za vynikající myšlenku poskytnutou vytvořením překrásného nástroje pro úpravy Markdown.</p>
+ <p>Autorské právo © 2014-2016 wereturtle</b><p>Tento software můžete používat a šířit za podmínek <a href="http://www.gnu.org/licenses/gpl.html">licence GNU General Public verze 3</a>.</p><p>Navštivte veřejné stránky na <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Zvláštní poděkování a zásluhy za použitý kód</p><p><a href="mailto:graeme@gottcode.org">Graemovi Gottovi</a>, autoru programu <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitryovi Shachnevovi, autoru programu <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabrieli M. Beddingfieldovi</a>, autoru programu <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Také jsem hluboce zavázán <a href="mailto:w.vollprecht@gmail.com">Wolfu Vollprechtovi</a>, autoru programu <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, za vynikající myšlenku poskytnutou vytvořením překrásného nástroje pro úpravy Markdown.</p>
-
+
About %1
O programu %1
-
+
Please restart the application for changes to take effect.
Spusťte, prosím, program znovu, aby se projevily změny.
Hud Window Opacity
- Neprůhlednost okna HUD
+ Neprůhlednost okna HUD
Matched Characters
- Shodující se znaky
+ Shodující se znaky
-
+
&File
&Soubor
-
+
&New
&Nový
-
+
&Open
&Otevřít
-
+
Reopen Closed File
Otevřít zavřený soubor znovu
-
+
Clear Menu
Vyprázdnit nabídku
-
+
&Save
&Uložit
-
+
Save &As...
Uložit &jako...
-
+
Open &Recent...
Otevřít &nedávný...
-
+
[Link](http://url.com "Title")
[Odkaz](http://url.com "Název")
-
+
[ID]: http://url.com "Reference Definition"
[ID]: http://url.com "Název pro odkaz"
-
+
Document Statistics
Statistika dokumentu
-
+
Session Statistics
Statistika sezení
-
+
Could not create file %1. Check permissions.
Nepodařilo se vytvořit soubor %1. Prověřte oprávnění.
+
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Autorské právo © 2014-2016 wereturtle</b><p>Tento software můžete používat a šířit za podmínek <a href="http://www.gnu.org/licenses/gpl.html">licence GNU General Public verze 3</a>.</p><p>Navštivte veřejné stránky na <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Zvláštní poděkování a zásluhy za použitý kód</p><p><a href="mailto:graeme@gottcode.org">Graemovi Gottovi</a>, autoru programu <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitryovi Shachnevovi, autoru programu <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabrieli M. Beddingfieldovi</a>, autoru programu <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Také jsem hluboce zavázán <a href="mailto:w.vollprecht@gmail.com">Wolfu Vollprechtovi</a>, autoru programu <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, za vynikající myšlenku poskytnutou vytvořením překrásného nástroje pro úpravy Markdown.</p> {2014-2018 ?} {3<?}
+
-
+
%Ln word(s)
%Ln slovo
@@ -666,282 +664,337 @@
-
+
R&ename...
&Přejmenovat...
-
+
Re&load from Disk...
Na&hrát znovu z disku...
-
+
Print Pre&view
Ná&hled tisku
-
+
&Print
&Tisk
-
+
&Export
&Vyvést
-
+
&Quit
&Ukončit
-
+
&Edit
Úp&ravy
-
+
&Undo
&Zpět
-
+
&Redo
&Znovu
-
+
Cu&t
Vyj&mout
-
+
&Copy
&Kopírovat
-
+
&Paste
&Vložit
-
+
+ Copy &HTML
+
+
+
+
&Insert Image...
&Vložit obrázek...
-
+
&Find
&Najít
-
+
Rep&lace
&Nahradit
-
+
&Spell check
&Ověření správného psaní
-
+
For&mat
For&mát
-
+
&Bold
&Tučné
-
+
&Italic
&Kurzíva
-
+
Stri&kethrough
Přešk&rtnutí
-
+
&HTML Comment
Poznámka &HTML
-
+
I&ndent
&Odsadit
-
+
&Unindent
&Zrušit odsazení
-
+
Block &Quote
Blokové &uvozovky
-
+
&Strip Block Quote
&Odstranit blokové uvozovky
-
+
&* Bullet List
&* Seznam s odrážkami
-
+
&- Bullet List
&- Seznam s odrážkami
-
+
&+ Bullet List
&+ Seznam s odrážkami
-
+
1&. Numbered List
1&. Číslovaný seznam
-
+
1&) Numbered List
1&) Číslovaný seznam
-
+
&Task List
Seznam ú&kolů
-
+
Toggle Task(s) &Complete
Přepnout &vyřízení úkolů
-
+
&View
&Pohled
-
+
&Full Screen
&Celá obrazovka
-
+
&Preview in HTML
&Náhled v HTML
-
+
&Outline HUD
&Přehled HUD
-
+
&Cheat Sheet HUD
&Krátké odkazy HUD
-
+
&Document Statistics HUD
Statistika &dokumentu HUD
-
+
&Session Statistics HUD
Statistika &sezení HUD
-
+
+
+ Hide Open &HUD Windows
+
+
+
+
Increase Font Size
Zvětšete velikost písma
-
+
Decrease Font Size
Snižte velikost písma
-
+
&Settings
&Nastavení
-
+
Themes...
Motivy...
-
+
Font...
Písmo...
-
+
+ Style Sheets...
+
+
+
+
+ Preview Options...
+
+
+
+
Preferences...
Nastavení...
-
+
+ Preview Options
+
+
+
+
+ Export
+ Vyvést
+
+
+
+ Copy HTML
+ Kopírovat HTML
+
+
+
+
+ Hide Open HUD Windows
+
+
+
+
+ Toggle Live HTML Preview
+
+
+
+
+ Show Open &HUD Windows
+
+
+
+
+ Show Open HUD Windows
+
+
+
+
Application Language...
Jazyk programu...
-
+
&Help
Nápo&věda
-
+
&About
&O programu
-
+
About &Qt
O &Qt
-
+
Quick &Reference Guide
Rychlé &odkazy
-
+
Wiki
Wikipedie
-
Hemingway
- Hemingway
+ Hemingway
-
+
Toggle Hemingway mode
Přepnout režim Hemingway
-
Focus
- Zaměření
+ Zaměření
-
+
Toggle distraction free mode
Přepnout nerozptylující režim
-
+
Toggle full screen mode
Přepnout režim na celou obrazovku
@@ -949,17 +1002,17 @@
MarkdownEditor
-
+
Add word to dictionary
Přidat slovo do slovníku
-
+
Check spelling...
Ověření pravopisu...
-
+
No spelling suggestions found
Nenalezeny žádné návrhy na správné psaní
@@ -992,228 +1045,281 @@
HUD
-
+
Matched Characters
Shodující se znaky
-
+
Display
Zobrazit
-
+
Show current time in full screen mode
Ukázat nynější čas v režimu na celou obrazovku
-
+
Hide menu bar in full screen mode
Skrýt pruh s nabídkou v režimu na celou obrazovku
-
+
+ Rounded
+ Kulatý
+
+
+
+ Square
+ Hranatý
+
+
+
+ Interface style
+
+
+
+
File Saving
Ukládání souboru
-
+
Auto save
Uložit automaticky
-
+
Backup file on save
Při uložení udělat zálohu
-
+
History
Historie
-
+
Remember file history
Pamatovat si otevřené soubory
-
+
Tabulation
Odsazení
-
+
Insert spaces for tabs
Vkládat mezery namísto zarážek
-
+
Tabulation width
Šířka odsazení
-
+
Styling
Vzhledová úprava
-
+
Sentence
Věta
-
+
Current Line
Nynější řádek
-
+
Three Lines
Tři řádky
-
+
Paragraph
Odstavec
-
+
+ Typewriter
+
+
+
+
Focus mode
Režim zaměření
-
+
Narrow
Úzký
-
+
Medium
Střední
-
+
Wide
Široký
-
+
Full
Úplný
-
+
Editor width
Šířka editoru
-
+
Plain
Jednoduchý
-
-
+
+
Italic
Kurzíva
-
+
Fancy
Zdobný
-
+
Blockquote style
Styl blokových uvozovek
-
+
Underline
Podtržení
-
+
Emphasis style
Styl zvýraznění
-
+
Use large headings
Použít velké nadpisy
-
+
Highlight line breaks
Zvýraznit zalomení řádků
-
+
Typing
Psaní na stroji
-
+
Cycle bullet point markers
Střídat značky odrážek
-
+
Automatically match characters
Při psaní automaticky seskupovat znaky
-
+
Customize matched characters...
Přizpůsobit seskupené znaky...
-
+
Live spellcheck enabled
Živé ověřování pravopisu zapnuto
-
+
Language
Jazyk
-
+
Dictionary
Slovník
-
+
Right
Vpravo
-
+
Left
Vlevo
-
+
Window button layout
Uspořádání tlačítek v okně
-
+
Alternate row colors
Střídat barvy řádků v oknech
-
+
Enable desktop compositing effects
Zapnout kompozitní efekty plochy
-
+
+ Auto-hide HUD windows when typing
+
+
+
+
+ Auto-hide HUD windows when previewing HTML
+
+
+
+
Opacity
Neprůhlednost
+ PreviewOptionsDialog
+
+
+ Preview Options
+
+
+
+
+ Markdown Flavor
+
+
+
+
+ Style Sheet
+
+
+
+
+ Github (Default)
+ Github (výchozí)
+
+
+
QObject
@@ -1247,7 +1353,7 @@
Vše
-
+
Null or empty file path provided for writing.
Pro psaní nezadána žádná cesta k souboru anebo prázdná.
@@ -1262,79 +1368,79 @@
Formát %1 nepodporuje Sundown.
-
+
The specified theme does not exist in the file system:
Vybraný motiv v souborovém systému není:
-
+
The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
Vybraný motiv není dostupný. Vyzkoušejte opětovné spuštění programu. Pokud budou potíže přetrvávat, nahlašte, prosím, chybu vývojářům.
-
+
Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
Nepodařilo se smazat %1 z motivu. Mělo by se přezkoušet, zda je možno zapisovat do cílového souboru.
-
+
'%1' already exists. Please choose another name.
'%1' již existuje. Zvolte, prosím, jiný název.
-
+
'%1' theme already exists. Please choose another name.
'%1' motiv již existuje. Zvolte, prosím, jiný název.
-
+
Failed to rename theme. Please check file permissions.
Nepodařilo se přejmenovat motiv. Prověřte, prosím, zda je možno zapisovat do cílového souboru.
-
+
Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
Motiv je pouze pro čtení. Zkuste, prosím, motiv přejmenovat, nebo soubor s motivem nastavit tak, aby byl zapisovatelný.
-
+
Failed to remove old theme image. Please check file permissions.
Nepodařilo se odstranit starý obrázek z motivu. Prověřte, prosím, oprávnění k souboru.
-
+
The old theme image file could not be removed from the theme directory. Please check file permissions.
Starý obrázek se nepodařilo odstranit z adresáře s motivem. Prověřte, prosím, oprávnění k souboru.
-
+
Theme image file could not be copied to the theme directory. Please check file permissions.
Soubor s obrázkem motivu se nepodařilo zkopírovat do adresáře s motivem. Prověřte, prosím, oprávnění k souboru.
-
+
Theme could not be saved to disk. Please check file permissions or try renaming the theme.
Motiv se nepodařilo uložit na disk. Prověřte, prosím, oprávnění k souboru, nebo se motiv pokuste přejmenovat.
-
+
Untitled 1
Bez názvu 1
-
+
Untitled %1
Bez názvu %1
-
-
-
+
+
+
Invalid or missing value for %1 provided.
Zadána neplatná nebo chybějící hodnota pro %1.
-
+
Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
Hodnota pro %1 není v platné oblasti. Oblast platných hodnot leží v hranicích mezi %2 a %3.
@@ -1514,134 +1620,141 @@
Upravit motiv
-
Rounded
- Kulatý
+ Kulatý
-
Square
- Hranatý
+ Hranatý
-
-
+
+
Stretch
Nataženo
-
-
+
+
Center
Vystředěno
-
+
None
Žádný
-
+
Tile
Dlaždice
-
+
Scale
Měřítko
-
+
Zoom
Zvětšení
-
+
Theme Name
Název motivu
-
+
Text Color
Barva textu
-
+
Markup Color
Barva značení
-
+
Link Color
Barva odkazu
-
+
+ Emphasis Color
+
+
+
+
+ Block Text Color
+
+
+
+
Spelling Error Color
Barva chyby v pravopisu
-
+
Text Area Background Color
Barva pozadí oblasti textu
-
+
Text Editor
Textový editor
-
+
Background Image
Obrázek na pozadí
-
+
Background Color
Barva pozadí
-
+
Editor Aspect
Poměr stran editoru
-
Editor Corners
- Rohy editoru
+ Rohy editoru
-
+
Editor Opacity
Neprůhlednost editoru
-
+
Background
Pozadí
-
+
HUD Foreground Color
Barva popředí HUD
-
+
HUD Background Color
Barva pozadí HUD
-
+
HUD
HUD
-
+
Unable to save theme.
Nepodařilo se uložit motiv.
-
+
Failed to rename theme.
Nepodařilo se přejmenovat motiv.
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_de.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_de.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_de.ts ghostwriter-1.6.0/translations/ghostwriter_de.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_de.ts 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_de.ts 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
-
+
AbstractStatisticsWidget
@@ -33,109 +33,109 @@
DictionaryDialog
Set Dictionary
- Wähle Wörterbuch
+ Wähle Wörterbuch
DocumentManager
-
+
Open File
Öffne Datei
-
+
Could not open %1
Konnte %1 nicht öffnen
-
+
Permission denied.
Zugriff verweigert
-
+
The document has been modified.
Dieses Dokument wurde bearbeitet.
-
+
Discard changes?
Änderungen verwerfen?
-
+
Rename File
Datei umbenennen
-
+
Failed to rename %1
%1 konnte nicht umbenannt werden
-
+
Save File
Datei speichern
-
+
Error saving %1
Fehler beim Speichern von %1
-
+
The document has been modified by another program.
Dieses Dokument wurde von einem anderen Programm verändert.
-
+
Would you like to reload the document?
Dokument nochmal neu laden?
-
-
+
+
Could not read %1
Konnte %1 nicht lesen
-
+
opening %1
öffne %1
-
+
File has been modified.
Datei wurde bearbeitet.
-
+
%1 has been modified.
%1 wurde bearbeitet.
-
+
Would you like to save your changes?
Änderungen speichern?
-
+
%1 is read only.
%1 kann nur gelesen werden.
-
+
Overwrite protected file?
Geschützte Datei überschreiben?
-
+
Overwrite failed.
Überschreiben ist fehlgeschlagen.
-
+
Please save file to another location.
Bitte Datei an einem anderen Ort speichern.
@@ -362,43 +362,37 @@
HtmlPreview
-
+
HTML Preview
HTML Vorschau
-
Copy HTML
- HTML kopieren
+ HTML kopieren
-
Export
- Exportieren
+ Exportieren
-
Print
- Drucken
+ Drucken
-
No markdown (pandoc, multimarkdown, discount) processors are installed. Please install or add their installation locations to your system PATH environment variable.
- Keine Markdown (Pandoc, MultiMarkdown, Discount) Processoren installiert. Bitte installiern und / oder die Installationspfade zu den Systemumgebungsvariablen (PATH) hinzufügen.
+ Keine Markdown (Pandoc, MultiMarkdown, Discount) Processoren installiert. Bitte installiern und / oder die Installationspfade zu den Systemumgebungsvariablen (PATH) hinzufügen.
-
Github (Default)
- Github (Standard)
+ Github (Standard)
-
Add/Remove Style Sheets...
- Hinzufügen / Löschen von Standard-Stilen
+ Hinzufügen / Löschen von Standard-Stilen
Add/Remove Custom Style Sheets...
- Hinzufügen / Löschen von eigenen Stilen...
+ Hinzufügen / Löschen von eigenen Stilen...
@@ -435,228 +429,232 @@
MainWindow
-
+
Outline
Übersicht
-
+
# Heading 1
# Überschrift 1
-
+
## Heading 2
## Überschrift 2
-
+
### Heading 3
### Überschrift 3
-
+
#### Heading 4
#### Überschrift 4
-
+
##### Heading 5
##### Überschrift 5
-
+
###### Heading 6
###### Überschrift 6
-
+
*Emphasis* _Emphasis_
*Hervorhebung* _Hervorhebung_
-
+
**Strong** __Strong__
**Kräftig** __Kräftig__
-
+
1. Numbered List
1. Nummerierte Liste
-
+
* Bullet List
* Aufzählungsliste
-
+
+ Bullet List
+ Aufzählungliste
-
+
- Bullet List
- Aufzählungliste
-
+
> Block Quote
> Blockzitat
-
+
`Code Span`
`Code im Fließtext`
-
+
``` Code Block
``` Code Block
-
+
[Reference Link][ID]
[Referenzlink][ID]
-
+
![Image][./image.jpg "Title"]
![Bild][./bild.jpg "Titel"]
-
+
--- *** ___ Horizontal Rule
--- *** ___ Horizontaler Strich
-
+
Cheat Sheet
Kurzreferenz
-
+
Insert Image
Bild einfügen
-
+
Images
Bilder
-
+
All Files
Alle Dateien
Tabulation Width
- Breite der Einrückung
+ Breite der Einrückung
Spaces
- Leerzeichen
+ Leerzeichen
-
+
Failed to open Quick Reference Guide.
Konnte Kurzreferenz nicht öffnen.
-
+
Quick Reference Guide
Kurzreferenz
-
<p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
- <p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
-
+
About %1
Über %1
-
+
Please restart the application for changes to take effect.
Bitte starte das Programm neu, damit die Änderungen wirksam werden.
Hud Window Opacity
- HUD Fenster Deckkraft
+ HUD Fenster Deckkraft
Matched Characters
- Übereinstimmende Zeichen
+ Übereinstimmende Zeichen
-
+
&File
&Datei
-
+
&New
&Neu
-
+
&Open
&Öffnen
-
+
Reopen Closed File
Geschlossene Datei wieder öffnen.
-
+
Clear Menu
Liste geöffneter Dateien löschen.
-
+
&Save
&Speichern
-
+
Save &As...
Speichern &Als...
-
+
Open &Recent...
Öffne &kürzlich geöffnete Dateien...
-
+
[Link](http://url.com "Title")
-
+
[ID]: http://url.com "Reference Definition"
[ID]: http://url.com "Titel für Link"
-
+
Document Statistics
Dokument Statistiken
-
+
Session Statistics
Session Statistiken
-
+
Could not create file %1. Check permissions.
Erstellen von %1 nicht möglich. Bitte Benutzerrechte überprüfen.
+
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p> {2014-2018 ?} {3<?}
+
-
+
%Ln word(s)
%Ln word
@@ -664,286 +662,341 @@
-
+
R&ename...
&Umbenennen
-
+
Re&load from Disk...
Nochmal &laden...
-
+
Print Pre&view
Druck&vorschau
-
+
&Print
&Drucken
-
+
&Export
&Exportieren
-
+
&Quit
&Schließen
-
+
&Edit
&Bearbeiten
-
+
&Undo
&Rückgängig
-
+
&Redo
&Wiederholen
-
+
Cu&t
Aus&schneiden
-
+
&Copy
&Kopieren
-
+
&Paste
&Einfügen
-
+
+ Copy &HTML
+
+
+
+
&Insert Image...
&Bild einfügen...
-
+
&Find
&Finden
-
+
Rep&lace
&Ersetzen
-
+
&Spell check
&Rechtschreibung prüfen
-
+
For&mat
Format
-
+
&Bold
Fett
-
+
&Italic
Kursiv
-
+
Stri&kethrough
Durchgestrichen
-
+
&HTML Comment
HTML Kommentar
-
+
I&ndent
Einrückung
-
+
&Unindent
Ausrücken
-
+
Block &Quote
Blockzitat
-
+
&Strip Block Quote
Blockzitat entfernen
-
+
&* Bullet List
&* Aufzählungsliste
-
+
&- Bullet List
&- Aufzählungsliste
-
+
&+ Bullet List
&+ Aufzählungsliste
-
+
1&. Numbered List
1&. Nummerierte Liste
-
+
1&) Numbered List
1&) Nummerierte Liste
-
+
&Task List
Aufgabenliste
-
+
Toggle Task(s) &Complete
Umschalter Aufgaben erledigt
-
+
&View
Ansicht
-
+
&Full Screen
Vollbild
-
+
&Preview in HTML
HTML Vorschau
-
+
&Outline HUD
Übersicht HUD
-
+
&Cheat Sheet HUD
Kurzreferenz HUD
-
+
&Document Statistics HUD
Dokument Statistiken HUD
-
+
&Session Statistics HUD
Session Statistiken HUD
-
+
+
+ Hide Open &HUD Windows
+
+
+
+
Increase Font Size
Schrift vergrößern
-
+
Decrease Font Size
Schrift verkleinern
-
+
&Settings
Einstellungen
-
+
Themes...
Designs...
-
+
Font...
Schrift...
-
+
+ Style Sheets...
+
+
+
+
+ Preview Options...
+
+
+
+
Preferences...
Einstellungen
-
+
+ Preview Options
+
+
+
+
+ Export
+ Exportieren
+
+
+
+ Copy HTML
+ HTML kopieren
+
+
+
+
+ Hide Open HUD Windows
+
+
+
+
+ Toggle Live HTML Preview
+
+
+
+
+ Show Open &HUD Windows
+
+
+
+
+ Show Open HUD Windows
+
+
+
+
Application Language...
Programmsprache...
Remember File History
- Geöffnete Dateien merken
+ Geöffnete Dateien merken
-
+
&Help
&Hilfe
-
+
&About
&Über
-
+
About &Qt
Über &Qt
-
+
Quick &Reference Guide
Kurzreferenz
-
+
Wiki
Wiki
-
Hemingway
- Hemingway
+ Hemingway
-
+
Toggle Hemingway mode
Umschalter Hemingway Modus
-
Focus
- Fokus
+ Fokus
-
+
Toggle distraction free mode
Umschalter Ablenkungsfreier Modus
-
+
Toggle full screen mode
Umschalter Vollbild
@@ -951,17 +1004,17 @@
MarkdownEditor
-
+
Add word to dictionary
Wort zu Wörterbuch hinzufügen
-
+
Check spelling...
Rechtschreibung prüfen...
-
+
No spelling suggestions found
Keine Vorschläge für Schreibweise gefunden
@@ -994,228 +1047,281 @@
HUD (Kopf-oben-Anzeige)
-
+
Matched Characters
Übereinstimmende Zeichen
-
+
Display
Display
-
+
Show current time in full screen mode
Aktuelle Zeit im Vollbild Modus anzeigen
-
+
Hide menu bar in full screen mode
Menüleiste im Vollbildmodus verstecken
-
+
+ Rounded
+ Rund
+
+
+
+ Square
+ Eckig
+
+
+
+ Interface style
+
+
+
+
File Saving
-
+
Auto save
Automatisch speichern
-
+
Backup file on save
Beim Speichern ein Backup machen
-
+
History
-
+
Remember file history
Geöffnete Dateien merken
-
+
Tabulation
-
+
Insert spaces for tabs
Leerzeichen statt Tabulatoren verwenden
-
+
Tabulation width
Tabulatorbreite
-
+
Styling
-
+
Sentence
Satz
-
+
Current Line
Aktuelle Zeile
-
+
Three Lines
Drei Zeilen
-
+
Paragraph
Absatz
-
+
+ Typewriter
+
+
+
+
Focus mode
Fokus Modus
-
+
Narrow
Eng
-
+
Medium
Mittel
-
+
Wide
Breit
-
+
Full
Voll
-
+
Editor width
Editor Breite
-
+
Plain
Schlicht
-
-
+
+
Italic
Kursiv
-
+
Fancy
Extravagant
-
+
Blockquote style
Blockzitat Stil
-
+
Underline
-
+
Emphasis style
Hervorhebung Stil
-
+
Use large headings
Große Überschriften verwenden
-
+
Highlight line breaks
-
+
Typing
-
+
Cycle bullet point markers
Aufzählungszeichen abwechseln
-
+
Automatically match characters
Zeichen automatisch beim Tippen gruppieren
-
+
Customize matched characters...
Gruppierte Zeichen anpassen...
-
+
Live spellcheck enabled
Live Rechtschreibprüfung aktiviert
-
+
Language
-
+
Dictionary
Wörterbücher
-
+
Right
Rechts
-
+
Left
Links
-
+
Window button layout
Layout der Knöpfe im HUD Fenster
-
+
Alternate row colors
Zeilenfarben im HUD Fenster abwechseln
-
+
Enable desktop compositing effects
Effekte für die Generierung aktivieren
-
+
+ Auto-hide HUD windows when typing
+
+
+
+
+ Auto-hide HUD windows when previewing HTML
+
+
+
+
Opacity
HUD Fenster Deckkraft
+ PreviewOptionsDialog
+
+
+ Preview Options
+
+
+
+
+ Markdown Flavor
+
+
+
+
+ Style Sheet
+
+
+
+
+ Github (Default)
+ Github (Standard)
+
+
+
QObject
@@ -1249,7 +1355,7 @@
Alle
-
+
Null or empty file path provided for writing.
Null oder kein Pfad beim Schreibversuch gegeben.
@@ -1264,79 +1370,79 @@
Das %1 Format unterstützt Sundown nicht.
-
+
The specified theme does not exist in the file system:
Das ausgewählte Theme existiert nicht:
-
+
The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
Das ausgewählte Theme ist nicht verfügbar. Programm erneut starten. Sollte der Fehler weiterhin bestehen, bitte den Fehler den Entwicklern melden.
-
+
Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
Konnte %1 nicht vom Theme löschen. Es sollte überprüfet werden, ob die Zieldatei beschrieben werden darf.
-
+
'%1' already exists. Please choose another name.
'%1' existiert bereits. Bitte einen anderen Namen wählen.
-
+
'%1' theme already exists. Please choose another name.
'%1' Theme existiert bereits. Bitte einen anderen Namen wählen.
-
+
Failed to rename theme. Please check file permissions.
Konnte Theme nicht umbenennen. Bitte überprüfen, ob die Zieldatei beschrieben werden darf.
-
+
Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
Theme Datei ist nur lesbar. Bitte Zieldatei umbenennen, oder wahlweise beschreibbar machen.
-
+
Failed to remove old theme image. Please check file permissions.
Konnte Bild von altem Theme nicht entfernen. Bitte Recht für Zieldatei überprüfen.
-
+
The old theme image file could not be removed from the theme directory. Please check file permissions.
Das alte Bild vom Theme konnte nicht aus dessen Ordner entfernt werden. Bitte Rechte für Zieldatei überprüfen.
-
+
Theme image file could not be copied to the theme directory. Please check file permissions.
Bilddatei für Theme konnte nicht in den Zielordner kopiert werden. Bitte Recht für Zieldatei überprüfen.
-
+
Theme could not be saved to disk. Please check file permissions or try renaming the theme.
Theme konnte nicht gespeichert werden. Bitte Rechte für Zieldatei prüfen oder diese umbenennen.
-
+
Untitled 1
Unbenannt 1
-
+
Untitled %1
Unbenannt %1
-
-
-
+
+
+
Invalid or missing value for %1 provided.
Ungültiger oder fehlender Wert für %1 gegeben.
-
+
Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
Wert für %1 ist nicht im gültigen Bereich. Gültige Werte liegen im Bereich inklusiven Grenzen %2 und %3.
@@ -1516,134 +1622,141 @@
Theme bearbeiten
-
Rounded
- Rund
+ Rund
-
Square
- Eckig
+ Eckig
-
-
+
+
Stretch
Gestreckt
-
-
+
+
Center
Zentriert
-
+
None
Kein
-
+
Tile
Kachel
-
+
Scale
Maßstab
-
+
Zoom
Zoom
-
+
Theme Name
Theme Name
-
+
Text Color
Textfarbe
-
+
Markup Color
Markup Farbe
-
+
Link Color
Linkfarbe
-
+
+ Emphasis Color
+
+
+
+
+ Block Text Color
+
+
+
+
Spelling Error Color
Rechtschreibfehlerfarbe
-
+
Text Area Background Color
Textbereich Hintergrundfarbe
-
+
Text Editor
Text Editor
-
+
Background Image
Hintergrundbild
-
+
Background Color
Hintergrundfarbe
-
+
Editor Aspect
Editor Seitenverhältnis
-
Editor Corners
- Editorecken
+ Editorecken
-
+
Editor Opacity
Editor Deckkraft
-
+
Background
Hintergrund
-
+
HUD Foreground Color
HUD Vordergrundfarbe
-
+
HUD Background Color
HUD Hintergrundfarbe
-
+
HUD
HUD
-
+
Unable to save theme.
Konnte Theme nicht speichern.
-
+
Failed to rename theme.
Konnte Theme nicht umbenennen.
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_en.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_en.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_en.ts ghostwriter-1.6.0/translations/ghostwriter_en.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_en.ts 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_en.ts 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
-
+
AbstractStatisticsWidget
@@ -32,103 +32,103 @@
DocumentManager
-
+
Open File
-
+
Could not open %1
-
+
Permission denied.
-
+
The document has been modified.
-
+
Discard changes?
-
+
Rename File
-
+
Failed to rename %1
-
+
Save File
-
+
Error saving %1
-
+
The document has been modified by another program.
-
+
Would you like to reload the document?
-
-
+
+
Could not read %1
-
+
opening %1
-
+
File has been modified.
-
+
%1 has been modified.
-
+
Would you like to save your changes?
-
+
%1 is read only.
-
+
Overwrite protected file?
-
+
Overwrite failed.
-
+
Please save file to another location.
@@ -355,40 +355,10 @@
HtmlPreview
-
+
HTML Preview
-
-
- Copy HTML
-
-
-
-
- Export
-
-
-
-
- Print
-
-
-
-
- No markdown (pandoc, multimarkdown, discount) processors are installed. Please install or add their installation locations to your system PATH environment variable.
-
-
-
-
- Github (Default)
-
-
-
-
- Add/Remove Style Sheets...
-
-
ImageButton
@@ -424,212 +394,212 @@
MainWindow
-
+
Outline
-
+
# Heading 1
-
+
## Heading 2
-
+
### Heading 3
-
+
#### Heading 4
-
+
##### Heading 5
-
+
###### Heading 6
-
+
*Emphasis* _Emphasis_
-
+
**Strong** __Strong__
-
+
1. Numbered List
-
+
* Bullet List
-
+
+ Bullet List
-
+
- Bullet List
-
+
> Block Quote
-
+
`Code Span`
-
+
``` Code Block
-
+
[Reference Link][ID]
-
+
![Image][./image.jpg "Title"]
-
+
--- *** ___ Horizontal Rule
-
+
Cheat Sheet
-
+
Could not create file %1. Check permissions.
-
+
Insert Image
-
+
Images
-
+
All Files
-
+
Failed to open Quick Reference Guide.
-
+
Quick Reference Guide
-
- <p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
-
-
-
-
+
About %1
-
+
Please restart the application for changes to take effect.
-
+
&File
-
+
&New
-
+
&Open
-
+
Reopen Closed File
-
+
Clear Menu
-
+
&Save
-
+
Save &As...
-
+
Open &Recent...
-
+
[Link](http://url.com "Title")
-
+
[ID]: http://url.com "Reference Definition"
-
+
Document Statistics
-
+
Session Statistics
+
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+
+
-
+
%Ln word(s)
%Ln word
@@ -637,282 +607,329 @@
-
+
R&ename...
-
+
Re&load from Disk...
-
+
Print Pre&view
-
+
&Print
-
+
&Export
-
+
&Quit
-
+
&Edit
-
+
&Undo
-
+
&Redo
-
+
Cu&t
-
+
&Copy
-
+
&Paste
-
+
+ Copy &HTML
+
+
+
+
&Insert Image...
-
+
&Find
-
+
Rep&lace
-
+
&Spell check
-
+
For&mat
-
+
&Bold
-
+
&Italic
-
+
&HTML Comment
-
+
I&ndent
-
+
&Unindent
-
+
Block &Quote
-
+
&Strip Block Quote
-
+
&* Bullet List
-
+
&- Bullet List
-
+
&+ Bullet List
-
+
1&. Numbered List
-
+
1&) Numbered List
-
+
&Task List
-
+
Toggle Task(s) &Complete
-
+
&View
-
+
&Full Screen
-
+
&Preview in HTML
-
+
&Outline HUD
-
+
&Cheat Sheet HUD
-
+
&Document Statistics HUD
-
+
&Session Statistics HUD
-
+
+
+ Hide Open &HUD Windows
+
+
+
+
Increase Font Size
-
+
Decrease Font Size
-
+
&Settings
-
+
Themes...
-
+
Font...
-
+
+ Style Sheets...
+
+
+
+
+ Preview Options...
+
+
+
+
Preferences...
-
+
+ Preview Options
+
+
+
+
+ Export
+
+
+
+
+ Copy HTML
+
+
+
+
+
+ Hide Open HUD Windows
+
+
+
+
+ Toggle Live HTML Preview
+
+
+
+
+ Show Open &HUD Windows
+
+
+
+
+ Show Open HUD Windows
+
+
+
+
Application Language...
-
+
Stri&kethrough
-
+
&Help
-
+
&About
-
+
About &Qt
-
+
Quick &Reference Guide
-
+
Wiki
-
- Hemingway
-
-
-
-
+
Toggle Hemingway mode
-
- Focus
-
-
-
-
+
Toggle distraction free mode
-
+
Toggle full screen mode
@@ -920,17 +937,17 @@
MarkdownEditor
-
+
Add word to dictionary
-
+
Check spelling...
-
+
No spelling suggestions found
@@ -963,228 +980,281 @@
-
+
Matched Characters
-
+
Display
-
+
Show current time in full screen mode
-
+
Hide menu bar in full screen mode
-
+
+ Rounded
+
+
+
+
+ Square
+
+
+
+
+ Interface style
+
+
+
+
File Saving
-
+
Auto save
-
+
Backup file on save
-
+
History
-
+
Remember file history
-
+
Tabulation
-
+
Insert spaces for tabs
-
+
Tabulation width
-
+
Styling
-
+
Sentence
-
+
Current Line
-
+
Three Lines
-
+
Paragraph
-
+
+ Typewriter
+
+
+
+
Focus mode
-
+
Narrow
-
+
Medium
-
+
Wide
-
+
Full
-
+
Editor width
-
+
Plain
-
-
+
+
Italic
-
+
Fancy
-
+
Blockquote style
-
+
Underline
-
+
Emphasis style
-
+
Use large headings
-
+
Highlight line breaks
-
+
Typing
-
+
Cycle bullet point markers
-
+
Automatically match characters
-
+
Customize matched characters...
-
+
Live spellcheck enabled
-
+
Language
-
+
Dictionary
-
+
Right
-
+
Left
-
+
Window button layout
-
+
Alternate row colors
-
+
Enable desktop compositing effects
-
+
+ Auto-hide HUD windows when typing
+
+
+
+
+ Auto-hide HUD windows when previewing HTML
+
+
+
+
Opacity
+ PreviewOptionsDialog
+
+
+ Preview Options
+
+
+
+
+ Markdown Flavor
+
+
+
+
+ Style Sheet
+
+
+
+
+ Github (Default)
+
+
+
+
QObject
@@ -1218,7 +1288,7 @@
-
+
Null or empty file path provided for writing.
@@ -1233,79 +1303,79 @@
-
+
The specified theme does not exist in the file system:
-
+
The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
-
+
Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
-
+
'%1' already exists. Please choose another name.
-
+
'%1' theme already exists. Please choose another name.
-
+
Failed to rename theme. Please check file permissions.
-
+
Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
-
+
Failed to remove old theme image. Please check file permissions.
-
+
The old theme image file could not be removed from the theme directory. Please check file permissions.
-
+
Theme image file could not be copied to the theme directory. Please check file permissions.
-
+
Theme could not be saved to disk. Please check file permissions or try renaming the theme.
-
+
Untitled 1
-
+
Untitled %1
-
-
-
+
+
+
Invalid or missing value for %1 provided.
-
+
Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
@@ -1485,134 +1555,129 @@
-
- Rounded
-
-
-
-
- Square
-
-
-
-
-
+
+
Stretch
-
-
+
+
Center
-
+
None
-
+
Tile
-
+
Scale
-
+
Zoom
-
+
Theme Name
-
+
Text Color
-
+
Markup Color
-
+
Link Color
-
+
+ Emphasis Color
+
+
+
+
+ Block Text Color
+
+
+
+
Spelling Error Color
-
+
Text Area Background Color
-
+
Text Editor
-
+
Background Image
-
+
Background Color
-
+
Editor Aspect
-
- Editor Corners
-
-
-
-
+
Editor Opacity
-
+
Background
-
+
HUD Foreground Color
-
+
HUD Background Color
-
+
HUD
-
+
Unable to save theme.
-
+
Failed to rename theme.
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_es.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_es.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_es.ts ghostwriter-1.6.0/translations/ghostwriter_es.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_es.ts 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_es.ts 2018-04-07 21:47:43.000000000 +0000
@@ -32,103 +32,103 @@
DocumentManager
-
+
Open File
Abrir archivo
-
+
Could not open %1
No se pudo abrir %1
-
+
Permission denied.
Permiso denegado.
-
+
The document has been modified.
El documento ha sido modificado.
-
+
Discard changes?
¿Descartar los cambios?
-
+
Rename File
Renombrar archivo
-
+
Failed to rename %1
Error al renombrar %1
-
+
Save File
Guardar archivo
-
+
Error saving %1
Error al guardar %1
-
+
The document has been modified by another program.
El documento ha sido modificado por otro programa.
-
+
Would you like to reload the document?
¿Le gustaría recargar el documento?
-
-
+
+
Could not read %1
No se pudo leer %1
-
+
opening %1
abriendo %1
-
+
File has been modified.
El archivo ha sido modificado.
-
+
%1 has been modified.
%1 ha sido modificado.
-
+
Would you like to save your changes?
¿Le gustaría guardar los cambios?
-
+
%1 is read only.
%1 es de solo lectura.
-
+
Overwrite protected file?
¿Sobrescribir archivo protegido?
-
+
Overwrite failed.
Error de sobrescritura.
-
+
Please save file to another location.
Guarde el archivo en otra ubicación.
@@ -355,39 +355,33 @@
HtmlPreview
-
+
HTML Preview
Vista preliminar en HTML
-
Copy HTML
- Copiar HTML
+ Copiar HTML
-
Export
- Exportar
+ Exportar
-
Print
- Imprimir
+ Imprimir
-
No markdown (pandoc, multimarkdown, discount) processors are installed. Please install or add their installation locations to your system PATH environment variable.
- No hay procesadores Markdown instalados (Pandoc, Multimarkdown, Discount). Instale o agregue las ubicaciones de instalación a la variable del sistema PATH.
+ No hay procesadores Markdown instalados (Pandoc, Multimarkdown, Discount). Instale o agregue las ubicaciones de instalación a la variable del sistema PATH.
-
Github (Default)
- Github (Predeterminado)
+ Github (Predeterminado)
-
Add/Remove Style Sheets...
- Agregar/Quitar hojas de estilo...
+ Agregar/Quitar hojas de estilo...
@@ -424,212 +418,216 @@
MainWindow
-
+
Outline
Esquema
-
+
# Heading 1
# Encabezado 1
-
+
## Heading 2
## Encabezado 2
-
+
### Heading 3
### Encabezado 3
-
+
#### Heading 4
#### Encabezado 4
-
+
##### Heading 5
##### Encabezado 5
-
+
###### Heading 6
###### Encabezado 6
-
+
*Emphasis* _Emphasis_
*Énfasis* _Énfasis_
-
+
**Strong** __Strong__
**Negritas** __Negritas__
-
+
1. Numbered List
1. Lista numerada
-
+
* Bullet List
* Viñeta
-
+
+ Bullet List
+ Viñeta
-
+
- Bullet List
- Viñeta
-
+
> Block Quote
> Cita de bloque
-
+
`Code Span`
`Línea de código`
-
+
``` Code Block
``` Bloque de código
-
+
[Reference Link][ID]
[Referenciar enlace][ID]
-
+
![Image][./image.jpg "Title"]
![Imagen][./imagen.jpg "Título"]
-
+
--- *** ___ Horizontal Rule
--- *** ___ Regla horizontal
-
+
Cheat Sheet
Hoja de referencia
-
+
Could not create file %1. Check permissions.
No se pudo crear el archivo %1. Compruebe los permisos.
-
+
Insert Image
Insertar imagen
-
+
Images
Imágenes
-
+
All Files
Todos los archivos
-
+
Failed to open Quick Reference Guide.
Error al abrir la guía de referencia rápida.
-
+
Quick Reference Guide
Guía de referencia rápida
-
<p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
- <p>Derechos reservados © 2014-2017 wereturtle</b><p>Usted puede usar y distribuir este software bajo los términos de la <a href="http://www.gnu.org/licenses/gpl.html">licencia GNU General Public versión 3</a>.</p><p>Visite el sitio web oficial en <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Agradecimientos especiales y crédito por el código reutilizado a</p><p><a href="mailto:graeme@gottcode.org">Graemovi Gottovi</a>, autor de <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitryovi Shachnevovi, autor de <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabrieli M. Beddingfieldovi</a>, autor de <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>También estoy en deuda con <a href="mailto:w.vollprecht@gmail.com">Wolfu Vollprechtovi</a>, autor de <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, por la inspiración que me proporcionó al haber creado dicho editor de Markdown.</p>
+ <p>Derechos reservados © 2014-2017 wereturtle</b><p>Usted puede usar y distribuir este software bajo los términos de la <a href="http://www.gnu.org/licenses/gpl.html">licencia GNU General Public versión 3</a>.</p><p>Visite el sitio web oficial en <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Agradecimientos especiales y crédito por el código reutilizado a</p><p><a href="mailto:graeme@gottcode.org">Graemovi Gottovi</a>, autor de <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitryovi Shachnevovi, autor de <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabrieli M. Beddingfieldovi</a>, autor de <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>También estoy en deuda con <a href="mailto:w.vollprecht@gmail.com">Wolfu Vollprechtovi</a>, autor de <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, por la inspiración que me proporcionó al haber creado dicho editor de Markdown.</p>
-
+
About %1
Acerca de %1
-
+
Please restart the application for changes to take effect.
Reinicie la aplicación para que los cambios surtan efecto.
-
+
&File
&Archivo
-
+
&New
&Nuevo
-
+
&Open
&Abrir
-
+
Reopen Closed File
Volver a abrir archivo cerrado
-
+
Clear Menu
Limpiar menú
-
+
&Save
&Guardar
-
+
Save &As...
Guardar &como...
-
+
Open &Recent...
Abrir &reciente...
-
+
[Link](http://url.com "Title")
[Enlace](http://url.com "Título")
-
+
[ID]: http://url.com "Reference Definition"
[ID]: http://url.com "Definición de la referencia"
-
+
Document Statistics
Estadísticas del documento
-
+
Session Statistics
Estadísticas de la sesión
+
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Derechos reservados © 2014-2017 wereturtle</b><p>Usted puede usar y distribuir este software bajo los términos de la <a href="http://www.gnu.org/licenses/gpl.html">licencia GNU General Public versión 3</a>.</p><p>Visite el sitio web oficial en <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Agradecimientos especiales y crédito por el código reutilizado a</p><p><a href="mailto:graeme@gottcode.org">Graemovi Gottovi</a>, autor de <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitryovi Shachnevovi, autor de <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabrieli M. Beddingfieldovi</a>, autor de <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>También estoy en deuda con <a href="mailto:w.vollprecht@gmail.com">Wolfu Vollprechtovi</a>, autor de <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, por la inspiración que me proporcionó al haber creado dicho editor de Markdown.</p> {2014-2018 ?} {3<?}
+
-
+
%Ln word(s)
%Ln palabra
@@ -637,282 +635,337 @@
-
+
R&ename...
R&enombrar archivo...
-
+
Re&load from Disk...
Re&cargar archivo...
-
+
Print Pre&view
Vis&ta preliminar de impresión
-
+
&Print
&Imprimir
-
+
&Export
&Exportar
-
+
&Quit
&Salir
-
+
&Edit
&Editar
-
+
&Undo
&Deshacer
-
+
&Redo
&Rehacer
-
+
Cu&t
Cor&tar
-
+
&Copy
&Copiar
-
+
&Paste
&Pegar
-
+
+ Copy &HTML
+
+
+
+
&Insert Image...
&Insertar imagen...
-
+
&Find
&Buscar
-
+
Rep&lace
R&eemplazar
-
+
&Spell check
&Corrector ortográfico
-
+
For&mat
For&mato
-
+
&Bold
&Negrita
-
+
&Italic
&Cursiva
-
+
&HTML Comment
&Comentar
-
+
I&ndent
&Aumentar sangría
-
+
&Unindent
&Quitar sangría
-
+
Block &Quote
Cita de &bloque
-
+
&Strip Block Quote
&Quitar cita de bloque
-
+
&* Bullet List
&* Viñeta
-
+
&- Bullet List
&- Viñeta
-
+
&+ Bullet List
&+ Viñeta
-
+
1&. Numbered List
1&. Lista numerada
-
+
1&) Numbered List
1&) Lista numerada
-
+
&Task List
&Insertar lista de tareas
-
+
Toggle Task(s) &Complete
Marcar/Desmarcar tarea(s) &como completada(s)
-
+
&View
&Ver
-
+
&Full Screen
&Pantalla completa
-
+
&Preview in HTML
&Vista preliminar en HTML
-
+
&Outline HUD
&Esquema HUD
-
+
&Cheat Sheet HUD
&Hoja de referencia HUD
-
+
&Document Statistics HUD
&Estadísticas del documento HUD
-
+
&Session Statistics HUD
&Estadísticas de la sesión HUD
-
+
+
+ Hide Open &HUD Windows
+
+
+
+
Increase Font Size
Aumentar el tamaño de la fuente
-
+
Decrease Font Size
Disminuir tamaño de la fuente
-
+
&Settings
&Ajustes
-
+
Themes...
Temas...
-
+
Font...
Fuente...
-
+
+ Style Sheets...
+
+
+
+
+ Preview Options...
+
+
+
+
Preferences...
Preferencias...
-
+
+ Preview Options
+
+
+
+
+ Export
+ Exportar
+
+
+
+ Copy HTML
+ Copiar HTML
+
+
+
+
+ Hide Open HUD Windows
+
+
+
+
+ Toggle Live HTML Preview
+
+
+
+
+ Show Open &HUD Windows
+
+
+
+
+ Show Open HUD Windows
+
+
+
+
Application Language...
Idioma de la aplicación...
-
+
Stri&kethrough
&Tachado
-
+
&Help
&Ayuda
-
+
&About
&Acerca de
-
+
About &Qt
Acerca de &Qt
-
+
Quick &Reference Guide
Guía de &referencia rápida
-
+
Wiki
Wiki
-
Hemingway
- Hemingway
+ Hemingway
-
+
Toggle Hemingway mode
Cambiar a modo Hemingway
-
Focus
- Enfoque
+ Enfoque
-
+
Toggle distraction free mode
Cambiar a modo libre de distracción
-
+
Toggle full screen mode
Cambiar a modo de pantalla completa
@@ -920,17 +973,17 @@
MarkdownEditor
-
+
Add word to dictionary
Agregar palabra al diccionario
-
+
Check spelling...
Revisar ortografía...
-
+
No spelling suggestions found
No se encontraron sugerencias ortográficas
@@ -963,228 +1016,281 @@
HuD
-
+
Matched Characters
Caracteres delimitadores
-
+
Display
Mostrar
-
+
Show current time in full screen mode
Mostrar la hora actual en el modo de pantalla completa
-
+
Hide menu bar in full screen mode
Ocultar la barra de menú en el modo de pantalla completa
-
+
+ Rounded
+ Redondeado
+
+
+
+ Square
+ Cuadrado
+
+
+
+ Interface style
+
+
+
+
File Saving
Opciones de guardado
-
+
Auto save
Guardar automáticamente
-
+
Backup file on save
Respaldar el archivo al guardar los cambios
-
+
History
Historial
-
+
Remember file history
Recordar el historia de archivos recientes
-
+
Tabulation
Tabulación
-
+
Insert spaces for tabs
Insertar espacios en vez de tabuladores
-
+
Tabulation width
Ancho de tabulación
-
+
Styling
Estilo
-
+
Sentence
Oración
-
+
Current Line
Línea actual
-
+
Three Lines
Tres líneas
-
+
Paragraph
Párrafo
-
+
+ Typewriter
+
+
+
+
Focus mode
Modo de enfoque
-
+
Narrow
Estrecho
-
+
Medium
Mediano
-
+
Wide
Amplio
-
+
Full
Completo
-
+
Editor width
Anchura del editor
-
+
Plain
Plano
-
-
+
+
Italic
Cursiva
-
+
Fancy
Elegante
-
+
Blockquote style
Estilo de la cita de bloque
-
+
Underline
Subrayado
-
+
Emphasis style
Estilo de énfasis
-
+
Use large headings
Usar títulos grandes
-
+
Highlight line breaks
Resaltar saltos de línea
-
+
Typing
Escritura
-
+
Cycle bullet point markers
Alternar los indicadores de viñeta
-
+
Automatically match characters
Cerrar automáticamente los caracteres delimitadores
-
+
Customize matched characters...
Personalizar caracteres delimitadores...
-
+
Live spellcheck enabled
Habilitar automáticamente el corrector ortográfico
-
+
Language
Idioma
-
+
Dictionary
Diccionario
-
+
Right
Derecha
-
+
Left
Izquierda
-
+
Window button layout
Disposición del botón de la ventana
-
+
Alternate row colors
Alternar el color de las filas
-
+
Enable desktop compositing effects
Habilitar efectos de escritorio
-
+
+ Auto-hide HUD windows when typing
+
+
+
+
+ Auto-hide HUD windows when previewing HTML
+
+
+
+
Opacity
Opacidad
+ PreviewOptionsDialog
+
+
+ Preview Options
+
+
+
+
+ Markdown Flavor
+
+
+
+
+ Style Sheet
+
+
+
+
+ Github (Default)
+ Github (Predeterminado)
+
+
+
QObject
@@ -1218,7 +1324,7 @@
Todo
-
+
Null or empty file path provided for writing.
La ruta del archivo proporcionada para escritura es invalida o se encuentra vacía.
@@ -1233,79 +1339,79 @@
El formato %1 no es compatible con el procesador Sundown.
-
+
The specified theme does not exist in the file system:
El tema especificado no existe en el sistema de archivos:
-
+
The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
El tema especificado no está disponible. Intente reiniciar la aplicación. Si el problema persiste, envíe un informe de error.
-
+
Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
No se pudo eliminar %1 del tema. Compruebe los permisos del archivo para que pueda ser modificado.
-
+
'%1' already exists. Please choose another name.
'%1' ya existe. Elija otro nombre.
-
+
'%1' theme already exists. Please choose another name.
'%1' el tema ya existe. Elija otro nombre.
-
+
Failed to rename theme. Please check file permissions.
Error al cambiar el nombre del tema. Compruebe los permisos del archivo.
-
+
Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
El tema es de solo lectura. Intente cambiar el nombre del tema o compruebe los permisos del archivo para que pueda modificarse.
-
+
Failed to remove old theme image. Please check file permissions.
Error al eliminar la imagen previa del tema. Compruebe los permisos del archivo.
-
+
The old theme image file could not be removed from the theme directory. Please check file permissions.
Error al eliminar el archivo de imagen previa ubicado en el directorio de temas. Compruebe los permisos del archivo.
-
+
Theme image file could not be copied to the theme directory. Please check file permissions.
El archivo de imagen del tema no pudo ser copiado dentro del directorio de temas. Compruebe los permisos del archivo.
-
+
Theme could not be saved to disk. Please check file permissions or try renaming the theme.
El tema no pudo ser guardado en disco. Compruebe los permisos del archivo o intente cambiar el nombre del tema.
-
+
Untitled 1
Sin título 1
-
+
Untitled %1
Sin título %1
-
-
-
+
+
+
Invalid or missing value for %1 provided.
El valor proporcionado para %1 es inválido o inexistente.
-
+
Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
El valor para %1 está fuera de rango. Los valores válidos están entre %2 y %3, inclusive.
@@ -1485,134 +1591,141 @@
Editar tema
-
Rounded
- Redondeado
+ Redondeado
-
Square
- Cuadrado
+ Cuadrado
-
-
+
+
Stretch
Ajustado
-
-
+
+
Center
Centrado
-
+
None
Ninguno
-
+
Tile
Mosaico
-
+
Scale
Escala
-
+
Zoom
Zoom
-
+
Theme Name
Nombre del tema
-
+
Text Color
Color del texto
-
+
Markup Color
Color del resaltado
-
+
Link Color
Color de los enlaces
-
+
+ Emphasis Color
+
+
+
+
+ Block Text Color
+
+
+
+
Spelling Error Color
Color de las marcas de error ortográfico
-
+
Text Area Background Color
Color de fondo del área de texto
-
+
Text Editor
Editor de texto
-
+
Background Image
Imagen de fondo
-
+
Background Color
Color de fondo
-
+
Editor Aspect
Aspecto del editor
-
Editor Corners
- Esquinas del editor
+ Esquinas del editor
-
+
Editor Opacity
Opacidad del editor
-
+
Background
Fondo
-
+
HUD Foreground Color
Color de primer plano del HUD
-
+
HUD Background Color
Color de fondo del HUD
-
+
HUD
HUD
-
+
Unable to save theme.
No se puede guardar el tema.
-
+
Failed to rename theme.
Error al cambiar el nombre del tema.
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_fr.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_fr.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_fr.ts ghostwriter-1.6.0/translations/ghostwriter_fr.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_fr.ts 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_fr.ts 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
-
+
AbstractStatisticsWidget
@@ -32,103 +32,103 @@
DocumentManager
-
+
Open File
Ouvrir un fichier
-
+
Could not open %1
Impossible d'ouvrir %1
-
+
Permission denied.
Permission refusée.
-
+
The document has been modified.
Le document a été modifié.
-
+
Discard changes?
Annuler les modifications ?
-
+
Rename File
Renommer le fichier
-
+
Failed to rename %1
Impossible de renommer %1
-
+
Save File
Enregistrer le fichier
-
+
Error saving %1
Erreur à l'enregistrement de %1
-
+
The document has been modified by another program.
Le document a été modifié par un autre programme.
-
+
Would you like to reload the document?
Voulez-vous recharger le document ?
-
-
+
+
Could not read %1
Impossible de lire %1
-
+
opening %1
Ouverture de %1
-
+
File has been modified.
Le fichier a été modifié.
-
+
%1 has been modified.
%1 a été modifié.
-
+
Would you like to save your changes?
Voulez-vous enregistrer vos modifications ?
-
+
%1 is read only.
%1 est en lecture seule.
-
+
Overwrite protected file?
Remplacer le fichier protégé ?
-
+
Overwrite failed.
Le remplacement a échoué.
-
+
Please save file to another location.
Enregistrer le fichier à un autre emplacement, SVP.
@@ -294,12 +294,12 @@
Search up
- Vers le haut
+ Recherche vers le haut
Search down
- Vers le bas
+ Recherche vers le bas
@@ -355,39 +355,33 @@
HtmlPreview
-
+
HTML Preview
Aperçu HTML
-
Copy HTML
- Copier HTML
+ Copier HTML
-
Export
- Exporter
+ Exporter
-
Print
- Imprimer
+ Imprimer
-
No markdown (pandoc, multimarkdown, discount) processors are installed. Please install or add their installation locations to your system PATH environment variable.
- Aucun convertisseur Markdown (pandoc, multimarkdown, discount) installé. Installez en un ou ajoutez les répertoires d'installation dans la variable d'environnement PATH de votre système.
+ Aucun convertisseur Markdown (pandoc, multimarkdown, discount) installé. Installez en un ou ajoutez les répertoires d'installation dans la variable d'environnement PATH de votre système.
-
Github (Default)
- Github (par défaut)
+ Github (par défaut)
-
Add/Remove Style Sheets...
- Ajouter/Enlever des feuilles de style CSS ...
+ Ajouter/Enlever des feuilles de style CSS ...
@@ -424,212 +418,212 @@
MainWindow
-
+
Outline
Sommaire
-
+
# Heading 1
# Titre 1
-
+
## Heading 2
## Titre 2
-
+
### Heading 3
### Titre 3
-
+
#### Heading 4
#### Titre 4
-
+
##### Heading 5
##### Titre 5
-
+
###### Heading 6
###### Titre 6
-
+
*Emphasis* _Emphasis_
*Emphase* _Emphase_
-
+
**Strong** __Strong__
**Forte Emphase** __Forte Emphase__
-
+
1. Numbered List
1. Liste ordonnée
-
+
* Bullet List
* Liste non ordonnée
-
+
+ Bullet List
+ Liste non ordonnée
-
+
- Bullet List
- Liste non ordonnée
-
+
> Block Quote
> Citation
-
+
`Code Span`
`Fragment de code (inline)`
-
+
``` Code Block
``` Bloc de code
-
+
[Link](http://url.com "Title")
[Lien](http://url.fr "Titre consultatif")
-
+
[Reference Link][ID]
[Lien référencé][ID]
-
+
[ID]: http://url.com "Reference Definition"
[ID]: http://url.fr "Titre consultatif"
-
+
![Image][./image.jpg "Title"]
![Image][./image.jpg "Titre consultatif"]
-
+
Cheat Sheet
Aide-mémoire
-
+
Insert Image
Insérer une image
-
+
Images
Images
-
+
All Files
Tous les fichiers
-
+
Failed to open Quick Reference Guide.
Impossible d'ouvrir le guide d'utilisation.
-
+
Quick Reference Guide
Guide d'utilisation
-
- <p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
-
-
-
-
+
About %1
À propos de %1
-
+
Please restart the application for changes to take effect.
Redémarrez le logiciel pour que les modifications soient prises en compte.
-
+
&File
&Fichier
-
+
&New
&Nouveau
-
+
&Open
&Ouvrir
-
+
Reopen Closed File
Réouvrir le dernier fichier fermé
-
+
Clear Menu
Effacer le menu
-
+
&Save
&Enregistrer
-
+
Save &As...
Enregistrer &sous ...
-
+
Open &Recent...
Fichiers &récents ...
-
+
--- *** ___ Horizontal Rule
-
+ --- *** ___ Trait horizontal
-
+
Document Statistics
Statistiques du document
-
+
Session Statistics
Statistiques de la session
-
+
Could not create file %1. Check permissions.
Impossible de créer le fichier %1. Vérifiez les permissions.
+
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Copyright © 2014-2018 wereturtle</b><p>Vous pouvez utiliser et redistribuer ce logiciel selon les termes de la licence <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visiter le site internet officiel <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Crédits et remerciements spéciaux pour le code d'origine à </p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, auteur de <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, auteur de <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, auteur de <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>J'ai également une dette abyssale envers <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, l'auteur de <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, pour l'inspiration qu'il m'a donné en créant un si beau éditeur Markdown.</p>
+
-
+
%Ln word(s)
%Ln mot
@@ -637,282 +631,337 @@
-
+
R&ename...
Reno&mmer ...
-
+
Re&load from Disk...
Recharger depuis le &disque
-
+
Print Pre&view
A&perçu avant impression
-
+
&Print
&Imprimer
-
+
&Export
E&xporter
-
+
&Quit
&Quitter
-
+
&Edit
É&dition
-
+
&Undo
&Annuler
-
+
&Redo
&Rétablir
-
+
Cu&t
Co&uper
-
+
&Copy
Co&pier
-
+
&Paste
Co&ller
-
+
+ Copy &HTML
+ Copier le &HTML
+
+
+
&Insert Image...
&Insérer une image ...
-
+
&Find
Re&chercher
-
+
Rep&lace
Re&mplacer
-
+
&Spell check
Correction &Orthographique
-
+
For&mat
For&mat
-
+
&Bold
&Forte Emphase
-
+
&Italic
&Emphase
-
+
&HTML Comment
Commentaire &HTML
-
+
I&ndent
&Augmenter l'indentation
-
+
&Unindent
&Diminuer l'indentation
-
+
Block &Quote
&Citation
-
+
&Strip Block Quote
&Retirer la citation
-
+
&* Bullet List
&* Liste non ordonnée
-
+
&- Bullet List
&- Liste non ordonnée
-
+
&+ Bullet List
&+ Liste non ordonnée
-
+
1&. Numbered List
1&. Liste ordonnée
-
+
1&) Numbered List
1&) Liste ordonnée
-
+
&Task List
Liste de &tâches
-
+
Toggle Task(s) &Complete
Ba&scule Tâche [non|] Faite
-
+
&View
&Affichage
-
+
&Full Screen
&Plein écran
-
+
&Preview in HTML
Aperçu &HTML
-
+
&Outline HUD
&Sommaire HUD
-
+
&Cheat Sheet HUD
Aide-&mémoire HUD
-
+
&Document Statistics HUD
Statistiques du &document HUD
-
+
&Session Statistics HUD
Statistiques de la s&ession HUD
-
+
+
+ Hide Open &HUD Windows
+ Cacher la fenêtre HUD
+
+
+
Increase Font Size
Augmenter la taille de la police
-
+
Decrease Font Size
Diminuer la taille de la police
-
+
&Settings
&Préférences
-
+
Themes...
Thèmes ...
-
+
Font...
Police de caractères ...
-
+
+ Style Sheets...
+ Feuilles de style ...
+
+
+
+ Preview Options...
+ Options de prévisualisation ...
+
+
+
Preferences...
- Options avancées ...
+ Préférences ...
+
+
+
+ Preview Options
+ Options de prévisualisation
+
+
+
+ Export
+ Exporter
+
+
+
+ Copy HTML
+ Copier HTML
+
+
+
+
+ Hide Open HUD Windows
+ Cacher la fenêtre HUD
+
+
+
+ Toggle Live HTML Preview
+ Bascule Prévisualisation HTML
+
+
+
+ Show Open &HUD Windows
+ Montrer la fenêtre &HUD
-
+
+ Show Open HUD Windows
+ Montrer la fenêtre HUD
+
+
+
Application Language...
Langue de l'interface ...
-
+
Stri&kethrough
&Barré
-
+
&Help
Aid&e
-
+
&About
À &propos
-
+
About &Qt
À propos de &Qt
-
+
Quick &Reference Guide
&Guide d'utilisation
-
+
Wiki
Wiki
-
Hemingway
- Hemingway
+ Hemingway
-
+
Toggle Hemingway mode
Hemingway activé/désactivé
-
Focus
- Focus
+ Focus
-
+
Toggle distraction free mode
- Focus activé/désactivé
+ Bascule Mode Concentration
-
+
Toggle full screen mode
Plein écran activé/désactivé
@@ -920,17 +969,17 @@
MarkdownEditor
-
+
Add word to dictionary
Ajouter le mot au dictionnaire
-
+
Check spelling...
Correction orthographique ...
-
+
No spelling suggestions found
Aucune suggestion orthographique trouvée
@@ -963,228 +1012,281 @@
HUD
-
+
Matched Characters
Caractères appariés
-
+
Display
Affichage
-
+
Show current time in full screen mode
Afficher l'heure en plein écran
-
+
Hide menu bar in full screen mode
Masquer la barre de menus en plein écran
-
+
+ Rounded
+ Arrondi
+
+
+
+ Square
+ Angle-droit
+
+
+
+ Interface style
+ Style de l'interface
+
+
+
File Saving
Enregistrement du fichier
-
+
Auto save
Enregistrement automatique
-
+
Backup file on save
Copie de sauvegarde à l'enregistrement
-
+
History
Historique
-
+
Remember file history
Se souvenir de l'historique des fichiers
-
+
Tabulation
Tabulation
-
+
Insert spaces for tabs
Insérer des espaces au lieu d'une tabulation
-
+
Tabulation width
Largeur de tabulation
-
+
Styling
Esthétique
-
+
Sentence
Phrase
-
+
Current Line
Ligne active
-
+
Three Lines
Trois lignes
-
+
Paragraph
Paragraphe
-
+
+ Typewriter
+ Machine à écrire
+
+
+
Focus mode
Mode Focus
-
+
Narrow
Étroit
-
+
Medium
Moyen
-
+
Wide
Large
-
+
Full
Entier
-
+
Editor width
Largeur de l'éditeur
-
+
Plain
Normal
-
-
+
+
Italic
Italique
-
+
Fancy
Fantaisie
-
+
Blockquote style
Style des citations
-
+
Underline
Souligné
-
+
Emphasis style
Style des emphases
-
+
Use large headings
Utiliser des gros titres
-
+
Highlight line breaks
Mettre en évidence les retours à la ligne
-
+
Typing
Saisie
-
+
Cycle bullet point markers
Alterne le type des puces des listes imbriquées
-
+
Automatically match characters
Apparier automatiquement les caractères
-
+
Customize matched characters...
Personnaliser l'appariement des caractères
-
+
Live spellcheck enabled
Correction orthographique automatique activée
-
+
Language
Langue
-
+
Dictionary
Dictionnaire
-
+
Right
Droite
-
+
Left
Gauche
-
+
Window button layout
Position du bouton de fenêtre
-
+
Alternate row colors
Alterner la couleur des lignes
-
+
Enable desktop compositing effects
Activer les effets de composition du bureau
-
+
+ Auto-hide HUD windows when typing
+ Cacher automatiquement la fenêtre HUD pendant l'écriture
+
+
+
+ Auto-hide HUD windows when previewing HTML
+ Cacher automatiquement la fenêtre HUD pendant la prévisualisation HTML
+
+
+
Opacity
Opacité
+ PreviewOptionsDialog
+
+
+ Preview Options
+ Options de prévisualisation
+
+
+
+ Markdown Flavor
+ Type de Markdown
+
+
+
+ Style Sheet
+ Feuille de style
+
+
+
+ Github (Default)
+ Github (par défaut)
+
+
+
QObject
@@ -1218,7 +1320,7 @@
Tous
-
+
Null or empty file path provided for writing.
Chemin d'écriture nul ou vide.
@@ -1233,79 +1335,79 @@
Le format %1 n'est pas supporté par le convertisseur Sundown.
-
+
The specified theme does not exist in the file system:
Le thème spécifié n'existe pas dans le système de fichiers :
-
+
The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
Le thème spécifié n'est pas disponible. Essayez de redémarrer le logiciel. Si le problème persiste, faites un rapport de bug.
-
+
Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
Impossible de supprimer %1 du thème. Essayer de rendre le fichier du thème accessible en écriture.
-
+
'%1' already exists. Please choose another name.
'%1' existe déjà. Choisissez un autre nom.
-
+
'%1' theme already exists. Please choose another name.
Le thème '%1' existe déjà. Choisissez un autre nom.
-
+
Failed to rename theme. Please check file permissions.
Impossible de renommer le thème. Vérifier les permissions du fichier.
-
+
Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
Ce thème est en lecture seule. Essayez de renommer le thème, ou de rendre le fichier du thème accessible en écriture.
-
+
Failed to remove old theme image. Please check file permissions.
Impossible de supprimer l'ancienne image du thème. Vérifiez les permissions du fichier.
-
+
The old theme image file could not be removed from the theme directory. Please check file permissions.
Impossible de supprimer l'ancien fichier image du thème du répertoire du thème. Vérifiez les permissions du fichier.
-
+
Theme image file could not be copied to the theme directory. Please check file permissions.
Impossible de copier le fichier image du thème dans le répertoire du thème. Vérifiez les permissions du fichier.
-
+
Theme could not be saved to disk. Please check file permissions or try renaming the theme.
Impossible d'enregistrer le thème sur le disque. Vérifiez les permissions du fichier ou essayez de renommer le thème.
-
+
Untitled 1
Sans titre 1
-
+
Untitled %1
Sans titre %1
-
-
-
+
+
+
Invalid or missing value for %1 provided.
La valeur fournie pour %1 est invalide ou manquante.
-
+
Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
La valeur de %1 n'est pas dans l'intervalle autorisé. Choisir une valeur entre %2 et %3, bornes incluses.
@@ -1485,134 +1587,141 @@
Modifier le thème
-
Rounded
- Arrondi
+ Arrondi
-
Square
- Angle-droit
+ Angle-droit
-
-
+
+
Stretch
Étirer
-
-
+
+
Center
Centrer
-
+
None
Aucune
-
+
Tile
Carreler
-
+
Scale
Mettre à l'échelle
-
+
Zoom
Zoomer
-
+
Theme Name
Nom du thème
-
+
Text Color
Couleur du texte
-
+
Markup Color
Couleur des balises
-
+
Link Color
Couleur des liens
-
+
+ Emphasis Color
+ Couleur de l'emphase
+
+
+
+ Block Text Color
+ Couleur du bloc de texte
+
+
+
Spelling Error Color
Couleur des erreurs orthographiques
-
+
Text Area Background Color
Couleur d'arrière-plan de la zone de texte
-
+
Text Editor
Éditeur de texte
-
+
Background Image
Image d'arrière-plan
-
+
Background Color
Couleur d'arrière-plan
-
+
Editor Aspect
Aspect de l'éditeur
-
Editor Corners
- Angles de l'éditeur
+ Angles de l'éditeur
-
+
Editor Opacity
Opacité de l'éditeur
-
+
Background
Arrière-plan
-
+
HUD Foreground Color
Couleur d'avant-plan HUD
-
+
HUD Background Color
Couleur d'arrière-plan HUD
-
+
HUD
HUD
-
+
Unable to save theme.
Impossible d'enregistrer le thème.
-
+
Failed to rename theme.
Impossible de renommer le thème.
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_it.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_it.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_it.ts ghostwriter-1.6.0/translations/ghostwriter_it.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_it.ts 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_it.ts 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
-
+
AbstractStatisticsWidget
@@ -33,120 +33,120 @@
DictionaryDialog
Set Dictionary
- Titolo della finestra per la scelta del dizionario per la correzzione ortografica [ Settings -> Dictionaries… ]
- Imposta il Dizionario
+ Titolo della finestra per la scelta del dizionario per la correzzione ortografica [ Settings -> Dictionaries... ]
+ Imposta il dizionario
DocumentManager
-
+
Open File
Titolo finestra dialogo per la scelta del file da aprire [ File -> Open ]
- Apri File
+ Apri file
-
+
Could not open %1
messaggio di errore quando non riesce ad aprire un file
Impossibile aprire %1
-
+
Permission denied.
messaggio di errore quando non riesce ad aprire un file
Permesso negato.
-
+
The document has been modified.
Il documento è stato modificato.
-
+
Discard changes?
Cestinare le modifiche?
-
+
Rename File
Titolo finestra dialogo file per la scelta del nuovo nome da dare [ File -> Rename ]
- Rinomina il File
+ Rinomina il file
-
+
Failed to rename %1
Impossibile rinominare %1
-
+
Save File
- Finestra dialogo file di "Salva con Nome…" [ File -> Save As... ]
- Salva il File
+ Finestra dialogo file di "Salva con Nome..." [ File -> Save As... ]
+ Salva il file
-
+
Error saving %1
NOTA: controllare che il testo non ecceda le dimensioni della finestra!
Errore durante il salvataggio di %1
-
+
The document has been modified by another program.
Il documento è stato modificato da un altro programma.
-
+
Would you like to reload the document?
Testo legato al precedente messaggio ("Il documento è stato modificato da un altro programma.")
Desideri ricaricare il documento?
-
-
+
+
Could not read %1
Impossibile leggere %1
-
+
opening %1
NOTA: verificare il contesto in cui si inserisce questo scampolo di testo -- alternative: "apertura di %1 in corso", "lettura di %1 in corso", "sto leggendo %1"
sto aprendo %1
-
+
File has been modified.
Messaggio mostrato nel caso di un Nuovo documento che è cambiato.
Il file è stato modificato.
-
+
%1 has been modified.
Messaggio mostrato nel caso di un documento non-Nuovo (già salvato con nome) che è cambiato.
%1 è stato modificato.
-
+
Would you like to save your changes?
Vuoi salvare le modifiche?
-
+
%1 is read only.
%1 è un file di sola lettura.
-
+
Overwrite protected file?
Sovrascrivere il file protetto?
-
+
Overwrite failed.
Sovrascrittura non riuscita.
-
+
Please save file to another location.
Salva il file in un percorso alternativo!
@@ -176,7 +176,7 @@
Very Difficult
- Molto Difficile
+ Molto difficile
@@ -206,34 +206,34 @@
Complex Words:
- Parole Complesse:
+ Parole complesse:
Reading Time:
- Tempo di Lettura:
+ Tempo di lettura:
Reading Ease:
- Facilità di Lettura:
+ Facilità di lettura:
LIX Reading Ease
vedi: https://en.wikipedia.org/wiki/LIX
- Indice LIX della Facilità di Lettura
+ Indice LIX della facilità di lettura
Grade Level:
- Livello Scolastico:
+ Livello scolastico:
Coleman-Liau Readability Index (CLI)
vedi: https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index
- Indice della Leggibilità Coleman–Liau (CLI)
+ Indice di leggibilità Coleman–Liau (CLI)
@@ -243,7 +243,7 @@
Rocket Science
- Alta Ingegneria
+ Alta ingegneria
@@ -264,13 +264,13 @@
Smart Typography
Voce di spunta "Smart Typography" nella finestra dialogo file per l'esportazione [ File-> Export ]
NOTA: Meglio non tradurre dato che è il nome proprio di un filtro, ed è il nome con cui verrà cercato nelle varie documentazioni (perlopiù in inglese).
- Smart Typography
+ Smart typography
Export Options
Titolo del sottogruppo di opzioni che appare nella finestra dialogo file per l'esportazione [ File-> Export ]
- Opzioni di Esportazione
+ Opzioni di esportazione
@@ -315,7 +315,7 @@
Regular expressions
- Espressioni Regolari
+ Espressioni regolari
@@ -384,52 +384,46 @@
HtmlPreview
-
+
HTML Preview
Titolo della finestra "HTML Preview" [ View->Preview in HTML ]
Antemprima HTML
-
Copy HTML
Etichetta puslante "Copy HTML", nella finestra "HTML Preview" [ View->Preview in HTML ]
NOTA: Il testo deve essere breve dato che spesso l'utente lavorerà con la finestra di Anteprima HTML affiancata all'editor (e magari anche agli HUD)
- Copia HTML
+ Copia HTML
-
Export
Etichetta puslante "Export", nella finestra "HTML Preview" [ View->Preview in HTML ]
- Esporta
+ Esporta
-
Print
Etichetta puslante "Print", nella finestra "HTML Preview" [ View->Preview in HTML ]
- Stampa
+ Stampa
-
No markdown (pandoc, multimarkdown, discount) processors are installed. Please install or add their installation locations to your system PATH environment variable.
NOTA: La traduzione è molto lunga, bisogna verificare che non ecceda lo spazio di visualizzazion!
- Su questo PC non risulta presente alcuno strumento per l'elaborazione del markdown (pandoc, , multimarkdown, discount). Sei pregato di installarne almeno uno, o di aggiungere alla variabile PATH del sistema il percorso di eventuali strumenti presenti nel sistema.
+ Su questo PC non risulta presente alcuno strumento per l'elaborazione del Markdown (pandoc, multimarkdown, discount). Sei pregato di installarne almeno uno, o di aggiungere alla variabile PATH del sistema il percorso di eventuali strumenti presenti nel sistema.
-
Github (Default)
Voce predefinita nel menu a cascata per la scelta dei fogli di stile per l'anteprima, nella finestra "HTML Preview" [ View->Preview in HTML ]
- GitHub (Predefinito)
+ GitHub (predefinito)
-
Add/Remove Style Sheets...
- Aggiungi/Elmina Fogli di Stile...
+ Aggiungi/elmina fogli di stile...
Add/Remove Custom Style Sheets...
Voce opzioni nel menu a cascata per la scelta dei fogli di stile per l'anteprima, nella finestra "HTML Preview" [ View->Preview in HTML ]
NOTA: Testo breve altrimenti, in caso di ridimensionamento della finistra Anteprima HTML, potrebbe risultare illleggibile (troncato).
- Aggiungi/Rimuovi foglio di stile CSS…
+ Aggiungi/rimuovi foglio di stile CSS...
@@ -438,7 +432,7 @@
Open Image
Menù contestuale per il click con pulsante DX mouse sopra un immagine in HTML Preview???
- Apri Immagine
+ Apri immagine
@@ -452,7 +446,7 @@
Set Application Language
- Imposta la Lingua dell'Applicazione
+ Imposta la lingua dell'applicazione
@@ -468,236 +462,235 @@
MainWindow
-
+
Outline
Titolo della finestrella HUD di Outline
Sommario
-
+
# Heading 1
Voce dello HUD Cheat Sheet
# Titolo 1
-
+
## Heading 2
Voce dello HUD Cheat Sheet
## Titolo 2
-
+
### Heading 3
Voce dello HUD Cheat Sheet
### Titolo 3
-
+
#### Heading 4
Voce dello HUD Cheat Sheet
#### Titolo 4
-
+
##### Heading 5
Voce dello HUD Cheat Sheet
##### Titolo 5
-
+
###### Heading 6
Voce dello HUD Cheat Sheet
###### Titolo 6
-
+
*Emphasis* _Emphasis_
Voce dello HUD Cheat Sheet
*Enfasi* _Enfasi_
-
+
**Strong** __Strong__
Voce dello HUD Cheat Sheet
- **Enfasi Forte** __Enfasi Forte__
+ **Enfasi forte** __Enfasi forte__
-
+
1. Numbered List
Voce dello HUD Cheat Sheet
- 1. Elenco Numerato
+ 1. Elenco numerato
-
+
* Bullet List
Voce dello HUD Cheat Sheet
- * Elenco Puntato
+ * Elenco puntato
-
+
+ Bullet List
Voce dello HUD Cheat Sheet
- + Elenco Puntato
+ + Elenco puntato
-
+
- Bullet List
Voce dello HUD Cheat Sheet
- - Elenco Puntato
+ - Elenco puntato
-
+
> Block Quote
Voce dello HUD Cheat Sheet
> Citazione
-
+
`Code Span`
Voce dello HUD Cheat Sheet
`Codice inline`
-
+
``` Code Block
Voce dello HUD Cheat Sheet
- ```Blocco di Codice
+ ```Blocco di codice
-
+
[Reference Link][ID]
Voce dello HUD Cheat Sheet
- [Link di Riferimento][ID]
+ [Link di riferimento][ID]
-
+
![Image][./image.jpg "Title"]
Voce dello HUD Cheat Sheet
![Immagine][./immagine.jpg "Titolo"]
-
+
--- *** ___ Horizontal Rule
Voce dello HUD Cheat Sheet
--- *** ___ linea orizzontale
-
+
Cheat Sheet
Sintassi Markdown
-
+
Document Statistics
- Statistiche Documento
+ Statistiche documento
-
+
Could not create file %1. Check permissions.
Impossibile creare il file %1. Verifica i permessi.
-
+
Insert Image
- Inserisci Immagine
+ Inserisci immagine
-
+
Images
Immagini
-
+
All Files
- Tutti i File
+ Tutti i file
-
+
Stri&kethrough
&Barrato
Tabulation Width
- Tiitolo finestra dialogo per [ Settings->Tabulation Width… ]
- Larghezza Tabulazioni
+ Tiitolo finestra dialogo per [ Settings->Tabulation Width... ]
+ Larghezza tabulazioni
Spaces
- Etichetta opzione in finestra dialogo per [ Settings->Tabulation Width… ]
- Numero di spazi
+ Etichetta opzione in finestra dialogo per [ Settings->Tabulation Width... ]
+ Numero di spazi
-
+
Failed to open Quick Reference Guide.
- Non sono riuscito ad aprire la Guida in Linea!
+ Non sono riuscito ad aprire la Guida rapida!
-
+
Quick Reference Guide
- Guida in Linea
+ Guida rapida
-
<p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
- <p>Copyright © 2014-2016 wereturtle</b><p>Puoi utilizzare e redistribuire questo software secondo i termini della <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visita il sito ufficiale al link <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>La mia gratitudine, ed il dovuto credito per il riutilizzo del loro codice, vanno a </p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, autore di <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, autore di <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, autore di <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Sono inoltre debitore verso <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, l'autore di <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, per l'ispirazione che mi ha fornito creando uno strumento di editing per Markdown così stupendo.</p>
+ <p>Copyright © 2014-2016 wereturtle</b><p>Puoi utilizzare e redistribuire questo software secondo i termini della <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visita il sito ufficiale al link <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>La mia gratitudine, ed il dovuto credito per il riutilizzo del loro codice, vanno a </p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, autore di <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, autore di <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, autore di <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Sono inoltre debitore verso <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, l'autore di <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, per l'ispirazione che mi ha fornito creando uno strumento di editing per Markdown così stupendo.</p>
-
+
About %1
Informazioni su %1
-
+
Please restart the application for changes to take effect.
L'applicazione delle modifiche richiede il riavvio del programma.
Hud Window Opacity
- Opacità Finestre HUD
+ Opacità finestre HUD
Matched Characters
- Caratteri Accoppiabili
+ Caratteri accoppiabili
-
+
&File
&File
-
+
&New
&Nuovo
-
+
&Open
&Apri
-
+
Reopen Closed File
Voce di Sottomenù [ File->Reopen Recent ]
- Riapri Ultimo File Chiuso
+ Riapri ultimo file chiuso
-
+
Clear Menu
Voce di Sottomenù [ File->Reopen Recent ]
- Cancella Elenco
+ Cancella elenco
-
+
&Save
&Salva
-
+
Save &As...
- Salva &Con Nome…
+ Salva &con nome...
-
+
%Ln word(s)
%Ln parola
@@ -705,321 +698,382 @@
-
+
[Link](http://url.com "Title")
[Link](http://url.com "Titolo")
-
+
[ID]: http://url.com "Reference Definition"
- [ID]: http://url.com "Reference Definition"
+ [ID]: http://url.com "Definizione riferimento"
-
+
Session Statistics
- Statistiche Sessione
+ Statistiche sessione
+
+
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Copyright © 2014-2016 wereturtle</b><p>Puoi utilizzare e redistribuire questo software secondo i termini della <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visita il sito ufficiale al link <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>La mia gratitudine, ed il dovuto credito per il riutilizzo del loro codice, vanno a </p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, autore di <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, autore di <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, autore di <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Sono inoltre debitore verso <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, l'autore di <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, per l'ispirazione che mi ha fornito creando uno strumento di editing per Markdown così stupendo.</p> {2014-2018 ?} {3<?}
-
+
Open &Recent...
- File &Recenti…
+ File &recenti...
-
+
R&ename...
R&inomina
-
+
Re&load from Disk...
- Ricarica da &Disco…
+ Ricarica da &disco...
-
+
Print Pre&view
- &Antemprima di Stampa
+ &Antemprima di stampa
-
+
&Print
S&tampa
-
+
&Export
&Esporta
-
+
&Quit
&Esci
-
+
&Edit
&Modifica
-
+
&Undo
&Annulla
-
+
&Redo
&Ripeti
-
+
Cu&t
&Taglia
-
+
&Copy
&Copia
-
+
&Paste
&Incolla
-
+
+ Copy &HTML
+ Copia &HTML
+
+
+
&Insert Image...
- &Inserisci Immagine…
+ &Inserisci immagine...
-
+
&Find
&Trova
-
+
Rep&lace
&Sostituisci
-
+
&Spell check
- Controllo &Ortografico
+ Controllo &ortografico
-
+
For&mat
&Formattazione
-
+
&Bold
&Grassetto
-
+
&Italic
&Corsivo
-
+
&HTML Comment
Commento &HTML
-
+
I&ndent
&Rientrato
-
+
&Unindent
- &Rimuovi Rientratura
+ &Rimuovi rientratura
-
+
Block &Quote
- &Blocco Citazione
+ &Blocco citazione
-
+
&Strip Block Quote
- Rimuovi &Blocco Citazione
+ Rimuovi &blocco citazione
-
+
&* Bullet List
- &* Elenco Puntato
+ &* Elenco puntato
-
+
&- Bullet List
- &- Elenco Puntato
+ &- Elenco puntato
-
+
&+ Bullet List
- &+ Elenco Puntato
+ &+ Elenco puntato
-
+
1&. Numbered List
- 1&. Elenco Numerato
+ 1&. Elenco numerato
-
+
1&) Numbered List
- 1&) Elenco Numerato
+ 1&) Elenco numerato
-
+
&Task List
- Elenco a &Caselle di Controllo
+ Elenco a &caselle di controllo
-
+
Toggle Task(s) &Complete
- &Spunta/Despunta Casella di Controllo
+ &Spunta/despunta casella di controllo
-
+
&View
&Visualizza
-
+
&Full Screen
- A &Schermo Intero
+ A &schermo intero
-
+
&Preview in HTML
&Anteprima HTML
-
+
&Outline HUD
- &HUD Sommario
+ &HUD sommario
-
+
&Cheat Sheet HUD
- &HUD Sintassi Markdown
+ Fixed: moved '$' before 'Markdown'
+ HUD sintassi &Markdown
-
+
&Document Statistics HUD
- Hud Statistiche &Documento
+ Hud statistiche &documento
-
+
&Session Statistics HUD
- HUD Statistiche &Sessione
+ HUD statistiche &sessione
+
+
+
+
+ Hide Open &HUD Windows
+ &Nascondi gli Hud aperti
-
+
Increase Font Size
- Aumenta la dimensione del carattere
+ Aumenta la dimensione del carattere
-
+
Decrease Font Size
- Diminuisci dimensione carattere
+ Diminuisci la dimensione del carattere
-
+
&Settings
&Impostazioni
-
+
Themes...
- Temi…
+ Temi...
-
+
Font...
- Carattere…
+ Carattere...
+
+
+
+ Style Sheets...
+ Fogli di stile...
+
+
+
+ Preview Options...
+ Opzioni di antemprima...
-
+
Preferences...
- Preferenze
+ Preferenze...
+
+
+
+ Preview Options
+ Opzioni di antemprima
+
+
+
+ Export
+ Esporta
+
+
+
+ Copy HTML
+ Copia HTML
+
+
+
+
+ Hide Open HUD Windows
+ Nascondi gli Hud aperti
+
+
+
+ Toggle Live HTML Preview
+ Attiva/disattiva antemprima HTML
+
+
+
+ Show Open &HUD Windows
+ Mostra gli Hud &aperti
+
+
+
+ Show Open HUD Windows
+ Mostra gli Hud aperti
-
+
Application Language...
- Lingua dell'Applicazione...
+ Lingua dell'applicazione...
-
+
&Help
YES: a "?"symbol!!! In Italian Menus we usually employ Question Mark instead of "Help"...
&?
-
+
&About
&Informazioni su ghostwriter
-
+
About &Qt
Informazioni su &Qt
-
+
Quick &Reference Guide
- &Guida in Linea
+ &Guida rapida
-
+
Wiki
Wiki
-
Hemingway
- Hemingway
+ Hemingway
-
+
Toggle Hemingway mode
- Attiva/Disattiva modalità Hemingway
+ Attiva/disattiva modalità Hemingway
-
Focus
Etichetta Pulsante nel bordo inferiore dell'editor.
- Modalità Focus
+ Modalità focus
-
+
Toggle distraction free mode
Descrizione a Pop-Up, quando ci si sofferma col mouse sul pulsante "Focus"
- Entra/Esci dalla modalità priva di distrazioni
+ Entra/esci dalla modalità priva di distrazioni
-
+
Toggle full screen mode
Descrizione a Pop-Up, quando ci si sofferma col mouse sul pulsante per la modalità a schermo intero (doppie freccie diagonali)
- Entra/Esci dalla modalità a schermo intero
+ Entra/esci dalla modalità a schermo intero
MarkdownEditor
-
+
Add word to dictionary
Menù contestual click pulsante mouse destro, all'interno dell'editor (nel caso di vocabolo evidenzaito da spell-check)
Aggiungi vocabolo al dizionario
-
+
Check spelling...
nù contestual click pulsante mouse destro, all'interno dell'editor (nel caso di vocabolo evidenzaito da spell-check)
- Controlla ortografia…
+ Controlla ortografia...
-
+
No spelling suggestions found
Nessun suggerimento ortografico trovato
@@ -1044,7 +1098,7 @@
Spell Check
- Controllo Ortografico
+ Controllo ortografico
@@ -1052,225 +1106,278 @@
HUD
-
+
Matched Characters
- Caratteri Accoppiabili
+ Caratteri accoppiabili
-
+
Display
Display
-
+
Show current time in full screen mode
- Mostra l'Ora in Modalità Schermo Intero
+ Mostra l'ora in modalità schermo intero
-
+
Hide menu bar in full screen mode
- Nascondi la Barra Menù in Modalità Schermo Intero
+ Nascondi la barra menù in modalità schermo intero
-
+
+ Rounded
+ Arrotondati
+
+
+
+ Square
+ Squadrati
+
+
+
+ Interface style
+ Stile interfaccia
+
+
+
File Saving
- Salvataggio dei File
+ Salvataggio dei file
-
+
Auto save
- Salvataggio Automatico
+ Salvataggio automatico
-
+
Backup file on save
- Esegui un Backup del File Quando Salvo
+ Esegui un backup del file quando salvo
-
+
History
Cronologia
-
+
Remember file history
- Conserva la Cronologia dei File
+ Conserva la cronologia dei file
-
+
Tabulation
Tabulazione
-
+
Insert spaces for tabs
- Inserisci Spazi al Posto delle Tabulazioni
+ Inserisci spazi al posto delle tabulazioni
-
+
Tabulation width
- Larghezza Tabulazione
+ Larghezza tabulazione
-
+
Styling
Stile
-
+
Sentence
Frase per frase
-
+
Current Line
Riga per riga
-
+
Three Lines
Tre righe alla volta
-
+
Paragraph
Per paragrafo
-
+
+ Typewriter
+ Macchina da scrivere
+
+
+
Focus mode
- Modalità Focus
+ Modalità focus
-
+
Narrow
Stretta
-
+
Medium
Media
-
+
Wide
Ampia
-
+
Full
Intera
-
+
Editor width
- Larghezza Editor
+ Larghezza editor
-
+
Plain
Normale
-
-
+
+
Italic
Corsivo
-
+
Fancy
Decorato
-
+
Blockquote style
- Stile Blocchi Citazione
+ Stile blocchi citazione
-
+
Underline
Sottolineato
-
+
Emphasis style
- Stile per l'Enfasi
+ Stile per l'enfasi
-
+
Use large headings
- Titoli Grandi
+ Titoli grandi
-
+
Highlight line breaks
- Evidenzia Interruzioni di Riga
+ Evidenzia interruzioni di riga
-
+
Typing
Digitazione
-
+
Cycle bullet point markers
- Alterna i Marcatori negli Elenchi Puntati
+ Alterna i marcatori negli elenchi puntati
-
+
Automatically match characters
- Rilevamento Automatico dei Caratteri Accoppiabili
+ Rilevamento automatico dei caratteri accoppiabili
-
+
Customize matched characters...
- Personalizza Caratteri Accoppiabili...
+ Personalizza caratteri accoppiabili...
-
+
Live spellcheck enabled
- Controllo Ortografico in Tempo Reale
+ Controllo ortografico in tempo reale
-
+
Language
Lingua
-
+
Dictionary
Dizionario
-
+
Right
Destra
-
+
Left
Sinistra
-
+
Window button layout
- Layout Pulsante nello HUD
+ Layout pulsante nello HUD
-
+
Alternate row colors
- Alterna i Colori delle Righe Negli HUD
+ Alterna i colori delle righe negli HUD
-
+
Enable desktop compositing effects
- Abilita Effetti Compositi del Desktop
+ Abilita effetti compositi del desktop
+
+
+
+ Auto-hide HUD windows when typing
+ Nascondi automaticamente gli Hud durante la scrittura
+
+
+
+ Auto-hide HUD windows when previewing HTML
+ Nascondi automaticamente gli Hud durante le anteprime HTML
-
+
Opacity
- Opacità delle Finestre HUD
+ Opacità delle finestre HUD
+
+
+
+ PreviewOptionsDialog
+
+
+ Preview Options
+ Opzioni antemprima
+
+
+
+ Markdown Flavor
+ Variante Markdown
+
+
+
+ Style Sheet
+ Foglio di stile
+
+
+
+ Github (Default)
+ GitHub (predefinito)
@@ -1312,7 +1419,7 @@
Tutti
-
+
Null or empty file path provided for writing.
È stato fornito un percorso file di scrittura nullo o vuoto.
@@ -1327,79 +1434,79 @@
Il formato %1 non è supportato dal processore Sundown.
-
+
The specified theme does not exist in the file system:
Il tema indicato non è presente tra i file del sistema:
-
+
The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
Il tema indicato non è disponibile. Prova a riavvare l'applicazione. Se il problema persiste, segnalaci questo baco.
-
+
Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
Impossibile cancellare %1 dal tema. Prova a modificare i permessi di scrittura del file del tema.
-
+
'%1' already exists. Please choose another name.
'%1' esiste già. Scegli un altro nome.
-
+
'%1' theme already exists. Please choose another name.
Il tema '%1' esiste già. Scegli un altro nome.
-
+
Failed to rename theme. Please check file permissions.
Non è stato possibile rinominare il tema. Verifica i permessi del file.
-
+
Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
Il tema è in sola lettura. Prova a rinominare il tema, o a settare i permessi di scrittura del file del tema.
-
+
Failed to remove old theme image. Please check file permissions.
Non è stato possibile eliminare la vecchia immagine del tema. Controlla i permessi del file.
-
+
The old theme image file could not be removed from the theme directory. Please check file permissions.
Non è stato possibile cancellare il file dell'immagine vecchia del tema dalla directory dei temi. Verifica i permessi del file.
-
+
Theme image file could not be copied to the theme directory. Please check file permissions.
Non è stato possibile copiare il file dell'immagine del tema nella directory dei temi. Verifica i permessi dei file.
-
+
Theme could not be saved to disk. Please check file permissions or try renaming the theme.
Non è stato possibile salvare il tema su disco. Verifica i permessi dei file, o prova a rinominare il tema.
-
+
Untitled 1
Senza titolo 1
-
+
Untitled %1
Senza titolo %1
-
-
-
+
+
+
Invalid or missing value for %1 provided.
È stato passato a %1 un valore non valido (o mancante).
-
+
Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
Il valore di %1 è fuori dal range. I valori accettati vanno da %2 a %3 (inclusi).
@@ -1409,12 +1516,12 @@
Words Written:
- Parole Scritte:
+ Parole scritte:
Pages Written:
- Pagine Scritte:
+ Pagine scritte:
@@ -1425,12 +1532,12 @@
Total Time:
- Tempo Totale:
+ Tempo totale:
Idle Time:
- Tempi Morti:
+ Tempi morti:
@@ -1462,7 +1569,7 @@
Check Spelling
Titolo finestra del Controllo Ortografico. [ Edit ->Spell check ]
- Controllo Ortografico
+ Controllo ortografico
@@ -1492,7 +1599,7 @@
C&hange All
Etichetta pulsante della finestra del Controllo Ortografico. [ Edit ->Spell check ]
- Cambia &Tutto
+ Cambia &tutto
@@ -1510,7 +1617,7 @@
Checking spelling...
NOTA: Non sono certo del contesto in cui appare questo testo, ma parrebbe essere visualizzato in caso di attesa prolungata.
- Controllo ortografico in corso…
+ Controllo ortografico in corso...
@@ -1522,7 +1629,7 @@
Please wait
Titolo di una finestrad'attesa riguardante l'elaborazione del controllo ortografico.
- Attendere, prego…
+ Attendere, prego...
@@ -1541,7 +1648,7 @@
Custom Style Sheets
Titolo finestra.
- Fogli di Stile CSS
+ Fogli di stile CSS
@@ -1592,167 +1699,174 @@
Edit Theme
- Titolo della finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit ]
- Modifica Tema
+ Titolo della finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit ]
+ Modifica tema
-
Rounded
- Voce del menu di scelta a scascata per l'opzione "Editor Corners" nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
- Arrotondati
+ Voce del menu di scelta a scascata per l'opzione "Editor Corners" nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
+ Arrotondati
-
Square
- Voce del menu di scelta a scascata per l'opzione "Editor Corners" nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
- Squadrati
+ Voce del menu di scelta a scascata per l'opzione "Editor Corners" nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
+ Squadrati
-
-
+
+
Stretch
- Voce del menu di scelta a scascata per l'opzione "Editor Aspect" (Riquadro Editor) nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
+ Voce del menu di scelta a scascata per l'opzione "Editor Aspect" (Riquadro Editor) nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
NOTA: "Stretch" vuol dire che l'area di editing occupa tutto lo schermo, coprendo lo sfondo.
Esteso
-
-
+
+
Center
- Voce del menu di scelta a scascata per l'opzione "Editor Aspect" (Riquadro Editor) nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
+ Voce del menu di scelta a scascata per l'opzione "Editor Aspect" (Riquadro Editor) nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
NOTA: "Center" vuol dire che l'area di editing verrà mostrata come un foglio centrato sullo sfondo.
Centrato
-
+
None
- Voce del menu di scelta a scascata per l'opzione "Background Image" nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
+ Voce del menu di scelta a scascata per l'opzione "Background Image" nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
Nessuna
-
+
Tile
- Voce del menu di scelta a scascata per l'opzione "Background Image" nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit ]
+ Voce del menu di scelta a scascata per l'opzione "Background Image" nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit ]
Affianca
-
+
Scale
- Voce del menu di scelta a scascata per l'opzione "Background Image" nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit ]
+ Voce del menu di scelta a scascata per l'opzione "Background Image" nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit ]
Adatta
-
+
Zoom
- Voce del menu di scelta a scascata per l'opzione "Background Image" nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit ]
+ Voce del menu di scelta a scascata per l'opzione "Background Image" nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit ]
Estendi
-
+
Theme Name
- Etichetta del campo input nome del Tema nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit ]
- Nome del Tema
+ Etichetta del campo input nome del Tema nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit ]
+ Nome del tema
-
+
Text Color
- Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Text Editor ]
- Colore Testo
+ Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Text Editor ]
+ Colore testo
-
+
Markup Color
- Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Text Editor ]
- Colore Markup
+ Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Text Editor ]
+ Colore markup
-
+
Link Color
- Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Text Editor ]
- Colore Link
+ Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Text Editor ]
+ Colore link
-
+
+ Emphasis Color
+ Colore enfasi
+
+
+
+ Block Text Color
+ Colore blocco di testo
+
+
+
Spelling Error Color
- Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Text Editor ]
- Colore Errori Ortografici
+ Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Text Editor ]
+ Colore errori ortografici
-
+
Text Area Background Color
- Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Text Editor ]
+ Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Text Editor ]
NOTA: Ho tradotto "Text Area" con "Editor" per evitare confusione con le opzioni successive (Riquadro Editor/Angoli Editor). Avrei preferito usare sempre "Area di Testo" dato che è più specifico, ma lo spazio nella finestra era poco.
NOTA2: Alternativamente, si potrebbe tradurre sia "Text Area" che "Editor" con "Foglio/Pagina". L'utente pensa all'Editor come al programma in generale, mentre Foglio cattura meglio l'idea dell'area in cui si scrive.
- Colore Sfondo Editor
+ Colore sfondo editor
-
+
Text Editor
- Etichetta linguetta (tab) nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Text Editor ]
- Editor del Testo
+ Etichetta linguetta (tab) nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Text Editor ]
+ Editor del testo
-
+
Background Image
- Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
- Immagine Sfondo
+ Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
+ Immagine sfondo
-
+
Background Color
- Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
- Colore Sfondo
+ Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
+ Colore sfondo
-
+
Editor Aspect
- Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
+ Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
NOTA: Questa opzione concerne l'aspetto dell'area di editing (se centrata nello schermo, oppure se deve riempire tutto lo schermo)
- Riquadro Editor
+ Riquadro editor
-
Editor Corners
- Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
- Angoli Editor
+ Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
+ Angoli editor
-
+
Editor Opacity
- Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->Background ]
- Opacità Editor
+ Etichetta opzioni nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->Background ]
+ Opacità editor
-
+
Background
- Etichetta linguetta (tab) nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit ]
+ Etichetta linguetta (tab) nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit ]
Sfondo
-
+
HUD Foreground Color
- Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->HUD ]
- Colore Primo Piano HUD
+ Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->HUD ]
+ Colore primo piano HUD
-
+
HUD Background Color
- Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->HUD ]
- Colore Sfondo HUD
+ Etichetta opzione nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->HUD ]
+ Colore sfondo HUD
-
+
HUD
- Etichetta linguetta (tab) nella finestra di dialogo per la modifica dei temi [ Settings->Themes…->Edit->HUD ]
+ Etichetta linguetta (tab) nella finestra di dialogo per la modifica dei temi [ Settings->Themes...->Edit->HUD ]
HUD
-
+
Unable to save theme.
Impossibile salvare il tema.
-
+
Failed to rename theme.
Non è stato possibile rinominare il tema.
@@ -1762,14 +1876,14 @@
Themes
- Titolo della finestra per la scelta dei Temi [ Settings->Themes… ]
- Temi Grafici
+ Titolo della finestra per la scelta dei Temi [ Settings->Themes... ]
+ Temi grafici
Edit...
- Etichetta pulsante nella finestra di dialogo per la scelta dei Temi [ Settings->Themes… ]
- Modifica
+ Etichetta pulsante nella finestra di dialogo per la scelta dei Temi [ Settings->Themes... ]
+ Modifica...
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_ja.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_ja.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_ja.ts ghostwriter-1.6.0/translations/ghostwriter_ja.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_ja.ts 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_ja.ts 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
-
+
AbstractStatisticsWidget
@@ -33,109 +33,109 @@
DictionaryDialog
Set Dictionary
- 辞書の設定
+ 辞書の設定
DocumentManager
-
+
Open File
ファイルを開く
-
+
Could not open %1
%1 を開けません
-
+
Permission denied.
アクセスは拒否されました。
-
+
The document has been modified.
文書が更新されています。
-
+
Discard changes?
変更を破棄しますか?
-
+
Rename File
名前の変更
-
+
Failed to rename %1
名前の変更に失敗 %1
-
+
Save File
ファイルの保存
-
+
Error saving %1
%1 の保存エラー
-
+
The document has been modified by another program.
文書は他のプログラムで更新されています。
-
+
Would you like to reload the document?
文書を再読み込みしますか?
-
-
+
+
Could not read %1
%1 を読み込めません
-
+
opening %1
%1 を開いています
-
+
File has been modified.
ファイルが更新されています。
-
+
%1 has been modified.
%1 が更新されました。
-
+
Would you like to save your changes?
変更を保存しますか?
-
+
%1 is read only.
%1 は読み取り専用です。
-
+
Overwrite protected file?
保護されたファイルを上書きしますか?
-
+
Overwrite failed.
上書きに失敗しました。
-
+
Please save file to another location.
ファイルを別の場所に保存してください。
@@ -361,43 +361,33 @@
HtmlPreview
-
+
HTML Preview
HTML プレビュー
-
Copy HTML
- HTMLをコピー
+ HTMLをコピー
-
Export
- エクスポート
+ エクスポート
-
Print
- 印刷
+ 印刷
-
No markdown (pandoc, multimarkdown, discount) processors are installed. Please install or add their installation locations to your system PATH environment variable.
- markdown プロセッサ (pandoc, multimarkdown, discount) が見つかりません。インストールするかインストールした場所をシステム環境変数PATHに追加してください。
+ markdown プロセッサ (pandoc, multimarkdown, discount) が見つかりません。インストールするかインストールした場所をシステム環境変数PATHに追加してください。
-
Github (Default)
- Github (既定)
-
-
-
- Add/Remove Style Sheets...
-
+ Github (既定)
Add/Remove Custom Style Sheets...
- 独自のCSSを追加/削除...
+ 独自のCSSを追加/削除...
@@ -434,510 +424,569 @@
MainWindow
-
+
Outline
アウトライン
-
+
# Heading 1
# 見出し 1
-
+
## Heading 2
## 見出し 2
-
+
### Heading 3
### 見出し 3
-
+
#### Heading 4
#### 見出し 4
-
+
##### Heading 5
##### 見出し 5
-
+
###### Heading 6
###### 見出し 6
-
+
*Emphasis* _Emphasis_
*強調(em)* _強調(em)_
-
+
**Strong** __Strong__
**重要(strong)** __重要(strong)__
-
+
1. Numbered List
1. 番号付きリスト
-
+
* Bullet List
* 順序なしリスト
-
+
+ Bullet List
+ 順序なしリスト
-
+
- Bullet List
- 順序なしリスト
-
+
> Block Quote
> 引用ブロック
-
+
`Code Span`
`コード`
-
+
``` Code Block
``` コード ブロック
-
+
[Link](http://url.com "Title")
[リンク](http://url.com "タイトル")
-
+
[Reference Link][ID]
[参照リンク][ID]
-
+
[ID]: http://url.com "Reference Definition"
[ID]: http://url.com "参照の定義"
-
+
![Image][./image.jpg "Title"]
![画像][./image.jpg "タイトル"]
-
+
--- *** ___ Horizontal Rule
--- *** ___ 区切り線
-
+
Cheat Sheet
チートシート
-
+
Document Statistics
文書の詳細
-
+
Session Statistics
セッションの詳細
-
+
Could not create file %1. Check permissions.
-
+
Insert Image
画像の挿入
-
+
Images
画像
-
+
All Files
すべてのファイル
-
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Copyright © 2014-2016 wereturtle</b><p>あなたは <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a> の条件下で使用ならびに再配布することができます。</p><p>公式ウェブサイト <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a></p><p>再利用したコードへの深い感謝とクレジットを贈ります</p><p><a href="http://gottcode.org/focuswriter/">FocusWriter</a> の著作者 <a href="mailto:graeme@gottcode.org">Graeme Gott</a> 氏<br/><a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a> の著作者 Dmitry Shachnev 氏<br/><a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a> の著作者 <a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a> 氏<br/><p>また、そのような美しいMarkdown編集ツールの作成に刺激を与えてくださった <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a> の著作者 <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a> 氏に大いに感謝します。</p> {2014-2018 ?} {3<?}
+
+
+
Stri&kethrough
取り消し線(&K)
Tabulation Width
- タブ幅
+ タブ幅
Spaces
- スペース数
+ スペース数
-
+
Failed to open Quick Reference Guide.
クイック リファレンス ガイドが開けません。
-
+
Quick Reference Guide
クイック リファレンス ガイド
-
<p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
- <p>Copyright © 2014-2016 wereturtle</b><p>あなたは <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a> の条件下で使用ならびに再配布することができます。</p><p>公式ウェブサイト <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a></p><p>再利用したコードへの深い感謝とクレジットを贈ります</p><p><a href="http://gottcode.org/focuswriter/">FocusWriter</a> の著作者 <a href="mailto:graeme@gottcode.org">Graeme Gott</a> 氏<br/><a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a> の著作者 Dmitry Shachnev 氏<br/><a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a> の著作者 <a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a> 氏<br/><p>また、そのような美しいMarkdown編集ツールの作成に刺激を与えてくださった <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a> の著作者 <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a> 氏に大いに感謝します。</p>
+ <p>Copyright © 2014-2016 wereturtle</b><p>あなたは <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a> の条件下で使用ならびに再配布することができます。</p><p>公式ウェブサイト <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a></p><p>再利用したコードへの深い感謝とクレジットを贈ります</p><p><a href="http://gottcode.org/focuswriter/">FocusWriter</a> の著作者 <a href="mailto:graeme@gottcode.org">Graeme Gott</a> 氏<br/><a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a> の著作者 Dmitry Shachnev 氏<br/><a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a> の著作者 <a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a> 氏<br/><p>また、そのような美しいMarkdown編集ツールの作成に刺激を与えてくださった <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a> の著作者 <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a> 氏に大いに感謝します。</p>
-
+
About %1
%1 について
-
+
%Ln word(s)
単語数 %Ln
-
+
Please restart the application for changes to take effect.
変更を反映させるためにアプリを再起動してください。
Hud Window Opacity
- Hud ウィンドウの不透明度
+ Hud ウィンドウの不透明度
Matched Characters
- 自動補完する記号
+ 自動補完する記号
-
+
&File
ファイル(&F)
-
+
&New
新規(&N)
-
+
&Open
開く(&O)
-
+
Open &Recent...
最近使用したファイル(&R)...
-
+
Reopen Closed File
閉じたファイルを開きなおす
-
+
Clear Menu
メニューをクリア
-
+
&Save
保存(&S)
-
+
Save &As...
名前を付けて保存(&A)...
-
+
R&ename...
名前の変更(&E)...
-
+
Re&load from Disk...
ディスクから再読み込み(&L)...
-
+
Print Pre&view
印刷プレビュー(&V)
-
+
&Print
印刷(&P)
-
+
&Export
エクスポート(&E)
-
+
&Quit
終了(&Q)
-
+
&Edit
編集(&E)
-
+
&Undo
元に戻す(&U)
-
+
&Redo
やり直し(&R)
-
+
Cu&t
切り取り(&C)
-
+
&Copy
コピー(&C)
-
+
&Paste
貼り付け(&P)
-
+
+ Copy &HTML
+
+
+
+
&Insert Image...
画像の挿入(&I)...
-
+
&Find
検索(&F)
-
+
Rep&lace
置換(&L)
-
+
&Spell check
スペルチェック(&S)
-
+
For&mat
書式(&M)
-
+
&Bold
重要 / 太字(&B)
-
+
&Italic
強調 / 斜体(&I)
-
+
&HTML Comment
&HTML コメント
-
+
I&ndent
インデント(&N)
-
+
&Unindent
逆インデント(&U)
-
+
Block &Quote
引用ブロック(&Q)
-
+
&Strip Block Quote
引用ブロックを解除(&S)
-
+
&* Bullet List
&* 順序なしリスト
-
+
&- Bullet List
&- 順序なしリスト
-
+
&+ Bullet List
&+ 順序なしリスト
-
+
1&. Numbered List
1&. 番号付きリスト
-
+
1&) Numbered List
1&) 番号付きリスト
-
+
&Task List
タスクリスト(&T)
-
+
Toggle Task(s) &Complete
タスクの完了を切り替え(&C)
-
+
&View
表示(&V)
-
+
&Full Screen
全画面表示(&F)
-
+
&Preview in HTML
HTMLでプレビュー(&P)
-
+
&Outline HUD
アウトライン HUD(&O)
-
+
&Cheat Sheet HUD
チートシート HUD(&C)
-
+
&Document Statistics HUD
文書の詳細 HUD(&D)
-
+
&Session Statistics HUD
セッションの詳細 HUD(&S)
-
+
+
+ Hide Open &HUD Windows
+
+
+
+
Increase Font Size
フォントサイズを大きくする
-
+
Decrease Font Size
フォントサイズを小さくする
-
+
&Settings
設定(&S)
-
+
Themes...
テーマ...
-
+
Font...
フォント...
-
+
+ Style Sheets...
+
+
+
+
+ Preview Options...
+
+
+
+
Preferences...
-
+
+ Preview Options
+
+
+
+
+ Export
+ エクスポート
+
+
+
+ Copy HTML
+ HTMLをコピー
+
+
+
+
+ Hide Open HUD Windows
+
+
+
+
+ Toggle Live HTML Preview
+
+
+
+
+ Show Open &HUD Windows
+
+
+
+
+ Show Open HUD Windows
+
+
+
+
Application Language...
言語...
-
+
&Help
ヘルプ(&H)
-
+
&About
ghostwriter について(&A)
-
+
About &Qt
Qt について(&Q)
-
+
Quick &Reference Guide
クイック リファレンス ガイド(&R)
-
+
Wiki
-
Hemingway
- ヘミングウェイ
+ ヘミングウェイ
-
+
Toggle Hemingway mode
ヘミングウェイ モードの切り替え
-
Focus
- フォーカス
+ フォーカス
-
+
Toggle distraction free mode
没入モードの切り替え
-
+
Toggle full screen mode
全画面表示モードの切り替え
@@ -945,17 +994,17 @@
MarkdownEditor
-
+
Add word to dictionary
単語を辞書に追加
-
+
Check spelling...
スペルチェック...
-
+
No spelling suggestions found
スペルの提案はありません
@@ -988,228 +1037,281 @@
HUD
-
+
Matched Characters
自動補完する記号
-
+
Display
-
+
Show current time in full screen mode
全画面表示で現在時刻を表示
-
+
Hide menu bar in full screen mode
全画面表示ではメニューバーを隠す
-
+
+ Rounded
+ 丸める
+
+
+
+ Square
+ 四角
+
+
+
+ Interface style
+
+
+
+
File Saving
-
+
Auto save
自動保存
-
+
Backup file on save
保存時にバックアップを作成
-
+
History
-
+
Remember file history
ファイルの履歴を記憶
-
+
Tabulation
-
+
Insert spaces for tabs
タブでスペースを挿入
-
+
Tabulation width
タブ幅
-
+
Styling
-
+
Sentence
文
-
+
Current Line
現在行
-
+
Three Lines
3行
-
+
Paragraph
段落
-
+
+ Typewriter
+
+
+
+
Focus mode
フォーカス モード
-
+
Narrow
狭い
-
+
Medium
中間
-
+
Wide
広い
-
+
Full
全幅
-
+
Editor width
エディターの幅
-
+
Plain
普通
-
-
+
+
Italic
斜体
-
+
Fancy
装飾(Fancy)
-
+
Blockquote style
引用スタイル
-
+
Underline
-
+
Emphasis style
-
+
Use large headings
見出しを大きく表示
-
+
Highlight line breaks
-
+
Typing
-
+
Cycle bullet point markers
順序なしリストの記号を循環させる
-
+
Automatically match characters
対応する記号の自動補完
-
+
Customize matched characters...
自動補完する記号の設定...
-
+
Live spellcheck enabled
自動スペルチェック
-
+
Language
-
+
Dictionary
辞書
-
+
Right
右
-
+
Left
左
-
+
Window button layout
HUD ウィンドウのボタン位置
-
+
Alternate row colors
HUD ウィンドウの行を交互に色分け
-
+
Enable desktop compositing effects
HUD を半透明表示
-
+
+ Auto-hide HUD windows when typing
+
+
+
+
+ Auto-hide HUD windows when previewing HTML
+
+
+
+
Opacity
HUD ウィンドウの不透明度
+ PreviewOptionsDialog
+
+
+ Preview Options
+
+
+
+
+ Markdown Flavor
+
+
+
+
+ Style Sheet
+
+
+
+
+ Github (Default)
+ Github (既定)
+
+
+
QObject
@@ -1243,7 +1345,7 @@
すべて
-
+
Null or empty file path provided for writing.
書き込み時にNullまたは空のファイル パスが与えられました。
@@ -1258,79 +1360,79 @@
Sundown プロセッサでは %1 形式には対応していません。
-
+
The specified theme does not exist in the file system:
指定のテーマはファイル システムに存在しません:
-
+
The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
指定のテーマが見つかりません。 アプリを再起動してみてください。もしそれでも問題がある場合にはバグレポートを提出してください。
-
+
Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
テーマから %1 を削除できません。 テーマ ファイルに書き込み権限を設定してください。
-
+
'%1' already exists. Please choose another name.
'%1' はすでに存在します。 別の名前を選択してください。
-
+
'%1' theme already exists. Please choose another name.
'%1' というテーマはすでに存在します。 別の名前を選択してください。
-
+
Failed to rename theme. Please check file permissions.
テーマ名の変更に失敗しました。ファイルの権限を確認してください。
-
+
Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
テーマは読み取り専用です。 テーマ名を変更するかファイルを書き込み可能に設定してください。
-
+
Failed to remove old theme image. Please check file permissions.
古いテーマ画像の削除に失敗しました。 ファイルの権限を確認してください。
-
+
The old theme image file could not be removed from the theme directory. Please check file permissions.
古いテーマ画像をテーマ ディレクトリから削除できませんでした。 ファイルの権限を確認してください。
-
+
Theme image file could not be copied to the theme directory. Please check file permissions.
テーマ画像ファイルをテーマ ディレクトリにコピーできませんでした。 ファイルの権限を確認してください。
-
+
Theme could not be saved to disk. Please check file permissions or try renaming the theme.
テーマをディスクに保存できませんでした。 ファイルの権限を確認するかテーマ名を変更してください。
-
+
Untitled 1
無題 1
-
+
Untitled %1
無題 %1
-
-
-
+
+
+
Invalid or missing value for %1 provided.
%1 に対して無効または空の値が与えられました。
-
+
Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
%1 は範囲外の値です。有効な値は %2 から %3 までの範囲です。
@@ -1511,134 +1613,141 @@
テーマの編集
-
Rounded
- 丸める
+ 丸める
-
Square
- 四角
+ 四角
-
-
+
+
Stretch
画面全体に拡大
-
-
+
+
Center
中央に表示
-
+
None
なし
-
+
Tile
並べて表示
-
+
Scale
画面のサイズに合わせる
-
+
Zoom
拡大して表示
-
+
Theme Name
テーマ名
-
+
Text Color
文字色
-
+
Markup Color
マークアップの色
-
+
Link Color
リンクの色
-
+
+ Emphasis Color
+
+
+
+
+ Block Text Color
+
+
+
+
Spelling Error Color
スペルエラーの色
-
+
Text Area Background Color
エディターの背景色
-
+
Text Editor
テキスト エディター
-
+
Background Image
背景画像
-
+
Background Color
背景色
-
+
Editor Aspect
エディターの外観
-
Editor Corners
- エディターの角
+ エディターの角
-
+
Editor Opacity
エディターの不透明度
-
+
Background
背景
-
+
HUD Foreground Color
HUDの前景色
-
+
HUD Background Color
HUDの背景色
-
+
HUD
HUD
-
+
Unable to save theme.
テーマを保存できません。
-
+
Failed to rename theme.
テーマ名の変更に失敗しました。
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_pl.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_pl.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_pl.ts ghostwriter-1.6.0/translations/ghostwriter_pl.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_pl.ts 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_pl.ts 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,1432 @@
+
+
+
+
+ AbstractStatisticsWidget
+
+ %1m
+
+
+
+ < 1
+
+
+
+ %1h %2m
+
+
+
+ 250 words per page
+ 250 słów na stronę
+
+
+ < 1m
+
+
+
+
+ DocumentManager
+
+ Could not open %1
+ Nie udało się otworzyć %1
+
+
+ The document has been modified by another program.
+ Dokument został zmodyfikowany przez inny program.
+
+
+ Overwrite failed.
+ Nadpisanie się nie powiodło.
+
+
+ Rename File
+ Zmień nazwę pliku
+
+
+ opening %1
+ otwieranie %1
+
+
+ Permission denied.
+ Brak dostępu.
+
+
+ Error saving %1
+ Błąd podczas zapisywania %1
+
+
+ %1 is read only.
+ %1 jest plikiem tylko do odczytu.
+
+
+ Overwrite protected file?
+ Nadpisać chroniony plik?
+
+
+ %1 has been modified.
+ %1 został zmodyfikowany.
+
+
+ The document has been modified.
+ Dokument został zmodyfikowany.
+
+
+ File has been modified.
+ Plik został zmodyfikowany.
+
+
+ Discard changes?
+ Odrzucić zmiany?
+
+
+ Would you like to save your changes?
+ Chciałbyś zapisać zmiany?
+
+
+ Please save file to another location.
+ Proszę zapisać plik w innym katalogu.
+
+
+ Open File
+ Otwórz plik
+
+
+ Save File
+ Zapisz plik
+
+
+ Would you like to reload the document?
+ Chcesz wczytać dokument ponownie?
+
+
+ Could not read %1
+ Nie można odczytać %1
+
+
+ Failed to rename %1
+ Nie udało się zmienić nazwy %1
+
+
+
+ DocumentStatisticsWidget
+
+ Easy
+ Łatwy
+
+
+ Very Difficult
+ Bardzo trudny
+
+
+ LIX Reading Ease
+ Czytelność LIX
+
+
+ Grade Level:
+ Poziom:
+
+
+ Reading Time:
+ Czas czytania:
+
+
+ Reading Ease:
+ Prosota czytania:
+
+
+ Complex Words:
+ Wyrazy złożone:
+
+
+ Pages:
+ Strony:
+
+
+ Coleman-Liau Readability Index (CLI)
+ Indeks czytalności Colemana-Liaua
+
+
+ Words:
+ Słowa:
+
+
+ Characters:
+ Znaki:
+
+
+ Very Easy
+ Bardzo łatwy
+
+
+ College
+ Studia
+
+
+ Standard
+ Standardowy
+
+
+ Sentences:
+ Zdania:
+
+
+ Rocket Science
+ Nauka rakietowa
+
+
+ Difficult
+ Trudny
+
+
+ Kindergarten
+ Przedszkole
+
+
+ Paragraphs:
+ Akapity:
+
+
+
+ ExportDialog
+
+ Export failed.
+ Niepowodzenie eksportu.
+
+
+ Markdown Converter:
+ Konwerter formatowania:
+
+
+ Export
+ Eksport
+
+
+ Export Options
+ Ustawienia eksportu
+
+
+ Smart Typography
+ Inteligentna pisownia
+
+
+ exporting to %1
+ exportowanie do %1
+
+
+
+ FindDialog
+
+ Find
+ Znajdź
+
+
+ &Find
+ &Znajdź
+
+
+ Sorry
+ Niestety
+
+
+ Regular expressions
+ Wyrażenia proste
+
+
+ Replace %n instance(s)?
+
+ Replace %n instance?
+ Replace %n instances?
+
+
+
+
+ Ignore case
+ Ignoruj wielkość liter
+
+
+ Search up
+ Szukaj w górę
+
+
+ &Replace
+ &Zamień
+
+
+ Replace
+ Zamień
+
+
+ Whole words only
+ Tylko pełne słowa
+
+
+ Search down
+ Szukaj w dół
+
+
+ Search for:
+ Szukaj:
+
+
+ Question
+ Pytanie
+
+
+ Replace &All
+ Zastąp &Wszystko
+
+
+ Replace with:
+ Zastąp przy pomocy:
+
+
+ Phrase not found.
+ Fraza nie odnaleziona.
+
+
+
+ HtmlPreview
+
+ Print
+ Podgląd wydruku
+
+
+ HTML Preview
+ Podgląd pliku HTML
+
+
+ Github (Default)
+ Github (Domyślny)
+
+
+ Export
+ Eksportuj
+
+
+ Copy HTML
+ Kopiuj HTML
+
+
+
+ ImageButton
+
+ Open Image
+ Otwórz obraz
+
+
+ Images(%1)
+ Obrazy(%1)
+
+
+
+ LocaleDialog
+
+ The translations folder is missing.
+ Folder z tłumaczeniami nie został odnaleziony.
+
+
+ Please reinstall this application for more language options.
+ Proszę przeinstalować tę aplikację by uzyskać więcej opcji językowych.
+
+
+ Set Application Language
+ Ustaw język aplikacji
+
+
+
+ MainWindow
+
+ &New
+ &Nowy
+
+
+ Cu&t
+ Wy&tnij
+
+
+ &Bold
+ &Pogrubienie
+
+
+ &Copy
+ &Kopiuj
+
+
+ &Edit
+ &Edytuj
+
+
+ &File
+ &Plik
+
+
+ &Find
+ &Znajdź
+
+
+ &Help
+ &Pomoc
+
+
+ &Open
+ &Otwórz
+
+
+ &Redo
+ &Ponów
+
+
+ &Quit
+ &Wyjdź
+
+
+ &Save
+ &Zapisz
+
+
+ &Undo
+ &Cofnij
+
+
+ &View
+ &Widok
+
+
+ &* Bullet List
+ &* Lista z gwiazdkami
+
+
+ * Bullet List
+ * Lista z gwiazdkami
+
+
+ &Cheat Sheet HUD
+ &Interfejs Ściągi
+
+
+ Focus
+ Zaznacz
+
+
+ Failed to open Quick Reference Guide.
+ Nie udało się otworzyć poradnika.
+
+
+ &+ Bullet List
+ &+ Lista z plusami
+
+
+ + Bullet List
+ + Lista z plusami
+
+
+ ``` Code Block
+ Funkcja ``` Blok kodu
+
+
+ Stri&kethrough
+ Prze&kreślenie
+
+
+ Print Pre&view
+ Podgląd &wydruku
+
+
+ Quick &Reference Guide
+ &Poradnik formatowania tekstu
+
+
+ --- *** ___ Horizontal Rule
+ --- *** ___ Pozioma reguła
+
+
+ &About
+ &O
+
+
+ &Paste
+ &Wklej
+
+
+ &Print
+ &Drukuj
+
+
+ Save &As...
+ Zapisz &jako...
+
+
+ ###### Heading 6
+ ###### Nagłówek 6
+
+
+ #### Heading 4
+ #### Nagłówek 4
+
+
+ ### Heading 3
+ ### Nagłówek 3
+
+
+ ##### Heading 5
+ ##### Nagłówek 5
+
+
+ &- Bullet List
+ &- Lista z myślnikami
+
+
+ - Bullet List
+ - Lista wykropkowana
+
+
+ Insert Image
+ Wstaw obraz
+
+
+ &Document Statistics HUD
+ Pokaż statystyki &dokumentu
+
+
+ Hemingway
+ Hemingway
+
+
+ Quick Reference Guide
+ Poradnik formatowania tekstu
+
+
+ Please restart the application for changes to take effect.
+ Restartuj aplikację by zmiany zostały wprowadzone.
+
+
+ R&ename...
+ Z&mień nazwę...
+
+
+ &HTML Comment
+ &Komentarz HTML
+
+
+ &Preview in HTML
+ &Podgląd HTML
+
+
+ Application Language...
+ Język programu...
+
+
+ Images
+ Obrazy
+
+
+ &Unindent
+ &Usunięcie wcięcia
+
+
+ Document Statistics
+ Statystyki dokumentu
+
+
+ Open &Recent...
+ Otwórz &ostatni...
+
+
+ ## Heading 2
+ ## Nagłówek 2
+
+
+ Cheat Sheet
+ Ściąga
+
+
+ Block &Quote
+ Cytat Block &Quote
+
+
+ About &Qt
+ O &Qt
+
+
+ Outline
+ Podkreślenie
+
+
+ &Full Screen
+ &Pełen ekran
+
+
+ `Code Span`
+ Funkcja `Code Span`
+
+
+ *Emphasis* _Emphasis_
+ *Podkreślenie* _Podkreślenie_
+
+
+ # Heading 1
+ # Nagłówek 1
+
+
+ Toggle distraction free mode
+ Włącz tryb nierozpraszający
+
+
+ Clear Menu
+ Wyczyść Menu
+
+
+ Toggle full screen mode
+ Włącz tryb pełnoekranowy
+
+
+ [Reference Link][ID]
+ [Odnośnik referencyjny][ID]
+
+
+ About %1
+ O %1
+
+
+ &Task List
+ &Lista zadań
+
+
+ Toggle Task(s) &Complete
+ Odznacz zadania jako &wykonane
+
+
+ [Link](http://url.com "Title")
+ [Odnośnik](http://adres-strony.com "Tytuł")
+
+
+ &Insert Image...
+ &Wstaw obraz...
+
+
+ &Export
+ &Eksportuj
+
+
+ &Italic
+ &Kursywa
+
+
+ I&ndent
+ T&abulator
+
+
+ Re&load from Disk...
+ Wczytaj &ponownie...
+
+
+ Rep&lace
+ Zas&tąp
+
+
+ <p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Prawa autorskie © 2014-2016 wereturtle</b><p>Masz prawo używać i rozprowadzać te oprogramowanie na zasadach<a href="http://www.gnu.org/licenses/gpl.html"> GNU General Public License w Wersji 3</a>.</p><p>Odwiedź oficjalną stronę projektu na <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Specjalne podziękowania należą się: </p><p><a href="mailto:graeme@gottcode.org">Graeme Gottowi</a>, autorowi <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitrowi Shachnevowi, autorowi <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabrielowi M. Beddingfieldowi</a>, autorowi <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Jestem również bardzo wdzięczny <a href="mailto:w.vollprecht@gmail.com">Wolfowi Vollprechtowi</a>, autorowi <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, za inspirację pod postacią tak pięknego edytora Markdown.</p>
+
+
+ Themes...
+ Motywy...
+
+
+ Session Statistics
+ Statystyki sesji
+
+
+ &Settings
+ &Ustawienia
+
+
+ &Session Statistics HUD
+ &Interfejs sesji statystyki
+
+
+ &Spell check
+ &Sprawdzanie pisowni
+
+
+ > Block Quote
+ > Cytat
+
+
+ For&mat
+ For&mat
+
+
+ Font...
+ Czcionka...
+
+
+ &Strip Block Quote
+
+
+
+ [ID]: http://url.com "Reference Definition"
+ [ID]: http://adres-strony.com "Definicja Odniesienia"
+
+
+ ![Image][./image.jpg "Title"]
+ ![Obraz][./obraz.jpg "Tytuł"]
+
+
+ **Strong** __Strong__
+ **Mocne Podkreślenie** __Mocne Podgkreślenie__
+
+
+ %Ln word(s)
+
+ %Ln word
+ %Ln words
+
+
+
+
+ All Files
+ Wszystkie pliki
+
+
+ Reopen Closed File
+ Otwórz ponownie zamknięty plik
+
+
+ 1. Numbered List
+ 1. Lista numeryczna
+
+
+ &Outline HUD
+ Interfejs &podkreślenia
+
+
+ 1&) Numbered List
+ 1&) Lista numeryczna
+
+
+ 1&. Numbered List
+ 1&. Lista numeryczna
+
+
+ Toggle Hemingway mode
+ Włącz tryb Hemingwaya
+
+
+ Could not create file %1. Check permissions.
+
+
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Prawa autorskie © 2014-2016 wereturtle</b><p>Masz prawo używać i rozprowadzać te oprogramowanie na zasadach<a href="http://www.gnu.org/licenses/gpl.html"> GNU General Public License w Wersji 3</a>.</p><p>Odwiedź oficjalną stronę projektu na <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Specjalne podziękowania należą się: </p><p><a href="mailto:graeme@gottcode.org">Graeme Gottowi</a>, autorowi <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitrowi Shachnevowi, autorowi <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabrielowi M. Beddingfieldowi</a>, autorowi <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Jestem również bardzo wdzięczny <a href="mailto:w.vollprecht@gmail.com">Wolfowi Vollprechtowi</a>, autorowi <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, za inspirację pod postacią tak pięknego edytora Markdown.</p> {2014-2018 ?} {3<?}
+
+
+ Copy &HTML
+
+
+
+ Hide Open &HUD Windows
+
+
+
+ Increase Font Size
+
+
+
+ Decrease Font Size
+
+
+
+ Style Sheets...
+
+
+
+ Preview Options...
+
+
+
+ Preferences...
+
+
+
+ Wiki
+
+
+
+ Preview Options
+
+
+
+ Export
+
+
+
+ Copy HTML
+ Kopiuj HTML
+
+
+ Hide Open HUD Windows
+
+
+
+ Toggle Live HTML Preview
+
+
+
+ Show Open &HUD Windows
+
+
+
+ Show Open HUD Windows
+
+
+
+
+ MarkdownEditor
+
+ Add word to dictionary
+ Dodaj słowa do słownika
+
+
+ No spelling suggestions found
+ Nie znaleziono żadnych sugestii
+
+
+ Check spelling...
+ Sprawdzanie pisowni...
+
+
+
+ PreferencesDialog
+
+ Preferences
+
+
+
+ General
+
+
+
+ Editor
+
+
+
+ Spell Check
+
+
+
+ HUD
+ Interfejs
+
+
+ Matched Characters
+
+
+
+ Display
+
+
+
+ Show current time in full screen mode
+
+
+
+ Hide menu bar in full screen mode
+
+
+
+ Rounded
+ Zaokrąglony
+
+
+ Square
+ Kwadrat
+
+
+ Interface style
+
+
+
+ File Saving
+
+
+
+ Auto save
+
+
+
+ Backup file on save
+
+
+
+ History
+
+
+
+ Remember file history
+
+
+
+ Tabulation
+
+
+
+ Insert spaces for tabs
+
+
+
+ Tabulation width
+
+
+
+ Styling
+
+
+
+ Sentence
+
+
+
+ Current Line
+
+
+
+ Three Lines
+
+
+
+ Paragraph
+
+
+
+ Typewriter
+
+
+
+ Focus mode
+
+
+
+ Narrow
+
+
+
+ Medium
+
+
+
+ Wide
+
+
+
+ Full
+
+
+
+ Editor width
+
+
+
+ Plain
+
+
+
+ Italic
+
+
+
+ Fancy
+
+
+
+ Blockquote style
+
+
+
+ Underline
+
+
+
+ Emphasis style
+
+
+
+ Use large headings
+
+
+
+ Highlight line breaks
+
+
+
+ Typing
+
+
+
+ Cycle bullet point markers
+
+
+
+ Automatically match characters
+
+
+
+ Customize matched characters...
+
+
+
+ Live spellcheck enabled
+
+
+
+ Language
+
+
+
+ Dictionary
+
+
+
+ Right
+
+
+
+ Left
+
+
+
+ Window button layout
+
+
+
+ Alternate row colors
+
+
+
+ Enable desktop compositing effects
+
+
+
+ Auto-hide HUD windows when typing
+
+
+
+ Auto-hide HUD windows when previewing HTML
+
+
+
+ Opacity
+
+
+
+
+ PreviewOptionsDialog
+
+ Preview Options
+
+
+
+ Markdown Flavor
+
+
+
+ Style Sheet
+
+
+
+ Github (Default)
+ Github (Domyślny)
+
+
+
+ QObject
+
+ All
+ Wszystko
+
+
+ Text
+ Tekst
+
+
+ Export failed:
+ Eksportowanie się nie powiodło:
+
+
+ Untitled 1
+ Bez tytulu 1
+
+
+ Theme could not be saved to disk. Please check file permissions or try renaming the theme.
+ Motyw nie mógł być zapisany na dysk. Proszę sprawdzić uprawnienia pliku albo spróbuj zmienić nazwę pliku.
+
+
+ Theme image file could not be copied to the theme directory. Please check file permissions.
+ Plik obrazu motywu nie mógł być zapisany do katalogu z motywami. Proszę sprawdzić uprawnienia.
+
+
+ Failed to rename theme. Please check file permissions.
+ Nie udało się zmienić nazwy motywu. Proszę sprawdzić uprawnienia.
+
+
+ Export to HTML is not supported with this processor.
+ Eksport do pliku HTML nie jest wspierany z tym procesorem.
+
+
+ Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
+ Wartość %1 jest poza skalą. Poprawne wartości wynoszą od %2 do %3 włącznie.
+
+
+ The specified theme does not exist in the file system:
+ Podany motyw nie istnieje w systemie plików:
+
+
+ Null or empty file path provided for writing.
+ Podana ścieżka zapisu jest pusta.
+
+
+ Failed to remove old theme image. Please check file permissions.
+ Nie udało się usunąć starego obrazu motywu. Sprawdź uprawnienia.
+
+
+ Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
+ Motyw jest plikiem tylko do odczytu. Zmień nazwę lub ustaw plik jako zapisywalny.
+
+
+ Markdown
+ Markdown
+
+
+ Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
+ Nie można było usunąć %1 z motywu. Spróbuj ustawić plik jako zapisywalny.
+
+
+ Untitled %1
+ Bez tytulu %1
+
+
+ The old theme image file could not be removed from the theme directory. Please check file permissions.
+ Starsza wersja pliku motywu nie została usunięta. Sprawdź uprawnienia.
+
+
+ The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
+ Wybrany motyw nie jest dostępny. Spróbuj zrestartować aplikację. Jeśli problem nawraca, proszę zgłosić błąd.
+
+
+ '%1' already exists. Please choose another name.
+ '%1' już istnieje. Podaj inną nazwę.
+
+
+ Invalid or missing value for %1 provided.
+ Niewłaściwa bądź brakująca wartość dla podanego %1.
+
+
+ %1 format is unsupported by the Sundown processor.
+ Format %1 nie jest wspierany przez procesor Sundown.
+
+
+ %1 format is not supported by this processor.
+ Format %1 nie jest wspierany przez ten procesor.
+
+
+ '%1' theme already exists. Please choose another name.
+ Motyw '%1' już istnieje. Wybierz inną nazwę.
+
+
+ Failed to execute command:
+ Uruchomienie polecenia się nie powiodło:
+
+
+
+ SessionStatisticsWidget
+
+ Pages Written:
+ Napisane strony:
+
+
+ Idle Time:
+ Czas bezczynności:
+
+
+ Average WPM:
+ Średnia ilość słów na minutę:
+
+
+ Total Time:
+ Całkowity czas pisania:
+
+
+ Words Written:
+ Napisane słowa:
+
+
+
+ SimpleFontDialog
+
+ Size
+ Rozmiar
+
+
+ Family
+ Rodzina
+
+
+ Preview
+ Podgląd
+
+
+ AaBbCcXxYyZz
+ AaBbCcXxYyZz
+
+
+
+ SpellChecker
+
+ &Add
+ &Dodaj
+
+
+ Spell check complete.
+ Sprawdzanie pisowni ukończone.
+
+
+ C&hange All
+ Z&amień wszystko
+
+
+ Cancel
+ Anuluj
+
+
+ Change to:
+ Zmień na:
+
+
+ Checking spelling...
+ Sprawdzanie pisowni...
+
+
+ I&gnore All
+ P&omiń wszystko
+
+
+ Continue checking at beginning of file?
+ Kontynuować sprawdzanie od początku pliku?
+
+
+ Check Spelling
+ Sprawdxć pisownię
+
+
+ Please wait
+ Proszę czekać
+
+
+ &Change
+ &Zmień
+
+
+ &Ignore
+ &Pomiń
+
+
+ Not in dictionary:
+ Słowa nie ma w słowniku:
+
+
+
+ StyleSheetManagerDialog
+
+ All
+ Wszystko
+
+
+ CSS
+ CSS
+
+
+ Remove selected style sheet(s) from list. (No files will be deleted from the hard disk.)
+ Usuń wybrane style z listy. (Żaden plik nie zostanie usunięty z dysku.)
+
+
+ Add new style sheet
+ Dodaj nowy styl
+
+
+ Select CSS File
+ Wybierz plik CSS
+
+
+ Custom Style Sheets
+ Niestandardowe style (CSS)
+
+
+ Don't worry! No files will be deleted from the hard disk. But are you sure you wish to remove the selected style sheet(s) from the list?
+ Bez obaw! Żaden plik nie zostanie usunięty z dysku. Mimo to jesteś pewien że chcesz usunąć wybrany styl(e) z listy?
+
+
+
+ TextDocument
+
+ untitled
+ Bez tytułu
+
+
+
+ ThemeEditorDialog
+
+ HUD
+ Interfejs
+
+
+ None
+ Żaden
+
+
+ Tile
+ Kafelkuj
+
+
+ Zoom
+ Przybliż
+
+
+ Scale
+ Skaluj
+
+
+ Text Area Background Color
+ Kolor tła pola tekstowego
+
+
+ Unable to save theme.
+ Nie można zapisać motywu.
+
+
+ Background
+ Tło
+
+
+ Editor Corners
+ Narożniki edytora
+
+
+ Theme Name
+ Nazwa motywu
+
+
+ Failed to rename theme.
+ Nie udało się zmienić nazwy motywu.
+
+
+ Center
+ Środek
+
+
+ HUD Foreground Color
+ Kolor interfejsu
+
+
+ Text Editor
+ Edytor Tekstu
+
+
+ Square
+ Kwadrat
+
+
+ Text Color
+ Kolor tekstu
+
+
+ Edit Theme
+ Edytuj motyw
+
+
+ Markup Color
+ Kolor zaznaczenia
+
+
+ Background Image
+ Obraz tła
+
+
+ Background Color
+ Kolor tła
+
+
+ Rounded
+ Zaokrąglony
+
+
+ Stretch
+ Rozciągnij
+
+
+ Spelling Error Color
+ Kolor błędu pisowni
+
+
+ Link Color
+ Kolor odnośnika
+
+
+ Editor Opacity
+ Przezroczystość
+
+
+ HUD Background Color
+ Kolor tła interfejsu
+
+
+ Editor Aspect
+ Aspekt edytora
+
+
+ Emphasis Color
+
+
+
+ Block Text Color
+
+
+
+
+ ThemeSelectionDialog
+
+ Unable to load theme.
+ Nie udało się załadować motywu.
+
+
+ Sorry, this is a built-in theme that cannot be edited.
+ Przepraszamy. To jest motyw domyślny, którego nie można modyfikować.
+
+
+ Cannot delete theme.
+ Nie można usunąć motywu.
+
+
+ Cannot edit theme.
+ Nie można edytować motywu.
+
+
+ Themes
+ Motywy
+
+
+ Failed to delete theme.
+ Usuwanie motywu się nie powiodło.
+
+
+ Are you sure you want to permanently delete the '%1' theme?
+ Jesteś pewien że chcesz usunąć motyw '%1'?
+
+
+ Sorry, this is a built-in theme that cannot be deleted.
+ Przepraszamy. To jest motyw domyślny, którego nie można usunąć.
+
+
+ Edit...
+ Edytuj...
+
+
+
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_pt_BR.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_pt_BR.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_pt_BR.ts ghostwriter-1.6.0/translations/ghostwriter_pt_BR.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_pt_BR.ts 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_pt_BR.ts 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
-
+
AbstractStatisticsWidget
@@ -35,109 +35,109 @@
DictionaryDialog
Set Dictionary
- Escolher dicionário
+ Escolher dicionário
DocumentManager
-
+
Open File
Abrir Arquivo
-
+
Could not open %1
Impossível abrir %1
-
+
Permission denied.
Permissão negada.
-
+
The document has been modified.
O documento foi modificado.
-
+
Discard changes?
Descartar alterações?
-
+
Rename File
Renomear Arquivo
-
+
Failed to rename %1
Falha ao renomear %1
-
+
Save File
Salvar Arquivo
-
+
Error saving %1
Falha ao salvar %1
-
+
The document has been modified by another program.
O documento foi modificado por outro programa.
-
+
Would you like to reload the document?
Gostaria de reabrir o documento?
-
-
+
+
Could not read %1
Impossível ler %1
-
+
opening %1
abrindo %1
-
+
File has been modified.
O arquivo foi modificado.
-
+
%1 has been modified.
%1 foi modificado.
-
+
Would you like to save your changes?
Gostaria de salvar suas alterações?
-
+
%1 is read only.
%1 é somente para leitura.
-
+
Overwrite protected file?
Sobrescrever arquivo protegido?
-
+
Overwrite failed.
Sobrescrita falhou.
-
+
Please save file to another location.
Por favor salve o arquivo em outro local.
@@ -364,43 +364,37 @@
HtmlPreview
-
+
HTML Preview
Prever HTML
-
Copy HTML
- Copiar HTML
+ Copiar HTML
-
Export
- Exportar
+ Exportar
-
Print
- Imprimir
+ Imprimir
-
No markdown (pandoc, multimarkdown, discount) processors are installed. Please install or add their installation locations to your system PATH environment variable.
- Nenhum processador markdown (pandoc, multimarkdown, discount) está instalado. Por favor instale ou adicione suas localizações à variável de sistema PATH.
+ Nenhum processador markdown (pandoc, multimarkdown, discount) está instalado. Por favor instale ou adicione suas localizações à variável de sistema PATH.
-
Github (Default)
- Github (Padrão)
+ Github (Padrão)
-
Add/Remove Style Sheets...
- Adicionar/Remover Folhas de Estilos...
+ Adicionar/Remover Folhas de Estilos...
Add/Remove Custom Style Sheets...
- Adicionar/Remover Folhas de Estilo do Usuário...
+ Adicionar/Remover Folhas de Estilo do Usuário...
@@ -437,209 +431,208 @@
MainWindow
-
+
Outline
Estrutura
-
+
# Heading 1
# Título 1
-
+
## Heading 2
## Título 2
-
+
### Heading 3
### Título 3
-
+
#### Heading 4
#### Título 4
-
+
##### Heading 5
##### Título 5
-
+
###### Heading 6
###### Título 5
-
+
*Emphasis* _Emphasis_
*Ênfase* _Ênfase_
-
+
**Strong** __Strong__
**Negrito** __Negrito__
-
+
1. Numbered List
1. Lista Numerada
-
+
* Bullet List
* Lista de Itens
-
+
+ Bullet List
+ Lista de Itens
-
+
- Bullet List
- Lista de Itens
-
+
> Block Quote
> Citação em Parágrafo
-
+
`Code Span`
`Trecho de Código`
-
+
``` Code Block
``` Bloco de Código
-
+
[Reference Link][ID]
[Ligação para Referência][ID]
-
+
![Image][./image.jpg "Title"]
![Imagem][./imagem.jpg "Título"]
-
+
--- *** ___ Horizontal Rule
--- *** ___ Régua Horizontal
-
+
Cheat Sheet
Folha de Referência
-
+
Document Statistics
Estatísticas do Documento
-
+
Could not create file %1. Check permissions.
Não é possível criar arquivo %1. Verifique as permissões.
-
+
Insert Image
Inserir Imagem
-
+
Images
Imagens
-
+
All Files
Todos os Arquivos
-
+
Stri&kethrough
Tac&hado
Tabulation Width
- Largura da Tabulação
+ Largura da Tabulação
Spaces
- Espaços
+ Espaços
-
+
Failed to open Quick Reference Guide.
Falha ao abrir o Guia de Referência Rápida.
-
+
Quick Reference Guide
Guia de Referência Rápida
-
<p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
- <p>Copyright © 2014-2016 wereturtle</b><p>Você pode usar e redistribuir este software sob os termos da <a href="http://www.gnu.org/licenses/gpl.html">Licença Pública Geral GNU Versão 3</a>. </p><p>Visite o site oficial em <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Agradecimentos especiais e crédito pela reutilização de código vai para</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, autor do <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, autor do <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M Beddingfield</a>, autor do <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Também sou profundamente grato a <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, o autor do <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, pela inspiração que ofereceu para a criação de uma tão bela ferramenta de edição para Markdown.</p>
+ <p>Copyright © 2014-2016 wereturtle</b><p>Você pode usar e redistribuir este software sob os termos da <a href="http://www.gnu.org/licenses/gpl.html">Licença Pública Geral GNU Versão 3</a>. </p><p>Visite o site oficial em <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Agradecimentos especiais e crédito pela reutilização de código vai para</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, autor do <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, autor do <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M Beddingfield</a>, autor do <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Também sou profundamente grato a <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, o autor do <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, pela inspiração que ofereceu para a criação de uma tão bela ferramenta de edição para Markdown.</p>
-
+
About %1
Sobre %1
-
+
Please restart the application for changes to take effect.
Por favor reinicie a aplicação para que as mudanças tenham efeito.
Hud Window Opacity
- Opacidade da Janela HUD
+ Opacidade da Janela HUD
-
+
&File
Arqu&ivo
-
+
&New
&Novo
-
+
&Open
&Abrir
-
+
Reopen Closed File
Reabir Arquivo Fechado
-
+
Clear Menu
Limpar o Menu
-
+
&Save
&Salvar
-
+
Save &As...
Salvar Co&mo...
-
+
%Ln word(s)
%Ln palavra
@@ -647,297 +640,357 @@
-
+
[Link](http://url.com "Title")
[Ligação](http://url.com "Título")
-
+
[ID]: http://url.com "Reference Definition"
[ID]: http://link.com "Definição de Referência"
-
+
Session Statistics
Estatísticas da Sessão
-
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Copyright © 2014-2016 wereturtle</b><p>Você pode usar e redistribuir este software sob os termos da <a href="http://www.gnu.org/licenses/gpl.html">Licença Pública Geral GNU Versão 3</a>. </p><p>Visite o site oficial em <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Agradecimentos especiais e crédito pela reutilização de código vai para</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, autor do <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, autor do <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M Beddingfield</a>, autor do <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Também sou profundamente grato a <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, o autor do <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, pela inspiração que ofereceu para a criação de uma tão bela ferramenta de edição para Markdown.</p> {2014-2018 ?} {3<?}
+
+
+
Open &Recent...
Abrir &Recente...
-
+
R&ename...
R&enomear...
-
+
Re&load from Disk...
Recarre&gar do Disco...
-
+
Print Pre&view
Pre&visão da Impressão
-
+
&Print
Im&pressão
-
+
&Export
E&xportação
-
+
&Quit
Fec&har e Sair
-
+
&Edit
&Editar
-
+
&Undo
Defa&zer
-
+
&Redo
&Refazer
-
+
Cu&t
Cor&tar
-
+
&Copy
&Copiar
-
+
&Paste
Co&lar
-
+
+ Copy &HTML
+
+
+
+
&Insert Image...
&Inserir Imagem...
-
+
&Find
&Encontrar
-
+
Rep&lace
Substitui&r
-
+
&Spell check
Verificação &Ortográfica
-
+
For&mat
For&matar
-
+
&Bold
&Negrito
-
+
&Italic
&Itálico
-
+
&HTML Comment
Comentário &HTML
-
+
I&ndent
&Avançar
-
+
&Unindent
Rec&uar
-
+
Block &Quote
&Citação em Bloco
-
+
&Strip Block Quote
&Remover Citação em Bloco
-
+
&* Bullet List
&* Lista de Itens
-
+
&- Bullet List
&- Lista de Itens
-
+
&+ Bullet List
&+ Lista de Itens
-
+
1&. Numbered List
1&. Lista Numerada
-
+
1&) Numbered List
1&) Lista Numerada
-
+
&Task List
Lista de &Tarefas
-
+
Toggle Task(s) &Complete
Alternar Tarefa(s) &Completas
-
+
&View
&Ver
-
+
&Full Screen
&Tela Cheia
-
+
&Preview in HTML
&Prever em HTML
-
+
&Outline HUD
&Janela de Estrutura
-
+
&Cheat Sheet HUD
Janela de &Referência Rápida
-
+
&Document Statistics HUD
Janela de Estatísticas do &Documento
-
+
&Session Statistics HUD
Janela de Estatísticas da &Sessão
-
+
+
+ Hide Open &HUD Windows
+
+
+
+
Increase Font Size
Aumentar o tamanho da fonte
-
+
Decrease Font Size
Diminuir tamanho da fonte
-
+
&Settings
&Configurações
-
+
Themes...
Temas...
-
+
Font...
Fonte...
-
+
+ Style Sheets...
+
+
+
+
+ Preview Options...
+
+
+
+
Preferences...
Preferências...
-
+
+ Preview Options
+
+
+
+
+ Export
+ Exportar
+
+
+
+ Copy HTML
+ Copiar HTML
+
+
+
+
+ Hide Open HUD Windows
+
+
+
+
+ Toggle Live HTML Preview
+
+
+
+
+ Show Open &HUD Windows
+
+
+
+
+ Show Open HUD Windows
+
+
+
+
Application Language...
Linguagem da Aplicação...
-
+
&Help
&Ajuda
-
+
&About
&Sobre
-
+
About &Qt
Sobre o &Qt
-
+
Quick &Reference Guide
Guia de &Referência Rápida
-
+
Wiki
Wiki
-
Hemingway
- Hemingway
+ Hemingway
-
+
Toggle Hemingway mode
Alternar modo Hemingway
-
Focus
- Foco
+ Foco
-
+
Toggle distraction free mode
Alternar modo sem distrações
-
+
Toggle full screen mode
Alternar modo de tela cheia
@@ -945,17 +998,17 @@
MarkdownEditor
-
+
Add word to dictionary
Acrescentar palavra ao dicionário
-
+
Check spelling...
Verificar ortografia...
-
+
No spelling suggestions found
Nenhuma sugestão de correção encontrada
@@ -989,228 +1042,281 @@
Janelas de Informação
-
+
Matched Characters
Pares de Caracteres
-
+
Display
Exibição
-
+
Show current time in full screen mode
Mostrar a hora atual quando em modo de tela cheia
-
+
Hide menu bar in full screen mode
Ocultar a barra de menus quando em modo de tela cheia
-
+
+ Rounded
+ Arredondados
+
+
+
+ Square
+ Quadrados
+
+
+
+ Interface style
+
+
+
+
File Saving
Salvamento de Arquivos
-
+
Auto save
Salvar Automaticamente
-
+
Backup file on save
Criar Cópia de Segurança ao Salvar
-
+
History
Histórico
-
+
Remember file history
Lembrar histórico de arquivos
-
+
Tabulation
Tabulação
-
+
Insert spaces for tabs
Inserir espaços em vez de tabulações
-
+
Tabulation width
Largura da tabulação
-
+
Styling
Estilos
-
+
Sentence
Sentença
-
+
Current Line
Linha Atual
-
+
Three Lines
Três Linhas
-
+
Paragraph
Parágrafo
-
+
+ Typewriter
+
+
+
+
Focus mode
Política de Foco
-
+
Narrow
Estreita
-
+
Medium
Média
-
+
Wide
Larga
-
+
Full
Total
-
+
Editor width
Largura do Editor
-
+
Plain
Simples
-
-
+
+
Italic
Itálico
-
+
Fancy
Bonito
-
+
Blockquote style
Estilo das citações
-
+
Underline
Sublinhado
-
+
Emphasis style
Estilo de ênfase
-
+
Use large headings
Use títulos grandes
-
+
Highlight line breaks
Destacar quebras de linhas
-
+
Typing
Digitação
-
+
Cycle bullet point markers
Alternar entre os marcadores de listas
-
+
Automatically match characters
Fechar pares de caracteres automaticamente
-
+
Customize matched characters...
Definir quais caracteres fechar...
-
+
Live spellcheck enabled
Ativar verificação ortográfica simultânea
-
+
Language
Linguagem
-
+
Dictionary
Dicionários
-
+
Right
Direita
-
+
Left
Esquerda
-
+
Window button layout
Arranjo dos botões de janela
-
+
Alternate row colors
Alternar cores de linhas
-
+
Enable desktop compositing effects
Habilitar efeitos de composição das janelas
-
+
+ Auto-hide HUD windows when typing
+
+
+
+
+ Auto-hide HUD windows when previewing HTML
+
+
+
+
Opacity
Opacidade das Janelas de informação
+ PreviewOptionsDialog
+
+
+ Preview Options
+
+
+
+
+ Markdown Flavor
+
+
+
+
+ Style Sheet
+
+
+
+
+ Github (Default)
+ Github (Padrão)
+
+
+
QObject
@@ -1244,7 +1350,7 @@
Tudo
-
+
Null or empty file path provided for writing.
Caminho de arquivo fornecido para edição está em branco ou inválido.
@@ -1259,79 +1365,79 @@
O formato %1 não é suportado pelo processador Sundown.
-
+
The specified theme does not exist in the file system:
O tema especificado não existe no sistema de arquivos:
-
+
The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
O tema especificado não está disponível: Tente reiniciar a aplicação. Se o problema persistir, favor registrar um bug.
-
+
Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
Impossível apagar %1 dos temas. Por favor mude as permissões do tema para permitir escrita.
-
+
'%1' already exists. Please choose another name.
'%1' já existe. Favor escolher outro nome.
-
+
'%1' theme already exists. Please choose another name.
O tema '%1' já existe. Favor escolher outro nome.
-
+
Failed to rename theme. Please check file permissions.
Falha ao renomear tema. Favor verificar permissões dos arquivos.
-
+
Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
O tema é de somente leitura. Por favor tente renomear o tema ou alterar a permissão de escrita do arquivo do tema.
-
+
Failed to remove old theme image. Please check file permissions.
Falha ao remover imagem anterior do tema. Favor verificar permissões de arquivos.
-
+
The old theme image file could not be removed from the theme directory. Please check file permissions.
A imagem anterior do tema não pôde ser removida do diretório de temas. Favor verificar permissões de arquivos.
-
+
Theme image file could not be copied to the theme directory. Please check file permissions.
A imagem do tema não pôde ser copiada para o diretório de temas. Favor verificar permissões de arquivos.
-
+
Theme could not be saved to disk. Please check file permissions or try renaming the theme.
O tema não pôde ser salvo no disco. Por favor verifique as permissões de escrita ou tente renomear o tema.
-
+
Untitled 1
Sem título 1
-
+
Untitled %1
Sem título %1
-
-
-
+
+
+
Invalid or missing value for %1 provided.
Fornecido nome inválido ou em branco para %1.
-
+
Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
O valor para %1 está fora dos limites. Valores válidos são entre %2 e %3, inclusive.
@@ -1511,134 +1617,141 @@
Editar Tema
-
Rounded
- Arredondados
+ Arredondados
-
Square
- Quadrados
+ Quadrados
-
-
+
+
Stretch
Esticado
-
-
+
+
Center
Centrado
-
+
None
Nenhum
-
+
Tile
Repetir
-
+
Scale
Ampliar
-
+
Zoom
Zoom
-
+
Theme Name
Nome do Tema
-
+
Text Color
Cor do Texto
-
+
Markup Color
Cor da Marcação
-
+
Link Color
Cor das Ligações
-
+
+ Emphasis Color
+
+
+
+
+ Block Text Color
+
+
+
+
Spelling Error Color
Cor dos Erros de Ortografia
-
+
Text Area Background Color
Cor do Fundo da Área de Texto
-
+
Text Editor
Editor de Texto
-
+
Background Image
Imagem de Fundo
-
+
Background Color
Cor de Fundo
-
+
Editor Aspect
Aspecto do Editor
-
Editor Corners
- Cantos do Editor
+ Cantos do Editor
-
+
Editor Opacity
Opacidade do Editor
-
+
Background
Plano de Fundo
-
+
HUD Foreground Color
Cor de Texto do HUD
-
+
HUD Background Color
Cor de Fundo do HUD
-
+
HUD
HUD
-
+
Unable to save theme.
Impossível salvar tema.
-
+
Failed to rename theme.
Falha ao renomear o tema.
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_ru.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_ru.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_ru.ts ghostwriter-1.6.0/translations/ghostwriter_ru.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_ru.ts 2017-05-13 20:56:17.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_ru.ts 2018-04-07 21:47:43.000000000 +0000
@@ -1,6 +1,6 @@
-
+
AbstractStatisticsWidget
@@ -33,109 +33,109 @@
DictionaryDialog
Set Dictionary
- Выбрать словарь
+ Выбрать словарь
DocumentManager
-
+
Open File
Открыть файл
-
+
Could not open %1
Не удалось открыть %1
-
+
Permission denied.
Нет прав на чтение.
-
+
The document has been modified.
Документ был изменён.
-
+
Discard changes?
Откатить изменения?
-
+
Rename File
Переименовать файл
-
+
Failed to rename %1
Не удалось переименовать %1
-
+
Save File
Сохранить файл
-
+
Error saving %1
Ошибка при сохранении %1
-
+
The document has been modified by another program.
Документ был изменён другой программой.
-
+
Would you like to reload the document?
Желаете заново загрузить документ?
-
-
+
+
Could not read %1
Не удалось прочесть %1
-
+
opening %1
отркрываю %1
-
+
File has been modified.
Файл был изменён.
-
+
%1 has been modified.
%1 был изменён.
-
+
Would you like to save your changes?
Желаете сохранить свои правки?
-
+
%1 is read only.
%1 доступен только для чтения.
-
+
Overwrite protected file?
Переписать защищённый файл?
-
+
Overwrite failed.
Не удалось перезаписать.
-
+
Please save file to another location.
Пожалуйста, сохраните файл в другую локацию.
@@ -353,8 +353,7 @@
Sorry
- Возможно лучше использовать "Извините", так как это заголовок окна?
- К сожалению
+ Извините
@@ -366,43 +365,37 @@
HtmlPreview
-
+
HTML Preview
Предпросмотр HTML
-
Copy HTML
- Копировать HTML
+ Копировать HTML
-
Export
- Экспорт
+ Экспорт
-
Print
- Печать
+ Печать
-
No markdown (pandoc, multimarkdown, discount) processors are installed. Please install or add their installation locations to your system PATH environment variable.
- Не установлено ни одного обработчика markdown (pandoc, multimarkdown, discount). Пожалуйста, установите их или добавьте пути установки в переменную окружения PATH.
+ Не установлено ни одного обработчика markdown (pandoc, multimarkdown, discount). Пожалуйста, установите их или добавьте пути установки в переменную окружения PATH.
-
Github (Default)
- Github (по-умолчанию)
+ Github (по-умолчанию)
-
Add/Remove Style Sheets...
- Добавить/Удалить стили...
+ Добавить/Удалить стили...
Add/Remove Custom Style Sheets...
- Добавить/удалить собственные таблицы стилей...
+ Добавить/удалить собственные таблицы стилей...
@@ -439,156 +432,160 @@
MainWindow
-
+
Outline
Содержание
-
+
# Heading 1
# Заголовок 1
-
+
## Heading 2
## Заголовок 2
-
+
### Heading 3
### Заголовок 3
-
+
#### Heading 4
#### Заголовок 4
-
+
##### Heading 5
##### Заголовок 5
-
+
###### Heading 6
###### Заголовок 6
-
+
*Emphasis* _Emphasis_
*Курсив* _Курсив_
-
+
**Strong** __Strong__
**Жирный** __Жирный__
-
+
1. Numbered List
1. Нумерованный список
-
+
* Bullet List
* Маркированный список
-
+
+ Bullet List
+ Маркированный список
-
+
- Bullet List
- Маркированный список
-
+
> Block Quote
> Блочная цитата
-
+
`Code Span`
`Код`
-
+
``` Code Block
``` Блок кода
-
+
[Reference Link][ID]
Коряво!
[Ссылка внутри документа][Идентификатор]
-
+
![Image][./image.jpg "Title"]
![Изображение][./image.jpg "Заголовок"]
-
+
--- *** ___ Horizontal Rule
--- *** ___ Горизонтальная черта
-
+
Cheat Sheet
Шпаргалка
-
+
Could not create file %1. Check permissions.
Невозможно создать файл %1. Проверьте права доступа.
-
+
Insert Image
Вставить изображение
-
+
Images
Изображения
-
+
All Files
Все файлы
-
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ <p>Все права защищены © 2014-2018 wereturtle</b><p>Вы можете использовать и распространять данное программное обеспечение в соответствии с терминами <a href="http://www.gnu.org/licenses/gpl.html">стандартной общественной лицензии GNU (GPLv3)</a>.</p><p>Посетите официальный сайт <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Особые благодарности за использованный код проектов</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, автору проекта <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, автору проекта <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, автору проекта <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Я также в глубоком долгу перед <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, автором проекта <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, за вдохновление, которое я получил пользуясь его прекрасной программой для редактирования разметки.</p>
+
+
+
Stri&kethrough
Пере&чёркнуто
Tabulation Width
- Ширина табуляции
+ Ширина табуляции
Spaces
- Пробелы
+ Пробелы
-
+
Failed to open Quick Reference Guide.
Не удалось открыть краткую справку.
-
+
Quick Reference Guide
Краткая справка
-
<p>Copyright © 2014-2016 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
- <p>Все права защищены © 2014-2016 wereturtle</b><p>Вы можете использовать и распространять данное программное обеспечение в соответствии с терминами <a href="http://www.gnu.org/licenses/gpl.html">стандартной общественноой лицензии GNU (GPLv3)</a>.</p><p>Посетите официальный сайт <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Особые благодарности за использованный код проектов</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, автору проекта <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, автору проекта <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, автору проекта <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Я также в глубоком долгу перед <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, автором проекта <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, за вдохновление, которое я получил пользуясь его прекрасной программой для редактирования разметки.</p>
+ <p>Все права защищены © 2014-2016 wereturtle</b><p>Вы можете использовать и распространять данное программное обеспечение в соответствии с терминами <a href="http://www.gnu.org/licenses/gpl.html">стандартной общественноой лицензии GNU (GPLv3)</a>.</p><p>Посетите официальный сайт <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Особые благодарности за использованный код проектов</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, автору проекта <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, автору проекта <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, автору проекта <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>Я также в глубоком долгу перед <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, автором проекта <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, за вдохновление, которое я получил пользуясь его прекрасной программой для редактирования разметки.</p>
-
+
About %1
О %1
@@ -597,67 +594,67 @@
Непрозрачность плавающего окна
-
+
&File
&Файл
-
+
&New
Со&здать
-
+
&Open
&Открыть
-
+
Reopen Closed File
Повторно открыть закрытый файл
-
+
Clear Menu
Очистить список
-
+
&Save
&Сохранить
-
+
Save &As...
Сохранить &как...
-
+
Open &Recent...
Открыть &недавнее...
-
+
[Link](http://url.com "Title")
[Ссылка](http://url.com "Заголовок")
-
+
[ID]: http://url.com "Reference Definition"
[ID]: http://url.com "Справочное определение"
-
+
Document Statistics
Статистика документа
-
+
Session Statistics
Статистика сессии
-
+
%Ln word(s)
%Ln слово
@@ -666,7 +663,7 @@
-
+
Please restart the application for changes to take effect.
Пожалуйста, перезапустите приложение, чтобы изменения вступили в силу.
@@ -675,282 +672,341 @@
Дополняемые символы
-
+
R&ename...
Пере&именовать...
-
+
Re&load from Disk...
Загрузить &заново с диска...
-
+
Print Pre&view
П&редпросмотр печати
-
+
&Print
&Печать
-
+
&Export
&Экспортировать
-
+
&Quit
&Выход
-
+
&Edit
&Правка
-
+
&Undo
&Отменить
-
+
&Redo
&Повторить
-
+
Cu&t
Выр&езать
-
+
&Copy
&Копировать
-
+
&Paste
&Вставить
-
+
+ Copy &HTML
+ Копировать &HTML
+
+
+
&Insert Image...
Вставить &изображение...
-
+
&Find
&Найти
-
+
Rep&lace
&Заменить
-
+
&Spell check
Проверка о&рфографии
-
+
For&mat
&Разметка
-
+
&Bold
&Жирно
-
+
&Italic
&Курсив
-
+
&HTML Comment
Комментарий &HTML
-
+
I&ndent
&Отступить
-
+
&Unindent
&Убрать отступ
-
+
Block &Quote
Блочная &цитата
-
+
&Strip Block Quote
У&брать цитирование
-
+
&* Bullet List
- &* Маркерованный список
+ &* Маркированный список
-
+
&- Bullet List
- &- Маркерованный список
+ &- Маркированный список
-
+
&+ Bullet List
- &+ Маркерованный список
+ &+ Маркированный список
-
+
1&. Numbered List
1&. Нумерованный список
-
+
1&) Numbered List
1&) Нумерованный список
-
+
&Task List
Список &задач
-
+
Toggle Task(s) &Complete
&Переключить статус задач(и)
-
+
&View
&Вид
-
+
&Full Screen
&Полный экран
-
+
&Preview in HTML
Предпросмотр &HTML
-
+
&Outline HUD
HUD - Панель? Как возможная замена.
&Содержание
-
+
&Cheat Sheet HUD
HUD - Панель? Как возможная замена.
&Шпаргалка
-
+
&Document Statistics HUD
HUD - Панель? Как возможная замена.
Статистика &документа
-
+
&Session Statistics HUD
HUD - Панель? Как возможная замена.
Статистика с&ессии
-
+
+
+ Hide Open &HUD Windows
+ Не прямой перевод (open - открытые, а не используемые), но более точный по смыслу. Заодно, чтобы не плодить тафталогии "Открыть открытые".
+ Скрыть используемые &плавающие окна
+
+
+
Increase Font Size
- Увеличить размер шрифта
+ Увеличить размер шрифта
-
+
Decrease Font Size
- Уменьшить размер шрифта
+ Уменьшить размер шрифта
-
+
&Settings
&Настройки
-
+
Themes...
Темы...
-
+
Font...
Шрифт...
-
+
+ Style Sheets...
+ Таблицы стилей...
+
+
+
+ Preview Options...
+ Настройки предпросмотра...
+
+
+
Preferences...
Параметры...
-
+
+ Preview Options
+ Настройки предпросмотра
+
+
+
+ Export
+ Экспорт
+
+
+
+ Copy HTML
+ Копировать HTML
+
+
+
+
+ Hide Open HUD Windows
+ Не прямой перевод (open - открытые, а не используемые), но более точный по смыслу. Заодно, чтобы не плодить тафталогии "Открыть открытые".
+ Скрыть используемые плавающие окна
+
+
+
+ Toggle Live HTML Preview
+ Переключить интерактивный предпросмотр HTML
+
+
+
+ Show Open &HUD Windows
+ Не прямой перевод (open - открытые, а не используемые), но более точный по смыслу. Заодно, чтобы не плодить тафталогии "Открыть открытые".
+ Показать использовуемые &плавающие окна
+
+
+
+ Show Open HUD Windows
+ Не прямой перевод (open - открытые, а не используемые), но более точный по смыслу. Заодно, чтобы не плодить тафталогии "Открыть открытые".
+ Показать используемые плавающие окна
+
+
+
Application Language...
Язык приложения...
-
+
&Help
&Справка
-
+
&About
&О программе
-
+
About &Qt
О &Qt
-
+
Quick &Reference Guide
Краткая &справка
-
+
Wiki
Вики
-
Hemingway
- Хемингуэй
+ Хемингуэй
-
+
Toggle Hemingway mode
Переключить режим Хемингуэя
-
Focus
- Фокус
+ Фокус
-
+
Toggle distraction free mode
Коряво! Нужно заменить на что-то другое.
Переключить режим концентрации
-
+
Toggle full screen mode
Переключить полноэкранный режим
@@ -958,17 +1014,17 @@
MarkdownEditor
-
+
Add word to dictionary
Добавить слово в словарь
-
+
Check spelling...
Проверить правописание...
-
+
No spelling suggestions found
Вариантов правописания не найдено
@@ -1001,234 +1057,291 @@
Плавающие окна
-
+
Matched Characters
Дополняемые символы
-
+
Display
Отображение
-
+
Show current time in full screen mode
Показывать текущее время в полноэкранном режиме
-
+
Hide menu bar in full screen mode
Скрывать меню в полноэкранном режиме
-
+
+ Rounded
+ Закруглённые уголки
+
+
+
+ Square
+ Прямоугольные грани
+
+
+
+ Interface style
+ Стиль интерфейса
+
+
+
File Saving
Сохранение файла
-
+
Auto save
Авто сохранение
-
+
Backup file on save
Резервная копия при сохранении
-
+
History
История
-
+
Remember file history
Запоминать историю файла
-
+
Tabulation
Табуляция
-
+
Insert spaces for tabs
Использовать пробелы для отступов
-
+
Tabulation width
Ширина табуляции
-
+
Styling
Стили
-
+
Sentence
Предложение
-
+
Current Line
Строка
-
+
Three Lines
Три строки
-
+
Paragraph
Абзац
-
+
+ Typewriter
+ Печатная машинка
+
+
+
Focus mode
Режим фокуса
-
+
Narrow
- Узкий
+ В связке со строкой "Ширина редактора" (какая?)
+ Узкая
-
+
Medium
- Средний
+ В связке со строкой "Ширина редактора" (какая?)
+ Средняя
-
+
Wide
- Широкий
+ В связке со строкой "Ширина редактора" (какая?)
+ Широкая
-
+
Full
- Полноразмерный
+ В связке со строкой "Ширина редактора" (какая?)
+ Полная
-
+
Editor width
Ширина редактора
-
+
Plain
Обычно
-
-
+
+
Italic
Курсивом
-
+
Fancy
Вычурно
-
+
Blockquote style
Стиль цитат
-
+
Underline
Подчеркиванием
-
+
Emphasis style
Выделение
-
+
Use large headings
Использовать большие заголовки
-
+
Highlight line breaks
- Отображать конец строки
+ Подсвечивать разрыв строки
-
+
Typing
Набор текста
-
+
Cycle bullet point markers
Зацикливать маркированные списки
-
+
Automatically match characters
Автоматически дополнять символы
-
+
Customize matched characters...
Настроить дополняемые символы...
-
+
Live spellcheck enabled
Проверять орфографию на лету
-
+
Language
Язык
-
+
Dictionary
Словарь
-
+
Right
Справа
-
+
Left
Слева
-
+
Window button layout
Расположение кнопок
-
+
Alternate row colors
Чередовать цвета строк
-
+
Enable desktop compositing effects
Использовать эффекты композиции рабочего стола
-
+
+ Auto-hide HUD windows when typing
+ Автоматически скрывать плавающие окна во время печати
+
+
+
+ Auto-hide HUD windows when previewing HTML
+ Автоматически скрывать плавающие окна при просмотре HTML
+
+
+
Opacity
Прозрачность
+ PreviewOptionsDialog
+
+
+ Preview Options
+ Настройки предпросмотра
+
+
+
+ Markdown Flavor
+ Вариант Markdown
+
+
+
+ Style Sheet
+ Таблицы стилей
+
+
+
+ Github (Default)
+ Github (по-умолчанию)
+
+
+
QObject
Export failed:
- Ошибка экспорта:
+ Ошибка экспорта:
@@ -1238,7 +1351,7 @@
Failed to execute command:
- Не удалось выполнить команду:
+ Не удалось выполнить команду:
@@ -1256,7 +1369,7 @@
Все
-
+
Null or empty file path provided for writing.
Получен пустой или несуществующий путь для записи файла.
@@ -1271,79 +1384,79 @@
Sundown не поддерживает формат %1.
-
+
The specified theme does not exist in the file system:
- Указанная тема не существует на диске:
+ Указанная тема не существует на диске:
-
+
The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
Указанная тема недоступна. Попробуйте перезапустить программу. Если проблема не исчезнет, пожалуйста, сообщите об ошибке разработчику.
-
+
Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
Не удалось удалить %1 из темы. Пожалуйста, попробуйте выставить права доступа на запись для файла.
-
+
'%1' already exists. Please choose another name.
«%1» уже существует. Пожалуйста, выберите другое имя.
-
+
'%1' theme already exists. Please choose another name.
Тема «%1»уже существует. Пожалуйста, выберите другое имя.
-
+
Failed to rename theme. Please check file permissions.
Не удалось переменовать тему. Пожалуйста, проверьте права на файл.
-
+
Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
Тема доступна только для чтения. Пожалуйста, попробуйте переименовать или установить права доступа на запись для файла.
-
+
Failed to remove old theme image. Please check file permissions.
Не удалось удалить старое изображение. Пожалуйста, проверьте права доступа.
-
+
The old theme image file could not be removed from the theme directory. Please check file permissions.
Невозможно удалить старый файл изображение из темы. Пожалуйста, проверьте права доступа.
-
+
Theme image file could not be copied to the theme directory. Please check file permissions.
Не удалось скопировать файл в директорию темы. Пожалуйста, проверьте права доступа.
-
+
Theme could not be saved to disk. Please check file permissions or try renaming the theme.
Не удалось созранить тему на диск. Пожалуйста, проверьте права доступа или попробуйте использовать другое имя.
-
+
Untitled 1
Без имени 1
-
+
Untitled %1
Без имени %1
-
-
-
+
+
+
Invalid or missing value for %1 provided.
Предоставлено неверное или отсутствующее значение для %1.
-
+
Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
Значение для %1 лежит вне интервала. Принимаются только значения между %2 и %3 (включительно).
@@ -1363,7 +1476,7 @@
Average WPM:
- В среднем, слов/мин:
+ В среднем (слов/мин):
@@ -1472,7 +1585,7 @@
Custom Style Sheets
- Ох уж эти обыгрывание аббревиатур... Ну, пусть будет так.
+ Ох уж эти обыгрывания аббревиатур... Ну, пусть будет так.
Собственные таблицы стилей
@@ -1503,7 +1616,7 @@
Don't worry! No files will be deleted from the hard disk. But are you sure you wish to remove the selected style sheet(s) from the list?
- Спокойно! Ни один файл не будет удалён с диска. Тем не менее, вы уверены, что хотите убрать выбранные таблицы стилей из списка?
+ Спокойно! Ни один файл не будет удалён с диска. Тем не менее, Вы уверены, что хотите убрать выбранные таблицы стилей из списка?
@@ -1513,7 +1626,7 @@
untitled
- без названия
+ без имени
@@ -1524,136 +1637,144 @@
Изменить тему
-
Rounded
- Закруглённые
+ Закруглённые
-
Square
- Прямоугольные
+ Прямоугольные
-
-
+
+
Stretch
Растянуть
-
-
+
+
Center
По центру
-
+
None
Нет
-
+
Tile
Замостить
-
+
Scale
Масштабировать
-
+
Zoom
Увеличить
-
+
Theme Name
Имя темы
-
+
Text Color
Цвет текста
-
+
Markup Color
Цвет разметки
-
+
Link Color
Цвет ссылок
-
+
+ Emphasis Color
+ Вариант: "Цвет курсива" ? Не совсем верно будет, так как заголовки тоже подразумеваются.
+ Цвет выделения
+
+
+
+ Block Text Color
+ Цвет блока текста
+
+
+
Spelling Error Color
Цвет орфографических ошибок
-
+
Text Area Background Color
Цвет области редактирования
-
+
Text Editor
Редактор
-
+
Background Image
Фоновое изображение
-
+
Background Color
Цвет фона
-
+
Editor Aspect
Формат редактора
-
Editor Corners
- Углы редактора
+ Углы редактора
-
+
Editor Opacity
Прозрачность редактора
-
+
Background
Фон
-
+
HUD Foreground Color
Плавающее окно (HUD) лишнее, так как опция отображается во вкладке HUD
Цвет текста
-
+
HUD Background Color
Плавающее окно (HUD) лишнее, так как опция отображается во вкладке HUD
Цвет фона
-
+
HUD
Плавающие окна
-
+
Unable to save theme.
Не удалось сохранить тему.
-
+
Failed to rename theme.
Не удалось переименовать тему.
Binary files /tmp/tmpPJ21F2/K3CpwYAwC0/ghostwriter-1.5.0+ds1/translations/ghostwriter_zh.qm and /tmp/tmpPJ21F2/NzCXbIcspO/ghostwriter-1.6.0/translations/ghostwriter_zh.qm differ
diff -Nru ghostwriter-1.5.0+ds1/translations/ghostwriter_zh.ts ghostwriter-1.6.0/translations/ghostwriter_zh.ts
--- ghostwriter-1.5.0+ds1/translations/ghostwriter_zh.ts 1970-01-01 00:00:00.000000000 +0000
+++ ghostwriter-1.6.0/translations/ghostwriter_zh.ts 2018-04-07 21:47:43.000000000 +0000
@@ -0,0 +1,1734 @@
+
+
+
+
+ AbstractStatisticsWidget
+
+
+ < 1m
+
+
+
+
+ < 1
+
+
+
+
+ 250 words per page
+ 250 文字原始页面
+
+
+
+ %1h %2m
+
+
+
+
+ %1m
+
+
+
+
+ DocumentManager
+
+
+ Open File
+ 打开文件
+
+
+
+ Could not open %1
+ 无法打开%1
+
+
+
+ Permission denied.
+ 你没有权限。
+
+
+
+ The document has been modified.
+ 该文件已被修改。
+
+
+
+ Discard changes?
+ 放弃更改?
+
+
+
+ Rename File
+ 重命名文件
+
+
+
+ Failed to rename %1
+ 无法重命名%1
+
+
+
+ Save File
+ 保存文件
+
+
+
+ Error saving %1
+ 保存%1时出错
+
+
+
+ The document has been modified by another program.
+ 该文件已被其他程序修改。
+
+
+
+ Would you like to reload the document?
+ 你想重新加载文件吗?
+
+
+
+
+ Could not read %1
+ 无法读取%1
+
+
+
+ opening %1
+ 打开%1中
+
+
+
+ File has been modified.
+ 文件已被修改。
+
+
+
+ %1 has been modified.
+ %1已被修改。
+
+
+
+ Would you like to save your changes?
+ 你想保存更改吗?
+
+
+
+ %1 is read only.
+ 文件 %1 是只读的。
+
+
+
+ Overwrite protected file?
+ 要覆盖受保护的文件吗?
+
+
+
+ Overwrite failed.
+ 覆盖失败。
+
+
+
+ Please save file to another location.
+ 请将文件保存到其他位置。
+
+
+
+ DocumentStatisticsWidget
+
+
+ Very Easy
+ 非常容易
+
+
+
+ Easy
+ 容易
+
+
+
+ Standard
+ 标准
+
+
+
+ Difficult
+ 困难
+
+
+
+ Very Difficult
+ 超难
+
+
+
+ Words:
+ 行数:
+
+
+
+ Characters:
+ 字符:
+
+
+
+ Sentences:
+ 句子:
+
+
+
+ Paragraphs:
+ 段落:
+
+
+
+ Pages:
+ 页数:
+
+
+
+ Complex Words:
+ 复合词:
+
+
+
+ Reading Time:
+ 阅读时间:
+
+
+
+ Reading Ease:
+ 易于阅读:
+
+
+
+ LIX Reading Ease
+ 阅读不易
+
+
+
+ Grade Level:
+ 年级水平:
+
+
+
+ Coleman-Liau Readability Index (CLI)
+ 科尔曼-凫可读性指数(CLI)
+
+
+
+ Kindergarten
+ 幼儿园
+
+
+
+ Rocket Science
+ 火箭科学(什么鬼翻译(╯‵□′)╯︵┻━┻)
+
+
+
+ College
+ 大学
+
+
+
+ ExportDialog
+
+
+ Export
+ 导出
+
+
+
+ Smart Typography
+ 智能排版
+
+
+
+ Export Options
+ 导出选项
+
+
+
+ Markdown Converter:
+ Markdown转换器:
+
+
+
+ exporting to %1
+ 导出到 %1
+
+
+
+ Export failed.
+ 导出失败.
+
+
+
+ FindDialog
+
+
+ Search for:
+ 搜索:
+
+
+
+ Replace with:
+ 用〇〇来代替:
+
+
+
+ Ignore case
+ 忽略大小写
+
+
+
+ Whole words only
+ 只允许整个词(暂时)
+
+
+
+ Regular expressions
+ 常用表达
+
+
+
+ Search up
+ 向上搜索
+
+
+
+ Search down
+ 向下搜索
+
+
+
+ &Find
+ 查找(&F)
+
+
+
+ &Replace
+ 替换(&R)
+
+
+
+ Replace &All
+ 替换全部(&A)
+
+
+
+ Find
+ 查找
+
+
+
+ Replace
+ 替换
+
+
+
+ Question
+ 问题
+
+
+
+ Replace %n instance(s)?
+
+ 替换 %n 实例?
+
+
+
+
+
+ Sorry
+ 抱歉
+
+
+
+
+ Phrase not found.
+ 找不到短语。
+
+
+
+ HtmlPreview
+
+
+ HTML Preview
+ HTML预览
+
+
+
+ ImageButton
+
+
+ Open Image
+ 打开图片
+
+
+
+ Images(%1)
+ 图片(%1)
+
+
+
+ LocaleDialog
+
+
+ Set Application Language
+ 设置软件语言
+
+
+
+ The translations folder is missing.
+ 翻译文件丢失。
+
+
+
+ Please reinstall this application for more language options.
+ 请重新安装此应用程序以获取更多的语言选项。
+
+
+
+ MainWindow
+
+
+ Outline
+ 大纲
+
+
+
+ # Heading 1
+ # 标题 1
+
+
+
+ ## Heading 2
+ ## 标题 2
+
+
+
+ ### Heading 3
+ ### 标题 3
+
+
+
+ #### Heading 4
+ #### 标题 4
+
+
+
+ ##### Heading 5
+ ##### 标题 5
+
+
+
+ ###### Heading 6
+ ###### 标题 6
+
+
+
+ *Emphasis* _Emphasis_
+ *重点* _重点_
+
+
+
+ **Strong** __Strong__
+ **强调** __强调__
+
+
+
+ 1. Numbered List
+ 1. 有序列表
+
+
+
+ * Bullet List
+ * 无序列表
+
+
+
+ + Bullet List
+ + 无序列表
+
+
+
+ - Bullet List
+ - 无序列表
+
+
+
+ > Block Quote
+ > 块引用
+
+
+
+ `Code Span`
+ `代码段`
+
+
+
+ ``` Code Block
+ ```代码块
+
+
+
+ [Reference Link][ID]
+ [参考链接][ID]
+
+
+
+ ![Image][./image.jpg "Title"]
+ ![图片][[./image.jpg "Title"]
+
+
+
+ --- *** ___ Horizontal Rule
+ --- *** ___ 分割线
+
+
+
+ Cheat Sheet
+ 备忘录
+
+
+
+ Could not create file %1. Check permissions.
+ 无法创建文件 %1,请检查权限。
+
+
+
+ Insert Image
+ 插入图像
+
+
+
+ Images
+ 图片
+
+
+
+ All Files
+ 全部文件
+
+
+
+ Failed to open Quick Reference Guide.
+ 打开快速参考指南失败。
+
+
+
+ Quick Reference Guide
+ 快速参考指南
+
+
+
+ About %1
+ 关于 %1
+
+
+
+ Please restart the application for changes to take effect.
+ 为了使更改生效,请重新启动应用程序。
+
+
+
+ &File
+ 文件(&F)
+
+
+
+ &New
+ 新建(&N)
+
+
+
+ &Open
+ 打开(&O)
+
+
+
+ Reopen Closed File
+ 重新打开已关闭的文件
+
+
+
+ Clear Menu
+ 清除菜单
+
+
+
+ &Save
+ 保存(&S)
+
+
+
+ Save &As...
+ 保存为(&A)...
+
+
+
+ Open &Recent...
+ 打开最近的文件(&R)...
+
+
+
+ [Link](http://url.com "Title")
+ [链接](http://url.com "Title")
+
+
+
+ [ID]: http://url.com "Reference Definition"
+ [ID]: http://url.com "参考链接"
+
+
+
+ Document Statistics
+ 文档统计
+
+
+
+ Session Statistics
+ 会话统计
+
+
+
+ <p>Copyright © 2014-2018 wereturtle</b><p>You may use and redistribute this software under the terms of the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License Version 3</a>.</p><p>Visit the official website at <a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>.</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>I am also deeply indebted to <a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>, the author of <a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>, for the inspiration he provided in creating such a beautiful Markdown editing tool.</p>
+ 不知道为什么翻译没用啊!!!
+QAQ
+ <p>版权声明; 2014-2018 wereturtle</b><p>您可以根据<a href="http://www.gnu.org/licenses/gpl.html">GNU通用公共许可证版本3</a>的条款使用和重新分发此软件。</p><p>此软件的官方网站在<a href="http://github.com/wereturtle/ghostwriter">http://github.com/wereturtle/ghostwriter</a>。</p><p>Special thanks and credit for reused code goes to</p><p><a href="mailto:graeme@gottcode.org">Graeme Gott</a>, author of <a href="http://gottcode.org/focuswriter/">FocusWriter</a><br/>Dmitry Shachnev, author of <a href="http://sourceforge.net/p/retext/home/ReText/">Retext</a><br/><a href="mailto:gabriel@teuton.org">Gabriel M. Beddingfield</a>, author of <a href="http://www.teuton.org/~gabriel/stretchplayer/">StretchPlayer</a><br/><p>我也非常感激<a href="mailto:w.vollprecht@gmail.com">Wolf Vollprecht</a>他的灵感<a href="http://uberwriter.wolfvollprecht.de/">UberWriter</a>,他为我创建这样一个漂亮的Markdown编辑工具提供了灵感。</p>
+
+
+
+ %Ln word(s)
+
+ %n 行
+
+
+
+
+ R&ename...
+ 重命名(&E)...
+
+
+
+ Re&load from Disk...
+ 从硬盘中重新加载(&L)...
+
+
+
+ Print Pre&view
+ 打印预览(&V)
+
+
+
+ &Print
+ 打印(&P)
+
+
+
+ &Export
+ 导出(&E)
+
+
+
+ &Quit
+ 退出(&Q)
+
+
+
+ &Edit
+ 编辑(&E)
+
+
+
+ &Undo
+ 撤消(&U)
+
+
+
+ &Redo
+ 恢复(&R)
+
+
+
+ Cu&t
+ 剪切(&T)
+
+
+
+ &Copy
+ 复制(&C)
+
+
+
+ &Paste
+ 粘贴(&P)
+
+
+
+ Copy &HTML
+ 复制 &HTML
+
+
+
+ &Insert Image...
+ 插入图片(&I)...
+
+
+
+ &Find
+ 搜索(&F)
+
+
+
+ Rep&lace
+ 替换(&L)
+
+
+
+ &Spell check
+ 拼写检查(&S)
+
+
+
+ For&mat
+ 格式(&M)
+
+
+
+ &Bold
+ 粗体(&B)
+
+
+
+ &Italic
+ 斜体(&I)
+
+
+
+ &HTML Comment
+ &HTML注释
+
+
+
+ I&ndent
+ 缩进(&N)
+
+
+
+ &Unindent
+ 取消缩进(&U)
+
+
+
+ Block &Quote
+ 块引用(&Q)
+
+
+
+ &Strip Block Quote
+ 代码块引用(&S)
+
+
+
+ &* Bullet List
+ &* 无序列表
+
+
+
+ &- Bullet List
+ &- 无序列表
+
+
+
+ &+ Bullet List
+ &+ 无序列表
+
+
+
+ 1&. Numbered List
+ 1&. 有序列表
+
+
+
+ 1&) Numbered List
+ 1&) 有序列表
+
+
+
+ &Task List
+ 添加TODO(&T)
+
+
+
+ Toggle Task(s) &Complete
+ TODO完成(&C)
+
+
+
+ &View
+ 查看(&V)
+
+
+
+ &Full Screen
+ 全屏(&F)
+
+
+
+ &Preview in HTML
+ 在HTML中预览(&P)
+
+
+
+ &Outline HUD
+ 大纲HUD(&O)
+
+
+
+ &Cheat Sheet HUD
+ 备忘单HUD(&C)
+
+
+
+ &Document Statistics HUD
+ 文档统计HUD(&D)
+
+
+
+ &Session Statistics HUD
+ 会话统计HUD(&S)
+
+
+
+
+ Hide Open &HUD Windows
+ 隐藏打开HUD窗口(&H)
+
+
+
+ Increase Font Size
+ 增加字体大小
+
+
+
+ Decrease Font Size
+ 缩小字体大小
+
+
+
+ &Settings
+ 设置(&S)
+
+
+
+ Themes...
+ 主题...
+
+
+
+ Font...
+ 字体...
+
+
+
+ Style Sheets...
+ 样式表...
+
+
+
+ Preview Options...
+ 预览选项...
+
+
+
+ Preferences...
+ 首选项(偏好)...
+
+
+
+ Preview Options
+ 预览选项
+
+
+
+ Export
+ 导出
+
+
+
+ Copy HTML
+ 复制 HTML
+
+
+
+
+ Hide Open HUD Windows
+ 显示打开HUD窗口
+
+
+
+ Toggle Live HTML Preview
+ 切换为实时HTML预览
+
+
+
+ Show Open &HUD Windows
+ 显示打开HUD窗口(&H)
+
+
+
+ Show Open HUD Windows
+ 显示打开HUD窗口
+
+
+
+ Application Language...
+ 软件的语言...
+
+
+
+ Stri&kethrough
+ 删除线(&K)
+
+
+
+ &Help
+ 帮助(&H)
+
+
+
+ &About
+ 关于(&A)
+
+
+
+ About &Qt
+ 关于 &Qt
+
+
+
+ Quick &Reference Guide
+ 快速参考指南(&R)
+
+
+
+ Wiki
+ Wiki
+
+
+
+ Toggle Hemingway mode
+ 切换到海明威模式
+
+
+
+ Toggle distraction free mode
+ 切换到专注模式
+
+
+
+ Toggle full screen mode
+ 切换全屏模式
+
+
+
+ MarkdownEditor
+
+
+ Add word to dictionary
+ 将词添加到词典
+
+
+
+ Check spelling...
+ 检查拼写...
+
+
+
+ No spelling suggestions found
+ 没有找到拼写建议
+
+
+
+ PreferencesDialog
+
+
+ Preferences
+ 首选项(偏好)
+
+
+
+ General
+ 普通
+
+
+
+ Editor
+ 编辑
+
+
+
+ Spell Check
+ 拼写检查
+
+
+
+ HUD
+
+
+
+
+ Matched Characters
+ 匹配的字符
+
+
+
+ Display
+ 显示
+
+
+
+ Show current time in full screen mode
+ 全屏模式时,显示当前时间
+
+
+
+ Hide menu bar in full screen mode
+ 在全屏模式隐藏菜单栏
+
+
+
+ Rounded
+ 圆角
+
+
+
+ Square
+ 矩形
+
+
+
+ Interface style
+ 界面风格
+
+
+
+ File Saving
+ 文件保存
+
+
+
+ Auto save
+ 自动保存
+
+
+
+ Backup file on save
+ 备份文件保存
+
+
+
+ History
+ 历史
+
+
+
+ Remember file history
+ 记住上次打开的文件
+
+
+
+ Tabulation
+ 制表
+
+
+
+ Insert spaces for tabs
+ 将Tab替换为空格
+
+
+
+ Tabulation width
+ 空格宽度
+
+
+
+ Styling
+ 样式
+
+
+
+ Sentence
+ 句子
+
+
+
+ Current Line
+ 当前行
+
+
+
+ Three Lines
+ 三行
+
+
+
+ Paragraph
+ 段落
+
+
+
+ Typewriter
+ 打字机
+
+
+
+ Focus mode
+ 对焦(视觉)模式
+
+
+
+ Narrow
+ 狭窄
+
+
+
+ Medium
+ 中等
+
+
+
+ Wide
+ 宽
+
+
+
+ Full
+ 全部
+
+
+
+ Editor width
+ 编辑器宽度
+
+
+
+ Plain
+ 朴素
+
+
+
+
+ Italic
+ 斜体
+
+
+
+ Fancy
+ 幻想
+
+
+
+ Blockquote style
+ 块引用风格
+
+
+
+ Underline
+ 强调
+
+
+
+ Emphasis style
+ 重点风格
+
+
+
+ Use large headings
+ 使用大标题
+
+
+
+ Highlight line breaks
+ 突出显示换行符
+
+
+
+ Typing
+ 打字
+
+
+
+ Cycle bullet point markers
+ 循环项目符号点标记
+
+
+
+ Automatically match characters
+ 自动匹配字符
+
+
+
+ Customize matched characters...
+ 自定义匹配的字符...
+
+
+
+ Live spellcheck enabled
+ 启用实时拼写检查
+
+
+
+ Language
+ 语言
+
+
+
+ Dictionary
+
+
+
+
+ Right
+ 右
+
+
+
+ Left
+ 左
+
+
+
+ Window button layout
+ 窗口按钮布局
+
+
+
+ Alternate row colors
+
+
+
+
+ Enable desktop compositing effects
+ 启用桌面合成效果
+
+
+
+ Auto-hide HUD windows when typing
+ 打字时自动隐藏HUD窗口
+
+
+
+ Auto-hide HUD windows when previewing HTML
+ 预览HTML时自动隐藏HUD窗口
+
+
+
+ Opacity
+ 不透明度
+
+
+
+ PreviewOptionsDialog
+
+
+ Preview Options
+ 预览选项
+
+
+
+ Markdown Flavor
+ markdown 风格
+
+
+
+ Style Sheet
+ 样式表
+
+
+
+ Github (Default)
+ Github (默认)
+
+
+
+ QObject
+
+
+
+ Export failed:
+ 导出失败:
+
+
+
+ %1 format is not supported by this processor.
+ 此处理器不支持%1格式。
+
+
+
+ Failed to execute command:
+ 无法执行命令:
+
+
+
+ Markdown
+
+
+
+
+ Text
+ 文字
+
+
+
+ All
+ 全部
+
+
+
+ Null or empty file path provided for writing.
+ 为写入提供空或空文件路径。
+
+
+
+ Export to HTML is not supported with this processor.
+ 此处理器不支持导出到HTML。
+
+
+
+ %1 format is unsupported by the Sundown processor.
+ Sundown 处理器不支持 %1 格式。
+
+
+
+ The specified theme does not exist in the file system:
+ 指定的主题在文件系统中不存在:
+
+
+
+ The specified theme is not available. Try restarting the application. If problem persists, please file a bug report.
+ 指定的主题不可用,请尝试重新启动应用程序。如果问题仍然存在,请提交错误报告。
+
+
+
+ Could not delete %1 from theme. Please try setting the theme file permissions to be writeable.
+ 无法删除来自于 %1 的主题,请尝试设置主题文件的权限为可写。
+
+
+
+ '%1' already exists. Please choose another name.
+ '%1' 已存在,请选择其他的名字。
+
+
+
+ '%1' theme already exists. Please choose another name.
+ '%1' 主题已存在,请选择其他的名字。
+
+
+
+ Failed to rename theme. Please check file permissions.
+ 重命名主题失败,请检查文件是否可写。
+
+
+
+ Theme is read-only. Please try renaming the theme, or setting the theme file to be writable.
+ 这个主题是只读的。请尝试给重命名主题,或者将主题文件设置为可写。
+
+
+
+ Failed to remove old theme image. Please check file permissions.
+ 移除主题图片失败,请检查文件是否可写。
+
+
+
+ The old theme image file could not be removed from the theme directory. Please check file permissions.
+ 无法从主题目录中删除旧的主题图像文件。 请检查文件权限。
+
+
+
+ Theme image file could not be copied to the theme directory. Please check file permissions.
+ 无法将主题图像文件复制到主题目录。 请检查文件权限。
+
+
+
+ Theme could not be saved to disk. Please check file permissions or try renaming the theme.
+ 无法将主题保存到磁盘。 请检查文件权限或尝试重命名主题。
+
+
+
+ Untitled 1
+ 未命名 1
+
+
+
+ Untitled %1
+ 未命名 %1
+
+
+
+
+
+ Invalid or missing value for %1 provided.
+ 数值 %1 是无效的。
+
+
+
+ Value for %1 is out of range. Valid values are between %2 and %3, inclusive.
+ %1 的值超出范围。有效值介于 %2 和 %3 之间, 包括在内。
+
+
+
+ SessionStatisticsWidget
+
+
+ Words Written:
+ 感谢匿名者提供的翻译
+ 已写字数:
+
+
+
+ Pages Written:
+
+
+
+
+ Average WPM:
+ 编辑用时:
+
+
+
+ Total Time:
+ 已写页数:
+
+
+
+ Idle Time:
+ 总时间:
+
+
+
+ SimpleFontDialog
+
+
+ Family
+ 字体
+
+
+
+ Size
+ 大小
+
+
+
+ AaBbCcXxYyZz
+ AaBbCcXxYyZz这里是预览字体
+
+
+
+ Preview
+ 预览
+
+
+
+ SpellChecker
+
+
+ Check Spelling
+ 检查拼写
+
+
+
+ &Add
+ 加入(&A)
+
+
+
+ &Ignore
+ 忽略(&I)
+
+
+
+ I&gnore All
+ 忽略所有(&G)
+
+
+
+ &Change
+ 更改(&C)
+
+
+
+ C&hange All
+ 全部更改(&H)
+
+
+
+ Not in dictionary:
+ 没有在字典里:
+
+
+
+ Change to:
+ 更改为:
+
+
+
+ Checking spelling...
+ 检查拼写...
+
+
+
+ Cancel
+ 取消
+
+
+
+ Please wait
+ 少女祈祷中...
+
+
+
+ Continue checking at beginning of file?
+ 继续检查文件的开头?
+
+
+
+ Spell check complete.
+ 拼写检查完成。
+
+
+
+ StyleSheetManagerDialog
+
+
+ Custom Style Sheets
+ 自定义样式表
+
+
+
+ Add new style sheet
+ 添加新的样式表
+
+
+
+ Remove selected style sheet(s) from list. (No files will be deleted from the hard disk.)
+ 从列表中删除选定的样式表。(放心,没有文件会受到物理伤害。)
+
+
+
+ Select CSS File
+ 选择CSS文件
+
+
+
+ CSS
+ CSS
+
+
+
+ All
+ 全部
+
+
+
+ Don't worry! No files will be deleted from the hard disk. But are you sure you wish to remove the selected style sheet(s) from the list?
+ 不用担心!没有文件会受到物理伤害。但是您确定要从列表中删除选定的样式表吗?
+
+
+
+ TextDocument
+
+
+
+
+ untitled
+ 无标题
+
+
+
+ ThemeEditorDialog
+
+
+ Edit Theme
+ 编辑器主题
+
+
+
+
+ Stretch
+ 延伸
+
+
+
+
+ Center
+ 中心
+
+
+
+ None
+ 无
+
+
+
+ Tile
+ 标题
+
+
+
+ Scale
+ 比例
+
+
+
+ Zoom
+ 缩放
+
+
+
+ Theme Name
+ 主题名字
+
+
+
+ Text Color
+ 文字颜色
+
+
+
+ Markup Color
+ MD标记颜色
+
+
+
+ Link Color
+ 链接颜色
+
+
+
+ Emphasis Color
+ 强调颜色
+
+
+
+ Block Text Color
+ 块文字颜色
+
+
+
+ Spelling Error Color
+ 拼写错误的颜色
+
+
+
+ Text Area Background Color
+ 文本区域背景颜色
+
+
+
+ Text Editor
+ 文本编辑器
+
+
+
+ Background Image
+ 背景图片
+
+
+
+ Background Color
+ 背景颜色
+
+
+
+ Editor Aspect
+ 编辑器外观
+
+
+
+ Editor Opacity
+ 编辑器不透明度
+
+
+
+ Background
+ 背景
+
+
+
+ HUD Foreground Color
+ HUB 突出部分的颜色
+
+
+
+ HUD Background Color
+ HUD 背景部分的颜色
+
+
+
+ HUD
+ HUD(平视显示器)
+
+
+
+ Unable to save theme.
+ 未能保存主题。
+
+
+
+ Failed to rename theme.
+ 从命名主题失败。
+
+
+
+ ThemeSelectionDialog
+
+
+ Themes
+ 主题
+
+
+
+ Edit...
+ 编辑...
+
+
+
+ Unable to load theme.
+ 无法加载主题。
+
+
+
+ Cannot delete theme.
+ 无法删除主题。
+
+
+
+ Sorry, this is a built-in theme that cannot be deleted.
+ 对不起,您无法删除的内置主题。
+
+
+
+ Are you sure you want to permanently delete the '%1' theme?
+ 您确定要永久删除'%1'主题吗?
+
+
+
+ Failed to delete theme.
+ 无法删除主题。
+
+
+
+ Cannot edit theme.
+ 无法编辑主题。
+
+
+
+ Sorry, this is a built-in theme that cannot be edited.
+ 对不起,您无法编辑的内置主题。
+
+
+