GithubHelp home page GithubHelp logo

author-intrusion-cil's People

Contributors

dmoonfire avatar

Watchers

 avatar  avatar  avatar

Forkers

plumpmath

author-intrusion-cil's Issues

Highlight similiar words near each other

The system needs to be able to highlight (and optionally mark as warning or error) when similar words are used near each other. The ability to exclude certain words ("daddy" in Flight for example) would be needed for characters who repeat themselves frequently.

Create an installer for initial release

Ideally something that can be controlled via Git (so WiX or InnoSetup if it can handle it). Needs to install all the required components to execute the program.

Check for unterminated quotes

A plugin that highlights unterminated quotes. If the author uses the multiple paragraph quotes where the all but the last paragraph does not end in a quote, this would be turned off, but for everyone else it would be helpful to find the missing quote.

Implement binary file

Normally, we intend to have split text files written out for the document. However, for those not using source control, being able to combine it into a standard office container format (zip with metadata) would be required.

Implement quote isolation

This would use the View | Contextual Information pane, but would show a quote without any narrative.

For example, if the user has this:

"But," she muttered, "I disagree with this example."

The contextual information would show:

"But, I disagree with this example."

This would also lead into showing only quotes on a paragraph and performing grammar checking on full quotes.

Implement an auto-correct framework

A basic framework needs to be implemented to allow plugins to handle auto-corrections. This will be used by the Proper Nouns support to handle renaming characters, spell-checking support for common corrections, and explicit corrections in the settings.

Implement word count

The system needs to handle word count, both live in the status bar, and also counts broken down for selections or the entire document or a selection.

Using Microsoft Word as a basis, the following should be tracked:

  • Number of paragraphs (Block Types specifically)
  • Number of words (basic whitespace separation)
  • Number of characters
  • Number of characters without whitespace

With working on the document structure, we should also have a recursive version that takes into account the words, paragraphs, etc, for that block and all contained blocks.

Implement dynamic document structure

Being able to implement a document structure that fits the projects would be good. For example, Flight uses chapters, sections and every section has a blockquote and attribute. Other projects may have sub-sections or other elements. Being able to enforce some logic for this, plus simplify UI to handle it would make life easier.

Handle separate chapter files

Having everything in a single file increases the chance of problems and the memory. To allow the user to open one chapter at a time, but still integrate it with the main document would help with focus. This needs to allow manual "unloading" of a document from the main one to reduce memory consumption.

Pasting causes crash on Linux

When pasting into a document, this seems to happen on a consistent (but not always) basis.

