ControlSpotPanel code cleanup
Bugfixes: - Removes some memory link with edit widgets management
This commit is contained in:
parent
3423e45753
commit
bf9acf0abd
@ -69,12 +69,11 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
avoid_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_AVOID")))),
|
avoid_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_AVOID")))),
|
||||||
|
|
||||||
lastObject_(-1),
|
lastObject_(-1),
|
||||||
lastCoord_(new Coord()),
|
|
||||||
nbSpotChanged_(false),
|
nbSpotChanged_(false),
|
||||||
selSpotChanged_(false),
|
selSpotChanged_(false),
|
||||||
nameChanged_(false),
|
nameChanged_(false),
|
||||||
visibilityChanged_(false),
|
visibilityChanged_(false),
|
||||||
eventType(0),
|
eventType(None),
|
||||||
excluFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_EXCLUF"))))
|
excluFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_EXCLUF"))))
|
||||||
{
|
{
|
||||||
Gtk::HBox* const hbox1_ = Gtk::manage(new Gtk::HBox(true, 4));
|
Gtk::HBox* const hbox1_ = Gtk::manage(new Gtk::HBox(true, 4));
|
||||||
@ -265,6 +264,31 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
pack_start(*avoid_);
|
pack_start(*avoid_);
|
||||||
|
|
||||||
show_all();
|
show_all();
|
||||||
|
|
||||||
|
// Define row background color
|
||||||
|
// Mouseovered spot (opaque orange)
|
||||||
|
colorMouseover.set_red(1.);
|
||||||
|
colorMouseover.set_green(100. / 255.);
|
||||||
|
colorMouseover.set_blue(0.);
|
||||||
|
colorMouseover.set_alpha(1.);
|
||||||
|
// Nominal spot (transparent black)
|
||||||
|
colorNominal.set_red(0.);
|
||||||
|
colorNominal.set_green(0.);
|
||||||
|
colorNominal.set_blue(0.);
|
||||||
|
colorNominal.set_alpha(0.);
|
||||||
|
}
|
||||||
|
|
||||||
|
ControlSpotPanel::~ControlSpotPanel()
|
||||||
|
{
|
||||||
|
// visibleGeometry
|
||||||
|
for (auto i = EditSubscriber::visibleGeometry.begin(); i != EditSubscriber::visibleGeometry.end(); ++i) {
|
||||||
|
delete *i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// mouseOverGeometry
|
||||||
|
for (auto i = EditSubscriber::mouseOverGeometry.begin(); i != EditSubscriber::mouseOverGeometry.end(); ++i) {
|
||||||
|
delete *i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::setEditProvider(EditDataProvider* provider)
|
void ControlSpotPanel::setEditProvider(EditDataProvider* provider)
|
||||||
@ -277,22 +301,17 @@ void ControlSpotPanel::render_id(
|
|||||||
{
|
{
|
||||||
auto row = *iter;
|
auto row = *iter;
|
||||||
Gtk::CellRendererText *ct = static_cast<Gtk::CellRendererText *>(cell);
|
Gtk::CellRendererText *ct = static_cast<Gtk::CellRendererText *>(cell);
|
||||||
int value = row[spots_.id];
|
|
||||||
ct->property_text() = std::to_string(value);
|
// Render cell text
|
||||||
// Render background color
|
ct->property_text() = std::to_string(row[spots_.id]);
|
||||||
Gdk::RGBA color;
|
|
||||||
if (row[spots_.mouseover]) { // Orange
|
// Render cell background color
|
||||||
color.set_red(1.);
|
if (row[spots_.mouseover]) {
|
||||||
color.set_green(100. / 255.);
|
ct->property_background_rgba() = colorMouseover;
|
||||||
color.set_blue(0.);
|
} else {
|
||||||
color.set_alpha(1.);
|
ct->property_background_rgba() = colorNominal;
|
||||||
} else { // Transparent black
|
|
||||||
color.set_red(0.);
|
|
||||||
color.set_green(0.);
|
|
||||||
color.set_blue(0.);
|
|
||||||
color.set_alpha(0.);
|
|
||||||
}
|
}
|
||||||
ct->property_background_rgba() = color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::render_name(
|
void ControlSpotPanel::render_name(
|
||||||
@ -300,22 +319,16 @@ void ControlSpotPanel::render_name(
|
|||||||
{
|
{
|
||||||
auto row = *iter;
|
auto row = *iter;
|
||||||
Gtk::CellRendererText *ct = static_cast<Gtk::CellRendererText *>(cell);
|
Gtk::CellRendererText *ct = static_cast<Gtk::CellRendererText *>(cell);
|
||||||
auto value = row[spots_.name];
|
|
||||||
ct->property_text() = value;
|
// Render cell text
|
||||||
Gdk::RGBA color;
|
ct->property_text() = row[spots_.name];
|
||||||
// Render background color
|
|
||||||
if (row[spots_.mouseover]) { // Orange
|
// Render cell background color
|
||||||
color.set_red(1.);
|
if (row[spots_.mouseover]) {
|
||||||
color.set_green(100. / 255.);
|
ct->property_background_rgba() = colorMouseover;
|
||||||
color.set_blue(0.);
|
} else {
|
||||||
color.set_alpha(1.);
|
ct->property_background_rgba() = colorNominal;
|
||||||
} else { // Transparent black
|
|
||||||
color.set_red(0.);
|
|
||||||
color.set_green(0.);
|
|
||||||
color.set_blue(0.);
|
|
||||||
color.set_alpha(0.);
|
|
||||||
}
|
}
|
||||||
ct->property_background_rgba() = color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::render_isvisible(
|
void ControlSpotPanel::render_isvisible(
|
||||||
@ -323,28 +336,20 @@ void ControlSpotPanel::render_isvisible(
|
|||||||
{
|
{
|
||||||
auto row = *iter;
|
auto row = *iter;
|
||||||
Gtk::CellRendererText *ct = static_cast<Gtk::CellRendererText *>(cell);
|
Gtk::CellRendererText *ct = static_cast<Gtk::CellRendererText *>(cell);
|
||||||
auto value = row[spots_.isvisible];
|
|
||||||
|
|
||||||
if (value) {
|
// Render cell text
|
||||||
|
if (row[spots_.isvisible]) {
|
||||||
ct->property_text() = M("TP_LOCALLAB_ROW_VIS");
|
ct->property_text() = M("TP_LOCALLAB_ROW_VIS");
|
||||||
} else {
|
} else {
|
||||||
ct->property_text() = M("TP_LOCALLAB_ROW_NVIS");
|
ct->property_text() = M("TP_LOCALLAB_ROW_NVIS");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Render background color
|
// Render cell background color
|
||||||
Gdk::RGBA color;
|
if (row[spots_.mouseover]) {
|
||||||
if (row[spots_.mouseover]) { // Orange
|
ct->property_background_rgba() = colorMouseover;
|
||||||
color.set_red(1.);
|
} else {
|
||||||
color.set_green(100. / 255.);
|
ct->property_background_rgba() = colorNominal;
|
||||||
color.set_blue(0.);
|
|
||||||
color.set_alpha(1.);
|
|
||||||
} else { // Transparent black
|
|
||||||
color.set_red(0.);
|
|
||||||
color.set_green(0.);
|
|
||||||
color.set_blue(0.);
|
|
||||||
color.set_alpha(0.);
|
|
||||||
}
|
}
|
||||||
ct->property_background_rgba() = color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::on_button_add()
|
void ControlSpotPanel::on_button_add()
|
||||||
@ -358,7 +363,7 @@ void ControlSpotPanel::on_button_add()
|
|||||||
// Raise event
|
// Raise event
|
||||||
nbSpotChanged_ = true;
|
nbSpotChanged_ = true;
|
||||||
selSpotChanged_ = true;
|
selSpotChanged_ = true;
|
||||||
eventType = 1; // 1 = Spot creation event
|
eventType = SpotCreation;
|
||||||
const int newId = getNewId();
|
const int newId = getNewId();
|
||||||
listener->panelChanged(EvLocallabSpotCreated, "ID#" + std::to_string(newId));
|
listener->panelChanged(EvLocallabSpotCreated, "ID#" + std::to_string(newId));
|
||||||
}
|
}
|
||||||
@ -374,7 +379,7 @@ void ControlSpotPanel::on_button_delete()
|
|||||||
// Raise event
|
// Raise event
|
||||||
nbSpotChanged_ = true;
|
nbSpotChanged_ = true;
|
||||||
selSpotChanged_ = true;
|
selSpotChanged_ = true;
|
||||||
eventType = 2; // 2 = Spot deletion event
|
eventType = SpotDeletion;
|
||||||
const int delId = getSelectedSpot();
|
const int delId = getSelectedSpot();
|
||||||
listener->panelChanged(EvLocallabSpotDeleted, "ID#" + std::to_string(delId));
|
listener->panelChanged(EvLocallabSpotDeleted, "ID#" + std::to_string(delId));
|
||||||
}
|
}
|
||||||
@ -394,7 +399,7 @@ void ControlSpotPanel::on_button_duplicate()
|
|||||||
}
|
}
|
||||||
nbSpotChanged_ = true;
|
nbSpotChanged_ = true;
|
||||||
selSpotChanged_ = true;
|
selSpotChanged_ = true;
|
||||||
eventType = 4; // 4 = Spot duplication event
|
eventType = SpotDuplication;
|
||||||
const int newId = getNewId();
|
const int newId = getNewId();
|
||||||
listener->panelChanged(EvLocallabSpotCreated, "ID#" + std::to_string(newId)
|
listener->panelChanged(EvLocallabSpotCreated, "ID#" + std::to_string(newId)
|
||||||
+ " (" + M("TP_LOCALLAB_EV_DUPL") + " ID#"
|
+ " (" + M("TP_LOCALLAB_EV_DUPL") + " ID#"
|
||||||
@ -502,23 +507,23 @@ void ControlSpotPanel::load_ControlSpot_param()
|
|||||||
// Load param in selected control spot
|
// Load param in selected control spot
|
||||||
shape_->set_active(row[spots_.shape]);
|
shape_->set_active(row[spots_.shape]);
|
||||||
spotMethod_->set_active(row[spots_.spotMethod]);
|
spotMethod_->set_active(row[spots_.spotMethod]);
|
||||||
sensiexclu_->setValue(static_cast<double>(row[spots_.sensiexclu]));
|
sensiexclu_->setValue((double)row[spots_.sensiexclu]);
|
||||||
structexclu_->setValue(static_cast<double>(row[spots_.structexclu]));
|
structexclu_->setValue((double)row[spots_.structexclu]);
|
||||||
struc_->setValue(static_cast<double>(row[spots_.struc]));
|
struc_->setValue((double)row[spots_.struc]);
|
||||||
shapeMethod_->set_active(row[spots_.shapeMethod]);
|
shapeMethod_->set_active(row[spots_.shapeMethod]);
|
||||||
locX_->setValue(static_cast<double>(row[spots_.locX]));
|
locX_->setValue((double)row[spots_.locX]);
|
||||||
locXL_->setValue(static_cast<double>(row[spots_.locXL]));
|
locXL_->setValue((double)row[spots_.locXL]);
|
||||||
locY_->setValue(static_cast<double>(row[spots_.locY]));
|
locY_->setValue((double)row[spots_.locY]);
|
||||||
locYT_->setValue(static_cast<double>(row[spots_.locYT]));
|
locYT_->setValue((double)row[spots_.locYT]);
|
||||||
centerX_->setValue(static_cast<double>(row[spots_.centerX]));
|
centerX_->setValue((double)row[spots_.centerX]);
|
||||||
centerY_->setValue(static_cast<double>(row[spots_.centerY]));
|
centerY_->setValue((double)row[spots_.centerY]);
|
||||||
circrad_->setValue(static_cast<double>(row[spots_.circrad]));
|
circrad_->setValue((double)row[spots_.circrad]);
|
||||||
qualityMethod_->set_active(row[spots_.qualityMethod]);
|
qualityMethod_->set_active(row[spots_.qualityMethod]);
|
||||||
transit_->setValue(static_cast<double>(row[spots_.transit]));
|
transit_->setValue((double)row[spots_.transit]);
|
||||||
thresh_->setValue(static_cast<double>(row[spots_.thresh]));
|
thresh_->setValue((double)row[spots_.thresh]);
|
||||||
iter_->setValue(static_cast<double>(row[spots_.iter]));
|
iter_->setValue((double)row[spots_.iter]);
|
||||||
balan_->setValue(static_cast<double>(row[spots_.balan]));
|
balan_->setValue((double)row[spots_.balan]);
|
||||||
transitweak_->setValue(static_cast<double>(row[spots_.transitweak]));
|
transitweak_->setValue((double)row[spots_.transitweak]);
|
||||||
avoid_->set_active(row[spots_.avoid]);
|
avoid_->set_active(row[spots_.avoid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -532,7 +537,7 @@ void ControlSpotPanel::controlspotChanged()
|
|||||||
|
|
||||||
// Raise event
|
// Raise event
|
||||||
selSpotChanged_ = true;
|
selSpotChanged_ = true;
|
||||||
eventType = 3; // 3 = Spot selection event
|
eventType = SpotSelection;
|
||||||
const int selId = getSelectedSpot();
|
const int selId = getSelectedSpot();
|
||||||
listener->panelChanged(EvLocallabSpotSelected, "ID#" + std::to_string(selId));
|
listener->panelChanged(EvLocallabSpotSelected, "ID#" + std::to_string(selId));
|
||||||
}
|
}
|
||||||
@ -614,8 +619,8 @@ void ControlSpotPanel::shapeMethodChanged()
|
|||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
|
|
||||||
row[spots_.shapeMethod] = shapeMethod_->get_active_row_number();
|
row[spots_.shapeMethod] = shapeMethod_->get_active_row_number();
|
||||||
row[spots_.locXL] = static_cast<int>(locX_->getValue());
|
row[spots_.locXL] = locX_->getIntValue();
|
||||||
row[spots_.locYT] = static_cast<int>(locY_->getValue());
|
row[spots_.locYT] = locY_->getIntValue();
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
} else { // In batch mode, sliders are always independent
|
} else { // In batch mode, sliders are always independent
|
||||||
@ -787,7 +792,7 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
Gtk::TreeModel::Row row = *iter;
|
Gtk::TreeModel::Row row = *iter;
|
||||||
|
|
||||||
if (a == sensiexclu_) {
|
if (a == sensiexclu_) {
|
||||||
row[spots_.sensiexclu] = (int) sensiexclu_->getValue();
|
row[spots_.sensiexclu] = sensiexclu_->getIntValue();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
listener->panelChanged(EvLocallabSpotSensiexclu, sensiexclu_->getTextValue());
|
listener->panelChanged(EvLocallabSpotSensiexclu, sensiexclu_->getTextValue());
|
||||||
@ -795,7 +800,7 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a == structexclu_) {
|
if (a == structexclu_) {
|
||||||
row[spots_.structexclu] = (int) structexclu_->getValue();
|
row[spots_.structexclu] = structexclu_->getIntValue();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
listener->panelChanged(Evlocallabstructexlu, structexclu_->getTextValue());
|
listener->panelChanged(Evlocallabstructexlu, structexclu_->getTextValue());
|
||||||
@ -811,13 +816,13 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a == locX_) {
|
if (a == locX_) {
|
||||||
row[spots_.locX] = (int) locX_->getValue();
|
row[spots_.locX] = locX_->getIntValue();
|
||||||
|
|
||||||
if (!batchMode && (method == 1 || method == 3)) { // Symmetrical cases (in batch mode, sliders are always independent)
|
if (!batchMode && (method == 1 || method == 3)) { // Symmetrical cases (in batch mode, sliders are always independent)
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locXL_->setValue(locX_->getValue());
|
locXL_->setValue(locX_->getValue());
|
||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
row[spots_.locXL] = (int) locXL_->getValue();
|
row[spots_.locXL] = locXL_->getIntValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
@ -828,13 +833,13 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a == locXL_) {
|
if (a == locXL_) {
|
||||||
row[spots_.locXL] = (int) locXL_->getValue();
|
row[spots_.locXL] = locXL_->getIntValue();
|
||||||
|
|
||||||
if (!batchMode && (method == 1 || method == 3)) { // Symmetrical cases (in batch mode, sliders are always independent)
|
if (!batchMode && (method == 1 || method == 3)) { // Symmetrical cases (in batch mode, sliders are always independent)
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locX_->setValue(locXL_->getValue());
|
locX_->setValue(locXL_->getValue());
|
||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
row[spots_.locX] = (int) locX_->getValue();
|
row[spots_.locX] = locX_->getIntValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
@ -845,13 +850,13 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a == locY_) {
|
if (a == locY_) {
|
||||||
row[spots_.locY] = (int) locY_->getValue();
|
row[spots_.locY] = locY_->getIntValue();
|
||||||
|
|
||||||
if (!batchMode && (method == 1 || method == 3)) { // Symmetrical cases (in batch mode, sliders are always independent)
|
if (!batchMode && (method == 1 || method == 3)) { // Symmetrical cases (in batch mode, sliders are always independent)
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locYT_->setValue(locY_->getValue());
|
locYT_->setValue(locY_->getValue());
|
||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
row[spots_.locYT] = (int) locYT_->getValue();
|
row[spots_.locYT] = locYT_->getIntValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
@ -862,13 +867,13 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a == locYT_) {
|
if (a == locYT_) {
|
||||||
row[spots_.locYT] = (int) locYT_->getValue();
|
row[spots_.locYT] = locYT_->getIntValue();
|
||||||
|
|
||||||
if (!batchMode && (method == 1 || method == 3)) { // Symmetrical cases (in batch mode, sliders are always independent)
|
if (!batchMode && (method == 1 || method == 3)) { // Symmetrical cases (in batch mode, sliders are always independent)
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locY_->setValue(locYT_->getValue());
|
locY_->setValue(locYT_->getValue());
|
||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
row[spots_.locY] = (int) locY_->getValue();
|
row[spots_.locY] = locY_->getIntValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
@ -879,8 +884,8 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a == centerX_ || a == centerY_) {
|
if (a == centerX_ || a == centerY_) {
|
||||||
row[spots_.centerX] = (int) centerX_->getValue();
|
row[spots_.centerX] = centerX_->getIntValue();
|
||||||
row[spots_.centerY] = (int) centerY_->getValue();
|
row[spots_.centerY] = centerY_->getIntValue();
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
|
|
||||||
@ -890,7 +895,7 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a == circrad_) {
|
if (a == circrad_) {
|
||||||
row[spots_.circrad] = (int) circrad_->getValue();
|
row[spots_.circrad] = circrad_->getIntValue();
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
|
|
||||||
@ -900,7 +905,7 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a == transit_) {
|
if (a == transit_) {
|
||||||
row[spots_.transit] = (int) transit_->getValue();
|
row[spots_.transit] = transit_->getIntValue();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
listener->panelChanged(EvLocallabSpotTransit, transit_->getTextValue());
|
listener->panelChanged(EvLocallabSpotTransit, transit_->getTextValue());
|
||||||
@ -917,7 +922,6 @@ void ControlSpotPanel::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a == iter_) {
|
if (a == iter_) {
|
||||||
// row[spots_.iter] = (int) iter_->getValue();
|
|
||||||
row[spots_.iter] = iter_->getValue();
|
row[spots_.iter] = iter_->getValue();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -1036,7 +1040,7 @@ void ControlSpotPanel::setParamEditable(bool cond)
|
|||||||
avoid_->set_sensitive(cond);
|
avoid_->set_sensitive(cond);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::addControlSpotCurve(Gtk::TreeModel::Row row)
|
void ControlSpotPanel::addControlSpotCurve(Gtk::TreeModel::Row& row)
|
||||||
{
|
{
|
||||||
// printf("addControlSpotCurve\n");
|
// printf("addControlSpotCurve\n");
|
||||||
|
|
||||||
@ -1120,7 +1124,7 @@ void ControlSpotPanel::addControlSpotCurve(Gtk::TreeModel::Row row)
|
|||||||
row[spots_.curveid] = EditSubscriber::visibleGeometry.size() / 7;
|
row[spots_.curveid] = EditSubscriber::visibleGeometry.size() / 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::updateControlSpotCurve(Gtk::TreeModel::Row row)
|
void ControlSpotPanel::updateControlSpotCurve(const Gtk::TreeModel::Row& row)
|
||||||
{
|
{
|
||||||
const int curveid_ = row[spots_.curveid];
|
const int curveid_ = row[spots_.curveid];
|
||||||
EditDataProvider* const dataProvider = getEditProvider();
|
EditDataProvider* const dataProvider = getEditProvider();
|
||||||
@ -1251,7 +1255,7 @@ void ControlSpotPanel::updateControlSpotCurve(Gtk::TreeModel::Row row)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::deleteControlSpotCurve(Gtk::TreeModel::Row row)
|
void ControlSpotPanel::deleteControlSpotCurve(Gtk::TreeModel::Row& row)
|
||||||
{
|
{
|
||||||
const int curveid_ = row[spots_.curveid];
|
const int curveid_ = row[spots_.curveid];
|
||||||
|
|
||||||
@ -1262,27 +1266,21 @@ void ControlSpotPanel::deleteControlSpotCurve(Gtk::TreeModel::Row row)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// visibleGeometry
|
// visibleGeometry
|
||||||
EditSubscriber::visibleGeometry.erase(EditSubscriber::visibleGeometry.begin() + (curveid_ - 1) * 7 + 6);
|
for (int i = 6; i >= 0; i--) {
|
||||||
EditSubscriber::visibleGeometry.erase(EditSubscriber::visibleGeometry.begin() + (curveid_ - 1) * 7 + 5);
|
delete *(EditSubscriber::visibleGeometry.begin() + (curveid_ - 1) * 7 + i);
|
||||||
EditSubscriber::visibleGeometry.erase(EditSubscriber::visibleGeometry.begin() + (curveid_ - 1) * 7 + 4);
|
EditSubscriber::visibleGeometry.erase(EditSubscriber::visibleGeometry.begin() + (curveid_ - 1) * 7 + i);
|
||||||
EditSubscriber::visibleGeometry.erase(EditSubscriber::visibleGeometry.begin() + (curveid_ - 1) * 7 + 3);
|
}
|
||||||
EditSubscriber::visibleGeometry.erase(EditSubscriber::visibleGeometry.begin() + (curveid_ - 1) * 7 + 2);
|
|
||||||
EditSubscriber::visibleGeometry.erase(EditSubscriber::visibleGeometry.begin() + (curveid_ - 1) * 7 + 1);
|
|
||||||
EditSubscriber::visibleGeometry.erase(EditSubscriber::visibleGeometry.begin() + (curveid_ - 1) * 7);
|
|
||||||
|
|
||||||
// mouseOverGeometry
|
// mouseOverGeometry
|
||||||
EditSubscriber::mouseOverGeometry.erase(EditSubscriber::mouseOverGeometry.begin() + (curveid_ - 1) * 7 + 6);
|
for (int i = 6; i >= 0; i--) {
|
||||||
EditSubscriber::mouseOverGeometry.erase(EditSubscriber::mouseOverGeometry.begin() + (curveid_ - 1) * 7 + 5);
|
delete *(EditSubscriber::mouseOverGeometry.begin() + (curveid_ - 1) * 7 + i);
|
||||||
EditSubscriber::mouseOverGeometry.erase(EditSubscriber::mouseOverGeometry.begin() + (curveid_ - 1) * 7 + 4);
|
EditSubscriber::mouseOverGeometry.erase(EditSubscriber::mouseOverGeometry.begin() + (curveid_ - 1) * 7 + i);
|
||||||
EditSubscriber::mouseOverGeometry.erase(EditSubscriber::mouseOverGeometry.begin() + (curveid_ - 1) * 7 + 3);
|
}
|
||||||
EditSubscriber::mouseOverGeometry.erase(EditSubscriber::mouseOverGeometry.begin() + (curveid_ - 1) * 7 + 2);
|
|
||||||
EditSubscriber::mouseOverGeometry.erase(EditSubscriber::mouseOverGeometry.begin() + (curveid_ - 1) * 7 + 1);
|
|
||||||
EditSubscriber::mouseOverGeometry.erase(EditSubscriber::mouseOverGeometry.begin() + (curveid_ - 1) * 7);
|
|
||||||
|
|
||||||
row[spots_.curveid] = 0; // Reset associated curve id
|
row[spots_.curveid] = 0; // Reset associated curve id
|
||||||
|
|
||||||
// Reordering curve id
|
// Reordering curve id
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
const Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
|
|
||||||
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row r = *iter;
|
Gtk::TreeModel::Row r = *iter;
|
||||||
@ -1293,7 +1291,7 @@ void ControlSpotPanel::deleteControlSpotCurve(Gtk::TreeModel::Row row)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::updateCurveOpacity(Gtk::TreeModel::Row selectedRow)
|
void ControlSpotPanel::updateCurveOpacity(const Gtk::TreeModel::Row& selectedRow)
|
||||||
{
|
{
|
||||||
const int curveid_ = selectedRow[spots_.curveid];
|
const int curveid_ = selectedRow[spots_.curveid];
|
||||||
|
|
||||||
@ -1322,7 +1320,7 @@ CursorShape ControlSpotPanel::getCursor(int objectID) const
|
|||||||
return CSHandOpen;
|
return CSHandOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rem_ = objectID % 7;
|
const int rem_ = objectID % 7;
|
||||||
|
|
||||||
switch (rem_) {
|
switch (rem_) {
|
||||||
case (0): // centerCircle: (curveid_ - 1) * 7
|
case (0): // centerCircle: (curveid_ - 1) * 7
|
||||||
@ -1362,22 +1360,21 @@ bool ControlSpotPanel::mouseOver(int modifierKey)
|
|||||||
|
|
||||||
// Get selected row
|
// Get selected row
|
||||||
const auto selIter = s->get_selected();
|
const auto selIter = s->get_selected();
|
||||||
Gtk::TreeModel::Row selRow = *selIter;
|
const Gtk::TreeModel::Row selRow = *selIter;
|
||||||
|
|
||||||
int object_ = editProvider_->object;
|
const int object_ = editProvider_->object;
|
||||||
|
|
||||||
if (object_ != lastObject_) {
|
if (object_ != lastObject_) {
|
||||||
if (object_ == -1) {
|
if (object_ == -1) {
|
||||||
// Reset mouseOver preview for visibleGeometry
|
// Reset mouseOver preview for visibleGeometry
|
||||||
for (int it_ = 0; it_ < (int) EditSubscriber::visibleGeometry.size(); it_++) {
|
for (size_t it_ = 0; it_ < EditSubscriber::visibleGeometry.size(); it_++) {
|
||||||
EditSubscriber::visibleGeometry.at(it_)->state = Geometry::NORMAL;
|
EditSubscriber::visibleGeometry.at(it_)->state = Geometry::NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset mouseOver preview for TreeView
|
// Reset mouseOver preview for TreeView
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
const Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
Gtk::TreeModel::Children::iterator iter;
|
|
||||||
|
|
||||||
for (iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row row = *iter;
|
Gtk::TreeModel::Row row = *iter;
|
||||||
row[spots_.mouseover] = false;
|
row[spots_.mouseover] = false;
|
||||||
}
|
}
|
||||||
@ -1387,13 +1384,13 @@ bool ControlSpotPanel::mouseOver(int modifierKey)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int curveId_ = object_ / 7 + 1;
|
const int curveId_ = object_ / 7 + 1;
|
||||||
int rem = object_ % 7;
|
const int rem = object_ % 7;
|
||||||
|
|
||||||
// Manage mouseOver preview for TreeView
|
// Manage mouseOver preview for TreeView
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
const Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
Gtk::TreeModel::Children::iterator iter;
|
|
||||||
for (iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row row = *iter;
|
Gtk::TreeModel::Row row = *iter;
|
||||||
if (row[spots_.curveid] == curveId_ && *row != *selRow) {
|
if (row[spots_.curveid] == curveId_ && *row != *selRow) {
|
||||||
row[spots_.mouseover] = true;
|
row[spots_.mouseover] = true;
|
||||||
@ -1484,11 +1481,11 @@ bool ControlSpotPanel::button1Pressed(int modifierKey)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Select associated control spot
|
// Select associated control spot
|
||||||
int curveId_ = lastObject_ / 7 + 1;
|
const int curveId_ = lastObject_ / 7 + 1;
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
|
|
||||||
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row r = *iter;
|
const Gtk::TreeModel::Row r = *iter;
|
||||||
|
|
||||||
if (r[spots_.curveid] == curveId_) {
|
if (r[spots_.curveid] == curveId_) {
|
||||||
treeview_->set_cursor(treemodel_->get_path(r));
|
treeview_->set_cursor(treemodel_->get_path(r));
|
||||||
@ -1496,7 +1493,7 @@ bool ControlSpotPanel::button1Pressed(int modifierKey)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lastCoord_->set(provider->posImage.x + provider->deltaImage.x, provider->posImage.y + provider->deltaImage.y);
|
lastCoord_.set(provider->posImage.x + provider->deltaImage.x, provider->posImage.y + provider->deltaImage.y);
|
||||||
EditSubscriber::action = EditSubscriber::Action::DRAGGING;
|
EditSubscriber::action = EditSubscriber::Action::DRAGGING;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1524,18 +1521,18 @@ bool ControlSpotPanel::drag1(int modifierKey)
|
|||||||
|
|
||||||
int imW, imH;
|
int imW, imH;
|
||||||
provider->getImageSize(imW, imH);
|
provider->getImageSize(imW, imH);
|
||||||
int rem = lastObject_ % 7;
|
const int rem = lastObject_ % 7;
|
||||||
int method = shapeMethod_->get_active_row_number();
|
const int method = shapeMethod_->get_active_row_number();
|
||||||
Coord* newCoord = new Coord(provider->posImage.x + provider->deltaImage.x, provider->posImage.y + provider->deltaImage.y);
|
Coord newCoord = Coord(provider->posImage.x + provider->deltaImage.x, provider->posImage.y + provider->deltaImage.y);
|
||||||
|
|
||||||
// Circle, Ellipses and Rectangle
|
// Circle, Ellipses and Rectangle
|
||||||
if (rem >= 0 && rem < 3) {
|
if (rem >= 0 && rem < 3) {
|
||||||
double deltaX = (double (newCoord->x) - double (lastCoord_->x)) * 2000. / double (imW);
|
double deltaX = (double (newCoord.x) - double (lastCoord_.x)) * 2000. / double (imW);
|
||||||
double deltaY = (double (newCoord->y) - double (lastCoord_->y)) * 2000. / double (imH);
|
double deltaY = (double (newCoord.y) - double (lastCoord_.y)) * 2000. / double (imH);
|
||||||
centerX_->setValue(centerX_->getValue() + deltaX);
|
centerX_->setValue(centerX_->getValue() + deltaX);
|
||||||
centerY_->setValue(centerY_->getValue() + deltaY);
|
centerY_->setValue(centerY_->getValue() + deltaY);
|
||||||
row[spots_.centerX] = (int) centerX_->getValue();
|
row[spots_.centerX] = centerX_->getIntValue();
|
||||||
row[spots_.centerY] = (int) centerY_->getValue();
|
row[spots_.centerY] = centerY_->getIntValue();
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
|
|
||||||
@ -1546,15 +1543,15 @@ bool ControlSpotPanel::drag1(int modifierKey)
|
|||||||
|
|
||||||
// cirX
|
// cirX
|
||||||
if (rem == 3) {
|
if (rem == 3) {
|
||||||
double deltaX = (double (newCoord->x) - double (lastCoord_->x)) * 2000. / double (imW);
|
double deltaX = (double (newCoord.x) - double (lastCoord_.x)) * 2000. / double (imW);
|
||||||
locX_->setValue(locX_->getValue() + deltaX);
|
locX_->setValue(locX_->getValue() + deltaX);
|
||||||
row[spots_.locX] = (int) locX_->getValue();
|
row[spots_.locX] = locX_->getIntValue();
|
||||||
|
|
||||||
if (method == 1 || method == 3) { // Symmetrical cases
|
if (method == 1 || method == 3) { // Symmetrical cases
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locXL_->setValue(locX_->getValue());
|
locXL_->setValue(locX_->getValue());
|
||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
row[spots_.locXL] = (int) locXL_->getValue();
|
row[spots_.locXL] = locXL_->getIntValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
@ -1566,15 +1563,15 @@ bool ControlSpotPanel::drag1(int modifierKey)
|
|||||||
|
|
||||||
// cirXL
|
// cirXL
|
||||||
if (rem == 4) {
|
if (rem == 4) {
|
||||||
double deltaXL = (double (lastCoord_->x) - double (newCoord->x)) * 2000. / double (imW);
|
double deltaXL = (double (lastCoord_.x) - double (newCoord.x)) * 2000. / double (imW);
|
||||||
locXL_->setValue(locXL_->getValue() + deltaXL);
|
locXL_->setValue(locXL_->getValue() + deltaXL);
|
||||||
row[spots_.locXL] = (int) locXL_->getValue();
|
row[spots_.locXL] = locXL_->getIntValue();
|
||||||
|
|
||||||
if (method == 1 || method == 3) { // Symmetrical cases
|
if (method == 1 || method == 3) { // Symmetrical cases
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locX_->setValue(locXL_->getValue());
|
locX_->setValue(locXL_->getValue());
|
||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
row[spots_.locX] = (int) locX_->getValue();
|
row[spots_.locX] = locX_->getIntValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
@ -1586,15 +1583,15 @@ bool ControlSpotPanel::drag1(int modifierKey)
|
|||||||
|
|
||||||
// cirY
|
// cirY
|
||||||
if (rem == 5) {
|
if (rem == 5) {
|
||||||
double deltaY = (double (newCoord->y) - double (lastCoord_->y)) * 2000. / double (imH);
|
double deltaY = (double (newCoord.y) - double (lastCoord_.y)) * 2000. / double (imH);
|
||||||
locY_->setValue(locY_->getValue() + deltaY);
|
locY_->setValue(locY_->getValue() + deltaY);
|
||||||
row[spots_.locY] = (int) locY_->getValue();
|
row[spots_.locY] = locY_->getIntValue();
|
||||||
|
|
||||||
if (method == 1 || method == 3) { // Symmetrical cases
|
if (method == 1 || method == 3) { // Symmetrical cases
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locYT_->setValue(locY_->getValue());
|
locYT_->setValue(locY_->getValue());
|
||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
row[spots_.locYT] = (int) locYT_->getValue();
|
row[spots_.locYT] = locYT_->getIntValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
@ -1606,15 +1603,15 @@ bool ControlSpotPanel::drag1(int modifierKey)
|
|||||||
|
|
||||||
// cirYT
|
// cirYT
|
||||||
if (rem == 6) {
|
if (rem == 6) {
|
||||||
double deltaYT = (double (lastCoord_->y) - double (newCoord->y)) * 2000. / double (imH);
|
double deltaYT = (double (lastCoord_.y) - double (newCoord.y)) * 2000. / double (imH);
|
||||||
locYT_->setValue(locYT_->getValue() + deltaYT);
|
locYT_->setValue(locYT_->getValue() + deltaYT);
|
||||||
row[spots_.locYT] = (int) locYT_->getValue();
|
row[spots_.locYT] = locYT_->getIntValue();
|
||||||
|
|
||||||
if (method == 1 || method == 3) { // Symmetrical cases
|
if (method == 1 || method == 3) { // Symmetrical cases
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
locY_->setValue(locYT_->getValue());
|
locY_->setValue(locYT_->getValue());
|
||||||
disableParamlistener(false);
|
disableParamlistener(false);
|
||||||
row[spots_.locY] = (int) locY_->getValue();
|
row[spots_.locY] = locY_->getIntValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControlSpotCurve(row);
|
updateControlSpotCurve(row);
|
||||||
@ -1624,18 +1621,18 @@ bool ControlSpotPanel::drag1(int modifierKey)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lastCoord_->set(newCoord->x, newCoord->y);
|
lastCoord_.set(newCoord.x, newCoord.y);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ControlSpotPanel::getEventType()
|
int ControlSpotPanel::getEventType()
|
||||||
{
|
{
|
||||||
const int tmp = eventType;
|
const int tmp = eventType;
|
||||||
eventType = 0; // Re-initialization at 0 if event type gotten
|
eventType = None; // Re-initialization at "None" if event type gotten
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
ControlSpotPanel::SpotRow* ControlSpotPanel::getSpot(int id)
|
ControlSpotPanel::SpotRow* ControlSpotPanel::getSpot(const int id)
|
||||||
{
|
{
|
||||||
// printf("getSpot: %d\n", id);
|
// printf("getSpot: %d\n", id);
|
||||||
|
|
||||||
@ -1643,11 +1640,10 @@ ControlSpotPanel::SpotRow* ControlSpotPanel::getSpot(int id)
|
|||||||
|
|
||||||
SpotRow* r = new SpotRow();
|
SpotRow* r = new SpotRow();
|
||||||
|
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
const Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
Gtk::TreeModel::Children::iterator iter;
|
|
||||||
|
|
||||||
for (iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row row = *iter;
|
const Gtk::TreeModel::Row row = *iter;
|
||||||
|
|
||||||
if (row[spots_.id] == id) {
|
if (row[spots_.id] == id) {
|
||||||
r->id = row[spots_.id];
|
r->id = row[spots_.id];
|
||||||
@ -1687,11 +1683,10 @@ std::vector<int>* ControlSpotPanel::getSpotIdList()
|
|||||||
|
|
||||||
std::vector<int>* r = new std::vector<int>();
|
std::vector<int>* r = new std::vector<int>();
|
||||||
|
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
const Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
Gtk::TreeModel::Children::iterator iter;
|
|
||||||
|
|
||||||
for (iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row row = *iter;
|
const Gtk::TreeModel::Row row = *iter;
|
||||||
r->push_back(row[spots_.id]);
|
r->push_back(row[spots_.id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1711,14 +1706,14 @@ int ControlSpotPanel::getSelectedSpot()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto iter = s->get_selected();
|
const auto iter = s->get_selected();
|
||||||
Gtk::TreeModel::Row row = *iter;
|
const Gtk::TreeModel::Row row = *iter;
|
||||||
int id = row[spots_.id];
|
int id = row[spots_.id];
|
||||||
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::setSelectedSpot(int id)
|
void ControlSpotPanel::setSelectedSpot(const int id)
|
||||||
{
|
{
|
||||||
// printf("setSelectedSpot: %d\n", id);
|
// printf("setSelectedSpot: %d\n", id);
|
||||||
|
|
||||||
@ -1726,11 +1721,10 @@ void ControlSpotPanel::setSelectedSpot(int id)
|
|||||||
|
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
|
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
const Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
Gtk::TreeModel::Children::iterator iter;
|
|
||||||
|
|
||||||
for (iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row row = *iter;
|
const Gtk::TreeModel::Row row = *iter;
|
||||||
|
|
||||||
if (row[spots_.id] == id) {
|
if (row[spots_.id] == id) {
|
||||||
treeview_->set_cursor(treemodel_->get_path(row));
|
treeview_->set_cursor(treemodel_->get_path(row));
|
||||||
@ -1749,12 +1743,11 @@ int ControlSpotPanel::getNewId()
|
|||||||
|
|
||||||
// Looking for maximum used id
|
// Looking for maximum used id
|
||||||
int max_row_id = 0;
|
int max_row_id = 0;
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
const Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
Gtk::TreeModel::Children::iterator iter;
|
|
||||||
|
|
||||||
for (iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row row = *iter;
|
const Gtk::TreeModel::Row row = *iter;
|
||||||
int iter_id = row[spots_.id];
|
const int iter_id = row[spots_.id];
|
||||||
max_row_id = std::max(max_row_id, iter_id);
|
max_row_id = std::max(max_row_id, iter_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1813,10 +1806,9 @@ int ControlSpotPanel::updateControlSpot(SpotRow* spot)
|
|||||||
|
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
|
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
const Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
Gtk::TreeModel::Children::iterator iter;
|
|
||||||
|
|
||||||
for (iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row row = *iter;
|
Gtk::TreeModel::Row row = *iter;
|
||||||
|
|
||||||
if (row[spots_.id] == spot->id) {
|
if (row[spots_.id] == spot->id) {
|
||||||
@ -1855,7 +1847,7 @@ int ControlSpotPanel::updateControlSpot(SpotRow* spot)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::deleteControlSpot(int id)
|
void ControlSpotPanel::deleteControlSpot(const int id)
|
||||||
{
|
{
|
||||||
// printf("deleteControlSpot: %d\n", id);
|
// printf("deleteControlSpot: %d\n", id);
|
||||||
|
|
||||||
@ -1863,10 +1855,9 @@ void ControlSpotPanel::deleteControlSpot(int id)
|
|||||||
|
|
||||||
disableParamlistener(true);
|
disableParamlistener(true);
|
||||||
|
|
||||||
Gtk::TreeModel::Children children = treemodel_->children();
|
const Gtk::TreeModel::Children children = treemodel_->children();
|
||||||
Gtk::TreeModel::Children::iterator iter;
|
|
||||||
|
|
||||||
for (iter = children.begin(); iter != children.end(); iter++) {
|
for (auto iter = children.begin(); iter != children.end(); iter++) {
|
||||||
Gtk::TreeModel::Row row = *iter;
|
Gtk::TreeModel::Row row = *iter;
|
||||||
|
|
||||||
if (row[spots_.id] == id) {
|
if (row[spots_.id] == id) {
|
||||||
|
@ -97,11 +97,26 @@ public:
|
|||||||
bool avoid;
|
bool avoid;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An event type enumeration allows exchanges of spot panel event type from and to ControlSpotClass
|
||||||
|
*/
|
||||||
|
enum eventType {
|
||||||
|
None = 0,
|
||||||
|
SpotCreation = 1,
|
||||||
|
SpotDeletion = 2,
|
||||||
|
SpotSelection = 3,
|
||||||
|
SpotDuplication = 4
|
||||||
|
};
|
||||||
|
|
||||||
// Constructor and management functions
|
// Constructor and management functions
|
||||||
/**
|
/**
|
||||||
* Default constructor of ControlSpotPanel class
|
* Default constructor of ControlSpotPanel class
|
||||||
*/
|
*/
|
||||||
ControlSpotPanel();
|
ControlSpotPanel();
|
||||||
|
/**
|
||||||
|
* Destructor of ControlSpotPanel class
|
||||||
|
*/
|
||||||
|
~ControlSpotPanel();
|
||||||
/**
|
/**
|
||||||
* Implementation of setEditProvider function of toolpanel.h
|
* Implementation of setEditProvider function of toolpanel.h
|
||||||
*
|
*
|
||||||
@ -111,7 +126,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Getter of the event type raised by this panel
|
* Getter of the event type raised by this panel
|
||||||
*
|
*
|
||||||
* @return The raised event type (0 = No event, 1 = Spot creation event, 2 = Spot deletion event, 3 = Spot selection event)
|
* @return The raised event type (refer to eventType enumeration)
|
||||||
*/
|
*/
|
||||||
int getEventType();
|
int getEventType();
|
||||||
/**
|
/**
|
||||||
@ -120,7 +135,7 @@ public:
|
|||||||
* @param id The spot id to get params
|
* @param id The spot id to get params
|
||||||
* @return A SpotRow structure containing params of associated spot
|
* @return A SpotRow structure containing params of associated spot
|
||||||
*/
|
*/
|
||||||
SpotRow* getSpot(int id);
|
SpotRow* getSpot(const int id);
|
||||||
/**
|
/**
|
||||||
* Get of spot id list
|
* Get of spot id list
|
||||||
*
|
*
|
||||||
@ -138,7 +153,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @param id The id of spot to be selected
|
* @param id The id of spot to be selected
|
||||||
*/
|
*/
|
||||||
void setSelectedSpot(int id);
|
void setSelectedSpot(const int id);
|
||||||
|
|
||||||
// Control spot creation functions
|
// Control spot creation functions
|
||||||
/**
|
/**
|
||||||
@ -168,7 +183,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @param id The id of the spot to be deleted
|
* @param id The id of the spot to be deleted
|
||||||
*/
|
*/
|
||||||
void deleteControlSpot(int id);
|
void deleteControlSpot(const int id);
|
||||||
|
|
||||||
// Panel widgets management functions
|
// Panel widgets management functions
|
||||||
/**
|
/**
|
||||||
@ -247,10 +262,10 @@ private:
|
|||||||
|
|
||||||
void disableParamlistener(bool cond);
|
void disableParamlistener(bool cond);
|
||||||
|
|
||||||
void addControlSpotCurve(Gtk::TreeModel::Row row);
|
void addControlSpotCurve(Gtk::TreeModel::Row& row);
|
||||||
void updateControlSpotCurve(Gtk::TreeModel::Row row);
|
void updateControlSpotCurve(const Gtk::TreeModel::Row& row);
|
||||||
void deleteControlSpotCurve(Gtk::TreeModel::Row row);
|
void deleteControlSpotCurve(Gtk::TreeModel::Row& row);
|
||||||
void updateCurveOpacity(Gtk::TreeModel::Row selectedRow);
|
void updateCurveOpacity(const Gtk::TreeModel::Row& selectedRow);
|
||||||
CursorShape getCursor(int objectID) const;
|
CursorShape getCursor(int objectID) const;
|
||||||
bool mouseOver(int modifierKey);
|
bool mouseOver(int modifierKey);
|
||||||
bool button1Pressed(int modifierKey);
|
bool button1Pressed(int modifierKey);
|
||||||
@ -358,7 +373,7 @@ private:
|
|||||||
|
|
||||||
// Internal variables
|
// Internal variables
|
||||||
int lastObject_;
|
int lastObject_;
|
||||||
rtengine::Coord* lastCoord_;
|
rtengine::Coord lastCoord_;
|
||||||
bool nbSpotChanged_;
|
bool nbSpotChanged_;
|
||||||
bool selSpotChanged_;
|
bool selSpotChanged_;
|
||||||
bool nameChanged_;
|
bool nameChanged_;
|
||||||
@ -366,6 +381,9 @@ private:
|
|||||||
int eventType; // 0 = No event, 1 = Spot creation event, 2 = Spot deletion event, 3 = Spot selection event, 4 = Spot duplication event
|
int eventType; // 0 = No event, 1 = Spot creation event, 2 = Spot deletion event, 3 = Spot selection event, 4 = Spot duplication event
|
||||||
Gtk::Frame* const excluFrame;
|
Gtk::Frame* const excluFrame;
|
||||||
|
|
||||||
|
// Row background color
|
||||||
|
Gdk::RGBA colorMouseover, colorNominal;
|
||||||
|
|
||||||
// Treeview mutex
|
// Treeview mutex
|
||||||
MyMutex mTreeview;
|
MyMutex mTreeview;
|
||||||
};
|
};
|
||||||
|
@ -1366,7 +1366,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
LocallabParams::LocallabSpot* newSpot;
|
LocallabParams::LocallabSpot* newSpot;
|
||||||
|
|
||||||
switch (spotPanelEvent) {
|
switch (spotPanelEvent) {
|
||||||
case (1): // 1 = Spot creation event
|
case (ControlSpotPanel::SpotCreation): // Spot creation event
|
||||||
// Spot creation (default initialization)
|
// Spot creation (default initialization)
|
||||||
newSpot = new LocallabParams::LocallabSpot();
|
newSpot = new LocallabParams::LocallabSpot();
|
||||||
spotId = expsettings->getNewId();
|
spotId = expsettings->getNewId();
|
||||||
@ -1459,7 +1459,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (2): // 2 = Spot deletion event
|
case (ControlSpotPanel::SpotDeletion): // Spot deletion event
|
||||||
// Get deleted spot index in ProcParams and update it
|
// Get deleted spot index in ProcParams and update it
|
||||||
spotId = expsettings->getSelectedSpot();
|
spotId = expsettings->getSelectedSpot();
|
||||||
|
|
||||||
@ -1515,7 +1515,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (3): // 3 = Spot selection event
|
case (ControlSpotPanel::SpotSelection): // Spot selection event
|
||||||
spotId = expsettings->getSelectedSpot();
|
spotId = expsettings->getSelectedSpot();
|
||||||
|
|
||||||
for (int i = 0; i < pp->locallab.nbspot && i < (int)pp->locallab.spots.size(); i++) {
|
for (int i = 0; i < pp->locallab.nbspot && i < (int)pp->locallab.spots.size(); i++) {
|
||||||
@ -1541,7 +1541,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case (4): // 4 = Spot duplication event
|
case (ControlSpotPanel::SpotDuplication): // Spot duplication event
|
||||||
newSpot = nullptr;
|
newSpot = nullptr;
|
||||||
spotId = expsettings->getSelectedSpot();
|
spotId = expsettings->getSelectedSpot();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user