Annotation of Amaya/amaya/templates.c, revision 1.59

1.1       cvs         1: /*
                      2:  *
1.27      vatton      3:  *  COPYRIGHT INRIA and W3C, 1996-2005
1.1       cvs         4:  *  Please first read the full copyright statement in file COPYRIGHT.
                      5:  *
                      6:  */
1.14      cvs         7:  
1.1       cvs         8: /*
1.51      francesc    9:  * Authors: Francesc Campoy Flores
1.1       cvs        10:  *
                     11:  */
                     12: 
                     13: #define THOT_EXPORT extern
                     14: #include "amaya.h"
                     15: #include "document.h"
1.52      vatton     16: 
1.46      vatton     17: #ifdef TEMPLATES
                     18: #include "Template.h"
1.52      vatton     19: #include "templateDeclarations.h"
                     20: 
                     21: struct menuType
                     22: {
                     23:        char *label;
                     24:        int   type;
                     25: };
                     26: 
1.28      tollenae   27: #include "appdialogue_wx.h"
1.29      tollenae   28: #include "init_f.h"
1.46      vatton     29: #include "wxdialogapi_f.h"
1.54      vatton     30: #include "templatesStructure_f.h"
1.52      vatton     31: #endif /* TEMPLATES */
1.1       cvs        32: 
                     33: /*----------------------------------------------------------------------
1.51      francesc   34:   NewTemplate: Create the "new document from template" dialog
1.1       cvs        35:   ----------------------------------------------------------------------*/
1.18      cvs        36: void NewTemplate (Document doc, View view)
1.1       cvs        37: {
1.51      francesc   38: #ifdef TEMPLATES
1.52      vatton     39:   char *templateDir = TtaGetEnvString ("TEMPLATES_DIRECTORY");
                     40:   ThotBool created;
1.28      tollenae   41: 
1.52      vatton     42:   if (templates == NULL)
1.58      francesc   43:     InitializeTemplateEnvironment();
1.52      vatton     44:   created = CreateNewTemplateDocDlgWX(BaseDialog + OpenTemplate,
1.55      vatton     45:                                       TtaGetViewFrame (doc, view), doc,
1.52      vatton     46:                                       TtaGetMessage (AMAYA, AM_NEW_TEMPLATE),templateDir);
1.51      francesc   47:   
1.28      tollenae   48:   if (created)
1.25      vatton     49:     {
1.28      tollenae   50:       TtaSetDialoguePosition ();
                     51:       TtaShowDialogue (BaseDialog + OpenTemplate, TRUE);
1.25      vatton     52:     }
1.51      francesc   53: 
1.52      vatton     54: #endif /* TEMPLATES */
1.1       cvs        55: }
1.25      vatton     56: 
1.53      vatton     57: /*----------------------------------------------------------------------
                     58:   Load a template and create the instance file - update images and 
                     59:   stylesheets related to the template.
                     60:   ----------------------------------------------------------------------*/
                     61: int CreateInstanceOfTemplate (Document doc, char *templatename, char *docname,
                     62:                               DocumentType docType)
                     63: {
                     64: #ifdef TEMPLATES
                     65: 
1.57      francesc   66:        LoadTemplate(doc, templatename, docname, docType, TRUE);
1.53      vatton     67: #endif /* TEMPLATES */
1.57      francesc   68:        return 0;
1.53      vatton     69: }
                     70: 
1.51      francesc   71: #ifdef TEMPLATES
1.52      vatton     72: /*----------------------------------------------------------------------
                     73:   ----------------------------------------------------------------------*/
                     74: static void giveItems(char *text, int size, struct menuType **items, int *nbitems)
