home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lyx-0.13.2.tar.gz / lyx-0.13.2.tar / lyx-0.13.2 / src / lastfiles.h < prev    next >
C/C++ Source or Header  |  1998-04-23  |  3KB  |  128 lines

  1. // -*- C++ -*-
  2. /* This file is part of
  3. * ======================================================
  4. *           LyX, The Document Processor
  5. *      
  6. *        Copyright (C) 1995 1996 Matthias Ettrich
  7. *           and the LyX Team.
  8. *
  9. *======================================================*/
  10.  
  11. #ifndef _LASTFILES_H
  12. #define _LASTFILES_H
  13.  
  14. #ifdef __GNUG__
  15. #pragma interface
  16. #endif
  17.  
  18. #include "LString.h"
  19.  
  20.  
  21. /** The latest documents loaded
  22.   This class takes care of the last .lyx files used by the LyX user. It
  23.   both reads and writes this information to a file. The number of files
  24.   kept are user defined, but defaults to four.
  25. */
  26. class LastFiles 
  27. {
  28. public:
  29.     /**@name Constructors and Deconstructors */
  30.     //@{
  31.     /**
  32.       Parameters are: name of file to read. Whether you want LastFiles 
  33.       to check for file existance, and the number of files to remember.
  34.       */
  35.     LastFiles(LString const &, bool dostat = true, char num = 4);
  36.     ///
  37.     ~LastFiles();
  38.     //@}
  39.  
  40.     /**@name Methods */
  41.     //@{
  42.     /**
  43.       This funtion inserts #file# into the last files list. If the file
  44.       already exist it is moved to the top of the list. If it don't
  45.       exist it is placed on the top of the list. If the list already is
  46.       full the last visited file in the list is puched out and deleted.
  47.      */
  48.     void newFile(LString const &);
  49.     /**  Writes the lastfiles table to disk. A " is placed around the
  50.       filenames to preserve special chars. (not all are preserved
  51.       anyway, but at least space is.)
  52.       */
  53.     void writeFile(LString const &) const;
  54.     //@}
  55. private:
  56.     /**@name const variables */
  57.     //@{
  58.     /// 
  59.     enum {
  60.         ///
  61.         DEFAULTFILES = 4
  62.     };
  63.     /** There is no point in keeping more than this number of files
  64.       at the same time. However perhaps someday someone finds use for
  65.       more files and wants to change it. Please do. But don't show
  66.       the files in a menu...
  67.       */
  68.     enum {
  69.         ///
  70.         ABSOLUTEMAXLASTFILES = 20
  71.     };
  72.     //@}
  73.  
  74.     /**@name Variables */
  75.     //@{
  76.     /// an array of lastfiles
  77.     LString *files;
  78.     /// number of files in the lastfiles list.
  79.     char num_files;
  80.     /// check for file existance or not.
  81.     bool dostat;
  82.     //@}
  83.     
  84.     /**@name Methods */
  85.     //@{
  86.     /** reads the .lyx_lastfiles at the beginning of the LyX session.
  87.       This will read the lastfiles file (usually .lyx_lastfiles). It
  88.       will normally discard files that don't exist anymore, unless
  89.       LastFiles has been initialized with dostat = false. 
  90.      */
  91.     void readFile(LString const &);
  92.     /// used by the constructor to set the number of stored last files.
  93.         void setNumberOfFiles(char num);
  94.     //@}
  95.  
  96.     /**@name Friends */
  97.     //@{
  98.     ///
  99.     friend class LastFiles_Iter;
  100.     //@}
  101. };
  102.  
  103.  
  104. /// An Iterator class for LastFiles
  105. class LastFiles_Iter {
  106. public:
  107.     ///
  108.     LastFiles_Iter(const LastFiles& la)
  109.     {cs = &la; index = 0;}
  110.     ///
  111.     LString operator() ()
  112.     {
  113.         return (index < cs->num_files)? cs->files[index++] 
  114.                             : LString();
  115.     }
  116.     ///
  117.     LString operator[] (int a)
  118.     { return cs->files[a];}
  119. private:
  120.     ///
  121.     const LastFiles *cs;
  122.     ///
  123.     char index;
  124. };
  125.  
  126. #endif
  127.