* Re: emacs forms input [not found] <mailman.10.1280910238.19279.help-gnu-emacs@gnu.org> @ 2010-08-04 8:53 ` Teemu Likonen 2010-08-04 11:55 ` Teemu Likonen 0 siblings, 1 reply; 8+ messages in thread From: Teemu Likonen @ 2010-08-04 8:53 UTC (permalink / raw) To: Ilya Shlyakhter; +Cc: help-gnu-emacs * 2010-08-03 18:51 (-0400), Ilya Shlyakhter wrote: > Is there a way in Emacs Lisp to create a dialog with several fields > (that would work in text mode also), have the user fill out the > dialog, and then get the results? It is possible and I'll give you some examples. First a graphical dialog: (x-popup-dialog t '("How about making a choice?" ("Choice1" . value1) ("Choice2" . value2)) nil) Text dialog (a menu actually): (let ((tmm-completion-prompt "How about making a choice?\n\n")) (tmm-prompt '("" ("" ("Choice1" . value1) ("Choice2" . value2))))) Now, if you want to abstract the implementation between graphical and text interface it could be a function like this: (defun my-dialog (title item-alist) (if (display-popup-menus-p) (x-popup-dialog t (cons title item-alist) nil) (let ((tmm-completion-prompt (concat title "\n\n"))) (tmm-prompt (list "" (cons "" item-alist)))))) Example: (my-dialog "How about making a choice?" '(("Choice1" . value1) ("Choice2" . value2))) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: emacs forms input 2010-08-04 8:53 ` emacs forms input Teemu Likonen @ 2010-08-04 11:55 ` Teemu Likonen 2010-08-04 16:24 ` Ilya Shlyakhter [not found] ` <mailman.1.1280939096.6287.help-gnu-emacs@gnu.org> 0 siblings, 2 replies; 8+ messages in thread From: Teemu Likonen @ 2010-08-04 11:55 UTC (permalink / raw) To: Ilya Shlyakhter; +Cc: help-gnu-emacs * 2010-08-04 11:53 (+0300), Teemu Likonen wrote: > Now, if you want to abstract the implementation between graphical and > text interface it could be a function like this: > > (defun my-dialog (title item-alist) > (if (display-popup-menus-p) > (x-popup-dialog t (cons title item-alist) nil) > (let ((tmm-completion-prompt (concat title "\n\n"))) > (tmm-prompt (list "" (cons "" item-alist)))))) Perhaps I should add that if you use C-g (keyboard-quit) or close the dialog box using window's close button that causes a quit signal and the function nor its callers won't return. Here's a new version which will catch the quit signal and, if that happens, return nil: (defun my-dialog (title item-alist) (condition-case nil (if (display-popup-menus-p) (x-popup-dialog t (cons title item-alist) nil) (let ((tmm-completion-prompt (concat title "\n\n"))) (tmm-prompt (list "" (cons "" item-alist))))) (quit nil))) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: emacs forms input 2010-08-04 11:55 ` Teemu Likonen @ 2010-08-04 16:24 ` Ilya Shlyakhter 2010-08-04 16:29 ` Lennart Borgman [not found] ` <mailman.3.1280939390.6287.help-gnu-emacs@gnu.org> [not found] ` <mailman.1.1280939096.6287.help-gnu-emacs@gnu.org> 1 sibling, 2 replies; 8+ messages in thread From: Ilya Shlyakhter @ 2010-08-04 16:24 UTC (permalink / raw) To: Teemu Likonen; +Cc: help-gnu-emacs Thanks, that helps; but I was looking for something more: not simply choosing a command from a menu, but displaying a dialog with multiple fields, letting the user fill some of them, and getting the result -- like displaying an HTML <FORM>. Basically, I want the user to call an elisp function with many possible optional arguments. The standard elisp solution seems to be, "if called with one C-u prefix, function does this; if called with C-u C-u, it does that; ..." -- this is unintuitive and quickly gets hard to remember. In a GUI program I'd display a dialog box with multiple fields, with some of them filled-in with defaults, and let the user change the fields they want. It seems that ncurses should support that? Does it? thanks, ilya On Wed, Aug 4, 2010 at 7:55 AM, Teemu Likonen <tlikonen@iki.fi> wrote: > * 2010-08-04 11:53 (+0300), Teemu Likonen wrote: > >> Now, if you want to abstract the implementation between graphical and >> text interface it could be a function like this: >> >> (defun my-dialog (title item-alist) >> (if (display-popup-menus-p) >> (x-popup-dialog t (cons title item-alist) nil) >> (let ((tmm-completion-prompt (concat title "\n\n"))) >> (tmm-prompt (list "" (cons "" item-alist)))))) > > Perhaps I should add that if you use C-g (keyboard-quit) or close the > dialog box using window's close button that causes a quit signal and the > function nor its callers won't return. Here's a new version which will > catch the quit signal and, if that happens, return nil: > > (defun my-dialog (title item-alist) > (condition-case nil > (if (display-popup-menus-p) > (x-popup-dialog t (cons title item-alist) nil) > (let ((tmm-completion-prompt (concat title "\n\n"))) > (tmm-prompt (list "" (cons "" item-alist))))) > (quit nil))) > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: emacs forms input 2010-08-04 16:24 ` Ilya Shlyakhter @ 2010-08-04 16:29 ` Lennart Borgman 2010-08-04 16:53 ` Ilya Shlyakhter [not found] ` <mailman.3.1280939390.6287.help-gnu-emacs@gnu.org> 1 sibling, 1 reply; 8+ messages in thread From: Lennart Borgman @ 2010-08-04 16:29 UTC (permalink / raw) To: Ilya Shlyakhter; +Cc: help-gnu-emacs, Teemu Likonen On Wed, Aug 4, 2010 at 6:24 PM, Ilya Shlyakhter <ilya_shl@alum.mit.edu> wrote: > Thanks, that helps; but I was looking for something more: not simply > choosing a command from a menu, > but displaying a dialog with multiple fields, letting the user fill > some of them, and getting the result -- > like displaying an HTML <FORM>. I know of no such general solution, but I have tried to do something like that in "M-x search-form" in nXhtml. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: emacs forms input 2010-08-04 16:29 ` Lennart Borgman @ 2010-08-04 16:53 ` Ilya Shlyakhter 0 siblings, 0 replies; 8+ messages in thread From: Ilya Shlyakhter @ 2010-08-04 16:53 UTC (permalink / raw) To: Lennart Borgman; +Cc: help-gnu-emacs, Teemu Likonen Great, thanks a lot -- that was exactly what I was looking for! So, I guess the Emacs Widget Library at http://www.dina.kvl.dk/~abraham/custom/widget.html is the answer. Thanks again! ilya p.s. a related question: is there a text-mode menus library, e.g. something based on the ncurses menus library? tmm-menubar doesn't let you physically select menu items -- it displays the menu above and you have to choose an item in the minibuffer. On Wed, Aug 4, 2010 at 12:29 PM, Lennart Borgman <lennart.borgman@gmail.com> wrote: > nXhtml ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <mailman.3.1280939390.6287.help-gnu-emacs@gnu.org>]
* Re: emacs forms input [not found] ` <mailman.3.1280939390.6287.help-gnu-emacs@gnu.org> @ 2010-08-05 14:39 ` Ted Zlatanov 0 siblings, 0 replies; 8+ messages in thread From: Ted Zlatanov @ 2010-08-05 14:39 UTC (permalink / raw) To: help-gnu-emacs On Wed, 4 Aug 2010 18:29:25 +0200 Lennart Borgman <lennart.borgman@gmail.com> wrote: LB> On Wed, Aug 4, 2010 at 6:24 PM, Ilya Shlyakhter <ilya_shl@alum.mit.edu> wrote: >> Thanks, that helps; but I was looking for something more: not simply >> choosing a command from a menu, but displaying a dialog with multiple >> fields, letting the user fill some of them, and getting the result -- >> like displaying an HTML <FORM>. LB> I know of no such general solution, but I have tried to do something LB> like that in "M-x search-form" in nXhtml. Gnus has assistant.el which is very general and IMHO suitable for data collection. It supports all the Emacs widgets, I think. It's not Gnus-specific although the intent is to eventually use it to set up Gnus interactively. Ted ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <mailman.1.1280939096.6287.help-gnu-emacs@gnu.org>]
* Re: emacs forms input [not found] ` <mailman.1.1280939096.6287.help-gnu-emacs@gnu.org> @ 2010-08-04 22:23 ` Tim X 0 siblings, 0 replies; 8+ messages in thread From: Tim X @ 2010-08-04 22:23 UTC (permalink / raw) To: help-gnu-emacs Ilya Shlyakhter <ilya_shl@alum.mit.edu> writes: > Thanks, that helps; but I was looking for something more: not simply > choosing a command from a menu, > but displaying a dialog with multiple fields, letting the user fill > some of them, and getting the result -- > like displaying an HTML <FORM>. > > Basically, I want the user to call an elisp function with many > possible optional arguments. > The standard elisp solution seems to be, "if called with one C-u > prefix, function does this; > if called with C-u C-u, it does that; ..." -- this is unintuitive and > quickly gets hard to remember. > In a GUI program I'd display a dialog box with multiple fields, with > some of them filled-in with > defaults, and let the user change the fields they want. It seems that > ncurses should support that? > Does it? > > thanks, > > ilya > > On Wed, Aug 4, 2010 at 7:55 AM, Teemu Likonen <tlikonen@iki.fi> wrote: >> * 2010-08-04 11:53 (+0300), Teemu Likonen wrote: >> >>> Now, if you want to abstract the implementation between graphical and >>> text interface it could be a function like this: >>> >>> (defun my-dialog (title item-alist) >>> (if (display-popup-menus-p) >>> (x-popup-dialog t (cons title item-alist) nil) >>> (let ((tmm-completion-prompt (concat title "\n\n"))) >>> (tmm-prompt (list "" (cons "" item-alist)))))) >> >> Perhaps I should add that if you use C-g (keyboard-quit) or close the >> dialog box using window's close button that causes a quit signal and the >> function nor its callers won't return. Here's a new version which will >> catch the quit signal and, if that happens, return nil: >> >> (defun my-dialog (title item-alist) >> (condition-case nil >> (if (display-popup-menus-p) >> (x-popup-dialog t (cons title item-alist) nil) >> (let ((tmm-completion-prompt (concat title "\n\n"))) >> (tmm-prompt (list "" (cons "" item-alist))))) >> (quit nil))) >> > What about using emacs' forms? tim -- tcross (at) rapttech dot com dot au ^ permalink raw reply [flat|nested] 8+ messages in thread
* emacs forms input @ 2010-08-03 22:51 Ilya Shlyakhter 0 siblings, 0 replies; 8+ messages in thread From: Ilya Shlyakhter @ 2010-08-03 22:51 UTC (permalink / raw) To: help-gnu-emacs Is there a way in Emacs Lisp to create a dialog with several fields (that would work in text mode also), have the user fill out the dialog, and then get the results? thanks, ilya ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-08-05 14:39 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <mailman.10.1280910238.19279.help-gnu-emacs@gnu.org> 2010-08-04 8:53 ` emacs forms input Teemu Likonen 2010-08-04 11:55 ` Teemu Likonen 2010-08-04 16:24 ` Ilya Shlyakhter 2010-08-04 16:29 ` Lennart Borgman 2010-08-04 16:53 ` Ilya Shlyakhter [not found] ` <mailman.3.1280939390.6287.help-gnu-emacs@gnu.org> 2010-08-05 14:39 ` Ted Zlatanov [not found] ` <mailman.1.1280939096.6287.help-gnu-emacs@gnu.org> 2010-08-04 22:23 ` Tim X 2010-08-03 22:51 Ilya Shlyakhter
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.