#include "source.h" #include ////////////// //// View //// ////////////// Source::View::View() { std::cout << "View constructor run" << std::endl; } // Source::View::UpdateLine // returns the new line string Source::View::UpdateLine() { Gtk::TextIter line(get_buffer()->get_insert()->get_iter()); // for each word --> check what it is --> apply appropriate tag // retUrn ""; } String Source::View::Getline(const Gtk::TextIter &begin) { Gtk::TextIter end(begin); while (!end.ends_line()) end++; return begin.get_text(end); } // Source::View::ApplyTheme() // Applies theme in textview void Source::View::ApplyTheme(const Source::Theme &theme) { for (auto &item : theme.tagtable()) { get_buffer()->create_tag(item.first)->property_foreground() = item.second; } } // Source::View::Theme::tagtable() // returns a const refrence to the tagtable const std::unordered_map& Source::Theme::tagtable() const { return tagtable_; } // Source::View::Theme::SetTagTable() // sets the tagtable for the view void Source::Theme::SetTagTable( const std::unordered_map &tagtable) { tagtable_ = tagtable; } /////////////// //// Model //// /////////////// Source::Model::Model() { std::cout << "Model constructor run" << std::endl; } const string Source::Model::filepath() { return filepath_; } //////////////////// //// Controller //// //////////////////// // Source::Controller::Controller() // Constructor for Controller Source::Controller::Controller() { std::cout << "Controller constructor run" << std::endl; view().get_buffer()->signal_changed().connect([this](){ this->OnLineEdit(); }); } // Source::Controller::view() // return shared_ptr to the view Source::View& Source::Controller::view() { return view_; } // Source::Controller::model() // return shared_ptr to the model() Source::Model& Source::Controller::model() { return model_; } // Source::Controller::OnLineEdit() // fired when a line in the buffer is edited void Source::Controller::OnLineEdit() { view().UpdateLine(); }