Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Slots | Signals | Public Member Functions | Private Member Functions | Private Attributes
omni::ui::Input Class Reference

Input List widget. More...

#include <Input.h>

Inheritance diagram for omni::ui::Input:
Inheritance graph
[legend]
Collaboration diagram for omni::ui::Input:
Collaboration graph
[legend]

Public Slots

void addInput (QAction *)
 
void removeSelection ()
 Removes all selected inputs. More...
 
void clear ()
 Removes all inputs. More...
 
void changeSelection (QModelIndex)
 Select input at model index. More...
 

Signals

void inputChanged ()
 
void inputRemoved ()
 
void dataModelChanged ()
 
void inputIndexChanged ()
 

Public Member Functions

 Input (QWidget *=nullptr)
 
 ~Input ()
 
- Public Member Functions inherited from omni::ui::DockWidget
 DockWidget (QWidget *=nullptr)
 
template<typename UI >
 DockWidget (UI &_ui, QWidget *_parent=nullptr)
 
virtual ~DockWidget ()
 
- Public Member Functions inherited from omni::ui::mixin::DataModel< DATAMODEL, SHARED >
 DataModel ()
 
void setDataModel (pointer_type _dataModel)
 Set new data model. More...
 
pointer_type dataModel ()
 Return pointer to data model. More...
 
const pointer_type dataModel () const
 Return pointer to data model (const version) More...
 
virtual void updateFrontend ()
 Push data to frontend widgets and all child widgets. More...
 
virtual void updateDataModel ()
 Update the data model interface. More...
 

Private Member Functions

void dataToFrontend ()
 Update sliders from given blend mask. More...
 
bool frontendToData ()
 Assign slider values to blend mask. More...
 
void setupInputMenu (QMenu *)
 
void inputUpdatedEmitter ()
 
void selectInputId (QString const &)
 
void prepareModel ()
 Setup the item model with columns etc. More...
 
bool showSettingsDialog (input::Interface *)
 
QString itemId (int _row) const
 
void addItem (QString const &_id, input::Interface *)
 Add an item to input list widget. More...
 
void parameterWidgetSetupOptions (QWidget *_paramWidget) const
 Additional options. Is called during setup process. More...
 
void showParameterWidget ()
 
- Private Member Functions inherited from omni::ui::mixin::ParameterWidget<>
void removeParameterWidget (PARENT_WIDGET *_widget)
 Remove parameter widget from given widget. More...
 
bool setupParameterWidget (PARENT_WIDGET *_widget, INTERFACE *_interface)
 Setup widget for interface and place it onto widget. More...
 
widget_typeparameterWidget ()
 Return pointer to parameterWidget. More...
 

Private Attributes

std::unique_ptr< Ui::Input > ui_
 
std::unique_ptr
< QStandardItemModel > 
model_
 

Additional Inherited Members

- Public Types inherited from omni::ui::mixin::DataModel< DATAMODEL, SHARED >
typedef DATAMODEL data_model_type
 Data type. More...
 
typedef DataModel
< data_model_type, SHARED > 
type
 This type. More...
 
typedef detail::PointerType
< data_model_type, SHARED > 
pointer_type_handler
 Pointer type handler. More...
 
typedef pointer_type_handler::type pointer_type
 Derived pointer type. More...
 
- Protected Member Functions inherited from omni::ui::DockWidget
template<typename UI >
void setup (UI &_ui)
 Setup ui form UI parameter is smart pointer (e.g. unique_ptr) to UI form. More...
 
- Protected Member Functions inherited from omni::ui::mixin::Locked
template<typename F >
void locked (F f)
 Lock widget and execute given functor. More...
 
bool isLocked () const
 Return true if widget is locked. More...
 
- Private Types inherited from omni::ui::mixin::ParameterWidget<>
typedef QWidget widget_type
 

Detailed Description

Input List widget.

Constructor & Destructor Documentation

