]> git.lyx.org Git - features.git/blobdiff - src/lyxfunc.C
read the Changelog
[features.git] / src / lyxfunc.C
index 030c0d3a87f341d03c0354c0c5a10483c7638c4a..164a193fb89cb8d3fbd67091716f60439b8db878 100644 (file)
@@ -32,6 +32,7 @@ using std::istringstream;
 #include "kbmap.h"
 #include "lyxfunc.h"
 #include "bufferlist.h"
+#include "ColorHandler.h"
 #include "lyxserver.h"
 #include "lyx.h"
 #include "intl.h"
@@ -55,7 +56,12 @@ using std::istringstream;
 #include "insets/insetexternal.h"
 #include "insets/insetgraphics.h"
 #include "insets/insetfoot.h"
+#include "insets/insetmarginal.h"
+#include "insets/insetminipage.h"
+#include "insets/insetfloat.h"
+#include "insets/insetlist.h"
 #include "insets/insettabular.h"
+#include "insets/insettheorem.h"
 #include "mathed/formulamacro.h"
 #include "toolbar.h"
 #include "spellchecker.h" // RVDK_PATCH_5
@@ -82,6 +88,7 @@ using std::istringstream;
 #include "menus.h"
 #include "bufferview_funcs.h"
 #include "frontends/Dialogs.h"
+#include "FloatList.h"
 
 using std::pair;
 using std::endl;
@@ -215,7 +222,7 @@ int LyXFunc::processKeyEvent(XEvent * ev)
                        owner->getMiniBuffer()->Set(CurrentState(owner->view()));
                } else {
                        tli->UnlockInsetInInset(owner->view(),
-                                               tli->GetLockingInset());
+                                               tli->GetLockingInset(),true);
                }
                return 0;
        }