(AuthorIntrusionGtk:5974): Gtk-CRITICAL **: IA__gtk_clipboard_request_text: assertion callback != NULL' failed Exception in Gtk# callback delegate Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception. System.ArgumentException: index and count exceed length of list at System.Collections.Generic.List1[MfGames.GtkExt.TextEditor.Renderers.Cache.CachedLine].CheckRange (Int32 idx, Int32 count) [0x00000] in :0
at System.Collections.Generic.List1[MfGames.GtkExt.TextEditor.Renderers.Cache.CachedLine].RemoveRange (Int32 index, Int32 count) [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.Renderers.Cache.CachedTextRenderer.ProcessLinesDeleted (System.Object sender, MfGames.GtkExt.TextEditor.Models.Buffers.LineRangeEventArgs args) [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.Renderers.Cache.CachedTextRenderer+<>c__DisplayClass4.<OnLinesDeleted>b__3 () [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.Renderers.Cache.CachedTextRenderer.ProcessQueuedLineChanges () [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.Renderers.Cache.CachedTextRenderer.GetLineLayoutHeight (Int32 startLineIndex, Int32 endLineIndex) [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.Renderers.BufferPositionHelper.ToScreenCoordinates (BufferPosition bufferPosition, IDisplayContext displayContext, System.Int32& lineHeight) [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.Editing.Caret.GetDrawRegion () [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.EditorView.ScrollToCaret () [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.EditorView.ScrollToCaret (BufferPosition bufferPosition) [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.Editing.Caret.SetAndScrollToPosition (BufferPosition position) [0x00000] in <filename unknown>:0 at MfGames.GtkExt.TextEditor.Editing.Commands.PasteCommandFactory.Do (System.Object context, MfGames.Commands.CommandFactoryManager1 commandFactory, System.Object commandData, MfGames.GtkExt.TextEditor.Models.OperationContext operationContext, MfGames.GtkExt.TextEditor.Editing.EditorViewController controller, IDisplayContext displayContext, BufferPosition position) [0x00000] in :0
at MfGames.GtkExt.TextEditor.Editing.Commands.TextEditingCommandFactory.Do (System.Object context, MfGames.Commands.CommandFactoryReference commandFactoryReference, MfGames.Commands.CommandFactoryManager1 controller) [0x00000] in <filename unknown>:0 at MfGames.Commands.CommandFactoryManager1[MfGames.GtkExt.TextEditor.Models.OperationContext].Do (System.Object context, MfGames.Commands.CommandFactoryReference commandFactoryReference) [0x00000] in :0
at MfGames.GtkExt.TextEditor.Editing.Actions.TextActions.Paste (MfGames.GtkExt.TextEditor.Editing.EditorViewController controller) [0x00000] in :0
at MfGames.GtkExt.TextEditor.Editing.ActionEntry.Perform (MfGames.GtkExt.TextEditor.Editing.EditorViewController controller) [0x00000] in :0
at MfGames.GtkExt.TextEditor.Editing.EditorViewController.HandleKeyPress (Key key, ModifierType modifier, UInt32 unicodeKey) [0x00000] in :0
at MfGames.GtkExt.TextEditor.EditorView.OnKeyPressEvent (Gdk.EventKey eventKey) [0x00000] in :0
at Gtk.Widget.keypressevent_cb (IntPtr widget, IntPtr evnt) [0x00000] in :0
at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal)
at Gtk.Widget.keypressevent_cb(IntPtr widget, IntPtr evnt)
at Gtk.Application.gtk_main()
at Gtk.Application.Run()
at AuthorIntrusion.Gui.GtkGui.GtkProgram.Main(System.String[] args)

To duplicate:

  • Open an existing document
  • Select 10-30 lines from gedit
  • Paste into author-intrusion

Forward delete should not add space

When deleting forward (control-delete) and it deletes the end of line, it inserts a space to the left of the cursor. This doesn't really make sense.

Implement a directory-based project saving

The initial structure for saving is a directory-based implementation. The directory name is user-specific, but the files inside it are coded with a consistent naming convention. This mimics the EPUB and OASIS Document standards and will faciliate moving to a single zip-based file.

The following structure is proposed:

  • project.aipx: Contains the primary project settings, the "top" level. This has a unique file extension to make it easier to map it in Windows and other operating systems.
  • Settings/
    • project.xml: The project-specific settings.
    • UUID.xml: Additional settings files from a server.
  • Documents/
    • NAME.xml: Chapters and blocks, the NAME is based on the user and kept meaningful to make it easier to work with in source control.

Using the End key causes issues with changes

When using "End" to go to the end of the line, it puts the system into an invalid state. Hitting enter, typing, or control back space all cause the system to crash.

Might also need to consider something that gives feedback on the error instead of crashing.

Implement contextual notes

Having notes where the caret is, such as character information, location, etc, would be nice for consistency.

Implement proper name support

Being able to identify a proper name (character, location) is critical. This includes:

  • Find usages of a given character.
  • Have multiple names (including possessives)
  • Be able to rename character terms
  • Have notes on a proper name
  • Identify quotes by a specific character
  • Have formatting rules (italics for inn and ship names)
  • Add auto correction for names

Highlight gerunds (-ing words) in narrative

The ability to handle highlighting gerunds in the code. Ideally it will show differing levels of warning depending on the frequency (instances per 1000 words or within 100 words).

Selecting all (manually) and deleting crashes

This happened on Linux:

Exception in Gtk# callback delegate
Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.ArgumentException: index and count exceed length of list
at System.Collections.Generic.List1[MfGames.GtkExt.TextEditor.Renderers.Cache.CachedLine].CheckRange (Int32 idx, Int32 count) [0x00000] in <filename unknown>:0 at System.Collections.Generic.List1[MfGames.GtkExt.TextEditor.Renderers.Cache.CachedLine].RemoveRange (Int32 index, Int32 count) [0x00000] in :0
at MfGames.GtkExt.TextEditor.Renderers.Cache.CachedTextRenderer.ProcessLinesDeleted (System.Object sender, MfGames.GtkExt.TextEditor.Models.Buffers.LineRangeEventArgs args) [0x00000] in :0
at MfGames.GtkExt.TextEditor.Renderers.Cache.CachedTextRenderer+<>c__DisplayClass4.b__3 () [0x00000] in :0
at MfGames.GtkExt.TextEditor.Renderers.Cache.CachedTextRenderer.ProcessQueuedLineChanges () [0x00000] in :0
at MfGames.GtkExt.TextEditor.Renderers.Cache.CachedTextRenderer.UpdateSelection (IDisplayContext displayContext, BufferSegment previousSelection) [0x00000] in :0
at MfGames.GtkExt.TextEditor.Editing.EditorViewController.HandleKeyPress (Key key, ModifierType modifier, UInt32 unicodeKey) [0x00000] in :0
at MfGames.GtkExt.TextEditor.EditorView.OnKeyPressEvent (Gdk.EventKey eventKey) [0x00000] in :0
at Gtk.Widget.keypressevent_cb (IntPtr widget, IntPtr evnt) [0x00000] in :0
at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal)
at Gtk.Widget.keypressevent_cb(IntPtr widget, IntPtr evnt)
at Gtk.Application.gtk_main()
at Gtk.Application.Run()
at AuthorIntrusion.Gui.GtkGui.GtkProgram.Main(System.String[] args)

To duplicate:

  • Control-Home
  • Shift-Control-End
  • Delete

Implement chapter folding

The code needs to handle folding a chapter. There should be two settings. One that allows a chapter to be folded down to just the title and one that folds a chapter down to its title and a summary.

Multiple setting support

One of the basic ideas of the system is the ability to have multiple settings contribute to a given project. These settings can be stylistic (third person outside of narrative), world-specific (names of locations and well-known people), common word lists (a semi-standard fantasy dictionary). These have to work with a project's settings to allow changes to one to affect everything it contributes to.

How these additional settings are managed is open to debate. The initial idea is to use a Settings/ folder (much like NuGet's packages/ directory). These settings are packaged with the project and have no automatic updating.

One thing to consider is an API (probably RESTful) that allows the system to query, update, and get specific versions of the settings from a common server. As with the rest of the system, settings files should have Semantic Versioning.

Implement split screen/views into the same document

Being able to split the view into two windows or tabs, put tabs side-by-side, and generally see the one or more documents at the same time would make life much easier while editing. A side note/panels window could also allow split screens to work more efficiently.

Automatic corrections while typing

While the user is typing, automatic corrections should be applied. These corrections should be stored in the projects with the more generic ones in "English" while allowing for more specific ones in other projects. All corrections should be used, with a mechanism for disabling ones in lower priority settings.

General intent is to correct common word typos, such as "teh" to "the". Also adding accents or allowing short names to be expanded.

Corrections should be applied on word break characters (space, period, comma, quote).

Implement spell checking

Implement spell-checking. This should be done as a plugin since there needs to be multiple dictionaries, such as ones from setting files, proper names. It also needs to handle different backends so we can use the aspell dictionary for English, but have a custom one for conlangs.

Implement import from Docbook 5

The system needs to be able to import Docbook 5. It would use a Docbook document structure, determined by the top tag, but otherwise should import at much contextual information as possible, including , , etc.

Pango layout issue on blank lines

(AuthorIntrusionGtk:18709): Pango-CRITICAL **: pango_layout_index_to_line_x: assertion `index >= 0' failed

This is caused when Pango is laying out a blank line. Might need to consider this along with the problem with accented characters.

Implement a Gtk-based GUI

For the initial 0.1.0 release, a Gtk# GUI should be implemented. This only has to handle the basic features (typing, auto-correct, dictionary lookup).

Implement export to PDF

This is to implement exporting to a PDF, with optional settings and/or selecting different XSL:FO stylesheets.

Implement multiple language support

For stories and novels that have multiple languages, being able to mark visually and identify them is useful. This should allow different formatting rules (fonts, colors). UI would include being able to select text and note it as a different language (either in that language or notationally translated). Also allow to change the entire quote (or sub-quote) to a language.

Languages should be defined as part of the project, to reduce information overload and filter out the selections.

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.