[Openmcl-devel] Creating a simple text input dialog

Ron Garret ron at flownet.com
Wed Apr 14 10:45:06 PDT 2021


Never mind, I figured it out.  (Well, actually I found some old code that does what I need.)

(defun passwd-dialog (&optional (prompt "Enter password:"))
  (let ((alert (make-instance 'ns:ns-alert)))
    (#/setMessageText: alert (ccl::%make-nsstring prompt))
    (#/addButtonWithTitle: alert (ccl::%make-nsstring "OK"))
    (#/addButtonWithTitle: alert (ccl::%make-nsstring "Cancel"))
    (bb input (make-instance 'ns:ns-secure-text-field)
        (#/initWithFrame: input (ns:make-ns-rect 0 0 200 24))
        (#/setAccessoryView: alert input)
        (#/autorelease input)
        (if (eql (#/runModal alert) #$NSAlertFirstButtonReturn)
          (ccl::lisp-string-from-nsstring (#/stringValue input))))))

I still have no idea why this works when the other one doesn’t, so it would still be great to get that figured out.

On Apr 14, 2021, at 10:37 AM, Ron Garret <ron at flownet.com> wrote:

> I’m trying to create a password input dialog.  Tried this:
> 
> (let ((alert (make-instance 'ns:ns-alert))
>      (input (make-instance 'ns:ns-text-field
>               :frame (ns:make-ns-rect 0 0 300 24)
>               :string (ccl::%make-nsstring "foo"))))
>  (#/setMessageText: alert (ccl::%make-nsstring "Alert!"))
>  (#/setInformativeText: alert (ccl::%make-nsstring "info"))
>  (#/addButtonWithTitle: alert (ccl::%make-nsstring "OK"))
>  (#/addButtonWithTitle: alert (ccl::%make-nsstring "Cancel"))
>  (#/setAccessoryView: alert input)
>  (#/runModal alert))
> 
> but it doesn’t work.  For some reason the ns-text-field is not showing up.  AFAICT this is because I am not initializing it properly.  If I try to just display it in a regular (non-alert) window, it doesn’t show up either.  What am I doing wrong?
> 
> I’ve scoured the web looking for some simple example code in ObjC that does this and come up empty.  I would not have thought that this would be that complicated.  For the record, what I’m really trying to do is to create a password input dialog.  Surely I’m not the first person to try to do this.
> 
> Thanks,
> rg
> 
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> https://lists.clozure.com/mailman/listinfo/openmcl-devel




More information about the Openmcl-devel mailing list