PopUpMenu:
Filter:
Classes | GUI > Views

PopUpMenu : ItemViewBase : View : QObject : Object

A view displaying a text item selectable from a drop-down menu.
Subclasses: QPopUpMenu

Description

When clicked, this view opens a menu containing several text items, then closes the menu and displays one of the items after it is selected.

Class Methods

Inherited class methods

Undocumented class methods

PopUpMenu.qtClass

Instance Methods

Data

.items

.items = stringArray

From superclass: ItemViewBase

The list of items displayed in a menu when the view is clicked.

Arguments:

stringArray

An Array of Strings or Symbols.

.clear

From superclass: ItemViewBase

Removes all items.

.item

From superclass: ItemViewBase

The currently selected item.

Returns:

A String.

.value

.value = val

The index of the currently selected item.

Arguments:

val

An integer, or nil meaning no selected item.

.valueAction = val

From superclass: ItemViewBase

Sets -value and triggers -action.

Arguments:

val

An integer, or nil meaning no selected item.

Appearance

.stringColor

.stringColor = color

The color used to display text.

Arguments:

color

A Color.

.background

.background = color

Setting this variable colors the area of the view under the text with the given color.

Arguments:

color

A Color.

Interaction

.allowsReselection

.allowsReselection = flag

Determines whether the action is triggered when selecting already selected item. Defaults to false.

Arguments:

flag

A Boolean.

Actions

.action

.action = func

From superclass: View

The action object evaluated whenever the user changes the selected item from the menu. See -allowsReselection for customization.

Drag and drop

.defaultGetDrag

Returns:

The -value.

.defaultCanReceiveDrag

Returns:

True if the current drag data is a number.

.defaultReceiveDrag

Sets -valueAction to the current drag data.

Inherited instance methods

Examples

Basic Example

(
w = Window.new("The Eightfold Path").front;
m = PopUpMenu(w, Rect(10, 10, 180, 20));

m.items = [
 "right view", "right thinking", "right mindfulness", "right speech",
 "right action", "right diligence", "right concentration", "right livelihood"
];

m.background_(Color.green(0.7));  // only changes the look of displayed item
m.stringColor_(Color.white);   // only changes the look of displayed item
m.font_(Font("Courier", 13));   // only changes the look of displayed item
m.action = { arg menu;
 [menu.value, menu.item].postln;
};
)

m.value;   // returns the index of the current item;
m.item;    // returns the String or Symbol of the current item

m.value_(2);  // changes the displayed item, but does not evaluate the action
m.valueAction_(3); // evaluates the action.

Sound Example

Play different functions:

(
s.waitForBoot({

 var w, menu, snd, funcs, b;

 w = Window.new.front;

 menu = PopUpMenu(w, Rect(10, 10, 90, 20))
  .items_(["Sine", "Saw" , "Noise" , "Pulse"]);

 funcs = [
  { SinOsc.ar(440, 0, 0.3) },
  { Saw.ar(440, 0.3) },
  { WhiteNoise.ar(0.3) },
  { Pulse.ar(440, 0.2, 0.3) }
 ];

 b = Button(w, Rect(110, 10, 180, 20))
  .states_([["play", Color.black, Color.green]])
  .mouseDownAction_({
    snd = funcs.at(menu.value).play;
   })
  .action_({ arg butt, mod;
    snd.release;
   });

 w.front;

 p = CmdPeriod.add({ b.value_(0) }); // set button to 0 on hitting Cmd-period
 w.onClose_{ snd.release; CmdPeriod.removeAll }; // clean up when window is closed

})
)