We have a 1/2 decent version working right now based on NSTextField. It shows a 
scrolling table
with a NSWindowController, and selects from the table (and beeps if not there). 
It also
has a NSPopUpButton on the side to use as an additional option (handy for short 
lists
or if the user is already mousing).  Basically, that is the same approach we 
use/used in the 
C++ version (PowerPlant, Carbon).

But, getting all the details to work just right has been extremely difficult.  
NSComboBox
is sooooo close, and so much less futzing.  Also, the combo box in Windows MFC 
does exactly what we need, and it would be nice if both platforms looked the 
same.

One big beef I have is that it's not possible to step into Cocoa source, unlike 
PowerPlant
or MFC.  It makes it much harder to understand what's going on inside Cocoa.

Thanks,

Casey McDermott

Turtle Creek Software 
http://www.turtlesoft.com 
607 220-4514

--------------------------------------------
On Wed, 7/25/18, Sandor Szatmari <admin.szatmari....@gmail.com> wrote:

 Subject: Re: NSComboBox
 To: "Keary Suska" <cocoa-...@esoteritech.com>
 Cc: "Casey McDermott" <supp...@turtlesoft.com>, "Cocoa-Dev (Apple)" 
<cocoa-dev@lists.apple.com>
 Date: Wednesday, July 25, 2018, 7:40 PM
 
 I have done stuff like this just
 using NSTextField.  You can connect delegate methods to
 supply the array of suitable strings to select from that
 match the ‘prefix’ the user types in.  For every
 character the user types I recalculate the array of
 completions.  You can filter a very long list of
 completions very quickly.  I don’t have the code in front
 of me but I can post something tomorrow if this sounds like
 an avenue you haven’t considered yet.
 
 I think it was a combination of:
 
 -controlTextDidChange:
 
 -(NSArray *)control:(NSControl
 *)control textView:(NSTextView *)textView
 completions:(NSArray *)words
 forPartialWordRange:(NSRange)charRange
 indexOfSelectedItem:(NSInteger *)index
 
 I found that the non obvious part was setting
 the pointer ‘index’ to -1 or something like that to
 indicate that no selection was made yet.  This caused the
 entire list of possible completions to be presented. Then
 everything worked as expected.  If you know the index of
 the string you want to autocomplete to you set ‘index’
 to that, well…, index.
 
 Sandor
 
 > On
 Jul 25, 2018, at 18:56, Keary Suska <cocoa-...@esoteritech.com>
 wrote:
 > 
 > NSComboBox
 is just a suped-up NSTextField, so you can some sort of
 validation so you can prevent the user from exiting the
 field if they don’t enter an acceptable value. The most
 basic approach is delegation and doing the check in 
 -control:textShouldEndEditing:
 > 
 > HTH,
 > 
 > Keary Suska
 >
 Esoteritech, Inc.
 > "Demystifying
 technology for your home or business"
 > 
 >> On Jul 25, 2018,
 at 4:40 PM, Casey McDermott <supp...@turtlesoft.com>
 wrote:
 >> 
 >> I
 forgot to mention that the lists may contain 10,000s of
 items. Maybe 100,000s. 
 >> Typing to
 select from NSPopUpButton works OK for short lists.  I just
 made a test 
 >> popup with 300 items
 and it's already awkward.  10K would be absurd.
 >> 
 >> These are
 business records, and users may data enter hundreds a day. 
 They want 
 >> to tab, type a few
 letters to select a customer, tab to the next field, type a
 bit to
 >> select an inventory item,
 etc.  Type a customer that doesn't exist and it should
 beep 
 >> and ignore the keystrokes. 
 If they need to enter a new customer, it's a
 right-click, 
 >> then a panel to enter
 more than just the name.
 >> 
 >> Our current interface does use popup
 buttons for some things, but people complain
 >> about them.  They don't want to
 take hands off keyboard.  We plan to convert those 
 >> to combo boxes so it can be completely
 mouseless.
 >> 
 >> That "disambiguating field"
 article by Tog may be on one of the developer CDs.  
 >> I can't find it online. It
 explained this use case very well, and interface to solve
 it. 
 >> It was a major reason why we
 switched from Excel templates to a C++ app.
 >> NSComboBox is close, but we need it
 confined to existing items.
 >> 
 >> Thanks,
 >> 
 >> Casey McDermott
 >> 
 >> Turtle Creek
 Software 
 >> http://www.turtlesoft.com 
 >> 607 220-4514
 >>
 
 >>
 --------------------------------------------
 >> On Wed, 7/25/18, Jens Alfke <j...@mooseyard.com>
 wrote:
 >> 
 >>
 Subject: Re: NSComboBox
 >> To:
 "Casey McDermott" <supp...@turtlesoft.com>
 >> Cc: cocoa-dev@lists.apple.com
 >> Date: Wednesday, July 25, 2018, 2:51
 PM
 >> 
 >> 
 >> 
 >> On
 >> Jul 25, 2018, at 10:45 AM, Casey
 McDermott <supp...@turtlesoft.com>
 >> wrote:
 >> The
 >> goal is to auto-fill an account from
 what they type, and
 >> ignore typing
 if not a match.
 >> 
 >> That sounds like the regular
 behavior
 >> of NSPopUpButton: after
 clicking to pop up the menu, you can
 >> type-select items from it. 
 >> (Although it doesn't ignore
 >> mismatches, it just selects the
 closest item.)
 >> —Jens
 >>
 _______________________________________________
 >> 
 >> Cocoa-dev
 mailing list (Cocoa-dev@lists.apple.com)
 >> 
 >> Please do
 not post admin requests or moderator comments to the
 list.
 >> Contact the moderators at
 cocoa-dev-admins(at)lists.apple.com
 >>
 
 >> Help/Unsubscribe/Update your
 Subscription:
 >> https://lists.apple.com/mailman/options/cocoa-dev/cocoa-dev%40esoteritech.com
 >> 
 >> This email
 sent to cocoa-...@esoteritech.com
 > 
 >
 _______________________________________________
 > 
 > Cocoa-dev mailing
 list (Cocoa-dev@lists.apple.com)
 > 
 > Please do not post
 admin requests or moderator comments to the list.
 > Contact the moderators at
 cocoa-dev-admins(at)lists.apple.com
 > 
 > Help/Unsubscribe/Update your
 Subscription:
 > https://lists.apple.com/mailman/options/cocoa-dev/admin.szatmari.net%40gmail.com
 >
 
 > This email sent to admin.szatmari....@gmail.com
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to