Browse Source

merge

merge-requests/365/head
Jørgen Lien Sellæg 11 years ago
parent
commit
0a9971910a
  1. 24
      juci/CMakeLists.txt
  2. 13
      juci/juci.cc
  3. 2
      juci/juci.h
  4. 21
      juci/keybindings.cc
  5. 28
      juci/keybindings.h
  6. 153
      juci/menu.cc
  7. 52
      juci/menu.h
  8. 7
      juci/window.cc

24
juci/CMakeLists.txt

@ -3,7 +3,7 @@ set(project_name juci)
project (${project_name}) project (${project_name})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
INCLUDE(FindPkgConfig) INCLUDE(FindPkgConfig)
@ -18,9 +18,9 @@ if(${PYTHONLIBS_FOUND})
message("Python libraries found. Continuing") message("Python libraries found. Continuing")
else() else()
message("Please install python libraries. The libraries where not found.") message("Please install python libraries. The libraries where not found.")
message("Boost include dirs: ${PYTHON_INCLUDE_DIRS}") message("Python include dirs: ${PYTHON_INCLUDE_DIRS}")
message("Boost link dirs ${PYTHON_LIBRARIES}") message("Python link dirs ${PYTHON_LIBRARIES}")
message(FATAL_ERROR "The boost libraries are required. Quiting.") message(FATAL_ERROR "The python libraries are required. Quitting.")
endif() endif()
#### Finding boost, the variables below is set ##### #### Finding boost, the variables below is set #####
@ -38,7 +38,7 @@ else()
message("Boost library dirs: ${Boost_LIBRARY_DIRS}") message("Boost library dirs: ${Boost_LIBRARY_DIRS}")
message("Boost include dirs: ${Boost_INCLUDE_DIRS}") message("Boost include dirs: ${Boost_INCLUDE_DIRS}")
message("Boost link dirs ${Boost_LIBRARIES}") message("Boost link dirs ${Boost_LIBRARIES}")
message(FATAL_ERROR "The boost libraries are required. Quiting.") message(FATAL_ERROR "The boost libraries are required. Quitting.")
endif() endif()
#### Finding gtkmm, the variables below is set ##### #### Finding gtkmm, the variables below is set #####
@ -56,19 +56,19 @@ else()
message("Gtkmm library dirs ${GTKMM_LIBRARY_DIRS}") message("Gtkmm library dirs ${GTKMM_LIBRARY_DIRS}")
message("Gtkmm include dirs ${GTKMM_INCLUDE_DIRS}") message("Gtkmm include dirs ${GTKMM_INCLUDE_DIRS}")
message("Gtkmm link dirs ${GTKMM_LIBRARIES}") message("Gtkmm link dirs ${GTKMM_LIBRARIES}")
message(FATAL_ERROR "The gtkmm libraries are required. Quiting.") message(FATAL_ERROR "The gtkmm libraries are required. Quitting.")
endif() endif()
# name of the executable on Windows will be example.exe # name of the executable on Windows will be example.exe
add_executable(${project_name} add_executable(${project_name}
# list of every needed file to create the executable # list of every needed file to create the executable
menu.h keybindings
menu.cc menu
source.h source
source.cc window
window.cc juci
juci.cc #there is no need for extentions
) )
# dependencies # dependencies

13
juci/juci.cc

@ -3,16 +3,7 @@ int main(int argc, char *argv[]) {
Glib::RefPtr<Gtk::Application> app = Gtk::Application::create( Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(
argc, argc,
argv, argv,
"no.sout.juci" "no.sout.juci");
);
Window window; Window window;
return app->run(window);; return app->run(window);
}
////////////////
//// Window ////
////////////////
std::shared_ptr<Source::Controller> Window::source() {
return std::shared_ptr<Source::Controller>(&source_);
} }

2
juci/juci.h

