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::ToolBar Class Reference

Omnidome main window toolbar. More...

#include <ToolBar.h>

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

Public Slots

void setScreenSetupMode ()
 
void setArrangeMode ()
 
void setWarpMode ()
 
void setBlendMode ()
 
void setColorCorrectionMode ()
 
void setExportMode ()
 
void setLiveMode ()
 
void showAbout ()
 Show About dialog. More...
 
void buttonStates ()
 Set button states (e.g. disable buttons when modes are not accessible) More...
 

Signals

void dataModelChanged ()
 

Public Member Functions

 ToolBar (QWidget *=nullptr)
 
 ~ToolBar ()
 
- 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 setMode (Session::Mode)
 
void dataToFrontend ()
 Update buttons from session. More...
 
bool frontendToData ()
 Set session mode from buttons. More...
 

Private Attributes

QToolButton * btnSettings_ = nullptr
 
QToolButton * btnScreenSetup_ = nullptr
 
QToolButton * btnArrange_ = nullptr
 
QToolButton * btnWarp_ = nullptr
 
QToolButton * btnBlend_ = nullptr
 
QToolButton * btnColorCorrection_ = nullptr
 
QToolButton * btnExport_ = nullptr
 
QToolButton * btnLive_ = nullptr
 

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::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...
 

Detailed Description

Omnidome main window toolbar.

Constructor & Destructor Documentation

