[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