1.1       cvs        75: {
1.52      vatton     76:        ThotBool         inElement = TRUE;
                     77:   struct menuType *menu;
                     78:   char            *iter;
                     79:        char             temp[128];
                     80:   int              i;
                     81:        int              labelSize;
1.28      tollenae   82: 
1.52      vatton     83:        *nbitems = 1;
                     84:        for (i = 0; i < size; i++)
                     85:     {
                     86:       if (isEOSorWhiteSpace (text[i]))
                     87:         {
                     88:           if (inElement)
                     89:             inElement = FALSE;
                     90:         }
                     91:       else if (!inElement)
                     92:         {
                     93:           inElement = TRUE;
                     94:           (*nbitems)++;
                     95:         }
                     96:     }
1.51      francesc   97: 
1.52      vatton     98:        menu = (struct menuType*) TtaGetMemory(sizeof(struct menuType)* *nbitems);
                     99:        iter = text;
                    100:        for (i = 0; i < *nbitems; i++)
                    101:     {          
                    102:       labelSize = 0;
                    103:       while (isEOSorWhiteSpace (*iter))
                    104:         iter++;
                    105: 
                    106:       while (!isEOSorWhiteSpace (*iter))
                    107:         {
                    108:           temp[labelSize++] = *iter;
                    109:           iter++;
                    110:         }
                    111: 
                    112:       temp[labelSize] = EOS;
                    113:       menu[i].label = (char *) TtaStrdup(temp);
                    114:       menu[i].type = SIMPLE_TYPE;
                    115:       *items = menu;
                    116:     }
1.28      tollenae  117: }
1.37      tollenae  118: 
1.52      vatton    119: /*----------------------------------------------------------------------
                    120:   ----------------------------------------------------------------------*/
                    121: static char *createMenuString (const struct menuType* items, const int nbItems)
                    122: {
                    123:   char *result, *iter;
                    124:        int   size = 0;
                    125:   int   i;
                    126: 
                    127:        for (i=0; i < nbItems; i++)
                    128:                size += 2 + strlen (items[i].label);
                    129: 
                    130:        result = (char *) TtaGetMemory(size);
                    131:        iter = result;
                    132:        for (i=0; i < nbItems; i++)
                    133:     {
                    134:       *iter = 'B';
                    135:       ++iter;
1.51      francesc  136:                
1.52      vatton    137:       strcpy (iter, items[i].label);
                    138:       iter += strlen (items[i].label)+1;
                    139:     }
1.51      francesc  140:        return result;
1.36      tollenae  141: }
1.29      tollenae  142: 
1.52      vatton    143: #endif /* TEMPLATES */
1.29      tollenae  144: 
1.46      vatton    145: /*----------------------------------------------------------------------
1.56      francesc  146:   ThotBool UseMenuClicked (Document doc) 
1.51      francesc  147:   Shows a menu with all the types that can be used in a use element.
1.46      vatton    148:   ----------------------------------------------------------------------*/
1.56      francesc  149: ThotBool UseMenuClicked (NotifyElement *event)
1.39      tollenae  150: {
1.43      tollenae  151: #ifdef TEMPLATES
1.52      vatton    152:        Document         doc = event->document;
                    153:        Element          el = TtaGetParent(event->element);
                    154:        ElementType      elt = TtaGetElementType(el);
                    155:        Attribute        at;
                    156:        AttributeType    att;
                    157:        int              nbitems, size;
                    158:        struct menuType *items;
                    159:   char            *types, *menuString;
1.51      francesc  160:        
                    161:        att.AttrSSchema = elt.ElSSchema;
                    162:        att.AttrTypeNum = Template_ATTR_types;
1.52      vatton    163:        at = TtaGetAttribute (el, att);
1.51      francesc  164: 
1.52      vatton    165:        size = TtaGetTextAttributeLength (at);
                    166:        types = (char *) TtaGetMemory (size+1); 
                    167:        TtaGiveTextAttributeValue (at, types, &size);
1.39      tollenae  168: 
1.52      vatton    169:        giveItems (types, size, &items, &nbitems);
                    170:        menuString = createMenuString (items, nbitems);
1.46      vatton    171: 
1.51      francesc  172:        TtaNewScrollPopup (BaseDialog + OptionMenu, TtaGetViewFrame (doc, 1), NULL, 
1.52      vatton    173:                      nbitems, menuString , NULL, false, 'L');
1.46      vatton    174: 
1.51      francesc  175:        TtaFreeMemory (menuString);
                    176:        TtaFreeMemory (types);
1.29      tollenae  177: 
1.51      francesc  178:        TtaShowDialogue (BaseDialog + OptionMenu, FALSE);
                    179:        TtaWaitShowProcDialogue();
                    180:        TtaDestroyDialogue (BaseDialog + OptionMenu);
1.42      tollenae  181: 
1.57      francesc  182: #endif /* TEMPLATES */
1.51      francesc  183:        //ReturnOption
1.52      vatton    184:        return TRUE;
1.42      tollenae  185: }
1.51      francesc  186: 
1.56      francesc  187: /*----------------------------------------------------------------------
                    188:   ThotBool BagMenuClicked (Document doc) 
                    189:   Shows a menu with all the types that can be used in a use element.
                    190:   ----------------------------------------------------------------------*/
                    191: ThotBool BagMenuClicked (NotifyElement *event)
                    192: {
                    193: #ifdef TEMPLATES
1.57      francesc  194: #endif /* TEMPLATES */
1.56      francesc  195:        return TRUE;
                    196: }

Webmaster