omni::ui::Input::Input ( QWidget *  _parent = nullptr)
36  :
37  DockWidget(_parent)
38  {
39  this->setup(ui_);
40 
41  // Make popup menu for adding inputs
42  {
43  QMenu* _menu = new QMenu();
44  setupInputMenu(_menu);
45  ui_->btnAddInput->setMenu(_menu);
46  connect(_menu,SIGNAL(triggered(QAction*)),this,SLOT(addInput(QAction*)));
47  }
48 
49  connect(ui_->inputList,SIGNAL(clicked(QModelIndex)),this,SLOT(changeSelection(QModelIndex)));
50  connect(ui_->inputList,SIGNAL(activated(QModelIndex)),this,SLOT(changeSelection(QModelIndex)));
51  connect(ui_->btnRemoveInput,SIGNAL(clicked()),this,SLOT(removeSelection()));
52 
53  prepareModel();
54  }
void addInput(QAction *)
Definition: Input.cpp:104
void setup(UI &_ui)
Setup ui form UI parameter is smart pointer (e.g. unique_ptr) to UI form.
Definition: DockWidget.h:44
std::unique_ptr< Ui::Input > ui_
Definition: Input.h:99
void prepareModel()
Setup the item model with columns etc.
Definition: Input.cpp:202
DockWidget(QWidget *=nullptr)
Definition: DockWidget.cpp:24
void removeSelection()
Removes all selected inputs.
Definition: Input.cpp:143
void setupInputMenu(QMenu *)
Definition: Input.cpp:61
void changeSelection(QModelIndex)
Select input at model index.
Definition: Input.cpp:177
omni::ui::Input::~Input ( )
57  {
58  }

Member Function Documentation

