00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef BAKERY_APP_WITHDOC_H
00020 #define BAKERY_APP_WITHDOC_H
00021
00022 #include <bakery/App/App.h>
00023 #include <bakery/Document/Document.h>
00024
00025 namespace Bakery
00026 {
00027
00056 class App_WithDoc : virtual public App
00057 {
00058 public:
00060 App_WithDoc(const Glib::ustring& appname);
00061 virtual ~App_WithDoc();
00062
00063 virtual void init();
00064
00065 enum enumSaveChanges
00066 {
00067 SAVECHANGES_Save,
00068 SAVECHANGES_Cancel,
00069 SAVECHANGES_Discard
00070 };
00071
00072 protected:
00073 virtual void init_create_document();
00074
00076 virtual Document* get_document();
00077
00079 virtual const Document* get_document() const ;
00080
00081 virtual void set_document_modified(bool bModified = true);
00082
00084 virtual bool open_document(const Glib::ustring& strFilepath);
00085
00086 static void document_history_add(const Glib::ustring& strFilepath);
00087 static void document_history_remove(const Glib::ustring& strFilepath);
00088
00089 static void session_load_document_history();
00090 static void session_save_document_history();
00091
00092
00093
00094 public:
00095
00096 virtual void on_menu_file_open();
00097 virtual void on_menu_file_open_recent(guint index);
00098 virtual void on_menu_file_saveas();
00099 virtual void offer_saveas();
00100 virtual void on_menu_file_save();
00101 virtual void on_menu_file_close();
00102
00103 virtual void on_menu_edit_copy();
00104 virtual void on_menu_edit_paste();
00105 virtual void on_menu_edit_clear();
00106
00107
00109 virtual void on_document_modified();
00110
00112 virtual void on_document_load();
00113
00114
00115 virtual void offer_to_save_changes();
00116
00118 virtual void cancel_close_or_exit();
00119
00121 virtual void close_mark_or_destroy();
00122
00123 virtual void update_window_title();
00124 static void show_document_history_in_all_instances();
00125 virtual void show_document_history();
00126 virtual void after_successful_save();
00127
00128 virtual void ui_warning(const Glib::ustring& text) = 0;
00129 virtual Glib::ustring ui_file_select_open() = 0;
00130 virtual Glib::ustring ui_file_select_save(const Glib::ustring& old_filepath) = 0;
00131 virtual void ui_show_modification_status() = 0;
00132
00133 virtual enumSaveChanges ui_offer_to_save_changes() = 0;
00134
00135 virtual bool ui_ask_overwrite(const std::string& filepath) = 0;
00136
00137 static Glib::ustring get_conf_fullkey(const Glib::ustring& key);
00138
00139
00140
00141 Document* m_pDocument;
00142 bool m_bCloseAfterSave;
00143
00144 typedef std::vector<Glib::ustring> type_vecStrings;
00145 static type_vecStrings m_vecDocHistory;
00146 };
00147
00148 }
00149
00150 #endif //BAKERY_APP_WITHDOC_H