Git Product home page Git Product logo

novelyst's People

Contributors

peter88213 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

novelyst's Issues

History

A list of selected tree items to go back and forward like in a browser.

  • When selecting a node, add the selection to the list, if not selected by"forward" or "back".
  • When calling "forward" or "back", check whether the node exists, and go to the node.
  • When calling "forward" or "back", move the list pointer.

Consider saving the list and restoring it on start up.

Structure arcs

Discussed in #9

Originally posted by peter88213 January 5, 2023
Currently (v4.2.5), you can describe an arc by creating a "Todo" scene, assigning it to the corresponding arc. Then the number of normal scenes assigned to this arc is shown in the "Todo" scene's properties in the right pane. This is optional; you don't have to create a "Todo" scene in order to assign arcs to normal scenes.

It would be nice to break down arcs into several steps that can be connected with scenes. To realize this within the limitations of the .yw7 file format, the following is suggested:

  1. The arc, consisting of a sequence of steps, is represented by a "Todo" type chapter with scenes representing the steps.
  2. The steps can be assigned to normal scenes in the same way as characters, locations, and items. This is additional to the arc assignments. If a step is assigned to a scene, the "parent" arc will be assigned too.
  3. The steps are displayed in a tree column. Open point: How discriminate arcs, if multiple steps of different arcs are assigned to a scene? Coloring is no option here.
  4. We can think of creating a special view, where the steps are displayed in the tree in a special way, e.g. as plot points, or as sections such as acts. This would be implemented as a a plugin.

Realization

  • Chapters get an "arc description" property, consisting of an UID. This applies to "Todo" scenes; if the scene type is changed, the reference must be deleted automatically.
  • Scenes of this chapters have this UID as "Arc" reference. For this, the current implementation can be used.
  • Additionally to the "Arc" reference as currently existing, scenes get a new relationship: a list of scene IDs pointing to the "Arc step defining scenes". This is the part that might get complicated to implement. If an "Arc step defining scene" is deleted, or changes its type, all scene references must be updated.

Import/export XML data

Import and export

  • characters
  • locations
  • items

Provide a dialog to select the elements to be exported/imported.

Make the modes of discourse customizable

Currently (v4.16.3) there is a fixed set of modes of discourse (formerly called "styles").

A scene's mode can be staged, explaining, descriptive, or summarizing.

  • Staged scenes are mainly made up of action and dialog.
  • Explaining scenes mainly convey background information.
  • Descriptive scenes describe characters, locations, etc in detail.
  • Summarizing scenes summarize actions in brief, for example, to make time tighter.

None is the default and means "staged". Newly created scenes are set to "staged" by default.

Goals:

  • Allow for creating or renaming modes.
  • Allow for assigning multiple modes in a scene. Problem: coloring!

Auto-Backup

Create a temporary file which is saved periodically and deleted on saving manually.

Crash protection

If such a file with a newer date than the actual project file is found on startup, a warning pops up. Then the user can load the autobackup file instead of the project file.

Export an ODS Plot list

  • The Plot list may look like the HTML Plot list.
  • Scenes are linked either to the manuscript.
  • Arcs are linked to the .arcs document.
  • Phase headings are linked to the .plot document.

Links to external documents

Currently (v4.42), images can be linked to characters, locations, and items. This shall be replaced by general links.

  • There shall be a folding frame called "Links" containing a list of links (label + file path or URL).
  • In the novelyst settings, there is an editable list of file extensions and their associated application launchers.
  • Linked files with extensions that are not listed, are opened with the system's standard application.

This allows for deep-linking e.g. Zim wiki pages.

Demote chapter to scene

  1. Create a new scene (child of the previous chapter or parent part) with the chapter's title and description.
  2. Select the new scene.
  3. If the chapter is not empty, move all scenes after the newly created scene.
  4. Delete the chapter.

Global find and replace

This is for changing names or wording in the whole novel, including descriptions, notes, and metadata.

Auto-set scene date/time

In the scene date/time settings, provide a button to set the date time that follows the previous scene.

scene date/time = previous scene date/time + previous scene duration

  • If the previous scene has an unspecific date, use any reference date for calculation.
  • If the previous scene doesn't exist, or has no date/time set, do nothing.

Set Arc Point date/time

For the correct display in Aeon timeline 2, arc points shall have the same date/time as their associated scenes.

Join scenes

Context menu entry: Join with previous scene

Conditions:

  • same type
  • same viewpoint

Operation:

  • join content
  • join description
  • join tags
  • join characters/locations/items
  • add scene duration
  • join arcs

Questions:

  • join title?
  • join goal/conflict/outcome?

No tree color

On Windows 7 there is no color in the tree, only in the Comments pane.

nove

View date/time of "Notes" scenes

Currently (v4.2.3), date/time of "Notes" scenes are not displayed.
Since aeon2yw can convert "background" events to "notes" scenes, their date/time may be of interest.

Clean up old .yw7 files

Add an option to delete yWriter-only data when writing .yw7.
This is done by rewriting the .yw7 file from scratch (set the tree attribute to None).

CAUTION: This may also delete the word count history, if not read in.

