#include <netedit/elements/GNEAttributeCarrier.h>
#include <netedit/GNEApplicationWindow.h>
#include "GNEColorDialog.h"
FXDEFMAP(GNEColorDialog) GNEColorDialogMap[] = {
FXMAPFUNC(SEL_CHANGED, FXColorDialog::ID_COLORSELECTOR, GNEColorDialog::onChgColor),
FXMAPFUNC(SEL_COMMAND, FXColorDialog::ID_COLORSELECTOR, GNEColorDialog::onCmdColor),
};
FXIMPLEMENT(GNEColorDialog, GNEDialog, GNEColorDialogMap, ARRAYNUMBER(GNEColorDialogMap))
GNEColorDialog::GNEColorDialog(GNEApplicationWindow* applicationWindow, const RGBColor color):
GNEDialog(applicationWindow, TL("Edit color"), GUIIcon::COLORWHEEL, DialogType::COLOR,
Buttons::ACCEPT_CANCEL_RESET, OpenType::MODAL, ResizeMode::STATIC, 600, 300),
myOriginalColor(color) {
myColorbox = new FXColorSelector(getContentFrame(), this, FXColorDialog::ID_COLORSELECTOR, LAYOUT_FILL_X | LAYOUT_FILL_Y);
myColorbox->setRGBA(MFXUtils::getFXColor(color));
myColorbox->acceptButton()->disable();
myColorbox->acceptButton()->hide();
myColorbox->cancelButton()->disable();
myColorbox->cancelButton()->hide();
openDialog();
}
GNEColorDialog::~GNEColorDialog() {
myColorbox = (FXColorSelector*) - 1L;
}
void
GNEColorDialog::runInternalTest(const InternalTestStep::DialogArgument* dialogArgument) {
if (GNEAttributeCarrier::canParse<RGBColor>(dialogArgument->getCustomAction())) {
const auto color = GNEAttributeCarrier::parse<RGBColor>(dialogArgument->getCustomAction());
myColorbox->setRGBA(MFXUtils::getFXColor(color));
} else {
WRITE_ERROR("Cannot parse color " + dialogArgument->getCustomAction() + " in internal test");
}
}
RGBColor
GNEColorDialog::getColor() const {
return MFXUtils::getRGBColor(myColorbox->getRGBA());
}
long
GNEColorDialog::onCmdReset(FXObject*, FXSelector, void*) {
myColorbox->setRGBA(MFXUtils::getFXColor(myOriginalColor));
return 1;
}
long
GNEColorDialog::onChgColor(FXObject*, FXSelector, void* ptr) {
if (target) {
return target->tryHandle(this, FXSEL(SEL_CHANGED, message), ptr);
} else {
return 0;
}
}
long
GNEColorDialog::onCmdColor(FXObject*, FXSelector, void* ptr) {
if (target) {
return target->tryHandle(this, FXSEL(SEL_COMMAND, message), ptr);
} else {
return 0;
}
}