popupmenu class
Provides a popup menu.
Inherits
object widget
Description
This widget can be used to display a popup menu. Technically, a popup menu consists of a list of menu items.
You add items with insertItem(). An item can be a string. In addition, items can have an optional icon drawn on the very left side.
Functions
$insertItem(<text:string>,[icon_id:string])
Inserts menu items into a popup menu with optional icon and return the popup identifier.
$addMenu(<popupmenu:hobject,[idx:uinteger])
Add a popupmenu. With the optional parameter idx the popup will be inserted.
$setTitle(<text:string>)
Sets the popupmenu title to text.
$exec([<widget:objects>,<x:uinteger>,<y:integer>])
If called without paramaters show the popup menu at the current pointer position.
With the optional parameters show the popup menu at the coordinate x,y widget parameter relative.
$removeItem(<popup_id:Uinteger>)
Removes the menu item that has the identifier ID.
$removeItemAt(<index:uinteger>)
Removes the menu item at position index.
$insertSeparator(<index:uinteger>)
Inserts a separator at position index.
If the index is negative the separator becomes the last menu item.
$activatedEvent(<popup_id:uinteger>)
This function is called when a menu item and return the the item ID.
The default implementation emits the $activated() signal.
$highligthtedEvent(<popup_id:uinteger>)
This function is called when a menu item is highlighted (hovered) and return the item ID.
The default implementation emits the $highlighted() signal.
Signals
$activated()
This signal is emitted by the default implementation of $activatedEvent().
$highlighted()
This signal is emitted by the default implementation of $highlightedEvent().
Examples
//First we define a class inherited from popupmenu class(menu,popupmenu) {     constructor()     {         //We store the item's ID for checking in activatedEvent         @%tile_id=@$insertItem("Tile",118)         @%cascade_id=@$insertItem("Cascade",115)         @$insertSeparator(3)         @%closeactw_id=@$insertItem("Close Active Window",08)         @%closeallw_id=@$insertItem("Close All Window",58)     }     activatedEvent()     {         //Now we emit a signals to the relative to the user choice         %id=$0         if (%id==@%tile_id) @$emit("tile")         else if(%id==@%cascade_id) @$emit("cascade")         else if (%id==@%closeactw_id) @$emit("closeactive")         else @$emit("closeallwindows")         //Deleting the popup         delete $$     } } class (ws,widget)
{     In the constructor we create everything that belong to the single widget.     constructor()     {         //Here we generate a loop to create our labels inside the widget.         %lay=$new(layout,$$)         we use a vbox to managing labels in vertical orientation         %vb=$new(vbox,$$)         Then add the vbox to the main layout         %lay->$addWidget(%vb,0,0)         Let's create our colorful labels         for(%i=0;%i<15;%i++)         {             @%label=$new(label,%vb)             @%label->$settext("Another class by N\&G")             #We set our foreground's colors using the hex array in a random way.             @%label->$setforegroundcolor($array($rand(255),$rand(255),$rand(255)))         }     }     customContextMenuRequestedEvent()     {         //We create the popupmenu relative to this widget at runtime.         %p=$new(menu,$$)         objects.connect %p tile @$parent tile         objects.connect %p cascade @$parent cascade         objects.connect %p closeactive @$parent closeactivewindow         objects.connect %p closeallwindows @$parent closeallwindows         %p->$exec($$,$($0+10),$($1+10))     } } //We create the workspace widget %Workspace=$new(workspace) //We use as space as we have %size[]=%Workspace->$screenResolution() //Resize it %Workspace->$resize(%size[0],%size[1]) //Then create 20 subwidget for(%i=0;%i<20;%i++) {     %w=$new(ws,%Workspace)     //Let's add every widget to the workspace     %Workspace->$addSubWindow(%w)     //Then "shake it" a little bit around :-)     %w->$move($rand($(%size[0]-50)),$rand($(%size[1]-50))) } //Reimplement closeEvent to delete all this :-) privateimpl(%Workspace,closeEvent) {     delete $$ } //Let's show! %Workspace->$show()

Index, Object Classes