diff --git a/SplatCloudRenderingControlPlugin.cc b/SplatCloudRenderingControlPlugin.cc index 7cba65cea82dadc1aa82e173cd5183541ef9af4f..27f1012ffd9ed2399c9820361e195d991c4404f7 100644 --- a/SplatCloudRenderingControlPlugin.cc +++ b/SplatCloudRenderingControlPlugin.cc @@ -71,45 +71,65 @@ void SplatCloudRenderingControlPlugin::initializePlugin() // -------- create toolbox -------- // -------------------------------- - // ---- options ---- + // ---- options tab ---- - // pointsizeScale + // pointsize scale toolboxPointsizeScale_ = new QDoubleSpinBox(); toolboxPointsizeScale_->setRange( 0.0, 100.0 ); toolboxPointsizeScale_->setDecimals( 4 ); toolboxPointsizeScale_->setSingleStep( 0.1 ); toolboxPointsizeScale_->setValue( 1.0 ); + toolboxPointsizeScale_->setToolTip( "The scaling factor of the pointsizes used during the rendering of objects" ); - // pointsizeScale layout + // pointsize scale layout QHBoxLayout *toolboxPointsizeScaleLayout = new QHBoxLayout(); - toolboxPointsizeScaleLayout->addWidget( new QLabel( "Pointsize Scale:" ) ); - toolboxPointsizeScaleLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - toolboxPointsizeScaleLayout->addWidget( toolboxPointsizeScale_ ); + toolboxPointsizeScaleLayout->setSpacing( 6 ); + toolboxPointsizeScaleLayout->addWidget( new QLabel( "Pointsize Scaling Factor:" ) ); + toolboxPointsizeScaleLayout->addWidget( toolboxPointsizeScale_ ); // buttons QPushButton *toolboxEnableBackfaceCullingButton = new QPushButton( "Enable Backface Culling" ); QPushButton *toolboxDisableBackfaceCullingButton = new QPushButton( "Disable Backface Culling" ); QPushButton *toolboxReloadShadersButton = new QPushButton( "Reload Shaders" ); QPushButton *toolboxRebuildVBOsButton = new QPushButton( "Rebuild VBOs" ); - - // buttons layout - QGridLayout *toolboxButtonsLayout = new QGridLayout(); - toolboxButtonsLayout->setSpacing( 6 ); - toolboxButtonsLayout->addWidget( toolboxEnableBackfaceCullingButton, 0, 0 ); - toolboxButtonsLayout->addWidget( toolboxDisableBackfaceCullingButton, 0, 1 ); - toolboxButtonsLayout->addWidget( toolboxReloadShadersButton, 1, 0 ); - toolboxButtonsLayout->addWidget( toolboxRebuildVBOsButton, 1, 1 ); + toolboxEnableBackfaceCullingButton->setToolTip ( "Enable the culling of backfaces" ); + toolboxDisableBackfaceCullingButton->setToolTip( "Disable the culling of backfaces" ); + toolboxReloadShadersButton->setToolTip ( "Reload all shader files" ); + toolboxRebuildVBOsButton->setToolTip ( "Rebuild all vertex-buffer-objects" ); + + // buttonsA layout + QHBoxLayout *toolboxButtonsALayout = new QHBoxLayout(); + toolboxButtonsALayout->setSpacing( 6 ); + toolboxButtonsALayout->addWidget( toolboxEnableBackfaceCullingButton ); + toolboxButtonsALayout->addWidget( toolboxDisableBackfaceCullingButton ); + + // separator frame + QFrame *toolboxSeparatorFrame = new QFrame(); + toolboxSeparatorFrame->setFrameShape( QFrame::HLine ); + toolboxSeparatorFrame->setFrameShadow( QFrame::Sunken ); + + // buttonsB layout + QHBoxLayout *toolboxButtonsBLayout = new QHBoxLayout(); + toolboxButtonsBLayout->setSpacing( 6 ); + toolboxButtonsBLayout->addWidget( toolboxReloadShadersButton ); + toolboxButtonsBLayout->addWidget( toolboxRebuildVBOsButton ); // options layout QVBoxLayout *toolboxOptionsLayout = new QVBoxLayout(); - toolboxOptionsLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); + toolboxOptionsLayout->setSpacing( 6 ); toolboxOptionsLayout->addItem ( toolboxPointsizeScaleLayout ); - toolboxOptionsLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - toolboxOptionsLayout->addItem ( toolboxButtonsLayout ); + toolboxOptionsLayout->addItem ( toolboxButtonsALayout ); + toolboxOptionsLayout->addWidget( toolboxSeparatorFrame ); + toolboxOptionsLayout->addItem ( toolboxButtonsBLayout ); + + // options widget + QWidget *toolboxOptionsWidget = new QWidget(); + toolboxOptionsWidget->setLayout( toolboxOptionsLayout ); + toolboxOptionsWidget->setToolTip( "Rendering options" ); - // ---- defaults ---- + // ---- defaults tab ---- - // defaultNormal + // default normal toolboxDefaultNormalX_ = new QDoubleSpinBox(); toolboxDefaultNormalY_ = new QDoubleSpinBox(); toolboxDefaultNormalZ_ = new QDoubleSpinBox(); @@ -125,31 +145,19 @@ void SplatCloudRenderingControlPlugin::initializePlugin() toolboxDefaultNormalX_->setValue( 0.0 ); toolboxDefaultNormalY_->setValue( 0.0 ); toolboxDefaultNormalZ_->setValue( 1.0 ); + toolboxDefaultNormalX_->setToolTip( "The default x-component of the normal used when an object has no normals" ); + toolboxDefaultNormalY_->setToolTip( "The default y-component of the normal used when an object has no normals" ); + toolboxDefaultNormalZ_->setToolTip( "The default z-component of the normal used when an object has no normals" ); - // defaultNormal layout - QHBoxLayout *toolboxDefaultNormalLayout = new QHBoxLayout(); - toolboxDefaultNormalLayout->addWidget( new QLabel( "Default Normal:" ) ); - toolboxDefaultNormalLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - toolboxDefaultNormalLayout->addWidget( toolboxDefaultNormalX_ ); - toolboxDefaultNormalLayout->addItem ( new QSpacerItem( 6, 6 ) ); - toolboxDefaultNormalLayout->addWidget( toolboxDefaultNormalY_ ); - toolboxDefaultNormalLayout->addItem ( new QSpacerItem( 6, 6 ) ); - toolboxDefaultNormalLayout->addWidget( toolboxDefaultNormalZ_ ); - - // defaultPointsize + // default pointsize toolboxDefaultPointsize_ = new QDoubleSpinBox(); toolboxDefaultPointsize_->setRange( 0.0, 1000.0 ); toolboxDefaultPointsize_->setDecimals( 4 ); toolboxDefaultPointsize_->setSingleStep( 0.001 ); toolboxDefaultPointsize_->setValue( 0.01 ); + toolboxDefaultPointsize_->setToolTip( "The default pointsize used when an object has no pointsizes" ); - // defaultPointsize layout - QHBoxLayout *toolboxDefaultPointsizeLayout = new QHBoxLayout(); - toolboxDefaultPointsizeLayout->addWidget( new QLabel( "Default Pointsize:" ) ); - toolboxDefaultPointsizeLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - toolboxDefaultPointsizeLayout->addWidget( toolboxDefaultPointsize_ ); - - // defaultColor + // default color toolboxDefaultColorR_ = new QSpinBox(); toolboxDefaultColorG_ = new QSpinBox(); toolboxDefaultColorB_ = new QSpinBox(); @@ -162,37 +170,55 @@ void SplatCloudRenderingControlPlugin::initializePlugin() toolboxDefaultColorR_->setValue( 255 ); toolboxDefaultColorG_->setValue( 255 ); toolboxDefaultColorB_->setValue( 255 ); + toolboxDefaultColorR_->setToolTip( "The default red-component of the color used when an object has no colors" ); + toolboxDefaultColorG_->setToolTip( "The default green-component of the color used when an object has no colors" ); + toolboxDefaultColorB_->setToolTip( "The default blue-component of the color used when an object has no colors" ); + + // default normal layout + QHBoxLayout *toolboxDefaultNormalLayout = new QHBoxLayout(); + toolboxDefaultNormalLayout->setSpacing( 6 ); + toolboxDefaultNormalLayout->addWidget( toolboxDefaultNormalX_ ); + toolboxDefaultNormalLayout->addWidget( toolboxDefaultNormalY_ ); + toolboxDefaultNormalLayout->addWidget( toolboxDefaultNormalZ_ ); + + // default pointsize layout + QHBoxLayout *toolboxDefaultPointsizeLayout = new QHBoxLayout(); + toolboxDefaultPointsizeLayout->setSpacing( 6 ); + toolboxDefaultPointsizeLayout->addWidget( toolboxDefaultPointsize_ ); - // defaultColor layout + // default color layout QHBoxLayout *toolboxDefaultColorLayout = new QHBoxLayout(); - toolboxDefaultColorLayout->addWidget( new QLabel( "Default Color:" ) ); - toolboxDefaultColorLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - toolboxDefaultColorLayout->addWidget( toolboxDefaultColorR_ ); - toolboxDefaultColorLayout->addItem ( new QSpacerItem( 6, 6 ) ); - toolboxDefaultColorLayout->addWidget( toolboxDefaultColorG_ ); - toolboxDefaultColorLayout->addItem ( new QSpacerItem( 6, 6 ) ); - toolboxDefaultColorLayout->addWidget( toolboxDefaultColorB_ ); - - // applyDefaults button + toolboxDefaultColorLayout->setSpacing( 6 ); + toolboxDefaultColorLayout->addWidget( toolboxDefaultColorR_ ); + toolboxDefaultColorLayout->addWidget( toolboxDefaultColorG_ ); + toolboxDefaultColorLayout->addWidget( toolboxDefaultColorB_ ); + + // default options layout + QGridLayout *toolboxDefaultOptionsLayout = new QGridLayout(); + toolboxDefaultOptionsLayout->setSpacing( 6 ); + toolboxDefaultOptionsLayout->addWidget( new QLabel( "Default Normal:" ), 0, 0 ); + toolboxDefaultOptionsLayout->addWidget( new QLabel( "Default Pointsize:" ), 1, 0 ); + toolboxDefaultOptionsLayout->addWidget( new QLabel( "Default Color:" ), 2, 0 ); + toolboxDefaultOptionsLayout->addItem ( toolboxDefaultNormalLayout, 0, 1 ); + toolboxDefaultOptionsLayout->addItem ( toolboxDefaultPointsizeLayout, 1, 1 ); + toolboxDefaultOptionsLayout->addItem ( toolboxDefaultColorLayout, 2, 1 ); + + // apply defaults button QPushButton *toolboxApplyDefaultsButton = new QPushButton( "Apply Defaults" ); + toolboxApplyDefaultsButton->setToolTip( "Apply the changes made" ); // defaults layout QVBoxLayout *toolboxDefaultsLayout = new QVBoxLayout(); - toolboxDefaultsLayout->addItem ( toolboxDefaultNormalLayout ); - toolboxDefaultsLayout->addItem ( toolboxDefaultPointsizeLayout ); - toolboxDefaultsLayout->addItem ( toolboxDefaultColorLayout ); - toolboxDefaultsLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - toolboxDefaultsLayout->addWidget( toolboxApplyDefaultsButton ); - - // ---- - - // options widget - QWidget *toolboxOptionsWidget = new QWidget(); - toolboxOptionsWidget->setLayout( toolboxOptionsLayout ); + toolboxDefaultsLayout->setSpacing( 6 ); + toolboxDefaultsLayout->addItem ( toolboxDefaultOptionsLayout ); + toolboxDefaultsLayout->addWidget( toolboxApplyDefaultsButton ); // defaults widget QWidget *toolboxDefaultsWidget = new QWidget(); toolboxDefaultsWidget->setLayout( toolboxDefaultsLayout ); + toolboxDefaultsWidget->setToolTip( "Default values" ); + + // ---- // tab widget QTabWidget *toolboxTabWidget = new QTabWidget(); @@ -201,12 +227,16 @@ void SplatCloudRenderingControlPlugin::initializePlugin() // toolbox layout QVBoxLayout *toolboxLayout = new QVBoxLayout(); + toolboxLayout->setSpacing( 6 ); toolboxLayout->addWidget( toolboxTabWidget ); // toolbox QWidget *toolbox = new QWidget(); toolbox->setLayout( toolboxLayout ); + // toolbox icon + QIcon *toolboxIcon = new QIcon( OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() + "SplatCloudType.png" ); + // ---- // connect events to slots @@ -218,74 +248,67 @@ void SplatCloudRenderingControlPlugin::initializePlugin() connect( toolboxApplyDefaultsButton, SIGNAL( clicked() ), this, SLOT( slotToolboxApplyDefaultsButtonClicked() ) ); // emit signal to add the new toolbox - toolBoxIcon_ = new QIcon(OpenFlipper::Options::iconDirStr()+OpenFlipper::Options::dirSeparator()+"SplatCloudType.png"); - emit addToolbox( tr("SplatCloud Rendering Control") , toolbox , toolBoxIcon_); + emit addToolbox( tr("SplatCloud Rendering Control") , toolbox , toolboxIcon ); // ------------------------------------- // -------- create context menu -------- // ------------------------------------- - // scale action - menuScaleAction_ = new QAction( tr("Pointsize Scale..."), this ); - - // culling action - menuCullingAction_ = new QAction( tr("Backface Culling"), this ); - menuCullingAction_->setCheckable( true ); - - // defaults action - menuDefaultsAction_ = new QAction( tr("Defaults..."), this ); - - // reloadShaders action - menuReloadShadersAction_ = new QAction( tr("Reload Shaders"), this ); - - // rebuildVBO action - menuRebuildVBOAction_ = new QAction( tr("Rebuild VBO"), this ); - - // menu - QMenu *menu = new QMenu( "SplatCloud Rendering Control" ); - menu->addAction( menuScaleAction_ ); - menu->addAction( menuCullingAction_ ); - menu->addSeparator(); - menu->addAction( menuDefaultsAction_ ); - menu->addSeparator(); - menu->addAction( menuReloadShadersAction_ ); - menu->addAction( menuRebuildVBOAction_ ); + // actions + contextScaleAction_ = new QAction( tr( "Pointsize Scaling Factor..."), this ); + contextCullingAction_ = new QAction( tr( "Backface Culling" ), this ); + contextDefaultsAction_ = new QAction( tr( "Defaults..." ), this ); + contextReloadShadersAction_ = new QAction( tr( "Reload Shaders" ), this ); + contextRebuildVBOAction_ = new QAction( tr( "Rebuild VBO" ), this ); + contextCullingAction_->setCheckable( true ); + + // context menu + QMenu *contextMenu = new QMenu( "SplatCloud Rendering Control" ); + contextMenu->addAction( contextScaleAction_ ); + contextMenu->addAction( contextCullingAction_ ); + contextMenu->addSeparator(); + contextMenu->addAction( contextDefaultsAction_ ); + contextMenu->addSeparator(); + contextMenu->addAction( contextReloadShadersAction_ ); + contextMenu->addAction( contextRebuildVBOAction_ ); // ---- // connect events to slots - connect( menuScaleAction_, SIGNAL( triggered() ), this, SLOT( slotMenuScaleActionTriggered() ) ); - connect( menuCullingAction_, SIGNAL( triggered() ), this, SLOT( slotMenuCullingActionTriggered() ) ); - connect( menuDefaultsAction_, SIGNAL( triggered() ), this, SLOT( slotMenuDefaultsActionTriggered() ) ); - connect( menuReloadShadersAction_, SIGNAL( triggered() ), this, SLOT( slotMenuReloadShadersActionTriggered() ) ); - connect( menuRebuildVBOAction_, SIGNAL( triggered() ), this, SLOT( slotMenuRebuildVBOActionTriggered() ) ); + connect( contextScaleAction_, SIGNAL( triggered() ), this, SLOT( slotContextScaleActionTriggered() ) ); + connect( contextCullingAction_, SIGNAL( triggered() ), this, SLOT( slotContextCullingActionTriggered() ) ); + connect( contextDefaultsAction_, SIGNAL( triggered() ), this, SLOT( slotContextDefaultsActionTriggered() ) ); + connect( contextReloadShadersAction_, SIGNAL( triggered() ), this, SLOT( slotContextReloadShadersActionTriggered() ) ); + connect( contextRebuildVBOAction_, SIGNAL( triggered() ), this, SLOT( slotContextRebuildVBOActionTriggered() ) ); - // emit signal to add the new contest menu - emit addContextMenuItem( menu->menuAction(), DATA_SPLATCLOUD, CONTEXTOBJECTMENU ); + // emit signal to add the new context menu + emit addContextMenuItem( contextMenu->menuAction(), DATA_SPLATCLOUD, CONTEXTOBJECTMENU ); // ------------------------------------- // -------- create scale widget -------- // ------------------------------------- - // pointsizeScale + // pointsize scale scaleWidgetPointsizeScale_ = new QDoubleSpinBox(); scaleWidgetPointsizeScale_->setRange( 0.0, 100.0 ); scaleWidgetPointsizeScale_->setDecimals( 4 ); scaleWidgetPointsizeScale_->setSingleStep( 0.1 ); + scaleWidgetPointsizeScale_->setToolTip( "The scaling factor of the pointsizes used during the rendering of the picked object" ); - // pointsizeScale layout + // pointsize scale layout QHBoxLayout *scaleWidgetPointsizeScaleLayout = new QHBoxLayout(); - scaleWidgetPointsizeScaleLayout->addWidget( new QLabel( "Pointsize Scale:" ) ); - scaleWidgetPointsizeScaleLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - scaleWidgetPointsizeScaleLayout->addWidget( scaleWidgetPointsizeScale_ ); + scaleWidgetPointsizeScaleLayout->setSpacing( 6 ); + scaleWidgetPointsizeScaleLayout->addWidget( new QLabel( "Pointsize Scaling Factor:" ) ); + scaleWidgetPointsizeScaleLayout->addWidget( scaleWidgetPointsizeScale_ ); // widget layout QVBoxLayout *scaleWidgetLayout = new QVBoxLayout(); + scaleWidgetLayout->setSpacing( 6 ); scaleWidgetLayout->addItem( scaleWidgetPointsizeScaleLayout ); // widget scaleWidget_ = new QWidget(); - scaleWidget_->setWindowTitle( "Pointsize Scale" ); + scaleWidget_->setWindowTitle( "Pointsize Scaling Factor" ); scaleWidget_->setLayout( scaleWidgetLayout ); // ---- @@ -297,7 +320,7 @@ void SplatCloudRenderingControlPlugin::initializePlugin() // -------- create defaults widget -------- // ---------------------------------------- - // defaultNormal + // default normal defaultsWidgetDefaultNormalX_ = new QDoubleSpinBox(); defaultsWidgetDefaultNormalY_ = new QDoubleSpinBox(); defaultsWidgetDefaultNormalZ_ = new QDoubleSpinBox(); @@ -310,30 +333,18 @@ void SplatCloudRenderingControlPlugin::initializePlugin() defaultsWidgetDefaultNormalX_->setSingleStep( 0.1 ); defaultsWidgetDefaultNormalY_->setSingleStep( 0.1 ); defaultsWidgetDefaultNormalZ_->setSingleStep( 0.1 ); + defaultsWidgetDefaultNormalX_->setToolTip( "The default x-component of the normal used when the picked object has no normals" ); + defaultsWidgetDefaultNormalY_->setToolTip( "The default y-component of the normal used when the picked object has no normals" ); + defaultsWidgetDefaultNormalZ_->setToolTip( "The default z-component of the normal used when the picked object has no normals" ); - // defaultNormal layout - QHBoxLayout *defaultsWidgetDefaultNormalLayout = new QHBoxLayout(); - defaultsWidgetDefaultNormalLayout->addWidget( new QLabel( "Default Normal:" ) ); - defaultsWidgetDefaultNormalLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - defaultsWidgetDefaultNormalLayout->addWidget( defaultsWidgetDefaultNormalX_ ); - defaultsWidgetDefaultNormalLayout->addItem ( new QSpacerItem( 6, 6 ) ); - defaultsWidgetDefaultNormalLayout->addWidget( defaultsWidgetDefaultNormalY_ ); - defaultsWidgetDefaultNormalLayout->addItem ( new QSpacerItem( 6, 6 ) ); - defaultsWidgetDefaultNormalLayout->addWidget( defaultsWidgetDefaultNormalZ_ ); - - // defaultPointsize + // default pointsize defaultsWidgetDefaultPointsize_ = new QDoubleSpinBox(); defaultsWidgetDefaultPointsize_->setRange( 0.0, 1000.0 ); defaultsWidgetDefaultPointsize_->setDecimals( 4 ); defaultsWidgetDefaultPointsize_->setSingleStep( 0.001 ); + defaultsWidgetDefaultPointsize_->setToolTip( "The default pointsize used when the picked object has no pointsizes" ); - // defaultPointsize layout - QHBoxLayout *defaultsWidgetDefaultPointsizeLayout = new QHBoxLayout(); - defaultsWidgetDefaultPointsizeLayout->addWidget( new QLabel( "Default Pointsize:" ) ); - defaultsWidgetDefaultPointsizeLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - defaultsWidgetDefaultPointsizeLayout->addWidget( defaultsWidgetDefaultPointsize_ ); - - // defaultColor + // default color defaultsWidgetDefaultColorR_ = new QSpinBox(); defaultsWidgetDefaultColorG_ = new QSpinBox(); defaultsWidgetDefaultColorB_ = new QSpinBox(); @@ -343,34 +354,56 @@ void SplatCloudRenderingControlPlugin::initializePlugin() defaultsWidgetDefaultColorR_->setSingleStep( 1 ); defaultsWidgetDefaultColorG_->setSingleStep( 1 ); defaultsWidgetDefaultColorB_->setSingleStep( 1 ); + defaultsWidgetDefaultColorR_->setToolTip( "The default red-component of the color used when the picked object has no colors" ); + defaultsWidgetDefaultColorG_->setToolTip( "The default green-component of the color used when the picked object has no colors" ); + defaultsWidgetDefaultColorB_->setToolTip( "The default blue-component of the color used when the picked object has no colors" ); - // defaultColor layout + // default normal layout + QHBoxLayout *defaultsWidgetDefaultNormalLayout = new QHBoxLayout(); + defaultsWidgetDefaultNormalLayout->setSpacing( 6 ); + defaultsWidgetDefaultNormalLayout->addWidget( defaultsWidgetDefaultNormalX_ ); + defaultsWidgetDefaultNormalLayout->addWidget( defaultsWidgetDefaultNormalY_ ); + defaultsWidgetDefaultNormalLayout->addWidget( defaultsWidgetDefaultNormalZ_ ); + + // default pointsize layout + QHBoxLayout *defaultsWidgetDefaultPointsizeLayout = new QHBoxLayout(); + defaultsWidgetDefaultPointsizeLayout->setSpacing( 6 ); + defaultsWidgetDefaultPointsizeLayout->addWidget( defaultsWidgetDefaultPointsize_ ); + + // default color layout QHBoxLayout *defaultsWidgetDefaultColorLayout = new QHBoxLayout(); - defaultsWidgetDefaultColorLayout->addWidget( new QLabel( "Default Color:" ) ); - defaultsWidgetDefaultColorLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - defaultsWidgetDefaultColorLayout->addWidget( defaultsWidgetDefaultColorR_ ); - defaultsWidgetDefaultColorLayout->addItem ( new QSpacerItem( 6, 6 ) ); - defaultsWidgetDefaultColorLayout->addWidget( defaultsWidgetDefaultColorG_ ); - defaultsWidgetDefaultColorLayout->addItem ( new QSpacerItem( 6, 6 ) ); - defaultsWidgetDefaultColorLayout->addWidget( defaultsWidgetDefaultColorB_ ); + defaultsWidgetDefaultColorLayout->setSpacing( 6 ); + defaultsWidgetDefaultColorLayout->addWidget( defaultsWidgetDefaultColorR_ ); + defaultsWidgetDefaultColorLayout->addWidget( defaultsWidgetDefaultColorG_ ); + defaultsWidgetDefaultColorLayout->addWidget( defaultsWidgetDefaultColorB_ ); + + // default options layout + QGridLayout *defaultsWidgetDefaultOptionsLayout = new QGridLayout(); + defaultsWidgetDefaultOptionsLayout->setSpacing( 6 ); + defaultsWidgetDefaultOptionsLayout->addWidget( new QLabel( "Default Normal:" ), 0, 0 ); + defaultsWidgetDefaultOptionsLayout->addWidget( new QLabel( "Default Pointsize:" ), 1, 0 ); + defaultsWidgetDefaultOptionsLayout->addWidget( new QLabel( "Default Color:" ), 2, 0 ); + defaultsWidgetDefaultOptionsLayout->addItem ( defaultsWidgetDefaultNormalLayout, 0, 1 ); + defaultsWidgetDefaultOptionsLayout->addItem ( defaultsWidgetDefaultPointsizeLayout, 1, 1 ); + defaultsWidgetDefaultOptionsLayout->addItem ( defaultsWidgetDefaultColorLayout, 2, 1 ); // cancel and apply buttons QPushButton *defaultsWidgetCancelButton = new QPushButton( "Cancel" ); QPushButton *defaultsWidgetApplyButton = new QPushButton( "Apply" ); + defaultsWidgetCancelButton->setToolTip( "Return without applying any changes" ); + defaultsWidgetApplyButton->setToolTip ( "Apply the changes made and return" ); // buttons layout QHBoxLayout *defaultsWidgetButtonsLayout = new QHBoxLayout(); + defaultsWidgetButtonsLayout->setSpacing( 6 ); defaultsWidgetButtonsLayout->addWidget( defaultsWidgetCancelButton ); - defaultsWidgetButtonsLayout->addItem ( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); defaultsWidgetButtonsLayout->addWidget( defaultsWidgetApplyButton ); // widget layout QVBoxLayout *defaultsWidgetLayout = new QVBoxLayout(); - defaultsWidgetLayout->addItem( defaultsWidgetDefaultNormalLayout ); - defaultsWidgetLayout->addItem( defaultsWidgetDefaultPointsizeLayout ); - defaultsWidgetLayout->addItem( defaultsWidgetDefaultColorLayout ); - defaultsWidgetLayout->addItem( new QSpacerItem( 6, 6, QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - defaultsWidgetLayout->addItem( defaultsWidgetButtonsLayout ); + defaultsWidgetLayout->setSpacing( 6 ); + defaultsWidgetLayout->addItem( defaultsWidgetDefaultOptionsLayout ); + defaultsWidgetLayout->addItem( defaultsWidgetButtonsLayout ); // widget defaultsWidget_ = new QWidget(); @@ -391,10 +424,9 @@ void SplatCloudRenderingControlPlugin::initializePlugin() void SplatCloudRenderingControlPlugin::slotUpdateContextMenu( int _objectId ) { // get object by id - if( _objectId == -1 ) return; - + // BaseObjectData *object; if( ! PluginFunctions::getObject( _objectId, object ) ) return; @@ -405,8 +437,8 @@ void SplatCloudRenderingControlPlugin::slotUpdateContextMenu( int _objectId ) // if object is a SplatCloud... if( splatCloud ) { - // update context-menu value - menuCullingAction_->setChecked( splatCloud->isBackfaceCullingEnabled() ); + // update context menu value + contextCullingAction_->setChecked( splatCloud->isBackfaceCullingEnabled() ); } } @@ -551,16 +583,13 @@ void SplatCloudRenderingControlPlugin::slotToolboxApplyDefaultsButtonClicked() //---------------------------------------------------------------- -void SplatCloudRenderingControlPlugin::slotMenuScaleActionTriggered() +void SplatCloudRenderingControlPlugin::slotContextScaleActionTriggered() { - // get picked object - - QVariant contextObject = menuScaleAction_->data(); - - int objectId = contextObject.toInt(); + // get picked object by id + int objectId = contextScaleAction_->data().toInt(); if( objectId == -1 ) return; - + // BaseObjectData *object; if( ! PluginFunctions::getObject( objectId, object ) ) return; @@ -575,8 +604,7 @@ void SplatCloudRenderingControlPlugin::slotMenuScaleActionTriggered() scaleWidgetPointsizeScale_->setValue( splatCloud->pointsizeScale() ); // move scale-widget to position of context menu entry - QWidget *menuWidget = menuScaleAction_->associatedWidgets()[0]; - scaleWidget_->move( menuWidget->x(), menuWidget->y() ); + scaleWidget_->move( contextScaleAction_->associatedWidgets()[0]->mapToGlobal( QPoint() ) ); // show scale-widget scaleWidget_->show(); @@ -589,14 +617,11 @@ void SplatCloudRenderingControlPlugin::slotMenuScaleActionTriggered() void SplatCloudRenderingControlPlugin::slotScaleWidgetPointsizeScaleValueChanged() { - // get picked object - - QVariant contextObject = menuScaleAction_->data(); - - int objectId = contextObject.toInt(); + // get picked object by id + int objectId = contextScaleAction_->data().toInt(); if( objectId == -1 ) return; - + // BaseObjectData *object; if( ! PluginFunctions::getObject( objectId, object ) ) return; @@ -622,16 +647,13 @@ void SplatCloudRenderingControlPlugin::slotScaleWidgetPointsizeScaleValueChanged //---------------------------------------------------------------- -void SplatCloudRenderingControlPlugin::slotMenuCullingActionTriggered() +void SplatCloudRenderingControlPlugin::slotContextCullingActionTriggered() { - // get picked object - - QVariant contextObject = menuCullingAction_->data(); - - int objectId = contextObject.toInt(); + // get picked object by id + int objectId = contextCullingAction_->data().toInt(); if( objectId == -1 ) return; - + // BaseObjectData *object; if( ! PluginFunctions::getObject( objectId, object ) ) return; @@ -642,8 +664,8 @@ void SplatCloudRenderingControlPlugin::slotMenuCullingActionTriggered() // if object is a SplatCloud... if( splatCloud ) { - // get context-menu option value - bool enable = menuCullingAction_->isChecked(); + // get context menu option value + bool enable = contextCullingAction_->isChecked(); // apply update splatCloud->enableBackfaceCulling( enable ); @@ -657,16 +679,13 @@ void SplatCloudRenderingControlPlugin::slotMenuCullingActionTriggered() //---------------------------------------------------------------- -void SplatCloudRenderingControlPlugin::slotMenuReloadShadersActionTriggered() +void SplatCloudRenderingControlPlugin::slotContextReloadShadersActionTriggered() { - // get picked object - - QVariant contextObject = menuReloadShadersAction_->data(); - - int objectId = contextObject.toInt(); + // get picked object by id + int objectId = contextReloadShadersAction_->data().toInt(); if( objectId == -1 ) return; - + // BaseObjectData *object; if( ! PluginFunctions::getObject( objectId, object ) ) return; @@ -691,16 +710,13 @@ void SplatCloudRenderingControlPlugin::slotMenuReloadShadersActionTriggered() //---------------------------------------------------------------- -void SplatCloudRenderingControlPlugin::slotMenuRebuildVBOActionTriggered() +void SplatCloudRenderingControlPlugin::slotContextRebuildVBOActionTriggered() { - // get picked object - - QVariant contextObject = menuRebuildVBOAction_->data(); - - int objectId = contextObject.toInt(); + // get picked object by id + int objectId = contextRebuildVBOAction_->data().toInt(); if( objectId == -1 ) return; - + // BaseObjectData *object; if( ! PluginFunctions::getObject( objectId, object ) ) return; @@ -723,16 +739,13 @@ void SplatCloudRenderingControlPlugin::slotMenuRebuildVBOActionTriggered() //---------------------------------------------------------------- -void SplatCloudRenderingControlPlugin::slotMenuDefaultsActionTriggered() +void SplatCloudRenderingControlPlugin::slotContextDefaultsActionTriggered() { - // get picked object - - QVariant contextObject = menuDefaultsAction_->data(); - - int objectId = contextObject.toInt(); + // get picked object by id + int objectId = contextDefaultsAction_->data().toInt(); if( objectId == -1 ) return; - + // BaseObjectData *object; if( ! PluginFunctions::getObject( objectId, object ) ) return; @@ -753,8 +766,7 @@ void SplatCloudRenderingControlPlugin::slotMenuDefaultsActionTriggered() defaultsWidgetDefaultColorB_->setValue( splatCloudNode->defaultColor()[2] ); // move defaults widget to position of context menu entry - QWidget *menuWidget = menuDefaultsAction_->associatedWidgets()[0]; - defaultsWidget_->move( menuWidget->x(), menuWidget->y() ); + defaultsWidget_->move( contextDefaultsAction_->associatedWidgets()[0]->mapToGlobal( QPoint() ) ); // show defaults widget defaultsWidget_->show(); @@ -777,14 +789,14 @@ void SplatCloudRenderingControlPlugin::slotDefaultsWidgetCancelButtonClicked() void SplatCloudRenderingControlPlugin::slotDefaultsWidgetApplyButtonClicked() { - // get picked object - - QVariant contextObject = menuDefaultsAction_->data(); + // close widget + defaultsWidget_->close(); - int objectId = contextObject.toInt(); + // get picked object by id + int objectId = contextDefaultsAction_->data().toInt(); if( objectId == -1 ) return; - + // BaseObjectData *object; if( ! PluginFunctions::getObject( objectId, object ) ) return; @@ -807,9 +819,6 @@ void SplatCloudRenderingControlPlugin::slotDefaultsWidgetApplyButtonClicked() // emit signal that the object has to be updated emit updatedObject( object->id(), UPDATE_ALL ); } - - // close widget - defaultsWidget_->close(); } diff --git a/SplatCloudRenderingControlPlugin.hh b/SplatCloudRenderingControlPlugin.hh index 4328a333b8bffb52f532012f5c7312232cb93e38..2b6c9b64020cd39fef4bf06ba143d9b8fccb62e6 100644 --- a/SplatCloudRenderingControlPlugin.hh +++ b/SplatCloudRenderingControlPlugin.hh @@ -63,8 +63,8 @@ #include <OpenFlipper/BasePlugin/BaseInterface.hh> #include <OpenFlipper/BasePlugin/ToolboxInterface.hh> -#include <OpenFlipper/BasePlugin/LoggingInterface.hh> #include <OpenFlipper/BasePlugin/ContextMenuInterface.hh> +#include <OpenFlipper/BasePlugin/LoggingInterface.hh> #include <OpenFlipper/common/Types.hh> @@ -72,13 +72,13 @@ //== CLASS DEFINITION ============================================ -class SplatCloudRenderingControlPlugin : public QObject, BaseInterface, ToolboxInterface, LoggingInterface, ContextMenuInterface +class SplatCloudRenderingControlPlugin : public QObject, BaseInterface, ToolboxInterface, ContextMenuInterface, LoggingInterface { Q_OBJECT Q_INTERFACES( BaseInterface ) Q_INTERFACES( ToolboxInterface ) - Q_INTERFACES( LoggingInterface ) Q_INTERFACES( ContextMenuInterface ) + Q_INTERFACES( LoggingInterface ) signals: @@ -86,15 +86,15 @@ signals: void updatedObject( int _identifier, const UpdateType _type); //-- Toolbox Interface -- - void addToolbox( QString _name , QWidget* _widget, QIcon* _icon); + void addToolbox( QString _name, QWidget *_widget, QIcon *_icon ); + + //-- ContextMenu Interface-- + void addContextMenuItem( QAction *_action, DataType _objectType, ContextMenuType _type ); //-- Logging Interface -- void log( Logtype _type, QString _message ); void log( QString _message ); - //-- ContextMenu Interface-- - void addContextMenuItem( QAction *_action, DataType _objectType, ContextMenuType _type ); - public: //-- Base Interface -- @@ -112,14 +112,13 @@ private: QSpinBox *toolboxDefaultColorR_; QSpinBox *toolboxDefaultColorG_; QSpinBox *toolboxDefaultColorB_; - QIcon *toolBoxIcon_; - // menu options - QAction *menuScaleAction_; - QAction *menuCullingAction_; - QAction *menuDefaultsAction_; - QAction *menuReloadShadersAction_; - QAction *menuRebuildVBOAction_; + // context menu options + QAction *contextScaleAction_; + QAction *contextCullingAction_; + QAction *contextDefaultsAction_; + QAction *contextReloadShadersAction_; + QAction *contextRebuildVBOAction_; // scale widget options QWidget *scaleWidget_; @@ -154,11 +153,11 @@ private slots: void slotToolboxApplyDefaultsButtonClicked(); // slots called when a context menu action was triggered - void slotMenuScaleActionTriggered(); - void slotMenuCullingActionTriggered(); - void slotMenuReloadShadersActionTriggered(); - void slotMenuRebuildVBOActionTriggered(); - void slotMenuDefaultsActionTriggered(); + void slotContextScaleActionTriggered(); + void slotContextCullingActionTriggered(); + void slotContextReloadShadersActionTriggered(); + void slotContextRebuildVBOActionTriggered(); + void slotContextDefaultsActionTriggered(); // slots called when a scale widget option changed value void slotScaleWidgetPointsizeScaleValueChanged();