@@ -542,7 +549,7 @@ string LyXFunc::Dispatch(int ac,
                                int slx, sly;
                                UpdatableInset * inset = 
                                        owner->view()->the_locking_inset;
-                               inset->GetCursorPos(slx, sly);
+                               inset->GetCursorPos(owner->view(), slx, sly);
                                owner->view()->unlockInset(inset);
                                owner->view()->menuUndo();
                                if (owner->view()->text->cursor.par()->
@@ -561,7 +568,7 @@ string LyXFunc::Dispatch(int ac,
                                int slx, sly;
                                UpdatableInset * inset = owner->view()->
                                        the_locking_inset;
-                               inset->GetCursorPos(slx, sly);
+                               inset->GetCursorPos(owner->view(), slx, sly);
                                owner->view()->unlockInset(inset);
                                owner->view()->menuRedo();
                                inset = static_cast<UpdatableInset*>(
@@ -863,7 +870,11 @@ string LyXFunc::Dispatch(int ac,
        }
                
        case LFUN_TABLE:
+#ifndef NEW_TABULAR
                Table();
+#else
+               owner->getDialogs()->showTabularCreate();
+#endif
                break;
                
        case LFUN_FIGURE:
@@ -1392,8 +1403,9 @@ string LyXFunc::Dispatch(int ac,
                                                    txt->cursor.par(),
                                                    txt->cursor.pos());
                        tmpinset->Edit(owner->view(),
-                                      tmpinset->x() + tmpinset->width(owner->view()->painter(),font),
-                                      tmpinset->descent(owner->view()->painter(),font),
+                                      tmpinset->x() +
+                                      tmpinset->width(owner->view(),font),
+                                      tmpinset->descent(owner->view(),font),
                                       0);
                        break;
                }
@@ -1995,16 +2007,17 @@ string LyXFunc::Dispatch(int ac,
        
        case LFUN_INSET_TEXT:
        {
-               InsetText * new_inset = new InsetText();
+               InsetText * new_inset = new InsetText;
                if (owner->view()->insertInset(new_inset))
                        new_inset->Edit(owner->view(), 0, 0, 0);
                else
                        delete new_inset;
        }
        break;
+       
        case LFUN_INSET_ERT:
        {
-               InsetERT * new_inset = new InsetERT();
+               InsetERT * new_inset = new InsetERT;
                if (owner->view()->insertInset(new_inset))
                        new_inset->Edit(owner->view(), 0, 0, 0);
                else
@@ -2014,7 +2027,7 @@ string LyXFunc::Dispatch(int ac,
        
        case LFUN_INSET_EXTERNAL:
        {
-               InsetExternal * new_inset = new InsetExternal();
+               InsetExternal * new_inset = new InsetExternal;
                if (owner->view()->insertInset(new_inset))
                        new_inset->Edit(owner->view(), 0, 0, 0);
                else
@@ -2024,7 +2037,64 @@ string LyXFunc::Dispatch(int ac,
        
        case LFUN_INSET_FOOTNOTE:
        {
-               InsetFoot * new_inset = new InsetFoot();
+               InsetFoot * new_inset = new InsetFoot;
+               if (owner->view()->insertInset(new_inset))
+                       new_inset->Edit(owner->view(), 0, 0, 0);
+               else
+                       delete new_inset;
+       }
+       break;
+
+       case LFUN_INSET_MARGINAL:
+       {
+               InsetMarginal * new_inset = new InsetMarginal;
+               if (owner->view()->insertInset(new_inset))
+                       new_inset->Edit(owner->view(), 0, 0, 0);
+               else
+                       delete new_inset;
+       }
+       break;
+
+       case LFUN_INSET_MINIPAGE:
+       {
+               InsetMinipage * new_inset = new InsetMinipage;
+               if (owner->view()->insertInset(new_inset))
+                       new_inset->Edit(owner->view(), 0, 0, 0);
+               else
+                       delete new_inset;
+       }
+       break;
+
+       case LFUN_INSET_FLOAT:
+       {
+               // check if the float type exist
+               if (floatList.typeExist(argument)) {
+                       InsetFloat * new_inset = new InsetFloat(argument);
+                       if (owner->view()->insertInset(new_inset))
+                               new_inset->Edit(owner->view(), 0, 0, 0);
+                       else
+                               delete new_inset;
+               } else {
+                       lyxerr << "Non-existant float type: "
+                              << argument << endl;
+               }
+               
+       }
+       break;
+
+       case LFUN_INSET_LIST:
+       {
+               InsetList * new_inset = new InsetList;
+               if (owner->view()->insertInset(new_inset))
+                       new_inset->Edit(owner->view(), 0, 0, 0);
+               else
+                       delete new_inset;
+       }
+       break;
+
+       case LFUN_INSET_THEOREM:
+       {
+               InsetTheorem * new_inset = new InsetTheorem;
                if (owner->view()->insertInset(new_inset))
                        new_inset->Edit(owner->view(), 0, 0, 0);
                else
@@ -2320,27 +2390,22 @@ string LyXFunc::Dispatch(int ac,
        }
        break;
        
+       case LFUN_CREATE_CITATION:
+       {
+               owner->getDialogs()->createCitation( argument );
+       }
+       break;
+                   
        case LFUN_INSERT_CITATION:
-       {   
-               InsetCitation * new_inset = new InsetCitation();
-               // ale970405
-               // The note, if any, must be after the key, delimited
-               // by a | so both key and remark can have spaces.
-               if (!argument.empty()) {
-                       string lsarg(argument);
-                       if (contains(lsarg, "|")) {
-                               new_inset->setContents(token(lsarg, '|', 0));
-                               new_inset->setOptions(token(lsarg, '|', 1));
-                       } else
-                               new_inset->setContents(lsarg);
-                       if (!owner->view()->insertInset(new_inset))
-                               delete new_inset;
-               } else {
-                       if (owner->view()->insertInset(new_inset))
-                               new_inset->Edit(owner->view(), 0, 0, 0);
-                       else
-                               delete new_inset;
-               }
+       {
+               string keys = token(argument, '|', 0);
+               string text = token(argument, '|', 1);
+
+               InsetCitation * inset = new InsetCitation( keys, text );
+               if (!owner->view()->insertInset(inset))
+                       delete inset;
+               else
+                       owner->view()->updateInset( inset, true );
        }
        break;
                    
@@ -2601,6 +2666,30 @@ string LyXFunc::Dispatch(int ac,
        }
        break;
 
+       case LFUN_SET_COLOR:
+       {
+               string lyx_name, x11_name;
+               x11_name = split(argument, lyx_name, ' ');
+               if (lyx_name.empty() || x11_name.empty()) {
+                       LyXBell();
+                       setErrorMessage(N_("Syntax: set-color <lyx_name>"
+                                               " <x11_name>"));
+                       break;
+                       }
+
+               if (!lcolor.setColor(lyx_name, x11_name)) {
+                       static string err1 (N_("Set-color \""));
+                       static string err2 (N_("\" failed - color is undefined "
+                                               "or may not be redefined"));
+                       LyXBell();
+                       setErrorMessage(err1 + lyx_name + err2);
+                       break;
+               }
+               lyxColorHandler->updateColor(lcolor.getFromLyXName(lyx_name));
+               owner->view()->redraw();
+               break;
+       }
+
        case LFUN_UNKNOWN_ACTION:
        {
                if(!owner->buffer()) {