3 * \file ControlDocument.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
8 * \author Richard Heck (modules)
10 * Full author contact details are available in file CREDITS.
13 #ifndef CONTROLDOCUMENT_H
14 #define CONTROLDOCUMENT_H
17 #include "BufferParams.h"
18 #include "support/FileName.h"
19 #include "support/filetools.h"
20 #include "support/types.h"
32 typedef void const * BufferId;
34 typedef std::map<std::string, support::FileName> ModuleMap;
36 /** A controller for Document dialogs.
38 class ControlDocument : public Controller
41 /// font family names for BufferParams::fontsDefaultFamily
42 static char const * const fontfamilies[5];
43 /// GUI names corresponding fontfamilies
44 static char const * fontfamilies_gui[5];
46 ControlDocument(Dialog &);
50 virtual bool initialiseParams(std::string const & data);
52 virtual void clearParams();
54 virtual void dispatchParams();
56 virtual bool isBufferDependent() const { return true; }
57 /// always true since we don't manipulate document contents
58 virtual bool canApply() const { return true; }
60 TextClass const & textClass() const;
62 BufferParams & params() { return bp_; }
64 BufferParams const & params() const { return bp_; }
67 /// List of available modules
68 std::vector<std::string> getModuleNames();
69 /// Modules in use in current buffer
70 std::vector<std::string> const & getSelectedModules();
72 std::string getModuleDescription(std::string const & modName) const;
74 std::vector<std::string> getPackageList(std::string const & modName) const;
76 void setLanguage() const;
78 void saveAsDefault() const;
80 bool isFontAvailable(std::string const & font) const;
81 /// does this font provide Old Style figures?
82 bool providesOSF(std::string const & font) const;
83 /// does this font provide true Small Caps?
84 bool providesSC(std::string const & font) const;
85 /// does this font provide size adjustment?
86 bool providesScale(std::string const & font) const;
89 void loadModuleNames();
92 /// List of names of available modules
93 std::vector<std::string> moduleNames_;
96 } // namespace frontend
99 #endif // CONTROLDOCUMENT_H