mirror of https://gitlab.com/cppit/jucipp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.1 KiB
84 lines
2.1 KiB
#include "source.h" |
|
#include <iostream> |
|
|
|
////////////// |
|
//// 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<string, string>& Source::Theme::tagtable() const { |
|
return tagtable_; |
|
} |
|
|
|
// Source::View::Theme::SetTagTable() |
|
// sets the tagtable for the view |
|
void Source::Theme::SetTagTable( |
|
const std::unordered_map<string, string> &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(); |
|
}
|
|
|