omni::ui::ToolBar::ToolBar ( QWidget *  _widget = nullptr)
34  :
35  QToolBar(_widget) {
36  setStyleSheet("QToolBar {"
37  "border-bottom: 0px solid #080808 ;"
38  "}"
39  );
40 
41  setFloatable(false);
42  setMovable(false);
43  setIconSize(QSize(28, 28));
44 
45  auto _makeButton = [&](QString const& _iconId,
46  QString const& _caption = QString(),
47  int _iconSize = 24) ->
48  QToolButton * {
49  auto *_button = new QToolButton();
50 
51  _button->setSizePolicy(QSizePolicy::Maximum,
52  QSizePolicy::Expanding);
53  _button->setMinimumSize(QSize(120, 40));
54  _button->setCheckable(true);
55  _button->setText(_caption);
56  _button->setToolButtonStyle(
57  Qt::ToolButtonTextBesideIcon);
58  _button->setIconSize(QSize(_iconSize, _iconSize));
59 
60  auto _makeIconFile =
61  [&](QString const& _s,
62  QString const& _suffix = QString()) {
63  return QString(":/icons/") +
64  _s + _suffix + ".png";
65  };
66 
67  QIcon _icon(_makeIconFile(_iconId));
68  _icon.addPixmap(QPixmap(_makeIconFile(_iconId,
69  "_disabled")), QIcon::Disabled,
70  QIcon::On);
71  _icon.addPixmap(QPixmap(_makeIconFile(_iconId,
72  "_disabled")), QIcon::Disabled,
73  QIcon::Off);
74  _button->setIcon(_icon);
75 
76  _button->setStyleSheet(
77  "QToolButton {"
78  " border: 0px solid #080808; "
79  " margin: 4px 4px 4px 0px; "
80  "}"
81  "QToolButton:checked {"
82  " border: 2.5px solid #5e5e5e ;"
83  " background-color: #5e5e5e ;"
84  " color : #f8f8f8 ; "
85  "}"
86  );
87 
88  return _button;
89  };
90 
91  auto _makeAction =
92  [&](QToolButton *_btn, QString const& _shortCut = QString()) {
93  addSeparator();
94  auto *_action = this->addWidget(_btn);
95  this->connect(_action, SIGNAL(
96  triggered()), _btn, SIGNAL(clicked()));
97  _action->setShortcut(QKeySequence(_shortCut));
98  return _action;
99  };
100 
101  btnSettings_ = _makeButton("logo", "O M N I D O M E", 40);
102  btnSettings_->setStyleSheet(
103  "QToolButton {"
104  " border: 0px solid #080808; "
105  " margin: 4px 4px 4px 0px; "
106  " font-size: 16px; "
107  "}"
108  "QToolButton:checked {"
109  " border: 2.5px solid #5e5e5e ;"
110  " background-color: #5e5e5e ;"
111  " color : #f8f8f8 ; "
112  "}");
113  btnSettings_->setMinimumSize(QSize(160, 40));
114  btnSettings_->setCheckable(false);
115  btnSettings_->setIconSize(QSize(48, 48));
116  btnSettings_->setToolTip("About Omnidome");
117  connect(btnSettings_, SIGNAL(clicked()), this, SLOT(showAbout()));
118  auto *_actionSettings = addWidget(btnSettings_);
119  this->connect(_actionSettings, SIGNAL(triggered()), btnSettings_,
120  SIGNAL(clicked()));
121  _actionSettings->setShortcut(QKeySequence("Ctrl+F1"));
122 
123  QWidget *empty = new QWidget();
124  empty->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
125  addWidget(empty);
126 
127  btnScreenSetup_ = _makeButton("screens", "SCREEN SETUP");
128  btnScreenSetup_->setToolTip("Setup projector screens (Ctrl + 1)");
129  connect(btnScreenSetup_, SIGNAL(clicked()), this,
130  SLOT(setScreenSetupMode()));
131  _makeAction(btnScreenSetup_, "Ctrl+1");
132 
133  btnArrange_ = _makeButton("arrange", "ARRANGE");
134  btnArrange_->setToolTip("Arrange projectors, mapping and canvas (Ctrl + 2)");
135  connect(btnArrange_, SIGNAL(clicked()), this, SLOT(setArrangeMode()));
136  _makeAction(btnArrange_, "Ctrl+2");
137 
138  btnWarp_ = _makeButton("warp", "WARP");
139  btnWarp_->setToolTip("Edit warp grid (Ctrl + 3)");
140  connect(btnWarp_, SIGNAL(clicked()), this, SLOT(setWarpMode()));
141  _makeAction(btnWarp_, "Ctrl+3");
142 
143  btnBlend_ = _makeButton("blend", "BLEND");
144  btnBlend_->setToolTip("Edit blend mask with blend brush (Ctrl + 4)");
145  connect(btnBlend_, SIGNAL(clicked()), this, SLOT(setBlendMode()));
146  _makeAction(btnBlend_, "Ctrl+4");
147 
148  btnColorCorrection_ = _makeButton("color_correction", "COLOR CORRECTION");
149  btnColorCorrection_->setToolTip(
150  "Color Correction with brightness, gamma and contrast (Ctrl + 5)");
151  connect(btnColorCorrection_, SIGNAL(clicked()), this,
152  SLOT(setColorCorrectionMode()));
153  _makeAction(btnColorCorrection_, "Ctrl+5");
154 
155  btnExport_ = _makeButton("export", "EXPORT");
156  btnExport_->setToolTip("Export calibration data (Ctrl + 6)");
157  connect(btnExport_, SIGNAL(clicked()), this, SLOT(setExportMode()));
158  _makeAction(btnExport_, "Ctrl+6");
159 
160  btnLive_ = _makeButton("live", "LIVE");
161  btnLive_->setToolTip("Play input live (Ctrl + 7)");
162  connect(btnLive_, SIGNAL(clicked()), this, SLOT(setLiveMode()));
163  _makeAction(btnLive_, "Ctrl+7");
164 
165  connect(this, &ToolBar::dataModelChanged, this, &ToolBar::updateFrontend);
166  }
QToolButton * btnLive_
Definition: ToolBar.h:77
void setWarpMode()
Definition: ToolBar.cpp:178
void setBlendMode()
Definition: ToolBar.cpp:182
QToolButton * btnColorCorrection_
Definition: ToolBar.h:75
QToolButton * btnBlend_
Definition: ToolBar.h:74
QToolButton * btnSettings_
Definition: ToolBar.h:70
QToolButton * btnWarp_
Definition: ToolBar.h:73
void setArrangeMode()
Definition: ToolBar.cpp:174
void setScreenSetupMode()
Definition: ToolBar.cpp:170
void showAbout()
Show About dialog.
Definition: ToolBar.cpp:229
QToolButton * btnScreenSetup_
Definition: ToolBar.h:71
QToolButton * btnExport_
Definition: ToolBar.h:76
void setLiveMode()
Definition: ToolBar.cpp:194
virtual void updateFrontend()
Push data to frontend widgets and all child widgets.
Definition: DataModel.h:128
void setColorCorrectionMode()
Definition: ToolBar.cpp:186
QToolButton * btnArrange_
Definition: ToolBar.h:72
void setExportMode()
Definition: ToolBar.cpp:190
omni::ui::ToolBar::~ToolBar ( )
168 {}

Member Function Documentation

void omni::ui::ToolBar::buttonStates ( )
slot

Set button states (e.g. disable buttons when modes are not accessible)

