]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetFlex.cpp
Restore XHTML output for InsetListings.
[lyx.git] / src / insets / InsetFlex.cpp
index 76b338004d3e7115b8e433de1e7f41ec07389286..821e4db6d7f22013134d7eb89e7b89113f769412 100644 (file)
@@ -16,6 +16,9 @@
 
 #include "Buffer.h"
 #include "BufferParams.h"
+#include "Cursor.h"
+#include "FuncRequest.h"
+#include "FuncStatus.h"
 #include "Lexer.h"
 
 #include "support/gettext.h"
@@ -27,7 +30,7 @@ using namespace std;
 namespace lyx {
 
 
-InsetFlex::InsetFlex(Buffer const & buf, string const & layoutName)
+InsetFlex::InsetFlex(Buffer * buf, string const & layoutName)
        : InsetCollapsable(buf), name_(layoutName)
 {
        status_= Collapsed;
@@ -54,4 +57,50 @@ void InsetFlex::write(ostream & os) const
 }
 
 
+bool InsetFlex::getStatus(Cursor & cur, FuncRequest const & cmd,
+               FuncStatus & flag) const
+{
+       switch (cmd.action) {
+       case LFUN_INSET_DISSOLVE:
+               if (!cmd.argument().empty()) {
+                       InsetLayout const & il = getLayout();
+                       InsetLayout::InsetLyXType const type = 
+                               translateLyXType(to_utf8(cmd.argument()));
+                       if (il.lyxtype() == type) {
+                               FuncRequest temp_cmd(LFUN_INSET_DISSOLVE);
+                               return InsetCollapsable::getStatus(cur, temp_cmd, flag);
+                       } else
+                               return false;
+               }
+               // fall-through
+       default:
+               return InsetCollapsable::getStatus(cur, cmd, flag);
+       }
+}
+
+
+void InsetFlex::doDispatch(Cursor & cur, FuncRequest & cmd)
+{
+       switch (cmd.action) {
+       case LFUN_INSET_DISSOLVE:
+               if (!cmd.argument().empty()) {
+                       InsetLayout const & il = getLayout();
+                       InsetLayout::InsetLyXType const type = 
+                               translateLyXType(to_utf8(cmd.argument()));
+                       
+                       if (il.lyxtype() == type) {
+                               FuncRequest temp_cmd(LFUN_INSET_DISSOLVE);
+                               InsetCollapsable::doDispatch(cur, temp_cmd);
+                       } else
+                               cur.undispatched();
+                       break;
+               }
+               // fall-through
+       default:
+               InsetCollapsable::doDispatch(cur, cmd);
+               break;
+       }
+}
+
+
 } // namespace lyx