dmoonfire / author-intrusion-cil Goto Github PK
View Code? Open in Web Editor NEWWriting and grammar tools for authors
Home Page: http://mfgames.com/mfgames-author
Writing and grammar tools for authors
Home Page: http://mfgames.com/mfgames-author
Have a mispelled word used twice in two different paragraphs. Add the word to the Local Words spelling. This should cause both of them to no longer be errors.
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.
Beyond spell-checking, having the ability to look up the definition of a word is needed to verify usage.
Implement an immediate editor that automatically converts quotes into fancy quotes along with handling primes properly.
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.
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.
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.
Being able to find related words to a selected or highlighted word is needed. It should tie into the alt-enter menu to allow changes.
This should combine "c" "a" "n" into a single undoable command.
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.
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.
For editing purposes, it would be nice to be able to only see dialog lines.
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:
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.
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.
This task is to export the file to ODF (.odt) files with controls on how to style or format it.
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.
Integrating Git or Subversion into the file save process would help with preventing data loss.
For authors who write in past tense, highlighting and marking as error any present tense words in narrative would be ideal.
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.List
1[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.CommandFactoryManager
1 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.CommandFactoryManager
1[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:
gedit
author-intrusion
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.
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:
Spelling errors should show up in the indicators bar.
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.
If you select some text and type a letter, it should delete the text and replace it with the letter.
Having notes where the caret is, such as character information, location, etc, would be nice for consistency.
When entering an accented character, such as é, the code to detect width does not work properly with multiple ones. To see this, paste "ééééééééééééééé" into a string and look at the cursor position.
This is probably related or can be fixed along with #35.
Being able to identify a proper name (character, location) is critical. This includes:
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).
For some authors, having blockquotes and optional attributions would be nice.
Every release of Author Intrusion needs to be dedicated to a writer. The about window should have the dedication along with the initial one.
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.List
1[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:
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.
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.
Joining paragrams with backspace or delete shouldn't add a space when dealing with empty paragraphs.
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.
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).
After the new Unicode processing, scrolling down seems to failing when the cursor is in the zero index. It goes to the end of the line and stops.
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.
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.
(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.
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).
This is to implement exporting to a PDF, with optional settings and/or selecting different XSL:FO stylesheets.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.