GithubHelp home page GithubHelp logo

novelistapp / novelist Goto Github PK

View Code? Open in Web Editor NEW
18.0 4.0 3.0 219 KB

A cool text editor for authors

License: MIT License

Rust 94.77% Shell 3.73% Dockerfile 1.50%
rust-lang writing-software gtk3 gtk-rs

novelist's Introduction

An awesome text editor for authors.

For end-users

Sorry! There isn't much to show off yet. But be sure to check the github releases soon!

For developers

Novelist is entirely written in Rust, and as such uses the cargo build system. Make sure you have Rust installed on your system before proceeding. You will need a nightly compiler version which is newer then 2018-09-15.

There is a lot of documentation about the internal workins right in the code. You can use cargo to generate easily readable, local web-pages from it.

$ cargo doc --document-private-items --open

If you want to help out with an issue, make sure to let someone know. We might be able to help you – if you want. The code itself follows some very rigid structures so make sure to look at how other types and components are laid out before writing anything.

And always make sure to test your code with cargo test πŸ˜‰

Code of Conduct

We have a code of conduct and it's documented here, which is the Contributer Covenant. Be nice!

License

Novelist is free software, licensed under the MIT/X11 license. This means you are allowed to do pretty much whatever with the project that you want. In any case, be sure to read the LICENSE file to make sure.

novelist's People

Contributors

killercup avatar spacekookie avatar woodworker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

novelist's Issues

max-width and linebreak not implemented yet

expected behaviour:
The page will break (as in line-break not breaking the ux kind of a break) at some point.

actual behaviour:
Since there's no linebreak nor page size implemented yet, the window will maximize itself without having a max-bound.

how to fix this:
Add some page-size settings or at least some smart linebreaks to the application.

Is this app alive?

Hi,

Could you tell me if this app is still alive? I'm so excited to try the end result of this great project, but your last commit seems to be 2 years old.

Are you still maintaining it?

Thank you.

Initial MVP

This is a tracking issue for the last few steps required to get an MVP off the ground

  • Connect RootWindow Model with file I/O backend
  • Hook up core button functionalities
    • Load
    • Save/ SaveAs

Tracking Issue: Testing

novelist will end up being very complex and as such we should worry about testing early. What is there to test?

  • File I/O logic
  • Various text logic elements in novelist-core
  • UI event hookups in novelist-gtk
  • Macro expansions from novelist-codegen ?

Most of these are """easy""" to test. How can we test relm-gtk code?

Kakoune streaming adapter

It might be possible to use kakoune as a terminal-mode text frontend via the distraction free plugin.

This would mean that the novelist backend needs to be able to connect to a running kakoune instance via the RPC interface and stream file changes in and out of the novelist-core internal text buffers.

This requires a lot of work and should be considered of a low priority.

Change crate structure

This is inevitable so maybe we just do it now rather than later.

  1. Main UI crate (novelist-ui)
  2. Data persistence crate (novelist-core or novelist-data)
  3. Procedural macro helpers (novelist-codegen)

Maybe a crate that wraps it all together? (novelist-core or just novelist)

Then we have a binary which is called novelist which uses either 1 and 2 or just a meta crate

Redesign file format

This is a tracking issue about two aspects of the file format

  • Text encoding format (right now json, soon to be xml)
  • Folder structure for a novel and universe

Text encoding

  • Rust struct with simple serde Serialize/Deserialize attributes
  • Custom xml en-/decoder, working with some schema

Basic elements

  • <metadata> tags at the top of a document
    • Scene name
    • authors
    • creation/ modification date
    • <note> sections to display in info panel
  • <text> section contains the main body
    • <paragraph> sections around a paragraph.
    • Question: <sentence> sections around sentences?
    • <style foo> sections around style elements
      • bold
      • italics
      • underline
      • h1
      • h2
      • h3
    • <comment> sections around inline comments

File structure

The following outlines the way files could be arranged

my_novel/
β”œβ”€β”€ meta
β”œβ”€β”€ metadata.novel
β”œβ”€β”€ script
β”‚Β Β  β”œβ”€β”€ chapter_a
β”‚Β Β  β”‚Β Β  └── scene1.xml
β”‚Β Β  β”œβ”€β”€ chapter_b
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ scene1.xml
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ scene2.xml
β”‚Β Β  β”‚Β Β  └── scene3.xml
β”‚Β Β  β”œβ”€β”€ chapter_c
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ scene1.xml
β”‚Β Β  β”‚Β Β  └── scene2.xml
β”‚Β Β  └── chapter_d
β”‚Β Β      β”œβ”€β”€ scene1.xml
β”‚Β Β      β”œβ”€β”€ scene2.xml
β”‚Β Β      └── scene3.xml
└── universe
    β”œβ”€β”€ characters
    β”‚Β Β  β”œβ”€β”€ alice_bob.xml
    β”‚Β Β  └── jane_smith.xml
    β”œβ”€β”€ metadata.universe
    β”œβ”€β”€ places
    β”‚Β Β  β”œβ”€β”€ london_underground.xml
    β”‚Β Β  └── paris_cafe.xml
    └── templates
        β”œβ”€β”€ character.xml
        β”œβ”€β”€ conversation.xml
        β”œβ”€β”€ family_tree.xml
        └── location.xml

Implement file I/O module

Take the structures that are described in #1 and map them onto the following folder structures.

MyProject/
  MyProject.novel
  Novel/
    Chapter/
      Scene.bla
  Universe/
    assets/
    templates/
    characters/
    ...
  (assets/)
    ...
MyWorld/
  MyWorld.universe
  assets/
    .../

Initial icon set

The following functions are available via the Header bar

  1. Create new objects (files, chapters, ...) (menu)
  2. Delete current object
  3. Change formatting settings (menu)
  4. Change alignment settings (menu)
  5. Choose writing mode (menu)
  6. Hamburger-style application menu
  7. Save As (menu)
  8. Save

The Gtk standard icons aren't exactly nice. So…find some that do, make some from scratch? How do we deal with bright/ dark colour schemes?

cc/ @wieueberall

Implement Rust structures

We need a basic rust struct structure for keeping data in memory.

  • Novel Project (metadata)
    • Chapter
    • Scene
    • Asset
  • Universe (metadata)
    • Template
    • Character
    • Asset

This has to map onto a folder/ file structure described by #2

Build basic Glade UI file

Use the amazing and infallible glade to design the ✨✨ ✨ P E R F E C T ✨ ✨ ✨ interface for novelist.

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.