home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / biz / misc / banker / src / automatic.c next >
C/C++ Source or Header  |  1993-12-16  |  6KB  |  207 lines

  1. /*
  2.  * automatic.c
  3.  */
  4.  
  5. /* $Id: automatic.c,v 1.4 1993/09/03 00:17:28 beust Exp beust $ */
  6.  
  7. #include "common.h"
  8. #include "locale_strings.h"
  9.  
  10. static struct _Automatic LastSelectedAutomatic;
  11.  
  12. /********************************************************************************
  13.  * Private part
  14.  ********************************************************************************/
  15.  
  16. static Automatic
  17. getAutomaticFromGadgets(Gui_t gui)
  18. {
  19.    Automatic result;
  20.    char *fromBuffer, *toBuffer, *amountBuffer, *daysBuffer, *weeksBuffer,
  21.         *monthsBuffer, *yearsBuffer, *transactionBuffer, *imputationBuffer;
  22.  
  23.    NEW(result, struct _Automatic);
  24.  
  25.    get(gui -> auFrom, MUIA_String_Contents, & fromBuffer);
  26.    get(gui -> auTo, MUIA_String_Contents, & toBuffer);
  27.    get(gui -> auAmount, MUIA_String_Contents, & amountBuffer);
  28.    get(gui -> auDays, MUIA_String_Contents, & daysBuffer);
  29.    get(gui -> auWeeks, MUIA_String_Contents, & weeksBuffer);
  30.    get(gui -> auMonths, MUIA_String_Contents, & monthsBuffer);
  31.    get(gui -> auYears, MUIA_String_Contents, & yearsBuffer);
  32.    get(gui -> auReason, MUIA_String_Contents, & transactionBuffer);
  33.    get(gui -> auImputation, MUIA_String_Contents, & imputationBuffer);
  34.  
  35.    result -> first = *myStrToDate(fromBuffer);
  36.    result -> last = *myStrToDate(toBuffer);
  37.    result -> repeatDays = atoi(daysBuffer);
  38.    result -> repeatWeeks = atoi(weeksBuffer);
  39.    result -> repeatMonths = atoi(monthsBuffer);
  40.    result -> repeatYears = atoi(yearsBuffer);
  41.    strcpy(result -> transaction, transactionBuffer);
  42.    strcpy(result -> imputation, imputationBuffer);
  43.    strcpy(result -> amount, amountBuffer);
  44.  
  45.    return result;
  46. }
  47.  
  48. static void
  49. setAutomaticGadgetsToAuto(Gui_t gui, Automatic aut)
  50. {
  51.    struct DateStamp current;
  52.    int windowOpen;
  53.  
  54.    get(gui -> automaticWindowObject, MUIA_Window_Open, & windowOpen);
  55.    if (windowOpen) {
  56.       set(gui -> automaticWindowObject, MUIA_Window_Open, TRUE);
  57.       DateStamp(& current);
  58.       if (aut == NULL) {
  59.          set(gui -> auFrom, MUIA_String_Contents,  myDateToStr(& current));
  60.          set(gui -> auTo, MUIA_String_Contents, "");
  61.          set(gui -> auAmount, MUIA_String_Contents, "");
  62.          set(gui -> auDays, MUIA_String_Contents, 0);
  63.          set(gui -> auWeeks, MUIA_String_Contents, 0);
  64.          set(gui -> auMonths, MUIA_String_Contents, 0);
  65.          set(gui -> auYears, MUIA_String_Contents, 0);
  66.          set(gui -> auReason, MUIA_String_Contents, "");
  67.          set(gui -> auImputation, MUIA_String_Contents, "");
  68.       }
  69.       else {
  70.      char days[8], weeks[8], months[8], years[8];
  71.      sprintf(days, "%d", aut -> repeatDays);
  72.      sprintf(weeks, "%d", aut -> repeatWeeks);
  73.      sprintf(months, "%d", aut -> repeatMonths);
  74.      sprintf(years, "%d", aut -> repeatYears);
  75.          set(gui -> auFrom, MUIA_String_Contents, myDateToStr(& aut -> first));
  76.          set(gui -> auTo, MUIA_String_Contents, myDateToStr(& aut -> last));
  77.          set(gui -> auAmount, MUIA_String_Contents, aut -> amount);
  78.          set(gui -> auDays, MUIA_String_Contents, days);
  79.          set(gui -> auWeeks, MUIA_String_Contents, weeks);
  80.          set(gui -> auMonths, MUIA_String_Contents, months);
  81.          set(gui -> auYears, MUIA_String_Contents, years);
  82.          set(gui -> auReason, MUIA_String_Contents, aut -> transaction);
  83.          set(gui -> auImputation, MUIA_String_Contents, aut -> imputation);
  84.       }
  85.    }
  86. }
  87.  
  88. /********************************************************************************
  89.  * Public part
  90.  ********************************************************************************/
  91.  
  92.  
  93. void
  94. clearAutomaticGadgets(Gui_t gui)
  95. {
  96.    setAutomaticGadgetsToAuto(gui, NULL);
  97.    set(gui -> auNew, MUIA_Disabled, FALSE);
  98.    set(gui -> auAdd, MUIA_Disabled, FALSE);
  99.    set(gui -> auReplace, MUIA_Disabled, TRUE);
  100.    set(gui -> auDelete, MUIA_Disabled, TRUE);
  101. }
  102.  
  103.  
  104. void
  105. openAutomaticWindow(Gui_t gui, Entries entries)
  106. {
  107.    struct MinList *ml;
  108.    struct Node *node;
  109.  
  110.    /* Open the window */
  111.    set(gui -> automaticWindowObject, MUIA_Window_Open, TRUE);
  112.  
  113.    /* Fill the gadgets */
  114.    buildList(gui, entries, FALSE, TRUE, & gui -> autoSA);
  115.                           /* an automatic, want it sorted */
  116.    setAutomaticGadgetsToAuto(gui, NULL);
  117.  
  118. /*@@ running the list
  119.    printf("auto list:\n");
  120.    for (node = ml -> lh_Head; node -> ln_Succ; node = node -> ln_Succ) {
  121.       printf("node: '%s'\n", node -> ln_Name);
  122.    }
  123. */
  124. }
  125.  
  126. void
  127. newAutomatic(Gui_t gui, Entries entries)
  128. {
  129.    clearAutomaticGadgets(gui);
  130. }
  131.  
  132. void
  133. replaceAutomatic(Gui_t gui, Entries entries)
  134. {
  135.    Automatic new, old;
  136.    new = getAutomaticFromGadgets(gui);
  137.    old = & LastSelectedAutomatic;
  138.  
  139.    /* Replace the old entry */
  140.    DB_ReplaceEntry((DataBase) entries -> automatic, old, new);
  141.  
  142.    buildList(gui, entries, FALSE, TRUE, & gui -> autoSA);
  143.                           /* an automatic, want it sorted */
  144.    fullDisplayList(gui, entries);
  145.    FileModified = 1;
  146.    clearAutomaticGadgets(gui);
  147.  
  148. }
  149.  
  150. void
  151. addAutomatic(Gui_t gui, Entries entries)
  152. {
  153.    Automatic aut;
  154.    aut = getAutomaticFromGadgets(gui);
  155.  
  156.    /* Add this entry */
  157.    DB_AddEntry((DataBase) entries -> automatic, aut);
  158.  
  159.    FileModified = 1;
  160.  
  161.    /* update the main list window */
  162.    buildList(gui, entries, FALSE, TRUE, & gui -> autoSA);
  163.                           /* an automatic, want it sorted */
  164.  
  165.    fullDisplayList(gui, entries);
  166.  
  167.    clearAutomaticGadgets(gui);
  168.  
  169. }
  170.  
  171. void
  172. deleteAutomatic(Gui_t gui, Entries entries, Automatic aut)
  173. {
  174.    int n;
  175.    if (aut == NULL) {
  176.       get(gui -> auListObject, MUIA_List_Active, &n);
  177.       aut = DB_NthEntry(entries -> automatic, n);
  178.    }
  179.  
  180.    /* Delete this entry */
  181.    DB_RemoveEntry((DataBase) entries -> automatic, aut);
  182.    FileModified = 1;
  183.       
  184.    buildList(gui, entries, FALSE, TRUE, & gui -> autoSA);
  185.    fullDisplayList(gui, entries);
  186.    clearAutomaticGadgets(gui);
  187. }
  188.  
  189. void
  190. editAutomatic(Gui_t gui, Automatic automatic)
  191. {
  192.    set(gui -> auNew, MUIA_Disabled, FALSE);
  193.    set(gui -> auAdd, MUIA_Disabled, FALSE);
  194.  
  195.    setAutomaticGadgetsToAuto(gui, automatic);
  196.    if (automatic) {
  197.       LastSelectedAutomatic = *automatic;
  198.       set(gui -> auReplace, MUIA_Disabled, FALSE);
  199.       set(gui -> auDelete, MUIA_Disabled, FALSE);
  200.    }
  201.    else {
  202.       set(gui -> auReplace, MUIA_Disabled, TRUE);
  203.       set(gui -> auDelete, MUIA_Disabled, TRUE);
  204.    }
  205. }
  206.  
  207.