diff options
author | Søren Sandmann <sandmann@redhat.com> | 2004-12-21 23:57:26 (GMT) |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@src.gnome.org> | 2004-12-21 23:57:26 (GMT) |
commit | 4296951e94a43c723e9522b588cab178eb66d144 (patch) | |
tree | 63ba229741d10df67fe87f24b6241903e16e9764 /dvi/model.hh | |
parent | 3e73e947a3a8c03da8f35f52e2a42ba066e2be2a (diff) |
New directory with the beginning of a .dvi backend.
Tue Dec 21 18:55:06 2004 Søren Sandmann <sandmann@redhat.com>
* dvi/*: New directory with the beginning of a .dvi backend.
Diffstat (limited to 'dvi/model.hh')
-rwxr-xr-x | dvi/model.hh | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/dvi/model.hh b/dvi/model.hh new file mode 100755 index 0000000..749c640 --- /dev/null +++ b/dvi/model.hh @@ -0,0 +1,61 @@ +#ifndef MODEL_HH +#define MODEL_HH + +#include "dl-refcounted.hh" +#include "dl-dvi-file.hh" +#include "observer.hh" +#include <list> + +enum ModelState { + HAS_FILE, + NO_FILE, + ERROR +}; + +using DviLib::FileLoader; +using DviLib::DviFile; +using DviLib::RefCounted; +using std::string; + +class Model : public RefCounted { + ModelState state; + DviFile *dvi_file; + string file_name; + string err_msg; + vector <Observer *> observers; + +public: + Model (string file_name); + Model (void); + void add_observer (Observer& o) + { + observers.push_back (&o); + } + void notify (void) + { + typedef vector <Observer *>::const_iterator It; + for (It i = observers.begin(); i != observers.end(); ++i) + (*i)->notify (); + } + ModelState get_state (void) { return state; } + string get_error (void) { + if (state == ERROR) + return err_msg; + else + return ""; + }; + DviFile *get_dvi_file (void) { + if (state == HAS_FILE) + return dvi_file; + else + return 0; + }; + string get_file_name (void) { + if (state == HAS_FILE) + return file_name; + else + return ""; + }; +}; + +#endif |