This patch implements NoFloat to be used in layout files.
As well as some other minor stuff.

Comments welcome.

Index: src/FloatList.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/FloatList.C,v
retrieving revision 1.14
diff -u -p -r1.14 FloatList.C
--- src/FloatList.C	4 Sep 2002 06:52:26 -0000	1.14
+++ src/FloatList.C	10 Sep 2002 21:57:57 -0000
@@ -26,29 +26,6 @@
 
 FloatList::FloatList()
 {
-#if 0
-	// Insert the latex builtin float-types
-	// (these will later be read from a layout file)
-
-	// table
-	Floating table("table", "tbp", "lot", "", "plain", N_("Table"),
-		       N_("List of Tables"), true);
-	newFloat(table);
-
-	// figure
-	Floating figure("figure", "tbp", "lof",
-			"", "plain", N_("Figure"),
-			N_("List of Figures"), true);
-	newFloat(figure);
-
-	// And we add algorithm too since LyX has
-	// supported that for a long time,
-	// but support for this should probably be moved to a layout file.
-	Floating algorithm("algorithm", "htbp", "loa",
-			   "", "ruled", N_("Algorithm"),
-			   N_("List of Algorithms"));
-	newFloat(algorithm);
-#endif
 }
 
 
@@ -98,6 +75,12 @@ Floating const & FloatList::getType(stri
 	static Floating empty_float;
 	return empty_float;
 #endif
+}
+
+
+void FloatList::erase(string const & t)
+{
+	list.erase(t);
 }
 
 
Index: src/FloatList.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/FloatList.h,v
retrieving revision 1.9
diff -u -p -r1.9 FloatList.h
--- src/FloatList.h	27 Aug 2002 15:51:17 -0000	1.9
+++ src/FloatList.h	10 Sep 2002 21:57:57 -0000
@@ -43,6 +43,8 @@ public:
 	///
 	Floating const & getType(string const & t) const;
 	///
+	void erase(string const & t);
+	///
 	const_iterator operator[](string const & t) const;
 private:
 	///
Index: src/lyxtextclass.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxtextclass.C,v
retrieving revision 1.20
diff -u -p -r1.20 lyxtextclass.C
--- src/lyxtextclass.C	6 Sep 2002 15:18:07 -0000	1.20
+++ src/lyxtextclass.C	10 Sep 2002 21:57:57 -0000
@@ -19,6 +19,7 @@
 #include "debug.h"
 #include "lyxlex.h"
 #include "counters.h"
+#include "FloatList.h"
 
 #include "support/lstrings.h"
 #include "support/LAssert.h"
@@ -49,7 +50,8 @@ struct compare_name {
 
 LyXTextClass::LyXTextClass(string const & fn, string const & cln,
 			   string const & desc)
-	: name_(fn), latexname_(cln), description_(desc), ctrs_(new Counters)
+	: name_(fn), latexname_(cln), description_(desc),
+	  floatlist_(new FloatList), ctrs_(new Counters)
 {
 	outputType_ = LATEX;
 	columns_ = 1;
@@ -104,7 +106,8 @@ enum TextClassTags {
 	TC_LEFTMARGIN,
 	TC_RIGHTMARGIN,
 	TC_FLOAT,
-	TC_COUNTER
+	TC_COUNTER,
+	TC_NOFLOAT
 };
 
 
@@ -121,6 +124,7 @@ bool LyXTextClass::Read(string const & f
 		{ "input",           TC_INPUT },
 		{ "leftmargin",      TC_LEFTMARGIN },
 		{ "maxcounter",      TC_MAXCOUNTER },
+		{ "nofloat",         TC_NOFLOAT },
 		{ "nostyle",         TC_NOSTYLE },
 		{ "outputtype",      TC_OUTPUTTYPE },
 		{ "pagestyle",       TC_PAGESTYLE },
@@ -145,7 +149,7 @@ bool LyXTextClass::Read(string const & f
 				     << MakeDisplayPath(filename)
 				     << endl;
 
-	LyXLex lexrc(textClassTags, TC_COUNTER);
+	LyXLex lexrc(textClassTags, TC_NOFLOAT);
 	bool error = false;
 
 	lexrc.setFile(filename);
@@ -322,6 +326,13 @@ bool LyXTextClass::Read(string const & f
 		case TC_COUNTER:
 			readCounter(lexrc);
 			break;
+		case TC_NOFLOAT:
+			if (lexrc.next()) {
+				string const nofloat = lexrc.getString();
+				floatlist_->erase(nofloat);
+			}
+			break;
+
 		}
 	}
 
@@ -588,7 +599,7 @@ void LyXTextClass::readFloat(LyXLex & le
 	if (getout) {
 		Floating newfloat(type, placement, ext, within,
 				  style, name, listname, builtin);
-		floatlist_.newFloat(newfloat);
+		floatlist_->newFloat(newfloat);
 	}
 
 	lexrc.popTable();
@@ -757,13 +768,13 @@ bool LyXTextClass::load() const
 
 FloatList & LyXTextClass::floats()
 {
-	return floatlist_;
+	return *floatlist_.get();
 }
 
 
 FloatList const & LyXTextClass::floats() const
 {
-	return floatlist_;
+	return *floatlist_.get();
 }
 
 
Index: src/lyxtextclass.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxtextclass.h,v
retrieving revision 1.9
diff -u -p -r1.9 lyxtextclass.h
--- src/lyxtextclass.h	6 Sep 2002 14:47:59 -0000	1.9
+++ src/lyxtextclass.h	10 Sep 2002 21:57:57 -0000
@@ -19,7 +19,6 @@
 #include "lyxlayout.h"
 #include "LString.h"
 #include "lyxlayout_ptr_fwd.h"
-#include "FloatList.h"
 
 #include "support/types.h"
 
@@ -29,6 +28,7 @@
 
 class LyXLex;
 class Counters;
+class FloatList;
 
 ///
 class LyXTextClass {
@@ -196,7 +196,7 @@ private:
 	LayoutList layoutlist_;
 
 	///
-	FloatList floatlist_;
+	boost::shared_ptr<FloatList> floatlist_;
 
 	///
 	boost::shared_ptr<Counters> ctrs_;

-- 
        Lgb

Reply via email to