]> git.lyx.org Git - lyx.git/blob - src/factory.C
remove noload/don't typeset
[lyx.git] / src / factory.C
1
2 #include "funcrequest.h"
3 #include "bufferparams.h"
4 #include "buffer.h"
5 #include "FloatList.h"
6 #include "debug.h"
7 #include "BufferView.h"
8 #include "lyxtext.h"
9
10 #include "insets/insetcaption.h"
11 #include "insets/insetert.h"
12 #include "insets/insetexternal.h"
13 #include "insets/insetfloat.h"
14 #include "insets/insetfoot.h"
15 #include "insets/insetindex.h"
16 #include "insets/insetmarginal.h"
17 #include "insets/insetminipage.h"
18 #include "insets/insetnote.h"
19 #include "insets/insetoptarg.h"
20 #include "insets/insetparent.h"
21 #include "insets/insetref.h"
22 #include "insets/insettabular.h"
23 #include "insets/insettext.h"
24 #include "insets/insettoc.h"
25 #include "insets/inseturl.h"
26 #include "frontends/Dialogs.h"
27 #include "frontends/LyXView.h"
28
29 #include <cstdio>
30
31 using std::endl;
32
33 Inset * createInset(FuncRequest const & cmd)
34 {
35         BufferView * bv = cmd.view();
36         BufferParams const & params = bv->buffer()->params;
37
38         switch (cmd.action) {
39
40                 case LFUN_INSET_MINIPAGE:
41                         return new InsetMinipage(params);
42
43                 case LFUN_INSERT_NOTE:
44                         return new InsetNote(params);
45
46                 case LFUN_INSET_ERT:
47                         return new InsetERT(params);
48
49                 case LFUN_INSET_EXTERNAL:
50                         return new InsetExternal;
51
52                 case LFUN_INSET_FOOTNOTE:
53                         return new InsetFoot(params);
54
55                 case LFUN_INSET_MARGINAL:
56                         return new InsetMarginal(params);
57
58                 case LFUN_INSET_OPTARG:
59                         return new InsetOptArg(params);
60
61                 case LFUN_INSET_FLOAT:
62                         // check if the float type exists
63                         if (params.getLyXTextClass().floats().typeExist(cmd.argument))
64                                 return new InsetFloat(params, cmd.argument);
65                         lyxerr << "Non-existent float type: " << cmd.argument << endl;
66                         return 0;
67
68                 case LFUN_INSET_WIDE_FLOAT:
69                         // check if the float type exists
70                         if (params.getLyXTextClass().floats().typeExist(cmd.argument)) {
71                                 InsetFloat * p = new InsetFloat(params, cmd.argument);
72                                 p->wide(true, params);
73                         }
74                         lyxerr << "Non-existent float type: " << cmd.argument << endl;
75                         return 0;
76
77                 case LFUN_INDEX_INSERT: {
78                         string entry = cmd.argument;
79                         if (entry.empty())
80                                 entry = bv->getLyXText()->getStringToIndex(bv);
81                         if (!entry.empty())
82                                 return new InsetIndex(InsetCommandParams("index", entry));
83                         bv->owner()->getDialogs().createIndex();
84                         return 0;
85                 }
86
87                 case LFUN_TABULAR_INSERT:
88                         if (!cmd.argument.empty()) {
89                                 int r = 2;
90                                 int c = 2;
91                                 ::sscanf(cmd.argument.c_str(),"%d%d", &r, &c);
92                                 return new InsetTabular(*bv->buffer(), r, c);
93                         }
94                         bv->owner()->getDialogs().showTabularCreate();
95                         return 0;
96
97                 case LFUN_INSET_CAPTION:
98                         if (bv->theLockingInset()) {
99                                 lyxerr << "Locking inset code: "
100                                                          << static_cast<int>(bv->theLockingInset()->lyxCode());
101                                 InsetCaption * inset = new InsetCaption(params);
102                                 inset->setOwner(bv->theLockingInset());
103                                 inset->setAutoBreakRows(true);
104                                 inset->setDrawFrame(0, InsetText::LOCKED);
105                                 inset->setFrameColor(0, LColor::captionframe);
106                                 return inset;
107                         }
108                         return 0;
109
110                 case LFUN_INDEX_PRINT: 
111                         return new InsetPrintIndex(InsetCommandParams("printindex"));
112
113                 case LFUN_TOC_INSERT:
114                         return new InsetTOC(InsetCommandParams("tableofcontents"));
115
116                 case LFUN_PARENTINSERT:
117                         return new InsetParent(
118                                 InsetCommandParams("lyxparent", cmd.argument), *bv->buffer());
119
120                 case LFUN_INSERT_URL:
121                 {
122                         InsetCommandParams p;
123                         p.setFromString(cmd.argument);
124                         return new InsetUrl(p);
125                 }
126
127         #if 0
128                 case LFUN_INSET_LIST:
129                         return new InsetList;
130
131                 case LFUN_INSET_THEOREM:
132                         return new InsetTheorem;
133         #endif
134
135                 default:
136                         break;
137         }
138         return 0;
139 }
140
141