Return to templates.c CVS log | Up to [Public] / Amaya / amaya |
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: }