version 1.116, 2007/02/02 15:51:19
|
version 1.117, 2007/02/05 12:23:13
|
Line 465 ThotBool UseToBeCreated (NotifyElement *
|
Line 465 ThotBool UseToBeCreated (NotifyElement *
|
printf("UseToBeCreated\n"); |
printf("UseToBeCreated\n"); |
#endif /* AMAYA_DEBUG */ |
#endif /* AMAYA_DEBUG */ |
|
|
/* is there a limit to the number of elements in the xt:repeat ? */ |
/** TODO is there a limit to the number of elements in the xt:repeat ? */ |
/* @@@@@ */ |
|
#endif /* TEMPLATES */ |
#endif /* TEMPLATES */ |
return FALSE; /* let Thot perform normal operation */ |
return FALSE; /* let Thot perform normal operation */ |
} |
} |
Line 479 ThotBool UseToBeCreated (NotifyElement *
|
Line 479 ThotBool UseToBeCreated (NotifyElement *
|
void UseCreated (NotifyElement *event) |
void UseCreated (NotifyElement *event) |
{ |
{ |
#ifdef TEMPLATES |
#ifdef TEMPLATES |
Document doc = event->document; |
Document doc = event->document; |
Element el = event->element; |
Element el = event->element; |
XTigerTemplate t; |
Element parent; |
|
Element first; |
|
ElementType parentType; |
|
XTigerTemplate t; |
|
SSchema templateSSchema; |
|
char* types; |
|
|
if (!TtaGetDocumentAccessMode(doc)) |
if (!TtaGetDocumentAccessMode(doc)) |
return; |
return; |
|
|
Line 490 void UseCreated (NotifyElement *event)
|
Line 495 void UseCreated (NotifyElement *event)
|
/* this Use element has already some content. It has already been |
/* this Use element has already some content. It has already been |
instanciated */ |
instanciated */ |
return; |
return; |
|
|
t = (XTigerTemplate) Dictionary_Get (Templates_Dic, DocumentMeta[doc]->template_url); |
t = (XTigerTemplate) Dictionary_Get (Templates_Dic, DocumentMeta[doc]->template_url); |
if (!t) |
if (!t) |
return; // no template ?!?! |
return; // no template ?!?! |
|
|
|
templateSSchema = TtaGetSSchema (TEMPLATE_SSHEMA_NAME, doc); |
|
parent = TtaGetParent(el); |
|
parentType = TtaGetElementType(parent); |
|
|
|
if(parentType.ElSSchema==templateSSchema && parentType.ElTypeNum==Template_EL_repeat) |
|
{ |
|
first = TtaGetFirstChild(parent); |
|
if(first) |
|
{ |
|
types = GetAttributeStringValueFromNum(first, Template_ATTR_types, NULL); |
|
if(types) |
|
{ |
|
SetAttributeStringValueWithUndo(el, Template_ATTR_types, types); |
|
TtaFreeMemory(types); |
|
} |
|
} |
|
} |
|
|
InstantiateUse (t, el, doc, TRUE); |
InstantiateUse (t, el, doc, TRUE); |
#endif /* TEMPLATES */ |
#endif /* TEMPLATES */ |
} |
} |
Line 693 Element Template_InsertRepeatChild(Docum
|
Line 717 Element Template_InsertRepeatChild(Docum
|
@param decl Template declaration of the element to insert |
@param decl Template declaration of the element to insert |
@return The inserted element |
@return The inserted element |
----------------------------------------------------------------------*/ |
----------------------------------------------------------------------*/ |
void Template_InsertBagChild(Document doc, Element el, Declaration decl) |
Element Template_InsertBagChild(Document doc, Element el, Declaration decl) |
{ |
{ |
#ifdef TEMPLATES |
#ifdef TEMPLATES |
Element sel; |
Element sel; |
Line 701 void Template_InsertBagChild(Document do
|
Line 725 void Template_InsertBagChild(Document do
|
int start, end; |
int start, end; |
|
|
if (!TtaGetDocumentAccessMode(doc) || !decl) |
if (!TtaGetDocumentAccessMode(doc) || !decl) |
return; |
return NULL; |
|
|
TtaGiveFirstSelectedElement(doc, &sel, &start, &end); |
TtaGiveFirstSelectedElement(doc, &sel, &start, &end); |
|
|
|
|
if (TtaIsAncestor(sel, el)) |
if (TtaIsAncestor(sel, el)) |
{ |
{ |
newElType.ElSSchema = TtaGetSSchema (TEMPLATE_SSHEMA_NAME, doc); |
newElType.ElSSchema = TtaGetSSchema (TEMPLATE_SSHEMA_NAME, doc); |
Line 715 void Template_InsertBagChild(Document do
|
Line 738 void Template_InsertBagChild(Document do
|
newElType.ElTypeNum = Template_EL_useSimple; |
newElType.ElTypeNum = Template_EL_useSimple; |
|
|
TtaInsertElement(newElType, doc); |
TtaInsertElement(newElType, doc); |
|
|
TtaGiveFirstSelectedElement(doc, &sel, &start, &end); |
TtaGiveFirstSelectedElement(doc, &sel, &start, &end); |
if(sel) |
if(sel) |
{ |
{ |
selType = TtaGetElementType(sel); |
selType = TtaGetElementType(sel); |
|
|
|
TtaUnselect(doc); |
|
|
if(selType.ElSSchema==newElType.ElSSchema && selType.ElTypeNum==Template_EL_useSimple) |
if(selType.ElSSchema==newElType.ElSSchema && selType.ElTypeNum==Template_EL_useSimple) |
{ |
{ |
|
SetAttributeStringValueWithUndo(sel, Template_ATTR_types, decl->name); |
|
SetAttributeStringValueWithUndo(sel, Template_ATTR_title, decl->name); |
Template_InsertUseChildren(doc, sel, decl); |
Template_InsertUseChildren(doc, sel, decl); |
} |
} |
|
|
|
return sel; |
} |
} |
// TODO : here here here |
|
|
|
} |
} |
#endif /* TEMPLATES */ |
#endif /* TEMPLATES */ |
|
return NULL; |
} |
} |
|
|
|
|
Line 888 ThotBool UseButtonClicked (NotifyElement
|
Line 917 ThotBool UseButtonClicked (NotifyElement
|
Element el = event->element; |
Element el = event->element; |
Element child; |
Element child; |
ElementType elType; |
ElementType elType; |
|
Attribute attr; |
XTigerTemplate t; |
XTigerTemplate t; |
Declaration decl; |
Declaration decl; |
Element firstEl; |
Element firstEl; |
Line 945 ThotBool UseButtonClicked (NotifyElement
|
Line 975 ThotBool UseButtonClicked (NotifyElement
|
TtaChangeTypeOfElement(el, doc, Template_EL_useSimple); |
TtaChangeTypeOfElement(el, doc, Template_EL_useSimple); |
TtaRegisterElementTypeChange(el, Template_EL_useEl, doc); |
TtaRegisterElementTypeChange(el, Template_EL_useEl, doc); |
|
|
|
/* xt:currentType attribute.*/ |
|
SetAttributeStringValueWithUndo(el, Template_ATTR_currentType, result); |
|
|
/* Finish insertion. */ |
/* Finish insertion. */ |
TtaCloseUndoSequence(doc); |
TtaCloseUndoSequence(doc); |
TtaSetDocumentModified (doc); |
TtaSetDocumentModified (doc); |
Line 1300 ThotBool TemplateElementWillBeDeleted (N
|
Line 1333 ThotBool TemplateElementWillBeDeleted (N
|
Element elem = event->element; |
Element elem = event->element; |
Element xtElem, parent; |
Element xtElem, parent; |
Element sibling; |
Element sibling; |
ElementType xtType; |
ElementType xtType, elType; |
char* type; |
char* type; |
Declaration dec; |
Declaration dec; |
SSchema templateSSchema; |
SSchema templateSSchema; |
Line 1312 ThotBool TemplateElementWillBeDeleted (N
|
Line 1345 ThotBool TemplateElementWillBeDeleted (N
|
if (!TtaGetDocumentAccessMode(event->document)) |
if (!TtaGetDocumentAccessMode(event->document)) |
return TRUE; |
return TRUE; |
|
|
templateSSchema = TtaGetSSchema ("Template", event->document); |
templateSSchema = TtaGetSSchema (TEMPLATE_SSHEMA_NAME, event->document); |
if (templateSSchema == NULL) |
if (templateSSchema == NULL) |
return FALSE; // let Thot do the job |
return FALSE; // let Thot do the job |
|
|
|
#ifdef AMAYA_DEBUG |
|
elType = TtaGetElementType(elem); |
|
printf("TemplateElementWillBeDeleted %s:%s:%d\n", TtaGetSSchemaName(elType.ElSSchema), TtaGetElementTypeName(elType), elType.ElTypeNum); |
|
#endif /* AMAYA_DEBUG */ |
|
|
xtElem = GetFirstTemplateParentElement(elem); |
xtElem = GetFirstTemplateParentElement(elem); |
if (xtElem) |
if (xtElem) |
{ |
{ |
xtType = TtaGetElementType(xtElem); |
xtType = TtaGetElementType(xtElem); |
|
|
|
#ifdef AMAYA_DEBUG |
|
printf(" xt: %s:%s:%d\n", TtaGetSSchemaName(xtType.ElSSchema), TtaGetElementTypeName(xtType), xtType.ElTypeNum); |
|
#endif /* AMAYA_DEBUG */ |
|
|
t = (XTigerTemplate) Dictionary_Get (Templates_Dic, DocumentMeta[doc]->template_url); |
t = (XTigerTemplate) Dictionary_Get (Templates_Dic, DocumentMeta[doc]->template_url); |
|
|
if (xtType.ElTypeNum==Template_EL_bag) |
if (xtType.ElTypeNum==Template_EL_bag) |
return FALSE; // xt:bag always allow remove children. |
{ |
|
elType = TtaGetElementType(elem); |
|
if(elType.ElSSchema==templateSSchema && |
|
(elType.ElTypeNum==Template_EL_useSimple || elType.ElTypeNum==Template_EL_useEl)) |
|
{ |
|
// Remove element manually. |
|
TtaOpenUndoSequence(doc, elem, elem, 0, 0); |
|
TtaRegisterElementDelete(elem, doc); |
|
TtaDeleteTree(elem, doc); |
|
TtaCloseUndoSequence(doc); |
|
return TRUE; |
|
} |
|
else |
|
return FALSE; // xt:bag always allow remove children. |
|
} |
else if (xtType.ElTypeNum==Template_EL_useSimple || xtType.ElTypeNum==Template_EL_useEl) |
else if (xtType.ElTypeNum==Template_EL_useSimple || xtType.ElTypeNum==Template_EL_useEl) |
{ |
{ |
parent = TtaGetParent(elem); |
parent = TtaGetParent(elem); |
if (xtElem!=parent){ |
if (xtElem!=parent) |
type = GetAttributeStringValueFromNum(xtElem, Template_ATTR_currentType, NULL); |
{ |
dec = Template_GetDeclaration(t, type); |
type = GetAttributeStringValueFromNum(xtElem, Template_ATTR_currentType, NULL); |
TtaFreeMemory(type); |
dec = Template_GetDeclaration(t, type); |
if (dec->nature == XmlElementNat) |
TtaFreeMemory(type); |
return FALSE; // Can remove element only if in xt:use current type is base language element. |
|
else |
if (dec && dec->nature == XmlElementNat) |
return TRUE; |
return FALSE; // Can remove element only if in xt:use current type is base language element. |
|
else |
|
return TRUE; |
} |
} |
} |
} |
else if (xtType.ElTypeNum==Template_EL_repeat) |
else if (xtType.ElTypeNum==Template_EL_repeat) |