28 #include <QtCore/QSignalMapper>
29 #include <QApplication>
31 #include <QPushButton>
32 #include <QToolButton>
33 #include <QScrollArea>
35 #include "../events/WEventTypes.h"
36 #include "../events/WPropertyChangedEvent.h"
37 #include "../guiElements/WScaleToolButton.h"
39 #include "../WQtGui.h"
40 #include "../WMainWindow.h"
42 #include "core/common/WPropertyGroupBase.h"
43 #include "core/common/WLogger.h"
45 #include "../WGuiConsts.h"
47 #include "WQtPropertyGroupWidget.h"
51 m_name( group->getName().c_str() ),
53 m_nestingDepth( depth )
70 QSizePolicy sizePolicy( QSizePolicy::Expanding, QSizePolicy::Maximum );
71 sizePolicy.setHorizontalStretch( 0 );
72 sizePolicy.setVerticalStretch( 0 );
73 setSizePolicy( sizePolicy );
78 setName( QString::fromStdString( group->getName() ) );
91 bool hide = ( r->get().empty() |
m_group->isHidden() );
95 if( hide && group->autoHideEmpty() )
118 if(
event->type() == WQT_PROPERTY_CHANGED_EVENT )
123 setHidden( r->get().empty() |
m_group->isHidden() );
130 WPropertyGroupBase::PropertyContainerType::const_iterator found = std::find( r->get().begin(), r->get().end(), i->first );
131 if( found == r->get().end() )
140 for( WPropertyGroupBase::PropertyContainerType::const_iterator i = r->get().begin(); i != r->get().end(); ++i )
153 return QWidget::event(
event );
158 if( property->getType() == PV_GROUP )
160 addGroup( property->toPropGroupBase() );
181 QSizePolicy sizePolicy( QSizePolicy::Minimum, QSizePolicy::Maximum );
182 sizePolicy.setHorizontalStretch( 0 );
183 sizePolicy.setVerticalStretch( 0 );
186 QWidget* group =
new QWidget();
188 QScrollArea* scrollArea = 0;
189 QGridLayout* grid =
new QGridLayout();
190 grid->setAlignment( Qt::AlignTop );
191 grid->addWidget( widget, 0, 0 );
192 grid->setMargin( WGLOBAL_MARGIN );
193 grid->setSpacing( WGLOBAL_SPACING );
195 group->setLayout( grid );
198 scrollArea =
new QScrollArea();
199 scrollArea->setWidgetResizable(
true );
200 scrollArea->setWidget( group );
201 scrollArea->setAlignment( Qt::AlignTop );
206 QFrame* box =
new QFrame( parent );
207 box->setFrameShape( QFrame::StyledPanel );
208 box->setObjectName(
"PropertyGroupBox" );
209 box->setContentsMargins( 0, 0, 0, 0 );
210 QGridLayout* boxLayout =
new QGridLayout();
211 boxLayout->setMargin( 0 );
212 boxLayout->setSpacing( 0 );
213 box->setLayout( boxLayout );
218 QString titleText = title;
221 titleText = ( title ==
"" ) ? gWidget->
getName() : title;
224 boxTitle->
setText( titleText );
225 boxTitle->setToolTip( titleText );
226 boxLayout->addWidget( boxTitle, 0, 0 );
231 QWidget* boxContent =
new QWidget();
232 boxContent->setContentsMargins( 5, 0, 0, 0 );
233 boxContent->setObjectName(
"PropertyGroupBoxContent" );
234 QGridLayout* boxContentLayout =
new QGridLayout();
235 boxContent->setLayout( boxContentLayout );
236 boxContentLayout->setMargin( 0 );
237 boxContentLayout->setSpacing( 0 );
238 boxLayout->addWidget( boxContent, 1, 0 );
241 boxTitle->setMinimumHeight( WMIN_PROPGROUP_HEAD_HEIGHT );
242 boxTitle->setSizePolicy( sizePolicy );
243 boxTitle->setAutoRaise(
true );
244 boxTitle->setAutoFillBackground(
true );
247 QWidget* content =
new QWidget();
248 content->setObjectName(
"PropertyGroupContent" );
249 boxContentLayout->addWidget( content, 1, 0 );
252 QGridLayout* contentLayout =
new QGridLayout();
253 content->setLayout( contentLayout );
254 contentLayout->setMargin( 0 );
255 contentLayout->setSpacing( 0 );
259 QColor defaultCol = QColor(
"#b9b9b9" );
260 QColor brightTextCol = QColor(
"#eeeeee" );
261 QColor darkTextCol = QColor(
"#444444" );
262 QColor defaultTextCol = darkTextCol;
264 int nestingColorLevel = nestingLevel;
270 switch( nestingColorLevel )
274 defaultCol = QColor(
"#949494" );
275 defaultTextCol = darkTextCol;
278 defaultCol = QColor(
"#268bd2" );
279 defaultTextCol = brightTextCol;
282 defaultCol = QColor(
"#2aa198" );
283 defaultTextCol = brightTextCol;
286 defaultCol = QColor(
"#859900" );
287 defaultTextCol = brightTextCol;
290 defaultCol = QColor(
"#b58900" );
291 defaultTextCol = brightTextCol;
294 defaultCol = QColor(
"#cb4b16" );
295 defaultTextCol = brightTextCol;
298 defaultCol = QColor(
"#dc322f" );
299 defaultTextCol = brightTextCol;
302 defaultCol = QColor(
"#d33682" );
303 defaultTextCol = brightTextCol;
306 defaultCol = QColor(
"#6c71c4" );
307 defaultTextCol = brightTextCol;
311 boxTitle->setStyleSheet(
"background-color: " + defaultCol.name() +
"; font-weight:bold; color: " + defaultTextCol.name() +
";" );
312 box->setStyleSheet(
"QFrame#PropertyGroupBox{background-color: " + defaultCol.name() +
";}" );
313 content->setStyleSheet(
"#PropertyGroupContent{ background-color: "+ palette.window().color().name() +
";}" );
316 QSignalMapper* signalMapper =
new QSignalMapper( box );
317 signalMapper->setMapping( boxTitle, boxContent );
318 connect( boxTitle, SIGNAL( released() ), signalMapper, SLOT( map() ) );
319 connect( signalMapper, SIGNAL( mapped( QWidget* ) ),
WQtGui::getMainWindow(), SLOT( switchVisibility( QWidget* ) ) );
324 contentLayout->addWidget( scrollArea, 1, 0 );
328 contentLayout->addWidget( group, 1, 0 );
332 box->setHidden( widget->isHidden() );
336 connect( gWidget, SIGNAL(
hideSignal(
bool ) ), box, SLOT( setHidden(
bool ) ) );
343 size_t depth, QWidget* parent )
349 QSizePolicy sizePolicy( QSizePolicy::Preferred, QSizePolicy::Maximum );
350 sizePolicy.setHorizontalStretch( 0 );
351 sizePolicy.setVerticalStretch( 0 );
352 tab->setSizePolicy( sizePolicy );
353 tab->setWindowTitle( propWidget->
getName() );
364 size_t depth, QWidget* parent )
366 QString titleCorrected = title;
369 titleCorrected = QString::fromStdString( group->getName() );
373 propWidget->
setName( titleCorrected );
std::shared_ptr< WPropertyBase > SPtr
Convenience typedef for a std::shared_ptr< WPropertyBase >
Event signalling a new module has been associated with the root container in the kernel.
PropertyContainerType::const_iterator PropertyConstIterator
The const iterator type of the container.
std::shared_ptr< WPropertyGroupBase > SPtr
Convenience typedef for a std::shared_ptr< WPropertyGroupBase >.
static WMainWindow * getMainWindow()
Returns the current main window instance or NULL if not existent.
std::shared_ptr< WSharedObjectTicketRead< T > > ReadTicket
Type for read tickets.