Coder Social home page Coder Social logo

pencilcode-rewrite's Introduction

Pencilcode-Rewrite

A ground-up rewrite of Pencilcode and Droplet

pencilcode-rewrite's People

Contributors

exlted avatar

Watchers

 avatar  avatar  avatar  avatar

pencilcode-rewrite's Issues

Blocks in general need to be scriptable

As noted in #2 the rendering needs to be generalized in some way. However, blocks should probably be scriptable, we'll provide the basic block types built in that should work out of the box (Block, nestable block, multi-nestable block) but any specialized block should probably be defined in the same location that the rendering code is defined, might even be able to be in the same file as the palettes and just have a single "loader" section of our code that parses out the file and passes the data to where it belongs.

Nested Blocks need to be stable

Nested blocks are currently the only blocks that can be made in the test environment here, Nesting seems to work relatively well, but it needs to be more stable.

Design the Active Document system

We will need something to manage the state of the active document that isn't the renderer. This may be the primary go between of the parser and the renderer, but it is more likely going to be the go between of this section, Parser, Renderer, Document, and anything that implements this API backend.

Fix the dragging

Right now, the blocks are held fast at the "top left" corner by the mouse, they should instead move by the delta of the mouse and possibly lag a little behind (for aesthetics sake)

Decide on a back-end parsing system to implement

Since we are going to need a parser, we need to decide on one to use. The original Droplet used Antlr, that might be an option. Whatever we use, we need to heavily document the process that is needed to turn a generic parser into the block-based parser that we'll need.

Deliverables for this issue will be
-A parser that will produce an output that allows us to create "blocks" for a language (C, C++, Java, Python)
-Documentation for the process that changed that parser from how it was found
-A test (read minimal and simplistic) system to create blocks from a file in the language of the parser

Add Better Rendering for when you are typing

Currently you can type in blocks... it just doesn't look like it when you click on them, when a block is marked as "writable" it should show a "text box" with a flashing cursor

Design the import file

My current thoughts are that a palette should control the blocks that appear in the (as of yet non-existent) block-list, the styles of all blocks (using a pre-computed CSS-like system) and the design of all blocks, at this time I'm not sure what the file format should look like, but if all three of those are going in a single file it'll end up being pretty large so we might split those out into three separate files then.

If it's all in one file it almost certainly needs to be JSON or XML to make parsing simple

Bonus points if we can make a palette to help us make palettes in the future!

Genericize block rendering code

Blocks need to be better at their rendering, right now the code is an absolute mess and a bear to write. It would also be nice to be able to make the Paths be data-driven rather than hard-coded

Add animation to the blocks

Let's make the blocks look pretty, this is a larger scale project and will be sitting around a long time. Right now, I think that adding a "stretching" animation for nesting blocks to "engulf" the block being nested into it would look great

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.