21#include "formscript.h"
22#include "kexievents.h"
25#include "objecttree.h"
27#include "main/scriptcontainer.h"
32 TQDomDocument domDoc = parentNode.ownerDocument();
35 if(!formScript->
getCode().isEmpty()) {
36 TQDomElement script = domDoc.createElement(
"script");
37 script.setAttribute(
"language", formScript->scriptContainer()->getInterpreterName());
38 parentNode.appendChild(script);
39 TQDomText scriptCode = domDoc.createTextNode(formScript->
getCode());
40 script.appendChild(scriptCode);
44 if(!formScript->eventList()->isEmpty())
45 saveEventList(formScript->eventList(), parentNode);
52 TQDomElement script = parentNode.namedItem(
"script").toElement();
53 TQDomElement events = parentNode.namedItem(
"events").toElement();
57 if(!script.isNull()) {
58 formScript->scriptContainer()->setInterpreterName(script.attribute(
"language"));
59 formScript->
setCode(script.text());
63 if(!events.isNull()) {
64 for(TQDomNode n = events.firstChild(); !n.isNull(); n = n.nextSibling())
65 loadEvent(n, formScript->eventList(), form);
73 EventList *l = formScript->eventList()->allEventsForObject(widget);
74 saveEventList(l, node);
79ScriptIO::saveEvent(
Event *event, TQDomNode &parentNode)
84 TQDomDocument domDoc = parentNode.ownerDocument();
85 TQDomElement eventNode = domDoc.createElement(
"event");
86 eventNode.setAttribute(
"type", event->
type());
87 parentNode.appendChild(eventNode);
89 switch(event->
type()) {
91 TQDomElement sender = domDoc.createElement(
"sender");
92 eventNode.appendChild(sender);
93 TQDomText senderText = domDoc.createTextNode(event->sender() ? event->sender()->name() :
"");
94 sender.appendChild(senderText);
96 TQDomElement signal = domDoc.createElement(
"signal");
97 eventNode.appendChild(signal);
98 TQDomText signalText = domDoc.createTextNode(event->signal());
99 signal.appendChild(signalText);
101 TQDomElement receiver = domDoc.createElement(
"receiver");
102 eventNode.appendChild(receiver);
103 TQDomText receiverText = domDoc.createTextNode(event->receiver() ? event->receiver()->name() :
"");
104 receiver.appendChild(receiverText);
106 TQDomElement slot = domDoc.createElement(
"slot");
107 eventNode.appendChild(slot);
108 TQDomText slotText = domDoc.createTextNode(event->slot());
109 slot.appendChild(slotText);
113 case Event::UserFunction: {
114 TQDomElement sender = domDoc.createElement(
"sender");
115 eventNode.appendChild(sender);
116 TQDomText senderText = domDoc.createTextNode(event->sender() ? event->sender()->name() :
"");
117 sender.appendChild(senderText);
119 TQDomElement signal = domDoc.createElement(
"signal");
120 eventNode.appendChild(signal);
121 TQDomText signalText = domDoc.createTextNode(event->signal());
122 signal.appendChild(signalText);
124 TQDomElement function = domDoc.createElement(
"function");
125 eventNode.appendChild(function);
126 TQDomText functionText = domDoc.createTextNode(event->slot());
127 function.appendChild(functionText);
141ScriptIO::saveEventList(EventList *list, TQDomNode &parentNode)
143 if(!list || list->isEmpty())
146 TQDomDocument domDoc = parentNode.ownerDocument();
147 TQDomElement events = domDoc.createElement(
"events");
148 parentNode.appendChild(events);
150 TQValueListConstIterator<Event*> endIt = list->constEnd();
151 for(TQValueListConstIterator<Event*> it = list->constBegin(); it != endIt; ++it)
152 saveEvent((*it), events);
156ScriptIO::loadEvent(TQDomNode &node, EventList *list,
Form *form)
158 int type = node.toElement().attribute(
"type").toInt();
159 Event *
event =
new Event();
163 ObjectTreeItem *sender = form->
objectTree()->
lookup(node.namedItem(
"sender").toElement().text());
164 event->setSender(sender ? sender->widget() : 0);
165 event->setSignal(node.namedItem(
"signal").toElement().text().local8Bit());
166 ObjectTreeItem *receiver = form->
objectTree()->
lookup(node.namedItem(
"receiver").toElement().text());
167 event->setReceiver(receiver ? receiver->widget() : 0);
168 event->setSlot(node.namedItem(
"slot").toElement().text().local8Bit());
169 event->setType(Event::Slot);
173 case Event::UserFunction: {
174 ObjectTreeItem *sender = form->
objectTree()->
lookup(node.namedItem(
"sender").toElement().text());
175 event->setSender(sender ? sender->widget() : 0);
176 event->setSignal(node.namedItem(
"signal").toElement().text().local8Bit());
177 event->setSlot(node.namedItem(
"function").toElement().text().local8Bit());
178 event->setType(Event::UserFunction);
184 list->addEvent(event);
A simple class to store events.
static bool saveFormEvents(TQDomNode &parentNode, FormScript *script)
static bool saveAllEventsForWidget(TQObject *widget, FormScript *fscript, TQDomNode &node)
static bool loadFormEvents(TQDomNode &parentNode, Form *form, ScriptManager *manager)