diff --git a/src/columns/ColProject.cpp b/src/columns/ColProject.cpp index d5d2e452e..4d85dbb6e 100644 --- a/src/columns/ColProject.cpp +++ b/src/columns/ColProject.cpp @@ -27,12 +27,18 @@ #include #include #include +#include +#include +#include +#include +#include #include #include #include #include extern Context context; +extern Task& contextTask; //////////////////////////////////////////////////////////////////////////////// ColumnProject::ColumnProject () @@ -107,3 +113,32 @@ void ColumnProject::render ( } //////////////////////////////////////////////////////////////////////////////// +void ColumnProject::modify (Task& task, const std::string& value) +{ + std::string label = " MODIFICATION "; + + // Only if it's a DOM ref, eval it first. + Lexer lexer (value); + std::string domRef; + Lexer::Type type; + if (lexer.token (domRef, type) && + type == Lexer::Type::dom) + { + Eval e; + e.addSource (domSource); + e.addSource (namedDates); + contextTask = task; + + Variant v; + e.evaluateInfixExpression (value, v); + task.set (_name, (std::string) v); + context.debug (label + _name + " <-- '" + (std::string) v + "' <-- '" + value + "'"); + } + else + { + task.set (_name, value); + context.debug (label + _name + " <-- '" + value + "'"); + } +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/columns/ColProject.h b/src/columns/ColProject.h index fb69be4bf..87aace25f 100644 --- a/src/columns/ColProject.h +++ b/src/columns/ColProject.h @@ -35,6 +35,7 @@ public: ColumnProject (); void measure (Task&, unsigned int&, unsigned int&); void render (std::vector &, Task&, int, Color&); + void modify (Task&, const std::string&); private: bool _hyphenate;