26#if defined (HAVE_CONFIG_H)
47 int lc = list->count ();
49 list->clearSelection ();
55 if (1 <= idx && idx <= lc)
57 list->item (idx-1)->setSelected (
true);
58 list->scrollToItem (list->item (idx-1));
60 && list->selectionMode () == QAbstractItemView::SingleSelection)
66 list->clearSelection ();
74 octave::interpreter& interp,
75 const graphics_object& go)
85 new QListWidget (container));
92 octave::interpreter& interp,
93 const graphics_object& go, QListWidget *list)
94 :
BaseControl (oct_qobj, interp, go, list), m_blockCallback (false),
95 m_selectionChanged (false)
100 if ((up.get_max () - up.get_min ()) > 1)
101 list->setSelectionMode (QAbstractItemView::ExtendedSelection);
103 list->setSelectionMode (QAbstractItemView::SingleSelection);
104 Matrix value = up.get_value ().matrix_value ();
105 if (value.
numel () > 0)
108 int lc = list->count ();
114 if (1 <= idx && idx <= lc)
116 list->item (idx-1)->setSelected (
true);
117 list->scrollToItem (list->item (idx-1));
118 if (i == 0 && (list->selectionMode ()
119 == QAbstractItemView::SingleSelection))
125 list->viewport ()->installEventFilter (
this);
127 connect (list, &QListWidget::itemSelectionChanged,
129 connect (list, &QListWidget::activated,
131 connect (list, &QListWidget::itemPressed,
142 QListWidget *list = qWidget<QListWidget> ();
146 case uicontrol::properties::ID_STRING:
154 case uicontrol::properties::ID_MIN:
155 case uicontrol::properties::ID_MAX:
156 if ((up.get_max () - up.get_min ()) > 1)
157 list->setSelectionMode (QAbstractItemView::ExtendedSelection);
159 list->setSelectionMode (QAbstractItemView::SingleSelection);
162 case uicontrol::properties::ID_LISTBOXTOP:
166 list->scrollToItem (list->item (idx-1),
167 QAbstractItemView::PositionAtTop);
171 case uicontrol::properties::ID_VALUE:
188 QListWidget *list = qWidget<QListWidget> ();
190 QModelIndexList l = list->selectionModel ()->selectedIndexes ();
194 for (
const auto& idx : l)
195 value(i++) = idx.
row () + 1;
230 case QEvent::KeyRelease:
240 return Object::eventFilter (watched, e);
245 bool override_return =
false;
246 QListWidget *list = qWidget<QListWidget> ();
250 case QEvent::MouseButtonPress:
252 QMouseEvent *m =
dynamic_cast<QMouseEvent *
> (e);
254 if (m->button () & Qt::RightButton)
255 override_return =
true;
258 if (! list->indexAt (m->pos ()).isValid ())
259 override_return =
true;
264 case QEvent::MouseButtonRelease:
266 QMouseEvent *m =
dynamic_cast<QMouseEvent *
> (e);
268 if (m->button () & Qt::RightButton)
269 override_return =
true;
271 else if (! list->indexAt (m->pos ()).isValid ())
273 list->setCurrentRow (list->count () - 1);
274 override_return =
true;
octave_idx_type numel(void) const
Number of elements in the array.
OCTAVE_API RowVector row(octave_idx_type i) const
Vector representing the dimensions (size) of an Array.
bool eventFilter(QObject *watched, QEvent *e)
void itemSelectionChanged(void)
void itemPressed(QListWidgetItem *)
bool eventFilter(QObject *watched, QEvent *e)
ListBoxControl(octave::base_qobject &oct_qobj, octave::interpreter &interp, const graphics_object &go, QListWidget *list)
void itemActivated(const QModelIndex &)
void sendSelectionChange()
static ListBoxControl * create(octave::base_qobject &oct_qobj, octave::interpreter &interp, const graphics_object &go)
virtual Container * innerContainer(void)=0
void gh_callback_event(const graphics_handle &h, const std::string &name)
void gh_set_event(const graphics_handle &h, const std::string &name, const octave_value &value)
static Object * parentObject(octave::interpreter &interp, const graphics_object &go)
Base class for Octave interfaces that use Qt.
QStringList fromStringVector(const string_vector &v)
T::properties & properties(graphics_object obj)
static void updateSelection(QListWidget *list, const Matrix &value)