diff --git a/juci/CMakeLists.txt b/juci/CMakeLists.txt index d955509..ad2d5e2 100644 --- a/juci/CMakeLists.txt +++ b/juci/CMakeLists.txt @@ -81,11 +81,11 @@ add_library(${module} SHARED ) # dependencies -include_directories(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS}) -link_directories(${GTKMM_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS} ${PYTHON_INCLUDE_DIRS}) +include_directories(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS} "/home/zalox/bachelor/libclang++/") +link_directories(${GTKMM_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS} ${PYTHON_INCLUDE_DIRS} "/home/zalox/bachelor/libclang++/") #module: set_target_properties(${module} PROPERTIES PREFIX "") target_link_libraries(${module} ${PYTHON_LIBRARIES} ${Boost_LIBRARIES}) #executable: -target_link_libraries(${project_name} ${GTKMM_LIBRARIES} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) +target_link_libraries(${project_name} ${GTKMM_LIBRARIES} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} "/home/zalox/bachelor/libclang++/") diff --git a/juci/source.cc b/juci/source.cc index 9fb3b05..735e8d4 100644 --- a/juci/source.cc +++ b/juci/source.cc @@ -7,10 +7,41 @@ 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; + } +} -void Source::View::UpdateLine(Glib::RefPtr mark) { - std::cout << "Update line called. linum: "; - std::cout << mark->get_iter().get_line() << std::endl; +// 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; } /////////////// @@ -20,6 +51,10 @@ Source::Model::Model() { std::cout << "Model constructor run" << std::endl; } +const string Source::Model::filepath() { + return filepath_; +} + //////////////////// //// Controller //// //////////////////// @@ -28,6 +63,9 @@ Source::Model::Model() { // 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 @@ -41,4 +79,6 @@ Source::Model& Source::Controller::model() { } // Source::Controller::OnLineEdit() // fired when a line in the buffer is edited -void Source::Controller::OnLineEdit(Glib::RefPtr mark) {} +void Source::Controller::OnLineEdit() { + view().UpdateLine(); +} diff --git a/juci/source.h b/juci/source.h index 4c901f4..2e06a40 100644 --- a/juci/source.h +++ b/juci/source.h @@ -1,21 +1,40 @@ #ifndef JUCI_SOURCE_H_ #define JUCI_SOURCE_H_ -#include +#include +#include +#include #include "gtkmm.h" +using std::string; + namespace Source { + class Theme { + public: + const std::unordered_map& tagtable() const; + void SetTagTable(const std::unordered_map &tagtable); + private: + std::unordered_map tagtable_; + string background_; + }; // class Theme + class View : public Gtk::TextView { public: View(); - void UpdateLine(Glib::RefPtr mark); + string UpdateLine(); + void ApplyTheme(const Theme &theme); private: - void UpdateSyntaxHighlighting(int line_number); - }; + string GetLine(const Gtk::TextIter &begin); + }; // class View class Model{ public: Model(); + Theme theme(); + const string filepath(); + private: + Theme theme_; + string filepath_; }; class Controller { @@ -25,8 +44,10 @@ namespace Source { Model& model(); private: - void OnLineEdit(Glib::RefPtr mark); - + void OnLineEdit(); + void OnOpenFile(); + void OnSaveFile(); + protected: View view_; Model model_;