@ -10,7 +10,7 @@
class Window : public Gtk::Window { class Window : public Gtk::Window {
public: public:
Window(); Window();
virtual ~Window(){}; virtual ~Window() {}
Gtk::Box window_box_; Gtk::Box window_box_;
std::shared_ptr<Source::Controller> source(); std::shared_ptr<Source::Controller> source();
private: private:

21
juci/keybindings.cc

@ -0,0 +1,21 @@
#include "keybindings.h"
Keybindings::Controller::Controller() {
action_group_ = Gtk::ActionGroup::create();
ui_manager_ = Gtk::UIManager::create();
}
Keybindings::Controller::~Controller(){
}
void Keybindings::Controller::set_ui_manager_action_group(Glib::RefPtr<Gtk::ActionGroup> action_group) {
ui_manager_->insert_action_group(action_group);
}
void Keybindings::Controller::set_ui_manger_string(std::string ui_string) {
try {
ui_manager_->add_ui_from_string(ui_string);
}
catch (const Glib::Error &ex) {
std::cerr << "building menus failed: " << ex.what();
}
}

28
juci/keybindings.h

@ -0,0 +1,28 @@
#include "iostream"
#include "gtkmm.h"
namespace Keybindings {
class Controller {
public:
Controller();
virtual ~Controller();
Glib::RefPtr<Gtk::ActionGroup> action_group() {
return action_group_;
};
Glib::RefPtr<Gtk::UIManager> ui_manager() {
return ui_manager_;
};
void set_ui_manger_string(std::string ui_string);
void set_ui_manager_action_group(Glib::RefPtr<Gtk::ActionGroup> action_group);
protected:
Glib::RefPtr<Gtk::UIManager> ui_manager_;
Glib::RefPtr<Gtk::ActionGroup> action_group_;
};
}

153
juci/menu.cc

@ -53,196 +53,187 @@ Menu::Model::~Model() {
Menu::View::View(Gtk::Orientation orientation) : Menu::View::View(Gtk::Orientation orientation) :
view_(orientation) { view_(orientation) {
action_group_ = Gtk::ActionGroup::create();
ui_manager_ = Gtk::UIManager::create();
}
void Menu::View::set_ui_manger_string(std::string ui_string) {
try {
ui_manager_->add_ui_from_string(ui_string);
}
catch (const Glib::Error &ex) {
std::cerr << "building menus failed: " << ex.what();
}
} }
void Menu::View::set_ui_manager_action_group(Glib::RefPtr<Gtk::ActionGroup> Glib::RefPtr<Gtk::Box> Menu::View::view(
action_group) { Glib::RefPtr<Gtk::UIManager> ui_manager) {
ui_manager_->insert_action_group(action_group); view_.pack_start(*ui_manager->get_widget("/MenuBar"), Gtk::PACK_SHRINK);
}
Glib::RefPtr<Gtk::Box> Menu::View::view() {
view_.pack_start(*ui_manager_->get_widget("/MenuBar"), Gtk::PACK_SHRINK);
return Glib::RefPtr<Gtk::Box>(&view_); return Glib::RefPtr<Gtk::Box>(&view_);
} }
Menu::View::~View() { Menu::View::~View() {
} }
/***********************************/ /***********************************/
/* CONTROLLER */ /* CONTROLLER */
/***********************************/ /***********************************/
Menu::Controller::Controller() : Menu::Controller::Controller(Keybindings::Controller keybindings) :
menu_view_(Gtk::ORIENTATION_VERTICAL), menu_view_(Gtk::ORIENTATION_VERTICAL),
menu_model_() { menu_model_(),
keybindings_(keybindings){
/* Add action to menues */ /* Add action to menues */
/* START file menu */ /* START file menu */
menu_view_.action_group()->add(Gtk::Action::create("FileMenu", Gtk::Stock::FILE)); keybindings_.action_group()->add(Gtk::Action::create("FileMenu", Gtk::Stock::FILE));
/* File->New files */ /* File->New files */
menu_view_.action_group()->add(Gtk::Action::create("FileNew", "New")); keybindings_.action_group()->add(Gtk::Action::create("FileNew", "New"));
keybindings_.action_group()->add(Gtk::Action::create("FileNewStandard",
menu_view_.action_group()->add(Gtk::Action::create("FileNewStandard",
Gtk::Stock::NEW, "New empty file", "Create a new file"), Gtk::Stock::NEW, "New empty file", "Create a new file"),
[this]() { [this]() {
onFileNewEmptyfile(); OnFileNewEmptyfile();
}); });
menu_view_.action_group()->add(Gtk::Action::create("FileNewCC", keybindings_.action_group()->add(Gtk::Action::create("FileNewCC",
Gtk::Stock::NEW, "New cc file", "Create a new cc file"), Gtk::Stock::NEW, "New cc file", "Create a new cc file"),
Gtk::AccelKey("<control><alt>c"), Gtk::AccelKey("<control><alt>c"),
[this]() { [this]() {
onFileNewCCFile(); OnFileNewCCFile();
}); });
menu_view_.action_group()->add(Gtk::Action::create("FileNewH", keybindings_.action_group()->add(Gtk::Action::create("FileNewH",
Gtk::Stock::NEW, "New h file", "Create a new h file"), Gtk::Stock::NEW, "New h file", "Create a new h file"),
Gtk::AccelKey("<control><alt>h"), Gtk::AccelKey("<control><alt>h"),
[this]() { [this]() {
onFileNewHeaderFile(); OnFileNewHeaderFile();
}); });
/* File-> New files end */ /* File-> New files end */
menu_view_.action_group()->add(Gtk::Action::create("FileOpenFile", Gtk::Stock::OPEN), keybindings_.action_group()->add(Gtk::Action::create("FileOpenFile", Gtk::Stock::OPEN),
[this]() { [this]() {
onFileOpenFile(); OnFileOpenFile();
}); });
menu_view_.action_group()->add(Gtk::Action::create("FileOpenFolder", "Open folder"), keybindings_.action_group()->add(Gtk::Action::create("FileOpenFolder", "Open folder"),
[this]() { [this]() {
onFileOpenFolder(); OnFileOpenFolder();
}); });
menu_view_.action_group()->add(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT), keybindings_.action_group()->add(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT),
[this]() { [this]() {
onSystemQuit(); OnSystemQuit();
}); });
/* END file menu */ /* END file menu */
/* START edit menu */ /* START edit menu */
menu_view_.action_group()->add(Gtk::Action::create("EditMenu", Gtk::Stock::EDIT)); keybindings_.action_group()->add(Gtk::Action::create("EditMenu", Gtk::Stock::EDIT));
menu_view_.action_group()->add(Gtk::Action::create("EditCopy", Gtk::Stock::COPY), keybindings_.action_group()->add(Gtk::Action::create("EditCopy", Gtk::Stock::COPY),
[this]() { [this]() {
onEditCopy(); OnEditCopy();
}); });
menu_view_.action_group()->add(Gtk::Action::create("EditCut", Gtk::Stock::CUT), keybindings_.action_group()->add(Gtk::Action::create("EditCut", Gtk::Stock::CUT),
[this]() { [this]() {
onEditCut(); OnEditCut();
}); });
menu_view_.action_group()->add(Gtk::Action::create("EditPaste", Gtk::Stock::PASTE), keybindings_.action_group()->add(Gtk::Action::create("EditPaste", Gtk::Stock::PASTE),
[this]() { [this]() {
onEditPaste(); OnEditPaste();
}); });
menu_view_.action_group()->add(Gtk::Action::create("EditFind", Gtk::Stock::FIND), keybindings_.action_group()->add(Gtk::Action::create("EditFind", Gtk::Stock::FIND),
[this]() { [this]() {
onEditFind(); OnEditFind();
}); });
/* END edit menu */ /* END edit menu */
/* START window menu */ /* START window menu */
menu_view_.action_group()->add(Gtk::Action::create("WindowMenu", "_Window")); keybindings_.action_group()->add(Gtk::Action::create("WindowMenu", "_Window"));
menu_view_.action_group()->add(Gtk::Action::create("WindowCloseTab", "Close tab"), keybindings_.action_group()->add(Gtk::Action::create("WindowCloseTab", "Close tab"),
Gtk::AccelKey("<control>w"), Gtk::AccelKey("<control>w"),
[this]() { [this]() {
onWindowCloseTab(); OnWindowCloseTab();
}); });
menu_view_.action_group()->add(Gtk::Action::create("WindowSplitWindow", "Split window"), keybindings_.action_group()->add(Gtk::Action::create("WindowSplitWindow", "Split window"),
Gtk::AccelKey("<control><alt>S"), Gtk::AccelKey("<control><alt>S"),
[this]() { [this]() {
onWindowSplitWindow(); OnWindowSplitWindow();
}); });
/* END window menu */ /* END window menu */
/* START Plugin menu */ /* START Plugin menu */
menu_view_.action_group()->add(Gtk::Action::create("PluginMenu", "_Plugins")); keybindings_.action_group()->add(Gtk::Action::create("PluginMenu", "_Plugins"));
/*Plugin->snippet*/ /*Plugin->snippet*/
menu_view_.action_group()->add(Gtk::Action::create("PluginSnippet", "Snippet")); keybindings_.action_group()->add(Gtk::Action::create("PluginSnippet", "Snippet"));
menu_view_.action_group()->add(Gtk::Action::create("PluginAddSnippet", "Add snippet"), keybindings_.action_group()->add(Gtk::Action::create("PluginAddSnippet", "Add snippet"),
Gtk::AccelKey("<alt>space"), Gtk::AccelKey("<alt>space"),
[this]() { [this]() {
onPluginAddSnippet(); OnPluginAddSnippet();
}); });
/* End snippet */ /* End snippet */
/* END plugin menu */ /* END plugin menu */
/* START help menu */ /* START help menu */
menu_view_.action_group()->add(Gtk::Action::create("HelpMenu", Gtk::Stock::HELP)); keybindings_.action_group()->add(Gtk::Action::create("HelpMenu", Gtk::Stock::HELP));
menu_view_.action_group()->add(Gtk::Action::create("HelpAbout", Gtk::Stock::ABOUT), keybindings_.action_group()->add(Gtk::Action::create("HelpAbout", Gtk::Stock::ABOUT),
[this]() { [this]() {
onHelpAbout(); OnHelpAbout();
}); });
/* END help menu */
menu_view_.set_ui_manager_action_group(menu_view_.action_group()); /* END help menu */
menu_view_.set_ui_manger_string(menu_model_.ui_string());
}
Menu::Controller::~Controller() {
keybindings_.ui_manager()->add_ui_from_string(menu_model_.ui_string());
keybindings_.ui_manager()->insert_action_group(keybindings_.action_group());
} }
Glib::RefPtr<Gtk::Box> Menu::Controller::view() { Menu::Controller::~Controller() {
return menu_view_.view();
} }
void Menu::Controller::onFileNewEmptyfile() { void Menu::Controller::OnFileNewEmptyfile() {
std::cout << "New file clicked" << std::endl; std::cout << "New file clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onFileNewCCFile() {
void Menu::Controller::OnFileNewCCFile() {
std::cout << "New cc file clicked" << std::endl; std::cout << "New cc file clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onFileNewHeaderFile() { void Menu::Controller::OnFileNewHeaderFile() {
std::cout << "New cc file clicked" << std::endl; std::cout << "New cc file clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onSystemQuit(){
void Menu::Controller::OnSystemQuit() {
//TODO(Oyvang, Zalox, Forgie) Add everything that needs to be done before quiting //TODO(Oyvang, Zalox, Forgie) Add everything that needs to be done before quiting
/*Quit the system*/ /*Quit the system*/
Gtk::Main::quit(); //TODO(Oyvang, Zalox, Forgie) methode is depricated, find a better solution.
} }
void Menu::Controller::onPluginAddSnippet() {
void Menu::Controller::OnPluginAddSnippet() {
std::cout << "Add snipper" << std::endl; //TODO(Forgi add you snippet magic code) std::cout << "Add snipper" << std::endl; //TODO(Forgi add you snippet magic code)
} }
void Menu::Controller::onFileOpenFile() {
void Menu::Controller::OnFileOpenFile() {
std::cout << "Open file clicked" << std::endl; std::cout << "Open file clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onFileOpenFolder() {
void Menu::Controller::OnFileOpenFolder() {
std::cout << "Open folder clicked" << std::endl; std::cout << "Open folder clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onWindowCloseTab() {
void Menu::Controller::OnWindowCloseTab() {
std::cout << "Closing tab clicked" << std::endl; std::cout << "Closing tab clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onEditCopy() {
void Menu::Controller::OnEditCopy() {
std::cout << "Clicked copy" << std::endl; std::cout << "Clicked copy" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onEditCut() {
void Menu::Controller::OnEditCut() {
std::cout << "Clicked cut" << std::endl; std::cout << "Clicked cut" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onEditPaste() {
void Menu::Controller::OnEditPaste() {
std::cout << "Clicked paste" << std::endl; std::cout << "Clicked paste" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onEditFind() {
void Menu::Controller::OnEditFind() {
std::cout << "Clicked find" << std::endl; std::cout << "Clicked find" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onWindowSplitWindow() {
void Menu::Controller::OnWindowSplitWindow() {
std::cout << "Clicked split window" << std::endl; std::cout << "Clicked split window" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }
void Menu::Controller::onHelpAbout() {
void Menu::Controller::OnHelpAbout() {
std::cout << "Clicked about" << std::endl; std::cout << "Clicked about" << std::endl;
//TODO(Oyvang) Legg til funksjon //TODO(Oyvang) Legg til funksjon
} }

52
juci/menu.h

@ -3,11 +3,13 @@
#include <iostream> #include <iostream>
#include "gtkmm.h" #include "gtkmm.h"
#include "keybindings.h"
namespace Menu { namespace Menu {
class Model { class Model {
public: public:
Model(); Model();
virtual~Model(); virtual ~Model();
std::string ui_string() { return ui_string_; } std::string ui_string() { return ui_string_; }
private: private:
std::string ui_string_; std::string ui_string_;
@ -17,49 +19,35 @@ namespace Menu {
public: public:
explicit View(Gtk::Orientation orient); explicit View(Gtk::Orientation orient);
virtual ~View(); virtual ~View();
Glib::RefPtr<Gtk::Box> view(); Glib::RefPtr<Gtk::Box> view(Glib::RefPtr<Gtk::UIManager> ui_manager);
Glib::RefPtr <Gtk::ActionGroup> action_group() {
return action_group_;
}
Glib::RefPtr <Gtk::UIManager> ui_manager() {
return ui_manager_;
}
void set_ui_manger_string(std::string ui_string);
void set_ui_manager_action_group(
Glib::RefPtr<Gtk::ActionGroup> action_group);
protected: protected:
Gtk::Box view_; Gtk::Box view_;
Glib::RefPtr <Gtk::UIManager> ui_manager_;
Glib::RefPtr <Gtk::ActionGroup> action_group_;
}; // class View }; // class View
// controller // controller
class Controller { class Controller {
public: public:
Controller(); explicit Controller(Keybindings::Controller keybindings);
virtual ~Controller(); virtual ~Controller();
Glib::RefPtr<Gtk::Box> view();
Glib::RefPtr <Gtk::UIManager> ui_manager() {
return menu_view_.ui_manager();
}
private: private:
Keybindings::Controller keybindings_;
View menu_view_; View menu_view_;
Model menu_model_; Model menu_model_;
void onFileNewEmptyfile(); /*Signal handlers*/ void OnFileNewEmptyfile(); /*Signal handlers*/
void onFileNewCCFile(); void OnFileNewCCFile();
void onFileNewHeaderFile(); void OnFileNewHeaderFile();
void onFileOpenFile(); void OnFileOpenFile();
void onFileOpenFolder(); void OnFileOpenFolder();
void onSystemQuit(); void OnSystemQuit();
void onPluginAddSnippet(); void OnPluginAddSnippet();
void onWindowCloseTab(); void OnWindowCloseTab();
void onEditCopy(); void OnEditCopy();
void onEditCut(); void OnEditCut();
void onEditPaste(); void OnEditPaste();
void onEditFind(); void OnEditFind();
void onWindowSplitWindow(); void OnWindowSplitWindow();
void onHelpAbout(); void OnHelpAbout();
}; // class Controller }; // class Controller
} // namespace Menu } // namespace Menu
#endif // JUCI_MENU_H_ #endif // JUCI_MENU_H_

7
juci/window.cc

@ -2,8 +2,7 @@
Window::Window() : Window::Window() :
window_box_(Gtk::ORIENTATION_HORIZONTAL), window_box_(Gtk::ORIENTATION_HORIZONTAL),
menu(), menu() {
source_() {
set_title("example juCi++"); set_title("example juCi++");
set_default_size(600, 600); set_default_size(600, 600);
// window_box_.add(*source_.sourceview()); // window_box_.add(*source_.sourceview());
@ -13,4 +12,6 @@ Window::Window() :
show_all_children(); show_all_children();
} }
std::shared_ptr<Source::Controller> Window::source() {
return std::shared_ptr<Source::Controller>(&source_);
}

Loading…
Cancel
Save