home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d9xx / d913 / stickit.lha / StickIt / Source / Source.lha / edit.c < prev    next >
C/C++ Source or Header  |  1993-08-03  |  4KB  |  184 lines

  1. /***************************************
  2.  *************   edit.c   **************
  3.  ***************************************/
  4.  
  5. #include <dos/dos.h>
  6. #include <exec/types.h>
  7. #include <intuition/intuition.h>
  8. #include <intuition/classes.h>
  9. #include <intuition/classusr.h>
  10. #include <intuition/imageclass.h>
  11. #include <intuition/gadgetclass.h>
  12. #include <libraries/gadtools.h>
  13. #include <graphics/displayinfo.h>
  14. #include <graphics/gfxbase.h>
  15. #include <graphics/text.h>
  16.  
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/utility_protos.h>
  22. #include <clib/diskfont_protos.h>
  23. #include <clib/dos_protos.h>
  24.  
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include <string.h>
  28.  
  29. #include "stickit.h"
  30.  
  31. #include "consts.h"
  32. #include "structs.h"
  33. #include "prototype.h"
  34.  
  35. extern prjptr prj;
  36. extern struct Window *aboutWnd;
  37. extern struct Window *editWnd;
  38.  
  39. extern struct Gadget *editGadgets[];
  40.  
  41. void openedit()
  42.    {
  43.    ULONG signals;
  44.    int running = TRUE;
  45.  
  46.    if(OpeneditWindow())
  47.       error("Can't open edit window\n",ERR_FATAL);
  48.  
  49.    if (prj->no_notes != 0)
  50.       {
  51.       displaynote();
  52.       updatebuttons();
  53.       }
  54.    else
  55.       {
  56.       prj->currnode = NULL;
  57.  
  58.       andysselectgadget(editGadgets[GDX_show],editWnd);
  59.  
  60.       updatebuttons();
  61.  
  62.       ActivateGadget(editGadgets[GDX_title],editWnd,NULL);
  63.       }
  64.  
  65.    /***   Show number of notes   ***/
  66.  
  67.    changeno_notes(0);
  68.  
  69.    while(running)
  70.       {
  71.       if (aboutWnd)
  72.          {
  73.          signals = Wait((1L << editWnd->UserPort->mp_SigBit) |
  74.                         (1L << aboutWnd->UserPort->mp_SigBit));
  75.  
  76.          if (signals & (1L << editWnd->UserPort->mp_SigBit))
  77.             running = HandleeditIDCMP();
  78.          else if (signals & (1L << aboutWnd->UserPort->mp_SigBit))
  79.             running = HandleaboutIDCMP();
  80.          }
  81.       else
  82.          {
  83.          Wait(1L << editWnd->UserPort->mp_SigBit);
  84.  
  85.          running = HandleeditIDCMP();
  86.          }
  87.  
  88.       /***   Do we close about window ?   ***/
  89.  
  90.       if ((aboutWnd) && (prj->abouttoclose))
  91.          {
  92.          CloseaboutWindow();
  93.          prj->abouttoclose = FALSE;
  94.          }
  95.          
  96.       }
  97.  
  98.    /***   Close window here, not in stickit_fns.c   ***/
  99.  
  100.    CloseeditWindow();
  101.  
  102.    if (aboutWnd)
  103.       CloseaboutWindow();
  104.  
  105.    prj->editnotes = FALSE;
  106.    }
  107.  
  108. void displaynote()
  109.    {
  110.    nteptr currnote;
  111.  
  112.    if (prj->currnode)
  113.       {
  114.       currnote = prj->currnode->data;
  115.  
  116.       /***   Copy strings into string gadgets   ***/
  117.  
  118.       strncpy(GetString(editGadgets[GDX_title]),currnote->title,STRLEN_TITLE);
  119.       strncpy(GetString(editGadgets[GDX_note]),currnote->note,STRLEN_NOTE);
  120.  
  121.       /***   Refresh text gadgets   ***/
  122.  
  123.       RefreshGList(editGadgets[GDX_title],editWnd,NULL,1);
  124.       RefreshGList(editGadgets[GDX_note],editWnd,NULL,1);
  125.       }
  126.    }
  127.  
  128. void updatebuttons()
  129.    {
  130.    if (prj->currnode)
  131.       {
  132.       andysongadget(editGadgets[GDX_show],editWnd);
  133.  
  134.       andysongadget(editGadgets[GDX_notes],editWnd);
  135.  
  136.       /***   Test for ends of list   ***/
  137.  
  138.       if (prj->currnode->next->next == NULL)
  139.          {
  140.          andysoffgadget(editGadgets[GDX_toend],editWnd);
  141.          andysoffgadget(editGadgets[GDX_next],editWnd);
  142.          }
  143.       else
  144.          {
  145.          andysongadget(editGadgets[GDX_toend],editWnd);
  146.          andysongadget(editGadgets[GDX_next],editWnd);
  147.          }
  148.  
  149.       if (prj->currnode->prev->prev == NULL)
  150.          {
  151.          andysoffgadget(editGadgets[GDX_tostart],editWnd);
  152.          andysoffgadget(editGadgets[GDX_prev],editWnd);
  153.          }
  154.       else
  155.          {
  156.          andysongadget(editGadgets[GDX_tostart],editWnd);
  157.          andysongadget(editGadgets[GDX_prev],editWnd);
  158.          }
  159.  
  160.       if (((nteptr)prj->currnode->data)->show)
  161.          andysselectgadget(editGadgets[GDX_show],editWnd);
  162.       else
  163.          andysunselectgadget(editGadgets[GDX_show],editWnd);
  164.       }
  165.    else
  166.       {
  167.       andysoffgadget(editGadgets[GDX_show],editWnd);
  168.       andysoffgadget(editGadgets[GDX_notes],editWnd);
  169.  
  170.       andysoffgadget(editGadgets[GDX_tostart],editWnd);
  171.       andysoffgadget(editGadgets[GDX_prev],editWnd);
  172.       andysoffgadget(editGadgets[GDX_next],editWnd);
  173.       andysoffgadget(editGadgets[GDX_toend],editWnd);
  174.       }
  175.    }
  176.  
  177. void changeno_notes(int no)
  178.    {
  179.    prj->no_notes += no;
  180.  
  181.    GT_SetGadgetAttrs(editGadgets[GDX_notetotal],editWnd,NULL,
  182.       GTNM_Number,(LONG)prj->no_notes,TAG_END);
  183.    }
  184.