home *** CD-ROM | disk | FTP | other *** search
- /*
- ** latinum.dito 2.0
- ** (C) Dirk Holtwick, 1996
- */
-
- /// HEADER
- #define LOC(a) GetDITO_latinumString(m_ ## a)
- #define OPENCAT OpenDITO_latinumCatalog(NULL,NULL)
- #define CLOSECAT CloseDITO_latinumCatalog()
-
- #define IPIC0 "\033I[6:38]"
- #define IPIC1 "\033I[6:34]"
- #define IPIC2 "\033I[6:39]"
-
- struct DITO_InputData {
- Object
- *obj, // First pointer has to be the pointer
- // to the whole created object
- *remark, // String
- *genitiv, // String
- *genus, // String
- *adj0, // String
- *adj1, // String
- *adj2, // String
- *verb0, // String
- *verb1, // String
- *verb2; // String
- };
-
- struct DITO_OutputData {
- Object
- *obj, // First Pointer points to created object
-
- *kind, // Text
- *info, // Floattext
- *grammar, // Group
- *weight, // Text
- *text1, // Text
- *text2; // Text
- };
- ///
-
- /// DITO_GetExtInfo
- char *Types[5];
-
- SAVEDS ASM struct DITO_ExtInfo *DITO_GetExtInfo(void)
- {
- static struct DITO_ExtInfo info;
-
- Types[0] = LOC(part0);
- Types[1] = LOC(part1);
- Types[2] = LOC(part2);
- Types[3] = LOC(part3);
-
- info.Language = LOC(language);
- info.Author = AUTHOR;
- info.Version = VERSIONSTR;
- info.Date = __DATE__;
- info.Description = LOC(description);
-
- info.NumTypes = 4;
- info.Types = Types;
-
- return(&info);
- }
- ///
-
- /// DITO_CreateInput
- SAVEDS ASM struct DITO_InputData *DITO_CreateInput(REG(a0) Object *app)
- {
- struct DITO_InputData *data;
- static char *strtab[5], *gentab[5];
-
- strtab[0] = LOC(part0);
- strtab[1] = LOC(part1);
- strtab[2] = LOC(part2);
- strtab[3] = LOC(part3);
- strtab[4] = 0;
-
- gentab[0] = LOC(gen0);
- gentab[1] = LOC(gen1);
- gentab[2] = LOC(gen2);
- gentab[3] = "Commune"; //LOC(gen3);
- gentab[4] = 0;
-
- if(data = AllocVec(sizeof(struct DITO_InputData),0)){
-
- data->obj = RegisterObject,
-
- MUIA_CycleChain, 1,
- MUIA_ShortHelp, "AMIGA + t",
- MUIA_Register_Titles, strtab,
- MUIA_Frame, MUIV_Frame_Group,
-
- // Übriges
- // *******
- Child, VGroup,
- Child, LLabel(LOC(remark)),
- Child, data->remark = StringObject,
- MUIA_CycleChain, 1,
- MUIA_Frame, MUIV_Frame_String,
- MUIA_String_Format, MUIV_String_Format_Center,
- MUIA_String_AdvanceOnCR, TRUE,
- End,
- End,
-
- // Substantiv
- // **********
- Child, HGroup,
- Child, VGroup,
- Child, LLabel(LOC(genitiv)),
- Child, data->genitiv = StringObject,
- MUIA_CycleChain, 1,
- MUIA_Frame, MUIV_Frame_String,
- MUIA_String_Format, MUIV_String_Format_Center,
- MUIA_String_AdvanceOnCR, TRUE,
- End,
- End,
- Child, data->genus = RadioObject,
- MUIA_CycleChain, 1,
- NoFrame,
- MUIA_ControlChar, 'g',
- MUIA_ShortHelp, "AMIGA + g",
- MUIA_Radio_Entries, gentab,
- End,
- End,
-
- // Adjektiv
- // ********
- Child, ColGroup(3),
- Child, LLabel(LOC(adj0)),
- Child, LLabel(LOC(adj1)),
- Child, LLabel(LOC(adj2)),
- Child, data->adj0 = StringObject,
- MUIA_CycleChain, 1,
- MUIA_Frame, MUIV_Frame_String,
- MUIA_String_Format, MUIV_String_Format_Center,
- MUIA_String_AdvanceOnCR, TRUE,
- End,
- Child, data->adj1 = StringObject,
- MUIA_CycleChain, 1,
- MUIA_Frame, MUIV_Frame_String,
- MUIA_String_Format, MUIV_String_Format_Center,
- MUIA_String_AdvanceOnCR, TRUE,
- End,
- Child, data->adj2 = StringObject,
- MUIA_CycleChain, 1,
- MUIA_Frame, MUIV_Frame_String,
- MUIA_String_Format, MUIV_String_Format_Center,
- MUIA_String_AdvanceOnCR, TRUE,
- End,
- End,
-
- // Verb
- // ****
- Child, ColGroup(3),
- Child, LLabel(LOC(verb0)),
- Child, LLabel(LOC(verb1)),
- Child, LLabel(LOC(verb2)),
- Child, data->verb0 = StringObject,
- MUIA_CycleChain, 1,
- MUIA_Frame, MUIV_Frame_String,
- MUIA_String_Format, MUIV_String_Format_Center,
- MUIA_String_AdvanceOnCR, TRUE,
- End,
- Child, data->verb1 = StringObject,
- MUIA_CycleChain, 1,
- MUIA_Frame, MUIV_Frame_String,
- MUIA_String_Format, MUIV_String_Format_Center,
- MUIA_String_AdvanceOnCR, TRUE,
- End,
- Child, data->verb2 = StringObject,
- MUIA_CycleChain, 1,
- MUIA_Frame, MUIV_Frame_String,
- MUIA_String_Format, MUIV_String_Format_Center,
- MUIA_String_AdvanceOnCR, TRUE,
- End,
- End,
- End;
-
- return(data);
- }
-
- return(0);
- }
- ///
- /// DITO_DisposeInput
- SAVEDS ASM void DITO_DisposeInput(REG(a0) struct DITO_InputData *data)
- {
- if(data) FreeVec(data);
- }
- ///
- /// DITO_ClearInput
- SAVEDS ASM void DITO_ClearInput(REG(a0) struct DITO_InputData *data)
- {
- set(data->remark, MUIA_String_Contents, "");
- set(data->genitiv, MUIA_String_Contents, "");
- set(data->adj0, MUIA_String_Contents, "");
- set(data->adj1, MUIA_String_Contents, "");
- set(data->adj2, MUIA_String_Contents, "");
- set(data->verb0, MUIA_String_Contents, "");
- set(data->verb1, MUIA_String_Contents, "");
- set(data->verb2, MUIA_String_Contents, "");
- set(data->genus, MUIA_Radio_Active, 0);
- }
- ///
- /// DITO_WriteInput
- SAVEDS ASM void DITO_WriteInput(REG(a0) struct DITO_InputData *data, REG(a1) struct DITO_Entry *entry)
- {
- set (data->obj, MUIA_Group_ActivePage, DITO_GetVal (entry, DITO_Val_Type));
-
- DITO_ClearInput (data);
-
- switch(DITO_GetVal (entry, DITO_Val_Type)){
-
- // Default
- case 0:
- set(data->remark, MUIA_String_Contents, DITO_GetStr(entry,0));
- break;
-
- // Noun
- case 1:
- set(data->genitiv, MUIA_String_Contents, DITO_GetStr(entry,0));
- set(data->genus, MUIA_Radio_Active, DITO_GetVal(entry,0));
- break;
-
- // Adjective
- case 2:
- set(data->adj0, MUIA_String_Contents, DITO_GetStr(entry,0));
- set(data->adj1, MUIA_String_Contents, DITO_GetStr(entry,1));
- set(data->adj2, MUIA_String_Contents, DITO_GetStr(entry,2));
- break;
-
- // Verb
- case 3:
- set(data->verb0, MUIA_String_Contents, DITO_GetStr(entry,0));
- set(data->verb1, MUIA_String_Contents, DITO_GetStr(entry,1));
- set(data->verb2, MUIA_String_Contents, DITO_GetStr(entry,2));
- break;
- }
- }
- ///
- /// DITO_ReadInput
- SAVEDS ASM BOOL DITO_ReadInput(REG(a0) struct DITO_InputData *data, REG(a1) struct DITO_EntryInfo *vi, REG(a2) struct DITO_Entry *entry)
- {
- BOOL changed = FALSE;
-
- get (data->obj, MUIA_Group_ActivePage, &vi->type);
-
- switch(vi->type){
-
- // Default
- case 0:
- vi->snum=1;
- get (data->remark, MUIA_String_Contents, &vi->gr[0]);
- if(entry) changed = strcmp(DITO_GetStr(entry,0), vi->gr[0]);
- break;
-
- // Noun
- case 1:
- vi->snum=1;
- get (data->genitiv, MUIA_String_Contents, &vi->gr[0]);
- get (data->genus, MUIA_Radio_Active, &vi->val[0]);
- if(entry){
- changed =
- strcmp(DITO_GetStr(entry,0), vi->gr[0])
- || (DITO_GetVal(entry, 0) != vi->val[0]);
- }
- break;
-
- // Adjective
- case 2:
- vi->snum=3;
- get (data->adj0, MUIA_String_Contents, &vi->gr[0]);
- get (data->adj1, MUIA_String_Contents, &vi->gr[1]);
- get (data->adj2, MUIA_String_Contents, &vi->gr[2]);
- if(entry){
- changed =
- strcmp(DITO_GetStr(entry,2), vi->gr[2])
- || strcmp(DITO_GetStr(entry,1), vi->gr[1])
- || strcmp(DITO_GetStr(entry,0), vi->gr[0]);
- }
- break;
-
- // Verb
- case 3:
- vi->snum=3;
- get (data->verb0, MUIA_String_Contents, &vi->gr[0]);
- get (data->verb1, MUIA_String_Contents, &vi->gr[1]);
- get (data->verb2, MUIA_String_Contents, &vi->gr[2]);
- if(entry){
- changed =
- strcmp(DITO_GetStr(entry,2), vi->gr[2])
- || strcmp(DITO_GetStr(entry,1), vi->gr[1])
- || strcmp(DITO_GetStr(entry,0), vi->gr[0]);
- }
- break;
- }
- return(changed);
- }
- ///
- /// DITO_ActivateFirstInput
- SAVEDS ASM Object *DITO_ActivateFirstInput(REG(a0) struct DITO_InputData *data)
- {
- LONG p;
-
- get (data->obj, MUIA_Group_ActivePage, &p);
- switch(p){
- case 0: return(data->remark);
- case 1: return(data->genitiv);
- case 2: return(data->adj0);
- case 3: return(data->verb0);
- }
- }
- ///
- /// DITO_FontsInput
- SAVEDS ASM void DITO_FontsInput(REG(a0) struct DITO_InputData *data, REG(d0) APTR word, REG(d1) APTR trans, REG(d2) APTR phon)
- {
- set(data->remark, MUIA_Font, word);
- set(data->genitiv, MUIA_Font, word);
- set(data->verb0, MUIA_Font, word);
- set(data->verb1, MUIA_Font, word);
- set(data->verb2, MUIA_Font, word);
- set(data->adj0, MUIA_Font, word);
- set(data->adj1, MUIA_Font, word);
- set(data->adj2, MUIA_Font, word);
- }
- ///
- /// DITO_UpdateInput
- SAVEDS ASM void DITO_UpdateInput(REG(a0) struct DITO_InputData *data)
- {
- }
- ///
-
- /// DITO_CreateOutput
- SAVEDS ASM struct DITO_OutputData *DITO_CreateOutput(REG(a0) Object *app)
- {
- struct DITO_OutputData *data;
- static char *strtab[5];
-
- strtab[0] = LOC(part0);
- strtab[1] = LOC(part1);
- strtab[2] = LOC(part2);
- strtab[3] = LOC(part3);
- strtab[4] = 0;
-
- if(data = AllocVec(sizeof(struct DITO_OutputData),0)){
-
- data->obj = VGroup,
- Child, VGroup,
- MUIA_Frame, MUIV_Frame_Group,
- Child, HGroup,
- MUIA_Background, MUII_TextBack,
- MUIA_Frame, MUIV_Frame_Text,
- Child, data->kind = TextObject,
- MUIA_Text_PreParse, "\033c\033b",
- MUIA_Weight, 5000,
- // MUIA_Text_SetMin, TRUE,
- End,
- Child, data->weight = TextObject,
- MUIA_Text_Contents, IPIC0,
- MUIA_Text_SetMin, TRUE,
- End,
- End,
- Child, data->info = ListviewObject,
- MUIA_Frame, MUIV_Frame_Text,
- MUIA_Background, MUII_TextBack,
- MUIA_Listview_Input, FALSE,
- // MUIA_Listview_ScrollerPos, MUIV_Listview_ScrollerPos_None,
- MUIA_Listview_List, FloattextObject,
- MUIA_Background, MUII_TextBack,
- // MUIA_Font, trans,
- MUIA_List_Format, "p=\033c",
- End,
- End,
- End,
- /* Child, data->grammar = VGroup,
- MUIA_FrameTitle, LOC(grammar),
- MUIA_Frame, MUIV_Frame_Group,
- MUIA_Group_PageMode, TRUE,
- MUIA_VertDisappear, 1,
-
- // Rest
- Child, TextObject,
- MUIA_Text_Contents, "\033cKeine Angaben",
- End,
-
- // Noun
- Child, data->text1 = TextObject,
- MUIA_Font, word,
- MUIA_ShortHelp, "Singular\nPlural",
- MUIA_Frame, MUIV_Frame_Text,
- MUIA_Background, MUII_TextBack,
- MUIA_Text_Contents, "\033c\n",
- End,
-
- // Verb
- Child, data->text2 = TextObject,
- MUIA_Font, word,
- MUIA_ShortHelp, "Infinitiv\nPräteritum\nPartizip Perfekt",
- MUIA_Frame, MUIV_Frame_Text,
- MUIA_Background, MUII_TextBack,
- MUIA_Text_Contents, "\033c\n\n",
- End,
- End,
- */
- End;
-
- return(data);
- }
-
- return(0);
- }
- ///
- /// DITO_DisposeOutput
- SAVEDS ASM void DITO_DisposeOutput(REG(a0) struct DITO_OutputData *data)
- {
- if(data) FreeVec(data);
- }
- ///
- /// DITO_WriteOutput
- extern SAVEDS ASM char *DITO_GrammarString (REG(a0) APTR entry, REG(a1) char *str);
-
- SAVEDS ASM void DITO_WriteOutput(REG(a0) struct DITO_OutputData *data, REG(a1) struct DITO_Entry *entry)
- {
- static char str[1000],gr[700];
- // static char form[500];
- static char *imptab[3];
-
- imptab[0] = IPIC0;
- imptab[1] = IPIC1;
- imptab[2] = IPIC2;
-
- set(data->weight, MUIA_Text_Contents, imptab[DITO_GetVal (entry, DITO_Val_Weight)]);
-
- // set(data->grammar, MUIA_Group_ActivePage, DITO_GetVal (entry, DITO_Val_Type));
-
- sprintf (str,"\n\033b%s\033n\n\n%s\n\n\033i%s",
- DITO_GrammarString (entry, gr),
- DITO_GetStr(entry, DITO_Str_Translation),
- DITO_GetStr(entry, DITO_Str_Note)
- );
-
- switch(DITO_GetVal (entry, DITO_Val_Type)){
-
- // Default
- case 0:
- set(data->kind, MUIA_Text_Contents, LOC(part0));
- break;
-
- // Noun
- case 1:
- set(data->kind, MUIA_Text_Contents, LOC(part1));
- /* if(DITO_GetStr(entry, 0)[0]){
- sprintf(form,"\033c%s\n\0338%s",DITO_GetStr(entry,DITO_Str_Word),DITO_GetStr(entry, 0));
- }else{
- sprintf(form,"\033c%s\n%ss",DITO_GetStr(entry,DITO_Str_Word),DITO_GetStr(entry, DITO_Str_Word));
- }
- set(data->text1, MUIA_Text_Contents, form);
- */ break;
-
- // Adjective
- case 2:
- set(data->kind, MUIA_Text_Contents, LOC(part2));
- break;
-
- // Verb
- case 3:
- set(data->kind, MUIA_Text_Contents, LOC(part3));
- /* strcpy(form,"\033c");
- strcat(form,DITO_GetStr(entry,DITO_Str_Word));
- if(DITO_GetStr(entry, 0)[0]){
- strcat(form,"\n\0338");
- strcat(form,DITO_GetStr(entry,0));
- }else{
- strcat(form,"\n\0330");
- strcat(form,DITO_GetStr(entry,DITO_Str_Word));
- strcat(form,"ed");
- }
- if(DITO_GetStr(entry, 1)[0]){
- strcat(form,"\n\0338");
- strcat(form,DITO_GetStr(entry,1));
- }else{
- strcat(form,"\n\0330");
- strcat(form,DITO_GetStr(entry,DITO_Str_Word));
- strcat(form,"ed");
- }
- set(data->text2, MUIA_Text_Contents, form);
- */ break;
- }
-
- set(data->info, MUIA_Floattext_Text, str);
- }
- ///
- /// DITO_FontsOutput
- SAVEDS ASM void DITO_FontsOutput (REG(a0) struct DITO_OutputData *data, REG(d0) APTR word, REG(d1) APTR trans, REG(d2) APTR phon){
- }
- ///
- /// DITO_UpdateOutput
- SAVEDS ASM void DITO_UpdateOutput(REG(a0) struct DITO_OutputData *data, REG(a1) struct DITO_Entry *entry)
- {
- }
- ///
- /// DITO_ParseInput
- SAVEDS ASM Object *DITO_ParseInput (REG(a0) struct DITO_InputData *data, REG(a1) char *in, REG(a2) char *out){
- return(DITO_ActivateFirstInput(data));
- }
- ///
-
- /// DITO_GrammarString
- SAVEDS ASM char *DITO_GrammarString (REG(a0) APTR entry, REG(a1) char *str){
- char *h,*h2;
- int v;
- static char *gen[4]={"m.","f.","n.","m.+f."};
-
- switch(DITO_GetVal(entry, DITO_Val_Type)){
-
- // Rest
- case 0:
- h = DITO_GetStr(entry, 0);
- if(*h) sprintf(str,"%s (%s)", DITO_GetStr(entry, DITO_Str_Word),h);
- else strcpy(str, DITO_GetStr(entry, DITO_Str_Word));
- break;
-
- // Noun
- case 1:
- h = DITO_GetStr(entry, 0);
- if(*h) sprintf(str,"%s, %s %s", DITO_GetStr(entry, DITO_Str_Word),h,gen[DITO_GetVal(entry, 0)]);
- else sprintf(str,"%s %s", DITO_GetStr(entry, DITO_Str_Word),gen[DITO_GetVal(entry, 0)]);
- break;
-
- /*
- // Adjektive
- case 2:
- v = DITO_GetVal(entry, 0);
- if(v) sprintf(str,"%s (adj. inv.)", DITO_GetStr(entry, DITO_Str_Word));
- else sprintf(str,"%s (adj.)", DITO_GetStr(entry, DITO_Str_Word));
- break;
-
- // Verb
- case 4:
- v = DITO_GetVal(entry, 0);
- if(v) sprintf(str,"%s (irr. #%d)", DITO_GetStr(entry, DITO_Str_Word),v);
- else sprintf(str,"%s", DITO_GetStr(entry, DITO_Str_Word));
- break;
-
- // Expression
- case 5:
- h = DITO_GetStr(entry, 0);
- if(*h) sprintf(str, "\"%s\" (%s)", DITO_GetStr(entry, DITO_Str_Word),h);
- else sprintf(str, "\"%s\"", DITO_GetStr(entry, DITO_Str_Word));
- break;
- */
- // else ... Adverb
- default:
- strcpy(str, DITO_GetStr(entry, DITO_Str_Word));
- break;
- }
- return(str);
- }
- ///
-
-