2021-11-25 11:14:40 +01:00
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
|
|
#include <proto/exec.h>
|
|
|
|
|
#include <proto/dos.h>
|
|
|
|
|
#include <proto/intuition.h>
|
|
|
|
|
#include <proto/window.h>
|
|
|
|
|
#include <proto/layout.h>
|
|
|
|
|
#include <proto/texteditor.h>
|
2021-12-02 10:05:42 +01:00
|
|
|
|
#include <proto/requester.h>
|
2021-12-16 10:23:30 +01:00
|
|
|
|
#include <proto/asl.h>
|
2021-11-25 11:14:40 +01:00
|
|
|
|
|
|
|
|
|
#include <reaction/reaction_macros.h>
|
|
|
|
|
|
|
|
|
|
#include <classes/window.h>
|
2021-12-02 10:05:42 +01:00
|
|
|
|
#include <classes/requester.h>
|
2021-11-25 11:14:40 +01:00
|
|
|
|
|
|
|
|
|
#include <gadgets/texteditor.h>
|
|
|
|
|
|
2021-12-16 10:23:30 +01:00
|
|
|
|
#include <libraries/gadtools.h>
|
|
|
|
|
#include <libraries/asl.h>
|
|
|
|
|
|
2021-11-25 11:14:40 +01:00
|
|
|
|
#include "phed-init.h"
|
2021-12-16 10:23:30 +01:00
|
|
|
|
#include "phed-utils.h"
|
2021-11-25 11:14:40 +01:00
|
|
|
|
#include "phed-file.h"
|
2021-12-02 10:05:42 +01:00
|
|
|
|
#include "phed-req.h"
|
2021-12-16 10:23:30 +01:00
|
|
|
|
#include "phed-menu.h"
|
2021-11-25 11:14:40 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
|
|
|
{
|
|
|
|
|
struct Window *window;
|
|
|
|
|
struct Gadget *gadgets[GID_LAST];
|
|
|
|
|
|
2021-12-16 10:23:30 +01:00
|
|
|
|
Object *Win_Object, *beenden_object, *neu_object;
|
2021-11-25 11:14:40 +01:00
|
|
|
|
|
|
|
|
|
ULONG signal, result;
|
|
|
|
|
ULONG done = FALSE;
|
|
|
|
|
|
2021-12-16 10:23:30 +01:00
|
|
|
|
char *buf, *retASL;
|
2021-11-25 11:14:40 +01:00
|
|
|
|
|
2021-12-02 10:05:42 +01:00
|
|
|
|
if(argc > 1)
|
2021-11-25 11:14:40 +01:00
|
|
|
|
{
|
2021-12-16 10:23:30 +01:00
|
|
|
|
strcpy(phed.dateiname, argv[1]);
|
2021-11-25 11:14:40 +01:00
|
|
|
|
|
2021-12-16 10:23:30 +01:00
|
|
|
|
buf = loadText(phed.dateiname);
|
2021-11-25 11:14:40 +01:00
|
|
|
|
}
|
2021-12-02 10:05:42 +01:00
|
|
|
|
else
|
|
|
|
|
{
|
2021-12-16 10:23:30 +01:00
|
|
|
|
neuText();
|
2021-12-02 10:05:42 +01:00
|
|
|
|
|
|
|
|
|
buf = (char *) malloc(0);
|
|
|
|
|
}
|
2021-11-25 11:14:40 +01:00
|
|
|
|
|
|
|
|
|
if(openLibraries())
|
|
|
|
|
{
|
2021-12-02 10:05:42 +01:00
|
|
|
|
beenden_object = requesterNew("Beenden");
|
2021-12-16 10:23:30 +01:00
|
|
|
|
neu_object = requesterNew("Neu");
|
2021-12-02 10:05:42 +01:00
|
|
|
|
|
2021-11-25 11:14:40 +01:00
|
|
|
|
Win_Object = WindowObject,
|
|
|
|
|
WA_ScreenTitle, "Projekt Hirnfrei",
|
2021-12-16 10:23:30 +01:00
|
|
|
|
WA_Title, phed.dateiname,
|
2021-11-25 11:14:40 +01:00
|
|
|
|
WA_SizeGadget, TRUE,
|
|
|
|
|
WA_DepthGadget, TRUE,
|
|
|
|
|
WA_DragBar, TRUE,
|
|
|
|
|
WA_CloseGadget, TRUE,
|
|
|
|
|
WA_Activate, TRUE,
|
|
|
|
|
WA_Width, 400,
|
|
|
|
|
WA_Height, 400,
|
2021-12-16 10:23:30 +01:00
|
|
|
|
WA_NewLookMenus, TRUE,
|
|
|
|
|
WINDOW_NewMenu, mainMenu,
|
2021-11-25 11:14:40 +01:00
|
|
|
|
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))
|
|
|
|
|
{
|
2021-12-02 10:05:42 +01:00
|
|
|
|
ULONG wait, changed, ret;
|
2021-11-25 11:14:40 +01:00
|
|
|
|
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)
|
|
|
|
|
{
|
2021-12-02 10:05:42 +01:00
|
|
|
|
switch(result & WMHI_CLASSMASK)
|
2021-11-25 11:14:40 +01:00
|
|
|
|
{
|
|
|
|
|
case WMHI_CLOSEWINDOW:
|
2021-12-16 10:23:30 +01:00
|
|
|
|
{
|
2021-11-25 11:14:40 +01:00
|
|
|
|
GetAttr(GA_TEXTEDITOR_HasChanged, gadgets[GID_TEXTEDITOR], &changed);
|
|
|
|
|
|
|
|
|
|
if(changed)
|
|
|
|
|
{
|
2021-12-02 10:05:42 +01:00
|
|
|
|
ret = beendenReq("\033cDer Text wurde ver<65>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);
|
2021-11-25 11:14:40 +01:00
|
|
|
|
|
2021-12-02 10:05:42 +01:00
|
|
|
|
if(!argv[1]) saveText("unbenannt.txt", buffer);
|
|
|
|
|
else saveText(argv[1], buffer);
|
|
|
|
|
done = TRUE;
|
|
|
|
|
}
|
|
|
|
|
if(ret == 2)
|
|
|
|
|
{
|
|
|
|
|
done = TRUE;
|
|
|
|
|
}
|
|
|
|
|
if(ret == 0)
|
|
|
|
|
{
|
|
|
|
|
done = FALSE;
|
|
|
|
|
}
|
2021-11-25 11:14:40 +01:00
|
|
|
|
}
|
2021-12-02 10:05:42 +01:00
|
|
|
|
else done = TRUE;
|
2021-11-25 11:14:40 +01:00
|
|
|
|
break;
|
2021-12-16 10:23:30 +01:00
|
|
|
|
}
|
|
|
|
|
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<65>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);
|
2021-12-02 10:05:42 +01:00
|
|
|
|
|
2021-12-16 10:23:30 +01:00
|
|
|
|
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<65>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<73>hlen", "Ausw<EFBFBD>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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-12-02 10:05:42 +01:00
|
|
|
|
case WMHI_GADGETUP:
|
|
|
|
|
{
|
|
|
|
|
switch(result & WMHI_GADGETMASK)
|
|
|
|
|
{
|
|
|
|
|
case GID_TEXTEDITOR:
|
|
|
|
|
GetAttr(GA_TEXTEDITOR_HasChanged, gadgets[GID_TEXTEDITOR], &changed);
|
|
|
|
|
|
|
|
|
|
if(changed == 1) printf("Ge<EFBFBD>ndert\n");
|
|
|
|
|
if(changed == 0) printf("Nicht ge<67>ndert\n");
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-11-25 11:14:40 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-12-02 10:05:42 +01:00
|
|
|
|
DisposeObject(beenden_object);
|
2021-12-16 10:23:30 +01:00
|
|
|
|
DisposeObject(neu_object);
|
2021-11-25 11:14:40 +01:00
|
|
|
|
DisposeObject(Win_Object);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
closeLibraries();
|
|
|
|
|
|
|
|
|
|
if(buf) free(buf);
|
2021-12-16 10:23:30 +01:00
|
|
|
|
if(retASL) free(retASL);
|
2021-11-25 11:14:40 +01:00
|
|
|
|
}
|