]> www.fi.muni.cz Git - evince.git/blob - dvi/model.hh
Updated Swedish translation.
[evince.git] / dvi / model.hh
1 #ifndef MODEL_HH
2 #define MODEL_HH
3
4 #include "dl-refcounted.hh"
5 #include "dl-dvi-file.hh"
6 #include "observer.hh"
7 #include <list>
8
9 enum ModelState {
10     HAS_FILE,
11     NO_FILE,
12     ERROR
13 };
14
15 using DviLib::FileLoader;
16 using DviLib::DviFile;
17 using DviLib::RefCounted;
18 using std::string;
19
20 class Model : public RefCounted {
21     ModelState state;
22     DviFile *dvi_file;
23     string file_name;
24     string err_msg;
25     vector <Observer *> observers;
26     
27 public:
28     Model (string file_name);
29     Model (void);
30     void add_observer (Observer& o)
31     {
32         observers.push_back (&o);
33     }
34     void notify (void)
35     {
36         typedef vector <Observer *>::const_iterator It;
37         for (It i = observers.begin(); i != observers.end(); ++i)
38             (*i)->notify ();
39     }
40     ModelState get_state (void) { return state; }
41     string get_error (void) {
42         if (state == ERROR)
43             return err_msg;
44         else
45             return "";
46     };
47     DviFile *get_dvi_file (void) {
48         if (state == HAS_FILE)
49             return dvi_file;
50         else
51             return 0;
52     };
53     string get_file_name (void) {
54         if (state == HAS_FILE)
55             return file_name;
56         else
57             return "";
58     };
59 };
60
61 #endif