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
