(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:
Angus Leeming 2002-10-24 11:53:46 +00:00
parent fd2740ca18
commit e1edfbe8a0
9 changed files with 259 additions and 196 deletions

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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";

View File

@ -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;

View File

@ -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;
///