Commit graph

1072 commits

Author SHA1 Message Date
Youness Alaoui f9b181ff67 spellchecker: Improve support for symspellpy
Add support for 6.3.8 which has delete_dictionary_entry and do not use gzipped
pickle. Also give higher priority to symspellpy vs pyspellchecker.
List symspellpy dictionaries by order of cached vs non-cached.
symspellpy 6.3.8 is now the minimum version required and add support for showing
that information to the user.
Also add support for spellcheck libraries that are installed but without dicts.
2019-04-30 09:54:31 -06:00
Youness Alaoui e1edccc7d3 spellchecker: Add SymSpellPy support
SymSpell is a great spellchecker which works a lot faster than
pyspellchecker for finding suggestions but is a bit slow at
loading dictionaries (about 15 seconds initially, 2 seconds if
using a cached version).
SymSpell also doesn't come with dictionaries, so the code is currently
using dictionaries from pyspellchecker, so if pyspellchecker isn't
installed, then the user won't see any available dictionaries.
Eventually, would need to have an interface for people to manage
dictionaries for it.
2019-04-30 09:54:31 -06:00
Youness Alaoui e1b063a953 spellchecker: improve custom dictionary support
Improves the custom dictionary support by making it more generic
and moving it to the base class. Also makes PyEnchant uses a custom
PWL (Personal Word List) file within manuskript's resources directory
and made pyspellchecker detect available languages automatically.
2019-04-30 09:54:31 -06:00
Youness Alaoui 20c5586a6c Add support for pyspellchecker as an alternative to PyEnchant
This modifies the Spellchecker abstraction to add a new dictionary support, with
support for pyspellchecker. It also changes the main UI so that multiple libraries
can be supported and dictionaries provided to the user. The custom dictionary of
pyspellchecker has to be handled manually, and the performance and words of this
library isn't on par with PyEnchant, but at least it works with 64 bits.

Fixes #505
2019-04-30 09:54:31 -06:00
Youness Alaoui d0f02cb2a7 Add a Spellchecker abstraction layer and clean up code
This is in preparation for adding support for additional spellchecking libraries
other than PyEnchant which seems to be unmaintained and does not build in
Windows 64 bit.
2019-04-30 09:54:31 -06:00
Jakub Rey 95c51ce3c9
Translated using Weblate (Polish)
Currently translated at 80.4% (687 of 854 strings)

Translation: Manuskript/Translations
Translate-URL: https://hosted.weblate.org/projects/manuskript/translations/pl/
2019-04-25 01:24:54 +02:00
Jan Wester 0238ccec7b Fixed #549 and refactored the image tooltip also
Issue #549 was caused because the request and reply object urls are not
guaranteed to be the same. Redirects are the most common cause, but a
malformed URL apparently also qualifies. We now make sure to look at the
original request.

Because the code confused me while I was working on it, I decided to
refactor and document it in order to understand what was going on. I am
glad I did: I found another crashing bug involving the rapid-firing of
tooltip requests, and the processing dict never had its entries removed
either, leading to a (very slow) memory leak over time.

All is good in the world of image tooltips now.
2019-04-23 12:25:39 -06:00
bepolymathe a5a2b3c963
Translated using Weblate (French)
Currently translated at 91.9% (785 of 854 strings)

Translation: Manuskript/Translations
Translate-URL: https://hosted.weblate.org/projects/manuskript/translations/fr/
2019-04-18 09:04:56 +02:00
bepolymathe fc328f51e5
Translated using Weblate (French)
Currently translated at 89.9% (768 of 854 strings)

Translation: Manuskript/Translations
Translate-URL: https://hosted.weblate.org/projects/manuskript/translations/fr/
2019-04-15 22:04:57 +02:00
Hosted Weblate f2b5839d42
Merge branch 'origin/develop' into Weblate. 2019-04-11 19:03:55 +02:00
Acid147 2b4943c36b Fix typo 2019-04-11 11:02:18 -06:00
Michal Čihař 39f1429be4
Translated using Weblate (Dutch)
Currently translated at 92.4% (789 of 854 strings)

