From a3e7a560d17f94bd1ad48b806502c1e679453c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lien=20Sell=C3=A6g?= Date: Wed, 18 Feb 2015 17:26:59 +0100 Subject: [PATCH] Create new nodes --- juci/CMakeLists.txt | 16 +++++++++++---- juci/source.cc | 48 +++++++++++++++++++++++++++++++++++++++++---- juci/source.h | 33 +++++++++++++++++++++++++------ 3 files changed, 83 insertions(+), 14 deletions(-) diff --git a/juci/CMakeLists.txt b/juci/CMakeLists.txt index 5581401..a47fe1c 100644 --- a/juci/CMakeLists.txt +++ b/juci/CMakeLists.txt @@ -4,11 +4,19 @@ set(module juci_to_python_api) project (${project_name}) - +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules/") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") INCLUDE(FindPkgConfig) +#libclang_LIBRARIES +#libclang_INCLUDE_DIR +find_package(Libclang) + +message("Libclang libraries ${Libclang_LIBRARIES}") +message("Libclang libraries ${Libclang_LIBRARY}") +message("Libclang include dirs ${Libclang_INCLUDE_DIR}") + #### Finding boost, the variables below is set ##### #PYTHONLIBS_FOUND - True if headers and requested libraries were found #PYTHON_INCLUDE_DIRS - Boost include directories @@ -85,11 +93,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_;