Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!

Close

PyI7 -- a Python/Tkinter IDE for Inform 7 on Linux

What's implemented

  • You get a text editor window with your story in it. You can edit it. It has undo/redo, and syntax highlighting.
  • You can invoke the Inform 7 compiler chain to build a game file.
  • You can invoke your favourite interpreter to playtest it.
  • You can invoke a HTML browser to read the Inform documentation, index files produced by the compiler, and Inform extensions.
  • You can even run it as a command-line program if you want to, without all that GUI stuff getting in the way. Woo hoo!

What's not

  • There's no support for the skein or transcript.
  • There's no "Replay" function.

Requirements

To install and run things properly, you will need the following already installed:

  1. Python >= 2.5 with the Tkinter package using Tk >= 8.4.

  2. The Linux Inform 7 distribution. The latest version can be found here:

    http://www.inform-fiction.org/I7Downloads

  3. A web browser capable of displaying frames. Tested with Firefox, but others should work OK.

  4. Optional, but nice: some decent Z-code and GLULX interpreters. The default is to use the dumb versions distributed with Inform 7 in an xterm. Yuck. Instead, I recommend gargoyle for both:

    http://ccxvii.net/gargoyle

Mini-FAQ

  1. Why does this exist? Have you not heard of gnome-inform7?
  1. Yes. I tried to install it, but gave up after the 83rd GNOME package dependency. So, inspired by Adam Thornton's comments at the end of his 'i7' shell script, I started this minimal IDE.
  1. What's the status of this release?
  1. This is a beta release. It's nowhere near finished yet, and I'm only releasing it to get some feedback about what's good, what's not, and what features people would like (and hopefully some code implementing them too :-).
  1. Why Python?
  1. It's fun to hack. And it's really _really_ fast to get something together that works. And most importantly, it's the most appropriate language for interfacing to Natural Inform ("We are the knights who say..." :-)
  1. Ewww! Why did you use sucky Tkinter widgets, and not something like wxPython?
  1. Firstly, the emphasis is on 'minimal' -- I wanted the minimum of package dependencies. As it stands at the moment, this package should run straight out of the box on a recent Linux distro without having to install anything except the Inform 7 binaries. Secondly, er... nope, that's it.
  1. How do I change the font/window size/other thing I don't like the look of?
  1. I'm in the process of naming widgets so that you can tweak ~/.Xdefaults to customize things, but it's not finished. For now, look in tktools/options.py and fiddle with settings in there.
  1. External HTML browser? But how are links back into the game source text going to work?
  1. They aren't. But they do link to an HTMLized copy of it, at the right place.
  1. This looks nothing like the cool Windoze or Mac versions! Why not?
  1. Realistically, Tkinter is never going to look cool. If you want cool, you're better off waiting for gnome-inform7 to catch up with those platforms.
  1. I can't get it to work on Windoze or Mac. Should it?
  1. Nope, it probably won't. I haven't tried it, and don't intend to. But why are you even bothering if you have the zillion-times-better interface for those systems?

Building and installing

To build the package, type:

python setup.py build

To install it, type:

python setup.py install

There's also a Makefile supplied, so that you can just type 'make' and 'make install' in the usual manner.

Hacking guidelines

The distribution consists of:

scripts/pyi7 The main program. You run it. inform7 Package that knows about Inform 7. tktools Package of generic Tkinter GUI tools. examples Bunch of standard I7 examples.

If you're thinking of adding some GUI functionality, try to add the general case to the tktools package first, and then an implementation of it in the inform7 package. That way, tktools is more useful for building different applications.

Finally...

I welcome all bug reports and suggestions. Code contributions are even more welcome (see the TODO file). I am Glenn Hutchings <zondo42@googlemail.com>.

Recent activity

Nothing to see here, move along.

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.