home *** CD-ROM | disk | FTP | other *** search
- // µNote 1.1
- // © 1996 by Daniel Hirscher
- /// informaton
- // -------------------------------------------------------------------------
- //
- // Projekt : µNote
- //
- // Dateiname : µNote
- //
- // Sprache/Compiler : C, MaxonC 3.1
- //
- // Betriebssystem : AmigaOS 3.1
- //
- // Kurzbeschreibung : kleines Programm um kleine Notizen zu machen
- //
- // zugehörige Dateien: µNote.guide
- // µNote.c
- //
- // Ersteller : Daniel Hirscher
- //
- // Datum : 17.12.96 bis 27.12.96
- //
- // Version : siehe setapp();
- //
- // -------------------------------------------------------------------------
- ///
-
- #define DEBUG
-
- /// include
- #include <my.h>
-
- #include <exec/memory.h>
- #include <clib/iffparse_protos.h>
- #include <libraries/iffparse.h>
- #include <pragma/iffparse_lib.h>
- #include <gadgets/textfield.h>
- #include <proto/textfield.h>
- #include <intuition/icclass.h>
- #include <intuition/gadgetclass.h>
- #include "Note_cat.h"
- ///
- /// define
- #ifdef DEBUG
- #define NOTEFILE "ram:µNotes.data"
- #define NOTEBAK "ram:µNotes.bak"
- #else
- #define NOTEFILE "PROGDIR:µNotes.data"
- #define NOTEBAK "PROGDIR:µNotes.bak"
- #endif
-
- #define HELPFILE "PROGDIR:µNote.guide"
-
- #define DRUCKER "prt:"
- ///
- /// var
- APTR app;
-
- // main-window
- APTR wi_main;
- Object *strip;
- APTR show, sbar;
-
- struct ClipboardHandle *clip_handle, *undo_handle;
-
- // sonstiges
- APTR aboutmui;
-
- struct Library *IFFParseBase;
- struct Library *TextFieldBase;
- struct Library *LocaleBase;
- Class *TextFieldClass;
- ///
-
-
- /// hilfsfunktionen: xget, getstr
- LONG xget(Object *obj, ULONG attribute)
- {
- LONG x;
- get(obj,attribute,&x);
- return(x);
- }
- char *getstr(Object *obj)
- {
- return((char *)xget(obj,MUIA_String_Contents));
- }
- ///
-
- /// myAbout
- VOID myAbout()
- {
- MUI_RequestA(app,wi_main,NULL,GetNoteString(msgAboutTitle),GetNoteString(msgAboutButton),
- GetNoteString(msgAbout),NULL);
- }
- static const struct Hook myAboutHook = { { NULL, NULL }, (VOID *)myAbout,NULL,NULL };
- ///
- /// myAboutMUI
- VOID myAboutMUI()
- {
- if (!aboutmui)
- {
- aboutmui = AboutmuiObject,
- MUIA_Window_RefWindow, wi_main,
- MUIA_Aboutmui_Application, app,
- End;
- }
-
- if (aboutmui)
- set(aboutmui,MUIA_Window_Open,TRUE);
- else
- DisplayBeep(0);
- }
- static const struct Hook myAboutMUIHook = { { NULL, NULL }, (VOID *)myAboutMUI,NULL,NULL };
- ///
-
- /// myDrucken
- VOID myDrucken()
- {
- int i,j;
- BPTR fh;
- char ch;
- char *bu;
-
- if (xget(show,TEXTFIELD_Size))
- {
- if ((fh = Open(DRUCKER,MODE_OLDFILE)))
- {
- FPuts(fh,"\n µNote\n\n ");
-
- set(show,TEXTFIELD_ReadOnly,TRUE);
- bu = (char *)xget(show,TEXTFIELD_Text);
-
- j = 0;
- for(i=0;i<xget(show,TEXTFIELD_Size);i++)
- {
- ch = bu[i];
- if (j++>66)
- {
- FPutC(fh,'\n');
- for (j=0;j<7;j++) FPutC(fh,' ');
- j = 0;
- }
- FPutC(fh,ch);
- if (ch == '\n')
- {
- for (j=0;j<7;j++) FPutC(fh,' ');
- j = 0;
- }
- }
- set(show,TEXTFIELD_ReadOnly,FALSE);
-
- Close(fh);
- }
- }
- }
- static const struct Hook myDruckenHook = { { NULL, NULL }, (VOID *)myDrucken,NULL,NULL };
- ///
-
- /// laden
- void laden()
- {
- BPTR fh, lock;
- char *cbuf;
- long len;
- struct FileInfoBlock *fib;
-
- set(show,TEXTFIELD_Text,"");
-
- if ((fib=AllocVec(sizeof(struct FileInfoBlock),MEMF_ANY)))
- {
- if ((lock = Lock(NOTEFILE,ACCESS_READ)))
- {
- Examine(lock,fib);
- len = fib->fib_Size;
- UnLock(lock);
- }
- FreeVec(fib);
- }
-
- fh = Open(NOTEFILE,MODE_OLDFILE);
- if (fh)
- {
- if ((cbuf=AllocVec(len+1,MEMF_ANY)))
- {
-
- Seek(fh,0,OFFSET_BEGINNING);
- Read(fh,cbuf,len);
- cbuf[len] = NULL;
- set(show,TEXTFIELD_Text,cbuf);
- FreeVec(cbuf);
- }
- Close(fh);
- }
- set(show,TEXTFIELD_Modified,FALSE);
- }
- ///
- /// speichern
- void speichern()
- {
- BPTR fh;
-
- if (xget(show,TEXTFIELD_Modified) == TRUE)
- {
- DeleteFile(NOTEBAK); // altes .bak löschen
- Rename(NOTEFILE,NOTEBAK); // datenfile zum .bak file machen
- fh = Open(NOTEFILE,MODE_NEWFILE); // neues datenfile kreieren
- if (fh)
- {
- Seek(fh,0,OFFSET_BEGINNING);
- set(show,TEXTFIELD_ReadOnly,TRUE);
- Write(fh, (char *)xget(show,TEXTFIELD_Text), xget(show,TEXTFIELD_Size) );
- set(show,TEXTFIELD_ReadOnly,FALSE);
-
- Close(fh);
- }
- set(show,TEXTFIELD_Modified,FALSE);
- }
- }
- ///
-
- /// setapp
- void setapp()
- {
- enum { men_about=1, men_amui, men_quit, men_mui, men_prt };
- struct NewMenu my_menu[] =
- {
- { NM_TITLE, "µNote", 0, 0, 0, 0 },
- { NM_ITEM, GetNoteString(msgMDrucken),GetNoteString(msgMDruckenSC), 0, 0, (APTR)men_prt },
- { NM_ITEM, NM_BARLABEL, 0, 0, 0, 0 },
- { NM_ITEM, GetNoteString(msgMAbout), "?", 0, 0, (APTR)men_about },
- { NM_ITEM, GetNoteString(msgMAboutM), 0, 0, 0, (APTR)men_amui },
- { NM_ITEM, NM_BARLABEL, 0, 0, 0, 0 },
- { NM_ITEM, GetNoteString(msgMQuit), "Q", 0, 0, (APTR)men_quit },
- { NM_TITLE, GetNoteString(msgMSettings), 0, 0, 0, 0 },
- { NM_ITEM, GetNoteString(msgMSettingsM), 0, 0, 0, (APTR)men_mui },
- { NM_END,NULL,0,0,0,0 }
- };
-
- app = ApplicationObject,
- MUIA_Application_Title, "µNote",
- MUIA_Application_Version, "$VER: µNote 1.1 (27.12.96)",
- MUIA_Application_Copyright, "e-mailware",
- MUIA_Application_Author, "Daniel Hirscher",
- MUIA_Application_Description, GetNoteString(msgAppDesc),
- MUIA_Application_Base, "MNOTE",
- MUIA_Application_HelpFile, HELPFILE,
-
- SubWindow, wi_main = WindowObject,
- MUIA_Window_ID, MAKE_ID('M','A','I','N'),
- MUIA_Window_Title, "µNote",
- MUIA_Window_Menustrip, strip = MUI_MakeObject(MUIO_MenustripNM,my_menu,0),
- WindowContents, VGroup,
- Child, HGroup,
- MUIA_Group_HorizSpacing, 0,
- Child, show = BoopsiObject,
- InputListFrame,
- MUIA_Boopsi_Class, TextFieldClass,
- MUIA_Boopsi_Smart, TRUE,
- MUIA_Boopsi_MinWidth, 250,
- MUIA_Boopsi_MinHeight, 100,
- ICA_TARGET, ICTARGET_IDCMP,
- TEXTFIELD_BlockCursor, TRUE,
- TEXTFIELD_Partial, TRUE,
- TEXTFIELD_ClipStream, clip_handle,
- TEXTFIELD_UndoStream, undo_handle,
- GA_TabCycle, TRUE,
- MUIA_CycleChain, TRUE,
- End,
- Child, sbar = ScrollbarObject,
- MUIA_CycleChain, TRUE,
- MUIA_ShortHelp, GetNoteString(msgSchieber),
- End,
- End,
- End,
- End,
-
- End;
- }
- ///
- /// setmethods
- void setmethods()
- {
- // Notification
- // menu
- DoMethod((Object *)DoMethod(strip,MUIM_FindUData,men_quit),
- MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,
- app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit);
- DoMethod((Object *)DoMethod(strip,MUIM_FindUData,men_about),
- MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,
- app,2,MUIM_CallHook,&myAboutHook);
- DoMethod((Object *)DoMethod(strip,MUIM_FindUData,men_mui),
- MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,
- app,2,MUIM_Application_OpenConfigWindow,NULL);
- DoMethod((Object *)DoMethod(strip,MUIM_FindUData,men_amui),
- MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,
- app,2,MUIM_CallHook,&myAboutMUIHook);
- DoMethod((Object *)DoMethod(strip,MUIM_FindUData,men_prt),
- MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,
- app,2,MUIM_CallHook,&myDruckenHook);
-
-
- // main-window
- DoMethod(show,MUIM_Notify,TEXTFIELD_Lines,MUIV_EveryTime,
- sbar,3,MUIM_Set,MUIA_Prop_Entries,MUIV_TriggerValue);
- DoMethod(show,MUIM_Notify,TEXTFIELD_Visible,MUIV_EveryTime,
- sbar,3,MUIM_Set,MUIA_Prop_Visible,MUIV_TriggerValue);
- DoMethod(show,MUIM_Notify,TEXTFIELD_Top,MUIV_EveryTime,
- sbar,3,MUIM_NoNotifySet,MUIA_Prop_First,MUIV_TriggerValue);
- DoMethod(sbar,MUIM_Notify,MUIA_Prop_First,MUIV_EveryTime,
- show,3,MUIM_NoNotifySet,TEXTFIELD_Top,MUIV_TriggerValue);
- }
- ///
- /// setup
- BOOL setup()
- {
- laden();
- return(TRUE);
- }
- ///
- /// setdown
- void setdown()
- {
- if (undo_handle) CloseClipboard(undo_handle);
- if (clip_handle) CloseClipboard(clip_handle);
-
- speichern();
- if (TextFieldBase) CloseLibrary(TextFieldBase);
- if (IFFParseBase) CloseLibrary(IFFParseBase);
-
- CloseNoteCatalog();
- CloseLibrary(LocaleBase);
- }
- ///
- /// openlib
- void openlib()
- {
- LocaleBase = OpenLibrary("locale.library",38);
- OpenNoteCatalog(NULL,NULL);
-
- if (!(IFFParseBase = OpenLibrary("iffparse.library",0)))
- fail(NULL,"iffparse.library not available\n");
- clip_handle = OpenClipboard(0);
- undo_handle = OpenClipboard(42);
-
- if (!(TextFieldBase = OpenLibrary("gadgets/textfield.gadget",0)))
- fail(NULL,"textfield boopsi gadget not available\n");
- TextFieldClass = TEXTFIELD_GetClass();
- }
- ///
- /// main
- int main(int argc, char *argv[])
- {
- init();
-
- openlib();
-
- setapp();
-
- if (!app)
- fail(app,"Failed to create Application.");
-
- setmethods();
-
- // ideal input-loop - DO NEVER CHANGE
- DoMethod(wi_main,MUIM_Notify,MUIA_Window_CloseRequest,TRUE,
- app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit);
-
- if (!setup())
- fail(app,"Failed to set up.");
-
- set(wi_main,MUIA_Window_Open,TRUE);
- {
- ULONG sigs = 0;
- while (DoMethod(app,MUIM_Application_NewInput,&sigs) != MUIV_Application_ReturnID_Quit)
- { if (sigs) { sigs = Wait(sigs | SIGBREAKF_CTRL_C); if (sigs & SIGBREAKF_CTRL_C) break; } }
- }
- set(wi_main,MUIA_Window_Open,FALSE);
-
- setdown();
-
- fail(app,NULL);
- }
- ///
-
- // end
-