Translation: Manuskript/Translations
Translate-URL: https://hosted.weblate.org/projects/manuskript/translations/nl/
2019-04-11 08:04:47 +02:00
Pedro Albuquerque a3f0fc73e3
Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (855 of 855 strings)

Translation: Manuskript/Translations
Translate-URL: https://hosted.weblate.org/projects/manuskript/translations/pt_PT/
2019-04-06 22:04:47 +02:00
bart deruyter d168f3aff2
Translated using Weblate (Dutch)
Currently translated at 92.4% (789 of 854 strings)

Translation: Manuskript/Translations
Translate-URL: https://hosted.weblate.org/projects/manuskript/translations/nl/
2019-04-06 22:04:46 +02:00
Curtis Gedak f6293ca3d9 ========== manuskript-0.9.0 ========== 2019-04-04 10:34:25 -06:00
Curtis Gedak 362673ec21 Update copyright year 2019-04-04 10:33:08 -06:00
Curtis Gedak 5149360fc0 Add import capability to feature list in README.md 2019-04-04 10:19:49 -06:00
Curtis Gedak fbbdead43e Add new language translations to the Settings window 2019-04-04 10:08:17 -06:00
Curtis Gedak a79169d8ab Update all language translation source .ts files
Update the language translation source '.ts' files with the
translatable strings in the source code with the following command:

$ make translation

This effectively runs the following command:

$ pylupdate5 -noobsolete i18n/manuskript.pro
2019-04-04 10:01:08 -06:00
Curtis Gedak 62e8a5a17d Compile all language translation updates into respective .qm files
After updating the '.ts' translation source files from weblate,
compile all of the language translations into '.qm' files.

This was done with the following command:

$ make i18n

This effectively runs the 'lrelease' command on each '.ts' file.  For
example:

$ lrelease i18n/manuskript_es.ts
2019-04-04 09:58:43 -06:00
Curtis Gedak 80850487a1 Add all current weblate languages to i18n/manuskript.pro 2019-04-04 09:56:03 -06:00
Curtis Gedak e5919485c1 Merge remote-tracking branch 'weblate/develop' into develop
Merge the weblate language translations with the following commands:

    git remote update weblate
    git checkout develop
    git merge weblate/develop
2019-04-04 09:42:43 -06:00
Youness Alaoui 5a9c82a03a fullscreen: Rework panel 'addDisplay' API and improve top panel Path UX
The 'displays' system of panels is now changed into simply a settings system
where settings can be associated to widgets. The new API is :
addWidgetSetting, addSetting and setSettingCallback.

The top panel was reworked to have the settings appear in the order of the
widgets, and the path/title choice was changed into a Title widget with a
"Title: Show Full Path" setting.
2019-04-02 11:42:25 -06:00
Youness Alaoui 156e2d0067 fullscreen: Add a auto-show/hide progress setting.
Realizing that the show/hide progress was being ignored if we navigate to a
scene without a goal set. Also, if we go fullscreen on a scene without a goal
then navigate to a scene with one, the progress wouldn't get shown. Adding the
"Auto Show/Hide" setting fixes the issue with all use cases.
2019-04-02 11:42:25 -06:00
Youness Alaoui 8900a0ed3f fullscreen: Change navigation/new-document layout
Left-align the navigation and new-document buttons in the top panel to
prevent them from moving around when changing scenes.
2019-04-02 11:42:25 -06:00
Youness Alaoui a27a1f399a Adding navigation support to fullscreen editor
This makes the fullscreen editor much more powerful in terms of navigating
through chapters and scenes. This should make issue #234 users happy and
fix #444.

Top panel now has left/right arrows to navigate through the scenes. It will
automatically find the next/previous text item and display it, navigating through
the outline tree.

There's also a "New document" icon which will create a new text entry immediately
after the current one and switch to it.