void omni::ui::Input::addInput ( QAction *  _action)
slot
105  {
106  if (!dataModel()) return;
107 
108  auto _idInput = dataModel()->inputs().addInput(_action->text());
109  auto& _id = _idInput.first;
110  auto& _input = _idInput.second;
111 
112  if (!_input) return;
113 
114  if (_input->canAdd())
115  {
116  addItem(_id,_input);
117  selectInputId(_id);
119  emit inputIndexChanged();
120  } else
121  {
122  dataModel()->inputs().removeInput(_id);
123  }
124  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void showParameterWidget()
Definition: Input.cpp:193
void addItem(QString const &_id, input::Interface *)
Add an item to input list widget.
Definition: Input.cpp:227
void inputIndexChanged()
void selectInputId(QString const &)
Definition: Input.cpp:126
void omni::ui::Input::addItem ( QString const &  _id,
input::Interface _input 
)
private

Add an item to input list widget.

228  {
229  if (!_input) return;
230 
231  QList<QStandardItem*> _row;
232  auto _addItem = [&](QString const& _id) {
233  QStandardItem* _item = new QStandardItem(_id);
234  _item->setEditable(false);
235  _row << _item;
236  };
237 
238  _addItem(_id);
239  _addItem(_input->getTypeId().str());
240  _addItem(_input->infoText());
241 
242  model_->invisibleRootItem()->appendRow(_row);
243  ui_->inputList->resizeColumnToContents(0);
244  ui_->inputList->resizeColumnToContents(1);
245  ui_->inputList->resizeColumnToContents(2);
246 
247  _input->setUpdateCallback(std::bind(&Input::inputUpdatedEmitter,this));
248  }
std::unique_ptr< Ui::Input > ui_
Definition: Input.h:99
std::unique_ptr< QStandardItemModel > model_
Definition: Input.h:100
void inputUpdatedEmitter()
Definition: Input.cpp:139
void omni::ui::Input::changeSelection ( QModelIndex  _index)
slot

Select input at model index.

178  {
179  if (!dataModel() || this->isLocked()) return;
180  int _row = _index.row();
181 
182  if (_row < 1 || _row > dataModel()->inputs().numberOfChildren())
183  {
184  _row = -1;
185  }
186 
187  if (itemId(_row) == dataModel()->inputs().currentId()) return;
188 
189  selectInputId(itemId(_row));
191  emit inputIndexChanged();
192  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
QString itemId(int _row) const
Definition: Input.cpp:171
void showParameterWidget()
Definition: Input.cpp:193
void inputIndexChanged()
bool isLocked() const
Return true if widget is locked.
Definition: Locked.h:40
void selectInputId(QString const &)
Definition: Input.cpp:126
void omni::ui::Input::clear ( )
slot

Removes all inputs.

163  {
164  if (!dataModel()) return;
165  dataModel()->inputs().clear();
166  prepareModel();
168  emit inputIndexChanged();
169  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void prepareModel()
Setup the item model with columns etc.
Definition: Input.cpp:202
void showParameterWidget()
Definition: Input.cpp:193
void inputIndexChanged()
void omni::ui::Input::dataModelChanged ( )
signal
void omni::ui::Input::dataToFrontend ( )
privatevirtual

Update sliders from given blend mask.

Implements omni::ui::mixin::DataModel< DATAMODEL, SHARED >.

93  {
94  prepareModel();
95  for (auto& _input : dataModel()->inputs())
96  {
97  addItem(_input.first,_input.second.get());
98  }
99  selectInputId(dataModel()->inputs().currentId());
101  emit inputIndexChanged();
102  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void prepareModel()
Setup the item model with columns etc.
Definition: Input.cpp:202
void showParameterWidget()
Definition: Input.cpp:193
void addItem(QString const &_id, input::Interface *)
Add an item to input list widget.
Definition: Input.cpp:227
void inputIndexChanged()
void selectInputId(QString const &)
Definition: Input.cpp:126
bool omni::ui::Input::frontendToData ( )
inlineprivatevirtual

Assign slider values to blend mask.

Implements omni::ui::mixin::DataModel< DATAMODEL, SHARED >.

74  {
75  return false;
76  }
void omni::ui::Input::inputChanged ( )
signal
void omni::ui::Input::inputIndexChanged ( )
signal
void omni::ui::Input::inputRemoved ( )
signal
void omni::ui::Input::inputUpdatedEmitter ( )
private
139  {
140  emit inputChanged();
141  }
QString omni::ui::Input::itemId ( int  _row) const
private
171  {
172  auto* _item = model_->item(_row);
173  if (!_item) return QString();
174  return _item->text();
175  }
std::unique_ptr< QStandardItemModel > model_
Definition: Input.h:100
void omni::ui::Input::parameterWidgetSetupOptions ( QWidget *  _paramWidget) const
privatevirtual

Additional options. Is called during setup process.

Reimplemented from omni::ui::mixin::ParameterWidget<>.

250  {
251  QSizePolicy _sizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
252  _sizePolicy.setVerticalStretch(1);
253  _paramWidget->setSizePolicy(_sizePolicy);
254  _paramWidget->setMinimumSize(QSize(0,128));
255  }
void omni::ui::Input::prepareModel ( )
private

Setup the item model with columns etc.

203  {
204  this->removeParameterWidget(widget());
205 
206  model_.reset(new QStandardItemModel());
207  model_->clear();
208  model_->setColumnCount(3);
209  model_->setHeaderData(0,Qt::Horizontal,"Id");
210  model_->setHeaderData(1,Qt::Horizontal,"Input Type");
211  model_->setHeaderData(2,Qt::Horizontal,"Info");
212  ui_->inputList->setModel(model_.get());
213 
214  QList<QStandardItem*> _row;
215  QStandardItem* _hash = new QStandardItem("#");
216  _hash->setEditable(false);
217  QStandardItem* _item = new QStandardItem("(no input)");
218  _item->setEditable(false);
219  _row << _hash;
220  _row << _item;
221  model_->invisibleRootItem()->appendRow(_row);
222  ui_->inputList->resizeColumnToContents(0);
223  ui_->inputList->resizeColumnToContents(1);
224  ui_->inputList->resizeColumnToContents(2);
225  }
std::unique_ptr< Ui::Input > ui_
Definition: Input.h:99
std::unique_ptr< QStandardItemModel > model_
Definition: Input.h:100
void removeParameterWidget(PARENT_WIDGET *_widget)
Remove parameter widget from given widget.
Definition: ParameterWidget.h:40
void omni::ui::Input::removeSelection ( )
slot

Removes all selected inputs.

144  {
145  if (dataModel()->inputs().empty()) return;
146 
147  int _row = ui_->inputList->currentIndex().row();
148 
149  if (_row < 1 || _row > dataModel()->inputs().numberOfChildren()) return;
150 
151  auto* _item = model_->item(_row);
152  if (!_item) return;
153 
154  dataModel()->inputs().removeInput(_item->text());
155  model_->removeRows(_row,1);
156 
157  this->removeParameterWidget(widget());
158  changeSelection(model_->index(_row,0));
159  emit inputRemoved();
160  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
std::unique_ptr< Ui::Input > ui_
Definition: Input.h:99
std::unique_ptr< QStandardItemModel > model_
Definition: Input.h:100
void removeParameterWidget(PARENT_WIDGET *_widget)
Remove parameter widget from given widget.
Definition: ParameterWidget.h:40
void changeSelection(QModelIndex)
Select input at model index.
Definition: Input.cpp:177
void omni::ui::Input::selectInputId ( QString const &  _id)
private
126  {
127  dataModel()->inputs().setCurrentId(_id);
128  auto* _current = dataModel()->inputs().current();
129  if (_current) {
130  for (auto& _input : dataModel()->inputs()) {
131  input::Controller::instance()->deactivate(_input.second.get());
132  }
134  _current->update();
135  emit inputChanged();
136  }
137  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void activate(input::Interface *)
Activate input.
Definition: Controller.cpp:50
void deactivate(input::Interface *)
Deactivate input.
Definition: Controller.cpp:65
static Controller * instance()
Definition: Controller.cpp:33
void omni::ui::Input::setupInputMenu ( QMenu *  _menu)
private

Find all categories

No categories exist

61  {
62  std::map<QString,QMenu*> _categoryMenus;
63  /// Find all categories
64  for (auto& _idInputClass : omni::input::Factory::classes()) {
65  auto* _input = omni::input::Factory::create(_idInputClass.first,nullptr);
66  if (!_input) continue;
67 
68  auto _id = _idInputClass.first.str();
69 
70  auto _categories = _input->categories();
71  if (_categories.empty()) {
72  QAction* _menuItem = new QAction(QIcon(QString(":/input/")+ _id + QString(".png")),_id,_menu);
73  _menu->addAction(_menuItem);
74  }
75 
76  for (auto& _category : _categories) {
77  if (!_categoryMenus.count(_category)) {
78  _categoryMenus[_category] = new QMenu(_category);
79  }
80  auto* _catMenu = _categoryMenus[_category];
81  QAction* _menuItem = new QAction(QIcon(QString(":/input/")+ _id + QString(".png")),_id,_menu);
82  _catMenu->addAction(_menuItem);
83  }
84  }
85 
86  /// No categories exist
87  for (auto& _categoryMenu : _categoryMenus) {
88  _menu->addMenu(_categoryMenu.second);
89  }
90  }
static interface_type * create(const key_type &_key, const ARGS &..._args)
Instantiates an object of the class by id and constructor arguments.
Definition: factory.hpp:101
static class_map_type const & classes()
Gives readonly access to registered classes.
Definition: factory.hpp:108
void omni::ui::Input::showParameterWidget ( )
private
193  {
194 
195  this->setupParameterWidget(widget(),dataModel()->inputs().current());
196  if (this->parameterWidget()) {
197  connect(this->parameterWidget(),SIGNAL(inputChanged()),this,SIGNAL(inputChanged()));
198  connect(this,SIGNAL(inputChanged()),this->parameterWidget(),SLOT(triggerUpdate()));
199  }
200  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
bool setupParameterWidget(PARENT_WIDGET *_widget, INTERFACE *_interface)
Setup widget for interface and place it onto widget.
Definition: ParameterWidget.h:51
widget_type * parameterWidget()
Return pointer to parameterWidget.
Definition: ParameterWidget.h:73
bool omni::ui::Input::showSettingsDialog ( input::Interface )
private

Field Documentation

std::unique_ptr<QStandardItemModel> omni::ui::Input::model_
private
std::unique_ptr<Ui::Input> omni::ui::Input::ui_
private

The documentation for this class was generated from the following files: