]> git.lyx.org Git - lyx.git/blob - src/lastfiles.h
Forgot to add this files.
[lyx.git] / src / lastfiles.h
1 // -*- C++ -*-
2 /* This file is part of
3  * ====================================================== 
4  * 
5  *           LyX, The Document Processor
6  *       
7  *           Copyright 1995 Matthias Ettrich
8  *           Copyright 1995-2000 The LyX Team.
9  *
10  * ====================================================== */
11
12 #ifndef LASTFILES_H
13 #define LASTFILES_H
14
15 #ifdef __GNUG__
16 #pragma interface
17 #endif
18
19 #include <deque>
20
21 #include "LString.h"
22 #include "support/utility.hpp"
23
24 /** The latest documents loaded.
25     This class takes care of the last .lyx files used by the LyX user. It
26     both reads and writes this information to a file. The number of files
27     kept are user defined, but defaults to four.
28     @author Lars Gullik Bjønnes
29 */
30 class LastFiles : public noncopyable {
31 public:
32         ///
33         typedef std::deque<string> Files;
34
35         ///
36         typedef Files::const_iterator const_iterator;
37         
38         /** Read the lastfiles file.
39            @param file The file to read the lastfiles form.
40            @param dostat Whether to check for file existance.
41            @param num number of files to remember.
42         */
43         explicit
44         LastFiles(string const & file,
45                   bool dostat = true, unsigned int num = 4);
46         
47         /**
48            This funtion inserts #file# into the last files list. If the file
49            already exist it is moved to the top of the list, else exist it
50            is placed on the top of the list. If the list is full the last
51            file in the list is popped from the end.
52         */
53         void newFile(string const & file);
54         /**  Writes the lastfiles table to disk. One file on each line, this
55              way we can at least have some special chars (e.g. space), but
56              newline in filenames are thus not allowed.
57         */
58         void writeFile(string const &) const;
59         ///
60         string const operator[](unsigned int) const;
61         ///
62         Files::const_iterator begin() const { return files.begin(); }
63         ///
64         Files::const_iterator end() const { return files.end(); }
65 private:
66         /** Local constants.
67             It is more portable among different C++ compilers to use
68             an enum instead of #int const XXX#
69         */
70         enum local_constants {
71                 /// Default number of lastfiles.
72                 DEFAULTFILES = 4,
73                 /** Max number of lastfiles.
74                     There is no point in keeping more than this number
75                     of files at the same time. However perhaps someday
76                     someone finds use for more files and wants to
77                     change it. Please do. But don't show the files in
78                     a menu...
79                 */
80                 ABSOLUTEMAXLASTFILES = 20
81         };
82         
83         /// a list of lastfiles
84         Files files;
85         /// number of files in the lastfiles list.
86         unsigned int num_files;
87         /// check for file existance or not.
88         bool dostat;
89         
90         /** Read the lastfiles file.
91             Reads the .lyx_lastfiles at the beginning of the LyX session.
92             This will read the lastfiles file (usually .lyx_lastfiles). It
93             will normally discard files that don't exist anymore, unless
94             LastFiles has been initialized with dostat = false. 
95         */
96         void readFile(string const &);
97         /// used by the constructor to set the number of stored last files.
98         void setNumberOfFiles(unsigned int num);
99 };
100 #endif