diff --git a/Versionen b/Versionen new file mode 100644 index 0000000..d15d8e4 --- /dev/null +++ b/Versionen @@ -0,0 +1,9 @@ +Im ersten Video wird es um Version 0.1 gehen. Folgendes soll dabei erreicht werden: + +* Öffnen des Fensters +* Anzeige des Text-Editors +* Laden eines Textes mittels Startparameter +* Prüfung, ob der Text im Editor sich verändert hat beim verlassen +- Falls sich der Text nicht geändert hat, wird das Programm einfach beendet +- Falls sich der Text geändert hat, wird nachgefragt, ob der Text gespeichert, nicht gespeichert, oder ob der Vorgang abgebrochen werden soll. +* Wenn der Text gespeichert werden soll, wird entweder der zuvor geladene Text überschreiben und falls keiner geladen wurde, der Text in die Datei "unbenannt.txt" gespeichert.^@Y*à \ No newline at end of file diff --git a/phED b/phED new file mode 100644 index 0000000..6e07fcf Binary files /dev/null and b/phED differ diff --git a/phED.link b/phED.link new file mode 100644 index 0000000..a1b895b --- /dev/null +++ b/phED.link @@ -0,0 +1,9 @@ +"HD0:StormC/StormC/StormSYS/startups/startup.o" +0,0,0,132,code_68k +1,0,132,48,code_68k +- +3,1,0,16,data +"Projekte:phED/phed.o" +0,0,180,1236,code_68k +1,1,16,16,data +!0,628 ; _main diff --git a/phED.map b/phED.map new file mode 100644 index 0000000..0c6aebc --- /dev/null +++ b/phED.map @@ -0,0 +1,182 @@ +Global M68K Construktors + _INIT_0_InitFiles + _INIT_1_DOS_c__DOSBase + _INIT_2_Intuition_c__IntuitionBase +Global M68K Destruktors + _EXIT_5_InitFiles + _EXIT_4_free + _EXIT_2_Intuition_c__IntuitionBase + _EXIT_1_DOS_c__DOSBase + _EXIT_0_Main +No Global PPC Construktors +No Global PPC Destruktors + +M68K Code + + + Hunk #0 ( Far Public ) 7896 Bytes (0x1ed8) + _exit = 132 (0x84) referenced 2 times + File HD0:StormC/StormC/StormSYS/startups/startup.o + _closeLibraries = 180 (0xb4) unused, maybe local + File Projekte:phED/phed.o + _openLibraries = 258 (0x102) unused, maybe local + File Projekte:phED/phed.o + _saveText = 374 (0x176) unused, maybe local + File Projekte:phED/phed.o + _loadText = 454 (0x1c6) unused, maybe local + File Projekte:phED/phed.o + _main = 628 (0x274) referenced 2 times + File Projekte:phED/phed.o + _fopen = 1418 (0x58a) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _fclose = 1576 (0x628) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _setvbuf = 1648 (0x670) referenced 2 times + File HD0:StormC/StormC/Lib/storm.lib + _amigaopen = 1868 (0x74c) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _amigaread = 2840 (0xb18) referenced 4 times + File HD0:StormC/StormC/Lib/storm.lib + _amigareadunget = 3308 (0xcec) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _amigawrite = 3408 (0xd50) referenced 2 times + File HD0:StormC/StormC/Lib/storm.lib + _amigaeof = 3960 (0xf78) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _amigaseek = 3984 (0xf90) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _amigagetc = 4272 (0x10b0) referenced 3 times + File HD0:StormC/StormC/Lib/storm.lib + _amigagetcunget = 4328 (0x10e8) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _amigaungetc = 4360 (0x1108) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _amigaputc = 4392 (0x1128) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _amigaflush = 4452 (0x1164) referenced 6 times + File HD0:StormC/StormC/Lib/storm.lib + _amigaclose = 4684 (0x124c) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _INIT_0_InitFiles = 4808 (0x12c8) unused, maybe local + File HD0:StormC/StormC/Lib/storm.lib + _EXIT_5_InitFiles = 4880 (0x1310) unused, maybe local + File HD0:StormC/StormC/Lib/storm.lib + _memcpy = 4968 (0x1368) referenced 3 times + File HD0:StormC/StormC/Lib/storm.lib + _malloc = 5040 (0x13b0) referenced 4 times + File HD0:StormC/StormC/Lib/storm.lib + _free = 5460 (0x1554) referenced 6 times + File HD0:StormC/StormC/Lib/storm.lib + _EXIT_4_free = 5656 (0x1618) unused, maybe local + File HD0:StormC/StormC/Lib/storm.lib + _realloc = 5776 (0x1690) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _fread = 5892 (0x1704) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _fwrite = 5952 (0x1740) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _strcat = 6004 (0x1774) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _strcmp = 6040 (0x1798) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _strlen = 6096 (0x17d0) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + _DoMethod = 6120 (0x17e8) referenced 1 times + File HD0:StormC/StormC/Lib/amiga.lib + _DoSuperMethod = 6140 (0x17fc) unused, maybe local + File HD0:StormC/StormC/Lib/amiga.lib + _CoerceMethod = 6166 (0x1816) unused, maybe local + File HD0:StormC/StormC/Lib/amiga.lib + _CoerceMethodA = 6188 (0x182c) unused, maybe local + File HD0:StormC/StormC/Lib/amiga.lib + _DoMethodA = 6224 (0x1850) unused, maybe local + File HD0:StormC/StormC/Lib/amiga.lib + _DoSuperMethodA = 6244 (0x1864) unused, maybe local + File HD0:StormC/StormC/Lib/amiga.lib + _SetSuperAttrs = 6270 (0x187e) unused, maybe local + File HD0:StormC/StormC/Lib/amiga.lib + main() = 6328 (0x18b8) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + main(int,char **) = 6336 (0x18c0) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + wbmain(WBStartup *) = 6344 (0x18c8) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _wbmain = 6352 (0x18d0) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + main(int,char *) = 6356 (0x18d4) referenced 1 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _EXIT_0_Main = 6848 (0x1ac0) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _INIT_1_DOS_c__DOSBase = 6900 (0x1af4) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _EXIT_1_DOS_c__DOSBase = 6932 (0x1b14) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _InitModules = 7000 (0x1b58) referenced 1 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _CleanupModules = 7076 (0x1ba4) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _INIT_2_Intuition_c__IntuitionBase = 7140 (0x1be4) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _EXIT_2_Intuition_c__IntuitionBase = 7172 (0x1c04) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + LibBaseC::LibBaseC(char *,unsigned long,short) = 7248 (0x1c50) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + LibBaseC::~LibBaseC() = 7704 (0x1e18) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + uintmult = 7744 (0x1e40) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + intmult = 7744 (0x1e40) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + ___uintmult32 = 7744 (0x1e40) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + ___intmult32 = 7744 (0x1e40) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + intdiv = 7776 (0x1e60) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + uintdiv = 7814 (0x1e86) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + lib_div_uint = 7814 (0x1e86) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + ___uintdivmod32 = 7814 (0x1e86) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + lib_div_int = 7776 (0x1e60) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + ___intdivmod32 = 7776 (0x1e60) unused, maybe local + File HD0:StormC/StormC/StormSYS/lib/stormcsupport000.lib + +PowerPC Code + + +Data + + + Hunk #1 ( Far Public ) 104 Bytes (0x68) + _SysBase = 0 (0x0) referenced 11 times + File HD0:StormC/StormC/StormSYS/startups/startup.o + _WindowBase = 16 (0x10) unused, maybe local + File Projekte:phED/phed.o + _LayoutBase = 20 (0x14) unused, maybe local + File Projekte:phED/phed.o + _TextFieldBase = 24 (0x18) unused, maybe local + File Projekte:phED/phed.o + _version = 28 (0x1c) unused, maybe local + File Projekte:phED/phed.o + _DOSBase = 32 (0x20) referenced 9 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _IntuitionBase = 44 (0x2c) referenced 2 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + _not_open__LibBaseC = 48 (0x30) referenced 1 times + File HD0:StormC/StormC/StormSYS/lib/stormcstartup000.lib + ___init_table68k = 56 (0x38) referenced 2 times + File + ___exit_table68k = 80 (0x50) referenced 1 times + File + +BSS + + + Hunk #2 ( Far Public ) 568 Bytes (0x238) + _errno = 0 (0x0) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + +END diff --git a/phED.¶ b/phED.¶ new file mode 100644 index 0000000..bce8f09 --- /dev/null +++ b/phED.¶ @@ -0,0 +1,88 @@ +Storm Shell Project (0013) +Settings (Start) +C/C++ Environment +"StormC:include" +"Projekte:Include_H" +Includepath (End) +0 "" 80 +0 "objects" +C/C++ Preprozessor +Defines (End) +1 1 1 +C/C++ Options +0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 +C/C++ Optimizer +6 +C/C++ Warnings +1 1 1 1 1 1 0 1 +Assembler +0 "" +0 "CON://640/200/Storm Assembler/AUTO/WAIT/SCREEN StormScreen" +0 0 +0 1 60 0 1 0 0 20 0 +Sets (End) +0 1 0 0 0 2 1 0 0 +1 1 1 1 0 0 0 0 0 +1 0 +0 0 0 0 0 +Linker +0 0 "PROGDIR:startup.o" 0 0 1 0 1 0 0 +"StormC:lib" 0 "StormC:lib/logfile" 0 0 0 +0 "_WizardSurface" +0 0 50 0 50 0 50 0 0 +0 0 0 0 0 0 0 0 +Run +30 "" "" "" 0 +"" + +1 "CON://400/180/Storm Console/AUTO/WAIT/SCREEN StormScreen" "RAM:Output" "RAM:Input" +1 0 +0 0 0 "" "" +Settings (End) +File +1 "phed.c" +"phed.c" +"Projekte:phED/phed-init.h" +Storm Shell Project (Dependencies) +"phed.o" "phed.debug" +"" +"phed.o" "phed.debug" +Section +1 1 100 +File +2 "phed-init.h" +"phed-init.h" +Storm Shell Project (Dependencies) +"" "" +"" +File +2 "phed-file.h" +Storm Shell Project (Dependencies) +"" "" +"" +Section +2 1 95 +File +10 "phED" +"phED" +Storm Shell Project (Dependencies) +"" "" +"" +"phED.link" +Section +10 1 40 +File +5 "storm.lib" +"storm.lib" +Storm Shell Project (Dependencies) +"" "" +"" +File +5 "amiga.lib" +"amiga.lib" +Storm Shell Project (Dependencies) +"" "" +"" +Section +5 1 -50 +Storm Shell Project (End) diff --git a/phed-file.h b/phed-file.h new file mode 100644 index 0000000..f7f8738 --- /dev/null +++ b/phed-file.h @@ -0,0 +1,43 @@ +void saveText(char *name, UBYTE *buffer) +{ + FILE *fp; + + if(fp = fopen(name, "w")) + { + fwrite(buffer, sizeof(char), strlen(buffer), fp); + + fclose(fp); + } +} + +UBYTE *loadText(char *name) +{ + FILE *fp; + + char *buffer; + + buffer = (char *) malloc(0); + + if(fp = fopen(name, "r")) + { + char tmp[1025]; + + int read = 1; + + while(read > 0) + { + read = fread(tmp, 1, 1024, fp); + + buffer = (char *) realloc(buffer, strlen(buffer) + read + 1); + + strcat(buffer, tmp); + buffer[strlen(buffer)+1] = '\0'; + + if(read < 1024) break; + } + + fclose(fp); + } + + return buffer; +} diff --git a/phed-init.h b/phed-init.h new file mode 100644 index 0000000..abf36c7 --- /dev/null +++ b/phed-init.h @@ -0,0 +1,31 @@ +struct Library *WindowBase = NULL, + *LayoutBase = NULL, + *TextFieldBase = NULL; + +void closeLibraries() +{ + if(WindowBase) CloseLibrary((struct Library *) WindowBase); + if(TextFieldBase) CloseLibrary((struct Library *) TextFieldBase); + if(LayoutBase) CloseLibrary((struct Library *) LayoutBase); +} + + +BOOL openLibraries() +{ + BOOL ret = FALSE; + + if(WindowBase = (struct Library *) OpenLibrary("window.class", 0L)) + { + if(TextFieldBase = (struct Library *) OpenLibrary("gadgets/texteditor.gadget", 0L)) + { + if(LayoutBase = (struct Library *) OpenLibrary("gadgets/layout.gadget", 0L)) + { + ret = TRUE; + } + } + } + + if(!ret) closeLibraries(); + + return ret; +} \ No newline at end of file diff --git a/phed.c b/phed.c new file mode 100644 index 0000000..eca306a --- /dev/null +++ b/phed.c @@ -0,0 +1,117 @@ +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include + +#include "phed-init.h" +#include "phed-file.h" + +const char *version = "$VER: phED Version 0.1"; + +enum +{ + GID_TEXTEDITOR = 0, + GID_LAST +}; + +int main(int argc, char *argv[]) +{ + struct Window *window; + struct Gadget *gadgets[GID_LAST]; + + Object *Win_Object; + + ULONG signal, result; + ULONG done = FALSE; + + APTR text; + + char *buf; + + if(argc > 0) + { + buf = loadText(argv[1]); + + text = &buf; + } + + if(openLibraries()) + { + Win_Object = WindowObject, + WA_ScreenTitle, "Projekt Hirnfrei", + WA_Title, "phED", + 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; + 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) + { + case WMHI_CLOSEWINDOW: + GetAttr(GA_TEXTEDITOR_HasChanged, gadgets[GID_TEXTEDITOR], &changed); + + if(changed) + { + 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; + break; + } + } + } + } + } + DisposeObject(Win_Object); + } + } + closeLibraries(); + + if(buf) free(buf); +} \ No newline at end of file diff --git a/phed.debug b/phed.debug new file mode 100644 index 0000000..59167b0 Binary files /dev/null and b/phed.debug differ diff --git a/phed.o b/phed.o new file mode 100644 index 0000000..b2efb5c Binary files /dev/null and b/phed.o differ diff --git a/unbenannt.txt b/unbenannt.txt new file mode 100644 index 0000000..7074200 --- /dev/null +++ b/unbenannt.txt @@ -0,0 +1 @@ +Das ist doch doof \ No newline at end of file