//-----------------------------------------------------------------------
void MaterialTab::OnEmissive(wxCommandEvent& event)
{
	Ogre::Pass* pass = getFirstPass();
	if (pass)
	{
		Ogre::ColourValue colour = pass->getSelfIllumination();
		wxColour wxCol(colour.r * 255, colour.g * 255, colour.b * 255, colour.a * 255);
		wxColourData colourData;
		colourData.SetColour(wxCol); // Set the current pass colour
		wxColourDialog colourDialog(this, &colourData);
		if (event.GetEventObject() && event.GetEventObject()->IsKindOf(CLASSINFO(wxButton)))
		{
			colourDialog.SetPosition(((wxButton*)event.GetEventObject())->GetPosition());
		}
		if (colourDialog.ShowModal() == wxID_OK)
		{
			// Set colour in pass
			colourData = colourDialog.GetColourData();
			wxCol = colourData.GetColour();
			colour = Ogre::ColourValue(((ParticleUniverse::Real)wxCol.Red())/255.0f, 
			((ParticleUniverse::Real)wxCol.Green())/255.0f, 
			((ParticleUniverse::Real)wxCol.Blue())/255.0f, 
			((ParticleUniverse::Real)wxCol.Alpha())/255.0f);
		}
		pass->setSelfIllumination(colour);
	}
}
void TColourScaleEditor::mouseDoubleClickEvent(QMouseEvent* event)
{
	// Store mouse position
	lastPos_ = event->pos();

	// Check mouse position
	if (gradientBarRegion_.contains(lastPos_))
	{
		// Gradient bar was double-clicked, so add a new point at this position
		double clickedValue = gradientBarValue(lastPos_);
		QColor clickedColour = colourScale_.colourAsQColor(clickedValue);
		colourScale_.addPoint(clickedValue, clickedColour);

		updateGradient();
		repaint();

		emit(colourScaleChanged());
	}
	else if (handleRegion_.contains(lastPos_))
	{
		currentColourScalePoint_ = handleUnderMouse(lastPos_);
		
		if (currentColourScalePoint_)
		{
			ColourDialog colourDialog(this);
			if (colourDialog.execute(currentColourScalePoint_->colourAsQColor()))
			{
				colourScale_.setColour(currentColourScalePoint_, colourDialog.selectedColour());

				updateGradient();
				repaint();

				emit(colourScaleChanged());
			}
		}
	}
	else if (labelRegion_.contains(lastPos_))
	{
		currentColourScalePoint_ = labelUnderMouse(lastPos_);

		if (currentColourScalePoint_)
		{
			bool ok;
			double newValue = QInputDialog::getDouble(this, "Set point value", "New value: ", currentColourScalePoint_->value(), -1.0e7, 1.0e7, 6, &ok);
			if (ok)
			{
				colourScale_.setValue(currentColourScalePoint_, newValue);

				updateGradient();
				repaint();

				emit(colourScaleChanged());
			}
		}
	}

	currentColourScalePoint_ = NULL;
}