#ifndef JUCI_NOTEBOOK_H_ #define JUCI_NOTEBOOK_H_ #include #include "gtkmm.h" #include "entry.h" #include "source.h" #include "directories.h" #include #include #include #include #include "clangmm.h" #include "keybindings.h" namespace Notebook { class View { public: View(); Gtk::Paned& view() {return view_;} Gtk::Notebook& notebook() {return notebook_; } protected: Gtk::Paned view_; Gtk::Notebook notebook_; }; class Controller { public: Controller(Gtk::Window* window, Keybindings::Controller& keybindings, Source::Config& config, Directories::Config& dir_cfg); ~Controller(); Source::View& CurrentTextView(); int CurrentPage(); Gtk::Notebook& Notebook(); void OnCloseCurrentPage(); std::string GetCursorWord(); void OnEditCopy(); void OnEditCut(); void OnEditPaste(); void OnEditSearch(); void OnFileNewFile(); bool OnSaveFile(); bool OnSaveFile(std::string path); void OnDirectoryNavigation(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column); void OnOpenFile(std::string filename); int Pages(); Gtk::Paned& view(); void Search(bool forward); std::string OnSaveFileAs(); std::string project_path; Directories::Controller directories; //Todo: make private after creating open_directory() Entry entry; private: void CreateKeybindings(Keybindings::Controller& keybindings); void AskToSaveDialog(); Glib::RefPtr m_refBuilder; Glib::RefPtr refActionGroup; Source::Config& source_config; View view_; std::vector > text_vec_; std::vector scrolledtext_vec_; std::vector editor_vec_; std::list listTargets_; Gtk::TextIter search_match_end_; Gtk::TextIter search_match_start_; Glib::RefPtr refClipboard_; Gtk::Window* window_; }; // class controller } // namespace Notebook #endif // JUCI_NOTEBOOK_H_