#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "phed-init.h" #include "phed-file.h" #include "phed-req.h" static const char *version = "$VER: phED Version 0.2"; enum { GID_TEXTEDITOR = 0, GID_LAST }; int main(int argc, char *argv[]) { struct Window *window; struct Gadget *gadgets[GID_LAST]; Object *Win_Object, *beenden_object; ULONG signal, result; ULONG done = FALSE; char *buf, *titel; if(argc > 1) { titel = (char *) malloc(strlen(argv[1])); strcpy(titel, argv[1]); titel[strlen(argv[1])] = '\0'; buf = loadText(argv[1]); } else { titel = (char *) malloc(strlen("phED")); strcpy(titel, "phED"); titel[strlen("phED")] = '\0'; buf = (char *) malloc(0); } if(openLibraries()) { beenden_object = requesterNew("Beenden"); Win_Object = WindowObject, WA_ScreenTitle, "Projekt Hirnfrei", WA_Title, titel, WA_SizeGadget, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_Activate, TRUE, WA_Width, 400, WA_Height, 400, 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_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(Win_Object); } } closeLibraries(); if(titel) free(titel); if(buf) free(buf); }