Commit graph

114 commits

Author SHA1 Message Date
TheJackiMonster a33249fc9d
Added guard to catch errors with translation
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
2022-05-17 11:43:22 +02:00
TheJackiMonster dc86e3b14e
Adjusted fixes for python 3.10 to not crash immediately
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
2021-12-13 14:27:59 +01:00
TheJackiMonster c52dab475c
Updated indonesian qt language files and ui files
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
2021-11-27 01:39:53 +01:00
Alexandre 40e6bf0793
Fix #846 close Fullscreen when exiting main editor (#854)
* Fix #846 close Fullscreen when exiting main screen

* Removing debug code and initializing _fullscreen

* Removing the print
2021-04-09 16:03:31 +02:00
Jan Wester ff2cbca028 Converted most print statements to use logging
Some snippets have yet to be converted due to the more complex nature
of those snippets, and to keep things neat a separate commit makes more
sense for those.
2021-04-08 18:44:28 +02:00
Belug 696678e25d Fix #456 - Force the distraction free window to be display on the same screen as the main window 2021-04-07 20:43:37 -04:00
TheJackiMonster 12be4c3a3d
Fixed all Python syntax warnings 2021-02-21 23:45:34 +01:00
TheJackiMonster 6c84e4c8e3 Merge remote-tracking branch 'charcount/characterscount' into charcount 2020-03-27 15:31:28 +01:00
TheJackiMonster 24f3f092bb Added char-count with settings to enable/disable it. 2020-03-27 15:12:44 +01:00
Jan Wester 3aa9cadfd8 Restore progress bar functionality
A previous fix (5f9ea3) inadvertently broke the progress bar by
converting to the wrong data type. (See issue #561 / PR #609).

While checking the code I realized the problem occurred primarily
because we weren't checking the validity of the values closer to the
source. Doing so alleviates the need to check elsewhere.

In the hope of inspiring a more systematic approach, a new uiParse()
utility function has been added to curb the further growth of toXxx()
functions that exist solely to validate user input.

There is no doubt room for improvement, both on the end of the new
uiParse() function as well as the spot where it is used. Ideally, the
data that comes out of the model should already be 'safe', but since
this is a bugfix for a bugfix I want to keep waves to a minimum.

This commit fixes issue #652.
2019-09-23 14:13:38 -06:00
luz.paz 2fd45dc42c Fix misc. typos
Found via `codespell -q 3 -S *.ts,./libs,./sample-projects -L searchin`
2019-09-19 09:58:24 -06:00
Curtis Gedak 5f9ea3baa5 Fix crash when setting word Goal on new Text (scene) in Outline pane
See issue #561.

The problem appears to be a due to a combination of factors, such as:

- Python does not automatically convert an empty/blank variable to the
  integer zero (0)
- Default goal value is empty/blank for a new Text (scene)
- Asynchronous events can occur such that the change in the Outline
  pane of a new Text (scene) goal from empty/blank to a value is not
  saved to the data model prior to the update event in the Editor pane
  accessing the model value for the word count progress display.

Steps to Reproduce:

1. Start manuskript and create new project (no template).

2. Select **Outline** pane.

3. Click "Text Plus" icon to create a text (default name "New")

4. Select **Editor** pane.

5. Click on **New** to display empty text.

6. Select **Outline** pane.

7. Double-click the empty area on **New** line under title **Goal**,
  type in "300", and press **Enter**.

   Note that manuskript crashes with a segmentation fault.

Work around the crash by using the already existing manuskript
function toInt() which handles conversion of empty/blank values to
integer value zero (0).
2019-07-31 10:46:06 -06:00
Jan Wester 12390a9aab Fix occasional crashes when (re)moving items
Describing all the rabbitholes that I and kakaroto have gone through
while debugging this one until dawn can frankly not do enough justice to
the crazy amount of rubberducking that went on while trying to fix this.

This bug would be triggered whenever you had a document open in the
editor and then moved an ancestor object downwards (visually) in the tree.
Or when you simply deleted the ancestor. Depending on the exact method
that caused the opened item to be removed from the internal model, the
exact nature of the bug would vary, which means this commit fixes a few
different bits of code that lead to what appears to be the same bug.

In order of appearance, the bugs that ruined our sleep were:

1) The editor widget was trying to handle the removed item at too late a
stage.

