Commit graph

474 commits

Author SHA1 Message Date
Curtis Gedak fbbdead43e Add new language translations to the Settings window 2019-04-04 10:08:17 -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
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
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
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
Youness Alaoui c7605b5819 Don't crash if a typo is made in the exporter's regular expression.
When a regexp error is thrown, cancel the export and show an info dialog
with the error message to the user. Fixes #488
2019-02-15 12:49:22 -07:00
Curtis Gedak baeb5f4653 2nd try to fix macOS X blank screen when leaving fullscreen editor mode
See issue #24.

The first attempt to fix this problem was with commit:

    Try to fix macOS X blank screen when leaving editor fullscreen mode
    1ae0a77464
2019-02-12 11:23:29 -07:00
Youness Alaoui 9b774d327f Fix crash when right clicking a word in editor and enchant is not installed. 2019-02-11 12:35:23 -07:00
Youness Alaoui d7203ddacf Fix crash when previewing pandoc HTML with QTextEdit as web rendering engine. 2019-02-11 10:27:35 -07:00
Youness Alaoui caed3e9224 Fix crash when 7 pound signs are written alone on a line.
The code would look for trailing pound signs and would
count all the way to the beginning and beyond, resulting
in an out of bounds exception.
2019-02-10 09:54:50 -07:00
Curtis Gedak 1ae0a77464 Try to fix macOS X blank screen when leaving editor fullscreen mode
Ensure showNormal() is called after leaving showFullScreen().

See issue #24.

References:

https://stackoverflow.com/questions/31666744/pyqt5-can-not-close-a-topmost-fullscreen-qdialog-on-mac-osx

https://doc.qt.io/qt-5/qwidget.html#showFullScreen
  - To return from full-screen mode, call showNormal().

