home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Editor / DVD!FX17.LHA / FrexxEd / fpl / QueryKillChanges.FPL < prev    next >
Encoding:
Text File  |  1995-05-28  |  3.4 KB  |  123 lines

  1. export int Load_hook(string file, string windowtitle, string promptfile)
  2. {
  3.   int changes;
  4.   int ret=0;
  5.   if(changes=ReadInfo("changes"))
  6.     ret=!Request("Do you really want to overwrite your work?\n"
  7.              "You have done " + itoa(changes) + " changes!");
  8.   return(ret);
  9. }
  10.  
  11. export int Kill_hook(int bufferid)
  12. {
  13.   int ret=0;
  14.   if (!bufferid)
  15.     bufferid=GetBufferID();
  16.   if (ReadInfo("shared", bufferid)==1 && (ReadInfo("type", bufferid)&1)) {
  17.         /* Test if this a duplicated bufer,
  18.            if not so we'll check if any changes are done */
  19.   
  20.     int changes=ReadInfo("changes", bufferid);
  21.   
  22.     if (changes) {        /* Some changes have been done! */
  23.       ret=Request(itoa(changes) + " changes have been done!\n"
  24.                   "Kill \"" + ReadInfo("file_name", bufferid) + "\" anyway?",
  25.                   "Kill buffer?", "Yes|Save&Kill|No");
  26.       if(2 == ret) {
  27.         if(0 > Save())
  28.           ret = 0;
  29.       }
  30.       ret =!ret;
  31.     }
  32.   }
  33.   return(ret);
  34. }
  35.  
  36. export int Clear_hook(int bufferid)
  37. {
  38.   int ret=0;
  39.  
  40.   if (!bufferid) {
  41.     bufferid=GetBufferID();
  42.     if (ReadInfo("shared", bufferid)==1 && (ReadInfo("type", bufferid)&1)) {
  43.           /* Test if this a duplicated buffer,
  44.              if not so we'll check if any changes are done */
  45.     
  46.       int changes=ReadInfo("changes", bufferid);
  47.     
  48.       if (changes) {        /* Some changes have been done! */
  49.         ret=!Request(itoa(changes) + " changes have been done!\n"
  50.                      "Clear \"" + ReadInfo("file_name", bufferid) + "\" anyway?");
  51.       }
  52.     }
  53.   }
  54.   return(ret);
  55. }
  56.  
  57. export int QuitAll_hook()
  58. {
  59.   int firstid=GetBufferID();
  60.   int id=firstid;
  61.   int numofchanged=0;
  62.   int ret=1;
  63.   string str;
  64.   string changed;
  65.  
  66.   do {
  67.     do {
  68.       if (ReadInfo("changes", id) && (ReadInfo("type", id)&1)) {
  69.         numofchanged++;
  70.         if(strlen(ReadInfo("file_name", id)))
  71.           changed += "\""+ReadInfo("file_name", id) + "\"\n";
  72.         else
  73.           changed += "\"*noname*\"\n";
  74.       }
  75.       id=NextBuffer(id);
  76.       if (id == firstid)
  77.         id=0;
  78.     } while (id);
  79.   
  80.     if (numofchanged) {
  81.       if(numofchanged>1)
  82.         str = sprintf("%d buffers are changed!\n%s\nQuit anyway?",
  83.                   numofchanged, changed);
  84.       else
  85.         str = sprintf("The buffer %sis changed!\nQuit anyway?", changed);
  86.       ret = Request(str, "Quit information!", "Quit!|Save some|Don't Quit!");
  87.       if(2 == ret) {
  88.         string name;
  89.         int ans;
  90.         /* save some! */
  91.         id = firstid;
  92.         do {
  93.           if (ReadInfo("changes", id) && (ReadInfo("type", id)&1)) {
  94.             name = ReadInfo("file_name", id);
  95.             if(!strlen(name))
  96.               name = "*noname*";
  97.             Activate(id, 2);
  98.             MaximizeView(id);
  99.             ans = Request("Save " + name + "?", "Save?", "Save|Save As|Skip");
  100.             switch(ans) {
  101.               case 1: 
  102.                 ExecuteString("Save();", id); /* save that buffer! */
  103.                 break;
  104.               case 2:
  105.                 ExecuteString("SaveAs();", id); /* save as! */
  106.                 break;
  107.             }
  108.           }
  109.           id=NextBuffer(id);
  110.         } while(id != firstid);      
  111.         numofchanged = 0;
  112.         changed="";
  113.       }
  114.     }
  115.   } while (2 == ret);
  116.   return(!ret);
  117. }
  118.  
  119. Hook("Load", "Load_hook");     /* Patch Load() with Load_hook()! */
  120. Hook("Kill", "Kill_hook");     /* Patch Kill() with Kill_hook()! */
  121. Hook("Clear", "Clear_hook");     /* Patch Clear() with Clear_hook()! */
  122. Hook("QuitAll", "QuitAll_hook"); /* Patch QuitAll() with QuitAll_hook()! */
  123.