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

Reply via email to