Diff for /Amaya/amaya/templates.c between versions 1.219 and 1.220

version 1.219, 2008/11/13 08:54:54 version 1.220, 2008/11/13 11:30:37
Line 834  static char* QueryStringFromMenu (Docume Line 834  static char* QueryStringFromMenu (Docume
   TtaWaitShowProcDialogue ();    TtaWaitShowProcDialogue ();
   TtaDestroyDialogue (BaseDialog + OptionMenu);    TtaDestroyDialogue (BaseDialog + OptionMenu);
   
   if (ReturnOption!=-1)    if (ReturnOption != -1)
     {      result = TtaStrdup(itemlist[ReturnOption].label);
       result = TtaStrdup(itemlist[ReturnOption].label);  
     }  
   
   TtaFreeMemory (itemlist);    TtaFreeMemory (itemlist);
   return result;    return result;
Line 856  char *Template_GetListTypes (XTigerTempl Line 854  char *Template_GetListTypes (XTigerTempl
   
   types = GetAttributeStringValueFromNum (el, Template_ATTR_types, NULL);    types = GetAttributeStringValueFromNum (el, Template_ATTR_types, NULL);
   if (types)    if (types)
     listtypes = Template_ExpandTypes (t, types, el, FALSE);      {
         listtypes = Template_ExpandTypes (t, types, el, FALSE);
         TtaFreeMemory (types);
       }
   return listtypes;    return listtypes;
 #endif /* TEMPLATES */  #endif /* TEMPLATES */
 }  }
Line 1340  void Template_FillFromDocument (Document Line 1341  void Template_FillFromDocument (Document
 #endif  #endif
       SetTemplateDocument (t, doc);        SetTemplateDocument (t, doc);
       Template_PrepareTemplate(t, doc);        Template_PrepareTemplate(t, doc);
       if (IsTemplateInstanceDocument(doc))        if (IsTemplateInstanceDocument (doc))
         {          {
 #ifdef AMAYA_DEBUG  #ifdef AMAYA_DEBUG
           printf("  > instance\n");            printf("  > instance\n");
Line 2327  Element Template_CreateRepeatFromSelecti Line 2328  Element Template_CreateRepeatFromSelecti
 #ifdef TEMPLATES  #ifdef TEMPLATES
   ThotBool    oldStructureChecking;    ThotBool    oldStructureChecking;
   DisplayMode dispMode;    DisplayMode dispMode;
   Element     selElem, selElem2, parent, parent2;    Element     selElem, selElem2, parent, parent2, rep = NULL, use;
   ElementType selType, selType2;    ElementType selType, selType2, repType;
   int         firstChar, lastChar, firstChar2, lastChar2;    int         firstChar, lastChar, firstChar2, lastChar2;
   SSchema     sstempl = TtaGetSSchema ("Template", doc);    SSchema     sstempl = TtaGetSSchema ("Template", doc);
   const char *title = TtaGetMessage (AMAYA, AM_TEMPLATE_REPEATCOMP);    const char *title, *label;
   const char *label = TtaGetMessage (AMAYA, AM_TEMPLATE_REPEATLABEL);    char        buffer[128], *types;
   char        buffer[128];  
   
   ElementType repType;  
   Element     rep, use;  
   
   if (!TtaGetDocumentAccessMode(doc))    if (!TtaGetDocumentAccessMode(doc))
     return NULL;      return NULL;
Line 2345  Element Template_CreateRepeatFromSelecti Line 2342  Element Template_CreateRepeatFromSelecti
       IsTemplateDocument(doc) && !IsTemplateInstanceDocument(doc))        IsTemplateDocument(doc) && !IsTemplateInstanceDocument(doc))
     {      {
       TtaGiveFirstSelectedElement(doc, &selElem, &firstChar, &lastChar);        TtaGiveFirstSelectedElement(doc, &selElem, &firstChar, &lastChar);
         selType =  TtaGetElementType(selElem);
       TtaGiveLastSelectedElement(doc, &selElem2, &firstChar2, &lastChar2);        TtaGiveLastSelectedElement(doc, &selElem2, &firstChar2, &lastChar2);
         selType2 =  TtaGetElementType(selElem2);
       if (selElem && selElem2)        repType.ElSSchema = sstempl;
         repType.ElTypeNum = Template_EL_repeat;
         parent  = TtaGetParent(selElem);
         parent2  = TtaGetParent(selElem2);
         if (selElem && selElem2 && firstChar == 0 && firstChar2 == 0 &&
             parent == parent2)
         {          {
           // request the element label            oldStructureChecking = TtaGetStructureChecking (doc);
           QueryStringFromUser(label, title, buffer, 127);            if (selElem == selElem2 && selType.ElSSchema == sstempl &&
           if (buffer[0] == EOS)                (selType.ElTypeNum == Template_EL_useEl ||
             return NULL;                 selType.ElTypeNum == Template_EL_useSimple))
               use = selElem;
           selType =  TtaGetElementType(selElem);            else
           selType2 =  TtaGetElementType(selElem2);              // create first the use element
           repType.ElSSchema = sstempl;              use = Template_CreateUseFromSelection (doc, view, createComp);
           repType.ElTypeNum = Template_EL_repeat;            if (use)
           parent  = TtaGetParent(selElem);              {
           parent2 = TtaGetParent(selElem2);                // avoid to repeat a use string
           if (firstChar==0 && firstChar2==0 && parent == parent2 && buffer[0]!=0)                types = GetAttributeStringValueFromNum (use, Template_ATTR_types, NULL);
             {                if (types && strcmp (types, "string"))
               dispMode = TtaGetDisplayMode (doc);  
               if (dispMode == DisplayImmediately)  
                 TtaSetDisplayMode (doc, DeferredDisplay);  
               oldStructureChecking = TtaGetStructureChecking (doc);  
               TtaSetStructureChecking (FALSE, doc);  
   
               if (selElem==selElem2 && selType.ElSSchema==sstempl &&  
                   (selType.ElTypeNum==Template_EL_useEl ||  
                    selType.ElTypeNum==Template_EL_useSimple))  
                 use = selElem;  
               else  
                 use = Template_CreateUseFromSelection (doc, view, createComp);  
               if (use)  
                 {                  {
                   TtaExtendUndoSequence(doc);                    TtaFreeMemory (types);
                     // request the element label
                     title = TtaGetMessage (AMAYA, AM_TEMPLATE_REPEATCOMP);
                     label = TtaGetMessage (AMAYA, AM_TEMPLATE_REPEATLABEL);
                     QueryStringFromUser(label, title, buffer, 127);
                     if (buffer[0] == EOS)
                       return NULL;
                     if (use == selElem)
                       TtaOpenUndoSequence (doc, NULL, NULL, 0, 0);
                     else
                       TtaExtendUndoSequence(doc);
                     dispMode = TtaGetDisplayMode (doc);
                     if (dispMode == DisplayImmediately)
                       TtaSetDisplayMode (doc, DeferredDisplay);
                     TtaSetStructureChecking (FALSE, doc);
                     // create the repeat element
                   rep = TtaNewElement(doc, repType);                    rep = TtaNewElement(doc, repType);
   
                   TtaInsertSibling(rep, use, FALSE, doc);                    TtaInsertSibling(rep, use, FALSE, doc);
                   SetAttributeStringValue(rep, Template_ATTR_title, buffer);                    SetAttributeStringValue (rep, Template_ATTR_title, buffer);
                   TtaRegisterElementCreate(rep, doc);                    TtaRegisterElementCreate (rep, doc);
                     // move the use element
                   TtaRegisterElementDelete (use, doc);                    TtaRegisterElementDelete (use, doc);
                   TtaRemoveTree(use, doc);                    TtaRemoveTree(use, doc);
                     TtaInsertFirstChild (&use, rep, doc);
                   TtaInsertFirstChild(&use, rep, doc);                    TtaRegisterElementCreate (use, doc);
                   TtaRegisterElementCreate(use, doc);                    TtaSetDisplayMode (doc, dispMode);
                     TtaSelectElement (doc, use);
                   TtaSelectElement(doc, use);                    TtaCloseUndoSequence (doc);
                   TtaCloseUndoSequence(doc);                    TtaSetStructureChecking (oldStructureChecking, doc);
                     // register document modification
                     TtaSetDocumentModified (doc);
                 }                  }
   
               TtaSetStructureChecking (oldStructureChecking, doc);  
               TtaSetDisplayMode (doc, dispMode);  
               return rep;  
             }              }
             return rep;
           }
         else
           {
             TtaDisplaySimpleMessage (CONFIRM, AMAYA, AM_INVALID_SELECTION);
             return NULL;
         }          }
     }      }
 #endif /* TEMPLATES */  #endif /* TEMPLATES */
Line 2706  Element Template_CreateUseFromSelection Line 2713  Element Template_CreateUseFromSelection
                   title = TtaGetMessage (AMAYA, AM_TEMPLATE_USELABEL);                    title = TtaGetMessage (AMAYA, AM_TEMPLATE_USELABEL);
                   label = TtaGetMessage (AMAYA, AM_NAME);                    label = TtaGetMessage (AMAYA, AM_NAME);
                   QueryStringFromUser (label, title, buffer, 127);                    QueryStringFromUser (label, title, buffer, 127);
                     if (buffer[0] != EOS)
                     {                      {
                       // Create a xt:use around the selection                        // Create a xt:use around the selection
                       useType.ElSSchema = sstempl;                        useType.ElSSchema = sstempl;
Line 2748  Element Template_CreateUseFromSelection Line 2756  Element Template_CreateUseFromSelection
                           SetAttributeStringValue (use, Template_ATTR_types, "string");                            SetAttributeStringValue (use, Template_ATTR_types, "string");
                           SetAttributeStringValue (use, Template_ATTR_currentType, "string");                            SetAttributeStringValue (use, Template_ATTR_currentType, "string");
                         }                          }
                       if (buffer[0] != EOS)                        SetAttributeStringValue (use, Template_ATTR_title, buffer);
                         SetAttributeStringValue (use, Template_ATTR_title, buffer);  
                       TtaRegisterElementCreate (use, doc);                        TtaRegisterElementCreate (use, doc);
                       TtaSelectElement (doc, use);                        TtaSelectElement (doc, use);
                       // register document modification                        // register document modification
Line 2820  Element Template_CreateComponentFromSele Line 2827  Element Template_CreateComponentFromSele
           if (head && firstChar == 0 && firstChar2 == 0 && parent == parent2)            if (head && firstChar == 0 && firstChar2 == 0 && parent == parent2)
             {              {
               dispMode = TtaGetDisplayMode (doc);                dispMode = TtaGetDisplayMode (doc);
               if (dispMode == DisplayImmediately)  
                 TtaSetDisplayMode (doc, DeferredDisplay);  
               oldStructureChecking = TtaGetStructureChecking (doc);                oldStructureChecking = TtaGetStructureChecking (doc);
               TtaSetStructureChecking (FALSE, doc);                TtaSetStructureChecking (FALSE, doc);
               child = TtaGetLastChild(head);                child = TtaGetLastChild(head);
Line 2833  Element Template_CreateComponentFromSele Line 2838  Element Template_CreateComponentFromSele
                   TtaOpenUndoSequence (doc, NULL, NULL, 0, 0);                    TtaOpenUndoSequence (doc, NULL, NULL, 0, 0);
                 }                  }
   
                 if (dispMode == DisplayImmediately)
                   TtaSetDisplayMode (doc, DeferredDisplay);
               // Create the component                // Create the component
               comp = TtaNewElement(doc, compType);                comp = TtaNewElement(doc, compType);
               if (child)                if (child)
Line 2882  ThotBool TemplateComponentWillBeDeleted Line 2889  ThotBool TemplateComponentWillBeDeleted
 {  {
 #ifdef TEMPLATES  #ifdef TEMPLATES
   XTigerTemplate t = GetXTigerDocTemplate(event->document);    XTigerTemplate t = GetXTigerDocTemplate(event->document);
   char* elemName = GetAttributeStringValueFromNum(event->element, Template_ATTR_name, NULL);    char          *elemName;
   
   if (Template_IsUsedComponent(t, event->document, elemName))    elemName = GetAttributeStringValueFromNum(event->element, Template_ATTR_name, NULL);
     if (Template_IsUsedComponent (t, event->document, elemName))
     {      {
       TtaDisplaySimpleMessage (CONFIRM, AMAYA, AM_TEMPLATE_USEDCOMP_CANTREMOVE);        TtaDisplaySimpleMessage (CONFIRM, AMAYA, AM_TEMPLATE_USEDCOMP_CANTREMOVE);
       return TRUE;        return TRUE;

Removed from v.1.219  
changed lines
  Added in v.1.220


Webmaster