Compare commits

...

1753 Commits
v1.3.2 ... v2.2

Author SHA1 Message Date
Veronica Berglyd Olsen
b6282772ae Release 2.2 (#1641) 2023-12-17 17:00:05 +01:00
Veronica Berglyd Olsen
bfecebc047 Update release notes 2023-12-17 16:56:43 +01:00
Veronica Berglyd Olsen
186737a170 Update file history info 2023-12-13 22:07:53 +01:00
Veronica Berglyd Olsen
f32383ea99 Update changelog 2023-12-13 21:25:26 +01:00
Veronica Berglyd Olsen
4097949c44 Update translations 2023-12-13 21:24:50 +01:00
Veronica Berglyd Olsen
10feafeab4 Bump version for release 2.2 2023-12-10 22:21:25 +01:00
Veronica Berglyd Olsen
399a867836 Update docs with 2.2 features (#1640) 2023-12-10 22:18:03 +01:00
Veronica Berglyd Olsen
6f3702f2df Update docs organising section 2023-12-10 22:12:59 +01:00
Veronica Berglyd Olsen
7dc9e65f68 Update docs using novelWriter section 2023-12-10 21:53:04 +01:00
Veronica Berglyd Olsen
1740bbedbd Update docs introduction section 2023-12-10 18:39:29 +01:00
Veronica Berglyd Olsen
8585334a51 Update buttons in viewer and editor (#1638) 2023-12-04 09:12:30 +01:00
Veronica Berglyd Olsen
553b76cafc Update en_US and nb_NO translations 2023-12-03 18:58:01 +01:00
Veronica Berglyd Olsen
c04e1035a7 Merge branch 'main' into gui_fixes 2023-12-03 18:48:26 +01:00
Veronica Berglyd Olsen
dfbb61a37e Add viewer panel importance info (#1639) 2023-12-03 18:47:09 +01:00
Veronica Berglyd Olsen
cb485c5c86 Revert deleting the view button in viewer panel, but keep the double click change 2023-12-03 18:37:47 +01:00
Veronica Berglyd Olsen
62a94850a6 Add tooltips to all entries in the viewer panel and update translation file 2023-12-03 18:24:55 +01:00
Veronica Berglyd Olsen
99c00f8b93 Update tests 2023-12-03 18:20:23 +01:00
Veronica Berglyd Olsen
cbb000a18f Drop the view column in the viewer panel 2023-12-03 18:18:00 +01:00
Veronica Berglyd Olsen
847d8ab726 Add importance column to document viewer panel (#1620) 2023-12-03 18:15:16 +01:00
Veronica Berglyd Olsen
9f1e2d322e Re-order formats menu to be consistent with toolbar 2023-12-03 17:55:12 +01:00
Veronica Berglyd Olsen
b7c657141f Update translations 2023-12-03 17:43:28 +01:00
Veronica Berglyd Olsen
023f6bed01 Update base translation file 2023-12-03 17:34:08 +01:00
Veronica Berglyd Olsen
fff6ba98bc Rename emph and strong to italic and bold for consistency and add tooltips to editor toolbar 2023-12-03 17:33:15 +01:00
Veronica Berglyd Olsen
776eedc5f2 Drop the markdown/shortcode toggle feature from editor toolbar and update icons (#1636, #1637) 2023-12-03 16:56:36 +01:00
Veronica Berglyd Olsen
f2eaaa09b6 Turn viewer footer button and label into text buttons (#1628) 2023-12-03 16:10:09 +01:00
Veronica Berglyd Olsen
60b0a4c901 Update extensions (#1634) 2023-11-29 22:35:02 +01:00
Veronica Berglyd Olsen
a6d346fcb6 Clean up and fix minor issues with GUI extensions 2023-11-29 22:21:56 +01:00
Veronica Berglyd Olsen
78a75d5719 Fix some minor issues (#1632) 2023-11-29 21:59:36 +01:00
Veronica Berglyd Olsen
f59317c2b5 Remove alternative apostrophe from auto select logic because it is already a letter 2023-11-29 21:55:07 +01:00
Veronica Berglyd Olsen
b203bcdcff Include apostrophes when auto selecting in editor (#1624) 2023-11-29 21:48:09 +01:00
Veronica Berglyd Olsen
a31f42b04c Clean up novel view and improve coverage 2023-11-29 21:24:07 +01:00
Veronica Berglyd Olsen
ce666d9d7a Scroll novel view when looping through documents (#1555) 2023-11-29 20:55:05 +01:00
Veronica Berglyd Olsen
ef93b41240 Clean up alert boxes and update event filters (#1631) 2023-11-29 16:12:08 +01:00
Veronica Berglyd Olsen
1118f01c91 Combine all event filters in one module, and apply the status tip filter to the sidebar as well 2023-11-29 16:05:58 +01:00
Veronica Berglyd Olsen
b526315084 Clean up some redundant code and fix annotations 2023-11-29 16:05:14 +01:00
Veronica Berglyd Olsen
1d1dae0c7e Remove caching of the alert object in the shared instance 2023-11-29 16:03:48 +01:00
Veronica Berglyd Olsen
1edfcfcd91 Add debug comment 2023-11-29 08:10:16 +01:00
Veronica Berglyd Olsen
82e9fb0c44 Fix minor optimisation issue 2023-11-29 08:06:56 +01:00
Veronica Berglyd Olsen
1b8d424b27 Filter menu status tips (#1630) 2023-11-29 00:05:06 +01:00
Veronica Berglyd Olsen
4ab2b04e6b Add an event filter to remove status tip updates 2023-11-28 23:57:41 +01:00
Veronica Berglyd Olsen
d291995c0e Add deleteLater to temporary widgets (#1629) 2023-11-28 23:27:36 +01:00
Veronica Berglyd Olsen
54510951de Rename lipsum button 2023-11-28 23:21:35 +01:00
Veronica Berglyd Olsen
52d1d87985 Add the new flag to the command line help 2023-11-28 23:20:49 +01:00
Veronica Berglyd Olsen
62847e55f0 Rewrite how lipsum text is inserted 2023-11-28 23:14:23 +01:00
Veronica Berglyd Olsen
bf6cefa840 Update dialog handling of all dialogs 2023-11-28 22:12:30 +01:00
Veronica Berglyd Olsen
4e1fa01562 Add widget diff info to help debug memory issues 2023-11-28 17:29:34 +01:00
Veronica Berglyd Olsen
83c9fb96e9 Add memory usage debug info for status bar 2023-11-28 16:44:01 +01:00
Veronica Berglyd Olsen
ff7f27ff97 Add closeEvents to dialogs and set the deleteLater command 2023-11-28 16:29:21 +01:00
Veronica Berglyd Olsen
50a9b5b5e2 Fix some annotations and add deleteLater to non-modal dialogs 2023-11-27 21:43:13 +01:00
Veronica Berglyd Olsen
4fa20273f7 Clean up dialogs 2023-11-27 17:10:29 +01:00
Veronica Berglyd Olsen
93b36406f1 Make sure context menus are deleted after use 2023-11-27 16:30:21 +01:00
Veronica Berglyd Olsen
a0e6f9cf82 Fix various bugs and minor issues (#1626) 2023-11-27 16:17:01 +01:00
Veronica Berglyd Olsen
1f9b6d7624 Fix icons not updating on theme switch in viewer panel 2023-11-27 16:08:34 +01:00
Veronica Berglyd Olsen
ccc444f355 Fix section sizes for viewer panel (#1627) 2023-11-27 16:08:00 +01:00
Veronica Berglyd Olsen
ba0198407f Change panel label back to "References" 2023-11-27 07:42:25 +01:00
Veronica Berglyd Olsen
918b077252 Drop the space in front of Synopsis and Short comments inserts 2023-11-26 22:12:23 +01:00
Veronica Berglyd Olsen
b348ba6aff Update Main GUI launch test 2023-11-26 22:02:01 +01:00
Veronica Berglyd Olsen
e521a30612 Remove warning for alpha releases 2023-11-26 21:43:32 +01:00
Veronica Berglyd Olsen
2e2ab5ad6f Update project load dialog 2023-11-26 21:40:51 +01:00
Veronica Berglyd Olsen
47781f981f Fix wrong keyboard shortcut for Short comment insert 2023-11-26 21:40:05 +01:00
Veronica Berglyd Olsen
0676056968 Update translations (#1625) 2023-11-26 20:58:25 +01:00
Veronica Berglyd Olsen
65562ae790 Update base translation, US English, Norwegian, and Japanese 2023-11-26 16:20:14 +01:00
Veronica Berglyd Olsen
623f74019f Fix wrong PR mentioned in changelog 2023-11-26 15:09:43 +01:00
Veronica Berglyd Olsen
55e0dc3030 Release 2.2 RC1 (#1615) 2023-11-26 14:31:53 +01:00
Veronica Berglyd Olsen
9af7ff447b Update changelog 2023-11-26 14:29:53 +01:00
Veronica Berglyd Olsen
c71a5c0997 Merge branch 'dev' into release_2.2rc1 2023-11-26 14:03:05 +01:00
Veronica Berglyd Olsen
efea1a3140 Merge branch 'main' into dev 2023-11-26 14:02:11 +01:00
Veronica Berglyd Olsen
1fcae908ec Add "short description" feature, replace "summary" (#1622) 2023-11-26 14:01:49 +01:00
Veronica Berglyd Olsen
b9b4969b85 Rename once again, and use short instead for short descriptions of notes 2023-11-26 13:58:00 +01:00
Veronica Berglyd Olsen
f919149c58 Rename "brief" to "summary" (#1621) 2023-11-26 00:02:43 +01:00
Veronica Berglyd Olsen
6fd4417350 Fix variable name and test 2023-11-25 23:57:12 +01:00
Veronica Berglyd Olsen
bedd71b105 Add a summary entry to the insert menu (#1619) 2023-11-25 23:51:30 +01:00
Veronica Berglyd Olsen
53aa970427 Rename "brief" to "summary" 2023-11-25 23:42:05 +01:00
Veronica Berglyd Olsen
9fc815abe1 Add project note briefs (#1618) 2023-11-25 19:01:15 +01:00
Veronica Berglyd Olsen
b17b5d32c2 Allow double-clicking in viewer panel 2023-11-25 18:53:11 +01:00
Veronica Berglyd Olsen
05e63cb01e Make the columns in the viewer panel resizeable 2023-11-25 18:45:06 +01:00
Veronica Berglyd Olsen
519e5857d1 Add a column to viewer panel to show the brief 2023-11-25 18:23:09 +01:00
Veronica Berglyd Olsen
6a6b05c338 Update tokenizer and converters 2023-11-25 18:12:45 +01:00
Veronica Berglyd Olsen
8ed85363e2 Add test coverage and update the highlighter 2023-11-25 17:50:59 +01:00
Veronica Berglyd Olsen
887b4379b2 Add comment style processing to the index class 2023-11-25 17:50:25 +01:00
Veronica Berglyd Olsen
3a030c9acb Fix Ctrl+Del regression (#1616) 2023-11-25 16:31:37 +01:00
Veronica Berglyd Olsen
e216f80d64 Revert previous change of keyboard shortcut for item delete in tree made in #1590 2023-11-25 16:27:40 +01:00
Veronica Berglyd Olsen
74c5a66a4c Fix typos in changelog 2023-11-25 16:24:27 +01:00
Veronica Berglyd Olsen
8738bc562e Update alpha version warning, and drop the translation 2023-11-23 23:53:22 +01:00
Veronica Berglyd Olsen
c6f06866bd Bump version for 2.2 RC1 2023-11-23 20:44:47 +01:00
Veronica Berglyd Olsen
b7eede22da Add a context menu entry to set item name from heading (#1614) 2023-11-23 20:39:28 +01:00
Veronica Berglyd Olsen
e02d2b9298 Add annotations import to all test source files 2023-11-23 20:35:17 +01:00
Veronica Berglyd Olsen
de11ea389a Add test coverage of editor context menu 2023-11-23 20:25:18 +01:00
Veronica Berglyd Olsen
3f842c2fbe Add a context menu option to rename a document from any title within it 2023-11-23 19:40:17 +01:00
Veronica Berglyd Olsen
d35dfda92f Change set selection from doc header to use a signal/slot set 2023-11-23 19:04:35 +01:00
Veronica Berglyd Olsen
84eff433fb Clean up Qt enums in doc viewer 2023-11-23 18:52:42 +01:00
Veronica Berglyd Olsen
8c3c85f259 Clean up Qt enums in doc editor 2023-11-23 18:36:08 +01:00
Veronica Berglyd Olsen
39e1c54c33 Add a button to open manuscript build folder (#1613) 2023-11-23 16:55:22 +01:00
Veronica Berglyd Olsen
2998f2c363 Update tests 2023-11-23 16:45:14 +01:00
Veronica Berglyd Olsen
4bd830f0d6 Add an "Open Folder" button to build dialog (#1554) 2023-11-23 16:45:08 +01:00
Veronica Berglyd Olsen
30b4e5511a Add a common function to open file paths externally 2023-11-23 16:43:56 +01:00
Veronica Berglyd Olsen
4f9aab3c81 Add multi selection to project tree (#1612) 2023-11-22 19:00:25 +01:00
Veronica Berglyd Olsen
445414d126 Improve test coverage of project tree 2023-11-22 18:48:10 +01:00
Veronica Berglyd Olsen
62ea54e1ed Add test coverage of tree context menu class 2023-11-22 18:08:34 +01:00
Veronica Berglyd Olsen
ea0358b2ed Move project tree context menu to a separate class 2023-11-22 18:08:07 +01:00
Veronica Berglyd Olsen
d7730fb7c2 Clean up a few bits 2023-11-22 00:12:14 +01:00
Veronica Berglyd Olsen
40f6a108ed Add a multi-select context menu and handlers 2023-11-22 00:03:51 +01:00
Veronica Berglyd Olsen
33a30f3875 Remove tree undo and fix drop on root issue 2023-11-21 23:13:12 +01:00
Veronica Berglyd Olsen
f75ed33cec Add a working implementation of multi-item move 2023-11-21 22:26:10 +01:00
Veronica Berglyd Olsen
1a2bd7d640 Update Qt enums and set selection to multi select 2023-11-21 20:26:19 +01:00
Veronica Berglyd Olsen
afc04514a0 Add a tool to download spell check dictionaries (#1611) 2023-11-20 18:22:09 +01:00
Veronica Berglyd Olsen
d741a75de8 Clean up and add test coverage 2023-11-20 18:14:00 +01:00
Veronica Berglyd Olsen
71d17da483 Complete new Add Dictionaries tool 2023-11-20 17:26:12 +01:00
Veronica Berglyd Olsen
e00e64dc46 Copy changes from download_dicts branch 2023-11-20 17:24:49 +01:00
Veronica Berglyd Olsen
c585c87633 Remove two annotations in tests that block using older pytest versions 2023-11-18 21:12:09 +01:00
Veronica Berglyd Olsen
40c07973ce Disable hidden tab feature for older Qt libs 2023-11-18 21:04:35 +01:00
Veronica Berglyd Olsen
2fca22359b Improve cursor visibility features (#1608) 2023-11-18 15:59:48 +01:00
Veronica Berglyd Olsen
83187c517f Ensure cursor is visible after showing or closing the document viewer (#1302) 2023-11-18 15:56:03 +01:00
Veronica Berglyd Olsen
208b9334e1 Ensure cursor is visible after switching focus mode (#1478) 2023-11-18 15:43:51 +01:00
Veronica Berglyd Olsen
17fc370609 Fix some typos 2023-11-18 14:14:10 +01:00
Veronica Berglyd Olsen
ab35d1a0bf Add a new document viewer panel for tags and references (#1606) 2023-11-17 23:30:11 +01:00
Veronica Berglyd Olsen
69ccb1560c Update index test 2023-11-17 23:20:16 +01:00
Veronica Berglyd Olsen
d4560b3be8 Add test coverage of document viewer panel 2023-11-17 23:01:59 +01:00
Veronica Berglyd Olsen
fca941b726 Merge branch 'dev' into new_ref_panel 2023-11-17 21:39:30 +01:00
Veronica Berglyd Olsen
eda9a076d6 Clean up config and improve project tree test coverage (#1607) 2023-11-17 21:38:42 +01:00
Veronica Berglyd Olsen
1279b0e5b7 Fix bug from project tree test 2023-11-17 21:33:22 +01:00
Veronica Berglyd Olsen
16a56d6f60 Improve test coverage of project tree 2023-11-17 21:28:44 +01:00
Veronica Berglyd Olsen
c501e12c9d Remove deprecated config fields and update tests 2023-11-17 16:35:05 +01:00
Veronica Berglyd Olsen
dd05f6532a Update document viewer tests 2023-11-17 16:22:59 +01:00
Veronica Berglyd Olsen
1098354fca Fix broken test 2023-11-17 07:55:43 +01:00
Veronica Berglyd Olsen
f81c9aa319 Clean up document viewer class 2023-11-17 00:06:29 +01:00
Veronica Berglyd Olsen
9d662a0d40 Rename index signal function 2023-11-16 22:31:41 +01:00
Veronica Berglyd Olsen
123d9df170 Rewrite and improve the index event signal feature 2023-11-16 19:12:01 +01:00
Veronica Berglyd Olsen
844240b5b8 Fix broken tests 2023-11-16 00:23:59 +01:00
Veronica Berglyd Olsen
3d17d8e08c Clean up the viewer panel code a bit 2023-11-15 22:09:18 +01:00
Veronica Berglyd Olsen
f51223e7c3 Rename the tab count function just to be safe 2023-11-15 21:58:41 +01:00
Veronica Berglyd Olsen
b94e012f8f Fix bug with clearing class tag lists 2023-11-15 21:46:32 +01:00
Veronica Berglyd Olsen
2fc8e43e71 Connect the edit and view buttons 2023-11-15 21:38:45 +01:00
Veronica Berglyd Olsen
565350fcfb Clean up tree item updates 2023-11-15 21:14:40 +01:00
Veronica Berglyd Olsen
e82d5277c0 Add signal for re-indexed document 2023-11-15 21:03:12 +01:00
Veronica Berglyd Olsen
6b9d92e75a Add handlers for document label change 2023-11-15 20:13:23 +01:00
Veronica Berglyd Olsen
8508248f12 Add signal for processing tag changes 2023-11-15 20:12:17 +01:00
Veronica Berglyd Olsen
2cb6020cac Added tags changed signal 2023-11-15 18:11:37 +01:00
Veronica Berglyd Olsen
3f8220f350 Added tag data to viewer panels 2023-11-15 18:11:15 +01:00
Veronica Berglyd Olsen
f5901a4c8c Added new icons for the viewer panel 2023-11-15 18:10:29 +01:00
Veronica Berglyd Olsen
f4be38dd65 Populate the back reference panel 2023-11-14 23:56:51 +01:00
Veronica Berglyd Olsen
4d7ef63e83 Connect the new viewer panel and add icon for it 2023-11-14 22:41:39 +01:00
Veronica Berglyd Olsen
1d89e4935f Merge branch 'dev' into new_ref_panel 2023-11-14 11:06:04 +01:00
Veronica Berglyd Olsen
51337ae4e5 Increase button padding in sidebar by 2px 2023-11-14 10:48:47 +01:00
Veronica Berglyd Olsen
66dfe25e17 Fix bug in sidebar tooltip 2023-11-13 22:46:30 +01:00
Veronica Berglyd Olsen
c5322341ec Bring back the "Scroll past end" setting (#1605) 2023-11-13 22:13:39 +01:00
Veronica Berglyd Olsen
a5755c47e5 Add types to the Preferences dialog, and update tests 2023-11-13 22:09:38 +01:00
Veronica Berglyd Olsen
68af4aec86 Add back the scroll past end setting 2023-11-13 22:09:07 +01:00
Veronica Berglyd Olsen
0b35227756 Fix some usability issues in the UI (#1601) 2023-11-12 21:45:18 +01:00
Veronica Berglyd Olsen
a5b2e47098 Don't block auto-replace on keyword lines, and only show completer on single keypresses 2023-11-12 21:27:24 +01:00
Veronica Berglyd Olsen
a3f9d88271 Remove 2 px margin on sidebar 2023-11-12 20:59:00 +01:00
Veronica Berglyd Olsen
28b3046e51 Update editor code history 2023-11-12 20:55:31 +01:00
Veronica Berglyd Olsen
e7ea9d45e5 Improve how formatting is applied in the editor (#1600) 2023-11-12 20:45:37 +01:00
Veronica Berglyd Olsen
45b278f999 Fix an outdated comment 2023-11-12 20:38:38 +01:00
Veronica Berglyd Olsen
37e0319598 Clean up code a bit 2023-11-12 20:38:03 +01:00
Veronica Berglyd Olsen
7cf7eb4a48 Fix test coverage 2023-11-12 20:21:35 +01:00
Veronica Berglyd Olsen
597b788254 Implement a new word auto select feature that is more careful with punctuation 2023-11-12 20:11:31 +01:00
Veronica Berglyd Olsen
e4206bdcc0 Make autoselect and formatting selection a bit smarter 2023-11-12 19:44:24 +01:00
Veronica Berglyd Olsen
5f80a6b400 Update PyPi info 2023-11-12 15:33:05 +01:00
Veronica Berglyd Olsen
09022ba41a Add post-release fixes 2023-11-12 15:31:53 +01:00
Veronica Berglyd Olsen
6c9c1ec088 Release 2.2 Beta 1 (#1595) 2023-11-12 14:47:09 +01:00
Veronica Berglyd Olsen
88ba3b3dfe Bump version to 2.2 Beta 1, and update changelog 2023-11-11 22:48:51 +01:00
Veronica Berglyd Olsen
9e4ac8f9d4 Merge branch 'main' into dev 2023-11-11 22:05:41 +01:00
Veronica Berglyd Olsen
656a5ada61 Clean up main readme a bit 2023-11-11 22:01:25 +01:00
Veronica Berglyd Olsen
96ac87d5ed Rename linting job to match the rest 2023-11-11 21:57:33 +01:00
Veronica Berglyd Olsen
5597c0e172 Replace the icon on the readme page 2023-11-11 21:49:38 +01:00
Veronica Berglyd Olsen
25c4cf695f Add a new logo (#1593) 2023-11-11 17:41:06 +01:00
Veronica Berglyd Olsen
8db71c432d Fix MacOS build and add font credits 2023-11-11 17:08:22 +01:00
Veronica Berglyd Olsen
e1b92d14c3 Change MacOS build to generate icons on the fly 2023-11-11 16:44:23 +01:00
Veronica Berglyd Olsen
1c4fd4ea5a Add MacOS icons 2023-11-11 16:41:06 +01:00
Veronica Berglyd Olsen
b04386b183 Update Windows icons 2023-11-11 16:38:13 +01:00
Veronica Berglyd Olsen
4b2c01dbf1 Update novelWriter text images 2023-11-11 16:37:58 +01:00
Veronica Berglyd Olsen
134cf45199 Add new PNG icons 2023-11-11 15:11:40 +01:00
Veronica Berglyd Olsen
a0ca78b4fd Add new SVG icon designs 2023-11-11 15:10:50 +01:00
Veronica Berglyd Olsen
062b336105 Make it possible to re-order build settings (#1591) 2023-11-10 22:23:07 +01:00
Veronica Berglyd Olsen
2c5947eeaa Make build settings re-orderable (#1542) 2023-11-10 22:03:38 +01:00
Veronica Berglyd Olsen
f9fd3512b7 Improve widget focus keyboard shortcuts (#1590) 2023-11-10 19:14:10 +01:00
Veronica Berglyd Olsen
98c62f0912 Make Ctrl+Del the default for deleting item in project tree 2023-11-10 19:03:30 +01:00
Veronica Berglyd Olsen
a3f63530d7 Update documentation 2023-11-10 18:57:48 +01:00
Veronica Berglyd Olsen
788f46bd7f Improve focus switching and combine with main menu entries 2023-11-10 18:25:32 +01:00
Veronica Berglyd Olsen
2097eaeeaa Add keyboard shortcuts to sidebar tooltips 2023-11-10 17:53:54 +01:00
Veronica Berglyd Olsen
693f3fb656 Add a keyboard shortcut to toggle tree view 2023-11-10 17:53:36 +01:00
Veronica Berglyd Olsen
25697b0957 Add language setting to Project Settings (#1589) 2023-11-09 19:09:36 +01:00
Veronica Berglyd Olsen
76d67dd0aa Clean up build settings and update tests 2023-11-09 19:04:36 +01:00
Veronica Berglyd Olsen
e3997b53aa Add language setting to wizard 2023-11-09 18:55:02 +01:00
Veronica Berglyd Olsen
c7bfb1b21e Change to always use project language for generating documents 2023-11-09 18:44:08 +01:00
Veronica Berglyd Olsen
2cde1b845e Clean up project settings class 2023-11-09 18:26:33 +01:00
Veronica Berglyd Olsen
27f3b8e0f2 Add project translations for Norwegian nynorsk 2023-11-09 18:02:53 +01:00
Veronica Berglyd Olsen
3f0024a6a3 Use GUI language when translating meta data for the viewer 2023-11-09 18:02:33 +01:00
Veronica Berglyd Olsen
fa32ef248b Add a basic doc viewer panel class 2023-11-09 17:49:29 +01:00
Veronica Berglyd Olsen
234b189e3c Add project translations for meta data keywords (#1586) 2023-11-09 17:35:28 +01:00
Veronica Berglyd Olsen
21dd254831 Include already translated project translation files 2023-11-09 17:24:39 +01:00
Veronica Berglyd Olsen
2ed3666b9f Add keyword translations to the project language files for manuscript builds 2023-11-09 17:17:46 +01:00
Veronica Berglyd Olsen
ebe1998b0b Fix initial visibility of editor toolbar 2023-11-08 23:26:00 +01:00
Veronica Berglyd Olsen
3f0de93438 Add an optional editor toolbar (#1584) 2023-11-08 23:18:06 +01:00
Veronica Berglyd Olsen
6d411e17a6 Improve test coverage 2023-11-08 23:12:39 +01:00
Veronica Berglyd Olsen
003615c3be Make some minor modifications to the doc toolbar, and add typings in themes 2023-11-08 21:27:14 +01:00
Veronica Berglyd Olsen
9a1947c0f5 Add colour to sub/superscript icons 2023-11-08 21:26:19 +01:00
Veronica Berglyd Olsen
5fbcca35a5 Make sure toolbar is hidden when document is closed 2023-11-08 18:16:55 +01:00
Veronica Berglyd Olsen
c88fbf629d Update tests 2023-11-08 18:06:19 +01:00
Veronica Berglyd Olsen
711766cf52 Change main menu to emit signals 2023-11-08 18:00:43 +01:00
Veronica Berglyd Olsen
1a6072be2c Add editor toolbar icons 2023-11-08 16:54:42 +01:00
Veronica Berglyd Olsen
9282b39f2a Change the menu icon to three dots 2023-11-08 16:54:15 +01:00
Veronica Berglyd Olsen
b3ae1774a8 Merge branch 'dev' into format_actions 2023-11-07 22:29:21 +01:00
Veronica Berglyd Olsen
f3b6be3100 Add shortcodes to the main menu (#1583) 2023-11-07 22:28:25 +01:00
Veronica Berglyd Olsen
394cdd5dad Add a basic document editor toolbar 2023-11-07 17:48:34 +01:00
Veronica Berglyd Olsen
e236fb30dc Clean up document header signals 2023-11-07 17:47:59 +01:00
Veronica Berglyd Olsen
a07177c153 Clean up main menu code 2023-11-07 13:54:31 +01:00
Veronica Berglyd Olsen
d2a0ff88a6 Add shortcodes to main menu 2023-11-07 13:54:02 +01:00
Veronica Berglyd Olsen
08e67b0190 Add context menu option to create note from tag (#1582) 2023-11-06 22:48:06 +01:00
Veronica Berglyd Olsen
eb5a98f482 Sort imports 2023-11-06 22:45:37 +01:00
Veronica Berglyd Olsen
ccd3122633 Make some improvements and update tests 2023-11-06 22:42:02 +01:00
Veronica Berglyd Olsen
f17e1f38de Add option to create note from tag, and improve auto-completer a bit 2023-11-06 22:25:28 +01:00
Veronica Berglyd Olsen
1ab35b5b63 Add an auto-completer for editor references (#1581) 2023-11-06 19:35:46 +01:00
Veronica Berglyd Olsen
fd1eaa8c47 Add test coverage of completer 2023-11-06 19:15:58 +01:00
Veronica Berglyd Olsen
ce53971836 Improve code flow in completer class 2023-11-06 19:15:43 +01:00
Veronica Berglyd Olsen
d827b5204b Add meta data autocomplete menu 2023-11-06 18:22:39 +01:00
Veronica Berglyd Olsen
09e0d28115 Add tags get function to index class 2023-11-06 18:19:03 +01:00
Veronica Berglyd Olsen
2a40913105 Add sub/superscript and partial word emphasis (#1540) 2023-11-06 11:54:49 +01:00
Veronica Berglyd Olsen
b03603cc9b Update tests and word counter 2023-11-06 11:49:26 +01:00
Veronica Berglyd Olsen
5e41dd9a92 Merge branch 'dev' into sub_super 2023-11-05 21:28:32 +01:00
Veronica Berglyd Olsen
c1272974ed Fix index bug due to lower/upper case mixing (#1578) 2023-11-05 21:12:04 +01:00
Veronica Berglyd Olsen
72e740ccdf Merge branch 'dev' into fix_index 2023-11-05 21:08:56 +01:00
Veronica Berglyd Olsen
a5a2b2c68e Merge branch 'dev' into fix_index 2023-11-05 21:06:39 +01:00
Veronica Berglyd Olsen
654ff3e81d Fix bug from merged branch 2023-11-05 21:00:23 +01:00
Veronica Berglyd Olsen
a2a1e2e6d0 Merge branch 'main' into dev 2023-11-05 18:54:52 +01:00
Veronica Berglyd Olsen
786c1f7d54 Make AppIamge build use Python 3.11 2023-11-05 18:37:09 +01:00
Veronica Berglyd Olsen
38c279b98f Release 2.1.1 (#1574) 2023-11-05 18:26:12 +01:00
Veronica Berglyd Olsen
b126b8cf0a Bumb version and update release notes for v2.1.1 2023-11-04 18:19:57 +01:00
Veronica Berglyd Olsen
a3b60dad0a Fix editor refresh issues (#1573) 2023-11-04 17:54:46 +01:00
Veronica Berglyd Olsen
ee5f340fe2 Refresh spell checking when word list changes (#1559) 2023-11-04 17:46:25 +01:00
Veronica Berglyd Olsen
dd61897d11 Force a rehighlight on theme switch for small documents (#1535) 2023-11-04 17:43:02 +01:00
Veronica Berglyd Olsen
a50e79b155 Set menu parents (#1572) 2023-11-04 17:31:26 +01:00
Veronica Berglyd Olsen
8abcada86e Make sure all QMenu instances have a parent widget set (#1536) 2023-11-04 17:24:43 +01:00
Veronica Berglyd Olsen
ef29571bd9 Add autoscroll feature (#1571) 2023-11-04 17:04:12 +01:00
Veronica Berglyd Olsen
6f8109609c Use the correct margin settings 2023-11-04 16:50:41 +01:00
Veronica Berglyd Olsen
05ddca043a Add comment to explain why autoscroll was added 2023-11-04 16:48:22 +01:00
Veronica Berglyd Olsen
da3747c5f5 Implement autoscroll in project tree, and disable library autoscroll feature (#1561) 2023-11-04 16:45:16 +01:00
Veronica Berglyd Olsen
2322923c4a Add check for illegal drag and drops (#1570) 2023-11-04 16:16:38 +01:00
Veronica Berglyd Olsen
c5baa8d359 Remove commented out code 2023-11-04 10:14:49 +01:00
Veronica Berglyd Olsen
a7e2b51225 Add blockers for illegal drop events on invisible root and for root items (#1569) 2023-11-04 10:05:37 +01:00
Veronica Berglyd Olsen
0413684150 Fix viewer navigation (#1568) 2023-11-03 10:32:36 +01:00
Veronica Berglyd Olsen
b047695501 Update tests 2023-11-03 10:28:54 +01:00
Veronica Berglyd Olsen
52197149a7 Merge branch 'main' into html_anchors 2023-11-03 10:15:12 +01:00
Veronica Berglyd Olsen
4582ef8b83 Fix anchor tags in html output (#1566) 2023-11-03 10:13:35 +01:00
Veronica Berglyd Olsen
0077326274 Fix errors in documentation (#1567) 2023-11-03 08:26:05 +01:00
nisemono-neko
36fd64e1a3 Fix typos 2023-11-03 16:29:30 +10:00
nisemono-neko
552249d145 Fix typos 2023-11-03 16:18:43 +10:00
nisemono-neko
7080703481 Fix typos 2023-11-03 16:16:18 +10:00
nisemono-neko
4c7fbdb77a Fix typos 2023-11-03 16:12:53 +10:00
nisemono-neko
0c249d2010 Fix typos 2023-11-03 16:07:14 +10:00
nisemono-neko
3896d0fbf4 Fix typos 2023-11-03 13:40:24 +10:00
nisemono-neko
b3018bb392 Fix typos 2023-11-03 13:27:03 +10:00
Veronica Berglyd Olsen
d67cef2611 Fix bug where tags were lost in the index when saving a document 2023-11-03 00:39:24 +01:00
Veronica Berglyd Olsen
f9df78a8d4 Fix i18n issues (#1565) 2023-11-02 23:44:53 +01:00
Veronica Berglyd Olsen
12d7512441 Make sure also Preferences defaults to British English 2023-11-02 23:41:34 +01:00
Veronica Berglyd Olsen
08a012ef8d Only default to system locale if a translation file exists (#1564) 2023-11-02 23:34:42 +01:00
Veronica Berglyd Olsen
6df591c803 Fix untranslated strings in Build tool (#1563) 2023-11-02 23:01:41 +01:00
Veronica Berglyd Olsen
2d78312206 Fix Build Settings icon column size issue (#1553) 2023-10-24 00:04:41 +02:00
Veronica Berglyd Olsen
bce6f9543a Make sure icon columns on build settings dialog are narrow (#1551) 2023-10-23 23:58:29 +02:00
Veronica Berglyd Olsen
ddd5e841bf Clean up unneeded docs build settings 2023-10-22 00:13:21 +02:00
Veronica Berglyd Olsen
69af58227a Fix broken docs build 2023-10-21 15:41:49 +02:00
Veronica Berglyd Olsen
c02e7a52a1 Fix keyword section in writing classes 2023-10-21 15:40:33 +02:00
Veronica Berglyd Olsen
ba2250be47 Add shortcodes example text 2023-10-20 22:58:32 +02:00
Veronica Berglyd Olsen
d51bfec090 Fix ToOdt test coverage 2023-10-20 22:55:59 +02:00
Veronica Berglyd Olsen
dc50f4bb3b Fix Tokenizer test coverage 2023-10-20 22:17:28 +02:00
Veronica Berglyd Olsen
b9df625914 Add ODT support for new formats 2023-10-20 21:42:00 +02:00
Veronica Berglyd Olsen
e669560462 Add syntax theme entry for shortcodes 2023-10-20 17:57:35 +02:00
Veronica Berglyd Olsen
1558a11646 Add shortcodes functionality 2023-10-20 17:50:18 +02:00
Veronica Berglyd Olsen
2214b7472b Fix ODT test 2023-10-20 00:06:43 +02:00
Veronica Berglyd Olsen
ae1ed10f25 Add converter support for the new formats 2023-10-20 00:05:17 +02:00
Veronica Berglyd Olsen
0115f1e343 Add tokenizer support for the new formats 2023-10-20 00:04:58 +02:00
Veronica Berglyd Olsen
ef4277437b Add regexes and highlighting for in-line commands 2023-10-20 00:04:23 +02:00
Veronica Berglyd Olsen
bd6e666fdc Add new syntax highlighting for in-line commands 2023-10-19 18:04:06 +02:00
Veronica Berglyd Olsen
181809d34a Update i18n readme (#1539) 2023-10-19 03:01:38 +02:00
Veronica Berglyd Olsen
bc1b5f24a0 Add more information in error output from pkgutils 2023-10-19 02:58:29 +02:00
Veronica Berglyd Olsen
658953df15 Add note about pkgutils dependency on PyQt6 for qtlupdate 2023-10-19 02:54:22 +02:00
Veronica Berglyd Olsen
b0e3cf1a3a Change editor to true plain text (#1525) 2023-10-17 21:03:36 +02:00
Veronica Berglyd Olsen
90ca8f481d Disable checking spelling in tests on Windows 2023-10-17 20:58:57 +02:00
Veronica Berglyd Olsen
b11a3c4bc7 Add editor spell checking test coverage 2023-10-17 20:54:00 +02:00
Veronica Berglyd Olsen
9dd8f65795 Clean up a few bits in the editor code, fix margins, and fix issue in spell checker 2023-10-17 20:25:17 +02:00
Veronica Berglyd Olsen
f8bff62754 Merge branch 'dev' into text_document 2023-10-17 18:16:02 +02:00
Veronica Berglyd Olsen
77108784d9 Merge branch 'main' into dev 2023-10-17 18:13:47 +02:00
Veronica Berglyd Olsen
60b977f8ec Update setup scripts 2023-10-17 18:12:35 +02:00
Veronica Berglyd Olsen
a03bd140db Release 2.1 (#1533) 2023-10-17 16:25:52 +02:00
Veronica Berglyd Olsen
1566fd3ec9 Rename Mac test 2023-10-17 16:24:44 +02:00
Veronica Berglyd Olsen
d6e0517209 Update changelog and release notes 2023-10-17 16:21:40 +02:00
Veronica Berglyd Olsen
f090ffa649 Update Spanish translation 2023-10-17 08:22:44 +02:00
Veronica Berglyd Olsen
2e5cb85410 Update Portuguese translation 2023-10-16 09:32:00 +02:00
Veronica Berglyd Olsen
6a4fa295f2 Update US English, Italian and Norwegian translations 2023-10-15 20:54:00 +02:00
Veronica Berglyd Olsen
dc516bab8b Bump version for 2.1 release 2023-10-15 20:17:52 +02:00
Veronica Berglyd Olsen
ac36ce07ba Update docs for 2.1 release (#1531) 2023-10-15 20:14:55 +02:00
Veronica Berglyd Olsen
ccffa91c49 Make a second apss through the entire documentation to fix issues 2023-10-15 20:11:29 +02:00
Veronica Berglyd Olsen
cceb31aac7 Update the glossary section of the docs 2023-10-15 17:53:51 +02:00
Veronica Berglyd Olsen
b16f4477b8 Update the additional topics section of the docs 2023-10-15 17:41:22 +02:00
Veronica Berglyd Olsen
56b4cd3036 Update the Project section of the docs 2023-10-15 17:27:44 +02:00
Veronica Berglyd Olsen
d68d215420 Merge branch 'main' into dev 2023-10-08 21:18:53 +02:00
Veronica Berglyd Olsen
8e72432db8 Merge branch 'main' into update_docs 2023-10-08 21:08:53 +02:00
Veronica Berglyd Olsen
ed8d4a4c26 Switch CI from 3.12-dev to 3.12 2023-10-08 21:08:08 +02:00
Veronica Berglyd Olsen
328216d9e5 Update the Using novelWriter section of the docs 2023-10-08 20:54:14 +02:00
Veronica Berglyd Olsen
a3fdb3cfc4 Update the introduction section of the docs 2023-10-08 18:50:33 +02:00
Veronica Berglyd Olsen
699bf2292c Clean up import order 2023-09-28 16:41:37 +02:00
Veronica Berglyd Olsen
14a75a421d Merge branch 'dev' into text_document 2023-09-28 16:17:43 +02:00
Veronica Berglyd Olsen
fd76f5a2c4 Do some minor variable cleanup in ToOdt 2023-09-28 14:33:33 +02:00
Veronica Berglyd Olsen
0700dd59bb Clean up variables and typing in doc converters 2023-09-26 18:39:50 +02:00
Veronica Berglyd Olsen
6d7453885b Merge branch 'main' into dev 2023-09-18 15:22:23 +02:00
Veronica Berglyd Olsen
609366076a Merge branch 'dev' into text_document 2023-09-18 15:21:32 +02:00
Veronica Berglyd Olsen
16f57e4c48 Case insensitive tags (#1522) 2023-09-18 08:16:54 +01:00
Veronica Berglyd Olsen
976f73c41c Fix two typos in usage docs (#1524) 2023-09-18 07:07:06 +01:00
Ainali
b891e9ada6 Fix two typos in usage docs 2023-09-17 23:20:14 +02:00
Veronica Berglyd Olsen
2e0204d577 Clean up variables and annotations in index classes 2023-09-17 20:29:33 +02:00
Veronica Berglyd Olsen
29518a33f2 Fix index tests 2023-09-16 10:10:55 +02:00
Veronica Berglyd Olsen
bf592fa706 Clean up outline view code 2023-09-15 22:38:56 +02:00
Veronica Berglyd Olsen
cba1a2c062 Make tags in the index case insensitive 2023-09-15 22:38:39 +02:00
Veronica Berglyd Olsen
cb522c7d50 Fix some layout issues in main gui 2023-09-15 18:40:32 +02:00
Veronica Berglyd Olsen
c3a4b840fb Improve handling of spell check state 2023-09-14 16:26:05 +02:00
Veronica Berglyd Olsen
309c7de5de Clean up variables in editor 2023-09-14 16:20:38 +02:00
Veronica Berglyd Olsen
45a4503fa3 Clean up variables in document editor 2023-09-10 23:43:50 +02:00
Veronica Berglyd Olsen
dea5c54ef0 Make some minor improvements to spell check suggest 2023-09-10 21:52:38 +02:00
Veronica Berglyd Olsen
f1e28e21f8 Cache spell check errors for usage in the editor when correcting 2023-09-10 21:27:34 +02:00
Veronica Berglyd Olsen
3f91f5c506 Use the global thread pool, like the docs suggest 2023-09-10 18:15:16 +02:00
Veronica Berglyd Olsen
e210bca319 Move the thread pool to the shared object instance 2023-09-10 17:46:35 +02:00
Veronica Berglyd Olsen
16e2e0cc83 Add a custom text document in the editor 2023-09-07 19:20:00 +02:00
Veronica Berglyd Olsen
e08790e889 Make the editor actually Plain Text (#1521) 2023-09-06 20:10:09 +01:00
Veronica Berglyd Olsen
915b9da5d0 Remove document size constraint 2023-09-06 20:35:48 +02:00
Veronica Berglyd Olsen
0ef46ef0ea Simplify editor scrolling features 2023-09-06 20:05:13 +02:00
Veronica Berglyd Olsen
0bfa3cb592 Simplify setting cursor position in the editor 2023-09-06 18:20:25 +02:00
Veronica Berglyd Olsen
8c3e906fc5 Remove the big doc limit feature 2023-09-06 17:56:39 +02:00
Veronica Berglyd Olsen
2b98e0d4d2 Make the editor a plain text editor again 2023-09-06 17:47:25 +02:00
Veronica Berglyd Olsen
8275963811 Sidebar cleanup and minor fixes (#1520) 2023-09-05 21:26:20 +01:00
Veronica Berglyd Olsen
4cc402679f Fix typo and move special popup menu class 2023-09-05 22:20:04 +02:00
Veronica Berglyd Olsen
b1095481ef Add test coverage 2023-09-05 22:12:08 +02:00
Veronica Berglyd Olsen
f754c80352 Redesign main sidebar 2023-09-05 21:55:42 +02:00
Veronica Berglyd Olsen
ca3a493932 Fix type checking warning 2023-09-04 20:12:26 +02:00
Veronica Berglyd Olsen
e8b2f3a8f9 Only spell check proper words 2023-09-04 20:12:04 +02:00
Veronica Berglyd Olsen
72b89a6768 Merge branch 'main' into dev 2023-09-04 11:50:21 +02:00
Veronica Berglyd Olsen
be3d642868 Fix minor font size issue (#1518) 2023-09-03 20:17:02 +01:00
Veronica Berglyd Olsen
a358a0007a Fix writing stats font size issue (#1442) 2023-09-03 21:12:54 +02:00
Veronica Berglyd Olsen
a2254512f7 Fix minor issue with translation string 2023-09-03 21:03:21 +02:00
Veronica Berglyd Olsen
b450fa1818 Annotate the doc editor source 2023-09-01 21:36:57 +02:00
Veronica Berglyd Olsen
c03c1c2bbf Bump dev branch to 2.2-alpha1 2023-09-01 20:49:09 +02:00
Veronica Berglyd Olsen
3eb49d32fa Display build details in Manuscript tool (#1516) 2023-09-01 18:50:55 +01:00
Veronica Berglyd Olsen
856e504c26 Improve the ternary if in expand state on manuscript dialog 2023-09-01 18:46:01 +02:00
Veronica Berglyd Olsen
206265b6d3 Update base translation file 2023-09-01 17:39:02 +02:00
Veronica Berglyd Olsen
dee1e9d71b Re-sort imports 2023-09-01 17:37:24 +02:00
Veronica Berglyd Olsen
9c7663996c Fix issues discovered when testing 2023-09-01 17:34:34 +02:00
Veronica Berglyd Olsen
03c4b91682 Make a few improvements to manuscript details panel 2023-09-01 17:19:25 +02:00
Veronica Berglyd Olsen
ecebd69cda Add build details widget to manuscript tool 2023-09-01 16:55:23 +02:00
Veronica Berglyd Olsen
746bd4bf2c Remove Python 3.7 support (#1515) 2023-08-31 18:32:27 +01:00
Veronica Berglyd Olsen
93ffc11f2a Bump MacOS build Python version to 3.11 2023-08-31 19:20:18 +02:00
Veronica Berglyd Olsen
e36eebf09a Add Python 3.12 to setup.cfg 2023-08-31 19:17:20 +02:00
Veronica Berglyd Olsen
baf7bc5866 Add Python 3.12-dev to linux tests, and update mac and windows tests to 3.11 2023-08-31 19:10:37 +02:00
Veronica Berglyd Olsen
e766fa7dcc Remove official Python 3.7 support 2023-08-31 19:09:23 +02:00
Veronica Berglyd Olsen
ee84c635c5 Fix typo in changelog 2023-08-31 19:03:50 +02:00
Veronica Berglyd Olsen
eccb4040b6 Release 2.1 RC 1 (#1513) 2023-08-31 16:44:52 +01:00
Veronica Berglyd Olsen
eca97bb6ff Bump version number and update changelog 2023-08-31 17:40:15 +02:00
Veronica Berglyd Olsen
7c3505cf2a Update US translation 2023-08-31 17:19:53 +02:00
Veronica Berglyd Olsen
fbcb8e121c Update translation files 2023-08-31 17:18:09 +02:00
Veronica Berglyd Olsen
ca95a17a63 Merge branch 'main' into release_2.1rc1 2023-08-31 17:00:34 +02:00
Veronica Berglyd Olsen
73a5dc4693 Update i18n files (#1512) 2023-08-31 16:00:00 +01:00
Veronica Berglyd Olsen
6805be0d26 Update i18n files 2023-08-31 16:55:46 +02:00
Veronica Berglyd Olsen
440256c3f0 Forward all scroll events in text area widgets to parent (#1511) 2023-08-31 15:43:39 +01:00
Veronica Berglyd Olsen
d7c8f97d47 Add test coverage and fix a few minor things 2023-08-31 16:38:51 +02:00
Veronica Berglyd Olsen
94329b334a Forward all scroll events in editor/viewer areas to their text area widgets (#1425) 2023-08-31 11:40:52 +02:00
Veronica Berglyd Olsen
190848ad2e Update the file info dialog box (#1510) 2023-08-30 18:08:00 +01:00
Veronica Berglyd Olsen
9bf43aa40f Update the file info dialog box 2023-08-30 18:57:48 +02:00
Veronica Berglyd Olsen
f41e71199c Add hash and dates to document meta data (#1509) 2023-08-30 17:35:51 +01:00
Veronica Berglyd Olsen
10c7934ae2 Update tests 2023-08-25 18:37:01 +02:00
Veronica Berglyd Olsen
fa7e9b7f33 Update sample project 2023-08-25 17:16:18 +02:00
Veronica Berglyd Olsen
4dfc27f727 Add check that prevHash is actually recorded 2023-08-25 17:16:10 +02:00
Veronica Berglyd Olsen
125d501aaf Fix issue with document hash comparison 2023-08-25 17:13:41 +02:00
Veronica Berglyd Olsen
0d262c0ae8 Remove the sha256sum function for files and update tests 2023-08-25 16:55:45 +02:00
Veronica Berglyd Olsen
b3fcea29da Change how text hash is calculated in documents, and add dates 2023-08-25 16:55:08 +02:00
Veronica Berglyd Olsen
1b98bdf28f Refactor handling of spell checking (#1508) 2023-08-25 12:19:25 +01:00
Veronica Berglyd Olsen
cf2d30895c Remove added test check that fails 2023-08-25 13:12:23 +02:00
Veronica Berglyd Olsen
56fc5ec40c Add spell check languages to Tools menu 2023-08-25 13:09:05 +02:00
Veronica Berglyd Olsen
a72c824d8b Move all handling of spell check instance to shared class 2023-08-24 22:33:53 +02:00
Veronica Berglyd Olsen
b54f81355a Clean up the syntax highlighter class 2023-08-24 20:40:10 +02:00
Veronica Berglyd Olsen
f7ed133b2e Move the spell check instance to the shared class 2023-08-24 20:17:23 +02:00
Veronica Berglyd Olsen
4507489f0b Clean up a few things in project classes 2023-08-24 19:45:08 +02:00
Veronica Berglyd Olsen
f339ec2471 Remove re-usage of project class (#1504)_ 2023-08-23 19:56:58 +01:00
Veronica Berglyd Olsen
e1ba66fb87 Fix some missing test coverage 2023-08-23 20:51:42 +02:00
Veronica Berglyd Olsen
af50b219a6 Add test coverage of shared class 2023-08-23 20:19:48 +02:00
Veronica Berglyd Olsen
8090832f3b Fix weird unitilialised shared class issue 2023-08-20 23:38:14 +02:00
Veronica Berglyd Olsen
55423174ed Make a few minor improvements, including fixing #1495 2023-08-20 22:09:02 +02:00
Veronica Berglyd Olsen
ed3e4bca6c Simplify the class variables of the tree class 2023-08-20 21:36:33 +02:00
Veronica Berglyd Olsen
0b4cfd0037 Move idle time records to the shared class 2023-08-20 21:33:04 +02:00
Veronica Berglyd Olsen
777b1a15fd Clean up no longer needed code 2023-08-14 17:43:47 +02:00
Veronica Berglyd Olsen
a17e73b5a2 Let the shared class handle alert dialogs 2023-08-14 17:08:53 +02:00
Veronica Berglyd Olsen
3441ff38de Remove dependence of main GUI class in project class 2023-08-14 17:08:30 +02:00
Veronica Berglyd Olsen
a3976ab4fb Fix imports 2023-08-14 00:07:38 +02:00
Veronica Berglyd Olsen
156a6fac98 Use a signal for status bar messages 2023-08-14 00:03:55 +02:00
Veronica Berglyd Olsen
c4140d753c Improve handling of project closing 2023-08-13 23:32:10 +02:00
Veronica Berglyd Olsen
150f6603cd Let the shared class handle project open/save/close and recreating the project instance 2023-08-13 20:16:37 +02:00
Veronica Berglyd Olsen
8154293d92 Move the hasProject logic into the shared class 2023-08-13 19:23:32 +02:00
Veronica Berglyd Olsen
fd181b18a6 Rename exception variable in makeAlert 2023-08-13 19:23:03 +02:00
Veronica Berglyd Olsen
863dcf8b37 Move theme and project instances to new shared data class 2023-08-10 21:13:10 +02:00
Veronica Berglyd Olsen
a2f183f147 Add a shared data class 2023-08-10 21:10:08 +02:00
Veronica Berglyd Olsen
a0921d2541 Clean up core structure (#1502) 2023-08-10 11:29:25 +01:00
Veronica Berglyd Olsen
ddacfc743e Annotate config class and extensions 2023-08-10 00:49:33 +02:00
Veronica Berglyd Olsen
71e961ba38 Fix annotations in NWStatus class 2023-08-08 23:32:30 +02:00
Veronica Berglyd Olsen
6e5d991cfe Move TypeGuard to TYPE_CHECKING condition 2023-08-08 23:14:35 +02:00
Veronica Berglyd Olsen
5d817ae51f Move GUI components module to extensions subpackage 2023-08-08 22:47:24 +02:00
Veronica Berglyd Olsen
eeadfc95e3 Annotate core modules 2023-08-08 22:37:48 +02:00
Veronica Berglyd Olsen
d658a993c0 Update source file headers 2023-08-08 21:41:35 +02:00
Veronica Berglyd Olsen
348e62cd3e Change default backup folder to HOME/Backups
Signed-off-by: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
2023-08-08 20:04:17 +02:00
Veronica Berglyd Olsen
c40d910b69 Make backup path always set 2023-08-08 19:50:20 +02:00
Veronica Berglyd Olsen
12897ff2e1 Make project instance private to main GUI class 2023-08-08 17:21:00 +02:00
Veronica Berglyd Olsen
94c95d6f67 Move GUI theme instance to the config object (after app creation) 2023-08-08 14:35:55 +02:00
Veronica Berglyd Olsen
c50c8ee73a Improve alert boxes (#1501) 2023-08-08 09:45:58 +01:00
Veronica Berglyd Olsen
431bc8d401 Clarify closing dialog on build settings 2023-08-08 10:39:10 +02:00
Veronica Berglyd Olsen
de66f1e21b Switch out some alert icons 2023-08-08 09:33:42 +02:00
Veronica Berglyd Olsen
abfe7ee7ff Clean up a few minor things 2023-08-07 20:57:33 +02:00
Veronica Berglyd Olsen
7cb77e8524 Update comment 2023-08-07 20:49:04 +02:00
Veronica Berglyd Olsen
470017cdea Remove the global APP singleton again 2023-08-07 20:45:25 +02:00
Veronica Berglyd Olsen
7756368113 Fix some minor issues with new alert code 2023-08-07 20:25:51 +02:00
Veronica Berglyd Olsen
3911bc10c6 Clean up code and tests 2023-08-07 20:20:04 +02:00
Veronica Berglyd Olsen
90f9fa4451 Rewrite the makeAlert and askQuestion functions to use recommended interface 2023-08-07 20:19:51 +02:00
Veronica Berglyd Olsen
ec010bf18e Add new icons for alert boxes 2023-08-07 17:02:18 +02:00
Veronica Berglyd Olsen
8959af1f30 Move make alert to separate module and add a global singleton for pointers 2023-08-07 17:01:44 +02:00
Veronica Berglyd Olsen
c3b3120bc1 Improve build settings dialog (#1499) 2023-08-06 22:08:31 +01:00
Veronica Berglyd Olsen
28263dcbac Make build settings dialog a child of main gui, and ensure only one instance can be open for each build 2023-08-06 23:04:59 +02:00
Veronica Berglyd Olsen
4951e4f8fe Automatically select the first build if no builds are selected in the build tool 2023-08-06 22:27:15 +02:00
Veronica Berglyd Olsen
61836c8c04 Change page size preset to Custom when values are changed instead of blocking the spin boxes 2023-08-06 22:04:12 +02:00
Veronica Berglyd Olsen
effe7abdec Fix formatting of line breaks in headers 2023-08-06 21:49:55 +02:00
Veronica Berglyd Olsen
5bc391c6c2 Add file extensions to Outpu tab headers 2023-08-06 19:51:10 +02:00
Veronica Berglyd Olsen
3f951fa61f Move reset button to after included and excluded 2023-08-06 18:20:19 +02:00
Veronica Berglyd Olsen
72de32b126 Add iterative filter action for single selection in build settings 2023-08-06 17:49:11 +02:00
Veronica Berglyd Olsen
2780e722d0 Change icon for filtered items in build settings dialog 2023-08-06 17:28:05 +02:00
Veronica Berglyd Olsen
18d0265515 Fix possibly unbound variable in project tree 2023-08-06 17:25:29 +02:00
Veronica Berglyd Olsen
6168b45c75 Add a triangle arrow to the menu items on the paged side bar 2023-08-06 16:36:34 +02:00
Veronica Berglyd Olsen
7a74165221 Improve section headings on filter tab 2023-08-06 15:39:30 +02:00
Veronica Berglyd Olsen
c480db898c Double the left margin of the button text for the paged side bar 2023-08-06 15:08:57 +02:00
Veronica Berglyd Olsen
762f7c62cd Fix label in syntax check workflow 2023-08-06 14:57:49 +02:00
Veronica Berglyd Olsen
97dccd9d68 Drop saving fullscreen flag (#1498) 2023-08-06 13:57:31 +01:00
Veronica Berglyd Olsen
8778466d42 Annotate main gui 2023-08-06 14:50:11 +02:00
Veronica Berglyd Olsen
6f1aa5b812 Remove fullscreen setting in config file 2023-08-06 14:49:35 +02:00
Veronica Berglyd Olsen
352b70d060 Fix MacOS release for 2.1b1 (#1496) 2023-07-31 00:50:13 +02:00
Veronica Berglyd Olsen
4ce18611bd Remove redundant references to GUI parent 2023-07-31 00:44:30 +02:00
Veronica Berglyd Olsen
f09851b889 Remove beta part of version number for macOS build 2023-07-31 00:18:03 +02:00
Veronica Berglyd Olsen
993205701c Define all non-modal dialogs as tools 2023-07-30 23:39:29 +02:00
Veronica Berglyd Olsen
71b3694399 Try setting build non-modal dialogs as tools 2023-07-30 23:31:05 +02:00
Veronica Berglyd Olsen
9d8d25fbb5 Add a util function to restack the windows 2023-07-30 23:23:07 +02:00
Veronica Berglyd Olsen
c41a104eca Fix version number for mac build 2023-07-30 22:06:25 +02:00
Veronica Berglyd Olsen
1d19a900b1 Handle raise parent on all close events in build tools 2023-07-30 21:57:27 +02:00
Veronica Berglyd Olsen
25f9f0519f Fix raise window issue on Mac 2023-07-30 19:55:47 +02:00
Veronica Berglyd Olsen
b93bc0a295 Allow MacOS build to handle pre-release version 2023-07-30 14:36:47 +02:00
Veronica Berglyd Olsen
7d0e7d7dce Release 2.1 Beta 1 (#1490) 2023-07-30 14:20:51 +02:00
Veronica Berglyd Olsen
4b2b4117a5 Make some minor improvements to the change log 2023-07-30 14:17:34 +02:00
Veronica Berglyd Olsen
2bd519aa5b Update release date, change log and release notes 2023-07-30 14:07:28 +02:00
Veronica Berglyd Olsen
34c5b4fec7 Change tree nav shortcut modifier and update docs (#1489) 2023-07-30 00:06:36 +02:00
Veronica Berglyd Olsen
fd1f4a5dbe Merge branch 'dev' into tree_shortcuts 2023-07-30 00:00:59 +02:00
Veronica Berglyd Olsen
59a31f1c20 Restructure keyboard shortcuts page in docs 2023-07-29 23:59:41 +02:00
Veronica Berglyd Olsen
a79ff09e3b Use alt as modiefier for special project tree move keys 2023-07-29 23:59:18 +02:00
Veronica Berglyd Olsen
ea13f4f9b8 Add project tree navigation shortcuts (#1488) 2023-07-29 22:41:07 +02:00
Veronica Berglyd Olsen
26d97bd234 Update tests and docs 2023-07-29 22:26:13 +02:00
Veronica Berglyd Olsen
c52a37c276 Add shift + arrow navigation feature to project tree (#1348) 2023-07-29 22:25:58 +02:00
Veronica Berglyd Olsen
1dadd1ddb7 Annotate some more functions in project tree source 2023-07-29 20:49:23 +02:00
Veronica Berglyd Olsen
aa64fdbfc3 Annotate and clean up project tree source 2023-07-29 20:45:12 +02:00
Veronica Berglyd Olsen
db892f633a New root folder location (#1487) 2023-07-28 23:23:46 +02:00
Veronica Berglyd Olsen
08648e0a33 Update annotations in related source 2023-07-28 23:17:09 +02:00
Veronica Berglyd Olsen
addacd368d Allow root folders to be created next to selected root 2023-07-28 23:16:20 +02:00
Veronica Berglyd Olsen
925ead775c Try to fix issue with fickly test 2023-07-27 00:33:23 +02:00
Veronica Berglyd Olsen
46cac5cc94 Improve backup feature (#1484) 2023-07-27 00:18:51 +02:00
Veronica Berglyd Olsen
0c04b0ba86 Update test 2023-07-27 00:12:25 +02:00
Veronica Berglyd Olsen
ace037808f Add backups size to pop-up dialog (#1453) 2023-07-27 00:09:05 +02:00
Veronica Berglyd Olsen
d81a90add3 Add project name to backup file (#1476) 2023-07-27 00:08:26 +02:00
Veronica Berglyd Olsen
b837becc58 Remove remaining reference to lxml package 2023-07-26 23:47:49 +02:00
Veronica Berglyd Olsen
d88d07e0b3 Remove setup.py (#1483) 2023-07-26 23:34:04 +02:00
Veronica Berglyd Olsen
2966a709b8 Remove setup.py, and remove sample project from source build 2023-07-26 22:33:05 +02:00
Veronica Berglyd Olsen
7c138d33fc Move requirements file for tests to the tests folder 2023-07-26 22:26:18 +02:00
Veronica Berglyd Olsen
42d8d56636 Update ubuntu releases 2023-07-26 20:00:26 +02:00
Veronica Berglyd Olsen
02312054fb Split up setup.py and move packaging tools to new script 2023-07-26 19:28:34 +02:00
Veronica Berglyd Olsen
a6c0152a68 Improve project item and tree classes (#1482) 2023-07-26 19:06:45 +02:00
Veronica Berglyd Olsen
39ef662807 Add test coverage of the project tree consistency function 2023-07-26 18:57:31 +02:00
Veronica Berglyd Olsen
1752d5c5cb Fix inconsistent clearing of lockfiles in projects 2023-07-24 23:29:39 +02:00
Veronica Berglyd Olsen
7965e3365b Make sure file scan test don't depend on file list order 2023-07-22 23:15:30 +02:00
Veronica Berglyd Olsen
c8d588d6d2 Complete annotations in project class and update tests 2023-07-22 01:06:34 +02:00
Veronica Berglyd Olsen
d382775d1d Make some improvements to the tree consistency check 2023-07-22 01:06:04 +02:00
Veronica Berglyd Olsen
3753f5b829 Rewrite project consistency chech as part of the tree class 2023-07-21 23:56:48 +02:00
Veronica Berglyd Olsen
f0e372b2ba Update tests 2023-07-21 22:53:04 +02:00
Veronica Berglyd Olsen
9a1a2d9ab2 Rewrite NWItem to not allow handle to be None 2023-07-21 22:52:54 +02:00
Veronica Berglyd Olsen
4dfa51855e Spell check comments and docstrings 2023-07-20 23:25:49 +02:00
Veronica Berglyd Olsen
e773884c29 Add duplication of files and folders (#1480) 2023-07-20 21:18:17 +02:00
Veronica Berglyd Olsen
4e448134fc Add test coverage of new function in Document class 2023-07-20 21:14:10 +02:00
Veronica Berglyd Olsen
def846ce4b Clean up imports (missed one) 2023-07-20 21:08:38 +02:00
Veronica Berglyd Olsen
75a840b10b Clean up imports 2023-07-20 21:07:12 +02:00
Veronica Berglyd Olsen
188536d0f6 Add test coverage of duplicate function in project tree 2023-07-20 21:00:11 +02:00
Veronica Berglyd Olsen
b3c744d22e Add test coverage of DocDuplicator class 2023-07-20 20:36:09 +02:00
Veronica Berglyd Olsen
7a72634448 Improve how items are added to project tree, allowing root folders to be added next to specified items 2023-07-20 19:51:01 +02:00
Veronica Berglyd Olsen
1559e3299a Add item duplication functionality to project tree 2023-07-20 18:51:50 +02:00
Veronica Berglyd Olsen
567045e4ff Add document duplication tool and support in item and tree classes 2023-07-20 18:51:26 +02:00
Veronica Berglyd Olsen
1c5466a799 Add annotations to document class 2023-07-20 18:50:53 +02:00
Veronica Berglyd Olsen
fe7e44a3a6 Add annotations to tree and item classes 2023-07-20 16:00:16 +02:00
Veronica Berglyd Olsen
bba46ba042 Add annotations to core tools 2023-07-20 15:14:01 +02:00
Veronica Berglyd Olsen
f2bba55bca Change default font on macOS (#1479) 2023-07-20 01:28:31 +02:00
Veronica Berglyd Olsen
57d6b6ac1d Change default macOS font to Helvetica 2023-07-20 01:22:30 +02:00
Veronica Berglyd Olsen
664d314d3a Improve ODT build (#1477) 2023-07-20 00:35:13 +02:00
Veronica Berglyd Olsen
32a52b2bf1 Update tests 2023-07-20 00:29:11 +02:00
Veronica Berglyd Olsen
dedb86b11d Make paper sizes translatable 2023-07-20 00:29:01 +02:00
Veronica Berglyd Olsen
e1ea285201 Update test reference files 2023-07-19 23:57:45 +02:00
Veronica Berglyd Olsen
3c535ab0ef Make some improvements to the config layout class 2023-07-19 23:55:17 +02:00
Veronica Berglyd Olsen
ac92e5b126 Add support for page layout settings in builds 2023-07-19 23:55:00 +02:00
Veronica Berglyd Olsen
bebf487776 Update tests 2023-07-19 18:17:18 +02:00
Veronica Berglyd Olsen
c123ef9258 Add a separator style to ODT builds 2023-07-19 18:17:03 +02:00
Veronica Berglyd Olsen
7d065659e8 Bump version 2.1-beta1 2023-07-19 18:05:46 +02:00
Veronica Berglyd Olsen
3af60b4b6f Theme updates (#1475) 2023-07-19 17:43:57 +02:00
Veronica Berglyd Olsen
354d299dce Delete redundant colour definition in theme class 2023-07-19 17:40:18 +02:00
Veronica Berglyd Olsen
2670f46941 Don't set an icon theme for the Qt default theme 2023-07-19 17:36:56 +02:00
Veronica Berglyd Olsen
d289b41546 Fix test and update paged sidebar hover colour 2023-07-19 17:31:23 +02:00
Veronica Berglyd Olsen
2c5799679c Add help text colour as separate setting, and annotate theme class 2023-07-19 17:31:02 +02:00
Veronica Berglyd Olsen
795782320c Add default light theme and update other themes 2023-07-19 17:30:35 +02:00
Veronica Berglyd Olsen
734899a543 Improve test coverage of build tools (#1466) 2023-07-18 18:14:07 +02:00
Veronica Berglyd Olsen
8e3a258fd2 Fix sometimes failing backup test 2023-07-18 18:08:17 +02:00
Veronica Berglyd Olsen
36c0349c0a Split print test into separate due to MacOS issues 2023-07-18 17:59:29 +02:00
Veronica Berglyd Olsen
9721c25613 Add test coverage of GuiManuscript tool 2023-07-18 17:52:49 +02:00
Veronica Berglyd Olsen
1997872f71 Comment out blocking call 2023-07-17 20:57:07 +02:00
Veronica Berglyd Olsen
d9e0730ad2 Add test coverage of GuiManuscriptBuild tool 2023-07-17 20:56:31 +02:00
Veronica Berglyd Olsen
839bc778aa Add test coverage of GuiBuildSettings tool 2023-07-17 20:06:46 +02:00
Veronica Berglyd Olsen
f502411079 Complete test coverage of doc build module 2023-06-24 19:14:22 +02:00
Veronica Berglyd Olsen
151e4b2770 Change build filter to skip empty root folders 2023-06-24 18:25:44 +02:00
Veronica Berglyd Olsen
4b194752eb Complete test coverage of build settings module 2023-06-18 19:22:42 +02:00
Veronica Berglyd Olsen
73451faa31 Add test coverage of build settings class 2023-06-17 17:30:37 +02:00
Veronica Berglyd Olsen
a3f0d5b865 Fix bug in options file conversion 2023-06-15 23:54:16 +02:00
Veronica Berglyd Olsen
6193e3191b Fix minor issue in session log conversion 2023-06-15 23:26:27 +02:00
Veronica Berglyd Olsen
0689e977ea Rename and restructure project meta files (#1464) 2023-06-15 23:13:14 +02:00
Veronica Berglyd Olsen
028abc0ce9 Update storage class and test coverage of it 2023-06-15 23:05:21 +02:00
Veronica Berglyd Olsen
ca2964c037 Add test coverage of session log class 2023-06-15 00:19:47 +02:00
Veronica Berglyd Olsen
2a1324e6cc Make error dialog report a monospace font 2023-06-13 23:18:22 +02:00
Veronica Berglyd Olsen
61535b6ab6 Fix minor mistakes in source files from last commits 2023-06-13 22:57:19 +02:00
Veronica Berglyd Olsen
90012aff17 Fix test coverage of writingstats class 2023-06-13 22:32:17 +02:00
Veronica Berglyd Olsen
b2bfaad73d Fix test coverage of outline class 2023-06-13 22:15:14 +02:00
Veronica Berglyd Olsen
26e6845439 Fix test coverage of spell check classes 2023-06-13 21:54:06 +02:00
Veronica Berglyd Olsen
b7bb2988e8 Fix test coverage of options class 2023-06-13 21:11:05 +02:00
Veronica Berglyd Olsen
f33ba03a2f Fix test coverage of wordlist dialog 2023-06-13 21:10:11 +02:00
Veronica Berglyd Olsen
8d38f27eee Update gui options file format to macth others 2023-06-13 17:31:40 +02:00
Veronica Berglyd Olsen
0003f8c24d Change format of wordlist.txt file to json 2023-06-13 17:31:16 +02:00
Veronica Berglyd Olsen
9ac61105f3 Annotate index class and change file format slightly to match others 2023-06-13 17:30:07 +02:00
Veronica Berglyd Olsen
1b85f782a6 Update writing stats dialog to work with new log file 2023-06-13 17:29:15 +02:00
Veronica Berglyd Olsen
eba6783816 Move session log handling to a separate class, and use jsonl format 2023-06-12 01:50:27 +02:00
Veronica Berglyd Olsen
aea41032ef Add one more random error message 2023-06-11 22:51:03 +02:00
Veronica Berglyd Olsen
f572eed5be Update Docs (#1462) 2023-06-10 13:16:23 +02:00
Veronica Berglyd Olsen
9cd3e78043 Merge branch 'main' into update_docs 2023-06-10 13:15:12 +02:00
Veronica Berglyd Olsen
f9a4d7ec1f Make a couple of corrections 2023-06-10 13:13:36 +02:00
Veronica Berglyd Olsen
98692eb2fe Fix some sizing issues in the manuscript tools 2023-06-10 13:07:47 +02:00
Veronica Berglyd Olsen
8e6bb0b3d6 Fix outline margin so last column can be resized 2023-06-10 01:14:25 +02:00
Veronica Berglyd Olsen
6f02f3f74d Simplify how outline column headers are saved 2023-06-10 00:45:25 +02:00
Veronica Berglyd Olsen
00350140d3 Rename index and options meta files 2023-06-10 00:44:52 +02:00
Veronica Berglyd Olsen
a87cc64766 Add a new GUI for the Build Tool (#1389) 2023-06-09 22:18:28 +02:00
Veronica Berglyd Olsen
0eb39d2e0a Clean up a few remnants of old test code 2023-06-09 22:06:38 +02:00
Veronica Berglyd Olsen
112aa8468c Finish up controls on manuscript build tool 2023-06-09 22:06:05 +02:00
Veronica Berglyd Olsen
c344cf441e Add back print functionality to manuscript tool 2023-06-09 21:31:02 +02:00
Veronica Berglyd Olsen
5f4b6009ce Complete the manuscript build dialog, and the doc builder class 2023-06-09 21:07:46 +02:00
Veronica Berglyd Olsen
8b7aab36a2 Add circular progress bar on manuscript preview 2023-06-08 23:33:16 +02:00
Veronica Berglyd Olsen
8ef1a12201 Use enums for build formats 2023-06-08 23:32:32 +02:00
Veronica Berglyd Olsen
4ee452d186 Add a circular progress bar to the manuscript build tool 2023-06-07 22:37:47 +02:00
Veronica Berglyd Olsen
3bcb4a5091 Add back the file name label on manuscript build dialog 2023-06-06 22:47:37 +02:00
Veronica Berglyd Olsen
b09068ab99 Add annotations to odt class 2023-06-06 22:12:56 +02:00
Veronica Berglyd Olsen
6b6c517b1f Add annotations to tokenizer, html and markdown classes 2023-06-06 00:35:57 +02:00
Veronica Berglyd Olsen
850ee73ed4 Simplify core variables in tokenizer 2023-06-06 00:03:46 +02:00
Veronica Berglyd Olsen
67f1dd6677 Clean up variables in doc builder 2023-06-06 00:03:27 +02:00
Veronica Berglyd Olsen
9bc66128a7 Complete the build process in the build tool 2023-06-05 23:39:28 +02:00
Veronica Berglyd Olsen
b0201c58e9 Add Table of Contents to build dialog 2023-06-05 21:49:30 +02:00
Veronica Berglyd Olsen
18df119332 Update build tools icons 2023-06-05 17:19:32 +02:00
Veronica Berglyd Olsen
bc38ea19ba Merge branch 'dev' into feature/build_gui 2023-06-05 17:13:23 +02:00
Veronica Berglyd Olsen
a730e8747f Optimise all SVG icons (#1456) 2023-06-05 17:11:56 +02:00
Veronica Berglyd Olsen
62b0e7f9ca Optimise all SVG icons 2023-06-05 16:52:13 +02:00
Veronica Berglyd Olsen
ee9da2bdf1 Improve the manuscript GUIs a bit 2023-06-05 00:25:02 +02:00
Veronica Berglyd Olsen
2f0ac4fe17 Fix Qt.UserRole access warning 2023-06-05 00:08:11 +02:00
Veronica Berglyd Olsen
033b9f2a59 Update the zipIt function to include new files 2023-06-04 21:25:03 +02:00
Veronica Berglyd Olsen
3996ff8798 Assemble most of the Manuscript Build tool 2023-06-04 20:58:50 +02:00
Veronica Berglyd Olsen
5f6335d8f9 Fix some typing issues 2023-06-04 00:40:04 +02:00
Veronica Berglyd Olsen
135ba3f290 Update the project storage class 2023-06-03 19:05:18 +02:00
Veronica Berglyd Olsen
8ef3b3e09a Add project file revision number, and update all test reference files 2023-06-03 18:37:41 +02:00
Veronica Berglyd Olsen
0704812376 Remove titleFormat from project XML and rename mock test file 2023-06-03 18:13:02 +02:00
Veronica Berglyd Olsen
db8140418e Fix typing and docstrings in Project data and XML classes 2023-06-03 18:05:04 +02:00
Veronica Berglyd Olsen
d915b1b02c Remove old test reference files 2023-06-03 17:13:54 +02:00
Veronica Berglyd Olsen
4c439910dc Remove the old build tool 2023-06-03 17:03:30 +02:00
Veronica Berglyd Olsen
9514578554 Add the build preview functionality from the old build tool 2023-06-03 16:51:45 +02:00
Veronica Berglyd Olsen
3a2733eee5 Make new code pass docstring linting 2023-06-03 15:46:51 +02:00
Veronica Berglyd Olsen
7ff5ffaebd Remove python 3.12-dev tests again 2023-06-01 15:46:39 +02:00
Veronica Berglyd Olsen
dbb8f4fa5a Remove lxml as a test dependency 2023-06-01 15:41:56 +02:00
Veronica Berglyd Olsen
8631ea3d5a Update test CI jobs 2023-06-01 15:39:42 +02:00
Veronica Berglyd Olsen
58dee60297 Merge branch 'dev' into feature/build_gui 2023-06-01 15:29:00 +02:00
Veronica Berglyd Olsen
0a70adeceb Update ignored error codes for flake8 2023-06-01 15:27:29 +02:00
Veronica Berglyd Olsen
31e76e429b Merge branch 'main' into dev 2023-06-01 15:26:08 +02:00
Veronica Berglyd Olsen
277bd783b1 Clean up workflows 2023-06-01 10:56:11 +02:00
Veronica Berglyd Olsen
3e34721b66 Make gui class debug messages consistent 2023-06-01 00:31:42 +02:00
Veronica Berglyd Olsen
8fdec71f4b Improve how manuscript dialog closing is handled 2023-06-01 00:12:27 +02:00
Veronica Berglyd Olsen
510b6ff6d2 Add simple build preview 2023-05-31 18:10:41 +02:00
Veronica Berglyd Olsen
704fffada3 Move all code to set default text font into the Config class 2023-05-31 17:49:31 +02:00
Veronica Berglyd Olsen
74f46f4633 Update broken test by merge from dev 2023-05-29 22:22:18 +02:00
Veronica Berglyd Olsen
c49e743f4d Merge branch 'dev' into feature/build_gui 2023-05-29 22:20:08 +02:00
Veronica Berglyd Olsen
b7eb4d3567 Remove lxml dependency (#1452) 2023-05-29 22:18:46 +02:00
Veronica Berglyd Olsen
ebc3b1f745 Fix redundant line wrapping in ODT header style 2023-05-29 22:12:55 +02:00
Veronica Berglyd Olsen
af923d6050 Remove references and checks for lxml 2023-05-29 21:52:43 +02:00
Veronica Berglyd Olsen
1d90d6d385 Update XML classes and tests 2023-05-29 21:47:13 +02:00
Veronica Berglyd Olsen
a40275c431 Make the xmlIndent function the permanent solution 2023-05-29 21:35:16 +02:00
Veronica Berglyd Olsen
2a82fd628c Fix logging bug in init 2023-05-29 21:34:48 +02:00
Veronica Berglyd Olsen
a7ffbb0965 Update Odt tests 2023-05-29 20:04:40 +02:00
Veronica Berglyd Olsen
22e0f82654 Replaxe lxml with standard library xml in ODT class 2023-05-29 20:04:28 +02:00
Veronica Berglyd Olsen
47a6ae5031 Remove test runs for Python 3.7 2023-05-29 18:23:00 +02:00
Veronica Berglyd Olsen
652013b622 Fix last broken test 2023-05-29 17:58:23 +02:00
Veronica Berglyd Olsen
af67f5081e Fix test reference files 2023-05-29 17:16:58 +02:00
Veronica Berglyd Olsen
59931c804c Replace lxml with standard xml for project files 2023-05-29 17:00:52 +02:00
Veronica Berglyd Olsen
7c9bff71f0 Make sure main logger only creates a single stream handle 2023-05-24 22:39:24 +02:00
Veronica Berglyd Olsen
ad6b517c1d Rename manuscript build tool file and add build dialog 2023-05-24 22:38:47 +02:00
Veronica Berglyd Olsen
a1837d8153 Clean up old heading format usage 2023-05-24 00:50:05 +02:00
Veronica Berglyd Olsen
cd81ea5fbb Fix tests 2023-05-24 00:27:29 +02:00
Veronica Berglyd Olsen
e3744d31aa Move heading formatting into a separate class 2023-05-24 00:27:09 +02:00
Veronica Berglyd Olsen
fda647da54 Fix a few issues with the build settings dialog 2023-05-23 18:39:52 +02:00
Veronica Berglyd Olsen
6ab734b9e7 Add last tab in build settings and tweak filter tab a little 2023-05-23 18:18:15 +02:00
Veronica Berglyd Olsen
c302162d1f Add build settings Content and Format tabs 2023-05-23 16:39:43 +02:00
Veronica Berglyd Olsen
06b46bb0d3 Update config layout extension class 2023-05-23 16:39:05 +02:00
Veronica Berglyd Olsen
2592423637 Update build dialog and make doc build class compatible with build settings 2023-05-22 21:58:05 +02:00
Veronica Berglyd Olsen
854cc77220 Add list of builds to manuscript build dialog 2023-05-22 18:38:58 +02:00
Veronica Berglyd Olsen
0a2355488e Simplify build settings dialog 2023-05-22 16:25:33 +02:00
Veronica Berglyd Olsen
a212900554 Add a Headings format edit form 2023-05-18 19:30:42 +02:00
Veronica Berglyd Olsen
79a28b9e43 Add handling of build settings and build name 2023-05-18 17:41:29 +02:00
Veronica Berglyd Olsen
90a6cecd52 Merge branch 'dev' into feature/build_gui 2023-05-16 23:45:22 +02:00
Veronica Berglyd Olsen
03a19a882b Rewrite config mocking (#1447) 2023-05-16 23:29:56 +02:00
Veronica Berglyd Olsen
4371d123ac Fix docs URL (#1446) 2023-05-16 23:22:20 +02:00
Veronica Berglyd Olsen
70ea5e0bae Fix broken documentation URL 2023-05-16 23:04:24 +02:00
Veronica Berglyd Olsen
db70394af3 Move all URLs to the nwConst class 2023-05-16 23:02:31 +02:00
Veronica Berglyd Olsen
324b204eaa Drop all mappings of config object into classes now that tests don't need that 2023-05-16 23:00:30 +02:00
Veronica Berglyd Olsen
7f8ffb228e Remove dependency on .mainConf class variable in tests 2023-05-16 00:40:56 +02:00
Veronica Berglyd Olsen
cdb501ae26 Improve debug strings in Config class 2023-05-16 00:34:28 +02:00
Veronica Berglyd Olsen
e8c6e50e92 Remove code for mocking CONFIG object and instead reset it for each test 2023-05-16 00:34:11 +02:00
Veronica Berglyd Olsen
35731ca4f7 Make build settings dialog work with single settings object 2023-05-15 15:27:02 +02:00
Veronica Berglyd Olsen
5685963b59 Modify logic so build settings are edited separately 2023-05-13 20:24:33 +02:00
Veronica Berglyd Olsen
26430e642c Add a new Manuscript Build tool 2023-05-13 19:20:31 +02:00
Veronica Berglyd Olsen
ff0a4b03ae Rename GuiBuildManuscript to GuiBuildSettings 2023-05-13 19:02:21 +02:00
Veronica Berglyd Olsen
a4e5a88686 Add heading format fields 2023-05-13 19:00:10 +02:00
Veronica Berglyd Olsen
50f653fefb Add splitter to filter page and save to options 2023-05-13 17:59:43 +02:00
Veronica K. B. Olsen
a9d5974346 Add root class filtering 2023-05-09 22:00:30 +02:00
Veronica Berglyd Olsen
4c4139078a Add icons to document filters 2023-05-07 19:36:52 +02:00
Veronica Berglyd Olsen
46b4e39bf5 Add code to filter items in build tool based on layout and active status 2023-05-07 19:21:07 +02:00
Veronica Berglyd Olsen
e7a148d20d Merge branch 'dev' into feature/build_gui 2023-05-07 16:57:52 +02:00
Veronica Berglyd Olsen
76daa3f463 Update setup files (#1436) 2023-05-05 00:26:28 +02:00
Veronica Berglyd Olsen
9f22c51c8a Add deprecation info to help output 2023-05-04 23:47:01 +02:00
Veronica Berglyd Olsen
023c0da879 Add deprecation warning about setup.py 2023-05-04 23:32:55 +02:00
Veronica Berglyd Olsen
18cc8b91dc Update documentation on how to install novelWriter from source, and improve build script for pip 2023-05-04 23:17:25 +02:00
Veronica Berglyd Olsen
7a855a3520 Update pyproject.toml according to setuptools docs 2023-05-04 23:09:33 +02:00
Veronica Berglyd Olsen
36352d4a17 Fix a few warnings with setup.cfg and add the zip_safe option 2023-05-04 22:05:01 +02:00
Veronica Berglyd Olsen
b9351dba11 Update package build scripts (#1433) 2023-05-03 22:43:03 +02:00
Veronica Berglyd Olsen
8d4e555374 Fix a few help strings in setup 2023-05-03 22:34:53 +02:00
Veronica Berglyd Olsen
934ebcfc7e Switch shasum command on mac build 2023-05-03 13:29:54 +02:00
Veronica Berglyd Olsen
128092e537 Put all build assets in a single zip file 2023-05-03 12:39:51 +02:00
Veronica Berglyd Olsen
ff22722662 Fix artifact names and add shasum files 2023-05-03 12:36:33 +02:00
Veronica Berglyd Olsen
7159a07f91 Fix build action artifact upload 2023-05-02 12:52:22 +02:00
Veronica Berglyd Olsen
0ae42ef876 Simplify package names 2023-05-02 12:46:58 +02:00
Veronica Berglyd Olsen
d66953d3ac Add a bash script to generate a desktop launcher 2023-04-23 17:23:21 +02:00
Veronica Berglyd Olsen
d1c62e4bbc Docs: Add a note about escape characters for text emphasis 2023-04-22 10:06:23 +02:00
Veronica Berglyd Olsen
f1b764761c Fix error in docstring 2023-04-22 09:52:51 +02:00
Veronica Berglyd Olsen
b0c5fe6509 Make some further minor improvements to Mac build script 2023-04-18 18:57:33 +02:00
Veronica Berglyd Olsen
9daf1f1ca0 Clean up Mac build a bit 2023-04-18 18:44:08 +02:00
Veronica Berglyd Olsen
96bed5b3d5 Update copyright year 2023-04-18 18:43:55 +02:00
Veronica Berglyd Olsen
59f0beeba6 Remove the bundled lupdate6 tool and use the PyQt6 package 2023-04-18 18:17:33 +02:00
Veronica Berglyd Olsen
c7ba7b5d3a Add a link to the regular expression Qt docs for the search/replace tool 2023-04-18 11:07:33 +02:00
Veronica Berglyd Olsen
29386e8595 Add a switch box widget and use it for filter options in build 2023-04-16 21:19:09 +02:00
Veronica Berglyd Olsen
b6dceacaf0 Merge branch 'dev' into feature/build_gui 2023-04-16 19:46:54 +02:00
Veronica Berglyd Olsen
58702a8956 Release 2.0.7 (#1419) 2023-04-16 11:35:33 +02:00
Veronica Berglyd Olsen
8cdb7c245c Bump version to 2.0.7 and update changelog 2023-04-15 20:52:40 +02:00
Veronica Berglyd Olsen
1a716d858b Update translation files 2023-04-15 20:28:01 +02:00
Veronica Berglyd Olsen
c45f786066 Fix escaped markdown not being cleaned up for HTML and ODT (#1418) 2023-04-15 18:55:30 +02:00
Veronica Berglyd Olsen
574ed1b2f0 Improve test coverage 2023-04-15 18:46:32 +02:00
Veronica Berglyd Olsen
38f31d6a64 Remove the tokenizer post processing stage and instead run it where needed (Issue #1412) 2023-04-15 18:30:37 +02:00
Veronica Berglyd Olsen
6d0455bf28 Replace underscores with spaces when running spell checker (#1417) 2023-04-13 19:37:25 +02:00
Veronica Berglyd Olsen
b9d149a56a Improve how underscores are treated by spell checker (#1415) 2023-04-13 19:22:21 +02:00
Veronica Berglyd Olsen
4e64d522a1 Merge branch 'dev' into feature/build_gui 2023-04-13 18:21:41 +02:00
Veronica Berglyd Olsen
5460536bbc Fix CI trigger branches 2023-04-13 18:17:12 +02:00
Veronica Berglyd Olsen
239bc886a5 Fix spell check refresh (for small documents) (#1416) 2023-04-13 18:14:43 +02:00
Veronica Berglyd Olsen
0ffb6eee37 Allow clearing the spell check highlighting also on big docs 2023-04-13 18:11:59 +02:00
Veronica Berglyd Olsen
cf770ff77f Remove the condition that spell checking must be enabled to refresh highlighting (Issue #1414) 2023-04-13 17:57:14 +02:00
Veronica Berglyd Olsen
8c9f84d251 Build AppImage for older Linux distros (#1410) 2023-04-04 20:54:12 +02:00
Veronica Berglyd Olsen
5bb78f3f0d Use pip for build dependencies for assets 2023-04-04 19:51:02 +02:00
Veronica Berglyd Olsen
5e985af37b Add additional manylinux version to appimage build 2023-04-04 19:45:27 +02:00
Veronica Berglyd Olsen
f18b8ed7f3 Update i18n (#1407) 2023-04-04 19:36:00 +02:00
Veronica Berglyd Olsen
304d659c9f Merge branch 'main' into update_i18n 2023-04-04 19:33:13 +02:00
Veronica Berglyd Olsen
3a9d8dea27 Add back in RTD pdf build 2023-04-04 19:19:49 +02:00
Veronica Berglyd Olsen
95713f8e09 Update docs (#1409) 2023-04-04 19:13:09 +02:00
Veronica Berglyd Olsen
660c15bfe9 Simplify the main Readme as most user info is now on the website 2023-04-04 19:09:14 +02:00
Veronica Berglyd Olsen
54806ba753 Clean up documentation a little and point to new doc location 2023-04-04 18:35:39 +02:00
Veronica Berglyd Olsen
42dd7ce0d7 Change doc urls to point to main website instead of RTD 2023-04-04 18:34:37 +02:00
Veronica Berglyd Olsen
33b80244ea Merge branch 'main' into update_i18n 2023-04-04 17:50:36 +02:00
Veronica Berglyd Olsen
860125e19a Turn main into only release branch (#1408) 2023-04-04 17:47:52 +02:00
Veronica Berglyd Olsen
835165f012 Restore last version on main branch 2023-04-04 17:44:25 +02:00
Veronica Berglyd Olsen
3c7775aaa2 Remove dev code from main 2023-04-04 17:35:40 +02:00
Veronica Berglyd Olsen
97bf638b6f Merge branch 'patch' into cleanup_main 2023-04-04 17:31:36 +02:00
Veronica Berglyd Olsen
3873be2927 Add Japanese translation 2023-04-04 10:48:02 +02:00
Veronica Berglyd Olsen
48453bb46b Update latest translations 2023-04-04 10:45:25 +02:00
Veronica Berglyd Olsen
6a0a22b164 Merge branch 'patch' into update_i18n 2023-04-03 22:13:36 +02:00
Veronica Berglyd Olsen
590c03c17d Apply 'new item' rules in project tree (#1406) 2023-04-03 22:12:46 +02:00
Veronica Berglyd Olsen
db1cda65c3 Add check for root class before allowing adding novel documents in project tree new item (#1404) 2023-04-03 22:06:57 +02:00
Veronica Berglyd Olsen
bc1861887e Minor GUI Fixes (#1405) 2023-04-03 21:45:33 +02:00
Veronica Berglyd Olsen
7cd5d2740f Update base translation file 2023-04-03 21:34:58 +02:00
Veronica Berglyd Olsen
740e3be74b Fix project tree rename label (#1403) 2023-04-03 21:34:38 +02:00
Veronica Berglyd Olsen
00abb02ac1 Add the desktopFileName setting to the application for better support for Linux desktops 2023-04-03 21:31:07 +02:00
Veronica Berglyd Olsen
489fa20f18 Update latest translations with some minor additions and changes 2023-04-03 17:30:25 +02:00
Veronica Berglyd Olsen
3a569e0268 Fix typo 2023-03-21 09:17:09 +01:00
Veronica Berglyd Olsen
8bada3c468 Clarify instructions on how to download dictionaries on Windows 2023-03-20 22:36:49 +01:00
Veronica Berglyd Olsen
357d1fa83b Update docs theme from main branch 2023-03-10 16:47:47 +01:00
Veronica Berglyd Olsen
0a68ad1b07 Update docs theme (#1395) 2023-03-10 16:44:53 +01:00
Veronica Berglyd Olsen
8f8498ca6d Switch docs theme to Sphinx Book Theme 2023-03-10 16:29:41 +01:00
Veronica Berglyd Olsen
ab4cb93aaa Fix typo in docs 2023-03-07 23:03:30 +01:00
Veronica Berglyd Olsen
51b45de19e Revert mistake in docs about format changes 2023-03-05 11:44:43 +01:00
Veronica Berglyd Olsen
5639df7efd Add buttons to set filter mode on build items 2023-02-28 23:19:57 +01:00
Veronica Berglyd Olsen
9af273bf8f Add functionality to build project tree in build tool 2023-02-28 22:40:23 +01:00
Veronica Berglyd Olsen
cfd1b950d3 Rename item isInactive to isInactiveClass 2023-02-28 22:40:02 +01:00
Veronica Berglyd Olsen
8a4785d9a3 Add build tool icons to theme 2023-02-28 22:39:09 +01:00
Veronica Berglyd Olsen
ba5b4ece30 Change menu entries so tests run properly 2023-02-28 21:22:24 +01:00
Veronica Berglyd Olsen
0a8ed86b7c Finish the build tool pages and add feature to set selected button 2023-02-28 18:24:09 +01:00
Veronica Berglyd Olsen
d166697622 Merge branch 'main' into feature/build_gui 2023-02-28 18:13:46 +01:00
Veronica Berglyd Olsen
9fdfe7616c Change resize behaviour of main splitter (#1388) 2023-02-28 13:32:18 +01:00
Veronica Berglyd Olsen
21db406cf3 Change resize behaviour of main splitter to only scale editor area 2023-02-28 12:45:42 +01:00
Veronica Berglyd Olsen
eb39f5eeba Add tip in docs on how to get the Ubuntu key imported on Debian 2023-02-27 15:09:16 +01:00
Veronica Berglyd Olsen
3125df95d3 Update translations 2023-02-26 21:50:58 +01:00
Veronica Berglyd Olsen
dfcf23cd26 Merge 2.0.6 (#1384) 2023-02-26 21:37:49 +01:00
Veronica Berglyd Olsen
9d11d479a4 Merge branch 'main' into merge_2.0.6 2023-02-26 21:33:37 +01:00
Veronica Berglyd Olsen
86d324a113 Release 2.0.6 (#1382) 2023-02-26 21:02:22 +01:00
Veronica Berglyd Olsen
026f0b921c Complete changelog and update release notes 2023-02-26 12:00:39 +01:00
Veronica Berglyd Olsen
afa9675644 Merge branch 'patch' into release_2.0.6 2023-02-26 11:53:39 +01:00
Veronica Berglyd Olsen
a7ba0ec575 Backport docs from main (#1381) 2023-02-26 11:51:53 +01:00
Veronica Berglyd Olsen
bba605ee5a Fix link format in tech docs 2023-02-26 11:40:46 +01:00
Veronica Berglyd Olsen
09083ac4f5 Backport document changes from main 2023-02-26 11:37:28 +01:00
Veronica Berglyd Olsen
916f782df9 Bump version and update changelog 2023-02-26 11:15:20 +01:00
Veronica Berglyd Olsen
2f3a8f505f Fix GUI bugs and broken reference links (#1379) 2023-02-26 11:09:10 +01:00
Veronica Berglyd Olsen
4ff8c6a26f Don't set project tree focus when setting selected handle (#1369) 2023-02-26 10:56:06 +01:00
Veronica Berglyd Olsen
1952906829 Switch focus to tree when creating new item (#1376) 2023-02-26 10:35:14 +01:00
Veronica Berglyd Olsen
acd4d44a9e Fix reference panel links (#1378) 2023-02-26 10:30:25 +01:00
Veronica Berglyd Olsen
f14098d87b Merge branch 'main' into feature/build_gui 2023-02-25 18:50:59 +01:00
Veronica Berglyd Olsen
a1c3ab688a Update docs and add HowTo (#1377) 2023-02-25 18:48:37 +01:00
Veronica Berglyd Olsen
1648ad2d02 Add a contributing note to the howto docs 2023-02-25 18:48:04 +01:00
Veronica Berglyd Olsen
cc6636fe3c Add a HowTo section 2023-02-25 18:41:40 +01:00
Veronica Berglyd Olsen
e50bb72dc7 Add some more space above sections 2023-02-25 18:35:39 +01:00
Veronica Berglyd Olsen
fd390c2cba Increase font size for admonitions in docs 2023-02-23 08:19:05 +01:00
Veronica Berglyd Olsen
2365bcbcaf Restore main page link in docs 2023-02-22 22:11:51 +01:00
Veronica Berglyd Olsen
d934f2bb6b Fix download link in docs 2023-02-22 21:24:11 +01:00
Veronica Berglyd Olsen
8b2566b9fe Add signal to paged sidebar 2023-02-22 21:07:01 +01:00
Veronica Berglyd Olsen
a507e64163 No need for the mbuild folder 2023-02-21 18:46:10 +01:00
Veronica Berglyd Olsen
9d61432641 Add a basic build settings class, and add the paged sidebar to the mbuild dialog 2023-02-21 18:15:04 +01:00
Veronica Berglyd Olsen
981111d380 Complete the paged sidebar widget 2023-02-21 18:14:20 +01:00
Veronica Berglyd Olsen
0f0c9eacb1 Rename custom to extensions to avoid import issues 2023-02-21 16:47:30 +01:00
Veronica Berglyd Olsen
7a60d8d867 Add a custom widgets subpackage 2023-02-21 16:06:41 +01:00
Veronica Berglyd Olsen
06407a44d3 Add tabs to manuscript build tool 2023-02-13 21:34:40 +01:00
Veronica Berglyd Olsen
1c17bcc981 Add the Build Manuscript tool and connect it to the main menu 2023-02-13 20:00:56 +01:00
Veronica Berglyd Olsen
e92f2a9141 Copy "Getting Started" docs over from main branch 2023-02-13 19:27:30 +01:00
Veronica Berglyd Olsen
c8182c0293 Update "Getting Started" in docs (#1366) 2023-02-13 19:24:35 +01:00
Veronica Berglyd Olsen
d78f13839e Clean up the gettings started document 2023-02-13 08:46:06 +01:00
Veronica Berglyd Olsen
ed892f3f15 Move the section on setting up Python on Windows to the PyPi part 2023-02-13 08:38:19 +01:00
Veronica Berglyd Olsen
902dcc6ba7 Update MacOS install instructions formatting 2023-02-13 08:34:17 +01:00
Veronica Berglyd Olsen
43fd9db038 Merge branch 'main' into docs/getting_started 2023-02-13 08:22:25 +01:00
Veronica Berglyd Olsen
c6da74b21c Update MacOS instructions in the docs (#1365) 2023-02-13 08:21:31 +01:00
Rachel Powers
5362205605 Add Macos install instructions to the docs 2023-02-12 20:38:34 -07:00
Veronica Berglyd Olsen
30d5be44eb Bump version to 2.1-alpha0 2023-02-13 00:23:54 +01:00
Veronica Berglyd Olsen
9a50303068 Merge branch 'patch' 2023-02-13 00:20:51 +01:00
Veronica Berglyd Olsen
9ec8fea5f1 Improve build workflows (#1364) 2023-02-13 00:18:38 +01:00
Veronica Berglyd Olsen
1aecf19a03 Fix environment vars 2023-02-12 23:49:03 +01:00
Veronica Berglyd Olsen
0ab86913a7 Fix AppImage and MacOS builds 2023-02-12 23:32:11 +01:00
Veronica Berglyd Olsen
8448ec7b61 Add AppImage to build workflow 2023-02-12 23:27:15 +01:00
Veronica Berglyd Olsen
d672ec05e9 Fix artifact names 2023-02-12 22:33:40 +01:00
Veronica Berglyd Olsen
d71a277af7 Change order of macos build, and add more output 2023-02-12 22:11:32 +01:00
Veronica Berglyd Olsen
8488a85288 Update docs info on debian install 2023-02-12 21:46:15 +01:00
Veronica Berglyd Olsen
81e23f6a2a Merge 2.0.5 (#1363) 2023-02-12 17:38:40 +01:00
Veronica Berglyd Olsen
955d8c8fe2 Enable short retention time for build 2023-02-12 17:30:40 +01:00
Veronica Berglyd Olsen
d9057b8581 Fix broken doc build test 2023-02-12 17:30:26 +01:00
Veronica Berglyd Olsen
79f39c1bc3 Merge branch 'main' into merge_2.0.5 2023-02-12 17:24:42 +01:00
Veronica Berglyd Olsen
0b9ba78fac Release 2.0.5 (#1356) 2023-02-12 16:10:48 +01:00
Veronica Berglyd Olsen
c42f2e755c Make ODT tests ignore version number 2023-02-12 16:07:36 +01:00
Veronica Berglyd Olsen
2f0018ddfe Merge branch 'patch' into release_2.0.5 2023-02-12 16:04:10 +01:00
Veronica Berglyd Olsen
c4fd25ba56 Update changelog and release notes 2023-02-12 16:03:43 +01:00
Veronica Berglyd Olsen
f6a9fdd7ca Update completed and new translations (#1341) 2023-02-12 15:55:57 +01:00
Veronica Berglyd Olsen
dcadaddedf Merge branch 'patch' into update_i18n 2023-02-12 15:49:41 +01:00
Veronica Berglyd Olsen
b0952a38be Make ODT build pass validation entries (#1360) 2023-02-12 15:33:44 +01:00
Veronica Berglyd Olsen
7638db21ec Fix tests 2023-02-12 15:12:39 +01:00
Veronica Berglyd Olsen
c39e37c799 Add more meta data to supporet adding fields in LibreOffice 2023-02-12 14:44:01 +01:00
Veronica Berglyd Olsen
5796d55531 Title elements should be paragraph, not heading to be valid ODF 2023-02-12 13:27:43 +01:00
Veronica Berglyd Olsen
cce1ef54d8 Fix Open Document warning on settings.xml and bump version to 1.3 2023-02-12 12:54:05 +01:00
Veronica Berglyd Olsen
4b7a4e0789 Fix capitalisation in Portuguese translation 2023-02-12 08:36:30 +01:00
Veronica Berglyd Olsen
c2dd579eb4 Add Italian translation 2023-02-12 08:32:02 +01:00
Veronica Berglyd Olsen
ee550c2213 Update translations 2023-02-12 08:31:55 +01:00
Veronica Berglyd Olsen
6ed7c6f5a7 Update version and changelog 2023-02-10 21:50:10 +01:00
Veronica Berglyd Olsen
cd4bae976f Merge branch 'patch' into update_i18n 2023-02-10 21:16:07 +01:00
Veronica Berglyd Olsen
917a4375db Fix issues with novel tree last column (#1355) 2023-02-10 21:07:27 +01:00
Veronica Berglyd Olsen
7fe85ddfde Update base translation file 2023-02-10 20:59:26 +01:00
Veronica Berglyd Olsen
c1f1013cfd Improve test coverage 2023-02-10 20:55:37 +01:00
Veronica Berglyd Olsen
cf742a89c0 Add a menu entry to change column size for last column in novel tree 2023-02-10 20:49:47 +01:00
Veronica Berglyd Olsen
fd14c682a9 Allow more than one item in extra column 2023-02-10 20:16:49 +01:00
Veronica Berglyd Olsen
032ab630c1 Fix block formatting issues (#1354) 2023-02-10 20:11:26 +01:00
Veronica Berglyd Olsen
aa3fe96158 Add some comments to explain what's going on in the block formatting 2023-02-10 20:07:52 +01:00
Veronica Berglyd Olsen
5b20061607 Only insert line break for block formats if the block already has text (#1349, #1350) 2023-02-10 20:01:46 +01:00
Veronica Berglyd Olsen
e9876b4d42 Update docs and project file format specs (#1353) 2023-02-10 19:40:55 +01:00
Veronica Berglyd Olsen
faa644b274 Also link filr format speck in tech docs 2023-02-10 19:30:07 +01:00
Veronica Berglyd Olsen
709ea059cb Fix a typo in the index page note 2023-02-10 19:25:50 +01:00
Veronica Berglyd Olsen
723b44b6db Fix some issues with the fila format spec document 2023-02-09 17:22:02 +01:00
Veronica Berglyd Olsen
72574dd8a6 Make some modifications to docs config 2023-02-09 17:21:13 +01:00
Veronica Berglyd Olsen
6aafbbae3e Add a document builder class (#1316) 2023-02-06 23:23:41 +01:00
Veronica Berglyd Olsen
0b93e4a61a Merge branch 'main' into feature/build_class 2023-02-06 23:05:59 +01:00
Veronica Berglyd Olsen
5c30e1ae33 Merge branch 'patch' into update_i18n 2023-02-05 18:48:43 +01:00
Veronica Berglyd Olsen
25ab8ccbce Add project content path check (#1342) 2023-02-05 18:39:36 +01:00
Veronica Berglyd Olsen
492d94ee6e Check that content path exists before returning it from storage class (#1317) 2023-02-05 18:12:50 +01:00
Veronica Berglyd Olsen
6d45194253 Update completed translations and add Russian project file 2023-02-05 14:13:21 +01:00
Veronica Berglyd Olsen
cdbfcafc38 Make patch workflow match main 2023-02-05 00:16:30 +01:00
Veronica Berglyd Olsen
437fe010b0 Add a basic build file to main 2023-02-05 00:15:09 +01:00
Veronica Berglyd Olsen
5f6f853336 Only run packaging workflow on certain tags 2023-02-05 00:00:47 +01:00
Veronica Berglyd Olsen
75b20889f4 Changes to MacOS build (#1340) 2023-02-04 23:46:48 +01:00
Veronica Berglyd Olsen
6b1183392f Try using workflow_dispatch instead 2023-02-04 23:44:03 +01:00
Veronica Berglyd Olsen
652ce3848b Try out using environment in workflow 2023-02-04 23:34:00 +01:00
Veronica Berglyd Olsen
1d90ab9fc1 Reverting som changes that didn't matter 2023-02-04 23:12:14 +01:00
Veronica Berglyd Olsen
cc48f8f8aa Try removeing the python3.1 folder 2023-02-04 22:27:16 +01:00
Veronica Berglyd Olsen
44f624faf4 Try the -a option instead 2023-02-04 20:54:51 +01:00
Veronica Berglyd Olsen
b4813f904a Try the preserve symlinks flag in mac bundle build 2023-02-04 20:45:15 +01:00
Veronica Berglyd Olsen
8a5ff3ab85 Turn off short retention time for now 2023-02-04 19:47:10 +01:00
Veronica Berglyd Olsen
76e1d47d14 Merge branch 'patch' into feature/macos-bundle 2023-02-04 19:33:32 +01:00
Veronica Berglyd Olsen
0e529fd72f Rewrite macOS build workflow and make some changes to build script 2023-02-04 19:33:12 +01:00
Veronica Berglyd Olsen
74ead29433 Move MacOS plist info back to a template file, and simplify stuff in setup.py 2023-02-04 19:33:04 +01:00
Veronica Berglyd Olsen
08bc2938df Add MacOS bundle distribution (#1276) 2023-02-04 17:37:47 +01:00
Veronica Berglyd Olsen
a6d9ed0c8c Merge branch 'patch' into macos-appbundle 2023-02-04 17:35:04 +01:00
Veronica Berglyd Olsen
c9d768e138 Project Details dialog fixes (#1339) 2023-02-04 16:48:18 +01:00
Veronica Berglyd Olsen
4ba3297d17 Update base translation file 2023-02-04 16:45:53 +01:00
Veronica Berglyd Olsen
a5d05ab777 Improve time format of editing time on project details dialog (#1335) 2023-02-04 16:32:41 +01:00
Veronica Berglyd Olsen
4e815a5f86 Make sure project name, title and author cannot be set to string "None" 2023-02-04 16:29:51 +01:00
Veronica Berglyd Olsen
b1bc80a0cd Make sure title and author is always refreshed when project details dialog is opened (#1336) 2023-02-04 16:29:23 +01:00
Veronica Berglyd Olsen
b0f38c3e2f Merge branch 'main' into feature/build_class 2023-02-01 16:58:27 +01:00
Rachel Powers
af1233925e fix icns generation and bundle display name.
while the icns *can* be generated on linux it is much preferable to generate it on macos
it is checked in as a convience

this commit fixes the appbundle not displaying the icon corrected
and corrects the app being displayed as "python" in the top bar when the bundle is run

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-31 17:10:36 -07:00
Veronica Berglyd Olsen
71a8e72180 Merge branch 'patch' into macos-appbundle 2023-01-30 12:14:57 +01:00
Veronica Berglyd Olsen
8273fcca1e Update outdated info in main readme 2023-01-30 12:10:04 +01:00
Veronica Berglyd Olsen
9d46dde1c5 Fix typo in 2.0 release notes 2023-01-29 11:53:08 +01:00
Veronica Berglyd Olsen
0702154716 Merge branch 'main' into feature/build_class 2023-01-29 03:15:40 +01:00
Veronica Berglyd Olsen
0ad7dac3d3 Merge 2.0.4 (#1327) 2023-01-29 03:15:12 +01:00
Veronica Berglyd Olsen
f56f990085 Merge branch 'main' into merge_2.0.4 2023-01-29 03:11:30 +01:00
Veronica Berglyd Olsen
4f11990b93 Release 2.0.4 (#1326) 2023-01-29 02:44:08 +01:00
Veronica Berglyd Olsen
e4cc9ef5b5 Bump version to 2.0.4 and update changelog 2023-01-29 02:34:42 +01:00
Veronica Berglyd Olsen
fe6d4de025 Fix PyQt5 version check (#1325) 2023-01-29 02:27:06 +01:00
Veronica Berglyd Olsen
c9fe0cad05 Also fix import in the error handler 2023-01-29 02:22:14 +01:00
Veronica Berglyd Olsen
1437659a4e Drop the splitVersionNumber function 2023-01-29 02:14:21 +01:00
Veronica Berglyd Olsen
0c75a53e57 Fix wrong inport of PyQt5 version (#1324) 2023-01-29 02:13:32 +01:00
Veronica Berglyd Olsen
f04f4a3e04 Update some comments and docstrings in the index class 2023-01-25 15:05:59 +01:00
Veronica Berglyd Olsen
e2f7e77ec2 Mentione Qt SVG dependency for Arch Linux in the docs (#1319) 2023-01-21 23:03:46 +01:00
Veronica Berglyd Olsen
004828f76c Mention Qt SVG dependency for Arch Linux in the docs (#1320) 2023-01-21 23:00:42 +01:00
Veronica Berglyd Olsen
3d4dbd0bb0 Mention Qt SVG dependency for Arch Linux in the docs (#1319)
Signed-off-by: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
2023-01-21 22:52:43 +01:00
Veronica Berglyd Olsen
3a0bae92be Rename the doc build functions 2023-01-12 10:21:36 +01:00
Veronica Berglyd Olsen
f569c66348 Add test coverage of the doc builder class 2023-01-11 12:30:08 +01:00
Veronica Berglyd Olsen
88cde331df Fix a few issues in the doc builder class 2023-01-11 12:29:52 +01:00
Veronica Berglyd Olsen
72e11601a0 Complete the first version of the doc builder class and add test 2023-01-10 17:59:23 +01:00
Veronica Berglyd Olsen
87256ee62f Merge branch 'main' into feature/build_class 2023-01-10 17:59:04 +01:00
Rachel Powers
beb95c49fa fix: fit artifact uploads
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-09 00:53:15 -07:00
Rachel Powers
f912d55177 refactor: move plist gen into setup.py
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 22:09:32 -07:00
Rachel Powers
b7e7a087f8 fix: remove codesign for now, only build on tags
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 19:27:12 -07:00
Rachel Powers
82dd1c46cf fix: force build on this branch for testing
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 19:27:12 -07:00
Rachel Powers
a228c4b32a Squashed commit of the following:
commit a1f358b6f0a193be7d3d72fa4082fa09701ebe16
Author: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date:   Thu Dec 1 11:48:38 2022 -0700

    fix: reneable the res of the build

    Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

commit 8ed02b09aeb9c302e30023fcbf73c8b5e3bbc8ff
Author: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date:   Thu Dec 1 11:41:19 2022 -0700

    fix: install qt for tools

    Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

commit d68dc29d49f1a2547912fc97867126f4fc6d96c4
Author: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date:   Thu Dec 1 11:32:07 2022 -0700

    fix: add tex-gyre to texlive install

    Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

commit ff654a2a914cd00c867088baf147f8ccd70a185c
Author: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date:   Thu Dec 1 11:08:46 2022 -0700

    fix: add required latex pkgs

    Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

commit 1a4babc11c274f69c6c04edddfc5011f9162759e
Author: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date:   Thu Dec 1 10:17:31 2022 -0700

    fix: install sphinx via pip3

    Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

commit 4b602b0955fabc2b5067bae46c3408dab0f0dd72
Author: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date:   Thu Dec 1 10:05:46 2022 -0700

    fix: ensure sphinx is properly installed

    Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

commit 59ad26f434d6c5391c2448724aa44587c2cf7a46
Author: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date:   Thu Dec 1 09:59:40 2022 -0700

    feat: install scheme-basic texlive pkg
    run setup.py in proper dir

    Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

commit 16cd50307fbd4519fd6ebdc719e78e99eb37d02b
Author: Rachel Powers <508861+Ryex@users.noreply.github.com>
Date:   Thu Dec 1 09:54:42 2022 -0700

    feat: build manual, translations, and sample project zip

    Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 19:27:12 -07:00
Rachel Powers
682986d9b9 fix: add entitlements
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 19:27:12 -07:00
Rachel Powers
b29b6d6eef fix: don't remove the python symlink
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 19:27:12 -07:00
Rachel Powers
8a9a52da57 fix: pull the version from the python file
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 19:27:12 -07:00
Rachel Powers
faf302c6d8 feat: add github workflow to build for macos
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 19:27:12 -07:00
Rachel
f71afb5732 feat: cleanup build script
use python 3.10
use curl over wget (pre-installed)
ensure enchant is installed
cleanup better to limit app bundle size
fix Info.plist

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 19:27:12 -07:00
Rachel Powers
0eb7185d40 feat: add a macos build script
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-08 19:27:12 -07:00
Veronica Berglyd Olsen
286dbff47b Merge 2.0.3 (#1312) 2023-01-08 19:52:09 +01:00
Veronica Berglyd Olsen
a671878e26 Add build for Ubuntu 23.04 2023-01-08 19:26:37 +01:00
Veronica Berglyd Olsen
5f65819f40 Release 2.0.3 (#1311) 2023-01-08 19:14:54 +01:00
Veronica Berglyd Olsen
ef268dc386 Bump version to 2.0.3 and update changelog and release notes 2023-01-08 19:11:26 +01:00
Veronica Berglyd Olsen
41a0788b4c Update copyright year to 2023 2023-01-08 18:47:04 +01:00
Veronica Berglyd Olsen
073a945b8e Update translations 2023-01-08 18:42:28 +01:00
Veronica Berglyd Olsen
90721e244b Fix handling of item with missing parent item (#1309) 2023-01-08 18:23:45 +01:00
Veronica Berglyd Olsen
65bfd20ced Update tests 2023-01-08 18:11:06 +01:00
Veronica Berglyd Olsen
22d761dea3 Improve handling of unexpected project items (#1283) 2023-01-08 17:57:47 +01:00
Veronica Berglyd Olsen
5daf4ed6bc Update status/import label form code (#1308) 2023-01-08 17:30:03 +01:00
Veronica Berglyd Olsen
be1894ab97 Clean up the status/import form code a bit 2023-01-08 17:24:36 +01:00
Veronica Berglyd Olsen
9529a79707 Clear the staus/import form when no item is selected (#1290) 2023-01-08 17:16:27 +01:00
Veronica Berglyd Olsen
f6e5293d8e Fix convert folders and open from outline (#1306) 2023-01-05 23:59:19 +01:00
Veronica Berglyd Olsen
31403b4299 Fix it again, but now also for enter key (#1291) 2023-01-05 23:54:51 +01:00
Veronica Berglyd Olsen
3b9e3762d3 Make sure editor/viewer is visible on open doc request (#1291) 2023-01-05 23:50:27 +01:00
Veronica Berglyd Olsen
748d76dca6 Fix converting folder to file (#1305) 2023-01-05 23:45:48 +01:00
Veronica Berglyd Olsen
7e0e18787f Add a check that a non-new project actually exists (#1301) 2022-12-23 12:34:08 +01:00
Veronica Berglyd Olsen
3b95b2838c Update test and translation file 2022-12-23 12:28:48 +01:00
Veronica Berglyd Olsen
8749321614 Block opening a non-new project in a non-existing location (#1300) 2022-12-23 12:28:30 +01:00
Veronica Berglyd Olsen
12c09b1f6c Update icons and allow custom icon themes (#1299) 2022-12-20 12:56:55 +01:00
Veronica Berglyd Olsen
1664f92cc8 Also allow custom icon themes 2022-12-20 12:50:21 +01:00
Veronica Berglyd Olsen
6c76e31e0b Remove Inkscape meta data from a bunch of icons 2022-12-20 12:32:42 +01:00
Veronica Berglyd Olsen
b7744bbda2 Correct paths for input-none icons (#1297) 2022-12-20 12:25:15 +01:00
Veronica Berglyd Olsen
187a75c99a Update i18n and contributor credits (#1298) 2022-12-20 12:10:31 +01:00
Veronica Berglyd Olsen
670aab5224 Remove redundant CSS 2022-12-20 12:06:14 +01:00
Veronica Berglyd Olsen
1c4256ff4c Make links consistent 2022-12-20 12:03:25 +01:00
Veronica Berglyd Olsen
55e91f08dd Add a credits page to the About dialog 2022-12-20 11:54:45 +01:00
Veronica Berglyd Olsen
c581c774e9 Update credits doc 2022-12-20 11:33:51 +01:00
Veronica Berglyd Olsen
bce5025a66 Update Chinese translation 2022-12-20 10:40:08 +01:00
Veronica Berglyd Olsen
66cc3777dc Release 2.0.2 (#1279) 2022-12-01 23:41:38 +01:00
Veronica Berglyd Olsen
b1def7b568 Release 2.0.2 2022-12-01 23:33:16 +01:00
Veronica Berglyd Olsen
1b177ff5b5 Fix highlighting not updating on prefs change (#1278) 2022-12-01 23:24:36 +01:00
Veronica Berglyd Olsen
594ccd45c7 Fix linux workflow 2022-12-01 23:21:00 +01:00
Veronica Berglyd Olsen
2b0216a398 Changing colouring preferences on the highlighting tab needs to re-init the syntax highlighter (#1274) 2022-12-01 23:12:46 +01:00
Veronica Berglyd Olsen
3fa9c29d7a Populate build functions in new build class 2022-12-01 22:56:24 +01:00
Veronica Berglyd Olsen
25f6234cf0 Add a new module for a document build class 2022-12-01 16:12:25 +01:00
Veronica Berglyd Olsen
347266a9bd Post release fix (#1272) 2022-11-29 17:41:16 +01:00
Veronica Berglyd Olsen
e7bce03be4 Add empty init files to subdirs of main package 2022-11-29 17:22:23 +01:00
Veronica Berglyd Olsen
9d08d83c2c Release 2.0.1 (#1270) 2022-11-29 16:37:29 +01:00
Veronica Berglyd Olsen
e0f7e50b64 Release 2.0.1 2022-11-29 16:28:19 +01:00
Veronica Berglyd Olsen
b57d53adcd Update French translation (#1265) 2022-11-28 21:37:22 +01:00
Veronica Berglyd Olsen
875bde2253 Update French translation 2022-11-28 21:30:45 +01:00
Veronica Berglyd Olsen
e77426f364 Add a icon theme fallback value (#1264) 2022-11-28 21:28:37 +01:00
Veronica Berglyd Olsen
9af6fa062c Add more info on custome themes in the docs 2022-11-28 21:25:48 +01:00
Veronica Berglyd Olsen
6bc59eb7de Make the theme class fall back to typicons lighht icon theme (#1263) 2022-11-28 21:05:34 +01:00
Veronica Berglyd Olsen
49cab9ec29 Use direct imports everywhere (#1262) 2022-11-28 18:31:54 +01:00
Veronica Berglyd Olsen
32d75567e3 Use direct imports everywhere 2022-11-28 18:23:36 +01:00
Veronica Berglyd Olsen
a51f0db6fa Release 2.0 (#1261) 2022-11-28 17:27:38 +01:00
Veronica Berglyd Olsen
09eeb28257 Change the release data to today 2022-11-28 17:25:26 +01:00
Veronica Berglyd Olsen
956172af0c Make a minor change to the release notes 2022-11-28 17:23:24 +01:00
Veronica Berglyd Olsen
35ec8e0f12 Update release notes 2022-11-28 17:12:48 +01:00
Veronica Berglyd Olsen
8390615489 Bumped version and updated changelog 2022-11-28 10:59:41 +01:00
Veronica Berglyd Olsen
df499a9776 Update translations (#1254) 2022-11-28 10:35:38 +01:00
Veronica Berglyd Olsen
e027c4fd4c Update partial translations 2022-11-28 10:33:13 +01:00
Veronica Berglyd Olsen
0dd9f49856 Update completed translations 2022-11-27 17:15:04 +01:00
Veronica Berglyd Olsen
8853c73749 Remove some no longer needed strings from translations 2022-11-27 17:12:18 +01:00
Veronica Berglyd Olsen
9cb97f6a15 Merge branch 'main' into i18n 2022-11-27 17:11:08 +01:00
Veronica Berglyd Olsen
f69641c0f8 Simplify author setting (#1258) 2022-11-27 17:10:29 +01:00
Veronica Berglyd Olsen
1ac6e48c23 Update file format spec 2022-11-27 17:00:36 +01:00
Veronica Berglyd Olsen
a3ad90f419 Update tests 2022-11-27 16:57:11 +01:00
Veronica Berglyd Olsen
e5f04e5234 Reduce number of author entries in project to one 2022-11-27 16:55:54 +01:00
Veronica Berglyd Olsen
9d97e26fc1 Clean up the changelog a bit 2022-11-25 23:10:36 +01:00
Veronica Berglyd Olsen
e84b8d4d1d Fix versions in module docstrings, more 2022-11-25 22:57:05 +01:00
Veronica Berglyd Olsen
d0e4c9f822 Fix versions in module docstrings 2022-11-25 22:43:27 +01:00
Veronica Berglyd Olsen
378a805b02 Update German translation 2022-11-25 22:22:36 +01:00
Veronica Berglyd Olsen
6f465e28e2 Merge branch 'main' into i18n 2022-11-24 15:18:14 +01:00
Veronica Berglyd Olsen
1678cd5e96 Update docs (#1255) 2022-11-24 15:18:03 +01:00
Veronica Berglyd Olsen
44c6c136a2 Update docs, second round 2022-11-24 15:13:46 +01:00
Veronica Berglyd Olsen
5538b04d55 Update completed translations 2022-11-22 22:56:57 +01:00
Veronica Berglyd Olsen
febf67179a Fix minor GUI issues (#1253) 2022-11-22 13:19:12 +01:00
Veronica Berglyd Olsen
0a5fa0d190 Update main language file 2022-11-22 13:06:56 +01:00
Veronica Berglyd Olsen
4fa6329eb6 Fix tests and minor issues 2022-11-22 13:05:05 +01:00
Veronica Berglyd Olsen
3a77228aaa Fix retention of selected item of novel tree in the details panel 2022-11-22 12:54:26 +01:00
Veronica Berglyd Olsen
f26a745d0e Use novel selector for project details 2022-11-22 12:45:10 +01:00
Veronica Berglyd Olsen
55f7a91eaf Add a button to open the novel tree root selector 2022-11-22 12:33:32 +01:00
Veronica Berglyd Olsen
b7373688e7 Add a novel selector class (#1252) 2022-11-18 13:28:35 +01:00
Veronica Berglyd Olsen
1b7814e891 Disable tooltip when novel selector is idsabled 2022-11-18 02:07:30 +01:00
Veronica Berglyd Olsen
039b2095f0 Let the novel selector replace the novel tree label 2022-11-18 02:01:55 +01:00
Veronica Berglyd Olsen
5c7c820fef Add a combo box to novel tree 2022-11-18 01:03:44 +01:00
Veronica Berglyd Olsen
11b6ed87d4 Add the novel selector widget and use it for the outline 2022-11-18 00:44:58 +01:00
Veronica Berglyd Olsen
250a41a84a Move StatusLED class to new components module 2022-11-18 00:19:15 +01:00
Veronica Berglyd Olsen
8c5ab9d626 Update all translation files and add test (#1251) 2022-11-17 17:25:50 +01:00
Veronica Berglyd Olsen
281f878a79 Remove build language part of test as this is already done in workflow 2022-11-17 17:19:40 +01:00
Veronica Berglyd Olsen
77489d22cd Add test coverage of language files 2022-11-17 17:15:39 +01:00
Veronica Berglyd Olsen
fa880f5e2a Update all translation files 2022-11-17 16:40:13 +01:00
Veronica Berglyd Olsen
f014d690ea Add German trannslation (#1033 by @HeyMyian) 2022-11-17 16:25:49 +01:00
Veronica Berglyd Olsen
7ece1123a7 Merge branch 'main' into i18n-de_DE-created 2022-11-17 16:23:14 +01:00
Veronica Berglyd Olsen
ecff40dade Add file format specification (#1249) 2022-11-17 11:01:42 +01:00
Veronica Berglyd Olsen
d13e2531e8 Add a link to the file format spec in the docs (#1012) 2022-11-17 10:58:04 +01:00
Veronica Berglyd Olsen
47d2c20bfd Move the file format spec document into the source code 2022-11-17 10:57:19 +01:00
Veronica Berglyd Olsen
18c3e9851e Update docs for 2.0 (#1248) 2022-11-16 23:07:30 +01:00
Veronica Berglyd Olsen
308a1649a5 Update docs project section 2022-11-16 23:04:35 +01:00
Veronica Berglyd Olsen
09c414c991 Update docs usage section 2022-11-16 16:17:22 +01:00
Veronica Berglyd Olsen
af7b46f714 Update docs introduction section 2022-11-16 15:59:21 +01:00
Veronica Berglyd Olsen
9a20eab1b2 Update docs, index and build, and rename viewsbar to sidebar 2022-11-16 15:58:52 +01:00
Veronica Berglyd Olsen
444c168da5 Update closing project procedure, and editor scrolling (#1247) 2022-11-16 11:28:47 +01:00
Veronica Berglyd Olsen
61ab597499 Make go to line in editor work consistently with auto-scrolling 2022-11-16 11:21:16 +01:00
Veronica Berglyd Olsen
62cf9b6184 Sort out status leds and project closing (#1237) 2022-11-16 11:20:40 +01:00
Veronica Berglyd Olsen
9f4b9a4dde Update workflow actions (#1246) 2022-11-16 00:00:54 +01:00
Veronica Berglyd Olsen
af991eb31b Update actions for syntax workflow 2022-11-15 23:43:43 +01:00
Veronica Berglyd Olsen
e6267f32b2 Merge branch 'main' into actions 2022-11-15 23:43:17 +01:00
Veronica Berglyd Olsen
c83b36acfa Set a max column width for novel tree extra column (#1245) 2022-11-15 23:41:38 +01:00
Veronica Berglyd Olsen
b7f99ec95f Update workflow actions 2022-11-15 23:41:04 +01:00
Veronica Berglyd Olsen
1e2920641d Force a max width of extra column in novel view (#1238) 2022-11-15 23:27:54 +01:00
Veronica Berglyd Olsen
a15d25370e Improve project tree iterator 2022-11-15 21:49:15 +01:00
Veronica Berglyd Olsen
7ce2fd29a6 Improve document navigation (#1243) 2022-11-15 17:00:27 +01:00
Veronica Berglyd Olsen
e0ca2e7fb5 Update tests and remove unused functions in viewer 2022-11-15 16:50:41 +01:00
Veronica Berglyd Olsen
a2ea7b40e2 Don't reload document if opening the same (#1242) 2022-11-15 16:49:59 +01:00
Veronica Berglyd Olsen
6560594c49 Fix scrolling when moving to a specific line in editor (#1239) 2022-11-15 16:48:46 +01:00
Veronica Berglyd Olsen
c095cc4bf0 Auto-update novel item meta (#1241) 2022-11-14 20:25:03 +01:00
Veronica Berglyd Olsen
8dbaa6bbd9 Remove no longer needed index function 2022-11-14 18:59:47 +01:00
Veronica Berglyd Olsen
ebc6654069 Improve how the novel tree is refreshed 2022-11-14 18:45:36 +01:00
Veronica Berglyd Olsen
992ed4f36c Update tests 2022-11-14 17:56:31 +01:00
Veronica Berglyd Olsen
b0a0ca089f Rewrite index class to use sequential title keys rather than line numbers 2022-11-14 16:59:51 +01:00
Veronica Berglyd Olsen
e52d8d9ff7 Add novel tree method to refresh metadata for item 2022-11-14 16:59:04 +01:00
Veronica Berglyd Olsen
827ae921a4 Merge branch 'main' into i18n-de_DE-created 2022-11-13 10:52:13 +01:00
Veronica Berglyd Olsen
e9b603d5a5 Release 2.0 RC 2 (#1231) 2022-11-13 10:06:39 +01:00
Veronica Berglyd Olsen
d93b3aa79f Always save project when closing 2022-11-12 18:59:09 +01:00
Veronica Berglyd Olsen
9b6ba891a4 Merge branch 'main' into release_2.0rc2 2022-11-12 18:30:00 +01:00
Veronica Berglyd Olsen
8a9b79abd0 Improve tree class and auto-rebuild index (#1236) 2022-11-12 18:29:49 +01:00
Veronica Berglyd Olsen
d4d23a140f Update changelog 2022-11-12 18:29:20 +01:00
Veronica Berglyd Olsen
e7ce13f647 Rebuild index when opdating project (#1235) 2022-11-12 18:23:13 +01:00
Veronica Berglyd Olsen
74d71f24ca Improve the setOrder method in the NWTree class, and improve tests 2022-11-12 18:22:30 +01:00
Veronica Berglyd Olsen
a1213f1e84 Rename class project variable 2022-11-12 13:08:55 +01:00
Veronica Berglyd Olsen
36cf5c1d76 Merge new changes and update changelog 2022-11-11 17:24:04 +01:00
Veronica Berglyd Olsen
fd85770d4d Merge branch 'main' into release_2.0rc2 2022-11-11 17:22:20 +01:00
Veronica Berglyd Olsen
116ebd8243 Update Config and NWItem class (#1232) 2022-11-11 17:21:32 +01:00
Veronica Berglyd Olsen
612034f6be Make the item class non-dynamic, and cache formatting vars in editor 2022-11-11 17:09:03 +01:00
Veronica Berglyd Olsen
b05028e3c9 Split up the storage of quote symbols in config 2022-11-11 12:50:36 +01:00
Veronica Berglyd Olsen
495209cd1a Fix tests of XML files and version number (again) 2022-11-11 12:16:03 +01:00
Veronica Berglyd Olsen
402cb09bb6 Fix tests of XML files and version number 2022-11-10 18:26:08 +01:00
Veronica Berglyd Olsen
dbfda1e680 Update Norwegian and US English 2022-11-10 18:17:51 +01:00
Veronica Berglyd Olsen
b03b723d25 Update i18n file 2022-11-10 18:01:13 +01:00
Veronica Berglyd Olsen
5a8e8b2221 Release 2.0 RC 2 2022-11-10 17:58:13 +01:00
Veronica Berglyd Olsen
6a664037cf Block toolbars when there is no project (#1230) 2022-11-10 17:11:32 +01:00
Veronica Berglyd Olsen
f556fde848 Make some minor code fixes 2022-11-10 17:04:12 +01:00
Veronica Berglyd Olsen
bbc5be0075 Disable toolbars when no project is open 2022-11-10 16:32:17 +01:00
Veronica Berglyd Olsen
b587ab638c Make further config class updates (#1229) 2022-11-10 13:37:09 +01:00
Veronica Berglyd Olsen
a1ddc6ce1d Fix test file comparison filters 2022-11-10 13:24:13 +01:00
Veronica Berglyd Olsen
b46ad86c31 Clean up config file format, modify how projects are launched, and add broken theme setting handling 2022-11-10 13:20:26 +01:00
Veronica Berglyd Olsen
15fec91358 Clean up setters and getters in Config 2022-11-10 09:29:00 +01:00
Veronica Berglyd Olsen
e2f3a44d96 Fix pollution of recent cache from tests 2022-11-09 23:10:30 +01:00
Veronica Berglyd Olsen
eac7d9b9ee Refactor config class, and switch to pathlib (#1228) 2022-11-09 23:03:03 +01:00
Veronica Berglyd Olsen
0c7fdc7013 Fix windows vs posix path issue in test 2022-11-09 22:51:12 +01:00
Veronica Berglyd Olsen
03e173634f Switch to Path objects nearly everywhere 2022-11-09 22:43:48 +01:00
Veronica Berglyd Olsen
cb755ba820 Move recent cache out of config, and update all tests 2022-11-09 20:54:13 +01:00
Veronica Berglyd Olsen
8721d53ab2 Clean up the config class names and methods 2022-11-09 18:47:50 +01:00
Veronica Berglyd Olsen
47b57172eb Change lastPath to a Path object 2022-11-09 18:21:40 +01:00
Veronica Berglyd Olsen
9d3291aba6 Change assetPath to a Path object 2022-11-09 17:44:20 +01:00
Veronica Berglyd Olsen
6792c11a71 Change dataPath to a Path object 2022-11-09 00:25:50 +01:00
Veronica Berglyd Olsen
6f5539de90 Change confPath to a Path object 2022-11-09 00:09:40 +01:00
Veronica Berglyd Olsen
9500c3bdb2 Make some remaining project class bariables private 2022-11-08 23:09:08 +01:00
Veronica Berglyd Olsen
5999e72592 Add a storage class (#1225) 2022-11-08 22:46:50 +01:00
Veronica Berglyd Olsen
0b44cf9c0a Fix issues with variying file order in zip archive 2022-11-08 22:29:54 +01:00
Veronica Berglyd Olsen
f5a3280565 Add test coverage of storage class 2022-11-08 22:19:22 +01:00
Veronica Berglyd Olsen
ee79d3d6d6 Fix tests for core classes 2022-11-08 19:48:06 +01:00
Veronica Berglyd Olsen
b024c0996d Move zipping of project to storage class 2022-11-08 19:25:56 +01:00
Veronica Berglyd Olsen
262a6c36b7 Rename NWDoc class to NWDocument 2022-11-07 22:51:09 +01:00
Veronica Berglyd Olsen
26f7bb4b32 Change how spel checking and booleans in general are saved in the XML 2022-11-07 22:46:30 +01:00
Veronica Berglyd Olsen
42f2bf3628 Merge branch 'main' into storage_class 2022-11-07 12:24:19 +01:00
Veronica Berglyd Olsen
6f6fe876e2 Fix parameter missing in Python 3.7 2022-11-07 10:45:53 +01:00
Veronica Berglyd Olsen
615ee2958a Remove project path attribute from project class 2022-11-06 00:39:30 +01:00
Veronica Berglyd Olsen
a75424e44b Use storage class to return document objects 2022-11-06 00:29:43 +01:00
Veronica Berglyd Olsen
76a1421fde Remove project content attribute from project class 2022-11-06 00:15:24 +01:00
Veronica Berglyd Olsen
972ed25a8c Remove project cache attribute from project class 2022-11-05 23:33:50 +01:00
Veronica Berglyd Olsen
21ab4e58f9 Remove project meta attribute from project class 2022-11-05 23:29:25 +01:00
Veronica Berglyd Olsen
82b34d9d2c Move lock file code to storage class 2022-11-05 22:14:33 +01:00
Veronica Berglyd Olsen
9cdf840d12 Make some minor improvements to the xml reader 2022-11-05 21:37:10 +01:00
Veronica Berglyd Olsen
72cc0cf0aa Add project file format 1.5 2022-11-05 21:13:18 +01:00
Veronica Berglyd Olsen
c6d3f680cc Add a UUID to projects 2022-11-05 17:03:45 +01:00
Veronica Berglyd Olsen
8b4dac4e13 Split project data class back into a separate file 2022-11-05 16:24:57 +01:00
Veronica Berglyd Olsen
783a849e09 Remove the old legacy format code 2022-11-05 16:19:19 +01:00
Veronica Berglyd Olsen
407e7fa69e Add storage code to handle projecty structure and old projects 2022-11-05 16:15:26 +01:00
Veronica Berglyd Olsen
2b8d51035d Fix version requirements in debian build file 2022-11-03 23:48:30 +01:00
Veronica Berglyd Olsen
2e590b742f Move new project tool to core tools (resolves #1152) 2022-11-03 23:47:51 +01:00
Veronica Berglyd Olsen
bd81ea0880 Make project xml class and tests use pathlib instead of os 2022-11-03 22:17:25 +01:00
Veronica Berglyd Olsen
dfd9e15951 Use storage class to open and save project XML 2022-11-03 21:51:56 +01:00
Veronica Berglyd Olsen
96b011cf70 Rename doctools module to coretools 2022-11-03 21:41:57 +01:00
Veronica Berglyd Olsen
3eee8442a7 Make packing and unpacking item data consistent 2022-11-03 17:30:54 +01:00
Veronica Berglyd Olsen
da4f4b0801 Add prototyype storage class 2022-11-01 22:58:12 +01:00
Veronica Berglyd Olsen
717d516f6a Delegate responsibility for the index to the project class 2022-11-01 22:32:29 +01:00
Veronica Berglyd Olsen
e85bd56f60 Auto-open first document (#1223) 2022-11-01 19:23:35 +01:00
Veronica Berglyd Olsen
a2f92c1223 Auto-open first document on new project (#1219) 2022-11-01 19:15:32 +01:00
Veronica Berglyd Olsen
9dd1a60629 Fix bug with active icon on item details panel 2022-11-01 19:11:38 +01:00
Veronica Berglyd Olsen
5abc9784f1 Refactor project XML handling (#1221) 2022-11-01 18:44:59 +01:00
Veronica Berglyd Olsen
f1100d4475 Remove minimal project from test suite 2022-11-01 18:32:29 +01:00
Veronica Berglyd Olsen
494b94430c Fix tests broken by xml rewrite 2022-11-01 18:31:03 +01:00
Veronica Berglyd Olsen
5b7f2b2b55 Add test coverage of the project xml class 2022-11-01 17:14:57 +01:00
Veronica Berglyd Olsen
f41db97860 Clean up the content loading 2022-11-01 13:36:22 +01:00
Veronica Berglyd Olsen
0cfaf4f021 Drop the total word count value in the XML and rewrite how counts are handled 2022-11-01 12:21:16 +01:00
Veronica Berglyd Olsen
6fd7107675 Remove pre-generatiopn of status and importance items 2022-10-31 23:18:16 +01:00
Veronica Berglyd Olsen
a88a2f5b40 Change file format to save dictionaries consistently 2022-10-31 22:37:05 +01:00
Veronica Berglyd Olsen
13b9e5a434 Move project data class to project file 2022-10-31 21:25:40 +01:00
Veronica Berglyd Olsen
a760aff826 Complete the xml writer class 2022-10-31 20:05:20 +01:00
Veronica Berglyd Olsen
3a161e90f9 Complete loading project xml via data class 2022-10-31 18:11:46 +01:00
Veronica Berglyd Olsen
522acc479b Move status and importance to data class 2022-10-31 17:01:50 +01:00
Veronica Berglyd Olsen
cc2ef85afd CHange how current word counts are handled 2022-10-31 16:19:31 +01:00
Veronica Berglyd Olsen
9d283d2eae Move all remaining trivial project settings to the data class 2022-10-31 15:55:33 +01:00
Veronica Berglyd Olsen
aeef8734b8 Move the remaining project meta settings to project data class 2022-10-31 00:28:10 +01:00
Veronica Berglyd Olsen
192806a46d Fix or disable broken tests 2022-10-30 23:55:58 +01:00
Veronica Berglyd Olsen
e887ec6991 Move project name to project data class 2022-10-30 23:18:18 +01:00
Veronica Berglyd Olsen
ea80fd3c71 Complete the XML parsing 2022-10-30 22:51:31 +01:00
Veronica Berglyd Olsen
6d1734b655 Merge branch 'main' into xml_rw_class 2022-10-30 19:40:12 +01:00
Veronica Berglyd Olsen
72f06620e9 Add version and build info to AppImage build (#1218) 2022-10-30 17:59:08 +01:00
Veronica Berglyd Olsen
aa963dea3d Add version and build info to AppImage build (#1182) 2022-10-30 17:55:38 +01:00
Veronica Berglyd Olsen
16e7df0526 Allow moving split document to trash (#1217) 2022-10-30 17:21:29 +01:00
Veronica Berglyd Olsen
4d5c1b2455 Update split document tests 2022-10-30 17:14:28 +01:00
Veronica Berglyd Olsen
c1988bcc17 Fix bug where split document loses status or importance 2022-10-30 17:07:24 +01:00
Veronica Berglyd Olsen
1784d9ce28 Add move to trash switch on split dialog and processing (#1179) 2022-10-30 17:03:52 +01:00
Veronica Berglyd Olsen
15fd4c51df Fix bug with missing icons in outline view 2022-10-30 16:58:10 +01:00
Veronica Berglyd Olsen
fd92f1c588 Update active/inactive and status/importance icons (#1216) 2022-10-30 15:31:03 +01:00
Veronica Berglyd Olsen
80496ab1ed Improve active/inactive icons again 2022-10-30 15:16:39 +01:00
Veronica Berglyd Olsen
dbade05e46 Generate nicer status icons 2022-10-30 02:33:00 +02:00
Veronica Berglyd Olsen
e80536405e Replace active status icons in project tree 2022-10-30 01:21:07 +02:00
Veronica Berglyd Olsen
ea59379479 Add new checkbox icons 2022-10-30 01:20:31 +02:00
Veronica Berglyd Olsen
18878dd19b Change how item data is stored in the project tree 2022-10-29 17:55:45 +02:00
Veronica Berglyd Olsen
309a58cb18 Fix missing synopsis action in main window 2022-10-29 01:36:31 +02:00
Veronica Berglyd Olsen
64fbc2f4e9 Add format and insert features (#1214) 2022-10-29 01:33:42 +02:00
Veronica Berglyd Olsen
dcb473137b Update documentation and test with synopsis insert feature 2022-10-29 01:26:58 +02:00
Veronica Berglyd Olsen
3a90ee2b0d Add insert menu entry for synopsis comment (#1177) 2022-10-29 01:26:26 +02:00
Veronica Berglyd Olsen
dc401278fb Update tests 2022-10-29 01:05:41 +02:00
Veronica Berglyd Olsen
33eb3efb11 Remove restriction on formatting empty block (#1178) 2022-10-29 01:05:33 +02:00
Veronica Berglyd Olsen
6d15bc5f14 Fix help text in Preferences 2022-10-29 00:56:39 +02:00
Veronica Berglyd Olsen
04c4b9eda5 Update theme system (#1212) 2022-10-29 00:50:26 +02:00
Veronica Berglyd Olsen
4a9ea459fa Make some minor changes and update test coverage 2022-10-29 00:38:32 +02:00
Veronica Berglyd Olsen
9b1c3fece2 Update default themes and remove custom style sheet feature 2022-10-28 23:50:52 +02:00
Veronica Berglyd Olsen
f76fc95494 Complete coverage of themes classes 2022-10-28 23:26:25 +02:00
Veronica Berglyd Olsen
42f5ea205f Clean up GUI tests 2022-10-28 22:15:54 +02:00
Veronica Berglyd Olsen
28916afcce Add test coverage of GUI theme 2022-10-28 00:00:57 +02:00
Veronica Berglyd Olsen
34193021e8 Simplify the themes class a bit 2022-10-27 23:47:29 +02:00
Veronica Berglyd Olsen
c7999831c9 Remove icon setting from config, and let the theme control it 2022-10-26 22:01:04 +02:00
Veronica Berglyd Olsen
8d7ebefa65 Fix updating syntax colours (#1171) 2022-10-25 23:56:07 +02:00
Veronica Berglyd Olsen
88183cdc39 Add updateTheme functions to remaining GUI components 2022-10-25 23:42:43 +02:00
Veronica Berglyd Olsen
52ede26f3d Add updateTheme functions to most GUI components 2022-10-25 23:12:21 +02:00
Veronica Berglyd Olsen
e1ecd3cd27 Fix some code linter complaints in doc editor 2022-10-25 22:01:44 +02:00
Veronica Berglyd Olsen
25c4330fd0 Make icon theme a part of the GUI theme (solves #1172) 2022-10-25 21:27:55 +02:00
Veronica Berglyd Olsen
80ae810e1b Merge 1.6.6 (#1211) 2022-10-25 18:55:52 +02:00
Veronica Berglyd Olsen
719c2aada2 Merge branch 'main' into merge_1.6.6 2022-10-25 18:49:28 +02:00
Veronica Berglyd Olsen
f2e3d95e98 Merge branch 'main' into merge_1.6.6 2022-10-25 18:47:36 +02:00
Veronica Berglyd Olsen
c22354fe4d Release 1.6.6 (#1210) 2022-10-25 18:29:06 +02:00
Veronica Berglyd Olsen
4862ac3857 Bump the version number and update the changelog 2022-10-25 18:26:37 +02:00
Veronica Berglyd Olsen
e93e125a46 Allow lookup of tags with spaces (#1209) 2022-10-25 18:19:19 +02:00
Veronica Berglyd Olsen
dc0f9abdbc Fix lookup of tags with spaces (#1195) 2022-10-25 18:12:29 +02:00
Veronica Berglyd Olsen
455a065285 Updates to status and importance feature (#1207) 2022-10-25 17:18:45 +02:00
Veronica Berglyd Olsen
8b3ec4376d Merge branch 'main' into status_import 2022-10-25 17:12:37 +02:00
Veronica Berglyd Olsen
b69e4e91ac Add Python 3.11 (#1208) 2022-10-25 17:11:21 +02:00
Veronica Berglyd Olsen
a5cbaa7f8c Update requirements and add Python 3.11 to CI 2022-10-25 16:58:46 +02:00
Veronica Berglyd Olsen
b0095b266d Add checkmark for current active status or iumportance value (#1202) 2022-10-25 16:19:25 +02:00
Veronica Berglyd Olsen
7b04d57605 Refactor project settings test 2022-10-25 15:48:29 +02:00
Veronica Berglyd Olsen
2ee6adcf35 Clean up function mappings in project tree class 2022-10-25 15:47:40 +02:00
Veronica Berglyd Olsen
e89f004532 Add a manage labels option to project tree context menu (#1203) 2022-10-25 12:20:18 +02:00
Veronica Berglyd Olsen
624787994a Refactor the projhect tree context menu code 2022-10-25 08:17:18 +02:00
Veronica Berglyd Olsen
550896e795 Merge branch 'main' into xml_rw_class 2022-10-21 10:24:00 +02:00
Veronica Berglyd Olsen
2f926301e6 Update wizard custom page functionality (#1201) 2022-10-20 23:10:18 +02:00
Veronica Berglyd Olsen
34dbf3557c Turn off generating notes if all notes folders are off in the new project wizard (#1192) 2022-10-20 23:00:52 +02:00
Veronica Berglyd Olsen
ae856dda6a Rename exported status to active status (#1200) 2022-10-20 22:48:57 +02:00
Veronica Berglyd Olsen
871cef8af9 Add tooltip to active status icons and update build tool 2022-10-20 22:37:42 +02:00
Veronica Berglyd Olsen
6b16b7c3b7 Rename project file attribute 2022-10-20 18:28:32 +02:00
Veronica Berglyd Olsen
93a79f3605 Rename the access metods of the item class from exported to active 2022-10-20 18:14:40 +02:00
Veronica Berglyd Olsen
5ae96e4d44 Fix various issues in the code (#1197) 2022-10-20 12:30:00 +02:00
Veronica Berglyd Olsen
85e48eb56a Fix a few minor typing issues 2022-10-20 12:14:09 +02:00
Veronica Berglyd Olsen
58f8f98c6f Use constants for project and config file names 2022-10-20 12:13:29 +02:00
Veronica Berglyd Olsen
1da92e997c Fix project tree context menu labels (#1199) 2022-10-20 09:12:31 +02:00
Veronica Berglyd Olsen
734f3d57bf Rename statusBar to mainStatus in main GUI due to conflict with Qt method (#1190) 2022-10-20 00:26:18 +02:00
Veronica Berglyd Olsen
6a6742275f Clean up unused part of header check function in doc editor 2022-10-20 00:22:09 +02:00
Veronica Berglyd Olsen
815c0f1125 Add a bunch of None checks, even if many may be redundant 2022-10-20 00:21:51 +02:00
Veronica Berglyd Olsen
cfe11f7b54 Make the common module a little simpler 2022-10-19 22:10:23 +02:00
Veronica Berglyd Olsen
efb7d12e1d Remove verbose logging (#1191) 2022-10-19 16:21:23 +02:00
Veronica Berglyd Olsen
caf8a75bbc Fix a couple of issues discovered by pylance 2022-10-19 12:06:57 +02:00
Veronica Berglyd Olsen
e52f0a9e16 Remove verbose logging implementation 2022-10-19 08:29:02 +02:00
Veronica Berglyd Olsen
8775b360d8 Remove all verbose log entries 2022-10-19 08:27:11 +02:00
Veronica Berglyd Olsen
54fea1d28e Clean up common module, and fix a few typing issues (#1188) 2022-10-19 00:18:07 +02:00
Veronica Berglyd Olsen
c40ace1290 Fix a few weird dictionary lookups in the index 2022-10-19 00:04:31 +02:00
Veronica Berglyd Olsen
f34d95edaa Simplify the setText method of the Tokenizer class 2022-10-18 23:49:48 +02:00
Veronica Berglyd Olsen
ac05dbc55b Fix a potential bug 2022-10-18 23:46:08 +02:00
Veronica Berglyd Olsen
0f72c45fbc Update tests 2022-10-18 23:41:41 +02:00
Veronica Berglyd Olsen
da820871fd Simplify the check functions in common (#1185) and remove the checkIntRange function 2022-10-18 23:41:29 +02:00
Veronica Berglyd Olsen
1aec49f852 Fix missing data path issue when creating themes folders (#1184) 2022-10-18 21:01:23 +02:00
Veronica Berglyd Olsen
33b95b60e3 Fix missing data path issue (#1180) 2022-10-18 20:43:33 +02:00
Veronica Berglyd Olsen
d232b22501 Always index main heading (#1183) 2022-10-17 21:39:28 +02:00
Veronica Berglyd Olsen
6c06845ed5 Drop the error on level tag in index file 2022-10-17 21:31:57 +02:00
Veronica Berglyd Olsen
5f4a171dff Update lipsum test project 2022-10-17 21:18:42 +02:00
Veronica Berglyd Olsen
38df693987 Update tests 2022-10-17 21:15:52 +02:00
Veronica Berglyd Olsen
e24573f644 Clean out main header data in the index and make it set the item's value instead 2022-10-17 20:22:21 +02:00
Veronica Berglyd Olsen
8fe25d4b43 Update classes and functions to use the item as source of main heading instead of index 2022-10-17 20:15:45 +02:00
Veronica Berglyd Olsen
5a4b7b7264 Add a main heading variable to the NWItem class 2022-10-17 20:08:19 +02:00
Veronica Berglyd Olsen
9b5b00fd2d Release 2.0 RC 1 (#1169) 2022-10-17 16:40:08 +02:00
Veronica Berglyd Olsen
d59c408e44 Merge branch 'main' into release_2.0rc1 2022-10-17 13:34:04 +02:00
Veronica Berglyd Olsen
95b6949da8 Update readme with new minimum Qt version 2022-10-15 23:32:30 +02:00
Veronica Berglyd Olsen
b0e2dbf06e Merge branch 'main' into release_2.0rc1 2022-10-15 23:30:43 +02:00
Veronica Berglyd Olsen
0aadb29ac7 Update changelog 2022-10-15 23:29:12 +02:00
Veronica Berglyd Olsen
559a1791e1 Increase minimum Qt version to 5.10 (#1174) 2022-10-15 23:23:47 +02:00
Veronica Berglyd Olsen
f5dcad8725 Update references to Qt version in the docs 2022-10-15 23:14:34 +02:00
Veronica Berglyd Olsen
97724054ec Require at least Qt 5.10 instead 2022-10-15 23:05:43 +02:00
Veronica Berglyd Olsen
30661130ca Ignore coverage of lines of old Qt versions 2022-10-15 22:56:18 +02:00
Veronica Berglyd Olsen
9c16b58325 Fix document editor test 2022-10-15 22:50:07 +02:00
Veronica Berglyd Olsen
aadc576d0a Require at least Qt 5.9 2022-10-15 22:47:18 +02:00
Veronica Berglyd Olsen
84db544704 Update documentation screen shots 2022-10-15 19:59:02 +02:00
Veronica Berglyd Olsen
49bce76c0d Update changelog 2022-10-15 16:21:41 +02:00
Veronica Berglyd Olsen
20945cfc0d Merge branch 'main' into release_2.0rc1 2022-10-15 16:19:59 +02:00
Veronica Berglyd Olsen
05ad483f06 Update i18n (#1170) 2022-10-15 16:19:47 +02:00
Veronica Berglyd Olsen
98e014f834 Update translations for Norwegian and US English 2022-10-15 16:10:18 +02:00
Veronica Berglyd Olsen
e316270b57 Update base translation file 2022-10-15 16:09:59 +02:00
Veronica Berglyd Olsen
4fe34640f5 Bump version to 2.0 RC 1 and update changelog 2022-10-15 12:13:14 +02:00
Veronica Berglyd Olsen
ca613e83e8 Add a root folder filter to the Build Tool (#1168) 2022-10-14 22:55:09 +02:00
Veronica Berglyd Olsen
72e1180c84 Add a root folder filter to the build tool 2022-10-14 22:41:58 +02:00
Veronica Berglyd Olsen
a582d231e8 Make some minor GUI tweaks (#1167) 2022-10-14 22:16:44 +02:00
Veronica Berglyd Olsen
11ff9567c0 Make the novel combo box on project details always visible 2022-10-14 21:49:42 +02:00
Veronica Berglyd Olsen
64c07e8910 Change a few tooltip labels and remove focus mode checkbox in menu 2022-10-14 21:45:58 +02:00
Veronica Berglyd Olsen
6f257d9b27 Use the main menu entries in the view bar settings menu 2022-10-14 20:47:01 +02:00
Veronica Berglyd Olsen
928c25e742 Fix circular imports (#1166) 2022-10-14 19:45:05 +02:00
Veronica Berglyd Olsen
3c49ccff53 Move the custom gui module to the root of the project 2022-10-14 19:34:37 +02:00
Veronica Berglyd Olsen
5aa5640baa Make all imports in tests explicit 2022-10-14 19:25:21 +02:00
Veronica Berglyd Olsen
91961111d8 Add Quick Links to the Project Tree (#1165) 2022-10-14 17:43:23 +02:00
Veronica Berglyd Olsen
5fcfbf1c75 Add shortcut to docs, and fix broken link 2022-10-14 17:35:10 +02:00
Veronica Berglyd Olsen
77ec0a9eed Add a quick links dropdown menu to the project tree (#1137) 2022-10-14 17:30:28 +02:00
Veronica Berglyd Olsen
bbbad2b170 Add bookmark icon 2022-10-14 17:29:07 +02:00
Veronica Berglyd Olsen
505385b060 Update icons (#1164) 2022-10-14 10:31:25 +02:00
Veronica Berglyd Olsen
07a5def0a9 Change project details to use decoration graphics rather than icons, and delete the no longer used header icons 2022-10-14 10:20:30 +02:00
Veronica Berglyd Olsen
91e6b0671e Add header decoration function to the icon class 2022-10-14 10:19:31 +02:00
Veronica Berglyd Olsen
234a527f25 Add icon for Novel Section documents 2022-10-14 09:40:34 +02:00
Veronica Berglyd Olsen
845a15229d Remove unused icons 2022-10-14 09:37:50 +02:00
Veronica Berglyd Olsen
ab482c4ede Rewrite Split Tool (#1154) 2022-10-14 00:00:16 +02:00
Veronica Berglyd Olsen
d619f4a012 Add test coverage of splitter function in project tree 2022-10-13 23:48:52 +02:00
Veronica Berglyd Olsen
84af87b155 Add test for document splitter 2022-10-13 19:01:06 +02:00
Veronica Berglyd Olsen
3f4d85dcad Rewrite test for split dialog 2022-10-13 18:18:08 +02:00
Veronica Berglyd Olsen
02976c5f12 Add remaining logic to document splitter, and fix bug in recursive permanet delete 2022-10-13 17:11:43 +02:00
Veronica Berglyd Olsen
049190739f Merge branch 'main' into split_tool 2022-10-13 14:57:24 +02:00
Veronica Berglyd Olsen
e11137a90f Merge 1.6.5 (#1160) 2022-10-13 11:14:02 +02:00
Veronica Berglyd Olsen
28ae292703 Merge branch 'main' into merge_1.6.5 2022-10-13 11:07:24 +02:00
Veronica Berglyd Olsen
0e94b1ca88 Patch 1.6.5 (#1159) 2022-10-13 10:47:22 +02:00
Veronica Berglyd Olsen
dbf672224f Bump version to 1.6.5 and update changelog 2022-10-13 10:44:08 +02:00
Veronica Berglyd Olsen
1001140eec Fix preferences dialog window size issue #989 2022-10-13 10:25:38 +02:00
Veronica Berglyd Olsen
038c66258b Backport fix for #1150 2022-10-13 10:24:00 +02:00
Veronica Berglyd Olsen
bb8b0555ae Backport fix for #1149 2022-10-13 10:22:31 +02:00
Veronica Berglyd Olsen
1421ed3bf4 Turn off the old splitter tool test 2022-10-12 23:44:15 +02:00
Veronica Berglyd Olsen
31a5761ba0 Add the core code for the DocSplitter tool 2022-10-12 23:39:56 +02:00
Veronica Berglyd Olsen
baafd5f83c Rewrite the GuiDocSplit dialog 2022-10-12 22:36:06 +02:00
Veronica Berglyd Olsen
4f44374f48 Remove menu entry for split document 2022-10-11 23:41:39 +02:00
Veronica Berglyd Olsen
7403736ae1 Fix minor issues and clean up class inits (#1153) 2022-10-11 23:35:31 +02:00
Veronica Berglyd Olsen
9a0bda9884 Fix tab parents on settings dialogs 2022-10-11 23:27:45 +02:00
Veronica Berglyd Olsen
84104f2267 Include missing file from last commit 2022-10-11 23:18:37 +02:00
Veronica Berglyd Olsen
5d6778be57 Clean up class initialisation 2022-10-11 23:17:58 +02:00
Veronica Berglyd Olsen
1f05e90266 Remove the context menu in the main window (#1147) 2022-10-11 22:49:36 +02:00
Veronica Berglyd Olsen
3a7c3cec3f Reset idle time when creating a new project (#1149) 2022-10-11 22:44:06 +02:00
Veronica Berglyd Olsen
e8f7df9cb4 Add Shift+Enter to auto-replace (#1151) 2022-10-11 22:35:24 +02:00
Veronica Berglyd Olsen
9b5d2b2c2b Resolve issue #1150 2022-10-11 22:26:14 +02:00
Veronica Berglyd Olsen
87f20622f9 Rewrite Merge Tool (#1148) 2022-10-11 22:02:26 +02:00
Veronica Berglyd Olsen
417758a29a Add coverage of new function in project class 2022-10-11 21:48:40 +02:00
Veronica Berglyd Olsen
07c93bcb7d Update test coverage 2022-10-11 21:20:03 +02:00
Veronica Berglyd Olsen
b96c1e9f09 Add test coverage of doc tools 2022-10-10 16:35:13 +02:00
Veronica Berglyd Olsen
747a1a212c Make some minor improvements to code and tests 2022-10-10 15:48:45 +02:00
Veronica Berglyd Olsen
428dce3e6e Fix doc merge dialog test 2022-10-09 22:47:36 +02:00
Veronica Berglyd Olsen
02dc7f5fe0 Make a few more improvements to doc merge 2022-10-09 21:40:50 +02:00
Veronica Berglyd Olsen
d9a59bccda Don't allow merging root folders 2022-10-09 21:30:21 +02:00
Veronica Berglyd Olsen
23b73dd936 Update tests for project tree deleting items 2022-10-09 20:49:25 +02:00
Veronica Berglyd Olsen
0859c14581 Remove the old merge document menu entry 2022-10-09 19:23:55 +02:00
Veronica Berglyd Olsen
2bda53e971 Split up the project tree deleteItem function 2022-10-09 19:21:05 +02:00
Veronica Berglyd Olsen
0f3d598f8d Implement nre doc merge functionality in tree 2022-10-09 17:19:01 +02:00
Veronica Berglyd Olsen
e1c3a12d07 Redesign the Document Merge dialog box 2022-10-09 15:30:02 +02:00
Veronica Berglyd Olsen
43bb5aab5c Rename 1.7 to 2.0 (#1146) 2022-10-06 09:15:48 +02:00
Veronica Berglyd Olsen
b80f5ba057 Rename 1.7 to 2.0 2022-10-06 09:10:58 +02:00
Veronica Berglyd Olsen
9c381c40a5 Remove existing space when auto-inserting space (#1131) 2022-10-01 23:13:07 +02:00
Veronica Berglyd Olsen
47c39e68b7 Remove the no longer needed changes to the test 2022-10-01 22:44:11 +02:00
Veronica Berglyd Olsen
a24d37ffa4 Simplify the auto-insert space check code as this is efficient enough 2022-10-01 22:41:18 +02:00
Veronica Berglyd Olsen
03db815723 Update test coverage 2022-10-01 22:35:26 +02:00
Veronica Berglyd Olsen
1aeb66d9af Make sure existing space is stripped before inserting non-breaking space (#1061) 2022-10-01 22:35:00 +02:00
Veronica Berglyd Olsen
3efbc14d97 Update Project Details for multi-novel projects (#1130) 2022-10-01 22:11:21 +02:00
Veronica Berglyd Olsen
534614d037 Add a root folder combo box to the Project Details dialog 2022-10-01 22:02:24 +02:00
Veronica Berglyd Olsen
479478490e Update the index to generate a ToC for a specific root folder 2022-10-01 22:02:00 +02:00
Veronica Berglyd Olsen
f4eed2bf2c Add Expand/Collapse All functionality to project tree (#1129) 2022-10-01 21:25:19 +02:00
Veronica Berglyd Olsen
ba51fb4c46 Add Expand/Collapse All functionality to project tree 2022-10-01 21:17:47 +02:00
Veronica Berglyd Olsen
bdc7e4dc10 Convert folder to document or note (#1128) 2022-10-01 20:42:43 +02:00
Veronica Berglyd Olsen
25dec2ace8 Add test coverage of convert folder feature 2022-10-01 20:32:47 +02:00
Veronica Berglyd Olsen
7d99d6c40b Merge branch 'main' into convert_folder 2022-10-01 19:06:52 +02:00
Veronica Berglyd Olsen
ba88160deb Rough framework for XML reader/writer classes 2022-09-29 20:07:52 +02:00
Veronica Berglyd Olsen
08289d0675 Merge 1.6.4 (#1121) 2022-09-29 20:05:42 +02:00
Veronica Berglyd Olsen
a64c36221c Fix remaining merge conflict 2022-09-29 20:00:05 +02:00
Veronica Berglyd Olsen
bf2229538e Bring patch 1.6.4 changes into main 2022-09-29 19:59:21 +02:00
Veronica Berglyd Olsen
922d66ff53 Fix typo in release notes and changelog 2022-09-29 19:38:28 +02:00
Veronica Berglyd Olsen
cfb6059027 Add Ubunutu 22.10 to patch build 2022-09-29 19:34:20 +02:00
Veronica Berglyd Olsen
c04715c9ef Release 1.6.4 (#1120) 2022-09-29 19:27:02 +02:00
Veronica Berglyd Olsen
d82c739f01 Release 1.6.4 2022-09-29 19:23:41 +02:00
Veronica Berglyd Olsen
7267490645 Backport fix #1113 2022-09-29 14:33:12 +02:00
Veronica Berglyd Olsen
5adf21e87a Add integration test coverage of insert spaces issue 2022-09-29 14:25:42 +02:00
Veronica Berglyd Olsen
e6b2732281 Fix insert spaces crash (#1118) 2022-09-29 14:11:39 +02:00
Veronica Berglyd Olsen
9c4b3dbc08 Improve the tree change method 2022-09-29 14:09:03 +02:00
Veronica Berglyd Olsen
3d3ac0d05d Allow converting folder to file in project tree (#1071) 2022-09-19 13:33:56 +02:00
Veronica Berglyd Olsen
9434fe2cd7 Fix clipping of cursor due to no document margin (#1113) 2022-09-14 16:57:15 +02:00
Veronica Berglyd Olsen
af55e57ba3 Fix clipping of cursor due to 0 doc margin, issue #1112 2022-09-14 16:48:46 +02:00
Veronica Berglyd Olsen
90fbfc30ad Add Ubuntu 22.10 to setup builds 2022-09-14 13:33:09 +02:00
Veronica Berglyd Olsen
c48d415a9d Update context menu entries in project tree (#1111) 2022-09-11 19:12:49 +02:00
Veronica Berglyd Olsen
874f4f7198 Change a few other project tree context menu labels 2022-09-11 18:51:18 +02:00
Veronica Berglyd Olsen
19c583f615 Fix misleading deletion label in context menu for empty folders 2022-09-11 18:48:15 +02:00
Veronica Berglyd Olsen
76e9c822c9 Make adding new docs smarter (#1110) 2022-09-11 17:40:47 +02:00
Veronica Berglyd Olsen
73b8e3e0fb Use the new item checker functions instead of equal operator 2022-09-11 17:22:46 +02:00
Veronica Berglyd Olsen
5cba10151a Make the add new item feature a little smarter 2022-09-11 17:06:16 +02:00
Veronica Berglyd Olsen
01b66bc62e Add some type and layout checker functions to the item class 2022-09-11 17:04:21 +02:00
Veronica Berglyd Olsen
f14398392a Merge release 1.6.3 into main (#1104) 2022-08-18 22:57:15 +02:00
Veronica Berglyd Olsen
3a7ed1f2f3 Merge branch 'main' into patch_to_main 2022-08-18 22:53:46 +02:00
Veronica Berglyd Olsen
802d1b0132 Improve the build scripts (#1103) 2022-08-18 22:45:43 +02:00
Veronica Berglyd Olsen
d4878525ac Improve the package build pipeline 2022-08-18 22:38:32 +02:00
Veronica Berglyd Olsen
e98e758b5f Fix missing version bump 2022-08-18 22:36:46 +02:00
Veronica Berglyd Olsen
672e3680b7 Release 1.6.3 (#1102) 2022-08-18 20:38:42 +02:00
Veronica Berglyd Olsen
53c1d1b7ee Bumped version and update changelog 2022-08-17 23:49:37 +02:00
Veronica Berglyd Olsen
721d67ac0a Merge patches from 1.6.3 (#1101) 2022-08-17 23:32:43 +02:00
Veronica Berglyd Olsen
2407b61830 Fix typo in docstring and add reference to issue 2022-08-17 23:24:18 +02:00
Veronica Berglyd Olsen
f08345b15e Merge branch 'main' into merge_patches 2022-08-17 23:21:10 +02:00
Veronica Berglyd Olsen
20da33348c Block adding spaces before colon in certain meta data cases (#1099) 2022-08-17 23:09:17 +02:00
Veronica Berglyd Olsen
7e82461aba Fix comment in test 2022-08-17 23:05:26 +02:00
Veronica Berglyd Olsen
fcfe7507d6 Block adding spaces before colon (French language feature) in certain meta data cases 2022-08-17 23:01:03 +02:00
Veronica Berglyd Olsen
90b50fe180 Fix handling of empty spellcheck language string (#1098) 2022-08-17 22:34:45 +02:00
Veronica Berglyd Olsen
3ddbfb061b Make spell ckeck tests run on en_US 2022-08-17 22:29:27 +02:00
Veronica Berglyd Olsen
93194626c7 Add an additional ignore line on main editing test 2022-08-17 22:25:02 +02:00
Veronica Berglyd Olsen
c23a1d224d Install a generic English dictionary on Linux CI 2022-08-17 22:19:32 +02:00
Veronica Berglyd Olsen
2178391bcd Update tests of spell check classes 2022-08-17 21:49:59 +02:00
Veronica Berglyd Olsen
c917fc9c9c Fix issue #1096 and remove a couple of error ourputs 2022-08-17 21:49:41 +02:00
Veronica Berglyd Olsen
15c54224e0 Update the Outline View to be consistent with the Novel Tree (#1094) 2022-08-15 18:09:33 +02:00
Veronica Berglyd Olsen
cc7ae316ad Make some minor changes for consistency between similar classes 2022-08-15 16:08:25 +02:00
Veronica Berglyd Olsen
bf49b1ee50 Merge branch 'main' into outline_updates 2022-07-31 18:55:03 +02:00
Veronica Berglyd Olsen
bb2c78c0f6 Update tests 2022-07-31 18:50:43 +02:00
Veronica Berglyd Olsen
069e3baf67 Add functionality to load and save last selected outline novel, and fix a few inconsistencies 2022-07-31 18:40:16 +02:00
Veronica Berglyd Olsen
b30a4d26ae Appimage Distribution (#1092) 2022-07-15 16:53:37 +02:00
Veronica Berglyd Olsen
338d158bae Make some minor changes to the setup script 2022-07-15 16:39:12 +02:00
Veronica Berglyd Olsen
895beb6aa1 Revert change of spelling from UK to US 2022-07-15 16:36:45 +02:00
Veronica Berglyd Olsen
67aff2550b Change look of outline tree 2022-07-15 14:38:37 +02:00
Rachel Powers
82a5da391f - ensure dist_appimage removed during cleanup
- cleanup
2022-07-08 18:53:01 -07:00
Rachel Powers
3dc4d1443f ensure prefix matching of build-appimage args do not shadow normal setup
move defaults to pyhton 3.10 and manylinux2010 for better compatability
cleanup
2022-07-08 18:40:54 -07:00
Rachel Powers
073a9acfb3 add a method to automate the building of an Appimage package 2022-07-08 15:26:03 -07:00
Rachel Powers
b363259a72 fix spelling 2022-07-08 14:08:13 -07:00
Rachel Powers
211ab290d0 bring .desktop into compliance with Desktop Entry specification 1.1
validated with `desktop-file-validate`
2022-07-08 14:06:56 -07:00
Veronica Berglyd Olsen
f9df358c4f Add the Novel Tree meta data feature (#1088) 2022-06-15 20:46:45 +02:00
Veronica Berglyd Olsen
0d01e108f1 Improve test coverage 2022-06-15 20:37:19 +02:00
Veronica Berglyd Olsen
8c4ecaeee2 Fix tests 2022-06-15 20:01:45 +02:00
Veronica Berglyd Olsen
4fa814a2fa Remove no longer needed config settings, and change default text width 2022-06-15 19:51:13 +02:00
Veronica Berglyd Olsen
bb85232ea7 Add some fixes to keep novel tree active handle up to date 2022-06-15 19:47:04 +02:00
Veronica Berglyd Olsen
469275eea5 Add novel tree highlight of rows of current document 2022-06-15 19:39:07 +02:00
Veronica Berglyd Olsen
ba0ce33cfc Add a tool tip with meta data behind a button on each novel tree item 2022-06-15 19:17:24 +02:00
Veronica Berglyd Olsen
50f299171a Add some convenient tree widget settings to the different trees 2022-06-15 17:33:47 +02:00
Veronica Berglyd Olsen
5c04e79486 Merge branch 'main' into i18n-de_DE-created 2022-06-15 17:18:47 +02:00
Veronica Berglyd Olsen
fb14e978cd Merge branch 'patch' 2022-06-15 17:11:56 +02:00
Veronica Berglyd Olsen
3a455fa1a7 Fix build ODT language, and collapsing of view panel (#1087) 2022-06-15 17:10:35 +02:00
Veronica Berglyd Olsen
ad50ad9b0d Resolve issue #1085 2022-06-15 17:06:18 +02:00
Veronica Berglyd Olsen
7d7c2dba26 Resolve issue #1073 2022-06-15 17:05:48 +02:00
Veronica Berglyd Olsen
0b95804535 Update the novel tree GUI (#1084) 2022-06-15 16:52:42 +02:00
Veronica Berglyd Olsen
6ccbb358b9 Update tests 2022-06-15 16:46:44 +02:00
Veronica Berglyd Olsen
cff464392a Use the indenta decorators of the novel tree to indicate type 2022-06-15 16:15:29 +02:00
Veronica Berglyd Olsen
3a061eec3f Update novel tree menu processing and fix issue with reaload of document 2022-06-15 16:14:28 +02:00
Veronica Berglyd Olsen
538b722bdf Fix tests and a few other bits 2022-06-14 19:33:12 +02:00
Veronica Berglyd Olsen
ea61db9591 Simplify the novel outline tree 2022-06-14 00:14:51 +02:00
Veronica Berglyd Olsen
49ace054bd Make options class handle enums, and add plot column to novel tree 2022-06-12 20:18:24 +02:00
Veronica Berglyd Olsen
8040441757 Allow changing content of last column of the novel tree 2022-06-12 19:59:18 +02:00
Veronica Berglyd Olsen
88b2d61cec Update tests 2022-06-12 17:54:37 +02:00
Veronica Berglyd Olsen
52683d5a21 Add novel tree toolbar and connect actions 2022-06-12 17:47:32 +02:00
Veronica Berglyd Olsen
b3eb276437 Wrap the novel tree in an outer widget 2022-06-12 15:45:39 +02:00
Veronica Berglyd Olsen
ed5c52859d Simplify the conversion of very old project data (#1083) 2022-06-11 23:57:08 +02:00
Veronica Berglyd Olsen
c58868ed39 Simplify the conversion of very old project data 2022-06-11 23:54:20 +02:00
Veronica Berglyd Olsen
5a5a64e3a2 Replace the edit item dialog (#1082) 2022-06-11 18:54:08 +02:00
Veronica Berglyd Olsen
2cc8be5776 Rename the main GUI function for editing an item 2022-06-11 18:48:22 +02:00
Veronica Berglyd Olsen
8d427f40c6 Add a shortcut to open project tree context menu 2022-06-11 18:40:21 +02:00
Veronica Berglyd Olsen
946656f8c5 Add test for edit label dialog 2022-06-11 18:26:41 +02:00
Veronica Berglyd Olsen
37c3bb8cd2 Replace the item editor with the label editor dialog 2022-06-11 18:19:21 +02:00
Veronica Berglyd Olsen
6058423970 Add a new edit label dialog 2022-06-11 18:17:57 +02:00
Veronica Berglyd Olsen
d162be3543 Give main GUI objects better names (#1081) 2022-06-11 16:36:15 +02:00
Veronica Berglyd Olsen
985179bbb9 Rename main theme object 2022-06-11 16:29:49 +02:00
Veronica Berglyd Olsen
db01d85f2e Rename outline components 2022-06-11 15:59:08 +02:00
Veronica Berglyd Olsen
94068e777a Give main GUI elements more identifiable names 2022-06-11 15:49:45 +02:00
Veronica Berglyd Olsen
0181bebd70 Rename ambiguous theParent variable to mainGui 2022-06-11 15:33:32 +02:00
Veronica Berglyd Olsen
b8d557646a Update the Project Tree with major improvements (#1079) 2022-06-11 14:53:45 +02:00
Veronica Berglyd Olsen
025463a28e Improve project tree test coverage 2022-06-11 14:40:03 +02:00
Veronica Berglyd Olsen
f0bef18b63 Re-implement the tree context menu 2022-06-11 13:44:45 +02:00
Veronica Berglyd Olsen
77746f712f Fix inconsistend expand/collapse when tree items are moved 2022-06-11 12:33:37 +02:00
Veronica Berglyd Olsen
ad438e128a Merge branch 'main' into project_tree_updates 2022-06-07 23:41:48 +02:00
Veronica Berglyd Olsen
af39fb98a1 Clean up project tree code and add undo action to the menu 2022-06-07 23:38:17 +02:00
Veronica Berglyd Olsen
ef270bc069 Tweak project toolbar look, and fix shortcuts 2022-06-07 22:38:02 +02:00
Veronica Berglyd Olsen
0909bf7c36 Update code of conduct to v2.1 2022-06-07 10:34:27 +02:00
Veronica Berglyd Olsen
5a6ef5efd3 Add move buttons to project tree toolbar 2022-06-07 00:11:42 +02:00
Veronica Berglyd Olsen
272e7f6e24 Remove redundant menu entries 2022-06-06 22:17:24 +02:00
Veronica Berglyd Olsen
46bb8e5bcc Populate the add button menu in the project widget 2022-06-06 22:03:42 +02:00
Veronica Berglyd Olsen
12a7ec7fe3 Allow the project class to create new files 2022-06-06 22:02:44 +02:00
Veronica Berglyd Olsen
d07f5dc520 Wrap project tree in an outer widget with a toolbar 2022-06-06 15:50:46 +02:00
Veronica Berglyd Olsen
b88cdb7677 Make the project tree columns fixed 2022-06-06 14:11:59 +02:00
Veronica Berglyd Olsen
669eabc7e8 Handle actions in the project tree internally in the class 2022-06-06 13:46:54 +02:00
Veronica Berglyd Olsen
24112f6d8d Merge branch 'main' into i18n-de_DE-created 2022-06-06 13:27:48 +02:00
Veronica Berglyd Olsen
3ff5dfce33 Set build language for Open Document files (#1077) 2022-06-05 22:47:21 +02:00
Veronica Berglyd Olsen
2f81aef0a3 Set build language for Open Document files 2022-06-05 22:42:25 +02:00
Veronica Berglyd Olsen
29739ab210 Update the Outline View panel (#1063)
Add a top level widget that contains the entire Outline View.
Move the details panel code to the outline.py file.
Add a toolbar to the top of the Outline view with a dropdown box to select which Novel folder to view.
Add a refresh button to the tool bar.
Move the context menu for changing columns to a menu button on the tool bar.
Remove the Rebuild Outline and Auto-Update Outline options from the main menu.
2022-06-05 22:34:49 +02:00
Veronica Berglyd Olsen
4d9b94cfe6 Improve test coverage of Outline 2022-06-05 22:31:10 +02:00
Veronica Berglyd Olsen
85f63721e0 Allow showing all novel files in Outline 2022-06-05 18:43:09 +02:00
Veronica Berglyd Olsen
92924b3288 Make the new item function better at guessing header level of new files 2022-06-05 17:41:29 +02:00
Veronica Berglyd Olsen
88976d6800 Streamline how project item changes are reported 2022-06-05 17:25:39 +02:00
Veronica Berglyd Olsen
2873336dce Allow switching between root novel folders 2022-06-05 15:04:04 +02:00
Veronica Berglyd Olsen
de07546e3f Fix tests 2022-06-05 13:41:22 +02:00
Veronica Berglyd Olsen
ac14888e2a Merge branch 'main' into outline_view 2022-06-05 13:36:54 +02:00
Veronica Berglyd Olsen
c28ac37df1 Rewrite index class (#1074)
Rewrites the index class to use objects rather than dictionaries to store indexing information.
Moves the index instance into the main project class instead of the main GUI object.
Makes the project tree and project options classes private to the project class.
2022-06-05 13:21:45 +02:00
Veronica Berglyd Olsen
63068f1018 Add full test coverage of index class 2022-06-05 13:17:24 +02:00
Veronica Berglyd Olsen
22099c1b56 Make some minor improvements to handling of tags and references 2022-06-03 11:07:40 +02:00
Veronica Berglyd Olsen
eed59a96be Make some fixes to the index class, and improve test coverage 2022-05-30 00:28:43 +02:00
Veronica Berglyd Olsen
865acfd7e9 Clean up imports 2022-05-29 19:40:14 +02:00
Veronica Berglyd Olsen
d1b32f1ba1 Move the tags index into a wrapper class 2022-05-29 19:24:41 +02:00
Veronica Berglyd Olsen
77e50a6cee Move the item index into a wrapper class and combine the access functions 2022-05-29 18:58:32 +02:00
Veronica Berglyd Olsen
347d34bf83 Clean up the index code a bit and add index validation 2022-05-29 00:18:48 +02:00
Veronica Berglyd Olsen
94ba7a2f94 Use the new index instead of the old 2022-05-28 21:59:52 +02:00
Veronica Berglyd Olsen
01be8be44f Remove old tagsIndex 2022-05-28 20:16:27 +02:00
Veronica Berglyd Olsen
d584f57a3b Loading of new index now works 2022-05-28 19:45:33 +02:00
Veronica Berglyd Olsen
b5b0074411 Rewritten index storage using classes instead 2022-05-28 18:48:31 +02:00
Veronica Berglyd Olsen
44926a4e9a Also make tree and options properties of the project 2022-05-28 14:33:25 +02:00
Veronica Berglyd Olsen
8bdd09400a Move the project index into the project class 2022-05-28 14:11:58 +02:00
Veronica Berglyd Olsen
8ac30b036a Change how tag links are followed 2022-05-26 12:11:22 +02:00
Veronica Berglyd Olsen
ecc0585c87 Add a toolbar to the Outline view 2022-05-22 23:03:30 +02:00
Veronica Berglyd Olsen
007f2fbff4 Add a menu icon 2022-05-22 22:46:42 +02:00
Veronica Berglyd Olsen
1f66ed3e3b Reduce the list of tag classes in outline view when they are not used 2022-05-22 21:00:49 +02:00
Veronica Berglyd Olsen
eb66b2c175 Merge branch 'main' into outline_view 2022-05-22 18:15:36 +02:00
Veronica Berglyd Olsen
5d86cfb092 Improve GUI look and usability (#1069) 2022-05-22 18:11:25 +02:00
Veronica Berglyd Olsen
b9fcc43ca6 Move highlighting theme setting back to General tab in Preferences 2022-05-22 17:53:46 +02:00
Veronica Berglyd Olsen
3cfc5d9a1a Remove borders from all main GUI widgets 2022-05-22 17:45:54 +02:00
Veronica Berglyd Olsen
25427e8521 Add tooltips to views bar 2022-05-22 17:43:38 +02:00
Veronica Berglyd Olsen
2425af4bfe Add menu to view bar settings, and add build button 2022-05-22 17:00:45 +02:00
Veronica Berglyd Olsen
4a4ed32fe6 Add new view bar icons 2022-05-22 17:00:09 +02:00
Veronica Berglyd Olsen
f7e31bd452 Use "project name" consistently on the GUI 2022-05-22 16:23:49 +02:00
Veronica Berglyd Olsen
adf7357155 Merge branch 'main' into outline_view 2022-05-22 16:19:53 +02:00
Veronica Berglyd Olsen
a541c90690 Add icon name to xdg mime type just in case (#1068) 2022-05-22 15:58:09 +02:00
Veronica Berglyd Olsen
217e184153 Update new project creation (#1067) 2022-05-21 22:22:07 +02:00
Veronica Berglyd Olsen
e14348a05b Fix a few text labels on the wizard 2022-05-21 22:18:16 +02:00
Veronica Berglyd Olsen
78b97ce8fb Remove name as a required parameter for new root folders since no part of the GUI uses it 2022-05-21 22:10:25 +02:00
Veronica Berglyd Olsen
aeaaaaf3af Update test coverage 2022-05-21 21:55:19 +02:00
Veronica Berglyd Olsen
63a3e56cdb Fix ignored lines in XML comparison 2022-05-21 18:15:38 +02:00
Veronica Berglyd Olsen
cea22b6147 Clean up new project creation function 2022-05-21 17:58:47 +02:00
Veronica Berglyd Olsen
06d39ea352 Make tests not depend on minimal project settings 2022-05-21 17:33:58 +02:00
Veronica Berglyd Olsen
b4ea5bc8d0 Update minimal project content 2022-05-21 17:33:36 +02:00
Veronica Berglyd Olsen
ad42a71427 Fix tests 2022-05-21 16:57:09 +02:00
Veronica Berglyd Olsen
46dce17dfe Update new project generation to match wizard 2022-05-21 16:29:41 +02:00
Veronica Berglyd Olsen
7a8c97225b Add a summary page to the wizard 2022-05-21 15:47:21 +02:00
Veronica Berglyd Olsen
5574d8d6c0 Update and clarify the options on the Wizard 2022-05-21 15:11:33 +02:00
Veronica Berglyd Olsen
a166d9a4dd Add a Translation Guidelines section in i18n 2022-05-19 20:04:10 +02:00
Veronica Berglyd Olsen
b863077bfe Make minor changes post 1.7b1 release (#1065) 2022-05-17 20:52:50 +02:00
Veronica Berglyd Olsen
ae2b5d4403 Fix typo and set max width on views bar 2022-05-17 20:22:39 +02:00
Veronica Berglyd Olsen
301d81f987 Update various translation files 2022-05-17 20:22:16 +02:00
Veronica Berglyd Olsen
15f59c1a4e Release 1.7 Beta 1 (#1064) 2022-05-17 18:51:01 +02:00
Veronica Berglyd Olsen
9eaf240674 Release 1.7-beta1 2022-05-17 18:41:01 +02:00
Veronica Berglyd Olsen
a71fa02b0c Sort i18n credits on about and credits doc 2022-05-17 18:40:10 +02:00
Veronica Berglyd Olsen
9add2aaa87 Update the sample project to reflect new functionality 2022-05-17 17:51:40 +02:00
Veronica Berglyd Olsen
a5b2a06f84 Fix tests and add missing methods 2022-05-15 17:56:36 +02:00
Veronica Berglyd Olsen
ca48e37163 Move the outline view into a wrapper widget 2022-05-15 17:45:51 +02:00
Veronica Berglyd Olsen
304d122342 Add valid path check to the New Project Wizard (#1062) 2022-05-15 16:43:43 +02:00
Veronica Berglyd Olsen
7c7e4c2297 Disabled second wizard test on macOS as it too segfaults 2022-05-15 16:39:41 +02:00
Veronica Berglyd Olsen
e2c10f52d2 Disabled wizard test on macOS as it still segfaults 2022-05-15 16:37:09 +02:00
Veronica Berglyd Olsen
c91f19f9f7 Update wizard test coverage 2022-05-15 16:31:51 +02:00
Veronica Berglyd Olsen
1d5c8566d1 Check the sanity of paths during project wizard run (issue #1058) 2022-05-15 15:11:17 +02:00
Veronica Berglyd Olsen
badb768529 Add a "views" toolbar to the main GUI (#1057) 2022-05-14 19:12:02 +02:00
Veronica Berglyd Olsen
d965320b57 Fix broken test 2022-05-14 19:07:34 +02:00
Veronica Berglyd Olsen
096c2dbc83 Add Typicons link to credits 2022-05-14 19:03:51 +02:00
Veronica Berglyd Olsen
88cc4bd5a4 Add new icons for the views bar 2022-05-14 19:00:47 +02:00
Veronica Berglyd Olsen
e8a0a6d5f9 Connect the change of view methods to all relevant actions 2022-05-14 18:27:18 +02:00
Veronica Berglyd Olsen
864b06a0e7 Shift all view changing functionality to the new Views bar 2022-05-10 22:14:35 +02:00
Veronica Berglyd Olsen
ea09a53496 Add the GuiViewsBar class 2022-05-10 20:56:52 +02:00
Veronica Berglyd Olsen
d6ca87868b Add quick delete for empty folders (#1055) 2022-05-08 18:26:25 +02:00
Veronica Berglyd Olsen
14458c7184 Merge branch 'main' into delete_items 2022-05-08 18:23:04 +02:00
Veronica Berglyd Olsen
12cfce758c Force consistency of item settings (#1054) 2022-05-08 18:22:52 +02:00
Veronica Berglyd Olsen
9e9beea83c Fix outdated docstring in project tree class 2022-05-08 18:21:17 +02:00
Veronica Berglyd Olsen
0a5c51ad4b Make deleting empty folders bypass Trash 2022-05-08 18:07:21 +02:00
Veronica Berglyd Olsen
9ee4d1b2cd Reset meta data for folders 2022-05-08 17:52:36 +02:00
Veronica Berglyd Olsen
d833692e27 Merge branch 'main' into item_checks 2022-05-08 17:46:37 +02:00
Veronica Berglyd Olsen
b68280655f Add Mastodon link to main readme and docs 2022-04-28 19:17:16 +02:00
Veronica Berglyd Olsen
1e7d329962 Force conistency of ROOT item settings 2022-04-28 19:04:21 +02:00
Veronica Berglyd Olsen
b35c85e831 Allow deleting non-empty folders (#1048) 2022-04-23 21:44:37 +02:00
Veronica Berglyd Olsen
bb53b2530c Fix error messages when emptying trash 2022-04-23 21:41:14 +02:00
Veronica Berglyd Olsen
9bc7250532 Allow deleting non-empty folders 2022-04-23 21:33:11 +02:00
Veronica Berglyd Olsen
160c3d80f9 Fix the redundant spaces highlight option text in Preferences (#1046) 2022-04-23 20:14:13 +02:00
Veronica Berglyd Olsen
5538c3f995 Merge branch 'main' into issue_1043 2022-04-23 20:03:43 +02:00
Veronica Berglyd Olsen
c7e560ffc5 Allow documents to have child items (#1047) 2022-04-23 20:03:30 +02:00
Veronica Berglyd Olsen
d9e3fd7a01 Make some minor improvements to how expanded status is saved for items 2022-04-23 19:34:40 +02:00
Veronica Berglyd Olsen
732f20a0f1 Fix word count accounting and double click tree expansion 2022-04-23 19:00:11 +02:00
Veronica Berglyd Olsen
a8a34a4a37 Fix drag and drop word propagation 2022-04-23 18:03:03 +02:00
Veronica Berglyd Olsen
821833df8e Fix tests and drop unused function from NWTree class 2022-04-23 17:05:29 +02:00
Veronica Berglyd Olsen
bd5a14b18e Block drag and drop for ROOT items on the widget level, and drop the TRASH item type 2022-04-23 16:57:13 +02:00
Veronica Berglyd Olsen
d96c8ddf85 Remove all restrictions on drag and drop except in ROOT items 2022-04-23 16:21:20 +02:00
Veronica Berglyd Olsen
5cdcda66a5 Update data recursively when moving an item with child items 2022-04-23 16:09:50 +02:00
Veronica Berglyd Olsen
1a47bbaf8c Allow files to have child items 2022-04-23 15:53:14 +02:00
Veronica Berglyd Olsen
64da2793ac Allow file items to save expanded status 2022-04-23 15:38:53 +02:00
Veronica Berglyd Olsen
31fac7bf45 Make the test suite less spammy again 2022-04-23 15:28:26 +02:00
Veronica Berglyd Olsen
147b9a4501 Fix the redundant spaces highlight option text in Preferences: issue #1043 2022-04-23 15:17:20 +02:00
Veronica Berglyd Olsen
b588fdfe1a Use the random generator for item handles (#1044) 2022-04-20 22:00:34 +02:00
Veronica Berglyd Olsen
607f9409d2 Update tests 2022-04-20 21:50:07 +02:00
Veronica Berglyd Olsen
e32eb21fbf Add a mock random number generator for testing 2022-04-20 21:46:53 +02:00
Veronica Berglyd Olsen
8320aab1bf Use the same method to generate item handles as for status keys 2022-04-20 21:44:45 +02:00
Veronica Berglyd Olsen
ca76cb2af3 Make a couple of random, minor fixes 2022-04-20 17:15:55 +02:00
Veronica Berglyd Olsen
e938ea8967 Allow multiple roots of same class (#1031) 2022-04-17 19:35:51 +02:00
Veronica Berglyd Olsen
15ede5e14c Make better use of the new NWItem functions and do some cleanup 2022-04-17 19:15:00 +02:00
Veronica Berglyd Olsen
4eec2926cb Clean up unused code and add more comments 2022-04-17 18:38:25 +02:00
Veronica Berglyd Olsen
3f4356467e Relax moving restrictions in project tree, and improve test coverage of NWItem class 2022-04-17 18:32:22 +02:00
Veronica Berglyd Olsen
50db7fcddb Simplify updating an item after it has been moved 2022-04-17 17:49:47 +02:00
Veronica Berglyd Olsen
d158de5d82 Update test coverage 2022-04-17 17:00:43 +02:00
Veronica Berglyd Olsen
4cfbbf4c68 Remove max folder depth restriction, and simplify adding folders and files in the tree 2022-04-17 14:44:11 +02:00
Veronica Berglyd Olsen
ebee9ff791 Update tests 2022-04-16 20:56:52 +02:00
Veronica Berglyd Olsen
61f5425662 Update new item functions in project class 2022-04-16 20:55:54 +02:00
Veronica Berglyd Olsen
da13fbff08 Merge branch 'main' into multi_root 2022-04-16 18:49:46 +02:00
Veronica Berglyd Olsen
b785128f4c Make status and importance labels sortable again (#1040) 2022-04-16 18:40:10 +02:00
Veronica Berglyd Olsen
3ed74f0b02 Add test coverage of status and importance reordering 2022-04-16 18:35:26 +02:00
Veronica Berglyd Olsen
6aa13e318b Add sorting capability to status and importance labels 2022-04-16 18:17:01 +02:00
Veronica Berglyd Olsen
fd2248de17 Add up and down button icons 2022-04-16 17:44:54 +02:00
Veronica Berglyd Olsen
17c56440f2 Automatic indexing of un-indexed files (#1039)
* Downgrade rebuild index dialog from warning to info
* Don't flag index as broken if file is missing, just add it again
* Fix log warning
* Drop the return value in the index checker
2022-04-16 17:28:28 +02:00
Veronica Berglyd Olsen
b642e4437e Simplify text labels in XML (#1038) 2022-04-16 17:03:44 +02:00
Veronica Berglyd Olsen
2f547033cd Simplify all other strings in main project class 2022-04-16 17:00:08 +02:00
Veronica Berglyd Olsen
72c5a9ee92 Rename some internal variables in the NWItem class 2022-04-16 16:47:57 +02:00
Veronica Berglyd Olsen
048e5faa1f Also simplify item labels, due to XML limitations 2022-04-16 16:44:39 +02:00
Veronica Berglyd Olsen
c9f7fba7dd Re-implement the status and importance flags (#1034) 2022-04-16 16:32:48 +02:00
Veronica Berglyd Olsen
c5f92edaa8 Update the NWProject class test for status and import labels 2022-04-16 16:27:46 +02:00
Veronica Berglyd Olsen
d7a8cb1537 Rewrite NWStatus class tests 2022-04-16 15:38:13 +02:00
Veronica Berglyd Olsen
fedb064b1f Fix other tests 2022-04-16 15:01:55 +02:00
Veronica Berglyd Olsen
cf7e1da96a Fix display text issues in varuious GUI elements 2022-04-16 14:59:59 +02:00
Veronica Berglyd Olsen
e98e942f19 Replace key generator in the NWStatus class 2022-04-16 14:59:25 +02:00
Veronica Berglyd Olsen
ac904ee9fc Update sample project file 2022-04-05 23:15:18 +02:00
Veronica Berglyd Olsen
ddd8b60816 Complete the needed GUI class changes for the new NWStatus class 2022-04-05 23:13:39 +02:00
Veronica Berglyd Olsen
40e7055f16 Rewrite most of the NWStatus class 2022-04-05 22:08:14 +02:00
Veronica Berglyd Olsen
7298e1f438 Add two new utility functions to the common module 2022-04-05 22:07:20 +02:00
Myian
383364b165 Update nw_de_DE.ts 2022-04-05 20:28:27 +02:00
Myian
8e0c42afa9 Update about.py 2022-04-05 20:16:49 +02:00
Veronica K. B. Olsen
9c9408d78a Changing status or importance flags should still update hidden flags 2022-04-05 11:22:41 +02:00
Myian
d1a4fbf3ce Update CREDITS.md 2022-04-04 17:47:29 +02:00
Myian
d28e0743f0 Update about.py 2022-04-04 17:46:56 +02:00
Myian
bf3d89e550 Add files via upload 2022-04-04 17:33:52 +02:00
Veronica Berglyd Olsen
34b5181f34 Merge branch 'main' into multi_root 2022-04-03 22:53:45 +02:00
Veronica Berglyd Olsen
23fd6b815f Save both status and importance flags (#1030)
* Put the status icons in the status object itself
* Allow saving both status and importance values
* Update current tests
* Improve test coverage
* Update sample project file
2022-04-03 22:43:11 +02:00
Veronica Berglyd Olsen
bdde6a2080 Clean up handling of root and class info for items 2022-04-03 17:45:17 +02:00
Veronica Berglyd Olsen
37970bd446 Add root information to project file 2022-04-02 19:43:26 +02:00
Veronica Berglyd Olsen
f9ddcd2f8a Restructure the record of root items in the tree class 2022-04-02 19:13:54 +02:00
Veronica Berglyd Olsen
8ddda4783d Merge branch 'main' into multi_root 2022-04-02 17:42:37 +02:00
Veronica Berglyd Olsen
a04b44d890 Add Lorem Ipsum tool (#1028)
* Add a Lorem Ipsum dialog
* Add the Lorem Ipsum text and insert action
* Add test coverage
2022-04-02 17:41:35 +02:00
Veronica Berglyd Olsen
89558481de Merge branch 'main' into multi_root 2022-04-02 16:03:43 +02:00
Martijn
99cc3635f7 Add Dutch translation (#1027)
* Add @mvdkleijn as translator
* Update about.py
2022-03-23 19:22:44 +01:00
Veronica Berglyd Olsen
6e3262f78e Minor fixes and updates (#1026)
* Make the Tokenizer class an abstract class
* Fix error message when opening non-file project items
2022-03-20 17:00:29 +01:00
Veronica Berglyd Olsen
fbff421de8 Merge 1.6.2 (#1025) 2022-03-20 16:04:18 +01:00
Veronica Berglyd Olsen
cebe20964f Merge branch 'main' into merge_1.6.2 2022-03-20 15:59:12 +01:00
Veronica Berglyd Olsen
203e353e92 Release 1.6.2 (#1024) 2022-03-20 15:44:52 +01:00
Veronica Berglyd Olsen
8c4e5b99fe Only compute shasum of file if it exists (#1023) 2022-03-20 15:22:09 +01:00
Veronica Berglyd Olsen
16ce55ba60 Make sure empty files are indexed (#1022)
* Make sure also empty files are indexed
* Update comments
2022-03-20 15:09:46 +01:00
Veronica Berglyd Olsen
a2d33e9672 Merge 1.6.1 (#1019) 2022-03-16 23:15:39 +01:00
Veronica Berglyd Olsen
6317202626 Merge branch 'main' into merge_1.6.1 2022-03-16 23:11:59 +01:00
Veronica Berglyd Olsen
4cbbae6d2f Release 1.6.1 (#1018) 2022-03-16 23:01:14 +01:00
Veronica Berglyd Olsen
9e76498f65 Update Latin American Spanish translation (#1017) 2022-03-16 22:41:52 +01:00
Veronica Berglyd Olsen
1c7708babd Fix infinite search loop bug (#1016)
* Make sure the search loop in the editor cannot run infinitely
* Add test coverage of infinite search case
* Run GitHub actions against the patch branch
2022-03-16 22:34:29 +01:00
Veronica Berglyd Olsen
ce4d3c0b5c Update linting settings, and drop Ubuntu 18.04 releases (#1014)
* Add E133 and W503 to ignored list for flake8
* Drop making releases for Ubuntu 18.04
2022-03-15 22:07:33 +01:00
Veronica Berglyd Olsen
7f43584ed5 Merge bugfixes (#1009)
* Fix document margin recursion error (#1007)
* Fix project file icon path in Windows installer (#1006)
2022-02-24 21:19:12 +01:00
Veronica Berglyd Olsen
7532fdb1fc Fix project file icon path in Windows installer (#1006) 2022-02-24 21:08:42 +01:00
Veronica Berglyd Olsen
3cdba90bb0 Fix document margin recursion error (#1007) 2022-02-24 21:06:28 +01:00
Veronica Berglyd Olsen
011291f225 Drop support for Python 3.6 (#1004)
* Drop support for Python 3.6
* Remove unused time parsing function
* Use Python 3.7 datetime function for writing stats data conversion
* Test against Python 3.10 on macOS and Windows
2022-02-20 23:35:33 +01:00
Veronica Berglyd Olsen
045a595537 Implement project file format 1.4 (#993)
* Update the item class with more compact item storage format
* Bump version and file version
* Update tests
* Add explicit test coverage for format conversions for item class
* Update the documentation
2022-02-20 22:05:31 +01:00
Veronica Berglyd Olsen
be703c1f46 Merge Release 1.6 (#1003)
* Update Spanish translation
* Bumb version and update changelog and release notes
* Add a note in the changelog
2022-02-20 20:09:24 +01:00
Veronica Berglyd Olsen
45c4f3cb97 Add Out of Cheese Error (#1000)
* Add error dialog window title
* Add more error messages
2022-02-16 17:43:50 +01:00
Veronica Berglyd Olsen
3fdea6e57a Fix tests 2022-02-14 22:18:38 +01:00
Veronica Berglyd Olsen
05aa656e75 Remove checks for unique root 2022-02-14 22:18:16 +01:00
Veronica Berglyd Olsen
f8ddff9bc3 Update en_US, fr_FR, nb_NO and pt_BR (#992)
* Update en_US, fr_FR, nb_NO, pt_BR translations
* Add Dutch project localisation
2022-02-12 18:15:51 +01:00
Veronica Berglyd Olsen
7f2d51bd15 Make some corrections to the docs introduction section (#991) 2022-02-12 18:13:17 +01:00
Veronica Berglyd Olsen
45def4b3b7 Set a default editor font for Windows and macOS (#990)
* Set a specific default editor font for Windows and macOS as GUI font isn't suitable
* Fix wrong reference
2022-02-12 17:36:58 +01:00
Veronica Berglyd Olsen
67c94314ed Remove Ubuntu 21.04 release and add 22.04 (#987) 2022-02-06 23:47:37 +01:00
Veronica Berglyd Olsen
7f320d23ca Release 1.6 RC 1 (#986)
* Bump version, update changelog and base translation file
* Replace svg image for docs due to LaTeX build error
2022-02-06 23:27:10 +01:00
Veronica Berglyd Olsen
6d097f0bcb Add customisation help to docs (#984)
* Make sure user-defined themes folders exist in the data path
* Minor cleanup in shortcuts table
* Add details in docs on how to customise GUI and add dictionaries
* Add spell check reference in docs overview
2022-02-06 13:45:30 +01:00
Veronica Berglyd Olsen
d7f2fec8ad Fix typo in main README 2022-02-06 00:00:20 +01:00
Veronica Berglyd Olsen
5ee857f6f4 Add new docs theme, and restructure (#978)
* Change documentation theme to 'furo'
* Update docs source for new theme
* Update index and split introduction
* Add a Getting Started section to the docs
* Rename getting started docs file
* Reorganise setup instructions
* Update usage sections for consistency
* Update docs references in main README
* Show release in sidebar
2022-02-05 23:59:05 +01:00
Veronica Berglyd Olsen
07c92b4bc3 Simplify windows setup builder a bit (#983)
* Optimise setup file
* Shorten windows setup file name
2022-02-04 23:58:01 +01:00
Veronica Berglyd Olsen
a0cdf44deb Add a windows setup builder (#981)
* Add a package builder for windows install
* Remove old win installer build
* Update setup instructions
* Some minor clarifications to docs and README
2022-02-04 20:37:04 +01:00
Veronica Berglyd Olsen
71419eeda3 Update docs on install and project storage (#976)
* Add note to docs about Ubuntu repo on Debian (issue #956)
* Add section on project storage to docs (covers issue #960)
2022-01-25 18:29:23 +01:00
Veronica Berglyd Olsen
85ea9f5b19 Add automatic index rebuild (#975)
* Rebuild the index automatically if not all files are in the index on open
* Update tests
2022-01-25 17:41:34 +01:00
Veronica Berglyd Olsen
1a9efa4e1e Allow hiding scene and section titles in export builds (#974) 2022-01-23 15:57:51 +01:00
Veronica Berglyd Olsen
ec07cebb51 Handle IO error on document save (#961)
* Add try/except to document replace call
* Try the os.replace command 5 times
* Just use else condition on for loop instead
* Make the exceptions explicitly OSError
* Revert the os.replace loop, as this is not the issue
2022-01-19 19:13:08 +01:00
Veronica Berglyd Olsen
8b603d15a5 Add back in i18n instructions and revert changes to class labels (#970)
* Revert the duplicate class name labels since there was no real need
* Restore i18n instructions
2022-01-19 08:35:59 +01:00
Veronica Berglyd Olsen
074718aedc Clean up GUI text (#969)
* Remove all statustip entries in the menu
* Prune text in Preferences
* Fix class labels
* Remove some redundant tooltips
* Improve some labels and dialogs
* Remove some more tooltips and fix a typo
* Update base ts file
* Fix typo
2022-01-18 22:16:25 +01:00
Veronica Berglyd Olsen
25038e6cbb Add support for external translation tools (#968)
* Make some minor translation fixes
* Remove crowdin file and add import function for crowdin zip file
* Rename fallback project lang file to en_GB
* Update all i18n files from crowdin exports
* Fix tests
* Update docs
2022-01-18 19:17:20 +01:00
Veronica Berglyd Olsen
537bf921d2 Update Crowdin configuration file 2022-01-18 16:42:45 +01:00
Veronica Berglyd Olsen
f06048384d Add a base language file (#965) 2022-01-18 16:40:35 +01:00
Veronica Berglyd Olsen
56e96ec3aa Update Crowdin configuration file 2022-01-18 15:11:47 +01:00
Veronica Berglyd Olsen
95c9e9d695 Update Crowdin configuration file 2022-01-18 14:59:27 +01:00
Veronica Berglyd Olsen
cb587112da Update language files (#964) 2022-01-18 10:17:22 +01:00
Veronica Berglyd Olsen
306edec32d Remove dependency from i18n docs and fix JSON error in Chinese file (#963) 2022-01-18 09:44:49 +01:00
Veronica Berglyd Olsen
c1c6a370a5 Merge patch 1.5.5 (#955)
* Remove os.path.commonpath call (Issue #954)
* Bump version and update changelog and release notes
2022-01-05 16:24:34 +01:00
Veronica Berglyd Olsen
00b3c3e9d2 Release 1.6 Beta 1 (#953) 2022-01-04 22:52:18 +01:00
Veronica Berglyd Olsen
52efbcc89f Merge changes from 1.5.4 (#952)
* Backport fix to issue #950
* Bump version and update changelog and release notes
2022-01-04 21:12:32 +01:00
Veronica Berglyd Olsen
9be2519406 Resolve HTML render bug (#951)
* Fix bug breaking HTML rendering with angle brackets in other blocks than normal text
* Restore cursor if document viewer fails to load
* Improve test coverage
2022-01-04 20:52:36 +01:00
Veronica Berglyd Olsen
59e10fbf0a Make ODT export more LibreOffice friendly (#949)
* Make the ToODT class more LibreOffice friendly
* Update tests
2022-01-02 20:49:12 +01:00
Veronica Berglyd Olsen
79657a9d53 Fix line number update when searching (#947)
* Fix line position in footer not updating when searching
* Update and fix docstrings
2022-01-02 00:12:46 +01:00
Veronica Berglyd Olsen
0401b8556d Add result count to search and rewrite scroll past end feature (#946)
* Restore colours to dark theme search-replace icon
* Implement a working search result counter
* Disable scroll past end feature and clean up search/replace and update test
* Re-implement scroll past end feature as a static distance
* Stop the search box from resizing on every search
2022-01-01 19:36:04 +01:00
Veronica Berglyd Olsen
b0f939af32 Apply open document shortcuts to the tree that has focus (#945)
* Better handling of Enter/Return on GUI trees, resolves #913
* Update test
* Generalise open selected handle functions
* Improve test coverage
* Update docstring
2021-12-31 19:51:26 +01:00
Veronica Berglyd Olsen
7024254960 Simplify text width settings (#943)
* Remove the fixed text width switch, resolves #924
* Update tests
* Clean up code to set text width and add to viewer
2021-12-31 17:17:27 +01:00
Veronica Berglyd Olsen
6ac9e1aec4 Tighten up the item class (#937)
* Protect the attributes of the NWItem class
* Fix test coverage
* Add a type checker function to the tree class
2021-12-31 16:25:20 +01:00
Veronica Berglyd Olsen
af3d0d2eb0 Happy new year! (#941) 2021-12-31 15:56:43 +01:00
Veronica Berglyd Olsen
5afd402c8b Merge 1.5.3 fixes (#940)
* Resolve #918
* Resolve #935
* Bump version and update changelog and release notes
2021-12-31 14:58:17 +01:00
Veronica Berglyd Olsen
5e2ab4f612 Refactor core and base classes (#931)
* Improve the NWIndex class
* Improve the NWItem and NWDoc classes
* Make some optimisations in projects and update tests
* Minor changes to string formatting in main source file
* Add some more protection to core classes
* Make all converter class attributes private
2021-12-18 16:03:45 +01:00
Veronica Berglyd Olsen
2f75d88694 Merge hotfixes from 1.5.2 (#934)
* Backport fix for issue #929
* Make the spell check wrapper more robust, solves #933
* Bump version and update changelog and release notes
2021-12-12 17:30:38 +01:00
Veronica Berglyd Olsen
00eea24e3f Error logging and mutables as function defaults (#930)
* Remove mutable iterables as function defaults
* Improve error reporting and standardise how it's done
2021-11-10 00:32:01 +01:00
Veronica Berglyd Olsen
67d2e266fd Fix greater/lesser symbol bug in HTML conversion (#928)
* Fix issue with greater or lesser symbol in paragraph with formatting
* Add test coverage and make another fix to special case of mixing formats
2021-11-10 00:26:07 +01:00
Tommy Marplatt
32d6583ae3 Complete Latin American Spanish GUI localisation (es_419) (#927)
* Complete Latin American Spanish GUI localisation (es_419)
* LA Spanish localisation credits
2021-11-09 21:20:57 +01:00
Veronica Berglyd Olsen
e8bb130245 Code and GUI text cleanup (#926)
* Move int range checkers from options class to common file
* Improve error handling and reporting
* Make some minor improvements to init and test suite
* Fix 'trypewriter' to 'typewriter' typo
* Remove menu path description in dialog help text
* Improve the help text for entries in the Format menu
* Reword a couple of dialog messages
2021-11-07 18:17:17 +01:00
Veronica Berglyd Olsen
e71121f738 Fix docs build issues (#922)
* Remove python version in rtd config
* Try pinning docutils version
2021-10-31 23:42:25 +01:00
Veronica Berglyd Olsen
c17cec0574 Fix missing translation (#921)
* Fix missing translation of label
* Make some minor fixes to comments and logging
2021-10-31 23:10:29 +01:00
Veronica Berglyd Olsen
f562937e81 Add pylupdate6 tool to i18n (#920)
* Add the pylupdate code from PyQt6 source
* Fix linting errors in pylupdate6
* Update setup script, add readme and update debian copyright file
2021-10-31 22:43:00 +01:00
Tommy Marplatt
508d92c3e8 Improve the i18n readme (#917)
* Improve i18n readme.
* Make some minor clarifications and reformatting of the i18n readme file

Co-authored-by: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
2021-10-28 23:38:59 +02:00
Veronica Berglyd Olsen
299cde9cdf Improve handling of page breaks (#916)
* Remove page break from title and always allow for partition and chapter
* Move strip of format string into the Tokenizer class
* Fix page breaks in HTML for skip and sep
* Update documentation
* Update tests
* Allow page breaks before scene and section headers
* Never hide the scene header and instead default to skip line
2021-10-24 22:09:41 +02:00
Veronica Berglyd Olsen
da2685131d Update how translation files are built and added (#915)
* Fix wrapping of setup help text
* Fix wrong info in help description in setup
* Drop .pro file and generate lupdate arguments on the fly
* Generate lrelease arguments on the fly
* Update i18n readme file
2021-10-24 16:01:26 +02:00
Veronica Berglyd Olsen
9a484193eb Merge hotfixes from 1.5.1 (#914)
* Fix bug in translation source list and restore lost translations
* Fix shift focus to novel tree on Alt+1 when visible
* Bump version and update changelog and release notes
2021-10-23 16:23:01 +02:00
Veronica Berglyd Olsen
1c45331b0a Fix and optimise code (#904)
* Fix bug in early error reporting in main init
* Update docstrings and optimise code in GuiMain
* Update docstrings and optimise code in Config
* Update docstrings and optimise code in common module
* Update docstrings and optimise code in main project classes
* Update the OptionState class
* Update the spell checker class
* Update the file converter classes and extend tests
* Update the about, merge, split and item editor classes and extend tests
* Update item editor test
* Update about dialog tests
* Some minor test cleanup
* Fix typo and add clarification in contributing guide
2021-10-14 21:35:42 +02:00
Veronica Berglyd Olsen
2a06db0a2b Change how PPA key is added (#910) 2021-10-13 19:24:15 +02:00
Veronica Berglyd Olsen
180deb106b Add Python 3.10 to supported versions (#909)
* Add Python 3.10 to supported versions
* Make Python versions a string in action
2021-10-07 19:31:17 +02:00
Veronica Berglyd Olsen
662aab973c Fix error in debian setup instructions (#908) 2021-10-02 17:45:00 +02:00
Veronica Berglyd Olsen
3f972250d0 Post-release fixes and updates (#903)
* Add an extra pause to the windows scripts
* Update main readme
* Add mention of Linux Mint in docs
2021-09-19 16:04:34 +02:00
Veronica Berglyd Olsen
15ec1496c5 Update and reorganise themes (#893)
* Drop the subfolders for GUI themes
* Remove bundled font support
* Add safe file read function
* Allow loading themes from multiple locations
* Clean up unused variables
* Clean up icons class
* Merge icon theme icons
* Update icon theme class
* Remove guiDark config setting
* Fix tests
* Fix handling of default theme
* Update icon readmes
* Add test for getGuiItem common function
2021-09-19 14:09:20 +02:00
Veronica Berglyd Olsen
be3376272e Add selected words count feature (#899)
* Add a selected words counter in the document editor
* Update and extend test coverage
* Rename the functions to something more sensible
2021-09-19 13:59:36 +02:00
Veronica Berglyd Olsen
c852a5bda3 Add hash check on document read/write (#890)
* Add sha256sum function
* Add hash check to document class
* Make sha256sum test more thorough
* Handle exceptions in the sha256sum function directly
* Update test coverage
* Clarify title on dialog box
* Don't write blank lines in makeAlert
2021-09-19 13:55:54 +02:00
Veronica Berglyd Olsen
d65c5e93b6 Fix wrong format for version number 2021-09-19 13:54:14 +02:00
Veronica Berglyd Olsen
07ac88bfd6 Bump version to 1.6-alpha0 for next release cycle 2021-09-19 13:46:19 +02:00
Veronica Berglyd Olsen
1386be23f4 Setup fixes post 1.5 release (#902)
* The main version must now always include the patch number
* Fix bug in pip build script
* Fix bug in debian sha256 function call
2021-09-19 13:43:20 +02:00
Veronica Berglyd Olsen
18cadf8db5 Release 1.5 (#888)
* Bump version to 1.5 and update changelog and release notes
* Update changelog and release notes
2021-09-19 12:56:45 +02:00
Veronica Berglyd Olsen
cf83b6572e Update French translation (#901)
Co-authored-by: jyhelle <47108022+jyhelle@users.noreply.github.com>
2021-09-18 23:10:03 +02:00
Veronica Berglyd Olsen
22662fd5eb Dialog format error (#889)
* Remove redundant format tags in project class
* Be consistent about internal function mapping
2021-09-11 16:14:35 +02:00
Veronica Berglyd Olsen
3263ce5669 Package building fixes (#887)
* Fix a couple of errors in make scripts
* Fix snapshot versioning for launchpad
2021-09-11 14:30:58 +02:00
Veronica Berglyd Olsen
cbb527c464 Add a shasum function to setup and use it for all packages (#886) 2021-09-10 22:13:00 +02:00
Veronica Berglyd Olsen
9cd2bb232b Release 1.5 RC 1 (#885)
* Bump version and update release notes and changelog
* Delete old release notes
2021-09-10 18:41:40 +02:00
Veronica Berglyd Olsen
dcfb353537 Update en_US and nb_NO translations (#884)
* Update US English translation
* Update Norwegian translation
2021-09-10 17:46:30 +02:00
Veronica Berglyd Olsen
8313de692e Fix Project Details dialog update issue (#883)
* Move project details dialog to correct folder
* Add update functions that are run each time the project details dialog is opened
2021-09-10 01:06:40 +02:00
Veronica Berglyd Olsen
3c8cb34b0a Project tree status and total word count changes (#882)
* Fix some inconsistencies in source file docstrings
* Remove the option to show status text in project tree
* Change how total word counts are calculated and propagated
* Fix tests and improve coverage
* Add setting in preferences
* Add missing word count timer to config file
2021-09-10 00:38:45 +02:00
Veronica Berglyd Olsen
b9311e84ce Fix a few mistakes in the docs (#881) 2021-09-08 20:47:33 +02:00
Veronica Berglyd Olsen
50d0c1eb29 Add PPA support (#880)
* Clean up a few things in various setup function
* Add Launchpad-related setting to Debian build function
* Add signature feature to package builder and fix error in debian/copyright
* Update documentation
* Update README
2021-09-08 20:38:35 +02:00
Veronica Berglyd Olsen
a9cd0b29d4 Fix icon in main README 2021-09-01 23:46:00 +02:00
Veronica Berglyd Olsen
2037ef3eac Setup fixes and tweaks (#879)
* Fix transparency on some of the icons
* Rewrite the setup clean command
* Clean up setup script and remove no longer needed qthelp command
* Add bash scripts for common make build chains
* Update the description files and change how setup writes generated files
* Reduce the number of setup files added to minimal zip packages
2021-09-01 23:41:38 +02:00
Veronica Berglyd Olsen
0582b9718b Debian package builder (#876)
* Add debian build files
* Add debian package build code to setup script
* Update the licenses in debian/copyright
* Fix a typo in windows setup docs
* Remove duplicate files
* Add missing fallback icons to assets
2021-08-31 23:46:03 +02:00
Veronica Berglyd Olsen
bbed05b273 Merge patch 1.4.2 2021-08-31 00:04:40 +02:00
Veronica Berglyd Olsen
30f0e82fba Release 1.4.2 2021-08-30 23:36:42 +02:00
Veronica Berglyd Olsen
bdef9a3955 Fix smart quote issue (#874) 2021-08-30 23:23:47 +02:00
Veronica Berglyd Olsen
f6845a9820 Remove the difflib spellchecker (#875)
* Delete simple spell checker
* Clean up the spell checker code
* Update tests
* Delete the bundled dictionaries
* Update documentation
* Use set() for user word list
* Fix tests so they pass also without dictionaries installed
2021-08-30 22:39:27 +02:00
Veronica Berglyd Olsen
4b52f343c1 Packaging Updates (#873)
* Make setup-generated script names lower case
* Change how the manual.pdf file is handled
2021-08-29 16:27:59 +02:00
Veronica Berglyd Olsen
a00d0820cc Release 1.5 Beta 2 (#871)
* Bump version to 1.5b2 and update changelog and release notes
* Update sample project
2021-08-26 21:10:29 +02:00
Veronica Berglyd Olsen
cdc9ab4ad6 Update US English and Norwegian translations (#870)
* Fix typo in main menu
* Add missing source file to translation list
* Update en_US translation
* Update nb_NO translation
2021-08-26 18:46:55 +02:00
Veronica Berglyd Olsen
1fb9648c6c Drop grey icon themes (#869)
* Add settings translator for icon themes
* Rename `typicons_colour_*` to `typicons_*`
* Delete grey icon themes
* Delete outdated paragraph in main README
* Fix tests
2021-08-26 18:01:52 +02:00
Veronica Berglyd Olsen
3403d98c72 Rename package from 'nw' to 'novelwriter' (#868)
* Rename nw folder to novelwriter
* Rename nw to novelwriter in auxiliary files
* Rename nw to novelwriter in main app source
* Rename nw to novelwriter in tests
* Make setup script for pdf docs less spammy
2021-08-26 17:33:54 +02:00
Veronica Berglyd Olsen
2cf2eb9f55 Simplify the setup instructions for Windows (#865) 2021-08-25 23:24:00 +02:00
Veronica Berglyd Olsen
b5e52b80a3 Add a "Check for Updates" dialog (#863)
* Add basic dialog for Updates check
* Add GitHub API call and processing
* Finalise the update dialog
* Improve test coverage
2021-08-22 14:33:00 +02:00
Veronica Berglyd Olsen
80911af4d2 Release 1.5 Beta 1 (#858)
* Bump version to 1.5-beta1 and update changelog and release notes
2021-08-22 11:35:06 +02:00
Veronica Berglyd Olsen
7a80e6a55c Make Help select correct version of docs (#862) 2021-08-21 18:33:35 +02:00
Veronica Berglyd Olsen
7958cb530f Taskbar icon on windows (#861)
* Give app an unique ID when launching on Windows
* Improve test coverage
2021-08-21 17:10:19 +02:00
Veronica Berglyd Olsen
95c79e1c23 Documentation and ODT exporter updates (#859)
* Clean up a few things in the ODT exporter
* Remove local HTML docs and instead add PDF docs
* Update documentation
2021-08-20 17:16:14 +02:00
Veronica Berglyd Olsen
eee0f5e4c9 Include HTML docs in minimal installs (#856)
* Link to stable docs for stable release, otherwise latest docs
* Add build command to setup for making HTML docs
* Change the documentation menu entry to open either online or local HTML
* Update docs build instructions in docs
2021-08-18 00:13:28 +02:00
Veronica Berglyd Olsen
a9368904e5 GUI and code tweaks and fixes (#852)
* Improve format menu header descriptions
* Ensure that item status is parsed after item class from XML
* Fix column alignment in ToC.txt file
* Rename test variable and fix outdated docstring
* Fix ToC.txt underline
* Rename the Layout label on the item details panel
* Add option to emphasise H1 and H2 labels in the project tree
* Rename the main column of the novel tree to match project tree
* Use the same document icons in the outline as the project tree
* Move project tree settings to Project section of config file
2021-08-17 21:45:18 +02:00
Veronica Berglyd Olsen
f7c768bb91 Add project format documentation and popup box (#855)
* Add documentation of the various project file formats
* Add an info box  for updating to project format 1.3
* Add information on how to access the documentation
* Add a note on file format and rename a few things
* Fix some typos
2021-08-17 20:06:26 +02:00
Veronica Berglyd Olsen
f2b93f90f7 Fix a typo and fix section naming in docs 2021-08-16 18:12:09 +02:00
Veronica Berglyd Olsen
7d5661443f Improve Docs (#851)
* Split up the docs a bit more
* Improve documentation
2021-08-16 18:06:00 +02:00
Veronica Berglyd Olsen
460b350d85 Update docs and add menu entries for special titles (#850)
* Update Introduction chapter
* Update User Interface chapter
* Update Novel Projects chapter
* Update Novel Structure chapter
* Update Exporting Projects chapter
* Drop the asterisk notation for unnumbered chapters
* Add menu entries and tests for Novel Title and Unnumbered Chapter block formats
2021-08-15 23:30:11 +02:00
Veronica Berglyd Olsen
669f013c96 Fix issue with icons not updating when index is rebuilt (#849) 2021-08-15 21:40:45 +02:00
Veronica Berglyd Olsen
1bf584f9bf Add [NEW PAGE] page and [VSPACE] to Insert menu (#848)
* Add menu entries for inserting new page and vspace codes
* Update tests
2021-08-15 18:58:49 +02:00
Veronica Berglyd Olsen
97aebc5b84 Update Project Tree (#847)
* Rename index textCounts to fileMeta and add main header level
* Add new icons for document layouts
* Add function in NWItem to describe the item
* Use the icons and description in the project tree and details panel
* Remove flags column and add status column with optional full text
* Update handling and display of header level in editor
* Fix potential bug in project tree
* Update tests
2021-08-15 17:55:57 +02:00
Veronica Berglyd Olsen
cf7cd5502c Make PyQt5 minimum version requirement consistent (#846) 2021-08-15 10:21:37 +02:00
Veronica Berglyd Olsen
cf08ba1d39 ODT Export Fixes (#843)
* Fix issue with additional line breaks in ODT export
* Improve format handling in ToOdt, and remove some unused code
* Add test for tab in format
* Add class to write text formats to XML
* Simplify the XMLParagraph class a bit
* Correct a breach of ODT standard and add error checking
* Make some final corrections
2021-08-14 12:42:44 +02:00
Veronica Berglyd Olsen
c41e0efc73 Add a warning when opening novelWriter alpha version (#844) 2021-08-13 15:26:22 +02:00
Veronica Berglyd Olsen
bb1a778277 Merge Novel Layouts (#837)
* Merge novel layouts and simplify the Tokenizer class
* Fix core tests
* Delete auto-layout code
* Remove no longer needed item layouts
* Remove references to deleted item layouts in test
* Make some minor changes to Tokenizer class and update tests
* Update test reference files
* Update sample project
* Fix a few issues with the Tokenizer
* Centre some text in the sample documents
* Make some minor changes to how new projects are generated
* Add support for New Page and VSpace commands to the Tokenizer
* Remove Title and Page layouts and add codes for page break and vertical space
* Add document layout and fix some issues in index class with new title formats
* Update tests and reference files
* Bump the project file version and fix a minor issue in items class
* Update tests and test coverage
* Clean up some warnings and issues in tests
2021-08-02 23:44:35 +02:00
Veronica Berglyd Olsen
c6973043e6 Index Updates (#840)
* Improve the index keyword checker function
* Implement a more compact indented JSON encoder
* Remove timestamp from reference, novel and note indices
* Remove empty entries in reference index
* Merge novel and note indices into a single file index
2021-08-01 18:19:03 +02:00
Veronica Berglyd Olsen
e5c715695e Config class improvements (#826)
* Subclass ConfigParser
* Remove redundant variables and update tests
* Update file description
* Move NWConfigParser class to common.py
* Improve coverage of config class
* Use NWConfigParser also in themes.py
* Update config class file header
* Fix comment
* Update the usage of ConfigParser to recommended practice and extend tests
* Improve logging for info level a bit
2021-07-28 00:10:15 +02:00
Veronica Berglyd Olsen
e92506dc07 Bump version to 1.5-alpha0 for next release cycle 2021-07-28 00:05:42 +02:00
Veronica Berglyd Olsen
62344376d7 Bump version to 1.4.1, and update changelog and release notes 2021-07-27 23:46:15 +02:00
Veronica Berglyd Olsen
8cf96c3102 Make a clarification in the changelog 2021-07-27 23:31:04 +02:00
Veronica Berglyd Olsen
16fa8679d0 Bump version to 1.4 final, and update changelog and release notes 2021-07-27 23:30:44 +02:00
Veronica Berglyd Olsen
b517276156 Fix layout margins and z-order of some dialogs (#834)
* Fix layout margins on paged dialogs
* Make sure non-modal dialogs are only shown once and are on top
2021-07-26 16:40:20 +02:00
Veronica Berglyd Olsen
732450e163 Add CREDITS file and update README (#833)
* Add CREDITS file and update README
* Fix typo and add note in Libraries section of CREDITS
2021-07-25 16:50:12 +02:00
Veronica Berglyd Olsen
df8e3dd82b Update Contributing Guide (#832)
* Update Contributing Guide
* Minor improvements to README and CONTRIBUTING
2021-07-17 17:27:38 +02:00
Veronica Berglyd Olsen
75ddafd31d Update French translation (#829)
Co-authored-by: jyhelle <47108022+jyhelle@users.noreply.github.com>
2021-07-13 21:51:30 +02:00
Veronica Berglyd Olsen
4f38a8d16c Update the formatting section of the README (#828)
* Update the formatting section of the readme
* Use sup tags for footnotes in readme
2021-07-13 16:13:03 +02:00
Veronica Berglyd Olsen
35746103c7 i18n: Update en_US and nb_NO (#825)
* Update US English translation file
* Update Norwegian translation file
2021-07-13 15:37:24 +02:00
Veronica Berglyd Olsen
fb5347b8e4 Change the branching model (#827)
* Update workflows and add requirements-dev.txt
* Remove codecov from dev requirements
* Update readme and contributing guide
* Update PR template
2021-07-13 15:34:10 +02:00
Veronica Berglyd Olsen
6890b278ea Release 1.4 RC 1 (#824)
* Bump version to 1.4 RC 1
* Update changelog and release notes
2021-07-12 20:52:35 +02:00
Veronica Berglyd Olsen
9f667a0b35 Update code style to new standard 2021-07-05 16:28:44 +02:00
Veronica Berglyd Olsen
36be7b0b33 Test Coverage of the Editor (#787)
* Drop the _qDocument class variables
* Split up the current doceditor test file
* Add tests for editor init, load and save
* Add tests for editor meta functions and actions
* Add tests for editor insert functions
* Add tests for editor text manipulation and block formatting
* Fix code style
* Add text coverage for alignment and indent
2021-07-05 16:10:52 +02:00
Veronica Berglyd Olsen
1d16cc2a03 Move the coding of angle brackets in HTML to the innermost function in the chain (#821) 2021-07-04 18:05:26 +02:00
Veronica Berglyd Olsen
72fd2990e7 Merge branch 'main' into dev 2021-07-04 17:58:53 +02:00
Veronica Berglyd Olsen
6d7ca2bb86 Cleanup (#820)
* Update instructions and readmes
* Cleanup in base files
* Cleanup in core files
* Cleanup in gui files
* Cleanup in dialog files
* Cleanup in tools files
* Cleanup in test files
2021-07-04 17:57:54 +02:00
Veronica Berglyd Olsen
f10a8f9589 Update PR template 2021-07-04 17:56:40 +02:00
Veronica Berglyd Olsen
1881b3d32c Merge branch 'main' into dev 2021-07-02 10:25:56 +02:00
Veronica Berglyd Olsen
1b89d0a4f0 Logger messages (#818)
* Change the way logger messages are generated by using the printf-like method
* Use single quotes around log values that can be empty strings
* Fix bug in log message
2021-07-02 10:22:00 +02:00
용성지
671888b6ea add language support (Simplified Chinese - initial version) (#817)
* add translator's name in about dialog

* add new CN.ts

* Update nw_zh_CN.ts

* inital version (CN)

* add project_zh_CN.json

* Update project_zh_CN.json

* Revert changes to otherlanguage files

* Change case of first character in 'novelWriter' in Chinese translation

* Update about.py

Change the entry "Simplified Chinese" from English the local name of the language

Co-authored-by: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
2021-07-02 10:17:58 +02:00
Veronica Berglyd Olsen
50498a7462 Merge pull request #819 from vkbo/update_guides
Update guides
2021-07-01 20:28:41 +02:00
Veronica Berglyd Olsen
ecd190987e Add a pull request template 2021-07-01 20:23:21 +02:00
Veronica Berglyd Olsen
2c000f6808 Update contributing guide and i18n readme 2021-07-01 20:23:09 +02:00
Veronica Berglyd Olsen
c472e40b2b Fix workflow 2021-06-25 23:28:38 +02:00
Veronica Berglyd Olsen
0575f89ae9 Remove alignments in arguments for format statements 2021-06-25 23:20:15 +02:00
Veronica Berglyd Olsen
e1dcfaa1e3 Drop dictionary alignment by colon 2021-06-25 23:14:13 +02:00
Veronica Berglyd Olsen
486af84107 Merge pull request #816 from vkbo/style
Style
2021-06-25 21:56:03 +02:00
Veronica Berglyd Olsen
8acbd8b978 Update contributing guide with new restrictions 2021-06-25 21:48:50 +02:00
Veronica Berglyd Olsen
7f9180e356 Update workflow 2021-06-25 21:39:24 +02:00
Veronica Berglyd Olsen
26912f226f Add double space before in-line comments 2021-06-25 21:36:52 +02:00
Veronica Berglyd Olsen
0c286231cc Remove multiple hashes before comments 2021-06-25 21:11:25 +02:00
Veronica Berglyd Olsen
991a61f2f6 Remove encoding line and add spaces between classes and functions, tests 2021-06-25 21:04:48 +02:00
Veronica Berglyd Olsen
edfd7c9770 Remove encoding line and add spaces between classes and functions 2021-06-25 20:53:33 +02:00
Veronica Berglyd Olsen
ad62faaeea Fix broken links in docs 2021-06-13 20:03:53 +02:00
Veronica Berglyd Olsen
468903bbeb Merge pull request #812 from vkbo/release_1.4beta1
Release 1.4 Beta 1
2021-06-13 20:01:03 +02:00
Veronica Berglyd Olsen
0723f44dc3 Update changelog and release notes 2021-06-13 19:56:16 +02:00
Veronica Berglyd Olsen
831bdabfc6 Bumped version to 1.4-beta1 2021-06-13 19:12:10 +02:00
Veronica Berglyd Olsen
93a3eed530 Merge pull request #804 from vkbo/text_align
Text alignment and indent
2021-06-13 19:10:15 +02:00
Veronica Berglyd Olsen
307a52e7f4 Update documentation 2021-06-13 19:07:36 +02:00
Veronica Berglyd Olsen
3246f4bfcc Add tests for the menu functions 2021-06-13 18:46:35 +02:00
Veronica Berglyd Olsen
fa4f4a8db4 Make the comment format action a toggle feature 2021-06-13 18:32:11 +02:00
Veronica Berglyd Olsen
cb797fe903 Add menu entries for align and indent 2021-06-13 18:28:23 +02:00
Veronica Berglyd Olsen
618461b1ff Merge branch 'dev' into text_align 2021-06-13 17:59:47 +02:00
Veronica Berglyd Olsen
e2f08d3c76 Merge branch 'main' into dev 2021-06-13 17:58:49 +02:00
Veronica Berglyd Olsen
f39cda729d Merge pull request #811 from vkbo/release_1.3.3
Release 1.3.3
2021-06-13 17:13:54 +02:00
Veronica Berglyd Olsen
b28d826d76 Updated changelog and release notes 2021-06-13 17:11:19 +02:00
Veronica Berglyd Olsen
57ae559723 Merge pull request #810 from vkbo/wcount_when_delete
Update project word count when a file is permanently deleted
2021-06-13 16:57:31 +02:00
Veronica Berglyd Olsen
1d1be18689 Bumped version to 1.3.3 2021-06-13 16:56:29 +02:00
Veronica Berglyd Olsen
141b5eb776 Update project word count when a file is permanently deleted 2021-06-13 16:53:40 +02:00
Veronica Berglyd Olsen
3f941bf9fd Merge branch 'dev' into text_align 2021-06-11 00:11:40 +02:00
Veronica Berglyd Olsen
a48f302531 Merge branch 'main' into dev 2021-06-11 00:11:19 +02:00
Veronica Berglyd Olsen
12d8872973 Merge pull request #809 from vkbo/item_tags
Make XML parser for items less picky
2021-06-11 00:10:46 +02:00
Veronica Berglyd Olsen
40ff865989 Make XML parser for items less picky 2021-06-11 00:01:58 +02:00
Veronica Berglyd Olsen
32e9c10702 Fix word counter for align and indent tags 2021-06-10 23:38:11 +02:00
Veronica Berglyd Olsen
804dd3bb7c Merge branch 'dev' into text_align 2021-06-10 22:52:47 +02:00
Veronica Berglyd Olsen
9f2e3a66cd Merge branch 'main' into dev 2021-06-10 22:51:45 +02:00
Veronica Berglyd Olsen
960d1967a3 Merge pull request #808 from vkbo/focus_keys
Focus keys
2021-06-10 22:45:18 +02:00
Veronica Berglyd Olsen
ad025c3fe4 Merge branch 'main' into focus_keys 2021-06-10 22:42:40 +02:00
Veronica Berglyd Olsen
81212a108e Merge pull request #807 from vkbo/setup_win_encoding
Make the extractVersion function in setup a bit more robust
2021-06-10 22:42:30 +02:00
Veronica Berglyd Olsen
8637a4eb12 Merge branch 'main' into focus_keys 2021-06-10 22:35:55 +02:00
Veronica Berglyd Olsen
0e4489d627 Merge branch 'main' into setup_win_encoding 2021-06-10 22:33:04 +02:00
Veronica Berglyd Olsen
0bfb9d0700 Update docs 2021-06-10 22:18:51 +02:00
Veronica Berglyd Olsen
efe759b94e Change focus shortcuts on Window as they conflict with alt codes 2021-06-10 22:16:06 +02:00
Veronica Berglyd Olsen
9f89c1f7a4 Merge pull request #806 from vkbo/cleanup_alerts
Fix translations and refactor makeAlert calls
2021-06-10 22:10:32 +02:00
Veronica Berglyd Olsen
530d92cc3f Make the extractVersion function in setup a bit more robust 2021-06-10 22:08:26 +02:00
Veronica Berglyd Olsen
b0225515d2 Remove isinstance check in error reporting 2021-06-10 21:55:40 +02:00
Veronica Berglyd Olsen
d511c69ee7 Rewrap some alert messages 2021-06-10 21:51:52 +02:00
Veronica Berglyd Olsen
6e1e40f13e Fix translations and refactor makeAlert calls 2021-06-10 21:42:40 +02:00
Veronica Berglyd Olsen
70d3ee07bf Update sample project 2021-06-10 21:39:58 +02:00
Veronica Berglyd Olsen
e5477f314e Add support for indented paragraphs in exports 2021-06-10 21:38:58 +02:00
Veronica Berglyd Olsen
80c4826253 Added left/right indentation to Tokenizer class 2021-06-10 00:04:54 +02:00
Veronica Berglyd Olsen
e0de3ff191 Improve test coverage 2021-06-09 23:40:37 +02:00
Veronica Berglyd Olsen
239cff3dee Fix tests 2021-06-09 23:32:22 +02:00
Veronica Berglyd Olsen
6f9e3168b0 Fix default alignment 2021-06-09 23:05:16 +02:00
Veronica Berglyd Olsen
7d067f807d Add text alignment tags 2021-06-09 22:08:31 +02:00
Veronica Berglyd Olsen
a7b43699ed Merge pull request #802 from teymour-aldridge/patch-1
Remove redundant assignment.
2021-06-09 19:46:48 +02:00
Teymour Aldridge
7d11917d1c Remove redundant assignment. 2021-06-09 18:42:16 +01:00
Veronica Berglyd Olsen
904ba9b1ca Merge branch 'main' into dev 2021-05-30 12:27:30 +02:00
Veronica Berglyd Olsen
03daa350f8 Merge branch 'main' into dev 2021-05-23 16:37:24 +02:00
Veronica Berglyd Olsen
095cc38122 Merge pull request #786 from vkbo/allow_line_breaks
Allow line breaks
2021-05-23 16:35:09 +02:00
Veronica Berglyd Olsen
142d659b70 Fix an issue with markdown export 2021-05-23 16:31:06 +02:00
Veronica Berglyd Olsen
0826a2f8a3 Remove trailing space highlight and add highlight of redundant spaces 2021-05-23 16:17:05 +02:00
Veronica Berglyd Olsen
a3819a7785 Update docs 2021-05-23 15:20:26 +02:00
Veronica Berglyd Olsen
2314777b4b Add test coverage 2021-05-23 15:04:26 +02:00
Veronica Berglyd Olsen
729e97a95d Add function to clean up line breaks 2021-05-23 14:39:02 +02:00
Veronica Berglyd Olsen
5ab60ca4a3 Fix test 2021-05-23 13:15:09 +02:00
Veronica Berglyd Olsen
f1adff82a8 Remove hard line break menu entry 2021-05-23 13:13:03 +02:00
Veronica Berglyd Olsen
96b2d139c9 Allow line breaks in paragraphs 2021-05-23 13:08:10 +02:00
Veronica K. B. Olsen
dfc775c925 Fix merge from main 2021-05-17 20:28:36 +02:00
Veronica K. B. Olsen
dea304d1eb Merge branch 'main' into dev 2021-05-17 20:27:08 +02:00
Veronica Berglyd Olsen
9fc640aa59 Merge pull request #780 from vkbo/class_cleanup
GUI Class Cleanup
2021-05-17 17:02:39 +02:00
Veronica K. B. Olsen
d812aab173 Update gitignore with versions files 2021-05-17 16:58:52 +02:00
Veronica K. B. Olsen
39b58711c7 Make some GuiItemDetails variables private 2021-05-17 16:58:07 +02:00
Veronica K. B. Olsen
c6120fcf7c Make some GuiDocViewer variables private 2021-05-17 16:57:49 +02:00
Veronica Berglyd Olsen
45b9215c87 Merge pull request #779 from vkbo/editor_cleanup
Editor Code Improvements
2021-05-16 19:02:57 +02:00
Veronica K. B. Olsen
394f6adf82 Remove no longer needed forward function 2021-05-16 17:35:33 +02:00
Veronica K. B. Olsen
1a5076438d Add a signal for updated word counts 2021-05-16 17:31:12 +02:00
Veronica K. B. Olsen
872b8e7902 Fix broken tests 2021-05-16 16:57:00 +02:00
Veronica K. B. Olsen
0cad96fdca Use an enum to pass values to the status bar LEDs 2021-05-16 16:43:44 +02:00
Veronica K. B. Olsen
e9ef4fd091 Make sure slots and signals are correct type 2021-05-16 16:26:03 +02:00
Veronica K. B. Olsen
4ce8b38acd Add editorDocumentChanged signal in GuiDocEditor 2021-05-16 00:41:44 +02:00
Veronica K. B. Olsen
24ab6f2d3b Make the editor dictionary internal 2021-05-16 00:19:40 +02:00
Veronica K. B. Olsen
ba5e5f4bb5 Make GuiDocEditor variables private 2021-05-15 23:57:31 +02:00
Veronica K. B. Olsen
6ef8611a0a Merge branch 'main' into dev 2021-05-08 21:41:36 +02:00
Veronica Berglyd Olsen
c1544ab374 Merge pull request #760 from vkbo/doc_class
Non-Reusable Document Class
2021-05-02 19:53:20 +02:00
Veronica K. B. Olsen
d795eb6f5f Delete no longer needed test reference files 2021-05-02 19:47:39 +02:00
Veronica K. B. Olsen
ce8264b8f2 New split tool test 2021-05-02 19:47:04 +02:00
Veronica K. B. Olsen
c6cbc8a8b1 New merge tool test 2021-05-02 18:52:36 +02:00
Veronica K. B. Olsen
6c79a1daba Test terminology update 2021-05-02 17:48:28 +02:00
Veronica K. B. Olsen
7867965989 Alter the init logic of handles in NWDoc 2021-05-02 17:19:50 +02:00
Veronica K. B. Olsen
348513a248 Merge branch 'dev' into doc_class 2021-05-02 17:14:15 +02:00
Veronica K. B. Olsen
eb62253137 Merge branch 'main' into dev 2021-05-02 17:12:41 +02:00
Veronica K. B. Olsen
6b119cf4b8 Remove the return false on error in doc viewer 2021-04-25 23:58:11 +02:00
Veronica K. B. Olsen
88d198403e Update translations 2021-04-25 23:47:42 +02:00
Veronica K. B. Olsen
5ee39d7ecc Tighten up the use of item and nwdoc objects in editor class 2021-04-25 23:46:09 +02:00
Veronica K. B. Olsen
e7102725bd Update translations 2021-04-25 23:24:21 +02:00
Veronica K. B. Olsen
bd28867804 Update tests 2021-04-25 23:22:05 +02:00
Veronica K. B. Olsen
0eb09a2136 Move error reporting out of the NWDoc class 2021-04-25 23:21:51 +02:00
Veronica K. B. Olsen
470daf0036 Make NWDoc class non-reusable 2021-04-25 23:01:20 +02:00
Veronica K. B. Olsen
fd28cbca4e Merge branch 'main' into dev 2021-04-25 18:25:12 +02:00
Veronica Berglyd Olsen
e865b2c054 Merge pull request #758 from vkbo/class_cleanup
Class Cleanup
2021-04-25 18:02:25 +02:00
Veronica K. B. Olsen
f8243f6934 Update translation files 2021-04-25 17:52:07 +02:00
Veronica K. B. Olsen
746268c3ef GUI classes should only init with main GUI as parent 2021-04-25 17:50:11 +02:00
Veronica K. B. Olsen
48695651e1 Core classes should only init with project class and if needed access main gui via project 2021-04-25 17:39:52 +02:00
Veronica K. B. Olsen
45f726669e Remove the showStatus flag from document handling 2021-04-25 17:16:57 +02:00
Veronica K. B. Olsen
d473615ccf Rename open and save document to read and write in NWDoc 2021-04-25 17:10:12 +02:00
Veronica K. B. Olsen
1e48c6dcfe Merge branch 'main' into dev 2021-04-25 11:27:13 +02:00
Veronica K. B. Olsen
51431169dd Merge branch 'main' into dev 2021-04-23 22:02:59 +02:00
Veronica K. B. Olsen
81e72826ce Merge branch 'main' into dev 2021-04-18 18:18:05 +02:00
Veronica K. B. Olsen
8190c189e5 Merge branch 'testing' into dev 2021-04-18 17:33:54 +02:00
Veronica K. B. Olsen
06dcaff806 Merge branch 'testing' into dev 2021-04-06 17:49:28 +02:00
Veronica K. B. Olsen
4ee5890d90 Merge branch 'testing' into dev 2021-03-31 19:03:42 +02:00
Veronica K. B. Olsen
bd888451ec Merge branch 'testing' into dev 2021-03-29 18:52:36 +02:00
Veronica K. B. Olsen
fd7319b295 Merge branch 'testing' into dev 2021-03-29 18:39:36 +02:00
Veronica K. B. Olsen
06a13557e3 Merge branch 'testing' into dev 2021-03-28 18:15:40 +02:00
Veronica K. B. Olsen
e92ac2b30d Merge branch 'testing' into dev 2021-03-28 15:23:16 +02:00
Veronica K. B. Olsen
56a5559024 Merge branch 'testing' into dev 2021-03-21 17:18:43 +01:00
Veronica K. B. Olsen
3664266eed Merge branch 'testing' into dev 2021-03-17 22:58:28 +01:00
Veronica K. B. Olsen
909114e318 Merge branch 'testing' into dev 2021-03-17 21:13:51 +01:00
Veronica K. B. Olsen
03beae30ca Move dev branch to version 1.4-alpha0 2021-03-17 11:33:37 +01:00
969 changed files with 123651 additions and 443007 deletions

24
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,24 @@
<!--
Please check the following before you make a pull request:
* The branch you are making the pull request from (in your own fork) has a unique and descriptive
name. Do not make a pull request directly from your copy of `main`.
* If you are submitting translation files, only submit the files that you have added translations
to, not the other .ts files that may have been updated in the process.
* Make sure your contribution follows the style guide and other requirements mentioned in the
CONTRIBUTING.md file in the repository.
* Fill in the Summary section below, and if relevant, mention the issue numbers related to the PR.
-->
**Summary:**
**Related Issue(s):**
**Reviewer's Checklist:**
* [ ] The header of all files contain a reference to the repository license
* [ ] The overall test coverage is increased or remains the same as before
* [ ] All tests are passing
* [ ] All flake8 checks are passing and the style guide is followed
* [ ] Documentation (as docstrings) is complete and understandable
* [ ] Only files that have been actively changed are committed

103
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,103 @@
name: Build
on: workflow_dispatch
jobs:
buildAssets:
runs-on: ubuntu-latest
steps:
- name: Python Setup
uses: actions/setup-python@v4
with:
python-version: "3.11"
architecture: x64
- name: Install Packages (apt)
run: |
sudo apt update
sudo apt install qttools5-dev-tools latexmk texlive texlive-latex-extra
- name: Checkout Source
uses: actions/checkout@v3
- name: Install Packages (pip)
run: pip install -r docs/source/requirements.txt
- name: Build Assets
run: python pkgutils.py qtlrelease sample manual
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: nw-assets
path: |
novelwriter/assets/sample.zip
novelwriter/assets/manual.pdf
novelwriter/assets/i18n/*.qm
if-no-files-found: error
retention-days: 1
buildLinux:
needs: buildAssets
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.11"]
linux-tag: ["manylinux_2_24_x86_64", "manylinux_2_28_x86_64"]
steps:
- name: Python Setup
uses: actions/setup-python@v4
with:
python-version: "3.11"
architecture: x64
- name: Install Packages (pip)
run: pip install python-appimage
- name: Checkout Source
uses: actions/checkout@v3
- name: Download Artifacts
uses: actions/download-artifact@v3
with:
name: nw-assets
path: novelwriter/assets
- name: Build AppImage
run: python pkgutils.py build-appimage --linux-tag ${{ matrix.linux-tag }} --python-version ${{ matrix.python-version }}
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: novelWriter-Packages
path: |
dist_appimage/novelWriter*.AppImage
dist_appimage/novelWriter*.AppImage.sha256
if-no-files-found: error
retention-days: 1
buildMac:
needs: buildAssets
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download Artifacts
uses: actions/download-artifact@v3
with:
name: nw-assets
path: novelwriter/assets
- name: Build App Bundle
run: ./setup/macos/build.sh
- name: Upload DMG
uses: actions/upload-artifact@v3
with:
name: novelWriter-Packages
path: |
dist_macos/novelWriter*.dmg
dist_macos/novelWriter*.dmg.sha256
if-no-files-found: error
retention-days: 1

View File

@@ -1,29 +1,30 @@
name: flake8
name: Flake8
on:
push:
branches: [ main, testing, dev ]
branches:
- main
- dev
pull_request:
branches: [ main, testing, dev ]
branches:
- main
- dev
jobs:
checkSyntax:
runs-on: ubuntu-latest
steps:
- name: Python Setup
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: 3
architecture: x64
- name: Checkout Source
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install flake8
run: pip install flake8
- name: Syntax Error Check
- name: Syntax Check
run: |
flake8 nw --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 tests --count --select=E9,F63,F7,F82 --show-source --statistics
- name: Coding Style Violations
run: |
flake8 nw --count --max-line-length=99 --ignore E203,E221,E226,E228,E241,E251,E261,E266,E302,E305 --show-source --statistics
flake8 tests --count --max-line-length=99 --ignore E203,E221,E226,E228,E241,E251,E261,E266,E302,E305 --show-source --statistics
flake8 --version
flake8 novelwriter --count --show-source --statistics
flake8 tests --count --show-source --statistics

View File

@@ -2,41 +2,40 @@ name: Linux
on:
push:
branches: [ main, testing, dev ]
branches:
- main
- dev
pull_request:
branches: [ main, testing, dev ]
branches:
- main
- dev
jobs:
testLinux:
strategy:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
runs-on: ubuntu-latest
steps:
- name: Python Setup
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Install Packages (apt)
run: |
sudo apt update
sudo apt install libenchant-dev qt5-default qttools5-dev-tools
sudo apt install libenchant-2-dev qttools5-dev-tools aspell-en
- name: Checkout Source
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install Dependencies (pip)
run: |
pip install --upgrade pip
pip install -r requirements.txt
pip install pytest-timeout
pip install pytest-cov
pip install pytest-qt
pip install codecov
pip install -U -r requirements.txt -r tests/requirements.txt
- name: Run Build Commands
run: python setup.py qtlrelease sample
run: python pkgutils.py qtlrelease sample
- name: Run Tests
run: |
export QT_QPA_PLATFORM=offscreen
pytest -v --cov=nw --timeout=60
pytest -v --cov=novelwriter --timeout=60
- name: Upload to Codecov
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v3

View File

@@ -1,37 +1,35 @@
name: macOS
name: MacOS
on:
push:
branches: [ main, testing, dev ]
branches:
- main
- dev
pull_request:
branches: [ main, testing, dev ]
branches:
- main
- dev
jobs:
testMac:
runs-on: macos-latest
steps:
- name: Python Setup
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: "3.11"
architecture: x64
- name: Install Packages
- name: Install Packages (brew)
run: |
brew install enchant
- name: Checkout Source
uses: actions/checkout@v2
- name: Install Dependencies
uses: actions/checkout@v3
- name: Install Dependencies (pip)
run: |
pip install --upgrade pip
pip install -r requirements.txt
pip install pyobjc
pip install pytest-timeout
pip install pytest-cov
pip install pytest-qt
pip install codecov
pip install -U pyobjc -r requirements.txt -r tests/requirements.txt
- name: Run Tests
run: |
export QT_QPA_PLATFORM=offscreen
pytest -v --cov=nw --timeout=60
pytest -v --cov=novelwriter --timeout=60
- name: Upload to Codecov
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v3

View File

@@ -2,31 +2,30 @@ name: Windows
on:
push:
branches: [ main, testing, dev ]
branches:
- main
- dev
pull_request:
branches: [ main, testing, dev ]
branches:
- main
- dev
jobs:
testWin:
runs-on: windows-latest
steps:
- name: Python Setup
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: 3.9
python-version: "3.11"
architecture: x64
- name: Checkout Source
uses: actions/checkout@v2
- name: Install Dependencies
uses: actions/checkout@v3
- name: Install Dependencies (pip)
run: |
pip install --upgrade pip
pip install -r requirements.txt
pip install pytest-timeout
pip install pytest-cov
pip install pytest-qt
pip install codecov
pip install -U -r requirements.txt -r tests/requirements.txt
- name: Run Tests
run: |
pytest -v --cov=nw --timeout=60
pytest -v --cov=novelwriter --timeout=60
- name: Upload to Codecov
uses: codecov/codecov-action@v1
uses: codecov/codecov-action@v3

20
.gitignore vendored
View File

@@ -1,34 +1,39 @@
# Setup/Install
/MANIFEST
/dist/
/build/
/deploy/
/dist/
/dist_*/
*.spec
*.egg-info
setup.iss
novelwriter.desktop
novelWriter.pyw
/novelwriter.desktop
/novelWriter.pyw
/setup/macos/Info.plist
.venv
# Translations
/nw/assets/i18n/*.qm
/novelwriter/assets/i18n/*.qm
.qmake.stash
i18n/*.qm
i18n/*.qph
# Documentation
/docs/build/
/novelwriter/assets/help/
/novelwriter/assets/manual.pdf
*.qch
*.qhc
.~lock.*
# Python Temp
__pycache__
*.pyc
# Sample Project
/nw/assets/sample.zip
/novelwriter/assets/sample.zip
/sample/cache
/sample/meta
/sample/versions
*.bak
*.lock
ToC.txt
@@ -39,9 +44,6 @@ ToC.txt
/tests/temp
/tests/lipsum/cache
/tests/lipsum/meta
/tests/minimal/cache
/tests/minimal/meta
/tests/oldproj/cache
/.pytest_cache
/pytestdebug.log

View File

@@ -1,25 +0,0 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/source/conf.py
# Build documentation with MkDocs
#mkdocs:
# configuration: mkdocs.yml
# Optionally build your docs in additional formats such as PDF
formats:
- htmlzip
- epub
- pdf
# Optionally set the version of Python and requirements required to build your docs
python:
version: 3.7
install:
- requirements: docs/source/requirements.txt

File diff suppressed because it is too large Load Diff

View File

@@ -2,75 +2,131 @@
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
Examples of behavior that contributes to a positive environment for our
community include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior by participants include:
Examples of unacceptable behavior include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
## Enforcement Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project leader at issues (at) novelwriter.io. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
reported to the community leaders responsible for enforcement at issues (at)
novelwriter.io. All complaints will be reviewed and investigated promptly and
fairly.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View File

@@ -1,39 +1,47 @@
# Contributing Guide
When contributing to this repository, please first discuss the change you wish to make via the
issue tracker or the discussions page with the owner of this repository before making a change. If
you just want to make a minor correction, like fix a typo or similar, feel free to just make a pull
request directly.
issue tracker or the discussions page with the owner of this repository. Especially if it is
regarding new features. If you just want to make a minor correction, like fix a typo or similar,
feel free to just make a pull request directly.
## Branching Structure
The following contributions are welcome:
There are three protected branches on this repository. They are used in the following way:
* Bugfixes for new or existing bugs. Please also report new bugs in the issue tracker even if you
also provide a fix. It makes it easier to keep track of what has been fixed and when.
* Translations via the [crowdin project page](https://crowdin.com/project/novelwriter).
* Improvements to the documentation. Particularly if the documentation is unclear. Please don't
make any larger changes to the documentation without discussing if with the maintainer first.
* Adaptations, installation or packaging features targeting specific operating systems.
* `main` – This is the Stable branch. It is used for releases and subsequent patches. No
development code should be merged into this branch starting from version 1.0.
* `dev` – This is the Unstable (development) branch. It is where new features are merged, and where
pre-releases are taken from.
* `testing` – This is the Testing branch. It is populated from the `dev` branch for pre-releases
that need a longer testing phase.
Please do not:
Stable releases and patches will be tagged in the `main` branch, pre-releases may be tagged from
either `testing` or `dev` branch.
* Make a pull request that restructures or reformats existing code. If you think some parts of the
code could be improved, please make an issue thread or start a discussion. The same applies to
any text document in the repository.
### What Branch to Use for Contributions
## Pull Requests
* If your contribution is a fix for the latest stable release, branch from the `main` branch.
* If your contribution is a fix for the latest testing release, branch from the `testing` branch.
* If your contribution is a new feature, branch from the `dev` branch.
This project follows the [OneFlow](https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow)
model. The `main` branch is the default branch. For general changes, please make a new branch in
your own fork from the current `main` branch. Do not make pull requests from your own `main`
branch.
## Pull Request Process
**Note:** If your contribution is a bugfix for a specific version, please make a bugfix branch from
the tag you want the fix to be applied to, not directly from the `main` branch. This is important.
1. Make sure your code passes all tests and conforms to the style guide. You can check that the
code conforms by running `flake8` from the root of the project folder.
2. Please provide a complete description of the changes in the pull request, and a summary that can
be copied into the [CHANGELOG](CHANGELOG.md). Remember to reference any issue related by
providing the issue number.
3. Do not change the version number. Version numbers are bumped in separate release pull requests
by the maintainer.
Also check the following:
* Make sure your code passes all tests and conforms to the style guide. You can check that the
code generally conforms by running the Python linting tool `flake8` from the root of the project
folder, although it doesn't check everything. The same check is also run on pull requests by the
maintainer.
* Please provide a description of the changes in the pull request under the summary section of the
pull request template, and reference any related issues by providing the issue number.
* Do not change the version number.
* Do not submit files that were not actively changed but have otherwise been modifed. This is
mostly an issue with translation files. The language tool may update all files in the `i18n`
folder.
## Code of Conduct
@@ -52,92 +60,63 @@ Please see the [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) file for the full text.
## Code Style Guide
The source code of novelWriter broadly follows the [PEP8](https://www.python.org/dev/peps/pep-0008)
style guide, but with a few modifications and exceptions listed below.
style guide, but with a few exceptions. Some key points are listed below.
### Line Length
**Line Length:**
For this project, source lines should stay within the 79 and 99 character limits described by PEP8.
79 characters is often too restrictive, so 99 character lines are acceptable when that is more
practical. Readability has priority. Generally, if a code statement requires multiple lines, the
lines should wrap at 79 characters, not 99. If wrapping can be avoided by going to 99, then that is
generally preferrable.
* Source code lines can extend to the upper limit of 99 characters allowed by PEP8. 79 characters
is the recommended line length in PEP8, but this is often too restrictive. 99 characters are
acceptable when that is more practical. Readability has priority. Generally, if a code statement
requires multiple lines, the lines should wrap at 79 characters if possible. If wrapping can be
avoided by going to 99, then that is generally preferrable.
* For text files, the text should be wrapped at 99 character. The exception is markdown image tags
and urls which can run past that limit.
For text files, the text should also be wrapped at 99 character. The exception is markdown image
tags and urls.
**Variable and Function Names**
Please do not submit pull requests that re-wrap existing source or text unless this has been
discussed beforehand.
* PEP8 allows for camelCase for consistency with existing code. The Qt library uses camelCase, so
the Python source code does too.
* The exception to the above is for constants. They should always be in upper snake case, like PEP8
states.
**Spaces, Indentation and Alignment**
* Only indentation by multiples of 4 spaces is allowed.
* No trailing spaces should occur on any line in the source code, including empty lines.
* Ideally, a function should end on the same indention level as it started. Exceptions are allowed
if it makes the code easier to follow.
* Aligning operators and attributes in columns with multiple spaces is not allowed by PEP8. The
rule is relaxed a bit here. Alignment is allowed when populating large dictionaries or setting
many class attributes. It does improve readability in such cases, but should not be overused.
### Linting with `flake8`
An excellent tool for checking Python code for errors and coding style is `flake8`. The
documentation is available [here](https://flake8.pycqa.org/en/latest/).
A good tool for checking Python code for errors and code style is `flake8`. The documentation is
available [here](https://flake8.pycqa.org/en/latest/).
The `setup.cfg` file in the root of this project has the following settings for `flake8` that
matches the coding standard:
matches the above code style:
```conf
[flake8]
ignore = E203,E221,E226,E228,E241,E251,E261,E266,E302,E305
ignore = E133,E221,E226,E228,E241,W503
max-line-length = 99
exclude = docs/*
```
The command line equivalent, with reporting, is:
```bash
flake8 . --count --ignore E203,E221,E226,E228,E241,E251,E261,E266,E302,E305 --max-line-length=99 --show-source --statistics
flake8 . --count --ignore E133,E221,E226,E228,E241,W503 --max-line-length=99 --show-source --statistics
```
Passing this check is required before contributions are merged into the `main` branch. This is
checked automatically when you make a pull request. You can run the `flake8` command locally to
check beforehand. The full command will give you a detailed description of the code lines that do
not conform to the standard.
Passing this check is required before contributions are merged. This is checked automatically when
you make a pull request. You can run the `flake8` command locally to check beforehand. The full
command will give you a detailed description of the code lines that do not conform to the standard.
## Ignored Errors
Two of the ignored errors are due to the relaxed restriction on column alignment, these are the
E221 and E241 error codes.
Some `flake8` error codes are ignored for this project for various reasons. The source also uses
camelCase function and variable names. This is the standard for the Qt libraries novelWriter
integrates with. It also happens to be the author's personal preferences.
The reason behind the other ignored error codes are listed below. Many of them are due to PEP8 not
permitting column alignment as opposed to many other coding styles, like for instance for Go. I
find them useful in regions of bulk value assignments. There's a reason why tables are more
readable than lists. They should be used sparingly though.
The ignored errors are all `pycodestyle` errors, and they are documented
[here](https://pycodestyle.pycqa.org/en/latest/intro.html#error-codes).
**E203:** whitespace before ‘:’
**Reason:** Column alignment.
**E221:** multiple spaces before operator
**Reason:** Column alignment.
**E226:** missing whitespace around arithmetic operator
**Reason:** This doesn't actually follow the PEP8 recommendation of grouping longer equations by
operator precedence like `2*a + 3*b` instead of `a * a + 3 * b`. Generally, don't use spaces around
`*`, `/` and `**`, but _do_ use spaces around `+` and `-`. For appending strings, the spaces can be
dropped. Don't use the `+` operator for appending multiple strings. Use formatting instead.
**E228** missing whitespace around modulo operator
**Reason:** See reason for E226. Formatting `%` like `/` and `*` should be possible.
**E241:** multiple spaces after ‘,’
**Reason:** Column alignment.
**E251:** unexpected spaces around keyword / parameter equals
**Reason:** Column alignment.
**E261:** at least two spaces before inline comment
**Reason:** With syntax highlighting, this one doesn't make much sense.
**E266:** too many leading ‘#’ for block comment
**Reason:** In the source multiple `#`s is sometimes used to indicate importance or heading level,
like markdown headers.
**E302:** expected 2 blank lines, found 0
**Reason:** Applies to classes. Instead, end classes with a comment like `# END Class ClassName` to
make it easier to see which class just ended. The double line break is then redundant.
**E305:** expected 2 blank lines after end of function or class
**Reason:** Instead, _always_ end a function with a `return`, preferably indented at function
level. The end of the function is then clear.
The code E226 is ignored becuse it doesn't actually follow the
[PEP8 recommendation](https://www.python.org/dev/peps/pep-0008/#other-recommendations)
of grouping longer equations by operator precedence like `2*a + 3*b` instead of `a * a + 3 * b`.
Generally, don't use spaces around `*`, `/` and `**`, but _do_ use spaces around `+` and `-`.
The same applies to the modulo operator `%`, hence E228 is also ignored.

64
CREDITS.md Normal file
View File

@@ -0,0 +1,64 @@
# Credits
## Main Developer
* Veronica Berglyd Olsen (@vkbo)
## Contributors
* Concept: Marian Lückhof (@Number042)
* Internationalisation: Bruno Meneguello (@bkmeneguello)
* Setup and Packaging: Rachel Powers (@Ryex)
For other contributions, see the project's [Contributors](https://github.com/vkbo/novelWriter/graphs/contributors) page.
## Translations
The default language is English (UK) with English (US) as an option. These are the original
translators for the languages currently available:
* Dutch: Martijn van der Kleijn (@mvdkleijn)
* French: Jan Lüdke (@jyhelle)
* German: Myian (@heymyian)
* Italian: Riccardo Mangili
* Japanese: hebekeg (@hebekeg)
* Latin American Spanish: Tommy Marplatt (@tmarplatt)
* Norwegian: Veronica Berglyd Olsen (@vkbo)
* Portuguese: Bruno Meneguello (@bkmeneguello)
* Simplified Chinese: Qianzhi Long (@longqzh)
Additional larger translation contributions:
* French: Albert Aribaud (@aaribaud)
Translations are managed on [Crowdin](https://crowdin.com/project/novelwriter), and more
contributions are listed on the project's [Members](https://crowdin.com/project/novelwriter/members) page.
## Libraries
The following libraries are dependencies of novelWriter:
* [Qt5](https://www.qt.io) by Qt Company
* [PyQt5](https://www.riverbankcomputing.com/software/pyqt) by Riverbank Computing
* [Enchant](https://abiword.github.io/enchant) by Dom Lachowicz
* [PyEnchant](https://pyenchant.github.io/pyenchant) by Dimitri Merejkowsky
## Assets
Some of the assets bundled with novelWriter were adapted from the following sources:
* [Typicons](https://github.com/stephenhutchings/typicons.font) icons by Stephen Hutchings (CC BY-SA 4.0)
* [Tomorrow](https://github.com/chriskempson/base16) syntax themes by Chris Kempson (MIT License)
* [Owl](https://github.com/sdras/night-owl-vscode-theme) syntax themes by Sarah Drasner (MIT License)
* [Solarized](https://github.com/altercation/solarized) themes by Ethan Schoonover (MIT License)
## Fonts
The font used for the main novelWriter logo, mimetype and text banners is:
* Pridi by Cadson Demak (Open Font License, Version 1.1)
## Special Mentions
Additional thanks to @johnblommers who was an early user and who has provided a lot of very useful
feedback over the years.

View File

@@ -1,6 +1,6 @@
include setup.py
include pkgutils.py
include LICENSE.md
include CREDITS.md
include CHANGELOG.md
recursive-include novelwriter/assets *
recursive-include setup *
recursive-include nw/assets *
recursive-include sample *.nwx *.nwd

236
README.md
View File

@@ -2,15 +2,11 @@
[![Linux](https://github.com/vkbo/novelWriter/actions/workflows/test_linux.yml/badge.svg?branch=main)](https://github.com/vkbo/novelWriter/actions/workflows/test_linux.yml)
[![Windows](https://github.com/vkbo/novelWriter/actions/workflows/test_win.yml/badge.svg?branch=main)](https://github.com/vkbo/novelWriter/actions/workflows/test_win.yml)
[![macOS](https://github.com/vkbo/novelWriter/actions/workflows/test_mac.yml/badge.svg?branch=main)](https://github.com/vkbo/novelWriter/actions/workflows/test_mac.yml)
[![flake8](https://github.com/vkbo/novelWriter/workflows/flake8/badge.svg)](https://github.com/vkbo/novelWriter/actions)
[![codecov](https://codecov.io/gh/vkbo/novelWriter/branch/main/graph/badge.svg)](https://codecov.io/gh/vkbo/novelWriter)
[![docs](https://readthedocs.org/projects/novelwriter/badge/?version=latest)](https://novelwriter.readthedocs.io/en/latest/?badge=latest)
[![release](https://img.shields.io/github/v/release/vkbo/novelwriter)](https://github.com/vkbo/novelWriter/releases)
[![pypi](https://img.shields.io/pypi/v/novelwriter)](https://pypi.org/project/novelWriter)
[![python](https://img.shields.io/pypi/pyversions/novelwriter)](https://pypi.org/project/novelWriter)
[![MacOS](https://github.com/vkbo/novelWriter/actions/workflows/test_mac.yml/badge.svg?branch=main)](https://github.com/vkbo/novelWriter/actions/workflows/test_mac.yml)
[![Flake8](https://github.com/vkbo/novelWriter/workflows/flake8/badge.svg)](https://github.com/vkbo/novelWriter/actions)
[![CodeCov](https://codecov.io/gh/vkbo/novelWriter/branch/main/graph/badge.svg)](https://codecov.io/gh/vkbo/novelWriter)
<img align="left" style="margin: 0 16px 4px 0;" src="https://raw.githubusercontent.com/vkbo/novelWriter/main/setup/icons/scaled/icon-novelwriter-96.png">
<img align="left" style="margin: 0 0 4px 0;" src="https://raw.githubusercontent.com/vkbo/novelWriter/main/setup/novelwriter_readme.png">
novelWriter is a plain text editor designed for writing novels assembled from many smaller text
documents. It uses a minimal formatting syntax inspired by Markdown, and adds a meta data syntax
@@ -22,209 +18,51 @@ synchronisation tools. All text is saved as plain text files with a meta data he
project structure is stored in a single project XML file. Other meta data is primarily saved as
JSON files.
The full documentation is available on [readthedocs.io](https://novelwriter.readthedocs.io).
For more details, and how to install and use novelWriter, please see the main website and
documentation.
**Project Links**
* Website: [novelwriter.io](https://novelwriter.io)
* Documentation: [docs.novelwriter.io](https://docs.novelwriter.io)
* Internationalisation: [crowdin.com/project/novelwriter](https://crowdin.com/project/novelwriter)
* PyPi Project: [pypi.org/project/novelWriter](https://pypi.org/project/novelWriter)
* Social Media: [fosstodon.org/@novelwriter](https://fosstodon.org/@novelwriter)
## Implementation
The application is written in Python 3 (3.6+) using Qt5 and PyQt5 (5.3+). It is developed on Linux,
but should in principle work fine on other operating systems as well as long as dependencies are
met. It is regularly tested on Debian and Ubuntu Linux, Windows, and macOS.
novelWriter is written with Python 3 (3.8+) using Qt5 and PyQt5 (5.10+), and is released on Linux,
Windows and macOS. It can in principle run on any Operating System that also supports Qt, PyQt and
Python.
## Project Contributions
The project isn't taking feature contributions at the moment. If you have an idea, please make a
feature request in the issue tracker. Fixes and patches are welcome. So are new translations.
Contributions related to packaging and installing novelWriter will also be appreciated.
Please don't make feature pull requests without first having discussed them with the maintainer.
You can make a feature request in the issue tracker, or if the idea isn't fully formed, start a
discussion on the discussion page. Please also don't make pull requests to reformat or rewrite
existing code unless there is a very good reason for doing so.
If you want to help translating novelWriter into another language, please see the
[README](https://github.com/vkbo/novelWriter/blob/main/i18n/README.md) in the `nw/assets/i18n`
folder for further details.
Before contributing any code, please read the full
Fixes and patches are welcome. Contributions related to packaging and installing novelWriter will
also be appreciated, but please make an issue or a discussion topic first. Before contributing any
code, please also read the full
[Contributing Guide](https://github.com/vkbo/novelWriter/blob/main/CONTRIBUTING.md).
## Key Features
Project credits are available in [CREDITS.md](https://github.com/vkbo/novelWriter/blob/main/CREDITS.md).
Some key features of novelWriter are listed below. Consult the
[documentation](https://novelwriter.readthedocs.io) for more information.
### Translations
### Markdown Flavour
New translations are always welcome. This project uses Crowdin to maintain translations, and you
can contribute translations at the [Crowdin project page](https://crowdin.com/project/novelwriter).
If you have any questions, feel free to post them to the
[Translations of novelWriter](https://github.com/vkbo/novelWriter/issues/93) issue thread.
Note that novelWriter is _not_ a proper Markdown editor. It is a plain text editor that uses
Markdown-like syntax to allow for a minimal set of formatting that is useful for the specific task
of writing novels. The formatting is currently limited to:
For more details, and how to use Qt Linguist for translations, see the
[i18n instructions](https://github.com/vkbo/novelWriter/blob/main/i18n/README.md).
* Headings levels 1 to 4 using the `#` syntax only.
* Emphasised and strongly emphasised text. These are rendered as italicised and bold text.
* Strikethrough text.
* Hard line breaks using two or more spaces at the end of a line.
## Licence
That is it. Features not supported in the editor are also not exported when using the export tool.
In addition, novelWriter adds the following syntax used for its additional features:
* A line starting with `%` is treated as a comment and not rendered on exports unless requested.
Comments do not count towards word counts and other statistics.
* If the first word of the comment is `synopsis:`, the comment is indexed and treated as the
synopsis for the section of text where it occurs. These synopsis comments can be used to build an
outline and exported to external documents.
* A set of meta data keyword/values starting with the character `@`. These are used for tagging
and inter-linking documents, and can also be included when generating a project outline.
* A variety of thin and non-breaking spaces are supported. Some of them depend on the system
running at least Qt 5.9. Earlier versions of Qt will unfortunately strip them out when saving.
* Tabs can be used in the text, and should be properly aligned in both editor and viewer. This can
be used to make simple tables and lists. Note that for HTML exports, most browsers will treat a
tab as a space, so it may not show up like expected. Open Document exports should produce the
expected result.
The core export formats of novelWriter are Open Document and HTML5. Open Document is an open
standard for office type documents that is supported by most office applications. See
[Open Document > Application Support](https://en.wikipedia.org/wiki/OpenDocument#Application_support)
for more details.
You can also export the entire project as a single novelWriter-flavour document. These can later be
imported again into novelWriter. In addition, printing and export to PDF is offered through the Qt
library, although with limitations to formatting.
### Colour Themes
The editor has syntax highlighting for the features it supports, and includes a set of different
syntax highlighting themes. Optional GUI themes are also available, including dark themes.
### Easy Organising of Project Files
The structure of the project is shown on the left hand side of the main window. Project files are
organised into root folders, indicating what class of file they are. The most important root folder
is the `Novel` folder, which contains all of the files that make up the novel itself. Each root
folder can have subfolders. Subfolders have no impact on the final project structure, they are
there for you to organise your files in whatever way you want.
The editor supports four levels of headings, which determine what level the following text belongs
to. Headings of level one signify a book or partition title. Headings of level two signify the
start of a new chapter. Headings of level three signify the start of a new scene. Headings of level
four can be used internally in each scene to create separate sections.
Each novel file can be assigned a layout format, which shows up as a flag next to the item in the
project tree. These are mostly to help the user track what they contain, but they also have some
impact on the format of the exported document. See the
[documentation](https://novelwriter.readthedocs.io) for further details.
### Project Notes
Supporting notes can be added for the story plot, characters, locations, story timeline, etc. These
have their separate root folders and are optional to use.
### Visualisation of Story Elements
The different notes can be assigned tags, which other files can refer back to using `@`-prefixed
meta keywords. This information can be used to display an outline of the story, showing where each
scene connects to the plot, and which characters, etc. occur in them. In addition, the tags
themselves are clickable in the document view pane, and control-clickable in the editor. They make
it possible to quickly navigate between the documents while writing.
## Standard Installation
For a regular installation, it is recommended that you download one of the minimal zip files from
the [Releases](https://github.com/vkbo/novelWriter/releases) page or the
[novelwriter.io](https://novelwriter.io/) website.
The [documentation](https://novelwriter.readthedocs.io/) has detailed install instructions for
[Linux](https://novelwriter.readthedocs.io/en/latest/setup_linux.html),
[Windows](https://novelwriter.readthedocs.io/en/latest/setup_windows.html), and
[macOS](https://novelwriter.readthedocs.io/en/latest/setup_mac.html).
They are pretty straightforward.
## Running from Source
If you want to run novelWriter directly from the source code, you must run the `novelWriter.py`
file from command line.
**Note:** You may need to replace `python` with `python3` and `pip` with `pip3` in the instructions
below on some systems. You may also want to add the `--user` flag for `pip` to install in your user
space only.
### Dependencies
Dependencies can generally be installed from PyPi with:
```bash
pip install -r requirements.txt
```
### Additional Steps for Linux
On Linux, you can most likely find the dependencies in your distribution's repository. On Ubuntu
and Debian, run:
```bash
sudo apt install python3-pyqt5 python3-lxml python3-enchant
```
If you want to set up a launcher and icons on Linux, you can run:
```bash
python setup.py xdg-install
```
### Additional Steps for macOS
First, make sure you have properly set up Python3 with Homebrew. If not, check their
[documentation](https://docs.brew.sh/Homebrew-and-Python).
In addition, the following steps are necessary to install all dependencies:
```bash
brew install enchant
pip3 install --user -r requirements.txt
pip3 install --user pyobjc
```
### Additional Steps for Windows
Windows does not by default come with Python installed. If you haven't installed it already, get it
from [python.org/downloads](https://www.python.org/downloads/). Remember to select "Add Python to
PATH" during the installation.
The script `windows_install.bat` in the `setup` folder can be used to create desktop and start menu
icons for novelWriter. The script will also install dependencies for you from PyPi.
## Internationalisation
If you install from source, you must build the translation files yourself if you want to switch to
a different GUI language than British English. This requires that you have the Qt translation
framework installed. Check the specific instruction in the README in the `i18n` source folder for
how to build the translation files.
## Debugging
If you need to debug novelWriter, you must run it from the command line. It takes a few parameters,
which can be listed with the switch `--help`. The `--info`, `--debug` or `--verbose` flags are
particularly useful for increasing logging output for debugging.
## Licenses
This is Open Source software, and novelWriter is licensed under GPLv3. See the
This is Open Source software, and novelWriter is licenced under GPLv3. See the
[GNU General Public License website](https://www.gnu.org/licenses/gpl-3.0.en.html) for more
details, or consult the [LICENSE](https://github.com/vkbo/novelWriter/blob/main/LICENSE.md) file.
Bundled assets have the following licenses:
* The Typicons-based icon themes by Stephen Hutchings are licensed under
[CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/). The icons have been altered in
size and colour for use with novelWriter, and some additional icons added. The original icon set
is available at
[stephenhutchings/typicons.font](https://github.com/stephenhutchings/typicons.font).
* The Cantarell font by Dave Crossland is licensed under
[OPEN FONT LICENSE Version 1.1](http://scripts.sil.org/OFL).
It is available at [Google Fonts](https://fonts.google.com/specimen/Cantarell).
* The Tomorrow syntax themes use colour schemes taken from Chris Kempson's collection of code
editor themes, licensed with the
[MIT License](https://github.com/chriskempson/tomorrow-theme/blob/master/LICENSE.md),
and the main repo is available at
[chriskempson/tomorrow-theme](https://github.com/chriskempson/tomorrow-theme).
* Likewise, the Owl syntax themes use colours from Sarah Drasner's code editor themes, licensed
with the [MIT License](https://github.com/sdras/night-owl-vscode-theme/blob/master/LICENSE), and
the main repo is available at
[sdras/night-owl-vscode-theme](https://github.com/sdras/night-owl-vscode-theme).
## Screenshots
**novelWriter with default system theme:**
![Screenshot 1](https://raw.githubusercontent.com/vkbo/novelWriter/main/docs/source/images/screenshot_default.png)
**novelWriter with dark theme:**
![Screenshot 2](https://raw.githubusercontent.com/vkbo/novelWriter/main/docs/source/images/screenshot_dark.png)
details, or consult the [License](https://github.com/vkbo/novelWriter/blob/main/LICENSE.md)
document. Bundled assets and their licences are listed in the
[Credits](https://github.com/vkbo/novelWriter/blob/main/CREDITS.md) document.

2264
docs/FileFormatSpec-1.5.fodt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,27 +0,0 @@
/*
* Custom CSS Rules for Sphinx RTD Theme
*/
.kbd {
background-color: #eeeeee;
border: 1px solid #b4b4b4;
border-radius: 3px;
color: #333333;
display: inline-block;
font-size: 0.85em;
font-weight: 400;
line-height: 1;
padding: 2px 4px;
margin-left: 1px;
margin-right: 1px;
white-space: nowrap;
}
.tight-table td {
white-space: normal !important;
vertical-align: text-top;
}
pre span.go {
color: #333333 !important;
}

View File

@@ -0,0 +1,14 @@
span.guilabel {
font-weight: 400;
}
.nw-sidebar-title {
height: unset;
max-height: unset;
flex-direction: column;
justify-content: center;
gap: .25rem;
font-size: 1.25rem;
font-weight: normal;
text-align: center;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,3 @@
{% if docstitle %}
<p class="nw-sidebar-title">{{ docstitle }}</p>
{% endif %}

View File

@@ -1,140 +1,84 @@
# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
#
# This file does only contain a selection of the most common options. For a
# full list see the documentation:
# http://www.sphinx-doc.org/en/master/config
"""
Configuration file for the Sphinx documentation builder.
Documentation: http://www.sphinx-doc.org/en/master/config
"""
# -- Path setup --------------------------------------------------------------
# -- Imports -----------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import sys
# sys.path.insert(0, os.path.abspath("."))
import os
import time
import sphinx_rtd_theme # noqa: F401
import datetime
# -- Project information -----------------------------------------------------
# -- Project Information -----------------------------------------------------
project = "novelWriter"
copyright = "2018–2021, Veronica Berglyd Olsen"
copyright = f"{datetime.date.today().year}"
author = "Veronica Berglyd Olsen"
# The short X.Y version
version = "1.3.2"
# The full version, including alpha/beta/rc tags
release = "1.3.2"
initFile = os.path.join(
os.path.dirname(__file__), os.pardir, os.pardir,
"novelwriter", "__init__.py"
)
with open(initFile) as inFile:
for aLine in inFile:
if aLine.startswith("__version__"):
release = aLine.split('"')[1].strip()
break
else:
release = "unknown"
# -- General configuration ---------------------------------------------------
version = release.partition("-")[0]
# -- General Configuration ---------------------------------------------------
os.environ["TZ"] = "Europe/Oslo"
time.tzset()
# needs_sphinx = "1.0"
extensions = [
"sphinx_rtd_theme",
]
needs_sphinx = "5.0"
extensions = ["sphinx_design"]
templates_path = ["_templates"]
source_suffix = ".rst"
master_doc = "index"
today_fmt = "%A, %d %B %Y at %H:%M"
language = None
language = "en"
exclude_patterns = []
pygments_style = None
# -- Options for HTML output -------------------------------------------------
# -- Options for HTML Output -------------------------------------------------
html_theme = "sphinx_rtd_theme"
html_logo = "images/novelwriter.png"
html_theme = "sphinx_book_theme"
html_title = f"Version {release}"
html_static_path = ["_static"]
html_css_files = ["custom.css"]
html_theme_options = {
# Toc options
"collapse_navigation": True,
"sticky_navigation": True,
"navigation_depth": 3,
"includehidden": True,
"titles_only": False,
"logo_only": True,
"logo": {
"image_light": "_static/novelwriter-light.png",
"image_dark": "_static/novelwriter-dark.png",
},
"show_toc_level": 2,
"show_navbar_depth": 1,
"repository_url": "https://github.com/vkbo/novelwriter",
"navigation_with_keys": True,
"use_repository_button": True,
"use_issues_button": True,
"pygment_light_style": "tango",
"pygment_dark_style": "dracula",
}
html_sidebars = {
"**": ["navbar-logo", "sidebar-title", "sbt-sidebar-nav"],
}
html_static_path = ["_static"]
html_css_files = [
"css/custom.css",
]
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
# The default sidebars (for documents that don"t match any pattern) are
# defined by theme itself. Builtin themes are using these templates by
# default: ``["localtoc.html", "relations.html", "sourcelink.html",
# "searchbox.html"]``.
# html_sidebars = {}
# -- Options for HTMLHelp output ---------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = "novelWriterDoc"
# -- Options for LaTeX output ------------------------------------------------
# -- Options for LaTeX Output ------------------------------------------------
latex_elements = {
# The paper size ("letterpaper" or "a4paper").
#
# "papersize": "letterpaper",
# The font size ("10pt", "11pt" or "12pt").
#
# "pointsize": "10pt",
# Additional stuff for the LaTeX preamble.
#
# "preamble": "",
# Latex figure (float) alignment
#
# "figure_align": "htbp",
"papersize": "a4paper",
"pointsize": "11pt",
"preamble": (
"\\usepackage[utf8]{inputenc}\n"
"\\DeclareUnicodeCharacter{2212}{\\textendash}\n"
),
"figure_align": "htbp",
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_logo = "_static/novelwriter-pdf.png"
latex_documents = [(
master_doc, "novelWriter.tex", "novelWriter Documentation",
author, "manual"
master_doc, "manual.tex", "User Guide", author, "manual"
)]
# -- Options for manual page output ------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [(
master_doc, "novelwriter", "novelWriter Documentation", [author], 1
)]
# -- Options for Texinfo output ----------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [(
master_doc, "novelWriter", "novelWriter Documentation", author,
"novelWriter", "Markdown-like editor for novels.", "Miscellaneous"
)]
# -- Options for Epub output -------------------------------------------------
# Bibliographic Dublin Core info.
epub_title = project
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
# epub_identifier = ""
# A unique identification for the text.
# epub_uid = ""
# A list of files that should not be packed into the epub file.
epub_exclude_files = ["search.html"]

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 423 KiB

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 KiB

After

Width:  |  Height:  |  Size: 562 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 KiB

View File

@@ -1,93 +1,89 @@
#####################
novelWriter |release|
#####################
######################
novelWriter User Guide
######################
.. image:: https://github.com/vkbo/novelWriter/workflows/python%203.8/badge.svg?branch=main
:target: https://github.com/vkbo/novelWriter/actions
:alt: Python Tests
| **Release Version:** |release|
| **Updated:** |today|
.. image:: https://codecov.io/gh/vkbo/novelWriter/branch/main/graph/badge.svg
:target: https://codecov.io/gh/vkbo/novelWriter
:alt: Code Coverage
novelWriter is an open source plain text editor designed for writing novels assembled from many
smaller text documents. It uses a minimal formatting syntax inspired by Markdown, and adds a meta
data syntax for comments, synopsis, and cross-referencing. It is designed to be a simple text
editor that allows for easy organisation of text and notes, using human readable text files as
storage for robustness.
.. image:: https://readthedocs.org/projects/novelwriter/badge/?version=latest
:target: https://novelwriter.readthedocs.io/en/latest/?badge=latest
:alt: Documentation
.. figure:: images/screenshot_multi.png
:class: dark-light
:align: center
:width: 500
.. image:: https://img.shields.io/github/v/release/vkbo/novelwriter
:target: https://github.com/vkbo/novelWriter/releases
:alt: GitHub Release
.. image:: https://img.shields.io/pypi/v/novelwriter
:target: https://pypi.org/project/novelWriter/
:alt: PyPI
.. image:: https://img.shields.io/pypi/pyversions/novelwriter
:target: https://pypi.org/project/novelWriter/
:alt: Python Version
**Last Updated:** |today|
novelWriter is a markdown-like text editor designed for writing novels and larger projects of many
smaller plain text documents. It uses its own flavour of markdown that supports a meta data syntax
for comments, synopsis and cross-referencing between documents. The idea is to have a simple text
editor which allows for easy organisation of text documents and notes, built on a plain text file
project repository for robustness.
The plain text storage is suitable for version control software, and also well suited for file
synchronisation tools. The core project structure is stored in a single project XML file. Other
meta data is primarily saved as JSON files.
The project storage is suitable for version control software, and also well suited for file
synchronisation tools. All text is saved as plain text files with a meta data header. The core
project structure is stored in a single project XML file. Other meta data is saved as JSON files.
See the :ref:`a_breakdown_storage` section for more details.
Any operating system that can run Python 3 and has the Qt 5 libraries should be able to run
novelWriter. It runs fine on Linux, Windows and macOS, and users have tested it on other platforms
too. novelWriter can be run directly from the Python source, or installed from the pip tool or via
the provided setup script. See :ref:`a_started`, or one or the setup instructions for your
operating system for further details.
novelWriter. It runs fine on Linux, Windows and MacOS, and users have tested it on other platforms
as well. novelWriter can also be run directly from the Python source, or installed from packages or
with pip. See :ref:`a_started` for more details.
**Useful Links**
* Website: https://novelwriter.io
* Documentation: https://novelwriter.readthedocs.io
* Documentation: https://docs.novelwriter.io
* Internationalisation: https://crowdin.com/project/novelwriter
* Source Code: https://github.com/vkbo/novelWriter
* Source Releases: https://github.com/vkbo/novelWriter/releases
* Issue Tracker: https://github.com/vkbo/novelWriter/issues
* Feature Discussions: https://github.com/vkbo/novelWriter/discussions
* PyPi Project: https://pypi.org/project/novelWriter
* Social Media: https://fosstodon.org/@novelwriter
.. toctree::
:maxdepth: 2
:hidden:
Main Page <self>
.. toctree::
:maxdepth: 1
:caption: Introduction
:hidden:
int_introduction
int_overview
int_started
setup_linux
setup_mac
setup_windows
int_howto
int_customise
int_glossary
.. toctree::
:maxdepth: 2
:caption: Usage
:maxdepth: 1
:caption: Using novelWriter
:hidden:
usage_interface
usage_projects
usage_structure
usage_notes
usage_export
usage_breakdown
usage_project
usage_writing
usage_format
usage_shortcuts
usage_typography
usage_projectformat
.. toctree::
:maxdepth: 2
:caption: Under the Hood
:maxdepth: 1
:caption: Organising Your Project
:hidden:
tech_technical
project_overview
project_structure
project_references
project_manuscript
.. toctree::
:maxdepth: 1
:caption: Additional Topics
:hidden:
Indices and Tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
tech_locations
tech_storage
tech_source
tech_tests

View File

@@ -0,0 +1,188 @@
.. _a_custom:
**************
Customisations
**************
.. _Enchant: https://abiword.github.io/enchant
.. _Free Desktop: https://cgit.freedesktop.org/libreoffice/dictionaries/tree/
There are a few ways you can customise novelWriter yourself. Currently, you can add new GUI themes,
your own syntax themes, and install additional dictionaries.
.. _a_custom_dict:
Spell Check Dictionaries
========================
novelWriter uses Enchant_ as the spell checking tool. Depending on your operating system, it may or
may not load all installed spell check dictionaries automatically.
Linux and MacOS
---------------
On Linux and MacOS, you generally only have to install hunspell, aspell or myspell dictionaries on
your system like you do for other applications. See your distro or OS documentation for how to do
this. These dictionaries should show up as available spell check languages in novelWriter.
Windows
-------
For Windows, English is included with the installation. For other languages you have to download
and add dictionaries yourself.
**Install Tool**
A small tool to assist with this can be found under :guilabel:`Tools > Add Dictionaries`. It will
import spell checking dictionaries from Free Office or Libre Office extensions. The dictionaries
are then installed in the install location for the Enchant library.
**Manual Install**
If you prefer to do this manually or want to use a different source than the ones mentioned above,
You need to get compatible dictionary files for your language. You need two files files ending with
``.aff`` and ``.dic``. These files must then be copied to the following location:
``C:\Users\<USER>\AppData\Local\enchant\hunspell``
This assumes your user profile is stored at ``C:\Users\<USER>``. The last one or two folders may
not exist, so you may need to create them.
You can find the various dictionaries on the `Free Desktop`_ website.
.. note::
The Free Desktop link points to a repository, and what may look like file links inside the
dictionary folder are actually links to web pages. If you right-click and download those, you
get HTML files, not dictionaries!
In order to download the actual dictionary files, right-click the "plain" label at the end of
each line and download that.
.. _a_custom_theme:
Syntax and GUI Themes
=====================
Adding your own GUI and syntax themes is relatively easy, although it requires that you manually
edit config files with colour values. The themes are defined by simple plain text config files with
meta data and colour settings.
In order to make your own versions, first copy one of the existing files to your local computer and
modify it as you like.
* The existing syntax themes are stored in
`novelwriter/assets/syntax <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/syntax>`_.
* The existing GUI themes are stored in
`novelwriter/assets/themes <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/themes>`_.
* The existing icon themes are stored in
`novelwriter/assets/icons <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/icons>`_.
Remember to also change the name of your theme by modifying the ``name`` setting at the top of the
file, otherwise you may not be able to distinguish them in :guilabel:`Preferences`.
For novelWriter to be able to locate the custom theme files, you must copy them to the
:ref:`a_locations_data` location in your home or user area. There should be a folder there named
``syntax`` for syntax themes, just ``themes`` for GUI themes, and ``icons`` for icon themes. These
folders are created the first time you start novelWriter.
Once the files are copied there, they should show up in :guilabel:`Preferences` with the label you
set as ``name`` inside the file.
.. versionadded:: 2.0
The ``icontheme`` value was added to GUI themes. Make sure you set this value in existing custom
themes. Otherwise, novelWriter will try to guess your icon theme, and may not pick the most
suitable one.
Gustom GUI and Icons Theme
--------------------------
A GUI theme ``.conf`` file consists of the following settings:
.. code-block:: cfg
[Main]
name = My Custom Theme
description = A description of my custom theme
author = Jane Doe
credit = John Doe
url = https://example.com
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
icontheme = typicons_light
[Palette]
window = 100, 100, 100
windowtext = 100, 100, 100
base = 100, 100, 100
alternatebase = 100, 100, 100
text = 100, 100, 100
tooltipbase = 100, 100, 100
tooltiptext = 100, 100, 100
button = 100, 100, 100
buttontext = 100, 100, 100
brighttext = 100, 100, 100
highlight = 100, 100, 100
highlightedtext = 100, 100, 100
link = 100, 100, 100
linkvisited = 100, 100, 100
[GUI]
statusnone = 100, 100, 100
statussaved = 100, 100, 100
statusunsaved = 100, 100, 100
In the Main section you must at least define the ``name`` and ``icontheme`` settings. The
``icontheme`` settings should correspond to one of the internal icon themes, either
``typicons_light`` or ``typicons_dark``, or to an icon theme in your custom icons directory. The
setting must match the icon theme's folder name.
The Palette values correspond to the Qt enum values for QPalette::ColorRole, see the
`Qt documentation <https://doc.qt.io/qt-5.15/qpalette.html#ColorRole-enum>`_ for more details. The
colour values are RGB numbers on the format ``r, g, b`` where each is an integer from to 255.
Omitted values are not loaded and will use default values.
Custom Syntax Theme
-------------------
A syntax theme ``.conf`` file consists of the following settings:
.. code-block:: cfg
[Main]
name = My Syntax Theme
author = Jane Doe
credit = John Doe
url = https://example.com
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
[Syntax]
background = 255, 255, 255
text = 0, 0, 0
link = 0, 0, 0
headertext = 0, 0, 0
headertag = 0, 0, 0
emphasis = 0, 0, 0
straightquotes = 0, 0, 0
doublequotes = 0, 0, 0
singlequotes = 0, 0, 0
hidden = 0, 0, 0
shortcode = 0, 0, 0
keyword = 0, 0, 0
value = 0, 0, 0
spellcheckline = 0, 0, 0
errorline = 0, 0, 0
replacetag = 0, 0, 0
modifier = 0, 0, 0
In the Main section, you must define at least the ``name`` setting. The Syntax colour values are
RGB numbers of the format ``r, g, b`` where each is an integer from to 255. Omitted values default
to black, except ``background`` which defaults to white,
.. versionadded:: 2.2
The `shortcode` syntax colour entry was added, so you need to update your custom themes if you
made any before version 2.2.

View File

@@ -0,0 +1,64 @@
.. _a_glossary:
********
Glossary
********
.. glossary::
:sorted:
Root Folder
A "Root Folder" is a top level folder of the project tree in novelWriter. Each type of root
folder has a specific icon to identify it. For an overview of available root folder types,
see :ref:`a_proj_roots`.
Novel Documents
These are documents that are created under a "Novel" :term:`root folder`. They behave
differently than :term:`Project Notes`, and have some more restrictions. For instance, they
can not exist in folders intended only for project notes. See the :ref:`a_struct` chapter for
more details.
Project Notes
Project Notes are unrestricted documents that can be placed anywhere in your project. You
should not use these documents for story elements, only for notes. Project notes are the
source files used by the Tags and References system. See the :ref:`a_references` chapter for
more details on how to use them.
Tag
A tag is a user defined value assigned as a tag to a section of your :term:`Project Notes`.
It is optional, and can be defined once per heading. It is set using the :term:`keyword`
syntax ``@tag: value``, where ``value`` is the user defined part. Each tag can be referenced
in another file using one of the :term:`reference` keywords. See :ref:`a_references` chapter
for more details.
Reference
A reference is one of a set of :term:`keywords<keyword>` that can be used to link to a
:term:`tag` in another document. The reference keywords are specific to the different
:term:`root folder` types. A full overview is available in the :ref:`a_references` chapter.
Project Index
The project index is a record of all headings in a project, with all their meta data like
synopsis comments, :term:`tags<tag>` and :term:`references<reference>`. The project index is
kept up to date automatically, but can also be regenerated manually from the
:guilabel:`Tools` menu or by pressing :kbd:`F9`.
Context Menu
A context menu is a menu that pops up when you right click something in the user interface.
In novelWriter, you can often also open a context menu by pressing the keyboard shortcut
:kbd:`Ctrl+.`.
Headings
Each level of headings in :term:`Novel Documents` have a specific meaning in terms of the
structure of the story. That is, they determine what novelWriter considers a partition, a
chapter, a scene or a text section. For :term:`Project Notes`, the header levels don't
matter. For more details on headings in novel documents, see :ref:`a_struct_heads`.
Keyword
A keyword in novelWriter is a special command you put in the text of your documents. They are
not standard Markdown, but are used in novelWriter to add information that is interpreted by
the application. For instance, keywords are used for :term:`tags<tag>` and
:term:`references<reference>`.
Keywords must always be on their own line, and the first character of the line must always be
the ``@`` character. The keyword must also always be followed by a ``:`` character, and the
values passed to the command are added after this, separated by commas.

83
docs/source/int_howto.rst Normal file
View File

@@ -0,0 +1,83 @@
.. _a_howto:
*************
Tips & Tricks
*************
.. _Discussions Page: https://github.com/vkbo/novelWriter/discussions
This is a list of hopefully helpful little tips on how to get the most out of novelWriter.
.. note::
This section will be expanded over time. If you would like to have something added, feel free to
contribute, or start a discussion on the project's `Discussions Page`_.
Managing the Project
====================
.. dropdown:: Merge Multiple Documents Into One
:animate: fade-in-slide-down
If you need to merge a set of documents in your project into a single document, you can achieve
this by first making a new folder for just that purpose, and drag all the files you want merged
into this folder. Then you can right click the folder, select :guilabel:`Transform` and
:guilabel:`Merge Documents in Folder`.
In the dialog that pops up, the documents will be in the same order as in the folder, but you
can also rearrange them here of you wish. See :ref:`a_ui_tree_split_merge` for more details.
Layout Tricks
=============
.. dropdown:: Create a Simple Table
:animate: fade-in-slide-down
The formatting tools available in novelWriter don't allow for complex structures like tables.
However, the editor does render tabs in a similar way that regular word processors do. You can
set the width of a tab in :guilabel:`Preferences`.
The tab key should have the same distance in the editor as in the viewer, so you can align text
in columns using the tab key, and it should look the same when viewed next to the editor.
This is most suitable for your notes, as the result in exported documents cannot be guaranteed
to match.
Organising Your Text
====================
.. dropdown:: Add Introductory Text to Chapters
:animate: fade-in-slide-down
Sometimes chapters have a short preface, like a brief piece of text or a quote to set the stage
before the first scene begins.
If you add separate files for chapters and scenes, the chapter file is the perfect place to add
such text. Separating chapter and scene files also allows you to make scene files child
documents of the chapter (added in novelWriter 2.0).
.. dropdown:: Distinguishing Soft and Hard Scene Breaks
:animate: fade-in-slide-down
Depending on your writing style, you may need to separate between soft and hard scene breaks
within chapters. Like for instance if you switch point-of-view character often.
In such cases you may want to use the scene heading for hard scene breaks and section headings
for soft scene breaks. the :guilabel:`Build Manuscript` tool will let you add separate
formatting for the two when you generate your manuscript. You can for instance add the common
"``* * *``" for hard breaks and select to hide section breaks, which will just insert an empty
paragraph in their place. See :ref:`a_manuscript_settings` for more details.
Other Tools
===========
.. dropdown:: Convert Project to/from yWriter Format
:animate: fade-in-slide-down
There is a tool available that lets you convert a `yWriter <http://spacejock.com/yWriter7.html>`_
project to a novelWriter project, and vice versa.
The tool is available at `peter88213.github.io/yw2nw <https://peter88213.github.io/yw2nw/>`__

View File

@@ -1,118 +1,84 @@
.. _a_intro:
************
Introduction
Key Features
************
novelWriter is a simple, multi-document plain text editor using a modified markdown syntax to apply
simple formatting to the text. It is designed for writing novels, and allows for the component
documents to be ordered freely to create the desired structure of the novel. More details about how
projects are structured is covered in :ref:`a_struct`.
.. _Snowflake: https://www.advancedfictionwriting.com/articles/snowflake-method/
.. _Markdown: https://en.wikipedia.org/wiki/Markdown
In addition, the project can contain notes on the various plot elements, characters, locations,
etc, that make up the story. These notes are organised in a set of category-specific top-level
folders referred to as "root" folders, and each entry can be tagged and cross-referenced from
within the novel documents and notes. These tags make it possible to inter-link documents, and
generate an overview of the entire novel project and how the various documents and plot elements
are interconnected. The tag and reference syntax is covered in :ref:`a_proj` and :ref:`a_notes`.
At its core, novelWriter is a multi-document plain text editor. It uses a markup syntax inspired by
Markdown_ to apply simple formatting to the text. It is designed for writing fiction, so the
formatting features available are limited to those relevant for this purpose. It is *not* suitable
for technical writing, and it is *not* a full-featured Markdown editor.
These additional features are not standard in markdown, but are available through special meta
keywords described in :ref:`a_struct_tags`. Syntax highlighting is provided to make it easier to
verify that the markdown tags are used correctly.
Your novel project is organised as a collection of separate plain text documents instead of a
single, large document. The idea is to make it easier to reorganise your project structure without
having to cut and paste text between chapters.
An overview of the supported markdown syntax is covered in :ref:`a_ui`.
There are two kinds of documents in your project: :term:`Novel Documents` are documents that are
part of your story. The other kind of documents are :term:`Project Notes`. These are intended for
your notes about your characters, your world building, and so on.
You can at any point split the individual documents by their headers up into multiple documents, or
merge multiple documents into single documents. This makes it easier to use variations of the
Snowflake_ method for writing. You can start by writing larger structure-focused documents, like
one per act for instance, and later effortlessly split these up into scenes by their headers.
.. _a_intro_design:
Below are some key features of novelWriter.
Design Philosophy
=================
**Focus on writing**
The aim of the user interface is to let you focus on writing instead of spending time formatting
text. Formatting is therefore limited to a small set of formatting tags for simple things like
text emphasis and paragraph alignment. When you really want to focus on just writing, you can
switch the editor into :guilabel:`Focus Mode` where only the text editor panel itself is
visible, and the project structure view is hidden away.
The user interface of novelWriter is intended to be as minimalistic as practically possible, while
at the same time provide a complete set of features needed for writing a novel.
**Keep an eye on your notes**
The main window can optionally show a document viewer to the right of the editor. This view
panel is intended for displaying another scene document, your character notes, plot notes, or any
other document you may need to reference while writing. It is not intended as a preview panel
for the document you're editing, but if you wish, you can also use it for this purpose.
.. note::
novelWriter is not intended to be a full office type word processor. It doesn't support images,
links, tables, and other complex structures and objects often needed for such documents.
Formatting is limited to headers, and bold, italicised and strikethrough text.
**Organise your documents how you like**
You can split your novel project up into as many individual documents as you want to. When you
build the project into a manuscript, they are all glued together in the top-to-bottom order in
which they appear in the project tree. You can use as few text documents as you like, but
splitting the project up into chapters and scenes means you can easily reorder them using the
drag-and-drop feature of the project tree. You can also start out with a few documents and then
later split them into multiple documents based on their headers.
.. tip::
If you do need to align information in rows and columns in your notes, you can achieve this with
tabs and hard line breaks. The tab stop width can be specified in :guilabel:`Preferences` and
hard line breaks can be inserted by adding to spaces at the end of the line.
**Multi-novel project support**
As of novelWriter 2.0, you can have multiple Novel type root folders in a project. This allows
you to keep a series of individual novels with the same characters and world building in the
same project, and create manuscripts for them individually.
The main window does not have a toolbar like many other applications do. This reduces clutter, and
since the documents are formatted with markdown tags, is more or less redundant. However, all
formatting features supported are available through convenient keyboard shortcuts. They are also
available in the main menu so you don't have to look up the syntax every time until you've
memorised it. A full list of shortcuts can be found in the :ref:`a_ui_shortcuts` section.
**Keep track of your plot elements**
All notes in your project can be assigned a :term:`tag` that you can :term:`reference` from any
other document or note. In fact, you can add a new tag under each heading of a note if you need
to be able to reference specific sections of it.
In addition, novelWriter has a :guilabel:`Focus Mode` where all the user interface elements other
than the document editor itself are hidden away.
**Get an overview of your story**
In the :guilabel:`Outline View` on the main window you can see an outline of all the chapters,
scenes, and sections of your project. If they have any references in them, these are listed in
additional columns. You can also add a synopsis to each chapter or scene, which can be listed
here as well. You have the option to add or remove columns of information from this outline. A
subset of the outline information is also available in the :guilabel:`Novel View` as an
alternative view to the project tree.
The colour scheme of the user interface defaults to that of the host operating system. In addition,
other light and dark themes are provided, and can be enabled in :guilabel:`Preferences` from the
:guilabel:`Tools` menu. A number of syntax highlighting themes are also available in
:guilabel:`Preferences`. A set of icon themes in colour and greyscale are also offered. The icons
are based on the Typicons_ icon set designed by Stephen Hutchings.
**Get an overview of your story elements**
Under the document viewer panel you will find a series of tabs that shows the different story
elements you have created tags for. The tabs are sorted into Characters, Plots, etc, depending
on which categories you are using in your story. This panel can be hidden when you don't need it
to free up space.
The main window is split in two, or optionally three, panels. The left-most panel contains the
project tree and all the documents in your project. The second panel is the document editor, and
the optional third panel is a document viewer which can view any document in your project
independently of the document editor. It is not intended as a preview window, although you can use
it for this, but for viewing your notes next to your editor while you're writing.
A second tab is also available on the main window. This is the :guilabel:`Outline` tab where the
entire novel structure can be displayed, with all the tags and references listed. Depending on how
you structure your novel documents, this outline can be quite different from your project tree.
Your project tree lists individual documents, your Outline tree lists the structure of the novel
itself in terms of partitions, chapters and scenes as it appears in the text of the documents.
.. _Typicons: https://github.com/stephenhutchings/typicons.font
.. _a_intro_project:
Project Layout
==============
You are free to organise your project documents as you wish into subfolders, and split the text
between documents in whatever way suits you. All that matters to novelWriter is the linear order
the documents appear at in the project tree (top to bottom). The chapters, scenes and sections of
the novel are determined by the headings within those documents.
The four heading levels (**H1** to **H4**) are treated as follows:
* **H1** is used for the book title, and for partitions.
* **H2** is used for chapter tiles.
* **H3** is used for scene titles – optionally replaced by separators.
* **H4** is for section titles within scenes, if such granularity is needed.
This header level structure is only taken into account for novel documents. For the project notes,
the header levels have no structural meaning, and the user is free to do whatever they want. See
:ref:`a_struct` and :ref:`a_notes` for more details.
.. _a_intro_export:
Project Export
==============
The project can at any time be exported to a range of different formats through the
:guilabel:`Build Novel Project` tool. Natively, novelWriter supports export to Open Document,
HTML5, and various flavours of Markdown.
The HTML5 export format is suitable for conversion by a number of other tools like Pandoc, or for
importing into word processors if the Open Document format isn't suitable. In addition, printing
and printing to PDF is also possible.
It is also possible to export the content of the project to a JSON file. This is useful if you want
to write your own processing script in for instance Python as the entire novel can be read into a
Python dictionary with a couple of lines of code.
A number of filter options can be applied to the produced document, allowing you to export a draft
manuscript, a reference document of notes, an outline based on chapter and scene titles with a
synopsis each, and so on. See :ref:`a_export` for more details on export features and formats.
**Building your manuscript**
Whether you want to assemble a manuscript, or export all your notes, or generate an outline of
your chapters and scenes with a synopsis, you can use the :guilabel:`Build Manuscript` tool to
do so. The tool lets you select what information you want to include in the generated document,
and how it is formatted. You can send the result to a printer, a PDF, or to an Open Document
file that can be opened by most office type word processors. You can also generate the result
as HTML, or Markdown, both suitable for further conversion to other formats.
.. _a_intro_screenshots:
@@ -120,12 +86,12 @@ synopsis each, and so on. See :ref:`a_export` for more details on export feature
Screenshots
===========
**novelWriter with default system theme:**
.. figure:: images/screenshot_default.png
:class: dark-light
.. image:: images/screenshot_default.png
:width: 800
novelWriter with light colour theme
**novelWriter with dark theme:**
.. figure:: images/screenshot_dark.png
:class: dark-light
.. image:: images/screenshot_dark.png
:width: 800
novelWriter with dark colour theme

View File

@@ -0,0 +1,92 @@
.. _a_overview:
********
Overview
********
.. only:: html
.. image:: images/python_powered.png
:align: right
:width: 220
novelWriter is built as a cross-platform application using `Python 3 <https://www.python.org/>`_ as
the programming language, and `Qt 5 <https://www.qt.io/>`_ for the user interface.
novelWriter is built for Linux first, and this is where it works best. However, it also runs fine
on Windows and MacOS due to the cross-platform framework it's built on. The author of the
application doesn't own a Mac, so on-going Mac support is dependent on user feedback and user
contributions.
Spell checking in novelWriter is provided by a third party library called
`Enchant <https://abiword.github.io/enchant/>`_. Please see the section on :ref:`a_custom_dict` for
how to install spell checking languages.
For install instructions, see :ref:`a_started`.
Using novelWriter
=================
In order to use novelWriter effectively, you need to know the basics of how it works. The following
chapters will explain the main principles. It starts with the basics, and gets more detailed as you
read on.
:ref:`a_breakdown` – Essential Information
This chapter explains the basics of how the application works and what it can and cannot do.
:ref:`a_ui_project` – Recommended Reading
This chapter will give you a more detailed explanation of how you can use the user interface
components to organise and view your project work.
:ref:`a_ui_writing` – Recommended Reading
This chapter will give you a more detailed explanation of how the text editor and viewer work.
:ref:`a_fmt` – Essential Information
This chapter covers how you should format your text. The editor is plain text, so text
formatting requires some basic markup. The structure of your novel is also inferred from how you
use headings. Tags and references are implemented by special keywords.
:ref:`a_kb` – Optional / Lookup
This chapter lists all the keyboard shortcuts in novelWriter and what they do. Most of the
shortcuts are also listed next to their menu entries inside the app, or in tool tips. This
chapter is mostly for reference.
:ref:`a_typ` – Optional
This chapter gives you an overview of the special typographical symbols available in
novelWriter. The auto-replace feature can handle the insertion of standard quote symbols for
your language, and other special characters. If you use any symbols aside from these, their
intended use is explained here.
:ref:`a_prjfmt` – Optional
This chapter is more technical and has an overview of changes made to the way your project data
is stored. The format has changed a bit from time to time, and sometimes the changes require
that you make small modifications to your project. Everything you need to know is listed in this
chapter.
Organising Your Projects
========================
In addition to managing a collection of plain text files, novelWriter can interpret and map the
structure of your novel and show you additional information about its flow and content. In order
to take advantage of these features, you must structure your text in a specific way and add some
meta data for it to extract.
:ref:`a_proj` – Essential Information
This chapter explains how you organise the content of your project, and how to set up automated
backups of your work.
:ref:`a_struct` – Essential Information
This chapter covers the way your novel's structure is encoded into the text documents. It
explains how the different levels of headings are used, and some special formatting for
different kinds of headings.
:ref:`a_references` - Recommended Reading
This chapter explains how you organise your notes, and how the Tags and References system works.
This system lets you cross-link your documents in your project, and display these references in
the application interface.
:ref:`a_manuscript` - Recommended Reading
This chapter explains how the :guilabel:`Manuscript Build` tool works, how you can control the
way chapter titles are formatted, and how scene and section breaks are handled.

View File

@@ -4,167 +4,175 @@
Getting Started
***************
.. _Enchant: https://abiword.github.io/enchant/
.. _GitHub: https://github.com/vkbo/novelWriter
.. _main website: https://novelwriter.io
.. _GitHub: https://github.com/vkbo/novelWriter/releases
.. _PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter
.. _Pre-Release PPA: https://launchpad.net/~vkbo/+archive/ubuntu/novelwriter-pre
.. _PyPi: https://pypi.org/project/novelWriter/
.. _python.org: https://www.python.org/downloads/
.. _Releases: https://github.com/vkbo/novelWriter/releases
.. _AppImage: https://appimage.org/
This section contains brief guides to how you can get novelWriter running on your computer. These
are the methods currently supported by the developer. Packages may also be available in other
package managers, but those are not managed by the developer. No installers are provided at this
time, but it is fairly straightforward to set up novelWriter with the provided install scripts.
Ready-made packages and installers for novelWriter are available for all major platforms, including
Linux, Windows and MacOS. See below for install instructions for each platform.
As novelWriter matures, more options for how to install it and get it running will be added. For
non-Windows users the install process is at the present time best suited for people used to working
with the command line. But even if you're not, the install process is fairly straightforward.
You can also install novelWriter from the Python Package Index (PyPi). See :ref:`a_started_pip`.
Installing from PyPi does not set up icon launchers, so you will either have to do this yourself,
or start novelWriter from the command line.
The next pages have specific install instructions for the various operating systems novelWriter can
run on. The instructions below are supplementary information, instructions for alterbative methods,
and additional build options.
Spell checking in novelWriter is provided by a third party library called Enchant_. Generally, it
should pull dictionaries from your operating system automatically. However, on Windows they must be
installed manually. See :ref:`a_custom_dict` for more details.
.. _a_started_windows:
Installing on Windows
=====================
You can install novelWriter with both Python and library dependencies embedded using the Windows
Installer (setup.exe) file from the `main website`_, or from the Releases_ page on GitHub_.
Installing it should be straightforward.
If you have any issues, try uninstalling the previous version and making a fresh install. If you
already had a version installed via a different method, you should uninstall that first as having
multiple installations has been known to cause problems.
.. note::
The text below assumes the command ``python`` corresponds to a Python 3 executable. Python 2 is
now deprecated, but many systems still have both Python 2 and 3. For such systems, the command
``python3`` may be needed instead. On Linux, the scripts can also be made executable and run
without the ``python`` command. Likewise, ``pip`` may need to be replaced with ``pip3``.
The novelWriter installer is not signed because Microsoft doesn't currently provide a way for
non-profit open source projects to properly sign their installers. The novelWriter project
doesn't have the funding to pay for commercial software signing certificates. You will therefore
see an additional warning about this when you download the installer.
.. _a_started_depend:
.. _a_started_linux:
Dependencies
============
novelWriter has been designed to rely on as few dependencies as possible. Aside from the packages
needed to communicate with the Qt GUI libraries, only one package is required for handling the XML
format of the main project file. Everything else is handled with standard Python libraries.
The following Python packages are needed to run novelWriter:
* ``pyqt5`` – needed for connecting with the Qt5 libraries.
* ``lxml`` – needed for full XML support.
* ``pyenchant`` – needed for efficient spell checking (optional).
PyQt/Qt should be at least 5.3, but ideally 5.10 or higher for nearly all features to work. For
instance, searching using regular expressions with full Unicode support requires 5.13. There is no
known minimum version requirement for package ``lxml``, but the code was originally written with
4.2, which is therefore set as the minimum. It may work on lower versions. You have to test it.
Optionally, a package can be installed to interface with the Enchant spell checking libaries, but
this isn't strictly required. If no external spell checking library is available, novelWriter falls
back to using the internal ``difflib`` of Python to check spelling. This is a slower and less
sophisticated spell checker than the full spell checking libaries. The spell check library must be
at least 3.0 to work with Windows. On Linux, 2.0 also works fine.
If you install from PyPi, these dependencies should be installed automatically. If you install from
source, dependencies can still be installed from PyPi with:
.. code-block:: console
pip install -r requirements.txt
.. _a_started_install:
Installing via PyPi
Installing on Linux
===================
The application is written in Python 3 using Qt5 via PyQt5. It is developed on Linux, but it should
in principle work fine on other operating systems as long as dependencies are met.
A Debian package can be downloaded from the `main website`_, or from the Releases_ page on GitHub_.
This package should work on both Debian, Ubuntu and Linux Mint, at least.
You can download the latest version of novelWriter from the source repository on GitHub_.
novelWriter is also hosted on PyPi_, and can be installed on all operating systems that support Qt5
and Python 3. It is regularly tested on Linux, Windows and macOS. The latest version of novelWriter
is |release|.
If you prefer, you can also add the novelWriter repository on Launchpad to your package manager.
Ubuntu
------
You can add the Ubuntu PPA_ and install novelWriter with the following commands.
.. code-block:: bash
sudo add-apt-repository ppa:vkbo/novelwriter
sudo apt update
sudo apt install novelwriter
If you want the `Pre-Release PPA`_ instead, add the ``ppa:vkbo/novelwriter-pre`` repository.
Debian and Mint
---------------
Since this is a pure Python package, the Launchpad PPA can in principle also be used on Debian or
Mint. However, the above command will fail to add the signing key, as it is Ubuntu-specific.
Instead, run the following commands to add the repository and key:
.. code-block:: bash
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/novelwriter-ppa-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F19F1FCE50043114
echo "deb [signed-by=/usr/share/keyrings/novelwriter-ppa-keyring.gpg] http://ppa.launchpad.net/vkbo/novelwriter/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/novelwriter.list
Then run the update and install commands as for Ubuntu:
.. code-block:: bash
sudo apt update
sudo apt install novelwriter
.. note::
You may need to use the Ubuntu 20.04 (focal) packages for Debian 11 or earlier. The newer Ubuntu
packages use a different compression algorithm that may not be supported.
.. tip::
If you get an error message like ``gpg: failed to create temporary file`` when importing the key
from the Ubuntu keyserver, try creating the folder it fails on, and import the key again:
.. code-block:: bash
sudo mkdir /root/.gnupg/
AppImage Releases
-----------------
For other Linux distros than the ones mentioned above, the primary option is AppImage_. These are
completely standalone images for the app that include the necessary environment to run novelWriter.
They can of course be run on any Linux distro, if you prefer this to native packages.
.. note::
novelWriter generally don't support Python versions that have reached end of life. If your Linux
distro still uses older Python versions and novelWriter won't run, you may want to try the
AppImage instead.
.. _a_started_macos:
Installing on MacOS
===================
You can install novelWriter with both its Python and library dependencies embedded using the DMG
application image file from the `main website`_, or from the Releases_ page on GitHub_. Installing
it should be straightforward.
* Download the DMG file and open it. Then drag the novelWriter icon to the :guilabel:`Applications`
folder on the right. This will install it into your :guilabel:`Applications`.
* The first time you try to launch it, it will say that the bundle cannot be verified, simply press
the :guilabel:`Open` button to add an exception.
* If you are not presented with an :guilabel:`Open` button in the dialog launch the application
again by right clicking on the application in Finder and selecting :guilabel:`Open` from the
context menu.
The context menu can also be accessed by option-clicking if you have a one button mouse. This is
done by holding down the option key on your keyboard and clicking on the application in Finder.
.. note::
The novelWriter DMG is not signed because Apple doesn't currently provide a way for non-profit
open source projects to properly sign their installers. The novelWriter project doesn't have the
funding to pay for commercial software signing certificates.
.. _a_started_pip:
Installing from PyPi
====================
novelWriter is also available on the Python Package Index, or PyPi_. This install method works on
all supported operating systems.
To install from PyPi you must first have the ``python`` and ``pip`` commands available on your
system. If you don't, see specific instructions for your operating system in this documentation.
system. You can download Python from `python.org`_. It is recommended that you install the latest
version. If you are on Windows, also make sure to select the "Add Python to PATH" option during
installation.
To install novelWriter from PyPi, use the following command:
.. code-block:: console
.. code-block:: bash
pip install novelwriter
To upgrade an existing installation, use:
.. code-block:: console
.. code-block:: bash
pip install --upgrade novelwriter
When installing via pip, novelWriter can be launched from command line with:
.. code-block:: console
.. code-block:: bash
novelWriter
novelwriter
Make sure the install location for pip is in your PATH variable. This is not always the case by
default.
.. _a_started_i18n:
Building the Translation Files
==============================
If you installed novelWriter from a package, the translation files should be pre-built and
included. If you're running novelWriter from the source code, you will need to generate the files
yourself. The files you need will be written to the ``nw/assets/i18n`` folder, and will have the
``.qm`` file extension.
You can build the ``.qm`` files with:
.. code-block:: console
python3 setup.py qtlrelease
This requires that the Qt Linguist tool is installed on your system. On Ubuntu and Debian, the
needed package is called `qttools5-dev-tools`.
.. note::
If you want to improve novelWriter with translation files for another language, or update an
existing translation, instructions for how to contribute can be found in the README file in the
``i18n`` folder of the source code.
.. _a_started_docs:
Building the Documentation
==========================
If you installed novelWriter from a package, the documentation should be bre-built and included. If
you're running novelWriter from the source code, a local copy of this documentation can be
generated. It requires the following Python packages on Debian and Ubuntu.
* ``python3-sphinx``
* ``python3-sphinx-rtd-theme``
* ``python3-sphinxcontrib.qthelp``
Or from PyPi:
.. code-block:: console
pip install sphinx sphinx-rtd-theme sphinxcontrib-qthelp
The documentation can then be built from the ``docs`` folder in the source code by running:
.. code-block:: console
make html
If successful, the documentation should be available in the ``docs/build/html`` folder and you can
open the ``index.html`` file in your browser.
The documentation can also be built for the Qt Assistant. To build the help packages from the
documentation source, run the following from the root source folder:
.. code-block:: console
python setup.py qthelp
The setup script will copy the generated files into the ``nw/assets/help`` folder, and novelWriter
will detect the presence of the files and redirect the menu help entry to open help locally instead
of sending the user to the website. Pressing the :kbd:`F1` key will in any case try to open help
locally first, then send you to the website as a fallback.
.. note::
In order for the local version of help to work, the Qt Assistant must be installed on the local
computer. If it isn't available, or novelWriter cannot find it, the help feature will fall back
to redirecting you to the documentation website.
default, and then you may get a "Not Found" error when running the ``novelwriter`` command.

View File

@@ -0,0 +1,185 @@
.. _a_manuscript:
***********************
Building the Manuscript
***********************
You can at any time build a manuscript, an outline of your notes, or any other type of document
from the text in your project. All of this is handled by the :guilabel:`Manuscript Build` tool.
You can activate it from the sidebar, the :guilabel:`Tools` menu, or by pressing :kbd:`F5`.
.. versionadded:: 2.1
This tool is new for version 2.1. A simpler tool was used for earlier versions. The simpler tool
only allows you to define a single set of options for the build, but otherwise has much the same
functionality.
.. _a_manuscript_main:
The Manuscript Build Tool
=========================
.. figure:: images/fig_manuscript_build.png
The :guilabel:`Manuscript Build` tool main window.
The main window of the :guilabel:`Manuscript Build` tool contains a list of all the builds you have
defined, a selection of settings, and a few buttons to generate preview, open the print dialog, or
run the build to create a manuscript document.
.. _a_manuscript_settings:
Build Settings
==============
Each build definition can be edited by opening it in the :guilabel:`Manuscript Build Settings`
dialog, either by double-clicking or by selecting it and pressing the edit button in the toolbar.
.. tip::
You can keep the :guilabel:`Manuscript Build Settings` dialog open while testing the different
options, and just hit the :guilabel:`Apply` button. You can test the result of your settings
by pressing the :guilabel:`Preview` button in the main :guilabel:`Manuscript Build` window.
When you're happy with the result, you can close the settings.
Document Selection
------------------
.. figure:: images/fig_build_settings_selections.png
The :guilabel:`Selections` page of the :guilabel:`Manuscript Build Settings` dialog.
The :guilabel:`Selections` page of the :guilabel:`Manuscript Build Settings` dialog allows you to
fine tune which documents are included in the build. They are indicated by a green arrow icon in
the last column. On the right you have some filter options for selecting content of a specific
type, and a set of switches for which root folders to include.
You can override the result of these filters by marking one or more documents and selecting to
explicitly include or exclude them by using the buttons below the tree view. The last button can be
used to reset the override and return control to the filter settings.
In the figure, the green arrow icon and the blue pin icon indicates which documents are included,
and the red forbidden icon indicates that a document is explicitly excluded.
Formatting Headings
-------------------
.. figure:: images/fig_build_settings_headings.png
The :guilabel:`Headings` page of the :guilabel:`Manuscript Build Settings` dialog.
The :guilabel:`Headings` page of the :guilabel:`Manuscript Build Settings` dialog allows you to set
how the headings in your :term:`Novel Documents` are formatted. By default, the title is just
copied as-is, indicated by the ``{Title}`` format. You can change this to for instance add chapter
numbers and scene numbers like shown int he figure above.
Clicking the edit button next to a format will copy the formatting string into the edit box where
it can be modified, and where a syntax highlighter will help indicate which parts are automatically
generated by the build tool. The :guilabel:`Insert` button is a dropdown list of these formats, and
selecting one will insert it at the position of the cursor.
Any text you add that isn't highlighted in colours will remain in your formatted titles.
``{Title}`` will always be replaced by the text in the heading from your documents.
You can preview the result of these format strings by clicking :guilabel:`Apply`, and then clicking
:guilabel:`Preview` in the :guilabel:`Manuscript Build` tool main window.
Scene Separators
^^^^^^^^^^^^^^^^
If you don't want any titles for your scenes (or for your sections if you have them), you can leave
the formatting boxes empty. If so, an empty paragraph will be inserted between the scenes or
sections instead, resulting in a gap in the text. You can also switch on the :guilabel:`Hide`
setting, which will ignore them completely. That is, there won't even be an extra gap inserted.
Alternatively, if you want a separator text between them, like the common ``* * *``, you can enter
the desired separator text as the format. If the format is any piece of static text, it will always
be treated as a separator.
Output Settings
---------------
The :guilabel:`Content`, :guilabel:`Format` and :guilabel:`Output` pages of the
:guilabel:`Manuscript Build Settings` dialog control a number of other settings for the output.
Some of these only apply to specific output formats, which is indicated by the section headings on
the settings pages.
.. _a_manuscript_build:
Building Manuscript Documents
=============================
.. figure:: images/fig_build_build.png
The :guilabel:`Manuscript Build` dialog used for writing the actual manuscript documents.
When you press the :guilabel:`Build` button on the :guilabel:`Build Manuscript` tool main window, a
special file dialog opens up. This is where you pick your desired output format and where to write
the file.
On the left side of the dialog is a list of all the available file formats, and on the right, a
list of the documents which are included based on the build definition you selected. You can choose
an output path, and set a base file name as well. The file extension will be added automatically.
To generate the manuscript document, press the :guilabel:`Build` button. A small progress bar will
show the build progress, but for small projects it may pass very fast.
File Formats
------------
Currently, four document formats are supported.
Open Document Format
The Build tool can produce either an ``.odt`` file, or an ``.fodt`` file. The latter is just a
flat version of the document format as a single XML file. Most rich text editors support the
former, and only a few the latter.
novelWriter HTML
The HTML format writes a single ``.htm`` file with minimal style formatting. The HTML document
is suitable for further processing by document conversion tools like Pandoc, for importing in
word processors, or for printing from browser.
novelWriter Markup
This is simply a concatenation of the project documents selected by the filters into a ``.txt``
file. The documents are stacked together in the order they appear in the project tree, with
comments, tags, etc. included if they are selected. This is a useful format for exporting the
project for later import back into novelWriter.
Standard/Extended Markdown
The Markdown format comes in both Standard and Extended flavour. The *only* difference in terms
of novelWriter functionality is the support for strikethrough text, which is not supported by
the Standard flavour.
Additional Formats
------------------
In addition to the above document formats, the novelWriter HTML and Markup formats can also be
wrapped in a JSON file. These files will have a meta data entry and a body entry. For HTML, also
the accompanying CSS styles used by the preview are included.
The text body is saved in a two-level list. The outer list contains one entry per document, in the
order they appear in the project tree. Each document is then split up into a list as well, with one
entry per paragraph it contains.
These files are mainly intended for scripted post-processing for those who want that option. A JSON
file can be imported directly into a Python dict object or a PHP array, to mentions a few options.
.. _a_manuscript_print:
Print and PDF
=============
The :guilabel:`Print` button allows you to print the content in the preview window. You can either
print to one of your system's printers, or select PDF as your output format from the printer icon
on the print dialog.
.. note::
The paper format should in all cases default to whatever your system default is. If you want to
change it, you have to select it from the :guilabel:`Print Preview` dialog.

View File

@@ -0,0 +1,342 @@
.. _a_proj:
**************
Novel Projects
**************
New projects can be created from the :guilabel:`Project` menu by selecting :guilabel:`New Project`.
This will open the :guilabel:`New Project Wizard` that will assist you in creating a bare bone
project suited to your needs.
A novelWriter project requires a dedicated folder for storing its files on the local file system.
If you're interested in the details, you can have a look at the chapter :ref:`a_storage`.
A list of recently opened projects is maintained, and displayed in the :guilabel:`Open Project`
dialog. A project can be removed from this list by selecting it and pressing the :kbd:`Del` key or
by clicking the :guilabel:`Remove` button.
Project-specific settings are available in :guilabel:`Project Settings` in the :guilabel:`Project`
menu. See further details below in the :ref:`a_proj_settings` section. Details about the project,
including word counts, and a table of contents with word and page counts, is available through the
:guilabel:`Project Details` dialog.
.. _a_proj_roots:
Project Roots
=============
Projects are structured into a set of top level folders called "Root Folders". They are visible in
the project tree at the left side of the main window.
The :term:`novel documents` go into a root folder of type :guilabel:`Novel`. :term:`Project notes`
go into the other root folders. These other root folder types are intended for your notes on the
various elements of your story. Using them is of course entirely optional.
A new project may not have all of the root folders present, but you can add the ones you want from
the project tree tool bar.
Each root folder has one or more :term:`reference` :term:`keyword` associated with it that is used
to reference them from other documents and notes. The intended usage of each type of root folder is
listed below. However, aside from the :guilabel:`Novel` folder, no restrictions are applied by the
application on what you put in them. You can use them however you want.
The root folder system is closely connected to how the Tags and References system works. For more
details, see the :ref:`a_references` chapter.
:guilabel:`Novel`
This is the root folder type for text that goes into the final novel or novels. This class of
documents have other rules and features than the project notes. See :ref:`a_struct` for more
details.
:guilabel:`Plot`
This is the root folder type where main plots can be outlined. It is optional, but adding at
least brief notes can be useful in order to tag plot elements for the :guilabel:`Outline View`.
Tags in this folder can be references using the ``@plot`` keyword.
:guilabel:`Characters`
Character notes go in this root folder type. These are especially important if you want to use
the :guilabel:`Outline View` to see which character appears where, which part of the story is
told from a specific character's point-of-view, or focusing on a particular character's
storyline. Tags in this type of folder can be referenced using the ``@pov`` keyword for
point-of-view characters, ``@focus`` for a focus character, or the ``@char`` keyword for any
other character present.
:guilabel:`Locations`
The locations folder type is for various scene locations that you want to track. Tags in this
folder can be references using the ``@location`` keyword.
:guilabel:`Timeline`
If the story has multiple plot timelines or jumps in time within the same plot, this folder type
can be used to track this. Tags in this type of folder can be references using the ``@time``
keyword.
:guilabel:`Objects`
Important objects in the story, for instance objects that change hands often, can be tracked
here. Tags in this type of folder can be references using the ``@object`` keyword.
:guilabel:`Entities`
Does your plot have many powerful organisations or companies? Or other entities that are part of
the plot? They can be organised here. Tags in this type of folder can be references using the
``@entity`` keyword.
:guilabel:`Custom`
The custom root folder type can be used for tracking anything else not covered by the above
options. Tags in this folder type can be references using the ``@custom`` keyword.
The root folders correspond to the categories of tags that can be used to reference them. For more
information about the tags listed, see :ref:`a_references_references`.
.. note::
You can rename root folders to whatever you want. However, this doesn't change the reference
keyword or what they do.
.. versionadded:: 2.0
As of version 2.0, you can make multiple root folders of each kind to split up your project.
.. _a_proj_roots_del:
Deleted Documents
-----------------
Deleted documents will be moved into a special :guilabel:`Trash` root folder. Documents in the
trash folder can then be deleted permanently, either individually, or by emptying the trash from
the menu. Documents in the trash folder are removed from the :term:`project index` and cannot be
referenced.
A document or a folder can be deleted from the :guilabel:`Project` menu, or by pressing
:kbd:`Ctrl+Shift+Del`. Root folders can only be deleted when they are empty.
.. _a_proj_roots_out:
Archived Documents
------------------
If you don't want to delete a document, or put it in the :guilabel:`Trash` folder where it may be
deleted accidentally, but still want it out of your main project tree, you can create an
:guilabel:`Archive` root folder and move it there.
You can drag any document to this folder and preserve its settings. The document will always be
excluded from the :guilabel:`Build Manuscript` tool. It is also removed from the
:term:`project index`, so the tags and references defined in it will not show up anywhere else.
.. _a_proj_roots_orphaned:
Recovered Documents
-------------------
If novelWriter crashes or otherwise exits without saving the project state, or if you're using a
file synchronisation tool that runs out of sync, there may be files in the project folder that
aren't tracked in the core project file. These files, when discovered, are recovered and added back
into the project.
The discovered files are scanned for metadata that give clues as to where the document may
previously have been located in the project. The project loading routine will try to put them back
as close as possible to this location, if it still exists. Generally, it will be appended to the
end of the folder where it previously was located. If that folder doesn't exist, it will try to add
it to the correct root folder type. If it cannot figure out which root folder is correct, the
document will be added to the :guilabel:`Novel` root folder. Finally, if the :guilabel:`Novel`
folder is missing, one will be created.
If the title of the document can be recovered, the word "Recovered:" will be added as a prefix to
indicate that it may need further attention. If the title cannot be determined, the document will
be named after its internal key, which is a string of characters and numbers.
.. _a_proj_roots_lock:
Project Lockfile
----------------
To prevent lost documents caused by file conflicts when novelWriter projects are synchronised via
file synchronisation tools, a project lockfile is written to the project folder. If you try to open
a project which has such a file present, you will be presented with a warning, and some information
about where else novelWriter thinks the project is also open. You will be given the option to
ignore this warning, and continue opening the project at your own risk.
.. note::
If, for some reason, novelWriter crashes, the lock file may remain even if there are no other
instances keeping the project open. In such a case it is safe to ignore the lock file warning
when re-opening the project.
.. warning::
If you choose to ignore the warning and continue opening the project, and multiple instances of
the project are in fact open, you are likely to cause inconsistencies and create diverging
project files, potentially resulting in loss of data and orphaned files. You are not likely to
lose any actual text unless both instances have the same document open in the editor, and
novelWriter will try to resolve project inconsistencies the next time you open the project.
.. _a_proj_roots_dirs:
Using Folders in the Project Tree
---------------------------------
Folders, aside from root folders, have no structural significance to the project. When novelWriter
is processing the documents in a project, like for instance when you create a manuscript from it,
these folders are ignored. Only the order of the documents themselves matter.
The folders are there purely as a way for you to organise the documents in meaningful sections and
to be able to collapse and hide them in the project tree when you're not working on those
documents.
.. versionadded:: 2.0
As of version 2.0 it is possible to add child documents to other documents. This is particularly
useful when you create chapters and scenes. If you add separate scene documents, you should also
add separate chapter documents, even if they only contain a chapter heading. You can then add
scene documents as child items to the chapters.
.. _a_proj_files:
Project Documents
=================
New documents can be created from the toolbar in the :guilabel:`Project Tree`, or by pressing
:kbd:`Ctrl+N`. This will open the create new item menu and let you choose between a number of
pre-defined documents and folders. You will be prompted for a label for the new item.
You can always rename an item by selecting :guilabel:`Rename Item` from the :guilabel:`Project`
menu, or by pressing :kbd:`F2`.
Other settings for project items are available from the context menu that you can activate by
right-clicking on an item in the tree. The :guilabel:`Transform` submenu includes options for
converting, splitting, or merging items. See :ref:`a_ui_tree_split_merge` for more details on the
latter two.
.. _a_proj_files_counts:
Word Counts
-----------
A character, word and paragraph count is maintained for each document, as well as for each section
of a document following a :term:`heading<headings>`. The word count and change of words in the
current session is displayed in the footer of any document open in the editor, and all stats are
shown in the details panel below the :guilabel:`Project Tree` for any document selected in the
project or novel trees.
The word counts are not updated in real time, but run in the background every few seconds for as
long as the document is being actively edited.
A total project word count is displayed in the status bar. The total count depends on the sum of
the values in the project tree, which again depend on an up to date :term:`project index`. If the
counts seem wrong, a full project word recount can be initiated by rebuilding the project's index.
Either from the :guilabel:`Tools` menu, or by pressing :kbd:`F9`.
.. _a_proj_settings:
Project Settings
================
The :guilabel:`Project Settings` can be accessed from the :guilabel:`Project` menu, or by pressing
:kbd:`Ctrl+Shift+,`. This will open a dialog box, with a set of tabs.
Settings Tab
------------
The :guilabel:`Settings` tab holds the project name, title, and author settings.
The :guilabel:`Project Name` can be set to a different value than the :guilabel:`Novel Title`. The
difference between them is simply that the :guilabel:`Project Name` is used for the GUI (main
window title) and for generating backup files. The intention is that the :guilabel:`Project Name`
should remain unchanged throughout the project's lifetime, otherwise the name of exported files and
backup files may change too.
The :guilabel:`Novel Title` and :guilabel:`Authors` settings are used when building the manuscript,
for some formats.
If your project is in a different language than your main spell checking language is set to, you
can override the default setting here. You can also override the automatic backup setting. The
project language can also be changed from the :guilabel:`Tools` menu.
Status and Importance Tabs
--------------------------
Each document or folder of type :guilabel:`Novel` can be given a *Status* label accompanied by a
coloured icon, and each document or folder of the remaining types can be given an *Importance*
label.
These labels are there purely for your convenience, and you are not required to use them for any
other features to work. No other part of novelWriter accesses this information. The intention is to
use these to indicate at what stage of completion each novel document is, or how important the
content of a note is to the story. You don't have to use them this way, that's just what they were
intended for, but you can make them whatever you want.
See also :ref:`a_ui_tree_status`.
.. note::
The status or importance level currently in use by one or more documents cannot be deleted, but
they can be edited.
Auto-Replace Tab
----------------
A set of automatically replaced keywords can be added in this tab. The keywords in the left column
will be replaced by the text in the right column when documents are opened in the viewer. They will
also be applied to manuscript builds.
The auto-replace feature will replace text in angle brackets that is in this list. The syntax
highlighter will add an alternate colour to text matching the syntax, but it doesn't check if the
text is in this list.
.. note::
A keyword cannot contain spaces. The angle brackets are added by default, and when used in the
text are a part of the keyword to be replaced. This is to ensure that parts of the text aren't
unintentionally replaced by the content of the list.
.. _a_proj_backup:
Backup
======
An automatic backup system is built into novelWriter. In order to use it, a backup path to where
the backup files are to be stored must be provided in :guilabel:`Preferences`.
Backups can be run automatically when a project is closed, which also implies it is run when the
application itself is closed. Backups are date stamped zip files of the project files in the
project folder (files not strictly a part of the project are ignored). The zip archives are stored
in a subfolder of the backup path. The subfolder will have the same name as the
:guilabel:`Project Name` as defined in :ref:`a_proj_settings`.
The backup feature, when configured, can also be run manually from the :guilabel:`Tools` menu.
It is also possible to disable automated backups for a given project in
:guilabel:`Project Settings`.
.. note::
For the backup to be able to run, the :guilabel:`Project Name` must be set in
:guilabel:`Project Settings`. This value is used to generate the name and path of the backups.
Without it, the backup will not run at all, but it will produce a warning message.
.. _a_proj_stats:
Writing Statistics
==================
When you work on a project, a log file records when you opened it, when you closed it, and the
total word counts of your novel documents and notes at the end of the session, provided that the
session lasted either more than 5 minutes, or that the total word count changed. For more details
about the log file, see :ref:`a_storage`.
A tool to view the content of the log file is available in the :guilabel:`Tools` menu under
:guilabel:`Writing Statistics`. You can also launch it by pressing :kbd:`F6`, or find it on the
sidebar.
The tool will show a list of all your sessions, and a set of filters to apply to the data. You can
also export the filtered data to a JSON file or to a CSV file that can be opened by a spreadsheet
application like for instance Libre Office Calc or Excel.
.. versionadded:: 1.2
As of version 1.2, the log file also stores how much of the session time was spent idle. The
definition of idle here is that the novelWriter main window loses focus, or the user hasn't made
any changes to the currently open document in five minutes. The number of minutes can be altered
in :guilabel:`Preferences`.

View File

@@ -0,0 +1,202 @@
.. _a_references:
*******************
Tags and References
*******************
In novelWriter there are no forms or tables to fill in to define the characters, locations and
other elements of your story. Instead, you can mark your :term:`project notes` as representing
these story elements by creating a :term:`tag`. Whenever you want to link a piece of your story to
a note defining a story element, like a character, you create a :term:`reference` back to that tag.
You can also cross-link your project notes in the same way.
This is perhaps one of the features that makes novelWriter different from other, similar
applications. It is therefore not always obvious to new users how this is supposed to work, so
this chapter hopes to explains in more detail how to use the tags and references system.
.. tip::
If you find the Tags and Reference system difficult to follow just from reading this chapter,
you can create a new project in novelWriter and select to "Fill the project with example files"
in the :guilabel:`New Project Wizard`. The example project contains several examples of tags and
references.
.. _a_references_metadata:
Metadata in novelWriter
=======================
The structure of your novelWriter project is inferred from the :term:`headings` within the
documents, not the documents themselves. See :ref:`a_struct_heads` for more details. Therefore,
metadata is also associated with headings, and not the documents directly.
If you split your project into separate documents for each scene, this distinction may not matter.
However, there are several benefits to using documents at a larger structural scale when starting
your project. For instance, it may make more sense to define all your scenes, and even chapters, in
a single document at first, or perhaps a document per act. You can later split these documents up
using the document split feature. See :ref:`a_ui_tree_split_merge` for more details.
The implication here is that you can treat each heading as an independent element of your notes
that can be referenced somewhere else. In order to make it possible to reference a header section,
you need to assign it a tag.
.. _a_references_tags:
How to Use Tags
===============
A "tag" in novelWriter is a word or phrase that you define as belonging to a heading. Tags are set
by using the ``@tags`` :term:`keyword`. The full format of a tag is ``@tag: tagname``, where
``tagname`` is an identifier of your choosing. You can only set *one* tag per heading, and the tag
has to be unique across all documents in the project.
.. versionadded:: 2.2
Tags are now case insensitive.
After the tags have been defined, they can then be referenced in the novel documents, or
cross-referenced in other notes. they will also show up in the :guilabel:`Outline View` and in the
back-reference panel when a document is opened in the viewer.
The syntax highlighter will indicate to you that the keyword is correctly used and that the tag is
allowed, that is, the tag is unique. Duplicate tags should be detected as long as the index is up
to date. An invalid tag should have a green wiggly line under it, and will not receive the syntax
colour that valid tags do.
The tag is the only part of these notes that novelWriter uses. The rest of the document content is
there for you to use in whatever way you wish. Of course, the content of the documents can be added
to the manuscript, or an outline document. If you want to compile a single document of all your
notes, you can do this from the :guilabel:`Manuscript Build` tool.
Example of a heading with a tag for a character of the story:
.. code-block:: none
# Jane Doe
@tag: Jane
Some information about the character Jane Doe.
When this is done in a document in a :term:`Root Folder` of type "Characters", the tag is
automatically treated as an available character in your project, and you will be able to reference
it in any of your other documents using the reference keywords for characters. It will also show up
in the Character tab in the Reference panel below the document viewer, and in the reference
auto-completer menu in the editor when you fill in references. See :ref:`a_ui_view` and
:ref:`a_references_completer`.
It is the root folder type that defines what category of story elements the tag is indexed under.
See the :ref:`a_proj_roots` section for an overview of available root folder types. They are also
covered in the next section.
.. _a_references_references:
How to Use References
=====================
Each heading of any level in your project can contain references to tags set in project notes. The
references are gathered by the indexer and used to generate the :guilabel:`Outline View`, among
other things.
References are set as a :term:`keyword` and a list of corresponding tags. The valid keywords are
listed below. The format of a reference line is ``@keyword: value1, [value2] ... [valueN]``. All
reference keywords allow multiple values.
``@pov``
The point-of-view character for the current section. The target must be a note tag in a
:guilabel:`Character` type root folder.
``@focus``
The character that has the focus for the current section. This can be used in cases where the
focus is not a point-of-view character. The target must be a note tag in a :guilabel:`Character`
type root folder.
``@char``
Other characters in the current section. The target must be a note tag in a
:guilabel:`Character` type root folder. This should not include the point-of-view or focus
character if those references are used.
``@plot``
The plot or subplot advanced in the current section. The target must be a note tag in a
:guilabel:`Plot` type root folder.
``@time``
The timelines touched by the current section. The target must be a note tag in a
:guilabel:`Timeline` type root folder.
``@location``
The location the current section takes place in. The target must be a note tag in a
:guilabel:`Locations` type root folder.
``@object``
Objects present in the current section. The target must be a note tag in a :guilabel:`Object`
type root folder.
``@entity``
Entities present in the current section. The target must be a note tag in a
:guilabel:`Entities` type root folder.
``@custom``
Custom references in the current section. The target must be a note tag in a :guilabel:`Custom`
type root folder. The custom folder are for any other category of notes you may want to use.
The syntax highlighter will alert the user that the tags and references are used correctly, and
that the tags referenced exist.
.. note::
The highlighter may be mistaken if the index of defined tags is out of date. If so, press
:kbd:`F9` to regenerate it, or select :guilabel:`Rebuild Index` from the :guilabel:`Tools` menu.
In general, the index for a document is regenerated when it is saved, so this shouldn't normally
be necessary.
.. tip::
If you add a reference in the editor to a tag that doesn't yet exist, you can right-click it and
select :guilabel:`Create Note for Tag`. This will generate a new project note automatically with
the new tag defined. In order for this to be possible, a root folder for that category of
references must already exist.
One note can also reference another note in the same way novel documents do. When the note is
opened in the document viewer, the references become clickable links, making it easier to follow
connections in the plot. You can follow links in the document editor by clicking them with the
mouse while holding down the :kbd:`Ctrl` key. Clicked links are always opened in the view panel.
Project notes don't show up in the :guilabel:`Outline View`, so referencing between notes is only
meaningful if you want to be able to click-navigate between them, or of course if you just want to
highlight that two notes are related.
.. tip::
If you cross-reference between notes and export your project as an HTML document using the
:guilabel:`Manuscript Build` tool, the cross-references become clickable links in the exported
HTML document as well.
Example of a novel document with references to characters and plots:
.. code-block:: none
## Chapter 1
@pov: Jane
### Scene 1
@char: John, Sam
@plot: Main
Once upon a time ...
.. _a_references_completer:
The References Auto-Completer
-----------------------------
An auto-completer context menu will show up automatically in the document editor when you type the
character ``@`` on a new line. It will first suggest tag or reference keywords for you to add, and
after the ``:`` has been added, suggest references from the list of tags you have already defined.
You can use the auto-completer to add multiple references with a ``,`` between them, and even type
new ones. New references can be created by right-clicking on them and selecting
:guilabel:`Create Note for Tag` from the menu.
.. versionadded:: 2.2

View File

@@ -0,0 +1,113 @@
.. _a_struct:
***************
Novel Structure
***************
This chapter covers the structure of a novel project.
There are two different types of documents in a project, :guilabel:`Novel Documents` and
:guilabel:`Project Notes`. Novel documents can only live in a :guilabel:`Novel` type root folder.
You can also move them to :guilabel:`Archive` and :guilabel:`Trash` of course.
The :guilabel:`Project Tree` can distinguish between the different header levels of the novel
documents using coloured icons, and optionally add emphasis on the label, set in
:guilabel:`Preferences`.
.. _a_struct_heads:
Importance of Headings
======================
Subfolders under root folders have no impact on the structure of the novel itself. The structure is
instead dictated by the heading level of the headings within the documents.
Four levels of headings are supported, signified by the number of hashes (``#``) preceding the
title. See also the :ref:`a_fmt` section for more details about the markup syntax.
.. note::
The header levels are not only important when generating the manuscript, they are also used by
the indexer when building the outline tree in the :guilabel:`Outline View` as well as in the
:guilabel:`Novel Tree`. Each heading also starts a new region where new Tags and References
can be defined. See :ref:`a_references` for more details.
The syntax for the four basic header types, and the two special header types, is listed in section
:ref:`a_fmt_head`. The meaning of the four levels for the structure of your novel is as follows:
**Header Level 1: Partition**
This header level signifies that the text refers to a top level partition. This is useful when
you want to split the manuscript up into books, parts, or acts. These headings are not required.
The novel title itself should use the special header level ``#!`` covered in :ref:`a_fmt_head`.
**Header Level 2: Chapter**
This header level signifies a chapter level partition. Each time you want to start a new
chapter, you must add such a heading. If you choose to split your manuscript up into one
document per scene, you need a single chapter document with just the heading. You can of course
also add a synopsis and reference keywords to the chapter document. If you want to open the
chapter with a quote or other introductory text that isn't part of a scene, this is also where
you'd put that text.
**Header Level 3: Scene**
This header level signifies a scene level partition. You must provide a title text, but the
title text can be replaced with a scene separator or just skipped entirely when you build your
manuscript.
**Header Level 4: Section**
This header level signifies a sub-scene level partition, usually called a "section" in the
documentation and the user interface. These can be useful if you want to change references
mid-scene, like if you change the point-of-view character. You are free to use sections as you
wish, and you can filter them out of the final manuscript just like with scene titles.
Page breaks are automatically added before level 1 and 2 headers when you build your project to a
format that supports page breaks, or when you print the document directly from the
:guilabel:`Manuscript Build` tool. If you want page breaks in other places, you have to specify
them manually. See :ref:`a_fmt_break`.
.. tip::
There are multiple options of how to process novel titles when building the manuscript. For
instance, chapter numbers can be applied automatically, and so can scene numbers if you want
them in a draft manuscript. See the :ref:`a_manuscript` page for more details.
.. _a_struct_heads_title:
Novel Title and Front Matter
----------------------------
It is recommended that you add a document at the very top of each Novel root folder with the novel
title as the first line. You should modify the level 1 header format code with an ``!`` in order to
render it as a document title that is excluded from any automatic Table of Content in a manuscript
build document, like so:
``#! My Novel``
The title is by default centred on the page. You can add more text to the page as you wish, like
for instance the author's name and details.
If you want an additional page of text after the title page, starting on a fresh page, you can add
``[NEW PAGE]`` on a line by itself, and continue the text after it. This will insert a page break
before the text. See also :ref:`a_fmt_break`.
.. _a_struct_heads_unnum:
Unnumbered Chapter Headings
---------------------------
If you use the automatic numbering feature for your chapters, but you want to keep some special
chapters separate from this, you cam add an ``!`` to the level 2 header formatting code to tell the
build tool to skip these chapters.
``##! Unnumbered Chapter Title``
There is a separate formatting feature for such chapters in the :guilabel:`Manuscript Build` tool
as well. See the :ref:`a_manuscript` page for more details. When building a document of a format
that supports page breaks, also unnumbered chapters will have a page break added just like for
normal chapters.
.. Note::
Previously, you could also disable the automatic numbering of a chapter by adding an ``*`` as
the first character of the chapter title itself. This feature has been dropped in favour of the
current format in order to keep level 1 and 2 headers consistent. Please update your chapter
headings if you've used this syntax.

View File

@@ -1 +1,6 @@
sphinx_rtd_theme
sphinx-book-theme
sphinx>=5.0
sphinx-favicon
sphinx-design
pygments>=2.7
docutils>=0.17.1

View File

@@ -1,110 +0,0 @@
.. _a_setup_linux:
**************
Setup on Linux
**************
.. _GitHub: https://github.com/vkbo/novelWriter/releases
.. _main website: https://novelwriter.io
This is a brief guide to how you can get novelWriter running on a Linux computer. There are
currently no install package of novelWriter for Linux, so it is recommended that you download
either the full source or minimal package and extract it to a practical location on your system and
run the ``setup.py`` script.
Running from Source
===================
To run novelWriter from source, download the latest source package from the release page on
GitHub_ or the `main website`_, or if you have git running on your computer, you can also clone the
repository.
Step 1: Installing Dependencies
-------------------------------
The dependencies of novelWriter are generally available from Linux distro repositories. For Debian
and Ubuntu, they can be installed with:
.. code-block:: console
sudo apt install python3-pyqt5 python3-lxml python3-enchant
If you prefer to install dependencies via PyPi, or the repository dependencies are out of date, you
can install them with:
.. code-block:: console
pip3 install --user -r requirements.txt
Step 2: Install Package (Optional)
----------------------------------
You can install novelWriter to the default location for Python packages using ``setuptools``. This
step is optional as you can also just put the novelWriter program folder wherever you like
yourself. For instance in ``/opt/novelWriter``, and then run Step 3 to set up icons and launcher.
To install novelWriter to the default location, it requires that you have ``setuptools`` installed
on your system. If you don't have it installed, it can usually be installed from your distro's
repository. For Debian and Ubuntu this is achieved with:
.. code-block:: console
sudo apt install python3-setuptools
The package is also available from PyPi:
.. code-block:: console
pip3 install --user setuptools
With ``setuptools`` in place, novelWriter can be installed to the user space with:
.. code-block:: console
./setup.py install --user
This should install novelWriter as ``~/.local/bin/novelWriter``. If you instead want to install for
all users, i.e. as ``/usr/local/bin/novelWriter``, run:
.. code-block:: console
sudo ./setup.py install
This is equivalent to what the ``pip`` installer does. It puts novelWriter in the location on your
system where Python packages are usually kept. This is not really the best suited location for a
GUI application like novelWriter, so you may instead copy the entire source to a suiteable location
yourself.
Step 3: Create Launcher Icons
-----------------------------
Regardless of where you extract or install the source files, you can set up a standard icon and a
launcher. To set up this desktop launcher, the needed icons, and the project file association,
run the following from inside the novelWriter folder at the installed or final location:
.. code-block:: console
./setup.py xdg-install
By default, this command installs the launcher and icons for the current user only. To install for
all users, run the script with the ``sudo`` command.
.. tip::
All options of the setup script can be listed with: ``./setup.py help``.
Uninstalling Icons
==================
The steps taken by the ``xdg-install`` step can be reversed by running:
.. code-block:: console
./setup.py xdg-uninstall
This will remove the desktop launcher and icons from the system. As above, whether this is done on
the current user, or system wide, depends on whether this command is called with ``sudo`` or not.

View File

@@ -1,74 +0,0 @@
.. _a_setup_mac:
**************
Setup on macOS
**************
.. _GitHub: https://github.com/vkbo/novelWriter/releases
.. _main website: https://novelwriter.io
.. _brew docs: https://docs.brew.sh/Homebrew-and-Python
This is a brief guide to how you can get novelWriter running on macOS. There are currently no
install package of novelWriter for macOS, so it is recommended that you download either the full
source or minimal package and extract it to a practical location on your system and
run it.
Running from Source
===================
To run novelWriter from source, download the latest source package from the release page on
GitHub_ or the `main website`_, or if you have git running on your computer, you can also clone the
repository.
Step 1: Installing Dependencies
-------------------------------
These instructions assume you're using brew, and have Python and pip set up. If not, see the
`brew docs`_ for help. Main requirements are installed via the requirements file. You also need to
install the ``pyobjc`` package, so you should run:
.. code-block:: console
pip3 install --user -r requirements.txt
pip3 install --user pyobjc
For spell checking you may also need to install the enchant package. It comes with a lot of default
dictionaries.
.. code-block:: console
brew install enchant
With the dependencies in place, you can launch the ``novelWriter.py`` script directly to run
novelWriter.
Step 2: Install Package (Optional)
----------------------------------
You can install novelWriter to the correct location for Python packages with:
.. code-block:: console
./setup.py install --user
This requires that the package ``setuptools`` is installed on your system. If not, it can be
installed with:
.. code-block:: console
pip3 install --user setuptools
This is method of install is equivalent to what the ``pip`` installer does. It puts novelWriter in
the location on your system where Python packages are usually kept. This is not really the best
suited location for a GUI application like novelWriter, so you may instead copy the entire source
to a suiteable location yourself.
After this, you should be able to launch novelWriter by running ``novelWriter`` in a command line
window.
.. note::
Right now there isn't a better integration with macOS available. Contributions from someone more
familiar with macOS would be very much appreciated.

View File

@@ -1,149 +0,0 @@
.. _a_setup_win:
****************
Setup on Windows
****************
This is a brief guide to how you can get novelWriter running on a Windows computer.
Unlike other operating systems, Windows does not come prepared with an environment to run Python
applications, so you must first install Python. After that, running novelWriter is straightforward.
.. tip::
If you have any problems, you can always open a question on the project's discussions_ page.
This requires a GitHub account.
.. _discussions: https://github.com/vkbo/novelWriter/discussions
.. _a_setup_win_installer:
Using the Installer
===================
The installer for Windows is no longer provided. See the `installer issue`_ for more info on why.
You can still create the installer yourself if you want to. It can be generated with the provided
``setup.py`` script. use the script's ``help`` command to get further instructions.
Please use the "Running from Source" option below instead. It has been improved and a script has
been added that does nearly the same thing.
.. _installer issue: https://github.com/vkbo/novelWriter/issues/640
.. _a_setup_win_source:
Running from Source
===================
To run novelWriter from source, download the latest source zip file from the release page on
GitHub_, or from the `main website`_. You can download the "Minimal Windows" zip file. It is a
minimal version of the source that contains only the files needed for running on Windows. You can
also download the full source if you wish.
In order to make novelWriter run on your system, you must first have Python installed (Step 1).
Thereafter, a script will do the rest of the job (Step 2). Alternatively, you can run this step
manually from the command prompt if you wish to.
.. tip::
If your system already has all the dependencies installed, you can run novelWriter directly from
the extracted folder by double-clicking the ``novelWriter.pyw`` file. However, running the
script also adds start icons.
.. _GitHub: https://github.com/vkbo/novelWriter/releases
.. _main website: https://novelwriter.io
Step 1: Installing Python
-------------------------
If you already have Python installed, you can skip this step. If you don't have it installed, you
can download it from the python.org_ website. novelWriter should work with Python 3.6 or higher,
but it is recommended that you install the latest version of Python.
Make sure you select the "Add Python to PATH" option during installation, otherwise the ``python``
command will not work in the command line window.
.. image:: images/python_win_install.png
:width: 600
.. _python.org: https://www.python.org/downloads/windows
Step 2: Dependencies and Icons
------------------------------
**Alternative A: By Script**
Open the folder where you extracted novelWriter, and double-click the file named
``windows_install.bat``. This should open a command line window and run the setup script to install
dependencies, and add desktop and start menu icons.
.. note::
If you downloaded the full source package, the file may be in the ``setup`` subfolder.
The script will also check that it can find Python on your system and alert you if it cannot run
it. If you are sure you have installed it, but the script cannot find it, you probably didn't
install it with the "Add Python to PATH" option mentioned in Step 1.
.. note::
If you upgrade Python to a newer version and the path to ``pythonw.exe`` has therefore changed,
you may need to run this script again. You can also run it to upgrade dependencies to the latest
version.
**Alternative B: Manual Installation**
The above alternative can also be run manually.
Open the windows command prompt. It can be launched by pressing the :kbd:`Win` key and typing "cmd".
The "Command Prompt" app should then be in the list of applications.
With the command prompt open, navigate to the folder where you extracted the novelWriter source,
and run the following commands:
.. code-block:: console
pip install --user pywin32 -r requirements.txt
python setup.py win-install
The first command will install the dependencies on your system from the `Python Package Index`_,
and the second command will create a desktop icon and a start menu icon. That should be all that
you need.
.. _Python Package Index: https://pypi.org/
Uninstalling
============
**Alternative A: By Script**
Open the folder where you keep the novelWriter files, and double-click the file named
``windows_uninstall.bat``. This should open a command line window and run the setup script to
remove the main dependency packages and remove desktop and start menu icons.
.. note::
If you downloaded the full source package, the file may be in the ``setup`` subfolder.
If you plan to also remove Python from your system, you must run the above script first as it needs
Python in order to run.
.. note::
Due to limitations of the ``pip`` installer, dependencies of the dependencies will not be
removed, only the ones the setup script directly installed.
**Alternative B: Manual Uninstallation**
Like for the install process, the script just runs two commands. You can of course run them
yourself if you wish. They are:
.. code-block:: console
python setup.py win-uninstall
pip uninstall -r requirements.txt
There may be other packages on your system installed by ``pip``. To list all packages, run:
.. code-block:: console
pip freeze --user

View File

@@ -0,0 +1,58 @@
.. _a_locations:
**************
File Locations
**************
.. _QStandardPaths: https://doc.qt.io/qt-5/qstandardpaths.html
novelWriter will create a few files on your system outside of the application folder itself. These
file locations are described in this chapter.
.. _a_locations_conf:
Configuration
=============
The general configuration of novelWriter, including everything that is in :guilabel:`Preferences`,
is saved in one central configuration file. The location of this file depends on your operating
system. The system paths are provided by the Qt QStandardPaths_ class and its ``ConfigLocation``
value.
The standard paths are:
* Linux: ``~/.config/novelwriter/novelwriter.conf``
* MacOS: ``~/Library/Preferences/novelwriter/novelwriter.conf``
* Windows: ``C:\Users\<USER>\AppData\Local\novelwriter\novelwriter.conf``
Here, ``~`` corresponds to the user's home directory on Linux and MacOS, and ``<USER>`` is the
user's username on Windows.
.. note::
These are the standard operating system defined locations. If your system has been set up in a
different way, these locations may also be different.
.. _a_locations_data:
Application Data
================
novelWriter also stores a bit of data that is generated by the user's actions. This includes the
list of recent projects form the :guilabel:`Open Project` dialog. Custom themes should also be
saved here. The system paths are provided by the Qt QStandardPaths_ class and its
``AppDataLocation`` value.
The standard paths are:
* Linux: ``~/.local/share/novelwriter/``
* MacOS: ``~/Library/Application Support/novelwriter/``
* Windows: ``C:\Users\<USER>\AppData\Roaming\novelwriter\``
Here, ``~`` corresponds to the user's home directory on Linux and MacOS, and ``<USER>`` is the
user's username on Windows.
.. note::
These are the standard operating system defined locations. If your system has been set up in a
different way, these locations may also be different.

164
docs/source/tech_source.rst Normal file
View File

@@ -0,0 +1,164 @@
.. _a_source:
*******************
Running from Source
*******************
.. _GitHub: https://github.com/vkbo/novelWriter/releases
.. _PyPi: https://pypi.org/project/novelWriter/
.. _Sphinx Docs: https://www.sphinx-doc.org/
This chapter describes various ways of running novelWriter directly from the source code, and how
to build the various components like the translation files and documentation.
.. note::
The text below assumes the command ``python`` corresponds to a Python 3 executable. Python 2 is
now deprecated, but on many systems the command ``python3`` may be needed instead. Likewise,
``pip`` may need to be replaced with ``pip3``.
Most of the custom commands for building packages of novelWriter, or building assets, are contained
in the ``pkgutils.py`` script in the root of the source code. You can list the available commands
by running:
.. code-block:: bash
python pkgutils.py help
.. _a_source_depend:
Dependencies
============
novelWriter has been designed to rely on as few dependencies as possible. Only the Python wrapper
for the Qt GUI libraries is required. The package for spell checking is optional, but recommended.
Everything else is handled with standard Python libraries.
The following Python packages are needed to run all features of novelWriter:
* ``PyQt5`` – needed for connecting with the Qt5 libraries.
* ``PyEnchant`` – needed for spell checking (optional).
PyQt/Qt should be at least 5.10, but ideally 5.13 or higher for all features to work. For instance,
searching using regular expressions with full Unicode support requires 5.13.
If you want spell checking, you must install the ``PyEnchant`` package. The spell check library
must be at least 3.0 to work with Windows. On Linux, 2.0 also works fine.
If you install from PyPi, these dependencies should be installed automatically. If you install from
source, dependencies can still be installed from PyPi with:
.. code-block:: bash
pip install -r requirements.txt
.. note::
On Linux distros, the Qt library is usually split up into multiple packages. In some cases,
secondary dependencies may not be installed automatically. For novelWriter, the library files
for renderring the SVG icons may be left out and needs to be installed manually. This is the
case on for instance Arch Linux.
.. _a_source_install:
Build and Install from Source
=============================
If you want to install novelWriter directly from the source available on GitHub_, you must first
build the package using the Python Packaging Authority's build tool. It can be installed with:
.. code-block:: bash
pip install build
On Debian-based systems the tool can also be installed with:
.. code-block:: bash
sudo apt install python3-build
With the tool installed, run the following command from the root of the novelWriter source code:
.. code-block:: bash
python -m build --wheel
This should generate a ``.whl`` file in the ``dist/`` folder at your current location. The wheel
file can then be installed on your system. Here with example version number 2.0.7, but yours may be
different:
.. code-block:: bash
pip install --user dist/novelWriter-2.0.7-py3-none-any.whl
.. _a_source_i18n:
Building the Translation Files
==============================
If you installed novelWriter from a package, the translation files should be pre-built and
included. If you're running novelWriter from the source code, you will need to generate the files
yourself. The files you need will be written to the ``novelwriter/assets/i18n`` folder, and will
have the ``.qm`` file extension.
You can build the ``.qm`` files with:
.. code-block:: bash
python pkgutils.py qtlrelease
This requires that the Qt Linguist tool is installed on your system. On Ubuntu and Debian, the
needed package is called ``qttools5-dev-tools``.
.. note::
If you want to improve novelWriter with translation files for another language, or update an
existing translation, instructions for how to contribute can be found in the ``README.md`` file
in the ``i18n`` folder of the source code.
.. _a_source_sample:
Building the Example Project
============================
In order to be able to create new projects from example files, you need a ``sample.zip`` file in
the ``assets`` folder of the source. This file can be built from the ``pkgutils.py`` script by
running:
.. code-block:: bash
python pkgutils.py sample
.. _a_source_docs:
Building the Documentation
==========================
A local copy of this documentation can be generated as HTML. This requires installing some Python
packages from PyPi:
.. code-block:: bash
pip install -r docs/source/requirements.txt
The documentation can then be built from the root folder in the source code by running:
.. code-block:: bash
make -C docs html
If successful, the documentation should be available in the ``docs/build/html`` folder and you can
open the ``index.html`` file in your browser.
You can also build a PDF manual from the documentation using the ``pkgutils.py`` script:
.. code-block:: bash
python pkgutils.py manual
This will build the documentation as a PDF using LaTeX. The file will then be copied into the
assets folder and made available in the :guilabel:`Help` menu in novelWriter. The Sphinx build
system has a few extra dependencies when building the PDF. Please check the `Sphinx Docs`_ for more
details.

View File

@@ -0,0 +1,165 @@
.. _a_storage:
******************
How Data is Stored
******************
.. _documentation: https://docs.novelwriter.io/
This chapter contains details of how novelWriter stores and handles the project data.
Project Structure
=================
All novelWriter files are written with utf-8 encoding. Since Python automatically converts Unix
line endings to Windows line endings on Windows systems, novelWriter does not make any adaptations
to the formatting on Windows systems. This is handled entirely by the Python standard library.
Python also handles this when working on the same files on both Windows and Unix-based operating
systems.
Main Project File
-----------------
The project itself requires a dedicated folder for storing its files, where novelWriter will create
its own "file system" where the project's folder and file hierarchy is described in a project XML
file. This is the main project file in the project's root folder with the name ``nwProject.nwx``.
This file also contains all the meta data required for the project (except the index data), and a
number of related project settings.
If this file is lost or corrupted, the structure of the project is lost, although not the text
itself. It is important to keep this file backed up, either through the built-in backup tool, or
your own backup solution.
The project XML file is indent-formatted, and is suitable for diff tools and version control since
most of the file will stay static, although a timesetamp is set in the meta section on line 2, and
various meta data entries incremented, on each save.
.. only:: not html
A full project file format specification is available in the online documentation_.
.. only:: html
A full description of the current file format is available in the
:download:`File Format Spec 1.5 <fileformatspec15.pdf>` document, available as a PDF.
Project Documents
=================
All the project documents are saved in a subfolder of the main project folder named ``content``.
Each document has a file handle based on a 52 bit random number, represented as a hexadecimal
string. The documents are saved with a filename assembled from this handle and the file extension
``.nwd``.
If you wish to find the file system location of a document in the project, you can either look it
up in the project XML file, select :guilabel:`Show File Details` from the :guilabel:`Document` menu
when having the document open in the editor, or look in the ``ToC.txt`` file in the root of the
project folder. The ``ToC.txt`` file has a list of all documents in the project, referenced by
their label, and where they are saved.
The reason for this cryptic file naming is to avoid issues with file naming conventions and
restrictions on different operating systems, and also to have a file name that does not depend on
what you name the document within the project, or changes it to. This is particularly useful when
using a versioning system.
Each document file contains a plain text version of the text from the editor. The file can in
principle be edited in any text editor, and is suitable for diffing and version control if so
desired. Just make sure the file remains in utf-8 encoding, otherwise unicode characters may
become mangled when the file is opened in novelWriter again.
Editing these files is generally not recommended. The reason for this is that the index will not be
automatically updated when doing so, which means novelWriter doesn't know you've altered the file.
If you *do* edit a file in this manner, you should rebuild the index when you next open the project
in novelWriter.
The first lines of the file may contain some meta data starting with the characters ``%%~``. These
lines are mainly there to restore some information if the file is lost from the main project file,
and the information may be helpful if you do open the file in an external editor as it contains the
document label and the document class and layout. The lines can be deleted without any consequences
to the rest of the content of the file, and will be added back the next time the document is saved
in novelWriter.
The File Saving Process
-----------------------
When saving the project file, or any of the documents, the data is first saved to a temporary file.
If successful, the old data file is then removed, and the temporary file replaces it. This ensures
that the previously saved data is only replaced when the new data has been successfully saved to
the storage medium.
For the project XML file, a ``.bak`` file is in addition kept, which will always contain the
previous version of the file, although when auto-save is enabled, they may have the same content.
If the opening of a project file fails, novelWriter will automatically try to open the ``.bak``
file instead.
Project Meta Data
=================
The project folder contains a subfolder named ``meta``, containing a number of files. The meta
folder contains semi-important files. That is, they can be lost with only minor impact to the
project. All files in this folder are JSON or JSON Lines files, although some other files may
remain from earlier versions of novelWriter as they haven't all been JSON files in the past.
If you use version control software on your project, you can exclude this folder, although you may
want to track the session log file and the custom words list.
The Project Index
-----------------
Between writing sessions, the project index is saved in a JSON file in ``meta/index.json``.
This file is not critical. If it is lost, it can be completely rebuilt from within novelWriter from
the :guilabel:`Tools` menu.
The index is maintained and updated whenever a document or note is saved in the editor. It contains
all references and tags in documents and notes, as well as the location of all headers in the
project, and the word counts within each header section.
The integrity of the index is checked when the file is loaded. It is possible to corrupt the index
if the file is manually edited and manipulated, so the check is important to avoid sudden crashes
of novelWriter. If the file contains errors, novelWriter will automatically build it anew. If the
check somehow fails and novelWriter keeps crashing, you can delete the file manually and rebuild
the index. If this too fails, you have likely encountered a bug.
Build Definitions
-----------------
The build definitions from the :guilabel:`Manuscript Build` tool are kept in the
``meta/builds.json`` file. If this file is lost, all custom build definitions are lost too.
Cached GUI Options
------------------
A file named ``meta/options.json`` contains the latest state of various GUI buttons, switches,
dialog window sizes, column sizes, etc, from the GUI. These are the GUI settings that are specific
to the project. Global GUI settings are stored in the main config file.
The file is not critical, but if it is lost, all such GUI options will revert back to their default
settings.
Custom Word List
----------------
A file named ``meta/userdict.json`` contains all the custom words you've added to the project for
spell checking purposes. The content of the file can be edited from the :guilabel:`Tools` menu. If
you lose this file, all your custom spell check words will be lost too.
Session Stats
-------------
The writing progress is saved in the ``meta/sessions.jsonl`` file. This file records the length
and word counts of each writing session on the given project. The file is used by the
:guilabel:`Writing Statistics` tool. If this file is lost, the history it contains is also lost,
but it has otherwise no impact on the project.
Each session is recorded as a JSON object on a single line of the file. Each session record is
appended tot he file.

View File

@@ -1,145 +0,0 @@
.. _a_tech:
*********************
Technical Information
*********************
This section contains details of how novelWriter stores and handles the project data.
How Project Data is Stored
==========================
All novelWriter files are written with utf-8 encoding. Since Python automatically converts Unix
line endings to Windows line endings on Windows systems, novelWriter does not make any adaptations
to the formatting on Windows systems. This is handled entirely by the Python standard library.
Python also handles this fairly well when working on the same files on both Windows and Unix-based
operating systems.
Main Project File
-----------------
The project itself requires a dedicated folder for storing its files where novelWriter will create
its own "file system" where the folder and file hierarchy is described in a project XML file. This
is the main project file in the project's root folder with the name ``nwProject.nwx``. This file
also contains all the meta data required for the project, and a number of related project settings.
If this file is lost or corrupted, the structure of the project is lost, although not the text
itself. It is important to keep this file backed up, either through the built-in backup tool, or
your own backup solution.
.. tip::
The novelWriter project folder is structured so that it can easily be added to a version control
system like git. If so, you may want to add a `.gitignore` file to exclude files with the
extensions `.json` as JSON files are used to cache the index and various run-time settings and
are generally large files that change often. You'd also want to exclude the ``cache`` folder.
The project XML file is indent-formatted, suitable for diff tools and version control since most of
the file will stay static, although a timesetamp is set in the meta section on line 2 each time the
file is saved, and various meta data entries are incremented on each save.
Project Documents
-----------------
All the project documents are saved in a folder in the main project folder named ``content``. Each
document has a file handle taken from the first 13 characters of a SHA256 hash of the system time
when the document was first created. The documents are saved with a filename assembled from this
hash and the file extension ``.nwd``.
If you wish to find the file system location of a document in the project, you can either look it
up in the project XML file, select :guilabel:`Show File Details` from the :guilabel:`Document` menu
when having the document open, or look in the ``ToC.txt`` file in the root of the project folder.
The ``ToC.txt`` file has a list of all documents in the project, referenced by their label, and
where they are saved.
The reason for this cryptic file naming is to avoid issues with file naming conventions and
restrictions on different operating systems, and also to have a file name that does not depend on
what the user names the document within the project, or changes it to.
Each document file contains a plain text version of the text from the editor. The file can in
principle be edited in any text editor, and is suitable for diffing and version control if so
desired. Just make sure the file remains in utf-8 encoding, otherwise unicode chatracters may
become mangled when the file is opened in novelWriter again.
The first lines of the file may contain some meta data starting with the characters ``%%~``. These
lines are mainly there to restore some information if it is lost from the project file, and the
information may be helpful if you do open the file in an external editor as it contains the
document label and the document class and layout. The lines can be deleted without any consequences
to the rest of the content of the file, and will be added back the next time the document is saved
in novelWriter.
The File Saving Process
-----------------------
When saving the project file, or any of the documents, the data is first saved to a temporary file.
If successful, the old data file is removed, and the temporary file becomes the new file. This
ensures that the previously saved data is only replaced when the new data has been successfully
saved to the storage medium.
For the project XML file, a ``.bak`` file is in addition kept, which will always contain the
previous version of the file, although when auto-save is enabled, they may have the same content.
If the opening of a project file fails, novelWriter will automatically try to open the ``.bak``
file instead.
Project Meta Data
=================
The project folder contains a subfolder named ``meta``, containing a number of files. The meta
folder contains semi-important files. That is, they can be lost with only minor impact to the
project.
If you use version control software on your project, you can exclude this folder, although you may
want to track the session log file. The JSON files within this folder can safely be ignored as they
will be automatically regenerated if lost.
The Project Index
-----------------
Between writing sessions, the project index is saved in a JSON file in ``meta/tagsIndex.json``.
This file is not critical. If it is lost, it can be rebuilt from within novelWriter from the
:guilabel:`Tools` menu.
The index is maintained and updated whenever a document or note is saved in the editor. It contains
all references and tags in documents and notes, as well as the location of all headers in the
project, and the word counts within each header section.
The integrity of the index is checked when the file is loaded. It is possible to corrupt the index
if the file is manually edited and manipulated, so the check is important to avoid sudden crashes
of novelWriter. if the file contains errors, novelWriter will automatically build it anew. If the
check somehow fails and novelWriter keeps crashing, you can delete the file manually and rebuild
the index. If this too fails, you have likely encountered a bug.
Cached GUI Options
------------------
A file named ``meta/guiOptions.json`` contains the latest state of various GUI buttons, switches,
dialog window sizes, column sizes, etc, from the GUI. These are the GUI settings that are specific
to the project. Global GUI settings are stored in the main config file.
The file is not critical, but if it is lost, all such GUI options will revert back to their default
settings.
Session Stats
-------------
The writing progress is saved in the ``meta/sessionStats.log`` file. This file records the length
and word counts of each writing session on the given project. The file is used by the
:guilabel:`Writing Statistics` tool. If this file is lost, the history it contains is also lost,
but it has otherwise no impact on the project.
Project Cache
=============
The project ``cache`` folder contains non-critical files. If these files are lost, there is no
impact on the functionality of novelWriter or the history of the project. It contains temporary
files, like the preview document in the :guilabel:`Build Novel Project` tool.
It should be excluded from version control tools if such are used.

View File

@@ -0,0 +1,84 @@
.. _a_pytest:
*************
Running Tests
*************
The novelWriter source code is well covered by tests. The test framework used for the development
is ``pytest`` with the use of an extension for Qt.
Dependencies
============
The dependencies for running the tests can be installed with:
.. code-block:: bash
pip install -r tests/requirements.txt
This will install a couple of extra packages for coverage and test management. The minimum
requirement is ``pytest`` and ``pytest-qt``.
Simple Test Run
===============
To run the tests, you simply need to execute the following from the root of the source folder:
.. code-block:: bash
pytest
Since several of the tests involve opening up the novelWriter GUI, you may want to disable the GUI
for the duration of the test run. Moving your mouse while the tests are running may otherwise
interfere with the execution of some tests.
You can disable the renderring of the GUI by setting the flag ``QT_QPA_PLATFORM=offscreen``:
.. code-block:: bash
export QT_QPA_PLATFORM=offscreen pytest
Advanced Options
================
Adding the flag ``-v`` to the ``pytest`` command will increase verbosity of the test execution.
You can also add coverage report generation. For instance to HTML:
.. code-block:: bash
export QT_QPA_PLATFORM=offscreen pytest -v --cov=novelwriter --cov-report=html
Other useful report formats are ``xml``, and ``term`` for terminal output.
You can also run tests per subpackage of novelWriter with the ``-m`` command. The available
subpackage groups are ``base``, ``core``, and ``gui``. Consider for instance:
.. code-block:: bash
export QT_QPA_PLATFORM=offscreen pytest -v --cov=novelwriter --cov-report=html -m core
This will only run the tests of the "core" package, that is, all the classes that deal with the
project data of a novelWriter project. The "gui" tests, likewise, will run the tests for the GUI
components, and the "base" tests cover the bits in-between.
You can also filter the tests with the ``-k`` switch. The following will do the same as
``-m core``:
.. code-block:: bash
export QT_QPA_PLATFORM=offscreen pytest -v --cov=novelwriter --cov-report=html -k testCore
All tests are named in such a way that you can filter them by adding more bits of the test names.
They all start with the word "test". Then comes the group: "Core", "Base", "Dlg", "Tool", or "Gui".
Finally comes the name of the class or module, which generally corresponds to a single source code
file. For instance, running the following will run all tests for the document editor:
.. code-block:: bash
export QT_QPA_PLATFORM=offscreen pytest -v --cov=novelwriter --cov-report=html -k testGuiEditor
To run a single test, simply add the full test name to the ``-k`` switch.

View File

@@ -0,0 +1,237 @@
.. _a_breakdown:
************
How it Works
************
.. _Fusion: https://doc.qt.io/qt-6/gallery.html
.. _Pandoc: https://pandoc.org/
.. _Open Document: https://en.wikipedia.org/wiki/OpenDocument
The main features of novelWriter are listed in the :ref:`a_intro` chapter. In this chapter, we go
into some more details on how they are implemented. This is intended as an overview. Later on in
this documentation, these features will be covered in more detail.
.. _a_breakdown_design:
GUI Layout and Design
=====================
The user interface of novelWriter is intended to be as minimalistic as practically possible, while
at the same time provide useful features needed for writing a novel.
The main window does not have an editor toolbar like many other applications do. This reduces
clutter, and since the documents are formatted with style tags, it is more or less redundant.
Most formatting features supported are available through convenient keyboard shortcuts. They are
also available in the main menu, so you don't have to look up formatting codes every time you need
them. For reference, a list of all shortcuts can be found in the :ref:`a_kb` chapter.
.. note::
novelWriter is not intended to be a full office type word processor. It doesn't support images,
links, tables, and other complex structures and objects often needed for such documents.
Formatting is limited to headers, emphasis, text alignment, and a few other simple features.
On the left side of the main window, you will find a sidebar. This bar has buttons for the standard
views you can switch between, a quick link to the :guilabel:`Build Manuscript` tool, and a set of
project-related tools and quick access to settings at the bottom.
.. versionadded:: 2.2
A number of new formatting options were added in 2.2 to allow for some special formatting cases.
At the same time, a small formatting toolbar was added in the editor. It is hidden by default,
but can be opened by pressing the three dots icon in the top right corner.
Project Tree and Editor View
----------------------------
.. figure:: images/fig_project_tree_view.png
A screenshot of the Project Tree and Editor View.
When in :guilabel:`Project Tree View` mode, the main work area of the main window is split in two,
or optionally three, panels. The left-most panel contains the project tree and all the documents in
your project. The second panel is the document editor.
An optional third panel on the right contains a document viewer which can view any document in your
project independently of what is open in the document editor. This panel is not intended as a
preview window, although you can use it for this purpose if you wish as it will apply the
formatting tags you have specified. The main purpose of the viewer is for viewing your notes next
to your editor while you're writing.
The editor also has a :guilabel:`Focus Mode` you can toggle either from the menu, from the icon in
the editor's header, or by pressing :kbd:`F8`. When :guilabel:`Focus Mode` is enabled, all the user
interface elements other than the document editor itself are hidden away.
Novel Tree and Editor View
--------------------------
.. figure:: images/fig_novel_tree_view.png
A screenshot of the Novel Tree View.
When in :guilabel:`Novel Tree View` mode, the project tree is replaced by an overview of your novel
structure for a specific Novel :term:`root folder`. Instead of showing individual documents, the
tree now shows all headings of your novel text. This includes multiple headings within the same
document.
Each heading is indented according to the heading level. You can open and edit your novel documents
from this view as well. All headings contained in the currently open document should be highlighted
in the view to indicate which ones belong together in the same document.
If you have multiple Novel root folders, the header of the novel view becomes a dropdown box. You
can then switch between them by clicking the :guilabel:`Outline of ...` text. You can also click
the novel icon button next to it.
Generally, the novel view should update when you make changes to the novel structure, including
edits of the current document in the editor. The information is only updated when the automatic
save of the document is triggered, or you manually press :kbd:`Ctrl+S` to save changes. (You can
adjust the auto-save interval in :guilabel:`Preferences`.) You can also regenerate the whole novel
view by pressing the refresh button at the top of the side panel.
It is possible to show an optional third column in the novel view, The settings are available from
the menu button in the toolbar.
If you click the arrow icon to the right of each item, a tooltip will pop out showing you all the
meta data collected for that heading.
Novel Outline View
------------------
.. figure:: images/fig_outline_view.png
A screenshot of the Novel Outline View.
When in :guilabel:`Novel Outline View` mode, the tree, editor and viewer will be replaced by a
large table that shows the entire novel structure with all the tags and references listed. Pretty
much all collected meta data is available here in different columns.
You can select which novel root folder to display from the dropdown box, and you can select which
columns to show or hide from the menu button. You can also rearrange the columns by drag and drop.
The app will remember your column order and size between sessions, and for each individual project.
Colour Themes
-------------
By default, novelWriter will use the colour theme provided by the Qt library, which is determined
by the Fusion_ style setting. You can also choose between a standard dark and light theme that have
neutral colours from :guilabel:`Preferences`. Other colour themes are also available. More themes
can be contributed to novelWriter on GitHub.
Switching the GUI colour theme does not affect the colours of the editor and viewer. They have
separate colour themes called :guilabel:`Editor Themes`. They are separated because there are a lot
more options to choose from for the editor and viewer.
.. note::
If you switch to dark mode on the GUI, you should also switch editor theme to match, otherwise
icons may be hard to see in the editor and viewer.
.. _a_breakdown_project:
Project Layout
==============
This is a brief introduction to how you structure your writing projects. All of this will be
covered in more detail later.
The main point of novelWriter is that you are free to organise your project documents as you wish
into sub-folders or sub-documents, and split the text between these documents in whatever way suits
you. All that matters to novelWriter is the linear order the documents appear at in the project
tree (top to bottom). The chapters, scenes and sections of the novel are determined by the headings
within those documents.
.. figure:: images/fig_header_levels.png
An illustration of how header levels correspond to the novel structure.
The four heading levels (**H1** to **H4**) are treated as follows:
* **H1** is used for the novel title, and for partitions.
* **H2** is used for chapter tiles.
* **H3** is used for scene titles -- optionally replaced by separators.
* **H4** is for section titles within scenes, if such granularity is needed.
The project tree will select an icon for the document based on the first heading in it.
This header level structure is only taken into account for :term:`novel documents`. For
:term:`project notes`, the header levels have no structural meaning, and you are free to use them
however you want. See :ref:`a_struct` and :ref:`a_references` for more details.
.. versionadded:: 2.0
You can add documents as child items of other documents. This is often more useful than adding
folders, since you anyway may want to have the chapter heading in a separate document from your
individual scene documents so that you can rearrange scene documents freely without affecting
chapter placement.
.. _a_breakdown_export:
Building the Manuscript
=======================
The project can at any time be assembled into a range of different formats through the
:guilabel:`Build Manuscript` tool. Natively, novelWriter supports `Open Document`_, HTML5, and
various flavours of Markdown.
The HTML5 format is suitable for conversion by a number of other tools like Pandoc_, or for
importing into word processors if the Open Document format isn't suitable. The Open Document format
is supported by most Office type applications. In addition, printing is also possible. Print to PDF
is available from the print dialog.
In addition, you can export the content of the project to a JSON file. This is useful if you want
to write your own custom processing script in for instance Python, as the entire novel can be read
into a Python dictionary with a couple of lines of code. The JSON file can be populated with either
HTML formatted text, or with the raw text as typed into the novel documents.
See :ref:`a_manuscript` for more details.
.. versionadded:: 2.1
You can now define multiple build definitions in the :guilabel:`Build Manuscript` tool. This
allows you to define specific settings for various types of draft documents, outline documents,
and manuscript formats. See :ref:`a_manuscript` for more details.
.. _a_breakdown_storage:
Project Storage
===============
The files of a novelWriter project are stored in a dedicated project folder. The project structure
is kept in a file at the root of this folder called ``nwProject.nwx``. All the document files and
associated meta data is stored in other folders below the project folder. For more technical
details about what all the files mean and how they're organised, see the :ref:`a_storage` section.
This way of storing data was chosen for several reasons.
Firstly, all the text you add to your project is saved directly to your project folder in separate
files. Only the project structure and the text you are currently editing is stored in memory at any
given time, which means there is a smaller risk of losing data if the application or your computer
crashes.
Secondly, having multiple small files means it is very easy to synchronise them between computers
with standard file synchronisation tools.
Thirdly, if you use version control software to track the changes to your project, the file formats
used for the files are well suited. Also the JSON documents have line breaks and indents, which
makes it easier to track them with version control software.
.. note::
Since novelWriter has to keep track of a bunch of files and folders when a project is open, it
may not run well on some virtual file systems. A file or folder must be accessible with exactly
the path it was saved or created with. An example where this is not the case is the way Google
Drive is mapped on Linux Gnome desktops using gvfs/gio.
.. caution::
You should not add additional files to the project folder yourself. Nor should you, as a rule,
manually edit files within it. If you really must manually edit the text files, e.g. with some
automated task you want to perform, you need to rebuild the :term:`Project Index` when you open
the project again.
Editing text files in the ``content`` folder is less risky as these are just plain text. Editing
the main project XML file, however, may make the project file unreadable and you may crash
novelWriter and lose project structure information and project settings.

View File

@@ -1,157 +0,0 @@
.. _a_export:
******************
Exporting Projects
******************
The novelWriter project can be exported in various formats using the build tool available from
:guilabel:`Build Novel Project` in the :guilabel:`Tools` menu, or by pressing :kbd:`F5`.
.. _a_export_headers:
Header Formatting
=================
The titles for the five types of titles (the chapter headings come in a numbered and unnumbered
version) of story structure can be formatted collectively in the build tool. This is done through
a series of keyword–replace steps. They are all on the format ``%keyword%``.
``%title%``
This keyword will always be replaced with the title text you put after the ``#`` characters in
your document.
``%ch%``
This will be replaced by a chapter number. The number is incremented by one each time the build
tool sees a new heading of level two in a document with layout :guilabel:`Chapter`. If the
document has layout :guilabel:`Unnumbered`, the counter is *not* incremented. The latter is
useful for for instance Prologue and Epilogue chapters. Adding an asterisk (``*``) in front of
the title text of a level two heading will also disable the chapter counter for that heading.
``%chw%``
Behaves like ``%ch%``, but the number is represented as a number word.
``%chi%``
Begaves like ``%ch%``, but the number is represented as a lower case Roman number.
``%chI%``
Behaves like ``%ch%``, but the number is represented as an upper case Roman number.
``%sc%``
This is the number counter equivalent for scenes. These are incremented each time a heading of
level three is encountered, but reset to 1 each time a chapter is encountered. They can thus be
used for counting scenes within a chapter.
``%sca%``
Behaves like ``%sc%``, but the number is *not* reset to 1 for each chapter. Instead it runs from
1 from the beginning of the novel to produce an absolute scene count.
``\\``
This inserts a line break within the title.
.. note::
Header formatting only applies to novel documents. Headings in notes will be left as-is on
export. However, heading levels 1 through 4 are converted to the correct heading level in the
respective output formats.
**Example**
* The format ``%title%`` just reproduces the title you set in the document.
* The format ``Chapter %ch%: %title%`` produces something like "Chapter 1: My Chapter Title".
* The format ``Scene %ch%.%sc%`` produces something like "Scene 1.2" for scene 2 in chapter 1.
.. _a_export_scenes:
Scene Separators
================
If you don't want any titles for your scenes (or for your sections if you have them), you can leave
the formatting boxes empty. If so, an empty paragraph will be inserted between the scenes or
sections instead.
Alternatively, if you want a separator between them, like the common ``* * *``, you can enter the
desired separator text in the formatting box. In fact, if the format is a piece of static text, it
will always be treated as a separator.
.. _a_export_files:
File Selection
==============
Which documents and notes are selected for export can be controlled from the options on the left
side of the dialog window. The switch for :guilabel:`Include novel files` will select any document
that isn't classified as a note. The switch for :guilabel:`Include note files` will select any
document that *is* a note. This allows for exporting just the novel, just your notes, or both, as
you see fit.
In addition, you can select to export the synopsis comments, regular comments, keywords, and even
exclude the body text itself.
.. tip::
If you for instance want to export a document with an outline of the novel, you can enable
keywords and synopsis export and disable body text, thus getting a document with each heading
followed by the tags and references and the synopsis.
If you need to exclude specific documents from your exports, like draft documents or documents you
want to take out of your manuscript, but don't want to delete, you can un-check the
:guilabel:`Include when building project` option for each document in the project tree. An included
document has a checkmark after the status icon in the :guilabel:`Flags` column. The
:guilabel:`Build Novel Project` tool has a switch to ignore this flag if you need to collectively
override these settings.
.. _a_export_print:
Printing
========
The print button allows you to print the content in the preview window. You can either print to one
of your system's printers, or print directly to file. You can also print to file from the regular
print dialog. The direct to file option is just a shortcut.
.. _a_export_formats:
Export Formats
==============
Currently, six formats are supported for exporting.
Open Document Format
The Build tool can produce either an ``.odt`` file, or an ``.fodt`` file. The latter is just a
flat version of the document format as a single XML file.
novelWriter HTML
The HTML export format writes a single ``.htm`` file with minimal style formatting. The exported
HTML document is suitable for further processing by document conversion tools like Pandoc, for
importing in word processors, or for printing from browser.
novelWriter Markdown
This is simply a concatenation of the project documents selected by the filters. The documents
are stacked together in the order they appear in the project tree, with comments, tags, etc.
included if they are selected. This is a useful format for exporting the project for later
import back into novelWriter.
Standard/GitHub Markdown
The Markdown export format comes in both Standard and GitHub flavour. The *only* difference in
terms of novelWriter functionality is the support of strikethrough text, which is not supported
by the Standard flavour, but *is* supported by the GitHub flavour.
.. _a_export_options:
Additional Export Options
=========================
In addition to the above document formats, the novelWriter HTML and Markdown formats can also be
wrapped in a JSON file. These files will have a meta data entry and a body entry. For HTML, also
the accompanying css styles are exported.
The text body is saved in a two-level list. The outer list contains one entry per exported
document, in the order they appear in the project tree. Each document is then split up into a list
as well, with one entry per paragraph it contains.
These files are mainly intended for scripted post-processing for those who want that option. A JSON
file can be imported directly into a Python dict object or a PHP array, to mentions a few options.

View File

@@ -0,0 +1,326 @@
.. _a_fmt:
********************
Formatting Your Text
********************
The novelWriter text editor is a plain text editor that uses formatting codes for setting meta data
values and allowing for some text formatting. The syntax is based on Markdown, but novelWriter is
*not* a Markdown editor. It supports basic formatting like emphasis (italic), strong importance
(bold) and strike through text, as well as four levels of headings. Form some further complex
formatting needs, a set of shortcodes can be used.
In addition to formatting codes, novelWriter allows for comments, a synopsis tag, and a set of
keyword and value sets used for :term:`tags<tag>` and :term:`references<reference>`. There are also
some codes that apply to whole paragraphs. See :ref:`a_fmt_text` for more details.
.. _a_fmt_hlight:
Syntax Highlighting
===================
The editor has a syntax highlighter feature that is meant to help you know when you've used the
formatting tags or other features correctly. It will change the colour and font size of your
headings, change the text colour of emphasised text, and it can also show you where you have
dialogue in your text.
.. figure:: images/fig_references.png
An example of the colour highlighting of references. "Bob" is not defined, and "@blabla" is not
a valid reference type.
When you use the commands to set tags and references, these also change colour. Correct commands
have a distinct colour, and the references themselves will get a colour if they are valid. Invalid
references will get a squiggly error line underneath. The same applies to duplicate tags.
There are a number of syntax highlighter colour themes available, both for light and dark GUIs. You
can select them from :guilabel:`Preferences`.
.. _a_fmt_head:
Headings
========
.. figure:: images/fig_header_levels.png
An illustration of how header levels correspond to the novel structure.
Four levels of headings are allowed. For :term:`project notes`, they are free to be used as you see
fit. That is, novelWriter doesn't assign the different headings any particular meaning. However,
for :term:`novel documents` they indicate the structural level of the novel and must be used
correctly to produce the intended result. See :ref:`a_struct_heads` for more details.
``# Title Text``
Heading level one. For novel documents, the header level indicates the start of a new partition.
``## Title Text``
Heading level two. For novel documents, the header level indicates the start of a new chapter.
Chapter numbers can be inserted automatically when building the manuscript.
``### Title Text``
Heading level three. For novel documents, the header level indicates the start of a new scene.
Scene numbers or scene separators can be inserted automatically when building the manuscript,
so you can use the title field as a working title for your scenes if you wish.
``#### Title Text``
Heading level four. For novel documents, the header level indicates the start of a new section.
Section titles can be replaced by separators or ignored completely when building the manuscript.
For headers level one and two, adding a ``!`` modifies the behaviour of the heading:
``#! Title Text``
This tells the build tool that the level one heading is intended to be used for the novel's
main title, like for instance on the front page. When building the manuscript, this will use a
different styling and will exclude the title from, for instance, a Table of Contents in Libre
Office.
``##! Title Text``
This tells the build tool to not assign a chapter number to this chapter title if automatic
chapter numbers are being used. Such titles are useful for a prologue for instance. See
:ref:`a_struct_heads_unnum` for more details.
.. note::
The space after the ``#`` or ``!`` character is mandatory. The syntax highlighter will change
colour and font size when the heading is correctly formatted.
.. _a_fmt_text:
Text Paragraphs
===============
A text paragraph is indicated by a blank line. That is, you need two line breaks to separate two
fragments of text into two paragraphs. Single line breaks are treated as line breaks within a
paragraph.
In addition, the editor supports a few additional types of white spaces:
* A non-breaking space can be inserted with :kbd:`Ctrl+K`, :kbd:`Space`.
* Thin spaces are also supported, and can be inserted with :kbd:`Ctrl+K`, :kbd:`Shift+Space`.
* Non-breaking thin space can be inserted with :kbd:`Ctrl+K`, :kbd:`Ctrl+Space`.
These are all insert features, and the :guilabel:`Insert` menu has more. They are also listed
in :ref:`a_kb_ins`.
Non-breaking spaces are highlighted by the syntax highlighter with an alternate coloured
background, depending on the selected theme.
.. tip::
Non-breaking spaces are for instance the correct type of space to separate a number from its
unit. Generally, non-breaking spaces are used to prevent line wrapping algorithms from adding
line breaks where they shouldn't.
.. _a_fmt_emph:
Text Emphasis
=============
A minimal set of text emphasis styles are supported for text paragraphs.
``_text_``
The text is rendered as emphasised text (italicised).
``**text**``
The text is rendered as strongly important text (bold).
``~~text~~``
Strike through text.
In Markdown guides it is often recommended to differentiate between strong importance and emphasis
by using ``**`` for strong and ``_`` for emphasis, although Markdown generally also supports ``__``
for strong and ``*`` for emphasis. However, since the differentiation makes the highlighting and
conversion significantly simpler and faster, in novelWriter this is a rule, not just a
recommendation.
In addition, the following rules apply:
1. The emphasis and strike through formatting tags do not allow spaces between the words and the
tag itself. That is, ``**text**`` is valid, ``**text **`` is not.
2. More generally, the delimiters must be on the outer edge of words. That is, ``some **text in
bold** here`` is valid, ``some** text in bold** here`` is not.
3. If using both ``**`` and ``_`` to wrap the same text, the underscore must be the *inner*
wrapper. This is due to the underscore also being a valid word character, so if they are on the
outside, they violate rule 2.
4. Text emphasis does not span past line breaks. If you need to add emphasis to multiple lines or
paragraphs, you must apply it to each of them in turn.
5. Text emphasis can only be used in plain paragraphs. Comments, titles, and meta data tags don't
allow for formatting, and any formatting markup will be rendered as-is.
.. tip::
novelWriter supports standard escape syntax for the emphasis markup characters in case the
editor misunderstands your intended usage of them. That is, ``\*``, ``\_`` and ``\~`` will
generate a plain ``*``, ``_`` and ``~``, respectively, without interpreting them as part of the
markup.
.. _a_fmt_shortcodes:
Extended Formatting with Shortcodes
===================================
For additional formatting options, you can use shortcodes. Shortcodes is a form of in-line codes
that can be used to change the format of the text that follows and opening code, and last until
that formatting region is ended with a closing code.
These shortcodes are intended for special formatting cases, or more complex cases that cannot be
solved with simple Markdown-like formatting codes. Available shortcodes are listed below.
.. csv-table:: Shortcodes Formats
:header: "Syntax", "Description"
:widths: 40, 60
:class: "tight-table"
"``[b]text[/b]``", "Text is rendered as bold text."
"``[i]text[/i]``", "Text is rendered as italicised text."
"``[s]text[/s]``", "Text is rendered as strike through text."
"``[u]text[/u]``", "Text is rendered as underlined text."
"``[sup]text[/sup]``", "Text is rendered as superscript text."
"``[sub]text[/sub]``", "Text is rendered as subscript text."
Unlike Markdown style codes, these can be used anywhere within a paragraph. Even in the middle of a
word if you need to. You can also freely combine them to form more complex formatting.
The shortcodes are available from the :guilabel:`Format` menu and in the editor toolbar, which can
be activated by clicking the three dots in the editor header.
.. versionadded:: 2.2
.. _a_fmt_comm:
Comments and Synopsis
=====================
In addition to these standard Markdown features, novelWriter also allows for comments in documents.
The text of a comment is ignored by the word counter. The text can also be filtered out when
building the manuscript or viewing the document.
If the first word of a comment is ``Synopsis:`` (with the colon included), the comment is treated
in a special manner and will show up in the :ref:`a_ui_outline` in a dedicated column. The word
``synopsis`` is not case sensitive. If it is correctly formatted, the syntax highlighter will
indicate this by altering the colour of the word.
``% text ...``
This is a comment. The text is not rendered by default (this can be overridden), seen in the
document viewer, or counted towards word counts.
``%Synopsis: text ...``
This is a synopsis comment. It is generally treated in the same way as a regular comment, except
that it is also captured by the indexing algorithm and displayed in the :ref:`a_ui_outline`. It
can also be filtered separately when building the project to for instance generate an outline
document of the whole project.
``%Short: text ...``
This is a short description comment. It is identical to the synopsis comment, but is intended to
be used for project notes. The text shows up in the Reference panel below the document viewer in
the last column labelled :guilabel:`Short Description`.
.. note::
Only one comment can be flagged as a synopsis or short comment for each heading. If multiple
comments are flagged as synopsis or short comments, the last one will be used and the rest
ignored.
.. _a_fmt_tags:
Tags and References
===================
The document editor supports a set of keywords used for setting tags, and making references between
documents.
Tags use the command ``@tag:`` to define a tag. The tag can be set once per section defined by a
heading. Setting it multiple times under the same heading will just override the previous setting.
``@tag: value``
A tag command followed by the tag value, like for instance the name of a character.
References can be set anywhere within a section, and are collected according to their category.
References are in the form:
``@keyword: value``
A reference keyword followed by a value, or a comma separated list of values.
Tags and references are covered in detail in the :ref:`a_references` chapter. The keywords can be
inserted at the cursor position in the editor via the :guilabel:`Insert` menu. If you start typing
an ``@`` on a new line, and auto-complete menu will also pop up suggesting keywords.
.. _a_fmt_align:
Paragraph Alignment and Indentation
===================================
All documents have the text by default aligned to the left or justified, depending on your
settings in :guilabel:`Preferences`.
You can override the default text alignment on individual paragraphs by specifying alignment tags.
These tags are double angle brackets. Either ``>>`` or ``<<``. You put them either before or after
the paragraph, and they will "push" the text towards the edge the brackets point towards. This
should be fairly intuitive.
Indentation uses a similar syntax. But here you use a single ``>`` or ``<`` to push the text away
from the edge.
Examples:
.. csv-table:: Text Alignment and Indentation
:header: "Syntax", "Description"
:widths: 40, 60
:class: "tight-table"
"``>> Right aligned text``", "The text paragraph is right-aligned."
"``Left aligned text <<``", "The text paragraph is left-aligned."
"``>> Centred text <<``", "The text paragraph is centred."
"``> Left indented text``", "The text has an increased left margin."
"``Right indented text <``", "The text has an increased right margin."
"``> Left/right indented text <``", "The text has both margins increased."
.. note::
The text editor will not show the alignment and indentation live. But the viewer will show them
when you open the document there. It will of course also be reflected in the document generated
from the build tool as long as the format supports paragraph alignment.
.. _a_fmt_break:
Vertical Space and Page Breaks
==============================
Adding more than one line break between paragraphs will *not* increase the space between those
paragraphs when building the project. To add additional space between paragraphs, add the text
``[VSPACE]`` on a line of its own, and the build tool will insert a blank paragraph in its place.
If you need multiple blank paragraphs just add a colon and a number to the above code. For
instance, writing ``[VSPACE:3]`` will insert three blank paragraphs.
Normally, the build tool will insert a page break before all headers of level one and for all
headers of level two for novel documents, i.e. chapters, but not for project notes.
If you need to add a page break somewhere else, put the text ``[NEW PAGE]`` on a line by itself
before the text you wish to start on a new page.
If you want page breaks for scenes and sections, you must add them manually.
.. note::
The page break code is applied to the text that follows it. It adds a "page break before" mark
to the text when exporting to HTML or Open Document. This means that a ``[NEW PAGE]`` which has
no text following it, it will not result in a page break.
**Example:**
.. code-block:: markdown
This is a text paragraph.
[VSPACE:2]
This is another text paragraph, but there will be two empty paragraphs
in-between them.
[NEWPAGE]
This text will always start on a new page if the build format has pages.

View File

@@ -1,537 +0,0 @@
.. _a_ui:
**************
User Interface
**************
The user interface is kept as simple as possible to avoid distractions when writing. This page
lists all the main GUI elements, and explains what they do.
.. _a_ui_tree:
The Project Tree
================
The main window contains a project tree in the left-most panel. It shows the entire structure of
the project. It has four columns:
:guilabel:`Label`
The first column shows the item icon and its label. The labels can be edited from the
:guilabel:`Project` menu, or by pressing :kbd:`F2` or :kbd:`Ctrl`:kbd:`E`. The label is not the
same as the title you set inside the document, but it will appear in the header above the
document text itself.
:guilabel:`Words`
The second column shows the word count of the document, or the sum of words of the child items
if it is a folder. If the counts seem incorrect, they can be updated by rebuilding the project
index from the :guilabel:`Tools` menu, or by pressing :kbd:`F9`.
:guilabel:`Inc`
The third column indicates whether the document is included in the final project build or not.
You may want to filter out documents that you no longer want to keep in the final manuscript,
but want to keep in the project for reference.
:guilabel:`Flags`
The fourth column shows various meta data flags for the item. The first is an icon indicating
the importance or status of the document. These are colour coded status levels that you control
and define yourself. They can be changed in :guilabel:`Project Settings` from the
:guilabel:`Project` menu. The first character after the icon indicates the class of the item,
that is ``N`` for **Novel**, ``C`` for **Character**, etc (see :ref:`a_struct_tags`). The
characters after the dot indicate the document layout type (see :ref:`a_proj_roots`).
Right-clicking an item in the project tree will open a context menu under the cursor, displaying
a selection of actions that can be performed on the selected item.
Below the project tree you will find a small details panel showing the full information of the
currently selected item. This panel also includes the latest paragraph and character counts in
addition to the word count.
.. _a_ui_tree_novel:
The Novel Tree
--------------
An alternative way to view the project structure is the novel tree. You can switch to this view by
selecting the :guilabel:`Novel` tab under the project tree. This view is a simplified version of
the view in the :guilabel:`Outline`. It is convenient when you want to browse the structure of the
story itself rather than the document files.
.. note::
You cannot reorganise the entries in the novel tree as that would imply restructuring the
content of the document files.
.. _a_ui_tree_status:
Document Importance and Status
------------------------------
Each document or folder in your project can have either a "Status" or "Importance" flag set. These
are flags that you control and define in their respective tabs in :guilabel:`Project Settings`. The
"Status" flag is intended to tag a Novel document as for instance a draft or as completed, and the
"Importance" flag is intended to tag character notes, or other notes, as for instance a main, major
or minor character.
Whether a document uses a "Status" or "Importance" flag depends on which root folder it lives in.
If it's in the :guilabel:`Novel` folder, it uses the "Status" flag, otherwise it uses an
"Importance" flag. Some folders, like :guilabel:`Trash` and :guilabel:`Outtakes` allow both.
.. _a_ui_tree_dnd:
Project Tree Drag & Drop
------------------------
The project tree allows drag & drop to a certain extent. This feature is primarily intended for
rearranging the order of your documents within each root folder, and has only limited support for
moving documents elsewhere in the project tree. In general, bulk actions are not allowed. This is
deliberate to avoid accidentally messing up your project. If you make a mistake, the last move
action can be undone by pressing :kbd:`Ctrl`:kbd:`Shift`:kbd:`Z`.
Documents and their folders can be rearranged freely within their root folders. Novel documents
cannot be moved out of the :guilabel:`Novel` folder, except to :guilabel:`Trash` and the
:guilabel:`Outtakes` folders. Notes can be moved freely between all root folders, but keep in mind
that if you move a note into a :guilabel:`Novel`, its "Importance" setting will be reset to the
default "Status" setting. See :ref:`a_ui_tree_status`.
Folders cannot be moved at all outside their root tree. Neither can a folder containing documents
be deleted. You must first delete the containing documents.
Root folders in the project tree cannot be dragged and dropped at all. If you want to reorder them,
you can move them up or down with respect to eachother from the :guilabel:`Project` menu, the
right-click context menu, or by pressing :kbd:`Ctrl`:kbd:`Shift` and the :kbd:`Up` or :kbd:`Down`
key.
.. _a_ui_edit:
Editing and Viewing Documents
=============================
To edit a document, double-click it in the project tree, or press the :kbd:`Return` key while
having it selected. This will open the document in the document editor. The editor uses a
simplified markdown format. The format is described in the :ref:`a_ui_md` section below. The editor
has a maximise button (toggles the :guilabel:`Focus Mode`) and a close button in the top-right
corner.
Any document in the project tree can also be viewed in parallel in a right hand side document
viewer. To view a document, press :kbd:`Ctrl`:kbd:`R`, or select :guilabel:`View Document` in the
menu. If you have a middle mouse button, middle-clicking on the document will also open it in the
viewer. The document viewed does not have to be the same document currently being edited. However,
If you *are* viewing the same document, pressing :kbd:`Ctrl`:kbd:`R` again will update the document
with your latest changes. You can also press the reload button in the top-right corner of the view
panel next to the close button to achieve the same thing.
Both the document editor and viewer will show the label of the document in the header at the top of
the edit or view panel. Optionally, the full project path to the document can be shown. This can be
set in :guilabel:`Preferences` from the :guilabel:`Tools` menu. Clicking on the document title bar
will select and reveal its location in the project tree, making it easier to locate in a large
project.
Any tag reference in the editor can be opened in the viewer by moving the cursor to the label and
pressing :kbd:`Ctrl`:kbd:`Return`. You can also control-click them with your mouse. In the viewer,
the references become clickable links. Clicking them will replace the content of the viewer with
the content of the document the reference points to. The document viewer keeps a history of viewed
documents, which you can navigate with the arrow buttons in the top-left corner of the viewer. If
your mouse has back and forward navigation buttons, these can be used as well. They work just like
the backward and forward features in a browser.
At the bottom of the view panel there is a :guilabel:`References` panel. (If it is hidden, click
the icon to reveal it.) This panel will show links to all documents referring back to the one
you're currently viewing, if any has been defined. The :guilabel:`Sticky` button will freeze the
content of the panel to the current document, even if you navigate to another document. This is
convenient if you want to quickly look through all documents in the list in the
:guilabel:`References` panel without losing the list in the process.
.. note::
The :guilabel:`References` panel relies on an up-to-date index of the project. The index is
maintained automatically. However, if anything is missing, or seems wrong, the index can always
be rebuilt by selecting :guilabel:`Rebuild Index` from the :guilabel:`Tools` menu, or by
pressing :kbd:`F9`.
.. _a_ui_edit_search:
Search & Replace
----------------
The document editor has a search and replace bar that can be activated with :kbd:`Ctrl`:kbd:`F` for
search mode or :kbd:`Ctrl`:kbd:`H` for search/replace mode.
Pressing :kbd:`Return` while in the search box will search for the next occurrence of the word, and
:kbd:`Shift`:kbd:`Return` for the previous. Pressing :kbd:`Return` in the replace box, will replace
the highlighted text and move to the next word.
There are a number of settings for the search bar available as toggle switches above the search
box. They allows you to search for, in order:,: matched case only, whole word results only, search
using regular expressions, loop search when reaching the end of the document, and move to the next
document when reaching the end. There is also a switch that will try to match the case of the word
when the replacement is made. That is, it will try to keep the word upper, lower, or capitalised to
match the word being replaced.
The regular expression search is somewhat dependant on which version of Qt your system has. If you
have Qt 5.13 or higher, there is better support for unicode symbols in the search.
.. _a_ui_edit_auto:
Auto-Replace as You Type
========================
A few auto-replace features are supported by the editor. You can control every aspect of the
auto-replace feature from :guilabel:`Preferences`. You can also disable this feature entirely if
you wish.
.. tip::
If you don't like auto-replacement, all symbols inserted by this feature are also available in
the :guilabel:`Insert` menu, and via convenient :ref:`a_ui_shortcuts_ins`. You may also be using
a `Compose Key`_ setup, which means you may not need the auto-replace feature.
.. _Compose Key: https://en.wikipedia.org/wiki/Compose_key
The editor is able to replace two and three hyphens with short and long dashes, triple points with
ellipsis, and replace straight single and double quotes with user-defined quote symbols. It will
also try to determine whether to use the opening or closing symbol, although this feature isn't
always accurate. Especially distinguishing between closing single quote and apostrophe can be
tricky for languages that use the same symbol for these.
.. tip::
If the auto-replace feature changes a symbol when you did not want it to change, pressing
:kbd:`Ctrl`:kbd:`Z` immediately after the auto-replacement will undo it without undoing the
character you typed.
.. _a_ui_md:
Markdown Format
===============
The document editor uses a simplified markdown format. That is, it supports basic formatting like
emphasis (italic), strong importance (bold) and strikethrough text, as well as four levels of
headings.
Some non-standard markdown features have been added. For instance, novelWriter allows for comments,
a synopsis tag, and a set of keyword and value sets used for tags and references.
.. _a_ui_md_head:
Headings
--------
Four levels of headings are allowed. For documents of layout ``Note``, they are free to be used as
you see fit, but for all other layouts used for the novel text itself, they indicate the structural
level of the novel. See :ref:`a_struct_heads` for more details.
``# Title``
Heading level one. If the document is a novel file, the header level indicates the start of a
new partition. This heading level can also be used for the title page's novel title.
``## Title``
Heading level two. If the document is a novel file, the header level indicates the start of a
new chapter. Chapter numbers can be inserted automatically when exporting the manuscript.
``### Title``
Heading level three. If the document is a novel file, the header level indicates the start of a
new scene. Scene numbers or scene separators can be inserted automatically when exporting the
manuscript, so you can use the title field as a working title for your scenes if you wish.
``#### Title``
Heading level four. If the document is a novel file, the header level indicates the start of a
new section. Section titles can be replaced by separators or removed when exporting the
manuscript, so you can use the title field as a working title for your sections if you wish.
.. note::
The space after the ``#`` characters is mandatory. The syntax highlighter will change colour and
font size when the heading is correctly formatted.
.. tip::
If you do use the automatic numbering feature for exports, you can tell the export tool to skip
assigning a number to a specific chapter by adding a ``*`` as the first character of the title
itself. See :ref:`a_struct_heads_unnum` for more details.
.. _a_ui_md_emph:
Text Emphasis
-------------
A minimal set of text emphasis styles are supported.
``_text_``
The text is rendered as emphasised text (italicised).
``**text**``
The text is rendered as strongly important text (bold).
``~~text~~``
Strikethrough text.
In markdown guides it is often recommended to differentiate between strong importance and emphasis
by using ``**`` for strong and ``_`` for emphasis, although markdown generally also supports ``__``
for strong and ``*`` for emphasis. However, since the differentiation makes the highlighting and
conversion significantly simpler and faster, in novelWriter this is a rule, not just a
recommendation.
In addition, the following rules apply:
1. The emphasis and strikethrough formatting tags do not allow spaces between the words and the tag
itself. That is, ``**text**`` is valid, ``**text **`` is not.
2. More generally, the delimiters must be on the outer edge of words. That is, ``some **text in
bold** here`` is valid, ``some** text in bold** here`` is not.
3. If using both ``**`` and ``_`` to wrap the same text, the underscore must be the inner wrapper.
This is due to the underscore also being a valid word character, so if they are on the outside,
they violate rule 2.
4. Text emphasis does not span past line breaks. If you need to add emphasis to multiple lines or
paragraphs, you must apply it to each of them in turn.
.. _a_ui_md_comm:
Comments and Synopsis
---------------------
In addition to these standard markdown features, novelWriter also allows for comments in documents.
The text of a comment is ignored by the word counter. The text can also be filtered out when
exporting or viewing the document.
If the first word of a comment is ``Synopsis:`` (with the colon included), the comment is treated
specially and will show up in the :ref:`a_ui_outline` in a dedicated column. The word ``synopsis``
is not case sensitive. If it is correctly formatted, the syntax highlighter will indicate this by
altering the colour of the word.
``% text...``
This is a comment. The text is not exported by default (this can be overridden), seen in the
document viewer, or counted towards word counts.
``% Synopsis: text...``
This is a synopsis comment. It is generally treated in the same way as a regular comment, except
that it is also captured by the indexing algorithm and displayed in the :ref:`a_ui_outline`. It
can also be filtered separately when exporting the project to for instance generate an outline
document of the whole project.
.. note::
Only one comment can be flagged as a synopsis comment for each heading. If multiple comments are
flagged as synopsis comments, the last one will be used and the rest ignored.
.. _a_ui_md_tags:
Tags and References
-------------------
The document editor supports a minimal set of keywords used for setting tags, and making references
between documents. The tags and references can be set once per section defined by a heading. Using
them multiple times under the same heading will just override the previous setting.
``@keyword: value``
A keyword argument followed by a value, or a comma separated list of values.
The available tag and reference keywords are listed in the :ref:`a_struct_tags` section. They can
also be inserted at the cursor position in the editor via the :guilabel:`Insert` menu.
.. _a_ui_md_add:
Additional Markdown and Non-Standard Features
---------------------------------------------
The editor and viewer also support markdown standard hard line breaks, and preserve non-breaking
spaces if running with Qt 5.9 or higher. For older versions, the non-breaking spaces are lost when
the document is saved. This is unfortunately hard-coded into the Qt text editor.
* A hard line break can be achieved by leaving two or more spaces at the end of the line. This is
standard markdown syntax. Alternatively, the user can press :kbd:`Ctrl`:kbd:`K`, :kbd:`Return` to
insert this type of line break.
* A non-breaking space can be inserted with :kbd:`Ctrl`:kbd:`K`, :kbd:`Space`.
* Thin spaces are also supported, and can be inserted with :kbd:`Ctrl`:kbd:`K`,
:kbd:`Shift`:kbd:`Space`.
* Non-breaking thin space can be inserted with :kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`Space`.
These are all insert features, and the :guilabel:`Insert` menu has more. They are also listed
in :ref:`a_ui_shortcuts_ins`.
Both hard line breaks and non-breaking spaces are highlighted by the syntax highlighter as an
alternate coloured background, depending on the selected theme.
.. tip::
Non-breaking spaces are the correct type of space to separate a number from its unit. Generally,
it prevents the line wrapping algorithms from adding line breaks where it shouldn't.
.. _a_ui_outline:
Project Outline View
====================
The project's Outline view is available as the second tab on the right hand side of the main window
labelled :guilabel:`Outline`. The outline provides an overview of the novel structure, displaying a
tree hierarchy of the elements of the novel, that is, the level 1 to 4 headings representing
partitions, chapters, scenes and sections.
The document containing the heading can also be displayed as a separate column, as well as the line
number where it occurs. Double-clicking an entry will open the corresponding document in the
editor.
.. note::
Since the internal structure of the novel does not depend directly on the folder and document
structure of the project tree, these will not necessarily look the same, depending on how you
choose to organise your documents. See the :ref:`a_struct` page for more details.
Various meta data and information extracted from tags can be displayed in columns in the outline.
A default set of such columns is visible, but you can turn on or off more columns by right clicking
the header and selecting the columns you want to show. The order of the columns can also be
rearranged by dragging them to a different position.
.. note::
The :guilabel:`Title` column cannot be disabled or moved.
The information viewed in the outline is based on the project's main index. While novelWriter does
its best to keep the index up to date when contents change, you can always rebuild it manually by
pressing :kbd:`F9` if something isn't right.
The outline view itself can be regenerated by pressing :kbd:`F10`. You can also enable automatic
updating in the :guilabel:`Tools` menu, which will trigger an update whenever the index is updated
and the :guilabel:`Outline` tab is active. You may want to disable this feature if your project is
very large,
The :guilabel:`Synopsis` column of the outline view takes its information from a specially
formatted comment. See :ref:`a_ui_md_comm`.
.. _a_ui_shortcuts:
Keyboard Shortcuts
==================
Most features are available as keyboard shortcuts. These are as follows:
.. csv-table:: Keyboard Shortcuts
:header: "Shortcut", "Description"
:widths: 30, 70
:class: "tight-table"
":kbd:`Alt`:kbd:`1`", "Switch focus to the project tree."
":kbd:`Alt`:kbd:`2`", "Switch focus to document editor."
":kbd:`Alt`:kbd:`3`", "Switch focus to document viewer."
":kbd:`Alt`:kbd:`4`", "Switch focus to outline view."
":kbd:`Alt`:kbd:`Left`", "Move backward in the view history of the document viewer."
":kbd:`Alt`:kbd:`Right`", "Move forward in the view history of the document viewer."
":kbd:`Ctrl`:kbd:`.`", "Open menu to correct word under cursor."
":kbd:`Ctrl`:kbd:`,`", "Open the :guilabel:`Preferences` dialog."
":kbd:`Ctrl`:kbd:`/`", "Change block format to comment."
":kbd:`Ctrl`:kbd:`0`", "Remove block formatting for block under cursor."
":kbd:`Ctrl`:kbd:`1`", "Change block format to header level 1."
":kbd:`Ctrl`:kbd:`2`", "Change block format to header level 2."
":kbd:`Ctrl`:kbd:`3`", "Change block format to header level 3."
":kbd:`Ctrl`:kbd:`4`", "Change block format to header level 4."
":kbd:`Ctrl`:kbd:`A`", "Select all text in the document."
":kbd:`Ctrl`:kbd:`B`", "Format selected text, or word under cursor, with strong emphasis (bold)."
":kbd:`Ctrl`:kbd:`C`", "Copy selected text to clipboard."
":kbd:`Ctrl`:kbd:`D`", "Strikethrough selected text, or word under cursor."
":kbd:`Ctrl`:kbd:`E`", "If in the project tree, edit a document or folder settings. (Same as :kbd:`F2`.)"
":kbd:`Ctrl`:kbd:`F`", "Open the search bar and search for the selected word, if any is selected."
":kbd:`Ctrl`:kbd:`G`", "Find next occurrence of search word in current document. (Same as :kbd:`F3`.)"
":kbd:`Ctrl`:kbd:`H`", "Open the search and replace bar and search for the selected word, if any is selected. (On Mac, this is :kbd:`Cmd`:kbd:`=`.)"
":kbd:`Ctrl`:kbd:`I`", "Format selected text, or word under cursor, with emphasis (italic)."
":kbd:`Ctrl`:kbd:`K`", "Activate the insert commands. The commands are listed in :ref:`a_ui_shortcuts_ins`."
":kbd:`Ctrl`:kbd:`N`", "Create new document."
":kbd:`Ctrl`:kbd:`O`", "Open selected document."
":kbd:`Ctrl`:kbd:`Q`", "Exit novelWriter."
":kbd:`Ctrl`:kbd:`R`", "If in the project tree, open a document for viewing. If the editor has focus, open current document for viewing."
":kbd:`Ctrl`:kbd:`S`", "Save the current document in the document editor."
":kbd:`Ctrl`:kbd:`V`", "Paste text from clipboard to cursor position."
":kbd:`Ctrl`:kbd:`W`", "Close the current document in the document editor."
":kbd:`Ctrl`:kbd:`X`", "Cut selected text to clipboard."
":kbd:`Ctrl`:kbd:`Y`", "Redo latest undo."
":kbd:`Ctrl`:kbd:`Z`", "Undo latest changes."
":kbd:`Ctrl`:kbd:`F7`", "Toggle spell checking."
":kbd:`Ctrl`:kbd:`F10`", "Toggle automatic updating of project outline."
":kbd:`Ctrl`:kbd:`Up`", "Move item one step up in the project tree."
":kbd:`Ctrl`:kbd:`Down`", "Move item one step down in the project tree."
":kbd:`Ctrl`:kbd:`Del`", "Delete next word in editor."
":kbd:`Ctrl`:kbd:`Backspace`", "Delete previous word in editor."
":kbd:`Ctrl`:kbd:`'`", "Wrap selected text, or word under cursor, in single quotes."
":kbd:`Ctrl`:kbd:`""`", "Wrap selected text, or word under cursor, in double quotes."
":kbd:`Ctrl`:kbd:`Retrun`", "Open the tag or reference under the cursor in the Viewer."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`,`", "Open the :guilabel:`Project Settings` dialog."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`/`", "Remove block formatting for block under cursor."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`1`", "Replace occurrence of search word in current document, and search for next occurrence."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`A`", "Select all text in current paragraph."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`G`", "Find previous occurrence of search word in current document. (Same as :kbd:`Shift`:kbd:`F3`.)"
":kbd:`Ctrl`:kbd:`Shift`:kbd:`I`", "Import text to the current document from a text file."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`N`", "Create new folder."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`O`", "Open a project."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`R`", "Close the document viewer."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`S`", "Save the current project."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`W`", "Close the current project."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`Z`", "Undo move of project tree item."
":kbd:`Ctrl`:kbd:`Shift`:kbd:`Del`", "If in the project tree, move a document to trash, or delete a folder."
":kbd:`F1`", "Open the documentation. This will either open the Qt Assistant, if available, or send you to the documentation website."
":kbd:`F2`", "If in the project tree, edit a document or folder settings. (Same as :kbd:`Ctrl`:kbd:`E`)"
":kbd:`F3`", "Find next occurrence of search word in current document. (Same as :kbd:`Ctrl`:kbd:`G`)"
":kbd:`F5`", "Open the :guilabel:`Build Novel Project` dialog."
":kbd:`F6`", "Open the :guilabel:`Writing Statistics` dialog."
":kbd:`F7`", "Re-run spell checker."
":kbd:`F8`", "Activate :guilabel:`Focus Mode`, hiding the project tree and document viewer."
":kbd:`F9`", "Re-build the project index."
":kbd:`F10`", "Re-build the project outline."
":kbd:`F11`", "Activate full screen mode."
":kbd:`Shift`:kbd:`F1`", "Open the online documentation in the system default browser."
":kbd:`Shift`:kbd:`F3`", "Find previous occurrence of search word in current document. (Same as :kbd:`Ctrl`:kbd:`Shift`:kbd:`G`.)"
":kbd:`Shift`:kbd:`F6`", "Open the :guilabel:`Project Details` dialog."
":kbd:`Return`", "If in the project tree, open a document for editing."
.. note::
On macOS, replace :kbd:`Ctrl` with :kbd:`Cmd`.
.. _a_ui_shortcuts_ins:
Insert Shortcuts
----------------
A set of insert features are also available through shortcuts, but they require a double
combination of key sequences. The insert feature is activated with :kbd:`Ctrl`:kbd:`K`, followed by
a key or key combination for the inserted content.
.. csv-table:: Keyboard Shortcuts
:header: "Shortcut", "Description"
:widths: 40, 60
:class: "tight-table"
":kbd:`Ctrl`:kbd:`K`, :kbd:`−`", "Insert a short dash (en dash)."
":kbd:`Ctrl`:kbd:`K`, :kbd:`_`", "Insert a long dash (em dash)."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`_`", "Insert a horizontal bar (quotation dash)."
":kbd:`Ctrl`:kbd:`K`, :kbd:`~`", "Insert a figure dash (same width as a number)."
":kbd:`Ctrl`:kbd:`K`, :kbd:`1`", "Insert a left single quote."
":kbd:`Ctrl`:kbd:`K`, :kbd:`2`", "Insert a right single quote."
":kbd:`Ctrl`:kbd:`K`, :kbd:`3`", "Insert a left double quote."
":kbd:`Ctrl`:kbd:`K`, :kbd:`4`", "Insert a right double quote."
":kbd:`Ctrl`:kbd:`K`, :kbd:`'`", "Insert a modifier apostrophe."
":kbd:`Ctrl`:kbd:`K`, :kbd:`.`", "Insert an ellipsis."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`'`", "Insert a prime."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`""`", "Insert a double prime."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Return`", "Insert a hard line break."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Space`", "Insert a non-breaking space."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Shift`:kbd:`Space`", "Insert a thin space."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`Space`", "Insert a thin non-breaking space."
":kbd:`Ctrl`:kbd:`K`, :kbd:`*`", "Insert a list bullet."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`−`", "Insert a hyphen bullet (alternative bullet)."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`*`", "Insert a flower mark (alternative bullet)."
":kbd:`Ctrl`:kbd:`K`, :kbd:`%`", "Insert a per mille symbol."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`O`", "Insert a degree symbol."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`X`", "Insert a times sign."
":kbd:`Ctrl`:kbd:`K`, :kbd:`Ctrl`:kbd:`D`", "Insert a division sign."
":kbd:`Ctrl`:kbd:`K`, :kbd:`G`", "Insert a ``@tag`` keyword."
":kbd:`Ctrl`:kbd:`K`, :kbd:`V`", "Insert a ``@pov`` keyword."
":kbd:`Ctrl`:kbd:`K`, :kbd:`F`", "Insert a ``@focus`` keyword."
":kbd:`Ctrl`:kbd:`K`, :kbd:`C`", "Insert a ``@char`` keyword."
":kbd:`Ctrl`:kbd:`K`, :kbd:`P`", "Insert a ``@plot`` keyword."
":kbd:`Ctrl`:kbd:`K`, :kbd:`T`", "Insert a ``@time`` keyword."
":kbd:`Ctrl`:kbd:`K`, :kbd:`L`", "Insert a ``@location`` keyword."
":kbd:`Ctrl`:kbd:`K`, :kbd:`O`", "Insert an ``@object`` keyword."
":kbd:`Ctrl`:kbd:`K`, :kbd:`E`", "Insert an ``@entity`` keyword."
":kbd:`Ctrl`:kbd:`K`, :kbd:`X`", "Insert a ``@custom`` keyword."

View File

@@ -1,50 +0,0 @@
.. _a_notes:
*************
Project Notes
*************
novelWriter doesn't have a database and complicated forms for filling in details about plot
elements, characters, and all sorts of additional information that isn't a part of the novel text
itself. Instead, all such information is saved in notes that are written and maintained just like
all other text in your project.
The relation between all these additional elements is extracted from the documents and notes by the
project indexer, based on the tags and references you set within them.
Using notes is not required, but making at least minimal notes for each plot element, and adding a
tag to them, makes it possible to use the :guilabel:`Outline` feature to see how each element
intersects with each section of the novel itself, and adds clickable cross-references between
documents in the editor and viewer.
.. _a_notes_tags:
Tags in Notes
=============
Each new heading in a note can have a tag associated with it. The format of a tag is
``@tag: tagname``, where tagname is a unique identifier. Tags can then be referenced in the novel
documents, or cross-referenced in other notes, and will show up in the outline view and in the
back-reference panel when a document is being viewed. See :ref:`a_struct_tags` for how to reference
notes.
The syntax highlighter will alert the user that the keyword is correctly used and that the tag is
allowed, that is, the tag is unique. Duplicate tags should be detected as long as the index is up
to date. An invalid tag should have a green wiggly line under it, and will not receive the syntax
colour that valid tags do.
The tag is the only part of these notes that the application uses. The rest of the document content
is there for the writer to use in whatever way they wish. Of course, the content of the documents
can be exported if you want to compile a single document of all your notes, or include them in an
outline.
A note can also reference other notes in the same way novel documents do. When the note is opened
in the view panel, the references become clickable links, making it easier to follow connections in
the plot. Notes don't show up in the outline view though, so referencing between notes is only
meaningful if you want to be able to click-navigate between them.
.. tip::
If you cross-reference between notes and export your project as an HTML document using the
:guilabel:`Build Novel Project` tool, the cross-references become clickable links in the
exported HTML document.

View File

@@ -0,0 +1,231 @@
.. _a_ui_project:
*************
Project Views
*************
This chapter covers in more detail the different project views available in novelWriter.
.. figure:: images/fig_project_tree_detailed.png
The Project Tree as it appears when loading a sample project.
.. _a_ui_tree:
The Project Tree
================
The main window contains a project tree in the left-most panel. It shows the entire structure of
the project, and has four columns.
**Column 1**
The first column shows the icon and label of each folder, document, or note in your project. The
label is not the same as the title you set inside the document. However, the document's label
will appear in the header above the document text itself so you know where in the project an
open document belongs. The icon is selected based on the type of item, and for novel documents,
the level of the first header in the document text.
**Column 2**
The second column shows the word count of the document, or the sum of words of the child items
for folders and documents with sub-documents. If the counts seem incorrect, they can be updated
by rebuilding the :term:`project index` from the :guilabel:`Tools` menu, or by pressing
:kbd:`F9`.
**Column 3**
The third column indicates whether the document is considered active or inactive in the project.
You can use this flag to indicate that a document is still in the project, but should not be
considered an active part of it. When you run the :guilabel:`Build Manuscript` tool, you can
include or exclude documents based on this flag. You can change this value from the
:term:`context menu`.
**Column 4**
The fourth column shows the user-defined status or importance labels you've assigned to each
project item. See :ref:`a_ui_tree_status` for more details on how to uses these labels. You can
change these labels from the :term:`context menu`.
Right-clicking an item in the project tree will open a context menu under the cursor, displaying
a selection of actions that can be performed on the selected item.
At the top of the tree, you will find a set of buttons.
* The first button is a quick links button that will show you a dropdown menu of all the
:term:`root folders<root folder>` in your project. Selecting one will move to that position in
the tree. You can also activate this menu by pressing :kbd:`Ctrl+L`.
* The next two buttons can be used to move items up and down in the project tree. This is the only
way to move root folders.
* The next button opens a dropdown menu for adding new items to the tree. This includes root
folders. You can also activate this dropdown menu by pressing :kbd:`Ctrl+N`.
* The last button is a menu of further actions you can apply to the project tree.
Below the project tree you will find a small details panel showing the full information of the
currently selected item. This panel also includes the latest paragraph and character counts in
addition to the word count.
.. tip::
If you want to set the label of a document to be the same as a header within it, you can
right-click a header in the document when it is open in the editor and select
:guilabel:`Set as Document Name` from the context menu.
.. _a_ui_tree_split_merge:
Splitting and Merging Documents
-------------------------------
Under the :guilabel:`Transform` submenu in the context menu of an item in the project tree, you
will find several options on how to change a document or folder. This includes changing between
document and note, but also splitting them into multiple documents, or merging child items into a
single document.
Splitting Documents
^^^^^^^^^^^^^^^^^^^
.. figure:: images/fig_project_split_tool.png
The :guilabel:`Split Document` dialog.
The :guilabel:`Split Document by Header` option will open a dialog that allows you to split the
selected document into multiple new documents based on the headings it contains. You can select at
which heading level the split is to be performed from the dropdown box. The list box will preview
which headings will be split into new documents.
You are given the option to create a folder for these new documents, and whether or not to create a
hierarchy of documents. That is, put sections under scenes, and scenes under chapters.
The source document *is not* deleted in the process, but you have the option to let the tool move
the source document to the :guilabel:`Trash` folder.
Merging Documents
^^^^^^^^^^^^^^^^^
.. figure:: images/fig_project_merge_tool.png
The :guilabel:`Merge Documents` dialog.
You have two options for merging documents that are child elements of another document. You can
either :guilabel:`Merge Child Items into Self` and :guilabel:`Merge Child Items into New`. The
first option will pull all content of child items and merge them into the parent document, while
the second option will create a new document in the process.
When merging documents in a folder, you only have the latter process is possible, so only the
choice :guilabel:`Merge Documents in Folder` is available.
In either case, the :guilabel:`Merge Documents` dialog will let you exclude documents you don't
want to include, and it also lets you reorder them if you wish.
.. _a_ui_tree_status:
Document Importance and Status
------------------------------
Each document or folder in your project can have either a "Status" or "Importance" flag set. These
are flags that you control and define yourself. novelWriter doesn't do anything with them at all.
To modify the labels, go to their respective tabs in :guilabel:`Project Settings`.
The "Status" flag is intended to tag a :term:`novel document<novel documents>` as for instance a
draft or as completed, and the "Importance" flag is intended to tag character notes, or other
:term:`project notes`, as for instance a main, major, or minor character or story element.
Whether a document uses a "Status" or "Importance" flag depends on which :term:`root folder` it
lives in. If it's in a :guilabel:`Novel` folder, it uses the "Status" flag, otherwise it uses an
"Importance" flag. Some folders, like :guilabel:`Trash` and :guilabel:`Archive` allow both.
.. _a_ui_tree_dnd:
Project Tree Drag & Drop
------------------------
The project tree allows drag & drop to a certain extent to allow you to reorder your documents and
folders. Moving a document in the project tree will affect the text's position when you assemble
your manuscript in the :guilabel:`Manuscript Build` tool.
.. versionadded:: 2.2
You can now select multiple items in the project tree by holding down the :kbd:`Ctrl` or
:kbd:`Shift` key while selecting items.
You can drag and drop documents and regular folders, but not root folders. If you select multiple
items, they can only be dragged and dropped if they are siblings. That is, they have the same
parent item in the project. This is due to the way drag and drop is implemented in the user
interface framework novelWriter is built upon.
Documents and their folders can be rearranged freely within their root folders. If you move a Novel
document out of a Novel folder, it will be converted to a project note. Notes can be moved freely
between all root folders, but keep in mind that if you move a note into a :guilabel:`Novel` root
folder, its "Importance" setting will be switched with a "Status" setting. See
:ref:`a_ui_tree_status`. The old value will not be overwritten though, and should be restored if
you move it back at some point.
Root folders in the project tree cannot be dragged and dropped at all. If you want to reorder them,
you can move them up or down with respect to each other from the arrow buttons at the top of the
project tree, or by pressing :kbd:`Ctrl+Shift+Up` or :kbd:`Ctrl+Shift+Down` when they are selected.
.. _a_ui_tree_novel:
The Novel Tree
==============
.. figure:: images/fig_novel_tree_view.png
A screenshot of the Novel Tree View.
An alternative way to view the project structure is the novel tree. You can switch to this view by
selecting the :guilabel:`Novel Tree View` button in the sidebar. This view is a simplified version
of the view in the :guilabel:`Outline View`. It is convenient when you want to browse the structure
of the story itself rather than the document files.
.. note::
You cannot reorganise the entries in the novel tree, or add any new documents, as that would
imply restructuring the content of the document files themselves. Any such editing must be done
in the project tree. However, you can add new headings to existing documents, or change
references, which will be updated in this view when the document is saved.
.. _a_ui_outline:
Project Outline View
====================
.. figure:: images/fig_outline_view.png
A screenshot of the Novel Outline View.
The project's :guilabel:`Outline View` is available as another view option from the sidebar. The
outline provides an overview of the novel structure, displaying a tree hierarchy of the elements of
the novel, that is, the level 1 to 4 headings representing partitions, chapters, scenes and
sections.
The document containing the heading can also be displayed as a separate column, as well as the line
number where the heading is defined. Double-clicking an entry will open the corresponding document
in the editor and switch to :guilabel:`Project Tree View` mode.
You can select which novel folder to display from the dropdown menu. You can optionally also choose
to show a combination of all novel folders.
.. note::
Since the internal structure of the novel does not depend directly on the folder and document
structure of the project tree, this view will not necessarily look the same, depending on how
you choose to organise your documents. See the :ref:`a_struct` page for more details.
Various meta data and information extracted from :term:`tags<tag>` can be displayed in columns in
the outline. A default set of such columns is visible, but you can turn on or off more columns from
the menu button in the toolbar. The order of the columns can also be rearranged by dragging them to
a different position. You column settings are saved between sessions on a per-project basis.
.. note::
The :guilabel:`Title` column cannot be disabled or moved.
The information viewed in the outline is based on the :term:`project index`. While novelWriter does
its best to keep the index up to date when contents change, you can always rebuild it manually by
pressing :kbd:`F9` if something isn't right.
The outline view itself can be regenerated by pressing the refresh button. By default, the content
is refreshed each time you switch to this view.
The :guilabel:`Synopsis` column of the outline view takes its information from a specially
formatted comment. See :ref:`a_fmt_comm`.

View File

@@ -0,0 +1,133 @@
.. _a_prjfmt:
**********************
Project Format Changes
**********************
.. _File Format Spec 1.5: _static/fileformatspec15.pdf
.. _documentation: https://docs.novelwriter.io/
Most of the changes to the file formats over the history of novelWriter have no impact on the
user side of things. The project files are generally updated automatically. However, some of the
changes require minor actions from the user.
The key changes in the formats are listed in this chapter, as well as the user actions required,
where applicable.
.. only:: not html
A full project file format specification is available in the online documentation_.
.. caution::
When you update a project from one format version to the next, the project can no longer be
opened by a version of novelWriter prior to the version where the new file format was
introduced. You will get a notification about any updates to your project file format and will
have the option to decline the upgrade.
.. only:: html
**For Developers**
A full description of the current file format is available in the
:download:`File Format Spec 1.5 <fileformatspec15.pdf>`
document, available as a PDF. This document is intended for contributors to novelWriter, those
building project conversion tools, either to or from tne novelWriter format, and for those who
wish to make their own templating system.
.. _a_prjfmt_1_5:
Format 1.5 Changes
==================
This project format was introduced in novelWriter version 2.0 RC 2.
This is a modification of the 1.4 format. It makes the XML more consistent in that meta data have
been moved to their respective section nodes as attributes, and key/value settings now have a
consistent format. Logical flags are saved as yes/no instead of Python True/False, and the main
heading of the document is now saved to the item rather than in the index. The conversion is done
automatically the first time a project is loaded. No user action is required.
.. _a_prjfmt_1_4:
Format 1.4 Changes
==================
This project format was introduced in novelWriter version 2.0 RC 1. Since this was a release
candidate, it is unlikely that your project uses it, but it may be the case if you've installed a
pre-release.
This format changes the way project items (folders, documents and notes) are stored. It is a more
compact format that is simpler and faster to parse, and easier to extend. The conversion is done
automatically the first time a project is loaded. No user action is required.
.. _a_prjfmt_1_3:
Format 1.3 Changes
==================
This project format was introduced in novelWriter version 1.5.
With this format, the number of document layouts was reduced from eight to two. The conversion of
document layouts is performed automatically when the project is opened.
Due to the reduction of layouts, some features that were previously controlled by these layouts
will be lost. These features are instead now controlled by syntax codes, so to recover these
features, some minor modification must be made to select documents by the user.
The manual changes the user must make should be very few as they apply to document layouts that
should be used only a few places in any given project. These are as follows:
**Title Pages**
* The formatting of the level one title on the title page must be changed from ``# Title Text`` to
``#! Title Text`` in order to retain the previous functionality. See :ref:`a_fmt_head`.
* Any text that was previously centred on the page must be manually centred using the text
alignment feature. See :ref:`a_fmt_align`.
**Unnumbered Chapters**
* Since the specific layout for unnumbered chapters has been dropped, such chapters must all use
the ``##! Chapter Name`` formatting code instead of ``## Chapter Name``. This also includes
chapters marked by an asterisk: ``## *Chapter Name``, as this feature has also been dropped.
See :ref:`a_fmt_head`.
**Plain Pages**
* The layout named "Plain Page" has also been removed. The only feature of this layout was that it
ensured that the content always started on a fresh page. In the new format, fresh pages can be
set anywhere in the text with the ``[NEW PAGE]`` code. See :ref:`a_fmt_break`.
.. _a_prjfmt_1_2:
Format 1.2 Changes
==================
This project format was introduced in novelWriter version 0.10.
With this format, the way auto-replace entries were stored in the main project XML file changed.
.. _a_prjfmt_1_1:
Format 1.1 Changes
==================
This project format was introduced in novelWriter version 0.7.
With this format, the ``content`` folder was introduced in the project storage. Previously, all
novelWriter documents were saved in a series of folders numbered from ``data_0`` to ``data_f``.
It also reduces the number of meta data and cache files. These files are automatically deleted if
an old project is opened. This was also when the Table of Contents file was introduced.
.. _a_prjfmt_1_0:
Format 1.0 Changes
==================
This is the original file format and project structure. It was in use up to version 0.6.3.

View File

@@ -1,335 +0,0 @@
.. _a_proj:
**************
Novel Projects
**************
A new project can be created from the :guilabel:`Project` menu by selecting
:guilabel:`New Project`. This will open the :guilabel:`New Project Wizard` that will assist you in
creating a barebone project suited to your needs. A novelWriter project requires a dedicated folder
for storing its files on the local file system. See :ref:`a_tech` for further details on how files
are organised.
A list of recently opened projects is maintained, and displayed in the :guilabel:`Open Project`
dialog. A project can be removed from this list by selecting it and pressing the :kbd:`Del` key or
by clicking the :guilabel:`Remove` button.
Project-specific settings are available in :guilabel:`Project Settings` in the :guilabel:`Project`
menu. See further details below in the :ref:`a_proj_settings` section. Details about the project,
including word counts, and a table of contents with word and page counts, is available through the
:guilabel:`Project Details` dialog.
.. _a_proj_roots:
Project Roots
=============
Projects are structured into a set of top level folders called *root folders*. They are visible in
the project tree at the left side of the main window.
The core novel documents go into a root folder of type :guilabel:`Novel`. Other supporting
documents go into the other root folders. These other root folder types are intended for your notes
on the various elements of your story. Using them is of course entirely optional.
A new project may not have all of the root folders present, but you can add the ones you want from
:guilabel:`Create Root Folder` in the :guilabel:`Project` menu.
The root folders are intended for the following use, but aside from the :guilabel:`Novel` folder,
no restrictions are enforced by the application. You can use them however you want.
:guilabel:`Novel`
This is the root folder of all text that goes into the final novel. This class of documents have
other rules and features than other documents in the project. See :ref:`a_struct` for more
details.
:guilabel:`Plot`
This is the root folder where main plots can be outlined. It is optional, but adding at least
dummy notes can be useful in order to tag plot elements for the Outline view. Tags in this
folder can be references using the ``@plot`` keyword.
:guilabel:`Characters`
Character notes go in this root folder. These are especially important if one wants to use the
Outline view to see which character appears where, and which part of the story is told from a
specific character's point-of-view or focusing on a particular character's storyline. Tags in
this folder can be referenced using the ``@pov`` keyword for point-of-view characters,
``@focus`` for a focus character, or the ``@char`` keyword for any other characters.
:guilabel:`Locations`
The locations folder is for various scene locations that you want to track. Tags in this folder
can be references using the ``@location`` keyword.
:guilabel:`Timeline`
If the story has multiple plot timelines or jumps in time within the same plot, this class of
notes can be used to track this. Tags in this folder can be references using the ``@time``
keyword.
:guilabel:`Objects`
Important objects in the story, for instance important objects that change hands often, can be
tracked here. Tags in this folder can be references using the ``@object`` keyword.
:guilabel:`Entities`
Does your plot have many powerful organisations or companies? Or other entities that are part of
the plot? They can be organised here. Tags in this folder can be references using the
``@entity`` keyword.
:guilabel:`Custom`
The custom root folder can be used for tracking anything else not covered by the above options.
Tags in this folder can be references using the ``@custom`` keyword.
The root folders correspond to the categories of tags that can be used to reference them. For more
information about the tags listed, see :ref:`a_struct_tags`.
.. tip::
You can rename root folders to whatever you want. The first character in the :guilabel:`Flags`
column in the project tree will still indicate what type they are, and so will the icon if you
are using one of the optional icon sets.
.. _a_proj_roots_del:
Deleted Documents
-----------------
Deleted documents will be moved into a special :guilabel:`Trash` root folder. Documents in the
trash folder can then be deleted permanently, either individually, or by emptying the trash from
the menu. Documents in the trash folder are removed from the project index and cannot be
referenced.
Folders and root folders can only be deleted when they are empty. Recursive deletion is not
supported. A document or a folder can be deleted from the :guilabel:`Project` menu, or by pressing
:kbd:`Ctrl`:kbd:`Shift`:kbd:`Del`.
.. _a_proj_roots_out:
Archived Documents (Outtakes)
-----------------------------
If you don't want to delete a document, or put it in the :guilabel:`Trash` folder where it may be
deleted, but still want it out of your main project tree, you can create an :guilabel:`Outtakes`
root folder from the :guilabel:`Project` menu. You are not allowed to move entire folders to this
root folder, only documents. If you need folders in it to organise your documents, you can of
course create new ones there.
You can drag any document to this folder and preserve its settings. The document will always be
excluded from the :guilabel:`Build Novel Project` builds. It is also removed from the project
index, so the tags and references defined in it will not show up anywhere else.
.. _a_proj_roots_orph:
Recovered Documents
-------------------
If novelWriter crashes or otherwise exits without saving the project state, or if you're using a
file synchronisation tool that runs out of sync, there may be files in the project folder that
aren't tracked in the core project file. These files, when discovered, are recovered and added back
into the project if possible.
The discovered files are scanned for meta information that gives clues as to where the document may
previously have been located in the project. The project loading routines will try to put them back
as close as possible to this location, if it still exists. Generally, it will be appended to the
end of the folder where it previously was located. If that folder doesn't exist, it will try to add
it to the correct root folder. If it cannot figure out which root folder is correct, the document
will be added to the :guilabel:`Novel` root folder. Only if the :guilabel:`Novel` folder is
missing will it give up.
If the title of the document can be recovered, the word "Recovered:" will be added as a prefix. If
the title cannot be determined, the document will be named "Recovered File N" where N is a
sequential number.
.. _a_proj_roots_lock:
Project Lockfile
----------------
To prevent lost documents caused by file conflicts when novelWriter projects are synced with file
synchronisation tools, a project lockfile is written to the project folder. If you try to open a
project which has such a file present, you will be presented with a warning, and some information
about where else novelWriter thinks the project is also open. You will be give the option to ignore
this warning, and continue opening the project at your own risk.
.. note::
If, for some reason, novelWriter crashes, the lock file may remain even if there are no other
instances keeping the project open. In such a case it is safe to ignore the lock file warning
when re-opening the project.
.. warning::
If you choose to ignore the warning and continue opening the project, and multiple instances of
the project are in fact open, you are likely to cause inconsistencies and create diverging
project files, potentially resulting in loss of data and orphaned files. You are not likely to
lose any actual text unless both instances have the same document open in the editor, and
novelWriter will try to resolve inconsistencies the next time you open the project.
.. _a_proj_roots_dirs:
Using Folders in the Project Tree
---------------------------------
Folders, aside from root folders, have no structural significance to the project. When novelWriter
is processing the documents in the novel, like for instance during export, these folders are
ignored. Only the order of the documents themselves matter.
The folders are there purely as a way for the user to organise the documents in meaningful sections
and to be able to collapse and hide them in the project tree when you're not working on those
documents.
.. tip::
You can use folders to sort your scene documents into chapters. You will still need to add a
chapter document as the first item of your chapter folder, and the scene documents as the
following items. Another way to use folders is to make a folder for each act.
.. _a_proj_files:
Project Documents
=================
New documents can be created from the :guilabel:`Document` menu, or by pressing :kbd:`Ctrl`:kbd:`N`
while in the project tree. This will create a new, empty document, and open the :guilabel:`Item
Settings` dialog where the document label and various other settings can be changed. This dialog
can also be opened again later from either the :guilabel:`Project` menu, selecting :guilabel:`Edit
Project Item`, or by pressing :kbd:`Ctrl`:kbd:`E` or :kbd:`F2` with the item selected.
The layout of the document is also defined here. For Novel documents, the full list of layout
options are available. For non-Novel documents, only :guilabel:`Note` is available. See
:ref:`a_struct_layout` for more details.
You can also select whether the document is by default included when building the project. This
setting can be overridden in the :guilabel:`Build Novel Project` tool if you wish to include them
anyway. This is covered in the :ref:`a_export_files` section. You can also toggle the included
state of a document from the right-click context menu.
.. _a_proj_files_counts:
Word Counts
-----------
A character, word and paragraph count is maintained for each document, as well as for each section
of a document following a header. The word count, and change of words in the current session, is
displayed in the footer of any document open in the editor, and all stats are shown in the details
panel below the project tree for any document selected in the project or novel tree.
The word counts are not updated in real time, but run in the background every five seconds for as
long as the document is being actively edited.
A total project word count is displayed in the status bar. The total count depends on the sum of
the values in the project tree, which again depend on an up to date index. If the counts seem
wrong, a full project word recount can be initiated by rebuilding the project's index. Either form
the :guilabel:`Tools` menu, or by pressing :kbd:`F9`.
.. _a_proj_settings:
Project Settings
================
The :guilabel:`Project Settings` can be accessed from the :guilabel:`Project` menu, or by pressing
:kbd:`Ctrl`:kbd:`Shift`:kbd:`,`. This will open a dialog box, with a set of tabs.
Settings Tab
------------
The :guilabel:`Settings` tab holds the project title and author settings.
The :guilabel:`Working Title` can be set to a different title than the :guilabel:`Book Title`. The
difference between them is simply that the :guilabel:`Working Title` is used for the GUI (main
window title) and for generating the backup files. The intention is that the :guilabel:`Working
Title` should remain unchanged throughout the project, otherwise the name of exported files and
backup files may change too.
The :guilabel:`Book Title` and :guilabel:`Book Authors` settings are currently not used for
anything, so setting then is just for the benefit of the author. Future features may be using them,
and they are exported on some export formats in the :guilabel:`Build Novel Project` tool.
If your project is in a different language than your main spell checking is set to, you can
override the default spell checking language here. You can also override the automatic backup
setting.
Status and Importance Tabs
--------------------------
Each document or folder of type :guilabel:`Novel` can be given a status level, signified by a
coloured icon, and each document or folder of the remaining types can be given an importance level.
These are colour coded icons and labels that can be applied to each document or folder.
These are purely there for the user's convenience, and you are not required to use them for any
other features to work. No other part of novelWriter accesses this information. The intention is to
use these to indicate at what stage of completion each novel document is, or how important the
content of a note is to the plot. You don't have to use them this way, that's just what they were
intended for, but you can make them whatever you want.
See also :ref:`a_ui_tree_status`.
.. note::
The status or importance level currently in use by one or more documents cannot be deleted, but
they can be edited.
Auto-Replace Tab
----------------
A set of automatically replaced keywords can be added in this tab. The keywords in the left column
will be replaced by the text in the right column when documents are opened in the viewer. They will
also be applied to exports.
The auto-replace feature will replace text in angle brackets that are in this list. The syntax
highlighter will add an alternate colour to text marching the syntax, but it doesn't check if the
text is in this list.
.. note::
A keyword cannot contain spaces. The angle brackets are added by default, and when used in the
text are a part of the keyword to be replaced. This is to ensure that parts of the text aren't
unintentionally replaced by the content of the list.
.. _a_proj_backup:
Backup
======
An automatic backup system is built into novelWriter. In order to use it, a backup path to where
the backup files are to be stored must be provided in :guilabel:`Preferences`.
Backups can be run automatically when a project is closed, which also implies it is run when the
application itself is closed. Backups are date stamped zip files of the entire project folder, and
are stored in a subfolder of the backup path. The subfolder will have the same name as the project
:guilabel:`Working Title` set in :ref:`a_proj_settings`.
The backup feature, when configured, can also be run manually from the :guilabel:`Tools` menu.
It is also possible to disable automated backup for a given project in :guilabel:`Project
Settings`.
.. note::
For the backup to be able to run, the :guilabel:`Working Title` must be set in
:guilabel:`Project Settings`. This value is used to generate the folder name for the zip files.
Without it, the backup will not run at all, but it will produce a warning message.
.. _a_proj_stats:
Writing Statistics
==================
When you work on a project, a log file records when you opened it, when you closed it, and the
total word counts of your novel documents and notes at the end of the session. You can view this
file in the ``meta`` folder in the directory where you saved your project. The file is named
``sessionStats.log``.
A tool to view the content of this file is available in the :guilabel:`Tools` menu under
:guilabel:`Writing Statistics`. You can also launch it by pressing :kbd:`F6`.
The tool will show a list of all your sessions, and a set of filters to apply to it. You can also
export the filtered data to a JSON file or to a CSV file that can be opened by a spreadsheet
application like for instance Libre Office Calc.
As of version 1.2, the log file also stores how much of the session time was spent idle. The
definition of idle here is that the novelWriter main window loses focus, and the user hasn't made
any changes to the currently open document in five minutes. The number of minutes can be altered in
:guilabel:`Preferences`.

View File

@@ -0,0 +1,198 @@
.. _a_kb:
******************
Keyboard Shortcuts
******************
Most features in novelWriter are available as keyboard shortcuts. This is a reference list of those
shortcuts. Most of them are also listed in the application's user interface.
.. note::
On MacOS, replace :kbd:`Ctrl` with :kbd:`Cmd`.
.. _a_kb_main:
Main Window Shortcuts
=====================
.. csv-table::
:header: "Shortcut", "Description"
":kbd:`F1`", "Open the online user manual"
":kbd:`F5`", "Open the :guilabel:`Build Manuscript` tool"
":kbd:`F6`", "Open the :guilabel:`Writing Statistics` tool"
":kbd:`F8`", "Toggle :guilabel:`Focus Mode`"
":kbd:`F9`", "Re-build the project index"
":kbd:`F11`", "Toggle full screen mode"
":kbd:`Ctrl+,`", "Open the :guilabel:`Preferences` dialog"
":kbd:`Ctrl+E`", "Switch focus to the document editor"
":kbd:`Ctrl+T`", "Switch focus to the project/novel tree"
":kbd:`Ctrl+Q`", "Exit novelWriter"
":kbd:`Ctrl+Shift+,`", "Open the :guilabel:`Project Settings` dialog"
":kbd:`Ctrl+Shift+O`", "Open a project"
":kbd:`Ctrl+Shift+S`", "Save the current project"
":kbd:`Ctrl+Shift+T`", "Switch focus to the outline view"
":kbd:`Ctrl+Shift+W`", "Close the current project"
":kbd:`Shift+F1`", "Open the local user manual (PDF) if it is available"
":kbd:`Shift+F6`", "Open the :guilabel:`Project Details` dialog"
.. _a_kb_tree:
Project Tree Shortcuts
======================
.. csv-table::
:header: "Shortcut", "Description"
":kbd:`F2`", "Edit the label of the selected item"
":kbd:`Return`", "Open the selected document in the editor"
":kbd:`Alt+Up`", "Jump or go to the previous item at same level in the tree"
":kbd:`Alt+Down`", "Jump or go to the next item at same level in the tree"
":kbd:`Alt+Left`", "Jump to the parent item in the tree"
":kbd:`Alt+Right`", "Jump to the first child item in the project tree"
":kbd:`Ctrl+.`", "Open the context menu on the selected item"
":kbd:`Ctrl+L`", "Open the :guilabel:`Quick Links` menu"
":kbd:`Ctrl+N`", "Open the :guilabel:`Create New Item` menu"
":kbd:`Ctrl+O`", "Open selected document"
":kbd:`Ctrl+R`", "Open the selected document in the viewer"
":kbd:`Ctrl+Up`", "Move selected item one step up in the tree"
":kbd:`Ctrl+Down`", "Move selected item one step down in the tree"
":kbd:`Ctrl+Shift+Del`", "Move the selected item to Trash"
":kbd:`Ctrl+Shift+Z`", "Undo the last move of a project item, if possible"
.. _a_kb_editor:
Document Editor Shortcuts
=========================
Text Search Shortcuts
---------------------
.. csv-table::
:header: "Shortcut", "Description"
":kbd:`F3`", "Find the next occurrence of the search word"
":kbd:`Ctrl+F`", "Open the search bar and search for the selected word, if any is selected"
":kbd:`Ctrl+G`", "Find the next occurrence of the search word"
":kbd:`Ctrl+H`", "Open the search tool and populate with the selected word (Mac :kbd:`Cmd+=`)"
":kbd:`Ctrl+Shift+1`", "Replace selected occurrence of the search word, and move to the next"
":kbd:`Ctrl+Shift+G`", "Find the previous occurrence of the search word"
":kbd:`Shift+F3`", "Find the previous occurrence of the search word"
Text Formatting Shortcuts
-------------------------
.. csv-table::
:header: "Shortcut", "Description"
":kbd:`Ctrl+'`", "Wrap selected text, or word under cursor, in single quotes"
":kbd:`Ctrl+""`", "Wrap selected text, or word under cursor, in double quotes"
":kbd:`Ctrl+/`", "Toggle block format as comment"
":kbd:`Ctrl+0`", "Remove block formatting for block under cursor"
":kbd:`Ctrl+1`", "Change block format to header level 1"
":kbd:`Ctrl+2`", "Change block format to header level 2"
":kbd:`Ctrl+3`", "Change block format to header level 3"
":kbd:`Ctrl+4`", "Change block format to header level 4"
":kbd:`Ctrl+5`", "Change block alignment to left-aligned"
":kbd:`Ctrl+6`", "Change block alignment to centred"
":kbd:`Ctrl+7`", "Change block alignment to right-aligned"
":kbd:`Ctrl+8`", "Add a left margin to the block"
":kbd:`Ctrl+9`", "Add a right margin to the block"
":kbd:`Ctrl+B`", "Format selected text, or word under cursor, with strong emphasis (bold)"
":kbd:`Ctrl+D`", "Strike through selected text, or word under cursor"
":kbd:`Ctrl+I`", "Format selected text, or word under cursor, with emphasis (italic)"
":kbd:`Ctrl+Shift+/`", "Remove block formatting for block under cursor"
Other Editor Shortcuts
----------------------
.. csv-table::
:header: "Shortcut", "Description"
":kbd:`F7`", "Re-run the spell checker"
":kbd:`Ctrl+.`", "Open the context menu at the current cursor location"
":kbd:`Ctrl+A`", "Select all text in the document"
":kbd:`Ctrl+C`", "Copy selected text to clipboard"
":kbd:`Ctrl+K`", "Activate the insert commands (see list in :ref:`a_kb_ins`)"
":kbd:`Ctrl+R`", "Open or reload the current document in the viewer"
":kbd:`Ctrl+S`", "Save the current document"
":kbd:`Ctrl+V`", "Paste text from clipboard to cursor position"
":kbd:`Ctrl+W`", "Close the current document"
":kbd:`Ctrl+X`", "Cut selected text to clipboard"
":kbd:`Ctrl+Y`", "Redo latest undo"
":kbd:`Ctrl+Z`", "Undo latest changes"
":kbd:`Ctrl+Backspace`", "Delete the word before the cursor"
":kbd:`Ctrl+Del`", "Delete the word after the cursor"
":kbd:`Ctrl+F7`", "Toggle spell checking"
":kbd:`Ctrl+Return`", "Open the tag or reference under the cursor in the viewer"
":kbd:`Ctrl+Shift+A`", "Select all text in the current paragraph"
":kbd:`Ctrl+Shift+I`", "Import text to the current document from a text file"
.. _a_kb_ins:
Insert Shortcuts
----------------
A set of insert features are also available through shortcuts, but they require a double
combination of key sequences. The insert feature is activated with :kbd:`Ctrl+K`, followed by
a key or key combination for the inserted content.
.. csv-table::
:header: "Shortcut", "Description"
":kbd:`Ctrl+K`, :kbd:`Space`", "Insert a non-breaking space"
":kbd:`Ctrl+K`, :kbd:`_`", "Insert a long dash (em dash)"
":kbd:`Ctrl+K`, :kbd:`.`", "Insert an ellipsis"
":kbd:`Ctrl+K`, :kbd:`'`", "Insert a modifier apostrophe"
":kbd:`Ctrl+K`, :kbd:`*`", "Insert a list bullet"
":kbd:`Ctrl+K`, :kbd:`%`", "Insert a per mille symbol"
":kbd:`Ctrl+K`, :kbd:`~`", "Insert a figure dash (same width as a number)"
":kbd:`Ctrl+K`, :kbd:`−`", "Insert a short dash (en dash)"
":kbd:`Ctrl+K`, :kbd:`1`", "Insert a left single quote"
":kbd:`Ctrl+K`, :kbd:`2`", "Insert a right single quote"
":kbd:`Ctrl+K`, :kbd:`3`", "Insert a left double quote"
":kbd:`Ctrl+K`, :kbd:`4`", "Insert a right double quote"
":kbd:`Ctrl+K`, :kbd:`C`", "Insert a ``@char`` keyword"
":kbd:`Ctrl+K`, :kbd:`E`", "Insert an ``@entity`` keyword"
":kbd:`Ctrl+K`, :kbd:`F`", "Insert a ``@focus`` keyword"
":kbd:`Ctrl+K`, :kbd:`G`", "Insert a ``@tag`` keyword"
":kbd:`Ctrl+K`, :kbd:`H`", "Insert a short description comment"
":kbd:`Ctrl+K`, :kbd:`L`", "Insert a ``@location`` keyword"
":kbd:`Ctrl+K`, :kbd:`O`", "Insert an ``@object`` keyword"
":kbd:`Ctrl+K`, :kbd:`P`", "Insert a ``@plot`` keyword"
":kbd:`Ctrl+K`, :kbd:`S`", "Insert a synopsis comment"
":kbd:`Ctrl+K`, :kbd:`T`", "Insert a ``@time`` keyword"
":kbd:`Ctrl+K`, :kbd:`V`", "Insert a ``@pov`` keyword"
":kbd:`Ctrl+K`, :kbd:`X`", "Insert a ``@custom`` keyword"
":kbd:`Ctrl+K`, :kbd:`Ctrl+Space`", "Insert a thin non-breaking space"
":kbd:`Ctrl+K`, :kbd:`Ctrl+_`", "Insert a horizontal bar (quotation dash)"
":kbd:`Ctrl+K`, :kbd:`Ctrl+'`", "Insert a prime"
":kbd:`Ctrl+K`, :kbd:`Ctrl+""`", "Insert a double prime"
":kbd:`Ctrl+K`, :kbd:`Ctrl+*`", "Insert a flower mark (alternative bullet)"
":kbd:`Ctrl+K`, :kbd:`Ctrl+−`", "Insert a hyphen bullet (alternative bullet)"
":kbd:`Ctrl+K`, :kbd:`Ctrl+D`", "Insert a division sign"
":kbd:`Ctrl+K`, :kbd:`Ctrl+O`", "Insert a degree symbol"
":kbd:`Ctrl+K`, :kbd:`Ctrl+X`", "Insert a times sign"
":kbd:`Ctrl+K`, :kbd:`Shift+Space`", "Insert a thin space"
.. _a_kb_viewer:
Document Viewer Shortcuts
=========================
.. csv-table::
:header: "Shortcut", "Description"
":kbd:`Alt+Left`", "Move backward in the view history"
":kbd:`Alt+Right`", "Move forward in the view history"
":kbd:`Ctrl+C`", "Copy selected text to clipboard"
":kbd:`Ctrl+Shift+A`", "Select all text in the current paragraph"
":kbd:`Ctrl+Shift+R`", "Close the document viewer"

View File

@@ -1,250 +0,0 @@
.. _a_struct:
***************
Novel Structure
***************
This section covers the structure of a novel project.
It concerns documents under the :guilabel:`Novel` type root folder only. There are some
restrictions and features that only apply to these types of documents.
.. _a_struct_heads:
Importance of Headings
======================
Subfolders under root folders have no impact on the structure of the novel itself. The structure is
instead dictated by the heading level of the headers within the documents.
Four levels of headings are supported, signified by the number of hashes (``#``) preceding the
title. See also the :ref:`a_ui_md` section for more details about the markdown syntax.
.. note::
The header levels are not only important when generating the exported novel file, they are also
used by the indexer when building the outline tree in the :guilabel:`Outline` tab as well as the
:guilabel:`Novel` tab of the project tree. Each heading also starts a new region where new
references and tags can be defined.
The different header levels are interpreted as specific section types of the novel in the following
way:
``# Header1``
Header level one signifies that the text refers to either the novel title or the name of a top
level partition. The latter is useful when you want to split the manuscript up into books,
parts, or acts.
``## Header2``
Header level two signifies a chapter level partition. Each time you want to start a new chapter,
you must add such a heading. If you choose to split your manuscript up into one document per
scene, you need a single chapter document with just the heading. You can of course also add a
synopsis and reference keywords to the chapter document. If you want to open the chapter with a
quote or other introductory text that isn't part of a scene, this is also where you'd put that
text.
``### Header3``
Header level three signifies a scene level partition. You must provide a title text, but the
title text can be replaced with a scene separator or just skipped entirely when you export your
manuscript.
``#### Header4``
Header level four signifies a sub-scene level partition, usually called a "section" in the
documentation and the user interface. These can be useful if you want to change tag references
mid-scene, like if you change the point-of-view character. You are free to use sections as you
wish, and can filter them out of the final manuscript just like with scene titles.
.. tip::
There are multiple options of how to process novel titles when exporting the manuscript. For
instance, chapter numbers can be applied automatically, and so can scene numbers if you want
them in a draft manuscript. See the :ref:`a_export` page for more details.
.. _a_struct_heads_unnum:
Unnumbered Chapter Headings
---------------------------
If you use layout types for your documents, the automatic numbering feature for your chapters is
controlled by whether you use the :guilabel:`Chapter` or :guilabel:`Unnumbered` layout type for
your document. However, if you have a different document layout where this isn't practical, you can
also switch off chapter numbering for a chapter by making the first character of the chapter title
an asterisk (``*``). Like so:
``## *Unnumbered Chapter Title``
The leading asterisk is only considered by the :guilabel:`Build Novel Project` tool, and will be
removed before the title is inserted at the location of the ``%title%`` label. See the
:ref:`a_export` page for more details.
.. note::
If you need the first character of the title to be an actual asterisk, you must escape it:
``\*``.
.. _a_struct_tags:
Tag References
==============
Each text partition, indicated by a heading of any level, can contain references to tags set in the
supporting notes of the project. The references are gathered by the indexer and used to generate an
outline view on the :guilabel:`Outline` tab of how the different parts of the novel are connected.
This section covers how to set references to tags. See :ref:`a_notes_tags` for how to define tags
the references can point to.
References and tags are also clickable in the document editor and viewer, making it easy to
navigate between reference notes while writing. Clicked links are always opened in the view panel.
References are set as a keyword and a list of corresponding tags. The valid keywords are listed
below. The format of a reference line is ``@keyword: value1, [value2] ... [valueN]``. All keywords
allow multiple values.
``@pov``
The point-of-view character for the current section. The target must be a note tag in the
:guilabel:`Character` type root folder.
``@focus``
The character that has the focus for the current section. This can be used in cases where the
focus is not a point-of-view character. The target must be a note tag in the
:guilabel:`Character` type root folder.
``@char``
Other characters in the current section. The target must be a note tag in the
:guilabel:`Character` type root folder. This should not include the point-of-view character.
``@plot``
The plot or subplot advanced in the current section. The target must be a note tag in the
:guilabel:`Plot` type root folder.
``@time``
The timelines touched by the current section. The target must be a note tag in the
:guilabel:`Timeline` type root folder.
``@location``
The location the current section takes place in. The target must be a note tag in the
:guilabel:`Locations` type root folder.
``@object``
Objects present in the current section. The target must be a note tag in the :guilabel:`Object`
type root folder.
``@entity``
Entities present in the current section. The target must be a note tag in the
:guilabel:`Entities` type root folder.
``@custom``
Custom references in the current section. The target must be a note tag in a :guilabel:`Custom`
type root folder.
The syntax highlighter will alert the user that the tags and references are used correctly, and
that the tags referenced exist.
The highlighter may be mistaken if the index of defined tags is out of date. If so, press :kbd:`F9`
to regenerate it, or select :guilabel:`Rebuild Index` from the :guilabel:`Tools` menu. In general,
the index for a document is regenerated when it is saved, so this shouldn't normally be necessary.
.. _a_struct_layout:
Novel Document Layout
=====================
All documents in the project can have a layout format set. These layouts are important when the
project is exported as they indicate how to treat the content in terms of text formatting,
headings, and page breaks. The layout for each document is indicated as the last set of characters
in the :guilabel:`Flags` column of the project tree.
Not all layout types are actually treated differently, they also help to indicate what each
document is intended for in your project. The :guilabel:`Book` layout is a generic novel document
layout that is formatted identically to :guilabel:`Chapter` and :guilabel:`Scene` layout documents,
but may help to indicate what each document does in your project.
You can for instance lay out your project using :guilabel:`Book` documents for each act, and then
later split those into chapter or scene documents by using the :guilabel:`Split Document` tool.
Scenes can also be contained within :guilabel:`Chapter` type documents, but you lose the drag and
drop feature that comes with having them in separate documents if you organise them this way.
Some layouts *do* have implications on how the project is exported. Documents with layout
:guilabel:`Title Page` and :guilabel:`Partition` have all headings and text centred, while the
:guilabel:`Unnumbered` layout disables the automatic chapter numbering feature for everything
contained within it. The latter is convenient for Prologue and Epilogue type chapters.
The above layout formats are only usable in the Novel root folder. Documents that are not a part of
the novel itself should have the :guilabel:`Note` layout. These documents are not getting any
special formatting, and it is possible to collectively filter them out during export. Notes can be
used anywhere in the project, also in the :guilabel:`Novel` root folder.
Below is an overview of all available layout formats.
:guilabel:`Title Page`
The title page layout. The title should be formatted as a heading level one. All text is centred
on export.
:guilabel:`Plain Page`
A plain page layout useful for instance for front matter pages. Heading levels are ignored for
this layout format, and so are formatting options like :guilabel:`Justify Text`. The page is
exported with a page break before it.
:guilabel:`Book`
This is the generic novel format that in principle can be used for all novel documents. Since
the internal structure of the novel is controlled by the heading levels, this layout will
produce the same result as a collection of :guilabel:`Partition`, :guilabel:`Chapter` and
:guilabel:`Scene` layout documents. However, it does not provide the functionality of the
:guilabel:`Unnumbered` layout format by default, but this can still be achieved by prefixing the
chapter title with an asterisk (``*``). See :ref:`a_struct_heads_unnum` for more details.
:guilabel:`Partition`
A partition can be used to split the novel into parts. Partition titles are indicated with a
level one heading. You can also add text and meta data to the page. The :guilabel:`Partition`
layout will in addition force a page break before the heading, and centre all content on the
page.
:guilabel:`Chapter`
Signifies the start of a new chapter. If the text itself is contained in scene documents, these
documents should only contain the title, comments, synopsis, and tag references for characters,
plot, etc. The heading for chapters should be level two. If you need an opening text, like a
quote or other leading text before the first scene, this is also where you'd want to add this
text.
:guilabel:`Unnumbered`
Same as :guilabel:`Chapter`, but when exporting the project, and automatic chapter numbering is
enabled, documents with this layout will not increment and apply a chapter number. It also has a
separate title formatting setting. This makes the layout suitable for Prologue and Epilogue type
chapters.
:guilabel:`Scene`
Used for scenes. This document should have a header of level three. Further sections can have
headers of level four, but there are no layout specifically for sections.
:guilabel:`Note`
A generic document that is optionally ignored when the novel project is exported. Use this
layout for descriptions of content in the supporting root folders. Notes can also be added to
the :guilabel:`Novel` root folder if you need to insert notes there. Note headers receive no
special formatting when building the project. They are always exported as-is.
.. note::
The layout granularity is entirely optional. In principle, you can write the entire novel in a
single document with layout :guilabel:`Book`. You can also have a single document per chapter if
that suits you better. The :guilabel:`Outline` will show your structure of chapters and scenes
regardless of how your documents are organised. So will the novel tree.
.. tip::
You can always start writing with a coarse layout with one or a few documents, and then later
use the split tool to automatically split the documents into separate chapter and scene
documents. The split tool will try to select the correct layout for each of the new documents.
.. _a_struct_layout_auto:
Novel Layout Automation
-----------------------
When a document is saved from the document editor, novelWriter will check if the level of the first
header of the document matches the selected document layout. If the header level is inconsistent
with the layout, the layout will automatically be corrected if it can be unambiguously determined.
This means that for instance saving a document with header level three, when the layout is set to
:guilabel:`Chapter`, the layout will automatically be changed to :guilabel:`Scene`. If, however,
the layout was set to :guilabel:`Book`, no change will be made because the :guilabel:`Book` layout
is not associated with a specific header level.

View File

@@ -4,10 +4,15 @@
Typographical Notes
*******************
.. _Prime: https://en.wikipedia.org/wiki/Prime_(symbol)
.. _thin space: https://en.wikipedia.org/wiki/Thin_space
.. _Quotation Mark: https://en.wikipedia.org/wiki/Quotation_mark
.. _Modifier letter apostrophe: https://en.wikipedia.org/wiki/Modifier_letter_apostrophe
novelWriter has some support for typographical symbols that are not usually easily available in
many text editors. This includes for instance the proper unicode quotation marks, dashes, ellipsis,
thin spaces, etc. All these symbols are available from the :guilabel:`Insert` menu, and via
keyboard shortcuts. See :ref:`a_ui_shortcuts_ins`.
keyboard shortcuts. See :ref:`a_kb_ins`.
This chapter provides some additional information on how novelWriter handles these symbols.
@@ -17,7 +22,7 @@ This chapter provides some additional information on how novelWriter handles the
Special Notes on Symbols
========================
Some additional notes on the available symbols.
This section contains additional notes on the available special symbols.
Dashes and Ellipsis
@@ -25,12 +30,12 @@ Dashes and Ellipsis
With the auto-replace feature enabled (see :ref:`a_ui_edit_auto`), multiple hyphens are converted
automatically to short and long dashes, and three dots to ellipsis. The last auto-replace can
always be reverted with the undo command :kbd:`Ctrl`:kbd:`Z`, reverting the text to what you typed
before the automatic replacement occurred.
always be reverted with the undo command :kbd:`Ctrl+Z`, reverting the text to what you typed before
the automatic replacement occurred.
In addition, "Figure Dash" is available. The Figure Dash is a dash that has the same width as the
numbers of the same font, for most fonts. It helps to align numbers align nicely in columns when
you need to use a dash in them.
numbers of the same font, for most fonts. It helps to align numbers nicely in columns when you need
to use a dash in them.
Single and Double Quotes
@@ -44,26 +49,22 @@ Ordinarily, text wrapped in quotes are highlighted by the editor. This is meant
for highlighting dialogue between characters. This feature can be disabled in
:guilabel:`Preferences` if this feature isn't wanted.
The editor distinguishes between text wrapped in regular straight quotes and with the user-selected
double quote symbols. This is to help the writer recognise which parts of the text are not using
the chosen quote symbols. Two convenience functions in the :guilabel:`Format` menu can be used to
re-format a selected section of text with the correct quote symbols.
.. _Quotation Mark: https://en.wikipedia.org/wiki/Quotation_mark
The editor distinguishes between text wrapped in regular straight double quotes and the
user-selected double quote symbols. This is to help the writer recognise which parts of the text
are not using the chosen quote symbols. Two convenience functions in the :guilabel:`Format` menu
can be used to re-format a selected section of text with the correct quote symbols.
Single and Double Prime
------------------------
Both single and double prime symbols are available in the :guilabel:`Insert` menu. These symbols
are the correct symbols to use for unit symbols for feet, inches, minutes and seconds. The usage of
these is described in more detail on the Wikipedia Prime_ page. They look very similar to single
and double straight quotes, and may be renderred similarly by the font, but they have different
are the correct symbols to use for unit symbols for feet, inches, minutes, and seconds. The usage
of these is described in more detail on the Wikipedia Prime_ page. They look very similar to single
and double straight quotes, and may be rendered similarly by the font, but they have different
codes. Using these correctly will also prevent the auto-replace and dialogue highlighting features
misunderstanding their meaning in the text.
.. _Prime: https://en.wikipedia.org/wiki/Prime_(symbol)
Modifier Letter Apostrophe
--------------------------
@@ -73,16 +74,14 @@ even if it is intended as an apostrophe. This also includes the syntax highlight
assume the first following apostrophe is the closing symbol of a single quoted region of text.
To get around this, an alternative apostrophe is available. It is a special Unicode character that
is not categorised as punctuation, but as a modifier. It is usually renderred the same way as the
is not categorised as punctuation, but as a modifier. It is usually rendered the same way as the
right single quotation marks, depending on the font. There is a Wikipedia article for the
`Modifier letter apostrophe`_ with more details.
.. note::
On export with the :guilabel:`Build Novel Project` tool, these apostrophes will be replaced
On export with the :guilabel:`Build Manuscript` tool, these apostrophes will be replaced
automatically with the corresponding right hand single quote symbol as is generally recommended.
Therefore it doesn't really matter if you only use them to correct highlighting.
.. _Modifier letter apostrophe: https://en.wikipedia.org/wiki/Modifier_letter_apostrophe
Therefore it doesn't really matter if you only use them to correct syntax highlighting.
Special Space Symbols
@@ -100,5 +99,3 @@ spot them in the text. The colour will depend on the selected colour theme.
The thin and non-breaking spaces are converted to their corresponding HTML codes on export to HTML
format.
.. _thin space: https://en.wikipedia.org/wiki/Thin_space

View File

@@ -0,0 +1,152 @@
.. _a_ui_writing:
*********************
The Editor and Viewer
*********************
.. _Compose Key: https://en.wikipedia.org/wiki/Compose_key
This chapter covers in more detail how the document editor and viewer panels work.
.. _a_ui_edit:
Editing a Document
==================
.. figure:: images/fig_editor.png
A screenshot of the Document Editor panel.
To edit a document, double-click it in the project tree, or press the :kbd:`Return` key while
having it selected. This will open the document in the document editor. The editor uses a
Markdown-like syntax for some features, and a novelWriter-specific syntax for others. The syntax
format is described in the :ref:`a_fmt` chapter.
The editor has a maximise button (toggles the :guilabel:`Focus Mode`) and a close button in the
top--right corner. On the top--left side you will find a tools button that opens a toolbar with a
few buttons for applying text formatting, and a search button to open the search dialog.
Both the document editor and viewer will show the label of the currently open document in the
header at the top of the edit or view panel. Optionally, the full project path to the document can
be shown. This can be set in :guilabel:`Preferences`.
.. tip::
Clicking on the document title bar will select the document in the project tree and thus reveal
its location there, making it easier to find in a large project.
Any :term:`references<reference>` in the editor can be opened in the viewer by moving the cursor to
the label and pressing :kbd:`Ctrl+Return`. You can also control-click them with your mouse.
Editor Auto-Completer
---------------------
If you type the character ``@`` on a new line, a context menu will appear showing the different
available keywords. The list will shorten as you type. Once a keyword command has been selected or
typed, the editor may suggest further content based on your project content. See
:ref:`a_references_completer` for more details.
.. versionadded:: 2.2
The auto-completer feature was added.
.. _a_ui_view:
Viewing a Document
==================
.. figure:: images/fig_viewer.png
A screenshot of the Document Viewer panel.
Any document in the project tree can also be viewed in parallel in a right hand side document
viewer. To view a document, press :kbd:`Ctrl+R`, or select :guilabel:`View Document` in the menu or
context menu. If you have a middle mouse button, middle-clicking on the document will also open it
in the viewer.
The document viewed does not have to be the same document as the one currently being edited.
However, If you *are* viewing the same document, pressing :kbd:`Ctrl+R` again will update the
document with your latest changes. You can also press the reload button in the top--right corner of
the viewer panel, next to the close button, to achieve the same thing.
In the viewer :term:`references<reference>` become clickable links. Clicking them will replace the
content of the viewer with the content of the document the reference points to.
The document viewer keeps a history of viewed documents, which you can navigate with the arrow
buttons in the top--left corner of the viewer. If your mouse has backward and forward navigation
buttons, these can be used as well. They work just like the backward and forward features in a
browser.
At the bottom of the view panel there is a :guilabel:`References` panel. (If it is hidden, click
the button on the left side of the footer area to reveal it.) This panel contains a References tab
with links to all documents referring back to the one you're currently viewing, if any has been
defined. If you have created root folders and tags for various story elements like characters and
plot points, these will appear as additional tabs in this panel.
.. note::
The :guilabel:`References` panel relies on an up-to-date :term:`index<project index>` of the
project. The index is maintained automatically. However, if anything is missing, or seems wrong,
the index can always be rebuilt by selecting :guilabel:`Rebuild Index` from the
:guilabel:`Tools` menu, or by pressing :kbd:`F9`.
.. versionadded:: 2.2
The reference panel was redesigned and the additional tabs added.
.. _a_ui_edit_search:
Search & Replace
================
.. figure:: images/fig_editor_search.png
A screenshot of the Document Editor search box.
The document editor has a search and replace tool that can be activated with :kbd:`Ctrl+F` for
search mode or :kbd:`Ctrl+H` for search and replace mode.
Pressing :kbd:`Return` while in the search box will search for the next occurrence of the word, and
:kbd:`Shift+Return` for the previous. Pressing :kbd:`Return` in the replace box, will replace the
highlighted text and move to the next result.
There are a number of settings for the search tool available as toggle switches above the search
box. They allow you to search for, in order: matched case only, whole word results only, search
using regular expressions, loop search when reaching the end of the document, and move to the next
document when reaching the end. There is also a switch that will try to match the case of the word
when the replacement is made. That is, it will try to keep the word upper, lower, or capitalised to
match the word being replaced.
The regular expression search is somewhat dependant on which version of Qt your system has. If you
have Qt 5.13 or higher, there is better support for Unicode symbols in the search.
.. seealso::
For more information on the capabilities of the Regular Expression option, see the Qt
documentation for the `QRegularExpression <https://doc.qt.io/qt-5/qregularexpression.html>`_
class.
.. _a_ui_edit_auto:
Auto-Replace as You Type
========================
A few auto-replace features are supported by the editor. You can control every aspect of the
auto-replace feature from :guilabel:`Preferences`. You can also disable this feature entirely if
you wish.
.. tip::
If you don't like auto-replacement, all symbols inserted by this feature are also available in
the :guilabel:`Insert` menu, and via :ref:`a_kb_ins`. You may also be using a `Compose Key`_
setup, which means you may not need the auto-replace feature at all.
The editor is able to replace two and three hyphens with short and long dashes, triple points with
ellipsis, and replace straight single and double quotes with user-defined quote symbols. It will
also try to determine whether to use the opening or closing symbol, although this feature isn't
always accurate. Especially distinguishing between closing single quote and apostrophe can be
tricky for languages that use the same symbol for these, like English does.
.. tip::
If the auto-replace feature changes a symbol when you did not want it to change, pressing
:kbd:`Ctrl+Z` once after the auto-replacement will undo it without undoing the character
you typed before it.

View File

@@ -1,57 +1,126 @@
# novelWriter Internationalisation
# novelWriter Internationalisation (i18n)
The `i18n` folder contains the translation files for the Qt5 GUI. There are two types of files
involved: the `nw_XX.ts` and the `nw_XX.qm` files. The `nw_XX.ts` files are located in the `i18n`
folder at the root of the repository, and the `nw_XX.qm` together with the `project_XX.json` files
are located in `nw/assets/i18n`. The latter are JSON files translation maps for the novelWriter
projects, used by the Build Novel Project tool.
The maintenance of translations has been moved to the Crowdin service. The translation strings can
be edited there at the [novelWriter project page](https://crowdin.com/project/novelwriter).
However, please read the Translation Guidelines section below.
## Qt GUI Localisation
You can still use the manual approach listed below, and then upload the file through the website's
interface. The translation strings for that language will then be updated and queued for approval.
The `.qm` files are the actual files used by the application to translate the GUI into another
language other than the default British English. The files are not generated by default. They can
be built with:
```bash
python3 setup.py qtlrelease
```
To verify a language file translated through the Crowdin tool, download and extract it into the
`i18n` folder in the novelWriter source and follow the instructions in
[Generate an Updated Translation File](#generate-an-updated-translation-file) below.
To add a new translation file, first add a new entry in the `novelWriter.pro` file under the
`TRANSLATIONS` variable. Please use the underscore syntax for file names as the importer expects
this format.
After adding the entry in the `.pro` file, run:
```bash
python3 setup.py qtlupdate
```
# Translation Guidelines
This will build a new `i18n/nw_XX.ts` file for the language you just added. The file can then be
edited with the Qt 5 Linguist application provided by Qt. This is by far easier than manually
editing the `.ts` file. Please select "English" and "United Kingdom" as the source langauge when
prompted by Qt 5 Linguist.
When contributing translations, keep the following things in mind.
When you're done editing, you can build the `nw/assets/i18n/nw_XX.qm` file and test it in
novelWriter. The Preferences dialog should list the newly added language, and you can select it and
test it.
* For descriptive labels and dialog boxes, make sure you do _not_ change the meaning of the text
when you translate it from English. The user must receive the same instructions or information
regardless of language. This is improtant, otherwise the documentation will be inconsistent with
the user interface and it will become a lot more difficult to handle user issues and questions.
* If you think a label or description is misleading or incomplete, please file an issue report. The
correct way to handle such changes is to change the text in the code first, which will then be
forwarded to _all_ translators such that the GUI is consistent across all languages.
* For very short labels, like button labels. it may be fine to replace the word with a similar
word, but only as long as the user understands what it is supposed to do. Some buttons and tabs
have limited space. If necessary, it is OK to use abbreviations.
Please do not submit the `.qm` files to the repository. Only the `.ts` files in the `i18n` folder
are needed.
**Note**
# Direct Approach Using Qt Linguist
These commands require that you have the tools Qt 5 Linguist and the PyQt5 tool `pylupdate5`
installed on your system.
Here you will find instructions for translating novelWriter to a new language directly using Qt
Linguist, or updating the translations for an already existing supported language.
There are two areas relevant to localisation:
* The Qt5 GUI translation files, which consists of `nw_XX.ts` files. This is the bulk of the
translation work.
* The `project_XX.json` files. See [Project Localisation](#project-localisation) below.
The `XX` in the file name corresponds to the language and country code for the translation. For
instance `en_GB` for British English.
## Qt5 GUI Localisation
You will need the translation tool Qt 5 Linguist on your system.
For Ubuntu/Debian, run:
```bash
sudo apt install qttools5-dev-tools pyqt5-dev-tools
sudo apt install qttools5-dev-tools
```
See also [Qt Linguist Manual: Translators](https://doc.qt.io/qt-5/linguist-translators.html).
### Workflow
Here's an overview of the localisation workflow:
1. First, create a new branch off of `main`, and there, generate a new `nw_XX.ts` translation file.
1. Load the translation file in Qt Linguist. Translate and save your changes.
1. Generate the `nw_XX.qm` file.
1. Run the application and verify your changes. Iterate from step 2.
1. Once finished, commit your changes and submit your pull request.
When you want to translate new changes, again create a new branch off of `main` and re-generate the
translation file. Continue from step 2.
### Generate an Updated Translation File
The `i18n` folder at the root of the repository contains the `nw_XX.ts` translation files.
Whether to add a new language to the translation framework, or to update the file against the
current source code, you must first run the `qtlupdate` command:
```bash
python3 pkgutils.py qtlupdate i18n/nw_XX.ts
```
The file name must be in the correct format. All translation files must be located in the `i18n`
folder, start with `nw_` and end with `.ts`. In between goes the language and country code. It must
be a valid ISO language code, otherwise novelWriter will not accept the file.
For instance, the French translation uses the language code `fr_FR`, so its translation file will
be `nw_fr_FR.ts`
Note: The `qtlupdate` command needs the `lupdate` tool provided by PyQt6, which uses the latest
TS file format. The tool in PyQt5 generates an older file format. On Debian/Ubuntu it is provided
by the package `pyqt6-dev-tools`.
### Edit the Translation File in Qt Linguist
The `i18n/nw_XX.ts` file can be edited with the Qt Linguist application provided by Qt 5. This is
by far easier than manually editing the `.ts` file.
Please select "English" and "United Kingdom" as the _source_ language if prompted by Qt Linguist.
### Verify Your Translation
The application does not use `.ts` files directly. The `novelwriter/assets/i18n/nw_XX.qm` files are
the actual files used to translate the GUI into another language other than the default British
English. These files are not generated by default, but they can be built with:
```bash
python3 pkgutils.py qtlrelease
```
You can now test the translation in novelWriter. The Preferences dialog should list the newly added
language, so go ahead and select it.
### Missing QtBase Translations
The default Qt dialogs also have translations, for instance for standard buttons for "Yes", "No",
"Ok", "Cancel", etc. Generally, these translations files are installed with the Qt libraries on
your system, and novelWriter will collect those translations from there. However, these
translations are missing for many languages.
The default Qt dialogs also have translations, for instance for standard buttons like "Yes", "No",
"Ok", "Cancel", etc. Generally, these translation files are installed with the Qt libraries on your
system, and novelWriter will collect those translations from there. However, these translations are
missing for many languages.
As a starting point, there is no need to translate any entries in the `.ts` files that are under
elements starting with the letter "Q", like "QPlatformTheme", "QWizard", etc. If these turn up in
@@ -62,18 +131,17 @@ These additional translation entries are generated from a file named `i18n/qtbas
a file that novelWriter uses. It is there only to generate these additional entries for the `.ts`
files.
## Project Localisation
Projects can have a different language setting than the GUI itself. The files with format
`project_XX.json` in `nw/assets/i18n` are simple translation maps for text that goes into the
exported documents generated by the Build Novel Project tool.
`project_XX.json` in `novelwriter/assets/i18n` are simple translation maps for text that goes into
the exported documents generated by the Build Novel Project tool.
The files are loaded based on the language setting in the build tool. At the present time, no other
parts of the application use these files. Since these are used as replacement lookups, they are
maintained as plain JSON files. The main usage is to generate chapter headers as number words.
The files are loaded based on the language setting in the Build Novel Project tool. At the present
time, no other parts of the application use these files. Since these are used as replacement
lookups, they are maintained as plain JSON files. The main usage is to generate chapter headers as
number words.
Adding new translations for these files is easy. Just copy the `project_en.json` file, rename it to
the appropriate language coded filename, and edit it. Please use the underscore as separator if a
language needs to be localised to a specific country under a language. The importer will for
instance look for `en_US` first, then use `en` if it is not found. If there are no matching files,
the project falls back to using English.
Adding new translations for these files is easy. Just copy the `project_en_GB.json` file, rename it
to the appropriate language coded filename, and open it in a text editor and edit the content.

4835
i18n/nw_base.ts Normal file

File diff suppressed because it is too large Load Diff

4653
i18n/nw_de_DE.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4835
i18n/nw_es_419.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4835
i18n/nw_fr_FR.ts Normal file

File diff suppressed because it is too large Load Diff

4835
i18n/nw_it_IT.ts Normal file

File diff suppressed because it is too large Load Diff

4835
i18n/nw_ja_JP.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4653
i18n/nw_nl_NL.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4681
i18n/nw_pt_BR.ts Normal file

File diff suppressed because it is too large Load Diff

4653
i18n/nw_zh_CN.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
"""
Qt Base Translation File
========================
@@ -27,14 +26,6 @@ QT_TRANSLATE_NOOP("QGnomeTheme", "&Cancel")
QT_TRANSLATE_NOOP("QGnomeTheme", "&Close")
QT_TRANSLATE_NOOP("QGnomeTheme", "Close without Saving")
# QGuiApplication
# ===============
QT_TRANSLATE_NOOP("QGuiApplication", (
"Translate this string to the string 'LTR' in left-to-right languages or to "
"'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout."
))
# QPlatformTheme
# ==============

View File

@@ -1,38 +0,0 @@
SOURCES += \
i18n/qtbase.py \
nw/core/document.py \
nw/core/project.py \
nw/core/tokenizer.py \
nw/dialogs/about.py \
nw/dialogs/docmerge.py \
nw/dialogs/docsplit.py \
nw/dialogs/itemeditor.py \
nw/dialogs/preferences.py \
nw/dialogs/projload.py \
nw/dialogs/projsettings.py \
nw/dialogs/wordlist.py \
nw/gui/custom.py \
nw/gui/doceditor.py \
nw/gui/docviewer.py \
nw/gui/itemdetails.py \
nw/gui/mainmenu.py \
nw/gui/noveltree.py \
nw/gui/outline.py \
nw/gui/outlinedetails.py \
nw/gui/projdetails.py \
nw/gui/projtree.py \
nw/gui/statusbar.py \
nw/gui/theme.py \
nw/tools/build.py \
nw/tools/projwizard.py \
nw/tools/writingstats.py \
nw/common.py \
nw/constants.py \
nw/error.py \
nw/guimain.py
TRANSLATIONS += \
i18n/nw_en_US.ts \
i18n/nw_fr.ts \
i18n/nw_nb_NO.ts \
i18n/nw_pt.ts

View File

@@ -1,5 +1,4 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
novelWriter – Start Script
==========================
@@ -8,9 +7,9 @@ import os
import sys
try:
import PyQt5.QtWidgets # noqa: F401
import PyQt5.QtGui # noqa: F401
import PyQt5.QtCore # noqa: F401
import PyQt5.QtWidgets # noqa: F401
import PyQt5.QtGui # noqa: F401
import PyQt5.QtCore # noqa: F401
except Exception:
print("ERROR: Failed to load dependency PyQt5")
sys.exit(1)
@@ -18,5 +17,5 @@ except Exception:
os.curdir = os.path.abspath(os.path.dirname(__file__))
if __name__ == "__main__":
import nw
nw.main(sys.argv[1:])
import novelwriter
novelwriter.main(sys.argv[1:])

242
novelwriter/__init__.py Normal file
View File

@@ -0,0 +1,242 @@
"""
novelWriter – Init File
=======================
File History:
Created: 2018-09-22 [0.0.1]
This file is a part of novelWriter
Copyright 2018–2023, Veronica Berglyd Olsen
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 <https://www.gnu.org/licenses/>.
"""
from __future__ import annotations
import sys
import getopt
import logging
from PyQt5.QtWidgets import QApplication, QErrorMessage
from novelwriter.error import exceptionHandler, logException
from novelwriter.config import Config
from novelwriter.shared import SharedData
# Package Meta
# ============
__package__ = "novelwriter"
__copyright__ = "Copyright 2018–2023, Veronica Berglyd Olsen"
__license__ = "GPLv3"
__author__ = "Veronica Berglyd Olsen"
__maintainer__ = "Veronica Berglyd Olsen"
__email__ = "code@vkbo.net"
__version__ = "2.2"
__hexversion__ = "0x020200f0"
__date__ = "2023-12-17"
__status__ = "Stable"
__domain__ = "novelwriter.io"
logger = logging.getLogger(__name__)
##
# Main Program
##
# Global config and data singletons
CONFIG = Config()
SHARED = SharedData()
def main(sysArgs: list | None = None):
"""Parse command line, set up logging, and launch main GUI."""
if sysArgs is None:
sysArgs = sys.argv[1:]
# Valid Input Options
shortOpt = "hv"
longOpt = [
"help",
"version",
"info",
"debug",
"style=",
"config=",
"data=",
"testmode",
"meminfo"
]
helpMsg = (
f"novelWriter {__version__} ({__date__})\n"
f"{__copyright__}\n"
"\n"
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
"GNU General Public Licence for more details.\n"
"\n"
"Usage:\n"
" -h, --help Print this message.\n"
" -v, --version Print program version and exit.\n"
" --info Print additional runtime information.\n"
" --debug Print debug output. Includes --info.\n"
" --meminfo Show memory usage information in the status bar.\n"
" --style= Sets Qt5 style flag. Defaults to 'Fusion'.\n"
" --config= Alternative config file.\n"
" --data= Alternative user data path.\n"
)
# Defaults
logLevel = logging.WARN
logFormat = "{levelname:8} {message:}"
confPath = None
dataPath = None
testMode = False
qtStyle = "Fusion"
cmdOpen = None
# Parse Options
try:
inOpts, inRemain = getopt.getopt(sysArgs, shortOpt, longOpt)
except getopt.GetoptError as exc:
print(helpMsg)
print(f"ERROR: {str(exc)}")
sys.exit(2)
if len(inRemain) > 0:
cmdOpen = inRemain[0]
for inOpt, inArg in inOpts:
if inOpt in ("-h", "--help"):
print(helpMsg)
sys.exit(0)
elif inOpt in ("-v", "--version"):
print("novelWriter Version %s [%s]" % (__version__, __date__))
sys.exit(0)
elif inOpt == "--info":
logLevel = logging.INFO
elif inOpt == "--debug":
CONFIG.isDebug = True
logLevel = logging.DEBUG
logFormat = "[{asctime:}] {filename:>17}:{lineno:<4d} {levelname:8} {message:}"
elif inOpt == "--style":
qtStyle = inArg
elif inOpt == "--config":
confPath = inArg
elif inOpt == "--data":
dataPath = inArg
elif inOpt == "--testmode":
testMode = True
elif inOpt == "--meminfo":
CONFIG.memInfo = True
# Setup Logging
pkgLogger = logging.getLogger(__package__)
pkgLogger.setLevel(logLevel)
if len(pkgLogger.handlers) == 0:
# Make sure we only create one logger (mostly an issue with tests)
cHandle = logging.StreamHandler()
cHandle.setFormatter(logging.Formatter(fmt=logFormat, style="{"))
pkgLogger.addHandler(cHandle)
logger.info("Starting novelWriter %s (%s) %s", __version__, __hexversion__, __date__)
# Check Packages and Versions
errorData = []
errorCode = 0
if sys.hexversion < 0x030800f0:
errorData.append(
"At least Python 3.8 is required, found %s" % CONFIG.verPyString
)
errorCode |= 0x04
if CONFIG.verQtValue < 0x050a00:
errorData.append(
"At least Qt5 version 5.10 is required, found %s" % CONFIG.verQtString
)
errorCode |= 0x08
if CONFIG.verPyQtValue < 0x050a00:
errorData.append(
"At least PyQt5 version 5.10 is required, found %s" % CONFIG.verPyQtString
)
errorCode |= 0x10
if errorData:
errApp = QApplication([])
errDlg = QErrorMessage()
errDlg.resize(500, 300)
errDlg.showMessage((
"<h3>A critical error was encountered</h3>"
"<p>novelWriter cannot start due to the following issues:<p>"
"<p>&nbsp;-&nbsp;%s</p>"
"<p>Shutting down ...</p>"
) % (
"<br>&nbsp;-&nbsp;".join(errorData)
))
for errLine in errorData:
logger.critical(errLine)
errApp.exec_()
sys.exit(errorCode)
# Finish initialising config
CONFIG.initConfig(confPath, dataPath)
if CONFIG.osDarwin:
try:
from Foundation import NSBundle
bundle = NSBundle.mainBundle()
info = bundle.localizedInfoDictionary() or bundle.infoDictionary()
info["CFBundleName"] = "novelWriter"
except Exception:
logger.error("Failed to set application name")
logException()
elif CONFIG.osWindows:
try:
import ctypes
appID = f"io.novelwriter.{__version__}"
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(appID)
except Exception:
logger.error("Failed to set application name")
logException()
# Import GUI (after dependency checks), and launch
from novelwriter.guimain import GuiMain
if testMode:
nwGUI = GuiMain()
return nwGUI
else:
nwApp = QApplication([CONFIG.appName, (f"-style={qtStyle}")])
nwApp.setApplicationName(CONFIG.appName)
nwApp.setApplicationVersion(__version__)
nwApp.setOrganizationDomain(__domain__)
nwApp.setOrganizationName(__domain__)
nwApp.setDesktopFileName(CONFIG.appName)
# Connect the exception handler before making the main GUI
sys.excepthook = exceptionHandler
# Run Config steps that require the QApplication
CONFIG.initLocalisation(nwApp)
CONFIG.setTextFont(CONFIG.textFont, CONFIG.textSize) # Makes sure these are valid
# Launch main GUI
nwGUI = GuiMain()
nwGUI.postLaunchTasks(cmdOpen)
sys.exit(nwApp.exec_())
# END Function main

View File

@@ -2,6 +2,16 @@
"Synopsis": "Synopsis",
"Comment": "Kommentar",
"Notes": "Notizen",
"Tag": "Schlagwort",
"Point of View": "Perspektive",
"Focus": "Mittelpunkt",
"Characters": "Charaktere",
"Plot": "Handlungen",
"Timeline": "Zeitleiste",
"Locations": "Schauplätze",
"Objects": "Objekte",
"Entities": "Organisationen",
"Custom": "Benutzerdefiniert",
"0": "Null",
"1": "Eins",
"2": "Zwei",

View File

@@ -1,7 +1,18 @@
{
"Synopsis": "Synopsis",
"Short Description": "Short Description",
"Comment": "Comment",
"Notes": "Notes",
"Tag": "Tag",
"Point of View": "Point of View",
"Focus": "Focus",
"Characters": "Characters",
"Plot": "Plot",
"Timeline": "Timeline",
"Locations": "Locations",
"Objects": "Objects",
"Entities": "Entities",
"Custom": "Custom",
"0": "Zero",
"1": "One",
"2": "Two",

View File

@@ -0,0 +1,116 @@
{
"Synopsis": "Synopsis",
"Short Description": "Short Description",
"Comment": "Comment",
"Notes": "Notes",
"Tag": "Tag",
"Point of View": "Point of View",
"Focus": "Focus",
"Characters": "Characters",
"Plot": "Plot",
"Timeline": "Timeline",
"Locations": "Locations",
"Objects": "Objects",
"Entities": "Entities",
"Custom": "Custom",
"0": "Zero",
"1": "One",
"2": "Two",
"3": "Three",
"4": "Four",
"5": "Five",
"6": "Six",
"7": "Seven",
"8": "Eight",
"9": "Nine",
"10": "Ten",
"11": "Eleven",
"12": "Twelve",
"13": "Thirteen",
"14": "Fourteen",
"15": "Fifteen",
"16": "Sixteen",
"17": "Seventeen",
"18": "Eighteen",
"19": "Nineteen",
"20": "Twenty",
"21": "Twenty-One",
"22": "Twenty-Two",
"23": "Twenty-Three",
"24": "Twenty-Four",
"25": "Twenty-Five",
"26": "Twenty-Six",
"27": "Twenty-Seven",
"28": "Twenty-Eight",
"29": "Twenty-Nine",
"30": "Thirty",
"31": "Thirty-One",
"32": "Thirty-Two",
"33": "Thirty-Three",
"34": "Thirty-Four",
"35": "Thirty-Five",
"36": "Thirty-Six",
"37": "Thirty-Seven",
"38": "Thirty-Eight",
"39": "Thirty-Nine",
"40": "Forty",
"41": "Forty-One",
"42": "Forty-Two",
"43": "Forty-Three",
"44": "Forty-Four",
"45": "Forty-Five",
"46": "Forty-Six",
"47": "Forty-Seven",
"48": "Forty-Eight",
"49": "Forty-Nine",
"50": "Fifty",
"51": "Fifty-One",
"52": "Fifty-Two",
"53": "Fifty-Three",
"54": "Fifty-Four",
"55": "Fifty-Five",
"56": "Fifty-Six",
"57": "Fifty-Seven",
"58": "Fifty-Eight",
"59": "Fifty-Nine",
"60": "Sixty",
"61": "Sixty-One",
"62": "Sixty-Two",
"63": "Sixty-Three",
"64": "Sixty-Four",
"65": "Sixty-Five",
"66": "Sixty-Six",
"67": "Sixty-Seven",
"68": "Sixty-Eight",
"69": "Sixty-Nine",
"70": "Seventy",
"71": "Seventy-One",
"72": "Seventy-Two",
"73": "Seventy-Three",
"74": "Seventy-Four",
"75": "Seventy-Five",
"76": "Seventy-Six",
"77": "Seventy-Seven",
"78": "Seventy-Eight",
"79": "Seventy-Nine",
"80": "Eighty",
"81": "Eighty-One",
"82": "Eighty-Two",
"83": "Eighty-Three",
"84": "Eighty-Four",
"85": "Eighty-Five",
"86": "Eighty-Six",
"87": "Eighty-Seven",
"88": "Eighty-Eight",
"89": "Eighty-Nine",
"90": "Ninety",
"91": "Ninety-One",
"92": "Ninety-Two",
"93": "Ninety-Three",
"94": "Ninety-Four",
"95": "Ninety-Five",
"96": "Ninety-Six",
"97": "Ninety-Seven",
"98": "Ninety-Eight",
"99": "Ninety-Nine"
}

View File

@@ -0,0 +1,116 @@
{
"Synopsis": "Sinopsis",
"Short Description": "Breve Descripción",
"Comment": "Comentario",
"Notes": "Notas",
"Tag": "Etiqueta",
"Point of View": "Punto de Vista",
"Focus": "Foco",
"Characters": "Personajes",
"Plot": "Argumento",
"Timeline": "Línea de Tiempo",
"Locations": "Lugares",
"Objects": "Objetos",
"Entities": "Entidades",
"Custom": "Otros",
"0": "Cero",
"1": "Uno",
"2": "Dos",
"3": "Tres",
"4": "Cuatro",
"5": "Cinco",
"6": "Seis",
"7": "Siete",
"8": "Ocho",
"9": "Nueve",
"10": "Diez",
"11": "Once",
"12": "Doce",
"13": "Trece",
"14": "Catorce",
"15": "Quince",
"16": "Dieciséis",
"17": "Diecisiete",
"18": "Dieciocho",
"19": "Diecinueve",
"20": "Veinte",
"21": "Veintiuno",
"22": "Veintidós",
"23": "Veintitrés",
"24": "Veinticuatro",
"25": "Veinticinco",
"26": "Veintiséis",
"27": "Veintisiete",
"28": "Veintiocho",
"29": "Veintinueve",
"30": "Treinta",
"31": "Treinta y ",
"32": "Treinta y ",
"33": "Treinta y ",
"34": "Treinta y ",
"35": "Treinta y ",
"36": "Treinta y ",
"37": "Treinta y ",
"38": "Treinta y ",
"39": "Treinta y ",
"40": "Cuarenta",
"41": "Cuarenta y uno",
"42": "Cuarenta y dos",
"43": "Cuarenta y tres",
"44": "Cuarenta y cuatro",
"45": "Cuarenta y cinco",
"46": "Cuarenta y seis",
"47": "Cuarenta y siete",
"48": "Cuarenta y ocho",
"49": "Cuarenta y nueve",
"50": "Cincuenta",
"51": "Cincuenta y uno",
"52": "Cincuenta y dos",
"53": "Cincuenta y tres",
"54": "Cincuenta y cuatro",
"55": "Cincuenta y cinco",
"56": "Cincuenta y seis",
"57": "Cincuenta y siete",
"58": "Cincuenta y ocho",
"59": "Cincuenta y nueve",
"60": "Sesenta",
"61": "Sesenta y uno",
"62": "Sesenta y dos",
"63": "Sesenta y tres",
"64": "Sesenta y cuatro",
"65": "Sesenta y cinco",
"66": "Sesenta y seis",
"67": "Sesenta y siete",
"68": "Sesenta y ocho",
"69": "Sesenta y nueve",
"70": "Setenta",
"71": "Setenta y uno",
"72": "Setenta y dos",
"73": "Setenta y tres",
"74": "Setenta y cuatro",
"75": "Setenta y cinco",
"76": "Setenta y seis",
"77": "Setenta y siete",
"78": "Setenta y ocho",
"79": "Setenta y nueve",
"80": "Ochenta",
"81": "Ochenta y uno",
"82": "Ochenta y dos",
"83": "Ochenta y tres",
"84": "Ochenta y cuatro",
"85": "Ochenta y cinco",
"86": "Ochenta y seis",
"87": "Ochenta y siete",
"88": "Ochenta y ocho",
"89": "Ochenta y nueve",
"90": "Noventa",
"91": "Noventa y uno",
"92": "Noventa y dos",
"93": "Noventa y tres",
"94": "Noventa y cuatro",
"95": "Noventa y cinco",
"96": "Noventa y seis",
"97": "Noventa y siete",
"98": "Noventa y ocho",
"99": "Noventa y nueve"
}

View File

@@ -1,7 +1,18 @@
{
"Synopsis": "Synopsis",
"Short Description": "Description sommaire",
"Comment": "Commentaire",
"Notes": "Notes",
"Tag": "Étiquette",
"Point of View": "Point de vue",
"Focus": "Focus",
"Characters": "Personnages",
"Plot": "Intrigue",
"Timeline": "Chronologie",
"Locations": "Lieux",
"Objects": "Objets",
"Entities": "Entités",
"Custom": "Personnalisé",
"0": "Zero",
"1": "Un",
"2": "Deux",

View File

@@ -0,0 +1,116 @@
{
"Synopsis": "Sinossi",
"Short Description": "Breve descrizione",
"Comment": "Commento",
"Notes": "Note",
"Tag": "Etichetta",
"Point of View": "Punto di vista",
"Focus": "Focus",
"Characters": "Personaggi",
"Plot": "Trama",
"Timeline": "Sequenza temporale",
"Locations": "Luoghi",
"Objects": "Oggetti",
"Entities": "Enti",
"Custom": "Personalizzato",
"0": "Zero",
"1": "Uno",
"2": "Due",
"3": "Tre",
"4": "Quattro",
"5": "Cinque",
"6": "Sei",
"7": "Sette",
"8": "Otto",
"9": "Nove",
"10": "Dieci",
"11": "Undici",
"12": "Dodici",
"13": "Tredici",
"14": "Quattordici",
"15": "Quindici",
"16": "Sedici",
"17": "Diciassette",
"18": "Diciotto",
"19": "Diciannove",
"20": "Venti",
"21": "Ventuno",
"22": "Ventidue",
"23": "Ventitré",
"24": "Ventiquattro",
"25": "Venticinque",
"26": "Ventisei",
"27": "Ventisette",
"28": "Ventotto",
"29": "Ventinove",
"30": "Trenta",
"31": "Trentuno",
"32": "Trentadue",
"33": "Trentatré",
"34": "Trentaquattro",
"35": "Trentacinque",
"36": "Trentasei",
"37": "Trentasette",
"38": "Trentotto",
"39": "Trentanove",
"40": "Quaranta",
"41": "Quarantuno",
"42": "Quarantadue",
"43": "Quarantatré",
"44": "Quarantaquattro",
"45": "Quarantacinque",
"46": "Quarantasei",
"47": "Quarantasette",
"48": "Quarantotto",
"49": "Quarantanove",
"50": "Cinquanta",
"51": "Cinquantuno",
"52": "Cinquantadue",
"53": "Cinquantatré",
"54": "Cinquantaquattro",
"55": "Cinquantacinque",
"56": "Cinquantasei",
"57": "Cinquantasette",
"58": "Cinquantotto",
"59": "Cinquantanove",
"60": "Sessanta",
"61": "Sessantuno",
"62": "Sessantadue",
"63": "Sessantatre",
"64": "Sessantaquattro",
"65": "Sessantacinque",
"66": "Sessantasei",
"67": "Sessantasette",
"68": "Sessantotto",
"69": "Sessantanove",
"70": "Settanta",
"71": "Settantuno",
"72": "Settantadue",
"73": "Settantatré",
"74": "Settantaquattro",
"75": "Settantacinque",
"76": "Settantasei",
"77": "Settantasette",
"78": "Settantotto",
"79": "Settantanove",
"80": "Ottanta",
"81": "Ottantuno",
"82": "Ottantadue",
"83": "Ottantatré",
"84": "Ottantaquattro",
"85": "Ottantacinque",
"86": "Ottantasei",
"87": "Ottantasette",
"88": "Ottantotto",
"89": "Ottantanove",
"90": "Novanta",
"91": "Novantuno",
"92": "Novantadue",
"93": "Novantatré",
"94": "Novantaquattro",
"95": "Novantacinque",
"96": "Novantasei",
"97": "Novantasette",
"98": "Novantotto",
"99": "Novantanove"
}

Some files were not shown because too many files have changed in this diff Show More