218  {
219  if (!dataModel()) return;
220  bool _hasOutput = dataModel()->hasOutput();
221 
222  btnWarp_->setEnabled(_hasOutput);
223  btnBlend_->setEnabled(_hasOutput);
224  btnColorCorrection_->setEnabled(_hasOutput);
225  btnExport_->setEnabled(_hasOutput);
226  btnLive_->setEnabled(_hasOutput);
227  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
QToolButton * btnLive_
Definition: ToolBar.h:77
QToolButton * btnColorCorrection_
Definition: ToolBar.h:75
QToolButton * btnBlend_
Definition: ToolBar.h:74
QToolButton * btnWarp_
Definition: ToolBar.h:73
QToolButton * btnExport_
Definition: ToolBar.h:76
void omni::ui::ToolBar::dataModelChanged ( )
signal
void omni::ui::ToolBar::dataToFrontend ( )
privatevirtual

Update buttons from session.

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

205  {
206  auto _mode = dataModel()->mode();
207 
208  btnScreenSetup_->setChecked(_mode == Session::Mode::SCREENSETUP);
209  btnArrange_->setChecked(_mode == Session::Mode::ARRANGE);
210  btnWarp_->setChecked(_mode == Session::Mode::WARP);
211  btnBlend_->setChecked(_mode == Session::Mode::BLEND);
213  btnExport_->setChecked(_mode == Session::Mode::EXPORT);
214  btnLive_->setChecked(_mode == Session::Mode::LIVE);
215  buttonStates();
216  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
QToolButton * btnLive_
Definition: ToolBar.h:77
QToolButton * btnColorCorrection_
Definition: ToolBar.h:75
QToolButton * btnBlend_
Definition: ToolBar.h:74
QToolButton * btnWarp_
Definition: ToolBar.h:73
void buttonStates()
Set button states (e.g. disable buttons when modes are not accessible)
Definition: ToolBar.cpp:218
QToolButton * btnScreenSetup_
Definition: ToolBar.h:71
QToolButton * btnExport_
Definition: ToolBar.h:76
QToolButton * btnArrange_
Definition: ToolBar.h:72
bool omni::ui::ToolBar::frontendToData ( )
inlineprivatevirtual

Set session mode from buttons.

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

66  {
67  return false;
68  }
void omni::ui::ToolBar::setArrangeMode ( )
slot
174  {
176  }
void setMode(Session::Mode)
Definition: ToolBar.cpp:198
void omni::ui::ToolBar::setBlendMode ( )
slot
182  {
184  }
void setMode(Session::Mode)
Definition: ToolBar.cpp:198
void omni::ui::ToolBar::setColorCorrectionMode ( )
slot
186  {
188  }
void setMode(Session::Mode)
Definition: ToolBar.cpp:198
void omni::ui::ToolBar::setExportMode ( )
slot
190  {
192  }
void setMode(Session::Mode)
Definition: ToolBar.cpp:198
void omni::ui::ToolBar::setLiveMode ( )
slot
194  {
196  }
void setMode(Session::Mode)
Definition: ToolBar.cpp:198
void omni::ui::ToolBar::setMode ( Session::Mode  _mode)
private
198  {
199  if (!dataModel()) return;
200 
201  dataModel()->setMode(_mode);
202  emit dataModelChanged();
203  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void omni::ui::ToolBar::setScreenSetupMode ( )
slot
170  {
172  }
void setMode(Session::Mode)
Definition: ToolBar.cpp:198
void omni::ui::ToolBar::setWarpMode ( )
slot
178  {
180  }
void setMode(Session::Mode)
Definition: ToolBar.cpp:198
void omni::ui::ToolBar::showAbout ( )
slot

Show About dialog.

230  {
231  std::unique_ptr<About> _about(new About());
232 
233  _about->exec();
234  }

Field Documentation

QToolButton* omni::ui::ToolBar::btnArrange_ = nullptr
private
QToolButton* omni::ui::ToolBar::btnBlend_ = nullptr
private
QToolButton* omni::ui::ToolBar::btnColorCorrection_ = nullptr
private
QToolButton* omni::ui::ToolBar::btnExport_ = nullptr
private
QToolButton* omni::ui::ToolBar::btnLive_ = nullptr
private
QToolButton* omni::ui::ToolBar::btnScreenSetup_ = nullptr
private
QToolButton* omni::ui::ToolBar::btnSettings_ = nullptr
private
QToolButton* omni::ui::ToolBar::btnWarp_ = nullptr
private

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