Monday, July 14, 2014

User Interface

I'm still working on the inheritance code.  It's alot of work and my free time is sparse.  However, in between coding sessions, I've been thinking about what I will build on top of the base Idea library.  Basically, all I'm working on now is the base file storage for the base idea structure.  So far, I haven't even touched the UI.  Thinking about it is a bit stressful.  Since there are no precedents, I'm not exactly sure how to do it.  However, I have a few ideas.

There are two specific ways I want the user to be able to interact with ideas so far.  First, they will have a basic drawing board.  They can drag and drop ideas onto it, arrange them how they please and edit them while they're sitting there on the drawing board.  This is the most basic UI idea I have.  In the finished product, this feature might evolve drastically or even be tossed, but I think it's a good starting point.

Second, I want the user to be able to create his/her own interface for the ideas.  This will be similar to Microsoft Access forms.  I think this can be very handy if done right.  Then again, I haven't tried it out, so it might backfire.  But all ideas are good ideas until proven bad, so I'll give it a shot.

The drawing board will be my first project, just so I have a playground to test things out.  It will likely change alot over time.  My ideas for the UI aren't nearly as solid as the idea structure.  At the base level, a saved drawing board will store which ideas are in it and their locations.

However, there are a ton of other features I've thought of as well.  Here are a few random ones:
  • Hiding certain fields in an idea.
  • Hovering over a minimized list field will show a small sub-menu that allows them to either expand the list within the idea or show the linked ideas to the side with lines connecting them.  Maybe rather than a typical menu, the choices would be visual.  In other words, to the side would be a faint image of lines branching out to squares and below it would be a faint image of a list of idea names.  They need only hover over one and click.
  • Operations on multiple ideas at once.  For example, if the user selects a group of "scene" ideas, then he can have them all show the "character" ideas linked to them.
  • Automated arranging.  Somehow, I'd like to allow the user to make the layout of the drawing board automated.  In other words, when the user expands a list of ideas next to a parent idea, rather than just placing them on top of other ideas, arrange them in a visually pleasing way...somehow.  I'll have to research that.  The biggest difficulty would be dealing with all the "link" lines running around.  Maybe I'd have them go "around" other ideas rather than keep them as straight lines.  We'll see.
  • Masks.  A user can create a "mask" which is a preset view for an idea type.  In the mask, the user will set how the idea will be displayed on the drawing board.  For example, he/she can choose which fields will be displayed, which ones are read-only, etc.  The user can set certain drawing boards to only show certain ideas with their masks or the user can open individual ideas with certain masks.
That's just a few.  I need to keep track of them all.  I'm excited about it, but it's definitely daunting.  While I hope to be done iterating the foundation of the software, it's time to move on to the UI.  I've made so many iterations of the foundation, but every iteration of the UI (there have only been a couple that were usable) has so far only been basic.  I only made them so I could test the software.  This time, I'll make additions to the foundation and evolve it slowly, but I will not start over on it.  SQLite makes it easy to keep the changes small.  But the UI will go through huge changes over time.

I really want to keep it fairly experimental for a while.  Idea is a new animal.  No one has done it before.  I have no precedent, so I don't want to try to make it work like existing software that I've already used.  I'll borrow ideas, of course, but I'll also make up my own.

If you can tell, I'm excited about Idea.  I want to get past the foundation so I can start playing with UI.  It will be a little longer before I can, but I'll keep trucking along.  If you like my ideas or if you have one of your own, please let me know.

Thanks for reading,
clevceo

No comments: