On Tuesday 30 April 2002 6:03 pm, John Levon wrote: > On Tue, Apr 30, 2002 at 06:02:03PM +0100, Angus Leeming wrote: > > Patch is large smply because I moved the findPos template to one place > > rather than four. > > Actually it's remarkably slender > > john
Doh. A
Index: src/frontends/controllers/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ChangeLog,v retrieving revision 1.169 diff -u -p -r1.169 ChangeLog --- src/frontends/controllers/ChangeLog 30 Apr 2002 16:12:49 -0000 1.169 +++ src/frontends/controllers/ChangeLog 30 Apr 2002 16:56:39 -0000 @@ -1,3 +1,8 @@ +2002-04-30 Angus Leeming <[EMAIL PROTECTED]> + + * ControlGraphics.[Ch] (getRotationOriginData): new helper function. + Enables the gui's to internationalise these strings. + 2002-04-30 John Levon <[EMAIL PROTECTED]> * frnt_lang.C: fix build Index: src/frontends/controllers/ControlGraphics.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlGraphics.C,v retrieving revision 1.34 diff -u -p -r1.34 ControlGraphics.C --- src/frontends/controllers/ControlGraphics.C 19 Apr 2002 09:17:05 -0000 1.34 +++ src/frontends/controllers/ControlGraphics.C 30 Apr 2002 16:56:39 -0000 @@ -48,9 +48,9 @@ using std::pair; using std::make_pair; using std::ifstream; +using std::vector; namespace { -using std::vector; // FIXME: currently we need the second '|' to prevent mis-interpretation! // All supported graphic formats with their file-extension and the @@ -181,3 +181,41 @@ bool ControlGraphics::isFilenameValid(st string const name = MakeAbsPath(fname, lv_.buffer()->filePath()); return IsFileReadable(name); } + + +namespace frnt { + +namespace { + +char const * const rorigin_latex_strs[] = { + "center", "leftTop", "leftBottom", "leftBaseline", + "centerTop", "centerBottom", "centerBaseline", + "rightTop", "rightBottom", "rightBaseline" }; + +char const * const rorigin_gui_strs[] = { + N_("center"), + N_("left top"), N_("left bottom"), N_("left baseline"), + N_("center top"), N_("center bottom"), N_("center baseline"), + N_("right top"), N_("right bottom"), N_("right baseline") }; + +size_t rorigin_size = sizeof(rorigin_latex_strs) / sizeof(char *); + +} // namespace anon + +vector<RotationOriginPair> getRotationOriginData() +{ + static vector<RotationOriginPair> data; + if (!data.empty()) + return data; + + data.resize(rorigin_size); + for (lyx::size_type i = 0; i < rorigin_size; ++i) { + data[i] = std::make_pair(_(rorigin_gui_strs[i]), + rorigin_latex_strs[i]); + } + + return data; +} + +} // namespace frnt + Index: src/frontends/controllers/ControlGraphics.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlGraphics.h,v retrieving revision 1.9 diff -u -p -r1.9 ControlGraphics.h --- src/frontends/controllers/ControlGraphics.h 22 Mar 2002 15:24:31 -0000 1.9 +++ src/frontends/controllers/ControlGraphics.h 30 Apr 2002 16:56:39 -0000 @@ -21,6 +21,8 @@ #endif #include "ControlInset.h" +#include <utility> +#include <vector> class InsetGraphics; class InsetGraphicsParams; @@ -42,6 +44,7 @@ public: bool bbChanged; /// test if file exist bool isFilenameValid(string const & fname) const; + private: /// Dispatch the changed parameters to the kernel. virtual void applyParamsToInset(); @@ -52,5 +55,12 @@ private: /// get the parameters from the inset passed to showInset. virtual InsetGraphicsParams const getParams(InsetGraphics const &); }; + +namespace frnt { + /// The (tranlated) GUI string and it's LaTeX equivalent. + typedef std::pair<string, string> RotationOriginPair; + /// + std::vector<RotationOriginPair> getRotationOriginData(); +} // namespace frnt #endif // CONTROLGRAPHICS_H Index: src/frontends/xforms/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/ChangeLog,v retrieving revision 1.365 diff -u -p -r1.365 ChangeLog --- src/frontends/xforms/ChangeLog 30 Apr 2002 15:07:03 -0000 1.365 +++ src/frontends/xforms/ChangeLog 30 Apr 2002 16:56:41 -0000 @@ -2,6 +2,21 @@ * FormCharacter.C: * FormDocument.C: + * FormPreferences.C (findPos): remove this template to xforms_helpers.h. + + * xforms_helpers.h (findPos): new template. + + * FormGraphics.h: store a vector<string> origins_ of the LaTeX names + for the rotation origins. + + * FormGraphics.C: internationalise the rotation origin strings in the + choice using the same approach as used for the language names in the + Character, Document, Preferences dialogs. + +2002-04-30 Angus Leeming <[EMAIL PROTECTED]> + + * FormCharacter.C: + * FormDocument.C: * FormPreferences.C: use the bool flag to getLanguageData as appropriate. No longer translate the strings as this is done in getLanguageData. Index: src/frontends/xforms/FormCharacter.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/FormCharacter.C,v retrieving revision 1.27 diff -u -p -r1.27 FormCharacter.C --- src/frontends/xforms/FormCharacter.C 30 Apr 2002 15:07:03 -0000 1.27 +++ src/frontends/xforms/FormCharacter.C 30 Apr 2002 16:56:41 -0000 @@ -22,6 +22,7 @@ #include "gettext.h" #include "combox.h" #include "helper_funcs.h" +#include "xforms_helpers.h" #include "frnt_lang.h" #include "support/lstrings.h" @@ -142,21 +143,6 @@ void FormCharacter::apply() bool const toggleall = fl_get_button(dialog_->check_toggle_all); controller().setToggleAll(toggleall); } - - -namespace { - -template<class A> -typename vector<A>::size_type findPos(vector<A> const & vec, A const & val) -{ - typename vector<A>::const_iterator it = - find(vec.begin(), vec.end(), val); - if (it == vec.end()) - return 0; - return it - vec.begin(); -} - -} // namespace anon void FormCharacter::update() Index: src/frontends/xforms/FormDocument.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/FormDocument.C,v retrieving revision 1.98 diff -u -p -r1.98 FormDocument.C --- src/frontends/xforms/FormDocument.C 30 Apr 2002 15:07:03 -0000 1.98 +++ src/frontends/xforms/FormDocument.C 30 Apr 2002 16:56:45 -0000 @@ -1090,21 +1090,6 @@ void FormDocument::class_update(BufferPa } -namespace { - -template<class A> -typename vector<A>::size_type findPos(vector<A> const & vec, A const & val) -{ - typename vector<A>::const_iterator it = - std::find(vec.begin(), vec.end(), val); - if (it == vec.end()) - return 0; - return it - vec.begin(); -} - -} // namespace anon - - void FormDocument::language_update(BufferParams const & params) { if (!language_.get()) Index: src/frontends/xforms/FormGraphics.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/FormGraphics.C,v retrieving revision 1.69 diff -u -p -r1.69 FormGraphics.C --- src/frontends/xforms/FormGraphics.C 11 Apr 2002 18:39:17 -0000 1.69 +++ src/frontends/xforms/FormGraphics.C 30 Apr 2002 16:56:46 -0000 @@ -20,6 +20,7 @@ #include "Alert.h" #include "xforms_helpers.h" +#include "helper_funcs.h" #include "input_validators.h" #include "debug.h" // for lyxerr #include "support/lstrings.h" // for strToDbl & tostr @@ -28,6 +29,7 @@ #include "lyxrc.h" // for lyxrc.display_graphics using std::endl; +using std::vector; namespace { @@ -94,12 +96,15 @@ void FormGraphics::build() setPrehandler(file_->input_subcaption); setPrehandler(file_->input_rotate_angle); - string const choice_origin = - "center|" // c - "leftTop|leftBottom|leftBaseline|" // lt lb lB - "centerTop|centerBottom|centerBaseline|" // ct cb cB - "rightTop|rightBottom|rightBaseline"; // rt rb rB - fl_addto_choice(file_->choice_origin, choice_origin.c_str()); + using namespace frnt; + vector<RotationOriginPair> origindata = getRotationOriginData(); + + // Store the identifiers for later + origins_ = getSecond(origindata); + + string const choice = + " " + getStringFromVector(getFirst(origindata), " | ") +" "; + fl_addto_choice(file_->choice_origin, choice.c_str()); bc().addReadOnly(file_->button_browse); bc().addReadOnly(file_->check_subcaption); @@ -211,10 +216,12 @@ void FormGraphics::apply() igp.rotateAngle -= 360.0; } } - if (fl_get_choice(file_->choice_origin) > 0) - igp.rotateOrigin = fl_get_choice_text(file_->choice_origin); + int const pos = fl_get_choice(file_->choice_origin); + if (pos > 0) + igp.rotateOrigin = origins_[pos-1]; else igp.rotateOrigin = string(); + igp.draft = fl_get_button(file_->check_draft); igp.noUnzip = fl_get_button(file_->check_nounzip); @@ -296,7 +303,6 @@ void FormGraphics::apply() } - void FormGraphics::update() { // Update dialog with details from inset InsetGraphicsParams & igp = controller().params(); @@ -312,8 +318,11 @@ void FormGraphics::update() { tostr(igp.rotateAngle).c_str()); if (igp.rotateOrigin.empty()) fl_set_choice(file_->choice_origin,1); - else - fl_set_choice_text(file_->choice_origin,igp.rotateOrigin.c_str()); + else { + int pos = int(findPos(origins_, igp.rotateOrigin)); + fl_set_choice(file_->choice_origin, pos+1); + } + setEnabled(file_->input_rotate_angle, fl_get_button(file_->check_rotate)); setEnabled(file_->choice_origin, Index: src/frontends/xforms/FormGraphics.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/FormGraphics.h,v retrieving revision 1.28 diff -u -p -r1.28 FormGraphics.h --- src/frontends/xforms/FormGraphics.h 4 Apr 2002 14:49:54 -0000 1.28 +++ src/frontends/xforms/FormGraphics.h 30 Apr 2002 16:56:46 -0000 @@ -19,6 +19,7 @@ #include "FormBase.h" #include "RadioButtonGroup.h" +#include <vector> class ControlGraphics; struct FD_form_graphics; @@ -74,6 +75,9 @@ private: boost::scoped_ptr<FD_form_bbox> bbox_; /// boost::scoped_ptr<FD_form_special> special_; + + /// Store the LaTeX names for the rotation origins. + std::vector<string> origins_; }; #endif // FORMGRAPHICS_H Index: src/frontends/xforms/FormPreferences.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/FormPreferences.C,v retrieving revision 1.109 diff -u -p -r1.109 FormPreferences.C --- src/frontends/xforms/FormPreferences.C 30 Apr 2002 15:07:03 -0000 1.109 +++ src/frontends/xforms/FormPreferences.C 30 Apr 2002 16:56:48 -0000 @@ -1758,21 +1758,6 @@ bool FormPreferences::Language::input(FL } -namespace { - -template<class A> -typename vector<A>::size_type findPos(vector<A> const & vec, A const & val) -{ - typename vector<A>::const_iterator it = - std::find(vec.begin(), vec.end(), val); - if (it == vec.end()) - return 0; - return it - vec.begin(); -} - -} // namespace anon - - void FormPreferences::Language::update() { fl_set_button(dialog_->check_use_kbmap, Index: src/frontends/xforms/xforms_helpers.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/xforms_helpers.h,v retrieving revision 1.23 diff -u -p -r1.23 xforms_helpers.h --- src/frontends/xforms/xforms_helpers.h 23 Apr 2002 08:16:27 -0000 1.23 +++ src/frontends/xforms/xforms_helpers.h 30 Apr 2002 16:56:48 -0000 @@ -19,6 +19,7 @@ #include "Color.h" #include "LString.h" +#include <algorithm> #include <vector> class LyXLength; @@ -81,6 +82,20 @@ void updateWidgetsFromLength(FL_OBJECT * LyXLength const & len, string const & default_unit); + +/** Return the position of val in the vector if found. + If not found, return 0. + */ +template<class A> +typename std::vector<A>::size_type +findPos(std::vector<A> const & vec, A const & val) +{ + typename std::vector<A>::const_iterator it = + std::find(vec.begin(), vec.end(), val); + if (it == vec.end()) + return 0; + return std::distance(vec.begin(), it); +} /// Called from Preferences when the cursor color is changed. void setCursorColor(int color);