]> git.lyx.org Git - lyx.git/blob - src/frontends/controllers/Kernel.C
fix crash due to invalidated iterator
[lyx.git] / src / frontends / controllers / Kernel.C
1 /**
2  * \file Kernel.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Angus Leeming
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "Kernel.h"
14
15 #include "buffer.h"
16 #include "BufferView.h"
17 #include "funcrequest.h"
18 #include "lyxfunc.h"
19 #include "frontends/Dialogs.h"
20 #include "frontends/LyXView.h"
21
22
23 using std::string;
24
25 namespace lyx {
26 namespace frontend {
27
28 Kernel::Kernel(LyXView & lyxview)
29         : lyxview_(lyxview)
30 {}
31
32
33 void Kernel::dispatch(FuncRequest const & fr) const
34 {
35         lyxview_.getLyXFunc().dispatch(fr);
36 }
37
38
39 void Kernel::updateDialog(string const & name) const
40 {
41         dispatch(FuncRequest(LFUN_DIALOG_UPDATE, name));
42 }
43
44
45 void Kernel::disconnect(string const & name) const
46 {
47         lyxview_.getDialogs().disconnect(name);
48 }
49
50 bool Kernel::isBufferAvailable() const
51 {
52         if (!lyxview_.view().get())
53                 return false;
54         return lyxview_.view()->available();
55 }
56
57
58 bool Kernel::isBufferReadonly() const
59 {
60         if (!lyxview_.buffer())
61                 return true;
62         return lyxview_.buffer()->isReadonly();
63 }
64
65
66 string const Kernel::bufferFilepath() const
67 {
68         return buffer().filePath();
69 }
70
71
72 Kernel::DocType Kernel::docType() const
73 {
74         if (buffer().isLatex())
75                 return LATEX;
76         if (buffer().isLiterate())
77                 return LITERATE;
78         if (buffer().isLinuxDoc())
79                 return LINUXDOC;
80
81         return DOCBOOK;
82 }
83
84
85 void Kernel::redrawGUI() const
86 {
87         lyxview_.getDialogs().redrawGUI();
88 }
89
90
91 BufferView * Kernel::bufferview()
92 {
93         return lyxview_.view().get();
94 }
95
96
97 BufferView const * Kernel::bufferview() const
98 {
99         return lyxview_.view().get();
100 }
101
102
103 Buffer & Kernel::buffer()
104 {
105         BOOST_ASSERT(lyxview_.buffer());
106         return *lyxview_.buffer();
107 }
108
109
110 Buffer const & Kernel::buffer() const
111 {
112         BOOST_ASSERT(lyxview_.buffer());
113         return *lyxview_.buffer();
114 }
115
116 } // namespace frontend
117 } // namespace lyx