Open ComboBoxGadget?

Mac OSX specific forum
wombats
Enthusiast
Enthusiast
Posts: 664
Joined: Thu Dec 29, 2011 5:03 pm

Open ComboBoxGadget?

Post by wombats »

Hi,

Is it possible to force a ComboBoxGadget to open using CocoaMessage?

I don't know if it's the right function, but I've found performClick in NSPopUpButtonCell. I don't know how to get access to it, nor what I would specify for "frame" and "controlView", however.

Thank you for any suggestions.
wilbert
PureBasic Expert
PureBasic Expert
Posts: 3870
Joined: Sun Aug 08, 2004 5:21 am
Location: Netherlands

Re: Open ComboBoxGadget?

Post by wilbert »

You can perform a click on the gadget itself put when I tried the gadget closed immediately after opening. :?

Code: Select all

CocoaMessage(0, GadgetID(MyComboGadget), "performClick:", 0)
Windows (x64)
Raspberry Pi OS (Arm64)
User avatar
TI-994A
Addict
Addict
Posts: 2512
Joined: Sat Feb 19, 2011 3:47 am
Location: Singapore
Contact:

Re: Open ComboBoxGadget?

Post by TI-994A »

wilbert wrote:You can perform a click on the gadget itself put when I tried the gadget closed immediately after opening. :?

Code: Select all

CocoaMessage(0, GadgetID(MyComboGadget), "performClick:", 0)
It works perfectly on High Sierra.
Texas Instruments TI-99/4A Home Computer: the first home computer with a 16bit processor, crammed into an 8bit architecture. Great hardware - Poor design - Wonderful BASIC engine. And it could talk too! Please visit my YouTube Channel :D
User avatar
Shardik
Addict
Addict
Posts: 1989
Joined: Thu Apr 21, 2005 2:38 pm
Location: Germany

Re: Open ComboBoxGadget?

Post by Shardik »

You have to use two different methods to programmatically open a non-editable ComboBox (NSPopUpButton) or an editable ComboBox (NSComboBox). I have tested the following example successfully on these MacOS versions:
- MacOS 10.6.8 'Snow Leopard' with PB 5.46 x86 in ASCII and Unicode mode
- MacOS 10.9.5 'Mavericks' with PB 5.46 x86 in ASCII and Unicode mode
- MacOS 10.13.6 'High Sierra' with PB 5.46 x64 in ASCII and Unicode mode

Code: Select all

EnableExplicit

Define i.I
Define Selector.I = sel_registerName_("popUp:")

OpenWindow(0, 270, 100, 200, 200, "ComboBoxGadgets")
ComboBoxGadget(0, 10, 20, WindowWidth(0) - 20, 25)
ComboBoxGadget(1, 10, 70, WindowWidth(0) - 20, 25, #PB_ComboBox_Editable)
ButtonGadget(2, 10, 130, WindowWidth(0) - 20, 25, "Open 1st ComboBox")
ButtonGadget(3, 10, 160, WindowWidth(0) - 20, 25, "Open 2nd ComboBox")

For i = 1 To 3
  AddGadgetItem(0, -1, "Item " + Str(i))
  AddGadgetItem(1, -1, "Editable item " + Str(i))
Next

SetGadgetState(0, 0)
SetGadgetState(1, 0)

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 2
          CocoaMessage(0, GadgetID(0), "performClick:", 0)
        Case 3
          CocoaMessage(0, CocoaMessage(0, GadgetID(1), "cell"),
            "performSelector:", Selector)
      EndSelect
  EndSelect
ForEver
wombats
Enthusiast
Enthusiast
Posts: 664
Joined: Thu Dec 29, 2011 5:03 pm

Re: Open ComboBoxGadget?

Post by wombats »

Thank you, all.

I guess I was overthinking it. :oops:
Post Reply