#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "phed-init.h" #include "phed-utils.h" #include "phed-file.h" #include "phed-req.h" #include "phed-menu.h" int main(int argc, char *argv[]) { struct Window *window; struct Gadget *gadgets[GID_LAST]; Object *Win_Object, *beenden_object, *neu_object; ULONG signal, result; ULONG done = FALSE; char *buf, *retASL; if(argc > 1) { strcpy(phed.dateiname, argv[1]); buf = loadText(phed.dateiname); } else { neuText(); buf = (char *) malloc(0); } if(openLibraries()) { beenden_object = requesterNew("Beenden"); neu_object = requesterNew("Neu"); Win_Object = WindowObject, WA_ScreenTitle, "Projekt Hirnfrei", WA_Title, phed.dateiname, WA_SizeGadget, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_Activate, TRUE, WA_Width, 400, WA_Height, 400, WA_NewLookMenus, TRUE, WINDOW_NewMenu, mainMenu, WINDOW_ParentGroup, HGroupObject, StartVGroup, StartMember, gadgets[GID_TEXTEDITOR] = TextEditorObject, GA_ID, GID_TEXTEDITOR, GA_RelVerify, TRUE, GA_TEXTEDITOR_Contents, (APTR) buf, EndMember, End, EndMember, EndWindow; if(Win_Object) { if(window = (struct Window *) RA_OpenWindow(Win_Object)) { ULONG wait, changed, ret; UBYTE *buffer; GetAttr(WINDOW_SigMask, Win_Object, &signal); while(!done) { wait = Wait(signal|SIGBREAKF_CTRL_C); if(wait & SIGBREAKF_CTRL_C) done = TRUE; else { while((result = RA_HandleInput(Win_Object, NULL)) != WMHI_LASTMSG) { switch(result & WMHI_CLASSMASK) { case WMHI_CLOSEWINDOW: { GetAttr(GA_TEXTEDITOR_HasChanged, gadgets[GID_TEXTEDITOR], &changed); if(changed) { ret = beendenReq("\033cDer Text wurde verändert!\n\nSoll der Text gespeichert werden?", beenden_object, window); if(ret == 1) { buffer = (UBYTE *) DoGadgetMethod(gadgets[GID_TEXTEDITOR], window, NULL, GM_TEXTEDITOR_ExportText, NULL); if(!argv[1]) saveText("unbenannt.txt", buffer); else saveText(argv[1], buffer); done = TRUE; } if(ret == 2) { done = TRUE; } if(ret == 0) { done = FALSE; } } else done = TRUE; break; } case WMHI_MENUPICK: { switch(result & WMHI_MENUMASK) { case MENU_PROJEKT_BEENDEN: { GetAttr(GA_TEXTEDITOR_HasChanged, gadgets[GID_TEXTEDITOR], &changed); if(changed) { ret = beendenReq("\033cDer Text wurde verändert!\n\nSoll der Text gespeichert werden?", beenden_object, window); if(ret == 1) { buffer = (UBYTE *) DoGadgetMethod(gadgets[GID_TEXTEDITOR], window, NULL, GM_TEXTEDITOR_ExportText, NULL); if(!argv[1]) saveText("unbenannt.txt", buffer); else saveText(argv[1], buffer); done = TRUE; } if(ret == 2) { done = TRUE; } if(ret == 0) { done = FALSE; } } else done = TRUE; break; } case MENU_PROJEKT_NEU: { GetAttr(GA_TEXTEDITOR_HasChanged, gadgets[GID_TEXTEDITOR], &changed); if(changed) { ret = frageReq("\033cSoll der Text wirklich gelöscht werden?", "_Ja|_Nein", neu_object, window); if(ret == 1) { DoGadgetMethod(gadgets[GID_TEXTEDITOR], window, NULL, GM_TEXTEDITOR_ClearText, NULL); neuText(); } } else { DoGadgetMethod(gadgets[GID_TEXTEDITOR], window, NULL, GM_TEXTEDITOR_ClearText, NULL); neuText(); } break; } case MENU_PROJEKT_SPEICHERN: { buffer = (UBYTE *) DoGadgetMethod(gadgets[GID_TEXTEDITOR], window, NULL, GM_TEXTEDITOR_ExportText, NULL); if(!phed.dateiname) saveText("unbenannt.txt", buffer); else saveText(phed.dateiname, buffer); SetGadgetAttrs(gadgets[GID_TEXTEDITOR], window, NULL, GA_TEXTEDITOR_HasChanged, FALSE, TAG_DONE); break; } case MENU_PROJEKT_LADEN: { retASL = neuASL(window, "", "Datei zum laden auswählen", "Auswählen", FALSE); strcpy(phed.dateiname, retASL); buf = loadText(phed.dateiname); SetGadgetAttrs(gadgets[GID_TEXTEDITOR], window, NULL, GA_TEXTEDITOR_Contents, (APTR) buf, TAG_DONE); break; } case MENU_PROJEKT_SPEICHERNALS: { retASL = neuASL(window, "", "Datei zum speichern angeben", "Speichern als", FALSE); strcpy(phed.dateiname, retASL); buffer = (UBYTE *) DoGadgetMethod(gadgets[GID_TEXTEDITOR], window, NULL, GM_TEXTEDITOR_ExportText, NULL); saveText(phed.dateiname, buffer); SetGadgetAttrs(gadgets[GID_TEXTEDITOR], window, NULL, GA_TEXTEDITOR_HasChanged, FALSE, TAG_DONE); break; } } } case WMHI_GADGETUP: { switch(result & WMHI_GADGETMASK) { case GID_TEXTEDITOR: GetAttr(GA_TEXTEDITOR_HasChanged, gadgets[GID_TEXTEDITOR], &changed); if(changed == 1) printf("Geändert\n"); if(changed == 0) printf("Nicht geändert\n"); break; } } } } } } } DisposeObject(beenden_object); DisposeObject(neu_object); DisposeObject(Win_Object); } } closeLibraries(); if(buf) free(buf); if(retASL) free(retASL); }