1 /***************************************************************************
2                          latexcmd.h
3                          ----------
4     date                 : Jul 25 2005
5     version              : 0.20
6     copyright            : (C) 2005 by Holger Danielsson
7     email                : holger.danielsson@t-online.de
8  ***************************************************************************/
9 
10 /***************************************************************************
11  *                                                                         *
12  *   This program is free software; you can redistribute it and/or modify  *
13  *   it under the terms of the GNU General Public License as published by  *
14  *   the Free Software Foundation; either version 2 of the License, or     *
15  *   (at your option) any later version.                                   *
16  *                                                                         *
17  ***************************************************************************/
18 
19 // kommandos mit weiteren Parametern
20 
21 #ifndef LATEXCMD_H
22 #define LATEXCMD_H
23 
24 #include <QObject>
25 #include <QStringList>
26 #include <QMap>
27 
28 #include <kconfig.h>
29 
30 class KileInfo;
31 
32 namespace KileDocument
33 {
34 
35 const int MaxEnvAttr = 8;
36 const int MaxCmdAttr = 5;
37 
38 enum CmdAttribute {
39     CmdAttrNone = 0,                                                                                  // unknown
40     CmdAttrAmsmath = 1, CmdAttrMath = 2, CmdAttrList = 4, CmdAttrTabular = 8, CmdAttrVerbatim = 16,   // environments
41     CmdAttrLabel = 32, CmdAttrReference = 64, CmdAttrCitations = 128, CmdAttrIncludes = 256, // commands
42     CmdAttrBibliographies = 512 //commands - continue
43 };
44 
45 class LatexCmdAttributes
46 {
47 public:
48     bool standard;
49     CmdAttribute type;
50     bool starred;
51     bool cr;
52     bool mathmode;
53     bool displaymathmode;
54     QString tabulator;
55     QString option;
56     QString parameter;
57 };
58 
59 class LatexCommands : public QObject
60 {
61     Q_OBJECT
62 
63 public:
64     LatexCommands(KConfig *config, KileInfo *info);
~LatexCommands()65     ~LatexCommands() {};
66 
envGroupName()67     QString envGroupName() {
68         return m_envGroupName;
69     }
cmdGroupName()70     QString cmdGroupName() {
71         return m_cmdGroupName;
72     }
73     QString configString(LatexCmdAttributes &attr,bool env);
74 
75     bool isMathEnv(const QString &name);
isListEnv(const QString & name)76     bool isListEnv(const QString &name) {
77         return isType(name,'l');
78     }
isTabularEnv(const QString & name)79     bool isTabularEnv(const QString &name) {
80         return isType(name,'t');
81     }
isVerbatimEnv(const QString & name)82     bool isVerbatimEnv(const QString &name) {
83         return isType(name,'v');
84     }
85 
isLabelCmd(const QString & name)86     bool isLabelCmd(const QString &name) {
87         return isType(name,'L');
88     }
isReferenceCmd(const QString & name)89     bool isReferenceCmd(const QString &name) {
90         return isType(name,'R');
91     }
isCitationCmd(const QString & name)92     bool isCitationCmd(const QString &name) {
93         return isType(name,'C');
94     }
isInputCmd(const QString & name)95     bool isInputCmd(const QString &name) {
96         return isType(name,'I');
97     }
98 
99     bool isStarredEnv(const QString &name);
100     bool isCrEnv(const QString &name);
101     bool isMathModeEnv(const QString &name);
102     bool isDisplaymathModeEnv(const QString &name);
103     bool needsMathMode(const QString &name);
104     QString getTabulator(const QString &name);
105 
106     void commandList(QStringList &list, uint attr, bool userdefined);
107     bool commandAttributes(const QString &name, LatexCmdAttributes &attr);
108 
109     void resetCommands();
110 
111 private:
112 
113     KConfig *m_config;
114     KileInfo	*m_ki;
115 
116     QString m_envGroupName, m_cmdGroupName;
117     QMap<QString,QString> m_latexCommands;
118 
119     void addUserCommands(const QString &name, QStringList &list);
120     void insert(const QStringList &list);
121 
122     QString getValue(const QString &name);
123 
124 
125     bool isUserDefined(const QString &name);
126     bool isType(const QString &name, QChar ch);
127     QString getAttrAt(const QString &name, int index);
128     QChar getAttrChar(CmdAttribute attr);
129     CmdAttribute getCharAttr(QChar ch);
130 
131 };
132 
133 
134 }
135 
136 #endif
137