mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
(Rob Lahaye): changes to the xforms graphics dialog.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5495 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
fd2740ca18
commit
e1edfbe8a0
@ -1,3 +1,7 @@
|
||||
2002-10-24 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* FORMAT: document further change to InsetGraphicsParams.
|
||||
|
||||
2002-10-23 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* tools/mkdoclinks.sh: new file. Run in <source>/lib/doc to
|
||||
|
@ -1,6 +1,10 @@
|
||||
Changes to the LyX format since version 220 (LyX 1.2.0) was released.
|
||||
=====================================================================
|
||||
|
||||
2002-10-24 Rob Lahaye <lahaye@snu.ac.kr>
|
||||
|
||||
* insetgraphicsParams.h (scale): is now a float, not an unsigned int.
|
||||
|
||||
2002-08-22 Rob Lahaye <lahaye@snu.ac.kr>
|
||||
|
||||
New graphics dialog. With the removal of buttons in the dialog, also
|
||||
|
@ -1,3 +1,11 @@
|
||||
2002-10-24 Rob Lahaye <lahaye@snu.ac.kr>
|
||||
|
||||
* FormGraphics.C: use checkedWidgets to ensure that the lengths and
|
||||
glue lengths are valid. Improve code documentation and layout.
|
||||
InsetGraphicsParams::scale is now a float; modify dialog to suit.
|
||||
|
||||
* forms/form_graphics.fd: remove text_warning widget. Reshape.
|
||||
|
||||
2002-10-24 Rob Lahaye <lahaye@snu.ac.kr>
|
||||
|
||||
* FormFloat.C (input): fix the radio buttongroup behaviour.
|
||||
|
@ -5,6 +5,7 @@
|
||||
*
|
||||
* \author Baruch Even
|
||||
* \author Herbert Voss
|
||||
* \author Rob Lahaye
|
||||
*
|
||||
* Full author contact details are available in file CREDITS
|
||||
*/
|
||||
@ -19,22 +20,30 @@
|
||||
#include "ControlGraphics.h"
|
||||
#include "FormGraphics.h"
|
||||
#include "forms/form_graphics.h"
|
||||
#include "Alert.h"
|
||||
#include "Tooltips.h"
|
||||
|
||||
#include "xforms_helpers.h"
|
||||
#include "helper_funcs.h"
|
||||
#include "checkedwidgets.h"
|
||||
#include "input_validators.h"
|
||||
#include "Tooltips.h"
|
||||
#include "xforms_helpers.h"
|
||||
|
||||
#include "debug.h" // for lyxerr
|
||||
#include "lyxrc.h" // for lyxrc.display_graphics
|
||||
|
||||
#include "insets/insetgraphicsParams.h"
|
||||
|
||||
#include "controllers/helper_funcs.h" // for getStringFromVector
|
||||
|
||||
#include "frontends/Alert.h"
|
||||
|
||||
#include "support/lstrings.h" // for strToDbl & tostr
|
||||
#include "support/filetools.h" // for MakeAbsPath etc
|
||||
#include "insets/insetgraphicsParams.h"
|
||||
#include "lyxrc.h" // for lyxrc.display_graphics
|
||||
|
||||
#include FORMS_H_LOCATION
|
||||
|
||||
using std::endl;
|
||||
using std::vector;
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
// Bound the number of input characters
|
||||
@ -43,12 +52,6 @@ int const FILENAME_MAXCHARS = 1024;
|
||||
|
||||
string defaultUnit("cm");
|
||||
|
||||
/// Given input and choice widgets, create a LyXLength
|
||||
LyXLength getLyXLengthFromWidgets(FL_OBJECT * input, FL_OBJECT * choice)
|
||||
{
|
||||
return LyXLength(getLengthFromWidgets(input, choice));
|
||||
}
|
||||
|
||||
} // namespace anon
|
||||
|
||||
|
||||
@ -75,9 +78,6 @@ void FormGraphics::build()
|
||||
{
|
||||
dialog_.reset(build_graphics(this));
|
||||
|
||||
// Allow the base class to control messages
|
||||
setMessageWidget(dialog_->text_warning);
|
||||
|
||||
// Manage the ok, apply, restore and cancel/close buttons
|
||||
bc().setOK(dialog_->button_ok);
|
||||
bc().setApply(dialog_->button_apply);
|
||||
@ -87,24 +87,37 @@ void FormGraphics::build()
|
||||
// the file section
|
||||
file_.reset(build_graphics_file(this));
|
||||
|
||||
fl_set_input_return (file_->input_filename, FL_RETURN_CHANGED);
|
||||
fl_set_input_return (file_->input_lyxscale, FL_RETURN_CHANGED);
|
||||
fl_set_input_return (file_->input_width, FL_RETURN_CHANGED);
|
||||
fl_set_input_return (file_->input_height, FL_RETURN_CHANGED);
|
||||
// disable for read-only documents
|
||||
bc().addReadOnly(file_->button_browse);
|
||||
bc().addReadOnly(file_->check_aspectratio);
|
||||
bc().addReadOnly(file_->check_draft);
|
||||
bc().addReadOnly(file_->check_nounzip);
|
||||
|
||||
// check validity of "length + unit" input
|
||||
addCheckedGlueLength(bc(), file_->input_width);
|
||||
addCheckedGlueLength(bc(), file_->input_height);
|
||||
|
||||
// trigger an input event for cut&paste with middle mouse button.
|
||||
setPrehandler(file_->input_filename);
|
||||
setPrehandler(file_->input_lyxscale);
|
||||
setPrehandler(file_->input_width);
|
||||
setPrehandler(file_->input_height);
|
||||
|
||||
// for activate ok/apply immediately upon input
|
||||
fl_set_input_return(file_->input_filename, FL_RETURN_CHANGED);
|
||||
fl_set_input_return(file_->input_lyxscale, FL_RETURN_CHANGED);
|
||||
fl_set_input_return(file_->input_width, FL_RETURN_CHANGED);
|
||||
fl_set_input_return(file_->input_height, FL_RETURN_CHANGED);
|
||||
|
||||
fl_set_input_maxchars(file_->input_filename, FILENAME_MAXCHARS);
|
||||
fl_set_input_filter(file_->input_lyxscale, fl_unsigned_int_filter);
|
||||
fl_set_input_filter(file_->input_lyxscale, fl_unsigned_float_filter);
|
||||
|
||||
// width default is scaling, thus unsigned integer input
|
||||
fl_set_input_filter(file_->input_width, fl_unsigned_int_filter);
|
||||
fl_set_input_maxchars(file_->input_height, SIZE_MAXDIGITS);
|
||||
|
||||
string const display_List = _("Default|Monochrome|Grayscale|Color|Do not display");
|
||||
string const display_List =
|
||||
_("Default|Monochrome|Grayscale|Color|Do not display");
|
||||
fl_addto_choice(file_->choice_display, display_List.c_str());
|
||||
|
||||
string const width_list = _("Scale%%|") + choice_Length_All;
|
||||
@ -112,98 +125,107 @@ void FormGraphics::build()
|
||||
|
||||
fl_addto_choice(file_->choice_height, choice_Length_All.c_str());
|
||||
|
||||
bc().addReadOnly(file_->button_browse);
|
||||
bc().addReadOnly(file_->check_aspectratio);
|
||||
bc().addReadOnly(file_->check_draft);
|
||||
bc().addReadOnly(file_->check_nounzip);
|
||||
|
||||
// set up the tooltips for the filesection
|
||||
string str = _("The file you want to insert.");
|
||||
string str = _("The file you want to insert");
|
||||
tooltips().init(file_->input_filename, str);
|
||||
str = _("Browse the directories.");
|
||||
str = _("Browse the directories");
|
||||
tooltips().init(file_->button_browse, str);
|
||||
|
||||
str = _("Scale the image to inserted percentage value.");
|
||||
str = _("Scale the image to inserted percentage value");
|
||||
tooltips().init(file_->input_lyxscale, str);
|
||||
str = _("Select display mode for this image.");
|
||||
str = _("Select display mode for this image");
|
||||
tooltips().init(file_->choice_display, str);
|
||||
|
||||
str = _("Set the image width to the inserted value.");
|
||||
str = _("Set the image width to the inserted value");
|
||||
tooltips().init(file_->input_width, str);
|
||||
str = _("Select unit for width; Scale% for scaling whole image.");
|
||||
str = _("Select unit for width; Scale% for scaling whole image");
|
||||
tooltips().init(file_->choice_width, str);
|
||||
str = _("Set the image height to the inserted value.");
|
||||
str = _("Set the image height to the inserted value");
|
||||
tooltips().init(file_->input_height, str);
|
||||
str = _("Select unit for height");
|
||||
tooltips().init(file_->choice_height, str);
|
||||
str = _("Do not distort the image. "
|
||||
"Keep image within \"width\" by \"height\" and obey aspect ratio.");
|
||||
"Keep image within \"width\" by \"height\" and obey "
|
||||
"aspect ratio");
|
||||
tooltips().init(file_->check_aspectratio, str);
|
||||
|
||||
str = _("Pass a filename like \"file.eps.gz\" to the LaTeX output. "
|
||||
"Useful when LaTeX should unzip the file. Needs an additional file "
|
||||
"like \"file.eps.bb\" which holds the values for the bounding box.");
|
||||
"like \"file.eps.bb\" which holds the values for the bounding box");
|
||||
tooltips().init(file_->check_nounzip, str);
|
||||
|
||||
str = _("Show image only as a rectangle of the original size.");
|
||||
str = _("Show image only as a rectangle of the original size");
|
||||
tooltips().init(file_->check_draft, str);
|
||||
|
||||
// the bounding box selection
|
||||
bbox_.reset(build_graphics_bbox(this));
|
||||
fl_set_input_return (bbox_->input_bb_x0, FL_RETURN_CHANGED);
|
||||
fl_set_input_return (bbox_->input_bb_y0, FL_RETURN_CHANGED);
|
||||
fl_set_input_return (bbox_->input_bb_x1, FL_RETURN_CHANGED);
|
||||
fl_set_input_return (bbox_->input_bb_y1, FL_RETURN_CHANGED);
|
||||
|
||||
fl_set_input_filter(bbox_->input_bb_x0, fl_unsigned_float_filter);
|
||||
fl_set_input_filter(bbox_->input_bb_y0, fl_unsigned_float_filter);
|
||||
fl_set_input_filter(bbox_->input_bb_x1, fl_unsigned_float_filter);
|
||||
fl_set_input_filter(bbox_->input_bb_y1, fl_unsigned_float_filter);
|
||||
// disable for read-only documents
|
||||
bc().addReadOnly(bbox_->button_getBB);
|
||||
bc().addReadOnly(bbox_->check_clip);
|
||||
|
||||
// check validity of "length + unit" input
|
||||
addCheckedLyXLength(bc(), bbox_->input_bb_x1, bbox_->text_X);
|
||||
|
||||
// trigger an input event for cut&paste with middle mouse button.
|
||||
setPrehandler(bbox_->input_bb_x0);
|
||||
setPrehandler(bbox_->input_bb_y0);
|
||||
setPrehandler(bbox_->input_bb_x1);
|
||||
setPrehandler(bbox_->input_bb_y1);
|
||||
|
||||
// for activate ok/apply immediately upon input
|
||||
fl_set_input_return(bbox_->input_bb_x0, FL_RETURN_CHANGED);
|
||||
fl_set_input_return(bbox_->input_bb_y0, FL_RETURN_CHANGED);
|
||||
fl_set_input_return(bbox_->input_bb_x1, FL_RETURN_CHANGED);
|
||||
fl_set_input_return(bbox_->input_bb_y1, FL_RETURN_CHANGED);
|
||||
|
||||
fl_set_input_filter(bbox_->input_bb_x0, fl_unsigned_float_filter);
|
||||
fl_set_input_filter(bbox_->input_bb_y0, fl_unsigned_float_filter);
|
||||
fl_set_input_filter(bbox_->input_bb_y1, fl_unsigned_float_filter);
|
||||
|
||||
string const bb_units = "bp|cm|mm|in";
|
||||
fl_addto_choice(bbox_->choice_bb_units, bb_units.c_str());
|
||||
bc().addReadOnly(bbox_->button_getBB);
|
||||
bc().addReadOnly(bbox_->check_clip);
|
||||
|
||||
// set up the tooltips for the bounding-box-section
|
||||
str = _("The lower left x-value of the bounding box");
|
||||
tooltips().init(bbox_->input_bb_x0, str);
|
||||
str = _("The lower left y-value of the bounding box");
|
||||
tooltips().init(bbox_->input_bb_y0, str);
|
||||
str = _("The upper right x-value of the bounding box");
|
||||
str = _("The upper right x-value of the bounding box; "
|
||||
"only this input field allows length + unit, e.g. 5cm "
|
||||
"and sets the unit for the other input fields");
|
||||
tooltips().init(bbox_->input_bb_x1, str);
|
||||
str = _("The upper right y-value of the bounding box");
|
||||
tooltips().init(bbox_->input_bb_y1, str);
|
||||
str = _("Select unit for the bounding box values");
|
||||
tooltips().init(bbox_->choice_bb_units, str);
|
||||
|
||||
str = _("Read the image coordinates new from file. If it's an (e)ps-file "
|
||||
"then the bounding box is read otherwise the imagesize in pixels. "
|
||||
"Default unit is \"bp\", the PostScript's b(ig) p(oint).");
|
||||
str = _("Read the image coordinates new from file. For (e)ps-file "
|
||||
"the bounding box is read, otherwise the imagesize in pixels. "
|
||||
"Default unit is \"bp\", the PostScript's b(ig) p(oint)");
|
||||
tooltips().init(bbox_->button_getBB, str);
|
||||
|
||||
str = _("Clip image to the bounding box values.");
|
||||
str = _("Clip image to the bounding box values");
|
||||
tooltips().init(bbox_->check_clip, str);
|
||||
|
||||
// the extra section
|
||||
extra_.reset(build_graphics_extra(this));
|
||||
|
||||
fl_set_input_return (extra_->input_rotate_angle, FL_RETURN_CHANGED);
|
||||
fl_set_input_return (extra_->input_subcaption, FL_RETURN_CHANGED);
|
||||
fl_set_input_return (extra_->input_special, FL_RETURN_CHANGED);
|
||||
|
||||
fl_set_input_filter(extra_->input_rotate_angle, fl_float_filter);
|
||||
// disable for read-only documents
|
||||
bc().addReadOnly(extra_->input_rotate_angle);
|
||||
bc().addReadOnly(extra_->choice_origin);
|
||||
bc().addReadOnly(extra_->check_subcaption);
|
||||
bc().addReadOnly(extra_->input_special);
|
||||
|
||||
// trigger an input event for cut&paste with middle mouse button.
|
||||
setPrehandler(extra_->input_rotate_angle);
|
||||
setPrehandler(extra_->input_subcaption);
|
||||
setPrehandler(extra_->input_special);
|
||||
|
||||
bc().addReadOnly(extra_->check_subcaption);
|
||||
fl_set_input_return(extra_->input_rotate_angle, FL_RETURN_CHANGED);
|
||||
fl_set_input_return(extra_->input_subcaption, FL_RETURN_CHANGED);
|
||||
fl_set_input_return(extra_->input_special, FL_RETURN_CHANGED);
|
||||
|
||||
fl_set_input_filter(extra_->input_rotate_angle, fl_float_filter);
|
||||
|
||||
using namespace frnt;
|
||||
vector<RotationOriginPair> origindata = getRotationOriginData();
|
||||
@ -216,16 +238,17 @@ void FormGraphics::build()
|
||||
|
||||
// set up the tooltips for the extra section
|
||||
str = _("Insert the rotation angle in degrees. "
|
||||
"Positive value rotates anti-clockwise, negative value clockwise.");
|
||||
"Positive value rotates anti-clockwise, "
|
||||
"negative value clockwise");
|
||||
tooltips().init(extra_->input_rotate_angle, str);
|
||||
str = _("Insert the point of origin for rotation.");
|
||||
str = _("Insert the point of origin for rotation");
|
||||
tooltips().init(extra_->choice_origin, str);
|
||||
str = _("Enables use of subfigure with its own caption.");
|
||||
str = _("Enables use of subfigure with its own caption");
|
||||
tooltips().init(extra_->check_subcaption, str);
|
||||
str = _("Insert the optional subfigure caption.");
|
||||
str = _("Insert the optional subfigure caption");
|
||||
tooltips().init(extra_->input_subcaption, str);
|
||||
str = _("Add any additional latex option, which is defined in the "
|
||||
"graphicx-package and not mentioned in the gui's tabfolders.");
|
||||
"graphicx-package and not mentioned in the gui's tabfolders");
|
||||
tooltips().init(extra_->input_special, str);
|
||||
|
||||
// add the different tabfolders
|
||||
@ -264,58 +287,95 @@ void FormGraphics::apply()
|
||||
}
|
||||
|
||||
switch (fl_get_choice(file_->choice_display)) {
|
||||
case 5: igp.display = grfx::NoDisplay; break;
|
||||
case 4: igp.display = grfx::ColorDisplay; break;
|
||||
case 3: igp.display = grfx::GrayscaleDisplay; break;
|
||||
case 2: igp.display = grfx::MonochromeDisplay; break;
|
||||
case 1:
|
||||
default: igp.display = grfx::DefaultDisplay;
|
||||
case 5:
|
||||
igp.display = grfx::NoDisplay;
|
||||
break;
|
||||
case 4:
|
||||
igp.display = grfx::ColorDisplay;
|
||||
break;
|
||||
case 3:
|
||||
igp.display = grfx::GrayscaleDisplay;
|
||||
break;
|
||||
case 2:
|
||||
igp.display = grfx::MonochromeDisplay;
|
||||
break;
|
||||
case 1:
|
||||
igp.display = grfx::DefaultDisplay;
|
||||
}
|
||||
|
||||
// first item in choice_width means scaling
|
||||
if (fl_get_choice(file_->choice_width) == 1) {
|
||||
igp.scale = strToInt(getString(file_->input_width));
|
||||
if (igp.scale == 0) {
|
||||
igp.scale = 100;
|
||||
igp.scale = strToDbl(getString(file_->input_width));
|
||||
if (igp.scale == 0.0) {
|
||||
igp.scale = 100.0;
|
||||
}
|
||||
igp.width = LyXLength();
|
||||
} else {
|
||||
igp.scale = 0;
|
||||
igp.width = getLyXLengthFromWidgets(file_->input_width,
|
||||
file_->choice_width);
|
||||
igp.scale = 0.0;
|
||||
igp.width = LyXLength(getLengthFromWidgets(file_->input_width,
|
||||
file_->choice_width));
|
||||
}
|
||||
igp.height = getLyXLengthFromWidgets(file_->input_height,
|
||||
file_->choice_height);
|
||||
igp.height = LyXLength(getLengthFromWidgets(file_->input_height,
|
||||
file_->choice_height));
|
||||
igp.keepAspectRatio = fl_get_button(file_->check_aspectratio);
|
||||
|
||||
igp.draft = fl_get_button(file_->check_draft);
|
||||
igp.noUnzip = fl_get_button(file_->check_nounzip);
|
||||
|
||||
// the bb section
|
||||
if (!controller().bbChanged) { // different to the original one?
|
||||
igp.bb = string(); // don't write anything
|
||||
if (!controller().bbChanged) {
|
||||
// don't write anything
|
||||
igp.bb.erase();
|
||||
} else {
|
||||
// allow length + unit input only for x1 input field
|
||||
string x1_str = "0";
|
||||
if (!getString(bbox_->input_bb_x1).empty()) {
|
||||
x1_str = getLengthFromWidgets(bbox_->input_bb_x1,
|
||||
bbox_->choice_bb_units);
|
||||
LyXLength x1 = LyXLength(x1_str);
|
||||
x1_str = x1.asString();
|
||||
|
||||
string unit;
|
||||
switch (x1.unit()) {
|
||||
case LyXLength::IN:
|
||||
unit = "in";
|
||||
break;
|
||||
case LyXLength::MM:
|
||||
unit = "mm";
|
||||
break;
|
||||
case LyXLength::CM:
|
||||
unit = "cm";
|
||||
break;
|
||||
case LyXLength::BP:
|
||||
default:
|
||||
unit = "bp";
|
||||
}
|
||||
fl_set_choice_text(bbox_->choice_bb_units, unit.c_str());
|
||||
}
|
||||
|
||||
string bb;
|
||||
if (getString(bbox_->input_bb_x0).empty())
|
||||
bb = "0 ";
|
||||
bb = "0";
|
||||
else
|
||||
bb = getLengthFromWidgets(bbox_->input_bb_x0,
|
||||
bbox_->choice_bb_units)+" ";
|
||||
bbox_->choice_bb_units);
|
||||
|
||||
bb += " ";
|
||||
|
||||
if (getString(bbox_->input_bb_y0).empty())
|
||||
bb += "0 ";
|
||||
bb += "0";
|
||||
else
|
||||
bb += (getLengthFromWidgets(bbox_->input_bb_y0,
|
||||
bbox_->choice_bb_units)+" ");
|
||||
if (getString(bbox_->input_bb_x1).empty())
|
||||
bb += "0 ";
|
||||
else
|
||||
bb += (getLengthFromWidgets(bbox_->input_bb_x1,
|
||||
bbox_->choice_bb_units)+" ");
|
||||
bb += getLengthFromWidgets(bbox_->input_bb_y0,
|
||||
bbox_->choice_bb_units);
|
||||
|
||||
bb += " " + x1_str + " ";
|
||||
|
||||
if (getString(bbox_->input_bb_y1).empty())
|
||||
bb += "0 ";
|
||||
bb += "0";
|
||||
else
|
||||
bb += (getLengthFromWidgets(bbox_->input_bb_y1,
|
||||
bbox_->choice_bb_units)+" ");
|
||||
bb += getLengthFromWidgets(bbox_->input_bb_y1,
|
||||
bbox_->choice_bb_units);
|
||||
|
||||
igp.bb = bb;
|
||||
}
|
||||
igp.clip = fl_get_button(bbox_->check_clip);
|
||||
@ -355,40 +415,50 @@ void FormGraphics::update() {
|
||||
fl_set_input(file_->input_lyxscale, tostr(igp.lyxscale).c_str());
|
||||
|
||||
switch (igp.display) {
|
||||
case grfx::NoDisplay: fl_set_choice(file_->choice_display, 5); break;
|
||||
case grfx::ColorDisplay: fl_set_choice(file_->choice_display, 4); break;
|
||||
case grfx::GrayscaleDisplay: fl_set_choice(file_->choice_display, 3); break;
|
||||
case grfx::MonochromeDisplay: fl_set_choice(file_->choice_display, 2); break;
|
||||
case grfx::DefaultDisplay:
|
||||
default: fl_set_choice(file_->choice_display, 1);
|
||||
case grfx::NoDisplay:
|
||||
fl_set_choice(file_->choice_display, 5);
|
||||
break;
|
||||
case grfx::ColorDisplay:
|
||||
fl_set_choice(file_->choice_display, 4);
|
||||
break;
|
||||
case grfx::GrayscaleDisplay:
|
||||
fl_set_choice(file_->choice_display, 3);
|
||||
break;
|
||||
case grfx::MonochromeDisplay:
|
||||
fl_set_choice(file_->choice_display, 2);
|
||||
break;
|
||||
case grfx::DefaultDisplay:
|
||||
fl_set_choice(file_->choice_display, 1);
|
||||
}
|
||||
|
||||
// disable height input in case of scaling
|
||||
setEnabled(file_->input_height, !igp.scale);
|
||||
setEnabled(file_->choice_height, !igp.scale);
|
||||
|
||||
// set width input fields according to scaling or width/height input
|
||||
if (igp.scale) {
|
||||
fl_set_input_filter(file_->input_width, fl_unsigned_int_filter);
|
||||
fl_set_input_filter(file_->input_width, fl_unsigned_float_filter);
|
||||
fl_set_input_maxchars(file_->input_width, 0);
|
||||
fl_set_input(file_->input_width, tostr(igp.scale).c_str());
|
||||
fl_set_choice(file_->choice_width, 1);
|
||||
} else {
|
||||
fl_set_input_filter(file_->input_width, NULL);
|
||||
fl_set_input_maxchars(file_->input_width, SIZE_MAXDIGITS);
|
||||
updateWidgetsFromLength(file_->input_width,
|
||||
file_->choice_width, igp.width, defaultUnit);
|
||||
updateWidgetsFromLength(file_->input_width, file_->choice_width,
|
||||
igp.width, defaultUnit);
|
||||
}
|
||||
|
||||
updateWidgetsFromLength(file_->input_height,
|
||||
file_->choice_height, igp.height, defaultUnit);
|
||||
updateWidgetsFromLength(file_->input_height, file_->choice_height,
|
||||
igp.height, defaultUnit);
|
||||
|
||||
// disable height input in case of scaling
|
||||
bool const disable_height = igp.scale != 0.0;
|
||||
setEnabled(file_->input_height, !disable_height);
|
||||
setEnabled(file_->choice_height, !disable_height);
|
||||
|
||||
fl_set_button(file_->check_aspectratio, igp.keepAspectRatio);
|
||||
fl_set_button(file_->check_draft, igp.draft);
|
||||
fl_set_button(file_->check_nounzip, igp.noUnzip);
|
||||
|
||||
// disable aspectratio button in case of scaling or one of width/height is empty
|
||||
bool const disable_aspectRatio = igp.scale ||
|
||||
// disable aspectratio button in case of scaling or one of width/height
|
||||
// is empty
|
||||
bool const disable_aspectRatio = disable_height ||
|
||||
getString(file_->input_width).empty() ||
|
||||
getString(file_->input_height).empty();
|
||||
setEnabled(file_->check_aspectratio, !disable_aspectRatio);
|
||||
@ -399,7 +469,6 @@ void FormGraphics::update() {
|
||||
updateBB(igp.filename, igp.bb);
|
||||
fl_set_button(bbox_->check_clip, igp.clip);
|
||||
|
||||
|
||||
// the extra section
|
||||
fl_set_input(extra_->input_rotate_angle,
|
||||
tostr(igp.rotateAngle).c_str());
|
||||
@ -432,7 +501,8 @@ void FormGraphics::updateBB(string const & filename, string const & bb_inset)
|
||||
// path, because the controller knows nothing about the doc-dir
|
||||
controller().bbChanged = false;
|
||||
if (bb_inset.empty()) {
|
||||
lyxerr[Debug::GRAPHICS] << "FormGraphics::updateBB() [no BoundingBox]" << endl;
|
||||
lyxerr[Debug::GRAPHICS]
|
||||
<< "FormGraphics::updateBB() [no BoundingBox]" << endl;
|
||||
string const bb = controller().readBB(filename);
|
||||
if (!bb.empty()) {
|
||||
// get the values from the file
|
||||
@ -458,9 +528,9 @@ void FormGraphics::updateBB(string const & filename, string const & bb_inset)
|
||||
|
||||
} else {
|
||||
// get the values from the inset
|
||||
lyxerr[Debug::GRAPHICS] << "FormGraphics::updateBB(): igp has BoundingBox"
|
||||
<< " ["<< bb_inset << "]"
|
||||
<< endl;
|
||||
lyxerr[Debug::GRAPHICS]
|
||||
<< "FormGraphics::updateBB(): igp has BoundingBox"
|
||||
<< " ["<< bb_inset << "]" << endl;
|
||||
controller().bbChanged = true;
|
||||
|
||||
LyXLength anyLength;
|
||||
@ -480,18 +550,6 @@ void FormGraphics::updateBB(string const & filename, string const & bb_inset)
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
bool isValid(FL_OBJECT * ob)
|
||||
{
|
||||
string const input = getString(ob);
|
||||
return input.empty() || isValidLength(input) || isStrDbl(input);
|
||||
}
|
||||
|
||||
} // namespace anon
|
||||
|
||||
|
||||
|
||||
ButtonPolicy::SMInput FormGraphics::input(FL_OBJECT * ob, long)
|
||||
{
|
||||
// the file section
|
||||
@ -499,7 +557,8 @@ ButtonPolicy::SMInput FormGraphics::input(FL_OBJECT * ob, long)
|
||||
// Get the filename from the dialog
|
||||
string const in_name = getString(file_->input_filename);
|
||||
string const out_name = controller().Browse(in_name);
|
||||
lyxerr[Debug::GRAPHICS] << "[FormGraphics]out_name: " << out_name << endl;
|
||||
lyxerr[Debug::GRAPHICS]
|
||||
<< "[FormGraphics]out_name: " << out_name << endl;
|
||||
if (out_name != in_name && !out_name.empty()) {
|
||||
fl_set_input(file_->input_filename, out_name.c_str());
|
||||
}
|
||||
@ -508,7 +567,8 @@ ButtonPolicy::SMInput FormGraphics::input(FL_OBJECT * ob, long)
|
||||
updateBB(out_name, string());
|
||||
}
|
||||
} else if (ob == file_->input_width || ob == file_->input_height) {
|
||||
// disable aspectratio button in case of scaling or one of width/height is empty
|
||||
// disable aspectratio button in case of scaling or one of
|
||||
// width/height is empty
|
||||
bool const disable = fl_get_choice(file_->choice_width) == 1 ||
|
||||
getString(file_->input_width).empty() ||
|
||||
getString(file_->input_height).empty();
|
||||
@ -528,8 +588,10 @@ ButtonPolicy::SMInput FormGraphics::input(FL_OBJECT * ob, long)
|
||||
fl_set_input_maxchars(file_->input_width, SIZE_MAXDIGITS);
|
||||
}
|
||||
|
||||
// disable aspectratio button in case of scaling or height input is empty
|
||||
bool const disable_aspectratio = scaling || getString(file_->input_height).empty();
|
||||
// disable aspectratio button in case of scaling or height
|
||||
// input is empty
|
||||
bool const disable_aspectratio =
|
||||
scaling || getString(file_->input_height).empty();
|
||||
setEnabled(file_->check_aspectratio, !disable_aspectratio);
|
||||
// the bb section
|
||||
} else if (!controller().bbChanged &&
|
||||
@ -563,15 +625,5 @@ ButtonPolicy::SMInput FormGraphics::input(FL_OBJECT * ob, long)
|
||||
|
||||
}
|
||||
|
||||
// check if the input is valid
|
||||
bool const invalid = !isValid(file_->input_width) || !isValid(file_->input_height);
|
||||
|
||||
// deactivate OK / Apply buttons and spit out warnings if invalid
|
||||
if (invalid) {
|
||||
postWarning(_("Invalid Length in Output size!"));
|
||||
return ButtonPolicy::SMI_INVALID;
|
||||
} else {
|
||||
clearMessage();
|
||||
return ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
return ButtonPolicy::SMI_VALID;
|
||||
}
|
||||
|
@ -9,14 +9,14 @@ SnapGrid: 5
|
||||
|
||||
=============== FORM ===============
|
||||
Name: form_graphics
|
||||
Width: 400
|
||||
Height: 325
|
||||
Number of Objects: 7
|
||||
Width: 395
|
||||
Height: 300
|
||||
Number of Objects: 6
|
||||
|
||||
--------------------
|
||||
class: FL_BOX
|
||||
type: FLAT_BOX
|
||||
box: 0 0 400 325
|
||||
box: 0 0 395 300
|
||||
boxtype: FL_FLAT_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -34,7 +34,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_TABFOLDER
|
||||
type: TOP_TABFOLDER
|
||||
box: 0 5 400 255
|
||||
box: 0 5 395 260
|
||||
boxtype: FL_FRAME_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_TOP_LEFT
|
||||
@ -52,7 +52,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 5 295 100 25
|
||||
box: 5 270 90 25
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -70,7 +70,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: RETURN_BUTTON
|
||||
box: 115 295 90 25
|
||||
box: 110 270 90 25
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -88,7 +88,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 305 295 90 25
|
||||
box: 300 270 90 25
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -106,7 +106,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 210 295 90 25
|
||||
box: 205 270 90 25
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -121,34 +121,16 @@ name: button_apply
|
||||
callback: C_FormBaseApplyCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_TEXT
|
||||
type: NORMAL_TEXT
|
||||
box: 0 265 400 25
|
||||
boxtype: FL_FLAT_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_LEFT|FL_ALIGN_INSIDE
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_NONE
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: text_warning
|
||||
callback: C_FormBaseInputCB
|
||||
argument: 0
|
||||
|
||||
=============== FORM ===============
|
||||
Name: form_graphics_file
|
||||
Width: 400
|
||||
Width: 395
|
||||
Height: 235
|
||||
Number of Objects: 15
|
||||
|
||||
--------------------
|
||||
class: FL_BOX
|
||||
type: FLAT_BOX
|
||||
box: 0 0 400 235
|
||||
box: 0 0 395 235
|
||||
boxtype: FL_FLAT_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -166,7 +148,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_LABELFRAME
|
||||
type: ENGRAVED_FRAME
|
||||
box: 5 125 390 105
|
||||
box: 5 125 385 105
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_BLACK FL_COL1
|
||||
alignment: FL_ALIGN_TOP_LEFT
|
||||
@ -184,7 +166,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_INPUT
|
||||
type: NORMAL_INPUT
|
||||
box: 60 10 230 25
|
||||
box: 60 10 225 25
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -202,7 +184,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_BUTTON
|
||||
type: NORMAL_BUTTON
|
||||
box: 295 10 100 25
|
||||
box: 290 10 100 25
|
||||
boxtype: FL_UP_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -220,7 +202,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_LABELFRAME
|
||||
type: ENGRAVED_FRAME
|
||||
box: 5 55 390 60
|
||||
box: 5 55 385 60
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_BLACK FL_COL1
|
||||
alignment: FL_ALIGN_TOP_LEFT
|
||||
@ -245,7 +227,7 @@ alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Draft mode|#m
|
||||
label: Draft mode|#a
|
||||
shortcut:
|
||||
resize: FL_RESIZE_NONE
|
||||
gravity: FL_East FL_East
|
||||
@ -353,7 +335,7 @@ alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Maintain aspect ratio|#a
|
||||
label: Maintain aspect ratio|#M
|
||||
shortcut:
|
||||
resize: FL_RESIZE_NONE
|
||||
gravity: FL_West FL_West
|
||||
@ -400,7 +382,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_CHOICE
|
||||
type: NORMAL_CHOICE
|
||||
box: 270 70 115 25
|
||||
box: 265 70 115 25
|
||||
boxtype: FL_FRAME_BOX
|
||||
colors: FL_COL1 FL_BLACK
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -417,14 +399,14 @@ argument: 0
|
||||
|
||||
=============== FORM ===============
|
||||
Name: form_graphics_bbox
|
||||
Width: 400
|
||||
Width: 395
|
||||
Height: 235
|
||||
Number of Objects: 10
|
||||
|
||||
--------------------
|
||||
class: FL_BOX
|
||||
type: FLAT_BOX
|
||||
box: 0 0 400 235
|
||||
box: 0 0 395 235
|
||||
boxtype: FL_FLAT_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -525,7 +507,7 @@ label: X
|
||||
shortcut:
|
||||
resize: FL_RESIZE_NONE
|
||||
gravity: FL_North FL_North
|
||||
name:
|
||||
name: text_X
|
||||
callback:
|
||||
argument:
|
||||
|
||||
@ -603,14 +585,14 @@ argument: 0
|
||||
|
||||
=============== FORM ===============
|
||||
Name: form_graphics_extra
|
||||
Width: 400
|
||||
Width: 395
|
||||
Height: 235
|
||||
Number of Objects: 8
|
||||
|
||||
--------------------
|
||||
class: FL_BOX
|
||||
type: FLAT_BOX
|
||||
box: 0 0 400 235
|
||||
box: 0 0 395 235
|
||||
boxtype: FL_FLAT_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -628,7 +610,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_LABELFRAME
|
||||
type: ENGRAVED_FRAME
|
||||
box: 5 20 390 55
|
||||
box: 5 20 385 55
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_BLACK FL_COL1
|
||||
alignment: FL_ALIGN_TOP_LEFT
|
||||
@ -646,7 +628,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_INPUT
|
||||
type: NORMAL_INPUT
|
||||
box: 115 165 275 25
|
||||
box: 115 165 270 25
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -682,7 +664,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_CHOICE
|
||||
type: NORMAL_CHOICE
|
||||
box: 250 35 135 25
|
||||
box: 245 35 135 25
|
||||
boxtype: FL_FRAME_BOX
|
||||
colors: FL_COL1 FL_BLACK
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -736,7 +718,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_INPUT
|
||||
type: NORMAL_INPUT
|
||||
box: 115 105 275 25
|
||||
box: 115 105 270 25
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_LEFT
|
||||
|
@ -1,3 +1,11 @@
|
||||
2002-10-24 Rob Lahaye <lahaye@snu.ac.kr>
|
||||
|
||||
* insetgraphicsParams.h (scale): is now a float, not an unsigned int.
|
||||
|
||||
* insetgraphicsParams.C (init, Write): associated changes
|
||||
* insetgraphics.C (createLatexOptions): use lyx::float_equal with
|
||||
InsetGraphicsParams::scale.
|
||||
|
||||
2002-10-21 John Levon <levon@movementarian.org>
|
||||
|
||||
* inset.h: remove unused DISPATCH_RESULT
|
||||
|
@ -85,6 +85,7 @@ TODO
|
||||
#include "support/LAssert.h"
|
||||
#include "support/filetools.h"
|
||||
#include "support/lyxalgo.h" // lyx::count
|
||||
#include "support/lyxlib.h" // float_equal
|
||||
#include "support/path.h"
|
||||
#include "support/systemcall.h"
|
||||
#include "support/os.h"
|
||||
@ -469,9 +470,10 @@ string const InsetGraphics::createLatexOptions() const
|
||||
if (params().clip)
|
||||
options << " clip,\n";
|
||||
|
||||
if (params().scale) {
|
||||
if (params().scale != 100)
|
||||
options << " scale=" << params().scale / 100.0 << ",\n";
|
||||
if (!lyx::float_equal(params().scale, 0.0, 0.05)) {
|
||||
if (!lyx::float_equal(params().scale, 100.0, 0.05))
|
||||
options << " scale=" << params().scale / 100.0
|
||||
<< ",\n";
|
||||
} else {
|
||||
if (!params().width.zero())
|
||||
options << " width=" << params().width.asLatexString() << ",\n";
|
||||
|
@ -58,7 +58,7 @@ void InsetGraphicsParams::init()
|
||||
filename.erase();
|
||||
lyxscale = 100; // lyx scaling in percentage
|
||||
display = grfx::DefaultDisplay; // display mode; see preferences
|
||||
scale = 100; // output scaling in percentage
|
||||
scale = 100.0; // output scaling in percentage
|
||||
width = LyXLength();
|
||||
height = LyXLength();
|
||||
keepAspectRatio = false; // for LaTeX output
|
||||
@ -143,7 +143,7 @@ void InsetGraphicsParams::Write(ostream & os) const
|
||||
if (display != grfx::DefaultDisplay)
|
||||
os << "\tdisplay " << grfx::displayTranslator.find(display) << '\n';
|
||||
if (scale) {
|
||||
if (scale != 100)
|
||||
if (!lyx::float_equal(scale, 100.0, 0.05))
|
||||
os << "\tscale " << scale << '\n';
|
||||
} else {
|
||||
if (!width.zero())
|
||||
@ -191,11 +191,11 @@ bool InsetGraphicsParams::Read(LyXLex & lex, string const & token)
|
||||
display = grfx::displayTranslator.find(type);
|
||||
} else if (token == "scale") {
|
||||
lex.next();
|
||||
scale = lex.getInteger();
|
||||
scale = lex.getFloat();
|
||||
} else if (token == "width") {
|
||||
lex.next();
|
||||
width = LyXLength(lex.getString());
|
||||
scale = 0;
|
||||
scale = 0.0;
|
||||
} else if (token == "height") {
|
||||
lex.next();
|
||||
height = LyXLength(lex.getString());
|
||||
@ -228,11 +228,14 @@ bool InsetGraphicsParams::Read(LyXLex & lex, string const & token)
|
||||
special = lex.getString();
|
||||
|
||||
// catch and ignore following two old-format tokens and their arguments.
|
||||
// e.g. "size_kind scale" clashes with the setting of the "scale" keyword.
|
||||
// e.g. "size_kind scale" clashes with the setting of the
|
||||
// "scale <value>" keyword.
|
||||
} else if (token == "size_kind" || token == "lyxsize_kind") {
|
||||
lex.next();
|
||||
lex.getString();
|
||||
} else { // If it's none of the above, it's not ours.
|
||||
|
||||
} else {
|
||||
// If it's none of the above, it's not ours.
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -37,7 +37,7 @@ struct InsetGraphicsParams
|
||||
/// How to display the image inside LyX
|
||||
grfx::DisplayType display;
|
||||
/// Scaling for output (LaTeX)
|
||||
unsigned int scale;
|
||||
float scale;
|
||||
/// sizes for output (LaTeX)
|
||||
LyXLength width;
|
||||
///
|
||||
|
Loading…
Reference in New Issue
Block a user