connect(groupCO, SIGNAL(currentIndexChanged(int)),
this, SLOT(changeGroup(int)));
- displayscale->setValidator(new QIntValidator(displayscale));
+ displayscale->setValidator(new QIntValidator(1, 1000, displayscale));
bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
bc().setOK(buttonBox->button(QDialogButtonBox::Ok));
bc().addReadOnly(getPB);
bc().addReadOnly(rotateOrderCB);
- // initialize the length validator
+ // Add validated widgets to those that will be
+ // visually marked if invalid
bc().addCheckedLineEdit(Scale, scaleCB);
bc().addCheckedLineEdit(Width, WidthCB);
bc().addCheckedLineEdit(Height, HeightCB);
- bc().addCheckedLineEdit(displayscale, scaleLA);
bc().addCheckedLineEdit(angle, angleL);
+ bc().addCheckedLineEdit(filename, filenameL);
+ bc().addCheckedLineEdit(displayscale, scaleLA);
bc().addCheckedLineEdit(lbX, xL);
bc().addCheckedLineEdit(lbY, yL);
bc().addCheckedLineEdit(rtX, xL_2);
bc().addCheckedLineEdit(rtY, yL_2);
- bc().addCheckedLineEdit(filename, filenameL);
+
+ // We also mark the tabs the widgets are in
+ int tabindex = tabWidget->indexOf(Graphics);
+ bc().addCheckedLineEdit(Scale, tabWidget, tabindex);
+ bc().addCheckedLineEdit(Width, tabWidget, tabindex);
+ bc().addCheckedLineEdit(Height, tabWidget, tabindex);
+ bc().addCheckedLineEdit(angle, tabWidget, tabindex);
+ bc().addCheckedLineEdit(filename, tabWidget, tabindex);
+ bc().addCheckedLineEdit(displayscale, tabWidget, tabWidget->indexOf(ExtraOptions));
+ tabindex = tabWidget->indexOf(Clipping);
+ bc().addCheckedLineEdit(lbX, tabWidget, tabindex);
+ bc().addCheckedLineEdit(lbY, tabWidget, tabindex);
+ bc().addCheckedLineEdit(rtX, tabWidget, tabindex);
+ bc().addCheckedLineEdit(rtY, tabWidget, tabindex);
}
void GuiGraphics::changeBB()
{
- bbChanged = true;
- LYXERR(Debug::GRAPHICS, "[bb_Changed set to true]");
+ bbChanged = isChangedBB();
+ getPB->setEnabled(bbChanged);
+ LYXERR(Debug::GRAPHICS, "[bb_Changed set to " << bbChanged << "]");
changed();
}
QString const str = browse(filename->text());
if (!str.isEmpty()) {
filename->setText(str);
+ // read in the bb values of the new file
+ // if there was no explicit custom viewport
+ if (!bbChanged)
+ getBB();
changed();
}
}
void GuiGraphics::on_getPB_clicked()
{
getBB();
+ bbChanged = false;
}
}
+bool GuiGraphics::isChangedBB()
+{
+ string const fn = fromqstr(filename->text());
+ if (fn.empty())
+ return false;
+
+ string const bb = readBoundingBox(fn);
+ if (bb.empty())
+ return false;
+
+ // Compare orig bb values with the set ones
+ if (Length(token(bb, ' ', 0) + "bp") !=
+ Length(widgetToDoubleStr(lbX) + fromqstr(lbXunit->currentText())))
+ return true;
+
+ if (Length(token(bb, ' ', 1) + "bp") !=
+ Length(widgetToDoubleStr(lbY) + fromqstr(lbYunit->currentText())))
+ return true;
+
+ if (Length(token(bb, ' ', 2) + "bp") !=
+ Length(widgetToDoubleStr(rtX) + fromqstr(rtXunit->currentText())))
+ return true;
+
+ if (Length(token(bb, ' ', 3) + "bp") !=
+ Length(widgetToDoubleStr(rtY) + fromqstr(rtYunit->currentText())))
+ return true;
+
+ return false;
+}
+
+
bool GuiGraphics::isValid()
{
return !filename->text().isEmpty();