https://pythonprogramminglanguage.com/destructor/
2019-02-09 10:27:44 -07:00
Curtis Gedak f75bc69dd7 Fix spelling mistake "chose" should be "choose"
Mentioned in issue #470
2019-02-07 12:34:57 -07:00
Curtis Gedak 1cc7146aad Avoid crash on import
See issue #470
2019-02-07 12:34:57 -07:00
Allan Nordhøy f731e19e00 Spelling: Manuscript, may have to be restarted (#454)
* Spelling: Manuscript, may have to be restarted
2019-01-10 10:26:14 -07:00
LingSamuel 4ded8d29e0 fix #411: translator won't work in some window, such as settings 2018-12-09 11:35:34 -07:00
LingSamuel 3d6080f3c0 fix #428: zh translation suffix doesn't match system locale; new behavior: load translation from settings first 2018-12-09 11:19:26 -07:00
LingSamuel cbf35fa373 Open/Save As/Create last accessed directory 2018-12-07 12:01:33 -07:00
LingSamuel 7bbc112d25 Add last accessed directory 2018-12-07 12:01:33 -07:00
Curtis Gedak 0cbf337f09 ========== manuskript-0.8.0 ========== 2018-12-05 11:39:28 -07:00
Curtis Gedak 92b0f016ba Add new language translations to the Settings window 2018-12-05 10:41:33 -07:00
Curtis Gedak 528ea130ee Remove unimplemented snowflake view mode menu entry
The menu option "View -> Mode -> Snowflake" has not been implemented.
This greyed out / disabled option has caused some confusion for users.
Remove the snowflake menu option to avoid confusion.

Closes issue #419
See also earlier issue #45
2018-11-30 09:42:42 -07:00
Curtis Gedak 5ea37bd192 Remove plot resolution step key bindings Ctrl+Enter and Ctrl+Backspace
Many applications, including Manuskript in the Editor pane, use the
keyboard shortcut 'Ctrl+Backspace' to delete the previous word.
However in the Plot pane Manuskript uses 'Ctrl+Backspace' to delete a
plot resolution step.

Fix this inconsistent behaviour by removing the keyboard shortcuts for
'Ctrl+Enter' and 'Ctrl+Backspace' from the Plot pane.

Closes issue #375
2018-11-26 11:05:46 -07:00
Curtis Gedak 98a629454e Add support for pandoc v2 command line options
Now both pandoc v1 and v2 are supported.

Closes issue #304
2018-11-20 10:21:48 -07:00
Curtis Gedak 60b58d9658 Fix Python 3.7 DeprecationWarning use local.format_string() messages
Fix by replacing locale.format() with locale.format_string().
2018-11-16 12:52:56 -07:00
Curtis Gedak 7f592bae41 Fix Python 3.6 DeprecationWarning invalid escape sequence messages
Fix by ensuring that regular expressions are constructed using either
raw string literals [1] or double backslashes [2].

[1] https://stackoverflow.com/questions/44325948/pandas-invalid-escape-sequence-after-update
[2] https://github.com/joblib/joblib/pull/526

Note that python only shows the deprecation warnings on initial run [3].

[3] https://bugs.python.org/issue30091

To work around this issue, remove the cached bytecode with:

    find . -name "__pycache__" -exec rm -rf {} \;

Then to prevent compiling to bytecode add the "-B" option to python:

    python3 -B -m pytest -vs
2018-11-16 12:52:56 -07:00
Curtis Gedak af53102e77 Fix pytest warning about duplicate name when running tests
When running pytest on kubuntu 16.04 the following warning was displayed:

    $ python3 -m pytest -v
    ...
    ./manuskript/load_save/version_1.py:319: \
    UserWarning: Duplicate name: 'outline/0-Folder/0-Text-3.md'
      zf.writestr(filename, content, compress_type=compression)

The error was tracked down using the following pytest invocation:

    $ python3 -m pytest -v -W error::UserWarning

This invocation showed 4 occurrences similar to the following warning:

    self = <zipfile.ZipFile filename='/tmp/tmpgs_sjpzr.msk' mode='w'>
    zinfo = <[AttributeError("compress_size") raised in repr()] \
    ZipInfo object at 0x7f3cc0124588>

        def _writecheck(self, zinfo):
            """Check for errors before writing a file to the archive."""
            if zinfo.filename in self.NameToInfo:
                import warnings
    >           warnings.warn('Duplicate name: %r' % zinfo.filename, \
                stacklevel=3)
    E           UserWarning: Duplicate name: 'outline/0-Folder/0-Text-3.md'

These warnings arose in the following 4 tests:

  - test_references
  - test_autoLoad
  - test_loadExportWiget
  - test_loadImportWiget

The cause of the issue is that in manuskript/tests/conftest.py, the
mainWindow::closeProject() method is called to close the project, but
the project was never loaded.  This meant the zip file setting
defaulted to True, when in fact the Acts sample project is not stored
in a single zip project file.

Fix by removing the call to MW.closeProject() before the project is
loaded.
2018-11-16 12:52:09 -07:00
Curtis Gedak b0774b4149 Fix segmentation fault on import
Manuskript started to segmentation fault on import starting with Qt 5.11.

I found the following link and the Qt bug links within to be useful in
my trouble-shooting efforts.

[Qt 5.11] Various Applications Segfault in 'libfm-qt'
https://github.com/lxqt/libfm-qt/issues/164

Closes issue #402
2018-11-11 13:31:06 -07:00
Curtis Gedak 026861ee87 Fix plot importance changes if delete earlier plot and click other plots
The root cause was a mismatch between plot IDs and plot model rows.

This issue would appear when a plot was deleted such that the plot IDs
did not match the plot model row numbers and different plots had
different importance levels.  The problem would not occur if the most
recently added plot was deleted.

The plot ID / plot model row mismatch was introduced with the
following commit:

    Fixes: add plot then choose new plot does not set \
    importance slider
    3569f78928

Closes issue #404
2018-11-05 09:29:53 -07:00
Curtis Gedak 729489a77e Improve pandoc compile/export return code handling
See issue #186
2018-10-31 10:31:53 -06:00
RiderExMachina 41e9467267 Fix crash in Outline mode with multi-item select #355
Closes issue #355 and pull request #385
2018-10-14 11:10:46 -06:00
Curtis Gedak 21423734e9 Revert "Minor grammar fixes"
This reverts commit 2fdf8c64bf.

The problem introduced by the commit is that the Editor pane would
incorrectly label book elements with the plural form of a word.  For
example "Books 4", "Sections 2", "Chapters 1", or "Scenes 3".  Hence
the need to undo the commit.

Closes issue #383.
2018-09-20 14:57:44 -06:00
RiderExMachina 5f8168fb37 Moved incorrectly placed parameter to correct place. Closes #377. 2018-09-17 23:32:10 -07:00
RiderExMachina 2fdf8c64bf Minor grammar fixes
Fix grammar regarding multiple of an object.
2018-09-11 10:32:51 -06:00
Lech Baczynski 3fdef2b800 Fix for compile/export crash (error when saving in cp1250) #331
See issue #331 and pull request #340
2018-08-21 10:55:53 -06:00