Giter Club home page Giter Club logo

twine_tweecode's Introduction

Twine

Introduction

A visual tool for creating interactive stories for the Web, based on the Twee story engine. Twine is written primarily in Python and Javascript, with UI widgets provided by wxPython. Twine was written by Chris Klimas. More information is available at http://twinery.org/

Twine 1 development is presently resigned to bugfixes and maintenance - although contributions for new features may still be considered for acceptance.

A web-application "sequel" to Twine 1, called Twine 2, is in active development. Its repositories are here and here.

Installation

The easiest way to install Twine is to download the installable versions for Windows or Mac OS X:

Set up a development environment

You can set up a development environment if you want to contribute to the project or if you want to run Twine on another platform (such as Linux).

You may want to run your development environment in a virtualenv:

virtualenv tweecode
cd tweecode/
source bin/activate

Get the code:

git clone [email protected]:tweecode/twine.git

Install required modules (note, wxPython will need to be installed separately from the pip requirements):

cd twine/
pip install -r requirements.txt

You should now have a working Twine setup. To start Twine:

python app.py

Contributing to Twine development

If you have bug fixes for Twine, the easiest way to contribute them back is as follows:

  • fork this repository (see link at top of the project page on github)
  • make your fixes and push them to your own fork on github
  • make a pull request (see link at top of the github project page)

To report bugs, issues or feature requests, use the github issues system.

twine_tweecode's People

Contributors

webbedspace avatar mthuurne avatar klembot avatar stormrose avatar greyelf avatar tmedwards avatar harmlesstrouble avatar christopherliu avatar factorypreset avatar mistydemeo avatar lachlancooper avatar philip-sutton avatar

Watchers

James Cloos avatar  avatar

twine_tweecode's Issues

Merge Webbedspace enhancement as of 25-sep

Merge from Webbedspace's repository as of 25-sep:

o Improved performance of Tweelexer
o Minor Tweelexer bug fixes
o Selected passage colouring improvements
o Syntax highlighting for macro params
o Made the passage tooltips functional
o Fixed file format backwards-compatibility
o Added file drag and drop functionality
o Added image drag-and-drop and embedding
o Added Copy and Paste menu items to image previews
o Images are now thumbnailed in the story map

Add support for schema evolution to pickled objects stored in tws file

The loading of a tws file which was created by a different version of Twine can result in errors if any class of the objects stored within the pickle have been changed by adding or subtracting attributes.

One way to handle this problem (schema evolution) is described in Listing 18 in this http://www.ibm.com/developerworks/library/l-pypers/

Another way to handle this is: http://code.activestate.com/recipes/521901-upgradable-pickles/

Fix positioning of New Passages

Currently when a new passage ("Untitled Passage X" ) is created it will appear as near to the top of the Story Panel as possible, which may be off screen if they used has paged down.

This is due to a bug introduced into the newWidget method back in 09-sep-2013.

The call to self.toLogical(pos) was changed to stored its return within the "qspos" variable, which is never used.

Merge UnstableEgghead enhancement as of 10-oct

Merge from UnstableEgghead's repository as of 10-oct:

o Add SugarCube specific macros handling
o Add SugarCube specific macro highlighting to tweelexer
o Add media tag with automatic base64 encoding of image (png, gif, jpg, jpeg), font (woff), and audio (ogg, mp3) files.
o Add ftp, https, and mailto to tiddlywiki external link checking.
o Add bind to the silently content highlighting.
o Add debug tag which prevents the stripping of newline characters.

NOTE: Cherry-pick commits when possible but this may not always be an option due to the divergence between the UnstableEgghead and the Tweecode repositories.

Rationalize determination of required file paths

The following are the paths that the application needs to know about while running and method used to determine the values may change based on OS being used:

icons - where icons files are found
targets - where target and header related files are found
header - where a particular header file is found, related to 'targets'
footer - where a particular footer file is found, related to 'targets'

Some of these values are re-determined as needed even though they don't change during the applications lifetime which is inefficient.

Tweelexer and external passages

Story Authors use the StoryIncludes feature to get around the Twine GUI's problem of displaying TWS files containing a large number of Passages.
A side-effect of doing this is that the TweeLexer incorrectly marks any links to these external passages as broken / non-existing.

One method to fix this is to parse the TWS files referenced within StoryIncludes, storing the passage names found within and to include this list when seaching to see if a passage exists.

PassageFrame Title field hides staring characters

The _Title_ field in _Passage Frame_ does not always show the whole value.

When viewing an existing Passage with a title that is longer than eighteen (18) characters (including white-space) in length then only the last eighteen (18) characters will be visible. The first character(s) can only be seen if you place the cursor within the field and move it to the start of the value.

eg:
a. Passage title of _abcdefghijklmnopqr_ appears in field as _abcdefghijklmnopqr_
b. Passage title of _abcdefghijklmnopqrs_ appears in field as _bcdefghijklmnopqrs, the _a is hidden.

NOTE:

  1. The actual number of characters where this effect starts occurring may vary based on OS and version of Python / wxPython , for me it was eighteen.
  2. This is a known problem

Ability for Header Authors to add functionality to application

Because the different Headers (Jonah, Sugarcane, SugarCube, etc) support different features/default macros, there is a need for the ability to allow the Header Author to influence/change how the Twine GUI works depending on the Header selected.
The would reduce the amount of hard-wiring required to support a feature that is not common to all Headers.

eg.

  1. The default headers (Jonah, Sugarcane and Responsive) only support end tags that start with the word 'end', whereas SugarCube also supports ones that start with a back-slash.
  2. SugarCube has a 'click' macro that has the ability to emulate a passage link, which the GUI could be enhanced to show an arrow for.

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.