[Openmcl-devel] Creating a simple text input dialog

Ron Garret ron at flownet.com
Wed Apr 14 10:51:58 PDT 2021


Turns out the problem was a missing call to #/initWithFrame: on the input ns-text-field.

Figures that after literally an hour of beating on this I would figure it out five minutes after asking for help.

Sorry to clutter up your inboxes.

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

> 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
> 
> _______________________________________________
> 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