Navigation can also be done using Alt+Page-Up, Alt+Page-Down or Alt+Left and Alt+right
shortcuts (Fixing #444).

There's now also the option between Title or Path for the top panel, if Path is chosen
then the full path of the scene is displayed and clicking on the scene or parent items
opens a menu to quickly switch to the selected chapter/scene. Selecting a folder will
automatically display the first text entry available in that folder.
2019-04-02 11:42:25 -06:00
Youness Alaoui 62b225e22c Fullscreen: Add scene title to top panel 2019-04-02 11:42:25 -06:00
Youness Alaoui 5d0fdb7a80 fullscreen: Add option to remove spellcheck button from top panel 2019-04-02 11:42:25 -06:00
Youness Alaoui 9312427e13 Add clock widget to the bottom panel and add setting for showing seconds
The bottom panel now has a clock widget, and the myPanel has a addSetting method
in order to add non-widget settings to the popup menu.
2019-04-02 11:42:25 -06:00
Youness Alaoui 58ab998ad9 Add ability to save fullscreen panel settings
This includes the auto-hide of each panel as well as the shown/hidden status
of each of the displays. Now that it's consistent, it makes it so much more useful.
2019-04-02 11:42:25 -06:00
Youness Alaoui 932550be89 fullscreen: Add 'displays' to the bottom panel that can be shown/hidden.
This is an experimental idea. We can add to a myPanel a list of widgets to show/hide
if the user wants to, via the context menu. This can be very useful for a user who
wants to disable auto-hide for the bottom panel but remove the theme selector which
can be useless to have open permanently.

This is the first step in fixing #234. Would need the auto-hide and the displays
configurations to be saved in settings though before it can become usable.
2019-04-02 11:42:25 -06:00
Curtis Gedak 7f1671db0c Change snap makefile target to snappkg and cleanup whitespace 2019-04-02 09:45:01 -06:00
Tom Wardill e60d2a16ea Add makefile command
Fix whitespace stripping
2019-04-02 09:39:51 -06:00
Tom Wardill f45ec49d36 Add snapcraft.yaml and associated desktop support files 2019-04-02 09:39:51 -06:00
Youness Alaoui 4a947a95ac Add support for IPython Jupyter QT Console as a debugging aid
If manuskript is launched with its last argument set to "--console" an
interactive console opens up to help debug the application.
The IPython, qtconsole and matplotlib libraries must be installed for it
to work and they won't get imported unless the argument is passed to the app.
2019-03-29 10:37:53 -06:00
Youness Alaoui 7c8458b0da Fix color scheme of fullscreen editor
Color scheme was inverted if foreground was transparent, bug and fix provided
by @tildagail [1] and the text on the left side panel was ignoring text color
settings, making it unreadable in dark themes, as reported by @worstje in #527

[1] https://github.com/olivierkes/manuskript/issues/527#issuecomment-469578130
2019-03-29 10:22:55 -06:00
Jan Wester 33ac127173 Directory entries in ZIP break loading code
While tackling issue #529, I stumbled across the odd behaviour that
re-compressing the archive with 7-Zip broke what should be a valid
Manuskript project.

After investigation it turned out that the code that loads the texts
sensibly expects there to only be files tracked in the files dictionary.

It is completely valid for a zip file to contain entries describing the
contained directories. The logical fix is to simply avoid adding these
directory entries to our files dictionary in the first place.
2019-03-12 14:44:51 -06:00
Jan Wester dd56797cd7 Build manuskript.exe with the correct icon
Making sure that manuskript.exe builds with the correct icon means not
only that any shortcuts created to the file have the proper icon, but
also that we are rid of the generic PyInstaller icon we have been
shipping until now. Hurrah!

Note that relative paths do not seem to work for icon files because
PyInstaller tries to look for them in the build directory. To work
around this problem, we explicitly join the relative path on the
SPECPATH constant which seems to satisfy PyInstaller well enough.
2019-03-08 09:41:56 -07:00
Jan Wester 542a14cd5e Added Windows Icon file
Despite the existence of a logo, Manuskript lacks an icon file that can
be used on Windows operating systems. This new icon file was created
based on the existing PNG files for 16px, 32px, 64px, 128px and 256px.
2019-03-08 09:41:56 -07:00
Youness Alaoui 143500b296 Add ability to add new background images through UI.
The Cork background and fullscreen theme backgrounds images can now be added
by using the "+" icon from the combobox. Once a file is added, the combobox
is repopulated and the new image is selected.

Note on line 871, in updateThemeBackground, there was a bug where it was using
self.cmbCorkImage instead of self.cmbThemeBackgroundImage

Fixes #399
2019-03-07 10:43:35 -07:00
Abdulrahman ☕️ 8828c0006e
Translated using Weblate (Arabic (Saudi Arabia))
Currently translated at 6.8% (57 of 836 strings)

Translation: Manuskript/Translations
Translate-URL: https://hosted.weblate.org/projects/manuskript/translations/ar_SA/
2019-03-06 19:12:53 +01:00
Abdulrahman ☕️ efbfe7d8b4
Added translation using Weblate (Arabic (Saudi Arabia)) 2019-03-05 17:34:30 +01:00
Youness Alaoui a6942b7923 Fix crash when right-clicking twice on fullscreen panel
If you right click once on the fullscreen panel and the context menu pop up
then you right click again somewhere else on the panel *while the previous
context menu is still visible* then it will cause a crash with :
"Windows fatal exception: access violation"
It seems to be caused by a crash in the QT event loop, trying to delete the
existing QMenu within an event handler.
2019-02-28 10:58:23 -07:00
Youness Alaoui 3f217257c4 Fix background of popup menus that was transparent (black)
In the properties view, the context menu on the title line would be black
making its content unreadable. Same in the filter line of the "Set Custom icon"
window on the outline's context menu.
2019-02-27 10:49:05 -07:00
Curtis Gedak 4fdacc24f7 Ensure text file open methods use utf-8 encoding
Several crashes were encountered opening files on operating systems
that do not default to UTF-8 encoding, such as Windows.  In each case
the project file appears to have become corrupted.  Because the only
reports to date have been on Windows, attempt to fix by specifying
utf-8 encoding for all text file open methods.

See issues #331, #470, and #502.
2019-02-27 09:30:16 -07:00
Youness Alaoui 7928ea2796 Fix corkView background image on Windows
Windows path to the image has '\' path separator instead of '/' which makes
the stylesheet fail. Background images don't appear and console gets spammed with :
Could not parse stylesheet of object corkView(0x27248eb6900, name = "corkView")
2019-02-26 13:25:30 -07:00
Youness Alaoui c3c9eef415 Do not default spellcheck to True for new editor views
default spellcheck to the settings value instead. Otherwise any new editor tab
will have spellcheck enabled regardless of setting.

Fixes #474
2019-02-25 12:58:00 -07:00
Youness Alaoui 84d0979ffb Set editor theme stylesheet to QTextEdit only.
This prevents any child widget from inheriting the same stylesheet,
more specifically, the context menu of the full screen editor will now
appear normal instead of being black text on black background, which made
it unreadable.

Fixes #440
2019-02-25 11:15:16 -07:00
Youness Alaoui 4a9937f041 Do not use a lambda function in the fullScreenEditor's myScrollBar timer signal
The lambda function will keep a reference to the scrollbar python object preventing it
from getting destroyed when the QScrollbar is destroyed. This causes the underlying
QT widget to be freed while the python object still exists, therefore the timer itself
doesn't get stopped/cleaned, so the timer will get called and cause a crash with :
"RuntimeError: Wrapped C/C++ object of type myScrollbar has been deleted"

To reproduce, press F11 repeatedly while scrolling.
2019-02-25 10:22:48 -07:00
Allan Nordhøy 2b378e1ba7
Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.2% (813 of 836 strings)

Translation: Manuskript/Translations
Translate-URL: https://hosted.weblate.org/projects/manuskript/translations/nb_NO/
2019-02-21 00:18:27 +01:00