29using namespace KoMacro;
37 class Context::Private
44 TDESharedPtr<Macro> macro;
50 TQValueList<TDESharedPtr<MacroItem > > items;
56 TDESharedPtr<MacroItem> macroitem;
62 TQMap<TQString, TDESharedPtr<Variable > > variables;
71 explicit Private(TDESharedPtr<Macro> m)
89 , d( new Private(
macro) )
103 return d->variables.contains(name);
110 if (d->variables.contains(name)) {
112 return d->variables[name];
115 if(d->macroitem.data()) {
116 TDESharedPtr<Variable> v = d->macroitem->variable(name,
true);
122 throw Exception(TQString(
"Variable name='%1' does not exist.").arg(name));
135 kdDebug() << TQString(
"KoMacro::Context::setVariable name='%1' variable='%2'").arg(name).arg(
variable->toString()) << endl;
137 d->variables.replace(name,
variable);
155 return d->exception != 0;
165void Context::activate(TQValueList<TDESharedPtr<MacroItem > >::ConstIterator it)
168 kdDebug() <<
"Context::activate()" << endl;
172 TQValueList<TDESharedPtr<MacroItem > >::ConstIterator end(d->items.constEnd());
174 for(;it != end; ++it) {
176 d->macroitem = TDESharedPtr<MacroItem>(*it);
178 if(! d->macroitem.data()) {
179 kdDebug() <<
"Context::activate() Skipping empty MacroItem" << endl;
184 TDESharedPtr<Action> action = d->macroitem->action();
186 if(! action.data()) {
187 kdDebug() <<
"Context::activate() Skipping MacroItem with no action" << endl;
193 action->activate(
this);
196 catch(Exception& e) {
198 d->exception =
new Exception(e);
201 d->exception->addTraceMessage( TQString(
"macro=%1").arg(d->macro->name()) );
203 d->exception->addTraceMessage( TQString(
"action=%1").arg(action->name()) );
205 TQStringList
variables = action->variableNames();
207 TDESharedPtr<Variable> v = d->macroitem->variable(*vit,
true);
208 d->exception->addTraceMessage( TQString(
"%1=%2").arg(*vit).arg(v->toString()) );
216 d->macroitem = TDESharedPtr<MacroItem>(0);
220void Context::activate(TDESharedPtr<Context> context)
223 delete d->exception; d->exception = 0;
225 if(context->hadException()) {
228 d->exception =
new Exception( *context->exception() );
235 Variable::Map::ConstIterator it, end(
variables.constEnd() );
236 for( it =
variables.constBegin(); it != end; ++it)
240 activate(d->items.constBegin());
248 delete d->exception; d->exception = 0;
255 TQValueList<TDESharedPtr<MacroItem > >::ConstIterator it = d->items.find(d->macroitem);
256 if (it != d->items.constEnd()) {
261#include "context.moc"
Variable::Map variables() const
TDESharedPtr< Variable > variable(const TQString &name) const
virtual void activateNext()
This slot continues execution.
bool hadException() const
TDESharedPtr< Macro > macro() const
Exception * exception() const
bool hasVariable(const TQString &name) const
TDESharedPtr< MacroItem > macroItem() const
Context(TDESharedPtr< Macro > macro)
Constructor.
void setVariable(const TQString &name, TDESharedPtr< Variable > variable)
Set the variable variable defined with name name .
TQMap< TQString, TDESharedPtr< Variable > > Map
A map of variables.