00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef BAKERY_VIEW_H
00020 #define BAKERY_VIEW_H
00021
00022 #include "ViewBase.h"
00023 #include "../Document/Document.h"
00024 #include <sigc++/sigc++.h>
00025
00026 namespace Bakery
00027 {
00028
00032 template< class T_Document >
00033 class View : public ViewBase
00034 {
00035 public:
00036 View()
00037 : m_pDocument(0)
00038 {
00039 }
00040
00041 virtual ~View()
00042 {
00043 }
00044
00045 typedef View<T_Document> type_self;
00046
00047
00048
00049 virtual T_Document* get_document()
00050 {
00051 return m_pDocument;
00052 }
00053
00054 virtual const T_Document* get_document() const
00055 {
00056 return m_pDocument;
00057 }
00058
00059 virtual void set_document(T_Document* pDocument)
00060 {
00061 m_pDocument = pDocument;
00062 if(m_pDocument)
00063 m_pDocument->signal_forget().connect( sigc::mem_fun(*this, &type_self::on_document_forget) );
00064 }
00065
00067 virtual void set_modified(bool val = true)
00068 {
00069 if(m_pDocument)
00070 m_pDocument->set_modified(val);
00071 }
00072
00073 protected:
00074
00075 void on_document_forget()
00076 {
00077
00078 m_pDocument = 0;
00079 }
00080
00081 T_Document* m_pDocument;
00082 };
00083
00084 }
00085
00086 #endif //BAKERY_VIEW_H
00087