Lightningbeam/GUI/Cocoa/ListButton.py

49 lines
1.5 KiB
Python

#--------------------------------------------------------------
#
# PyGUI - Pop-up list control - Cocoa
#
#--------------------------------------------------------------
from AppKit import NSPopUpButton
from GUI import export
from GUI.GListButtons import ListButton as GListButton
from GUI.Utils import NSMultiClass, PyGUI_NS_EventHandler, \
ns_set_action, ns_size_to_fit
class ListButton(GListButton):
_ns_handle_mouse = True
def __init__(self, **kwds):
titles, values = self._extract_initial_items(kwds)
self._titles = titles
self._values = values
frame = ((0, 0), (100, 20))
ns = PyGUI_NSPopUpButton.alloc().initWithFrame_pullsDown_(frame, False)
ns.pygui_component = self
ns_set_action(ns, 'doAction:')
self._ns_update_items(ns)
ns_size_to_fit(ns)
GListButton.__init__(self, _ns_view = ns, **kwds)
def _update_items(self):
self._ns_update_items(self._ns_view)
def _ns_update_items(self, ns):
ns.removeAllItems()
ns.addItemsWithTitles_(self._titles)
def _get_selected_index(self):
return self._ns_view.indexOfSelectedItem()
def _set_selected_index(self, i):
self._ns_view.selectItemAtIndex_(i)
#--------------------------------------------------------------
class PyGUI_NSPopUpButton(NSPopUpButton, PyGUI_NS_EventHandler):
__metaclass__ = NSMultiClass
__slots__ = ['pygui_component']
export(ListButton)