2) The editor widget tried to fix its view after a move by searching for
the new item with the same ID, but in the case of moving an object down
it came across its own old item, ruining the attempt.

3) The editor widget did not properly account for the hierarchical
nature of the model.

Upon fixing these the next day, it was revealed that:

4) The outlineItem.updateWordCount(emit=False) flag is broken. This
function would call setData() in several spots which would still cause
emits to bubble through the system despite emit=False, and we simply got
lucky that it stopped enough of them until now.

This last one was caused by a small mistake in the fixes for the first
three bugs, but it has led to a couple of extra changes to make any
future bug hunts slightly less arduous and frustrating:

a) When calling item.removeChild(c), it now resets the associated parent
and model to mirror item.insertChild(c). This has also led to an extra
check in model.parent() to check for its validity.

b) The outlineItem.updateWordCount(emit=) flag has been removed entirely
and it now emits away with reckless abandon. I have been unable to
reproduce the crashes the code warned about, so I consider this a code
quality fix to prevent mysterious future issues where things sometimes
do not properly update right.

Worthy of note is that the original code clearly showed the intention to
close tabs for items that were removed. Reworking the editor to support
closing a tab is unfortunately way out of scope, so this intention was
left in and the new fix was structured to make it trivial to implement
such a change when the time comes. An existing FIXME regarding unrelated
buggy editor behaviour was left in, too.

Many thanks to Kakaroto for burning the midnight oil with me to get to
the bottom of this. (I learned a lot that night!)

Issues #479, #516 and #559 are fixed by this commit. And maybe some others,
too.
2019-05-19 09:33:19 -06:00
Jan-Niklas Meier 385396c089 trying to resolve full screen exit issues on macOS 2019-05-03 09:41:39 -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
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 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
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 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
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
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 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
Lech Baczynski e15cb80847 - formatting characters count according to locale, as in words count 2018-04-10 07:11:32 +02:00
Lech Baczynski c6da77baf9 - adding characters count. Implementing #334 2018-04-09 11:13:01 +02:00
Windspar 4638ba878f stop crash when click btnGoUp and current editor is None 2018-02-18 14:06:33 -05:00
Sebastian Rasmussen dfe88a9681 Fix typos in code comments, invisible to end-users. 2018-01-29 10:30:41 -07:00
Olivier Keshavjee c504cb510e Fixes fullScreen scrollbar range 2017-11-28 19:58:23 +01:00
Olivier Keshavjee cb79e504e7 Merge branch 'master' into develop 2017-11-27 21:53:37 +01:00
Olivier Keshavjee c2dcbf56a0 Adds new markdown highlighter and many little tweaks 2017-11-27 21:35:32 +01:00
Olivier Keshavjee 7b29d332c5 Removes textFormat panel (bold, italic, etc. buttons) 2017-11-27 20:58:02 +01:00
Olivier Keshavjee c1ad771642 Subclass textEditView 2017-11-27 15:00:07 +01:00
Olivier Keshavjee 7940cdb336 Adds better fullscreen theme color integration 2017-11-25 14:17:49 +01:00
Olivier Keshavjee 59742accfa Moves textedit scrollbar outside the margins 2017-11-24 22:33:12 +01:00
Olivier Keshavjee 52af71757e Adds: better harmonization between Documents menu and context menu #229 2017-11-24 20:50:18 +01:00
Curtis Gedak a8ed0f5767 Change "informations" to "information"
See issue #181.
2017-11-23 12:43:31 -07:00
Olivier Keshavjee 9be2edeee7 Checkpoint: adding new markdown highlighter 2017-11-22 13:43:40 +01:00
Olivier Keshavjee cf4c1c83bf Changes every Enum to IntEnum 2017-11-15 21:05:48 +01:00
Olivier Keshavjee 9e95196cc5 Changes Outline enums to IntEnum 2017-11-15 20:58:12 +01:00
Olivier Keshavjee bc0d6f5760 Creates base classes 2017-11-15 20:34:05 +01:00