As I was building complex code generation framework, I realized that
asking for user input for several options is cumbersome and unproductive
(especially when most of the options are anyway defaulted). I have seen
some very clever use of dialogs in the form of wizards before (I think in
the cream project), but it is cumbersome to build and not to my taste
either. All that I need is a very simple presentation of a form with
data and allow the user to change only the fields that are required, so
I started experimenting and came up with a few maps that allow form like
features such as tabbing between fields and pressing buttons.

It works somewhat like the plugin that allows you to see and change Vim
settings in a buffer (can't recollect where I saw it), but allows ad-hoc
building of forms, more like a GUI (with no frills), so plugins can
define forms and show them for user input. It has a very simple
interface and forces some habbits on the user, but I think it is still
much better than not having anything. With some more improvements
(especially the syntax coloring) and more widget support, it can be very
useful.

The plugin is still in a proof-of-concept stage, but you can actually
define forms and play with them. Before I go ahead and spend a lot more
time, I thought it is wise to get the opinion of the experts here and
get the feedback as a whole (and may be even generate some interest for
contribution). It is available from:

http://haridara.googlepages.com/forms.vim

I have included the definition of a demo form so to try, all that you
need to do is download the above file and put in your autoload directory
and execute:

:call forms#ShowForm(forms#form)

The hotkeys are not currently highlighted, but they are functional, so
try pressing the first letter of field names with the meta combination
(e.g., <M-f> for the "First Name:" field).

Here are the features that I implemented so far:
   - Supports "textfield" and "button" fields.
   - Supports tabbing between fields.
   - Hotkeys to jump to a field directly.
   - Listeners for actions on buttons.
   - Use <Esc> in fields to cancel changes and restore old value.
   - Support for "default button" by hitting <Return> anywhere.

I think support for combobox and checkbox will make this truly
distinguishable from using dialogs and such. Vim7 popup completion will
be a great fit for implementing combobox. Here are the TODO items I have
noted so far:
   - Constructors/utilties for creating form objects (createForm(), addField()
     getField(), etc.).
   - Syntax highlighting:
     - labels
     - Buttons
     - Hotkey (underline)
   - ComboBox using completion popup. Optional user completion.
   - CheckBox using True/False combobox or "[x]" style buttons.
   - Support for disabling fields.
   - Mouse support.
   - Trap <C-C> and disable 'modifiable'

I would appreciate any kind of feedback on this.

-- 
Thanks,
Hari

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to