Drop-down list for Arcs

Discussed in #5

Originally posted by JPhB December 31, 2022
Currently, Arc names have to be typed in the Arcs box every time. A drop-down list would be easier and safer. A difficulty is that a semi-colon would have to be inserted when 2 or more Arcs are used in the same scene.

novelyst 5

New features

New .novx XML data format

novelyst 4 uses yWriter's .yw7 file format, tweaking it in a compatible way to add novelyst specific data. This limits the range of novelyst's features. Besides, the .yw7 file format, yet flexible and easy to figure out, hasn't the potential of a "neat" XML standard. Therefore, a new XML data format is defined. The focus is on the good readability of the file content even without special software (apart from a css stylesheet for the web browser), and the capability of extracting documents of all kinds using standard XSL transformations.

  • Provide a versioned Document Type Definition.
  • Provide a css style sheet for conveniently viewing the project and reading the novel with a web browser.
  • Provide a Windows registry script for file icon/"open file" assignment and MIME type registration.
  • Provide a plugin for .yw7 file import and export.
  • Get rid of CDATA passages. Instead, use XHTML-like elements such as <p>, <em>, and <strong> for the content formatting.
  • Define new elements, reflecting the changes in the data model.
  • Collections use the new .nvcx XML format that is easy to transform with XSLT.
  • Provide tools for .yw7 and .pwc file conversion.

Data model

For historical reasons, novelyst 4 has an internal data model that is close to the yWriter 7 file format. It is easy to extend the data model, but the handling of these extensions is cumbersome, and the software architecture is subject to limitations. A revised data model in novelyst 5 enables clearer program code and an overall more powerful software architecture.

  • Rewording: Section replaces Scene, since Scene actually has a specific meaning.
  • Provide a Stage data type, replacing the "stage" tagged todo-scenes in novelyst 4.
  • Provide an Arc data type, replacing the todo-chapters with arc names assigned in novelyst 4.
  • Provide a Turning point data type, replacing the todo-scenes assigned to "Arc chapters" in novelyst 4.
  • Characters are given birth and death dates.
  • The project has a default date to which sections with an unspecified date/time refer. This allows synchronization with timelines.
  • Allow an unlimited number of file links for characters/locations/items. This replaces the yWriter-like image link.

Usability

Document editing workflow

With novelyst 4, you export ODF documents for editing, and have a LibreOffice/OpenOffice extension write back the changes to the .yw7 project file. Then you have novelyst reload the project file. This works very well, but be aware of newly created chapters and scenes in the ODT manuscript. After updating novelyst, the ODT manuscript must be deleted manually and re-exported for the next editing cycle. With novelyst 5, you just save the edited documents, which are considered temporary, and close LibreOffice/OpenOffice. Then have novelyst do the synchronization and delete the temporary files automatically.

  • Exported ODF documents are re-imported from within novelyst, so there is no need for a LibreOffice extension.
  • For re-import, there is a file picker menu showing all exported documents with their file date. Documents that are newer than the novelyst project are highlighted.
  • To avoid confusion, edited ODF documents are automatically deleted after re-importing.
  • New file name suffixes are given to exported ODF documents, indicating their temporary status.
  • Use native footnotes and endnotes in the manuscript (instead of comments with special markup).
  • Export native lists (instead of - prefixed paragraphs).
  • Allow the partial nesting of formatting.

Tree view

  • Part elements are placed on chapter level. This makes it way easier to move the part boundaries.
  • Provide a Plot menu for plot elements like stages, arcs, and turning points.
  • New child elements are appended at the end rather than inserted at the beginning, if the parent is selected.
  • No longer redraw the tree after making changes (e.g. type).
  • Drop the Research and Planning branches. Provide an Arcs branch instead.

Properties view

  • Display the week day with the section date.
  • Convert specific section date to day and vice versa, if the reference date is set.
  • Provide pick lists for assigning arcs/characters/locations/items to sections.
  • Display the age of characters assigned to dated sections.

Matrix plugin

  • Changes in the table immediately take effect on the other views, and vice versa.
  • Improve the start up speed. This could result in a new appearance.

Setup/installation

  • novelyst 5 and its plugins are installed in another directory (~/.novelyst instead of ~/.pywriter/novelyst). Thus it can be installed in parallel with novelyst 4 and all the PyWriter based tools that use the .yw7 file format. On the other hand, you can remove programs easily if you decide to abandon the compatibility with yWriter.

Code

Since novelyst 5 has is own file format, the PyWriter library that supports .yw7 is replaced by the new novxlib library. novxlib has about the same range of features as pywriter, but defines the new novelyst 5 data model and supports the .novx file format.

  • Implement the Model-View-Controller design pattern.
  • Use a replaceable "tree" class with a ttk.Treeview interface for the relationships of the model elements (thus applying the Strategy pattern). This allows the model to be seamlessly linked to the tree view.
  • Use properties with getters and setters for the model classes' instance variables. The setter methods trigger an "element has changed" callback routine.
  • Replace the model classes' keyword variables with properties.
  • Use keyword arguments for the initialization of the properties.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.