in reply to noveling and software design

Yeah, I started working on a "novelling software" using Tk awhile back. It's sitting on the back-burner for now.

I got the idea after seeing alot of prodigous authors, explain how they write. Commonly they start with a story board, which they fill in as they go. Imagine a whole wall, sectioned off into chapters, in each chapter section are the names of the characters in the chapter, and their words. Then a bunch of feedback and feedforward lines, interconnecting the chapters, where scenes from one chapter affect another.

So my idea is, using Tk's HList and Tabbed Notebook, is to have a list of Chapters in the leftframe, and when you select one, a tabbed notebook appears in right with all the characters and scenes of that chapter in separate tabs. Then if you click on a tab, it will display the writings. This is where I'm stuck. For instance if I click on "some scene1", I want all the character's text, from that scene, to be displayed in proper order. Or if I click on a character, I want all text displayed by which scene it comes from. Furthermore, if I right click, I want to have displayed all "connecting feedback scenes and characters" related to that text. I know it can be done, I'm thinking with Tk::Text tags, but maybe something else would be better?

This method would make editing a breeze, because you could pull up one character and change something in all scenes where he/she appears with just a few keystrokes. It would also make it easy to write screenplays, because you could selectively pull out 1 character's lines for separate printing.

Anyways, that is the direction I'm thinking. I hope it gives you something to think about.


I'm not really a human, but I play one on earth. flash japh

Replies are listed 'Best First'.
Re^2: noveling and software design
by dragonchild (Archbishop) on Nov 03, 2004 at 14:02 UTC
    You mind making that available? I'm working on a novel right now and I'd love to have that kind of software available ...

    Being right, does not endow the right to be rude; politeness costs nothing.
    Being unknowing, is not the same as being stupid.
    Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
    Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.

      Working on a poker game first...priorities. :-)

      I'm not really a human, but I play one on earth. flash japh
        Send me the code and I'll continue it ... I'm in the beginning stages of a novel myself and I would love to have something that will help me out.

        Being right, does not endow the right to be rude; politeness costs nothing.
        Being unknowing, is not the same as being stupid.
        Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
        Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.

Re^2: noveling and software design
by Tii (Monk) on Nov 03, 2004 at 15:47 UTC

    Wow, this really does sound like neat software. I know how pet projects can fall by the wayside. How far have you gotten on it?

    Tii
      How far have I gotten? Well, it's about half-way done. :-)

      Actually I have the basic framework laid out in ztkdb. Go there and look at the screenshot. You can see the leftframe, the tabbed notebook, and the db access already to go. You could use that right now, by setting up a graphic thumbnail for each chapter, and assigning more tabs in the configuration file. You would have a chapter-scene layout.

      But I havn't yet worked out the best way to store things in a db for a novel yet, so they can be retreived either by character, chapter or scene. But it will come to me. That ztkdb program is a graphical frontend to dbm, and if you play with it's configuration file, you can set it up for just about anything you want. But of course, it could be "optimized" to handle novel text entries. Feel free to take it and run with it. Here is a sample of what the configuration file might look like ( you can probably remove the sql search fields, but experiment first):

      ..snip..... ###################################################################### $user = 'zentara'; #database user name for Pg or M +ySql $password = 'foobar'; #db user password $db = 'SQLite'; #or 'Pg' or 'mysql' #select db #$db = 'Pg'; ################################################################### ####these are the catagories for your text tabs#### 8 allowed $texttab1='Intro'; $texttab2='First Act'; $texttab3='Second Act'; $texttab4='Third Act'; $texttab5='Fourth Act'; $texttab6='Fifth Act'; $texttab7='Sixth Act'; $texttab8='Finish'; ## run the color script for names of colors ### colors for the text tabs, do not choose ### dark colors or it will mask text ### these defaults are nice $tabcolor1='bisque'; $tabcolor2='lightyellow'; $tabcolor3='azure'; $tabcolor4='PeachPuff'; $tabcolor5='pink'; $tabcolor6='OldLace'; $tabcolor7='wheat1'; $tabcolor8='khaki'; ################################################################# ...snip....

      I'm not really a human, but I play one on earth. flash japh

        Slightly off-topic reply, but those $texttab and $tabcolor variables are screaming to be turned into an array. I can hear them from here, "please, please, turn us into an array!"

        My rule of thumb: nearly any time you have a bunch of variables with the same prefix, they should be put into either a hash or an array. In your case, the only difference between each variable name is a number, which strongly indicates an array.

        Update: looking more closely, it even seems those two sets of variables are related to eachother, which makes their screams even louder. Here's what I would do for something like that:

        @tabs = ( { text => 'Intro', color => 'bisque' }, { text => 'First Act', color => 'lightyellow' }, { text => 'Second Act', color => 'azure' }, { text => 'Third Act', color => 'PeachPuff' }, { text => 'Fourth Act', color => 'pink' }, { text => 'Fifth Act', color => 'OldLace' }, { text => 'Sixth Act', color => 'wheat1' }, { text => 'Finish', color => 'khaki' }, );
Re^2: noveling and software design
by apotheon (Deacon) on Nov 03, 2004 at 18:59 UTC

    Wonderful! Please, keep me updated on the details of this project's progress. I'm sure you'd find a lot of enthusiasm when you have a production-ready version of it at NaNoWriMo.

    I doubt I'm up to the challenge of adding to the project, especially since I've never used Tk in my life, but if I get around to eye-parsing the code at some point and have any ideas or suggestions to offer, I'll let you know.

    Thanks for mentioning this.

    - apotheon
    CopyWrite Chad Perrin