]> git.sven.stormbind.net Git - sven/vym.git/blob - src/command.cpp
Replace Pierre as the maintainer
[sven/vym.git] / src / command.cpp
1 #include "command.h"
2
3 #include <QDebug>
4 Command::Command(const QString &n, SelectionType st, ParameterType retType)
5 {
6     name = n;
7     selectionType = st;
8     returnType = retType;
9 }
10
11 QString Command::getName() { return name; }
12
13 QString Command::getDescription()
14 {
15     QString s;
16     s = QString("Command: \"%1\"\n").arg(name);
17     s += QString("  SelectionType: %1\n").arg(getSelectionTypeName());
18     s += QString("    Return type: %1\n").arg(typeToString(returnType));
19     s += QString("     Parameters: %1\n").arg(parCount());
20     // s+=QString(" Parameters: %1\n").arg(parCount() );
21     for (int i = 0; i < parCount(); i++) {
22         s += QString("    Parameter %1:\n").arg(i + 1);
23         s += QString("        Comment: %1\n").arg(getParComment(i));
24         s += QString("           Type: %1\n").arg(typeToString(getParType(i)));
25         s += QString("       Optional: ");
26         isParOptional(i) ? s += "yes\n" : s += "No\n";
27     }
28     return s;
29 }
30
31 QString Command::getDescriptionLaTeX()
32 {
33     QString s;
34     s = QString("\\item %1\\\\\n").arg(name);
35     s += "\\begin{tabular}{rl}\n";
36     s += QString("  SelectionType: & %1\\\\\n").arg(getSelectionTypeName());
37     s += QString("    Return Type: & %1\\\\\n").arg(typeToString(returnType));
38
39     s += QString("     Parameters: & %1\\\\\n").arg(parCount());
40     for (int i = 0; i < parCount(); i++) {
41         s += QString("   Parameter: &  %1:\\\\\n").arg(i + 1);
42         s += QString("        Comment: & %1\\\\\n").arg(getParComment(i));
43         s += QString("           Type: & %1\\\\\n").arg(typeToString(getParType(i)));
44         s += QString("       Optional: &  ");
45         isParOptional(i) ? s += "yes\\\\\n" : s += "No\\\\\n";
46     }
47     s += "\\end{tabular}\n";
48     return s;
49 }
50
51 void Command::addPar(ParameterType t, bool opt, const QString &c)
52 {
53     parTypes.append(t);
54     parOpts.append(opt);
55     parComments.append(c);
56 }
57
58 int Command::parCount() { return parTypes.count(); }
59
60 Command::ParameterType Command::getParType(int n)
61 {
62     if (n >= 0 && n < parTypes.count()) {
63         return parTypes.at(n);
64     }
65     qDebug() << "Command::getParType n out of range";
66     return Undefined;
67 }
68
69 QString Command::typeToString(const ParameterType &type)
70 {
71     switch (type) {
72     case String:
73         return "String";
74     case Int:
75         return "Int";
76     case Double:
77         return "Double";
78     case Color:
79         return "Color";
80     case Bool:
81         return "Bool";
82     case Void:
83         return "Void";
84     case Undefined:
85         return "Undefined";
86     default:
87         return "not defined in class Command.";
88     }
89 }
90
91 Command::SelectionType Command::getSelectionType() { return selectionType; }
92
93 QString Command::getSelectionTypeName()
94 {
95     switch (getSelectionType()) {
96     case Any:
97         return "Any";
98     case TreeItem:
99         return "TreeItem";
100     case Branch:
101         return "Branch";
102     case BranchLike:
103         return "BranchLike";
104     case Image:
105         return "Image";
106     case BranchOrImage:
107         return "BranchOrImage";
108     case XLink:
109         return "XLink";
110     default:
111         return "Undefined";
112     }
113 }
114
115 bool Command::isParOptional(int n)
116 {
117     if (n >= 0 && n < parTypes.count()) {
118         return parOpts.at(n);
119     }
120     qDebug() << "Command::isParOpt n out of range";
121     return false;
122 }
123
124 QString Command::getParComment(int n)
125 {
126     if (n >= 0 && n < parTypes.count()) {
127         return parComments.at(n);
128     }
129     qDebug() << "Command::getParComment n out of range";
130     return QString();
131 }