Browse Source

keybindings changes

master
oyvang 11 years ago
parent
commit
b8e8507fc6
  1. 4
      juci/CMakeLists.txt
  2. 2
      juci/juci.cc
  3. 5
      juci/juci.h
  4. 21
      juci/keybindings.cc
  5. 28
      juci/keybindings.h
  6. 146
      juci/menu.cc
  7. 59
      juci/menu.h
  8. 13
      juci/window.cc

4
juci/CMakeLists.txt

@ -63,10 +63,10 @@ endif()
# name of the executable on Windows will be example.exe
add_executable(${project_name}
# list of every needed file to create the executable
keybindings.h
menu.h
keybindings.cc
menu.cc
window.cc
juci.cc
)

2
juci/juci.cc

@ -1,9 +1,7 @@
#include "juci.h"
int main(int argc, char *argv[]) {
Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "no.sout.juci");
Window window;
return app->run(window);;
}

5
juci/juci.h

@ -10,16 +10,19 @@
class Window : public Gtk::Window {
public:
Window();
virtual ~Window();
Gtk::Box window_box_;
private:
Keybindings::Controller keybindings;
Menu::Controller menu;
/*signal handler*/
void onSystemQuit();
};
#endif // JUCI_H

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_;
};
}

146
juci/menu.cc

@ -53,131 +53,115 @@ Menu::Model::~Model() {
Menu::View::View(Gtk::Orientation 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> action_group) {
ui_manager_->insert_action_group(action_group);
}
Gtk::Box &Menu::View::view() {
view_.pack_start(*ui_manager_->get_widget("/MenuBar"), Gtk::PACK_SHRINK);
Gtk::Box &Menu::View::view(Glib::RefPtr<Gtk::UIManager> ui_manager) {
view_.pack_start(*ui_manager->get_widget("/MenuBar"), Gtk::PACK_SHRINK);
return view_;
}
Menu::View::~View() {
}
/***********************************/
/* CONTROLLER */
/***********************************/
Menu::Controller::Controller() :
Menu::Controller::Controller(Keybindings::Controller keybindings) :
menu_view_(Gtk::ORIENTATION_VERTICAL),
menu_model_() {
menu_model_(),
keybindings_(keybindings){
/* Add action to menues */
/* 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 */
menu_view_.action_group()->add(Gtk::Action::create("FileNew", "New"));
menu_view_.action_group()->add(Gtk::Action::create("FileNewStandard",
keybindings_.action_group()->add(Gtk::Action::create("FileNew", "New"));
keybindings_.action_group()->add(Gtk::Action::create("FileNewStandard",
Gtk::Stock::NEW, "New empty file", "Create a new file"),
[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::AccelKey("<control><alt>c"),
[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::AccelKey("<control><alt>h"),
[this]() {
onFileNewHeaderFile();
OnFileNewHeaderFile();
});
/* 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]() {
onFileOpenFile();
OnFileOpenFile();
});
menu_view_.action_group()->add(Gtk::Action::create("FileOpenFolder", "Open folder"),
keybindings_.action_group()->add(Gtk::Action::create("FileOpenFolder", "Open folder"),
[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]() {
onSystemQuit();
OnSystemQuit();
});
/* END file menu */
/* START edit menu */
menu_view_.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("EditMenu", Gtk::Stock::EDIT));
keybindings_.action_group()->add(Gtk::Action::create("EditCopy", Gtk::Stock::COPY),
[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]() {
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]() {
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]() {
onEditFind();
OnEditFind();
});
/* END edit menu */
/* START window menu */
menu_view_.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("WindowMenu", "_Window"));
keybindings_.action_group()->add(Gtk::Action::create("WindowCloseTab", "Close tab"),
Gtk::AccelKey("<control>w"),
[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"),
[this]() {
onWindowSplitWindow();
OnWindowSplitWindow();
});
/* END window 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*/
menu_view_.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("PluginSnippet", "Snippet"));
keybindings_.action_group()->add(Gtk::Action::create("PluginAddSnippet", "Add snippet"),
Gtk::AccelKey("<alt>space"),
[this]() {
onPluginAddSnippet();
OnPluginAddSnippet();
});
/* End snippet */
/* END plugin menu */
/* START help menu */
menu_view_.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("HelpMenu", Gtk::Stock::HELP));
keybindings_.action_group()->add(Gtk::Action::create("HelpAbout", Gtk::Stock::ABOUT),
[this]() {
onHelpAbout();
OnHelpAbout();
});
/* END help menu */
menu_view_.set_ui_manager_action_group(menu_view_.action_group());
menu_view_.set_ui_manger_string(menu_model_.ui_string());
keybindings_.ui_manager()->add_ui_from_string(menu_model_.ui_string());
keybindings_.ui_manager()->insert_action_group(keybindings_.action_group());
}
Menu::Controller::~Controller() {
@ -185,63 +169,75 @@ Menu::Controller::~Controller() {
}
Gtk::Box &Menu::Controller::view() {
return menu_view_.view();
return menu_view_.view(keybindings_.ui_manager());
}
void Menu::Controller::onFileNewEmptyfile() {
void Menu::Controller::OnFileNewEmptyfile() {
std::cout << "New file clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onFileNewCCFile() {
void Menu::Controller::OnFileNewCCFile() {
std::cout << "New cc file clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onFileNewHeaderFile() {
void Menu::Controller::OnFileNewHeaderFile() {
std::cout << "New cc file clicked" << std::endl;
//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
/*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)
}
void Menu::Controller::onFileOpenFile() {
void Menu::Controller::OnFileOpenFile() {
std::cout << "Open file clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onFileOpenFolder() {
void Menu::Controller::OnFileOpenFolder() {
std::cout << "Open folder clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onWindowCloseTab() {
void Menu::Controller::OnWindowCloseTab() {
std::cout << "Closing tab clicked" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onEditCopy() {
void Menu::Controller::OnEditCopy() {
std::cout << "Clicked copy" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onEditCut() {
void Menu::Controller::OnEditCut() {
std::cout << "Clicked cut" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onEditPaste() {
void Menu::Controller::OnEditPaste() {
std::cout << "Clicked paste" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onEditFind() {
void Menu::Controller::OnEditFind() {
std::cout << "Clicked find" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onWindowSplitWindow() {
void Menu::Controller::OnWindowSplitWindow() {
std::cout << "Clicked split window" << std::endl;
//TODO(Oyvang) Legg til funksjon
}
void Menu::Controller::onHelpAbout() {
void Menu::Controller::OnHelpAbout() {
std::cout << "Clicked about" << std::endl;
//TODO(Oyvang) Legg til funksjon
}

59
juci/menu.h

@ -1,5 +1,6 @@
#include <iostream>
#include "gtkmm.h"
#include "keybindings.h"
namespace Menu {
class Model {
public:
@ -14,77 +15,55 @@ namespace Menu {
std::string ui_string_;
};
class View {
public:
View(Gtk::Orientation orient);
virtual ~View();
Gtk::Box &view();
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);
Gtk::Box &view(Glib::RefPtr<Gtk::UIManager> ui_manager);
protected:
Gtk::Box view_;
Glib::RefPtr <Gtk::UIManager> ui_manager_;
Glib::RefPtr <Gtk::ActionGroup> action_group_;
};
class Controller {
public:
Controller();
Controller(Keybindings::Controller keybindings);
virtual ~Controller();
Gtk::Box &view();
Glib::RefPtr <Gtk::UIManager> ui_manager() {
return menu_view_.ui_manager();
};
private:
Keybindings::Controller keybindings_;
Menu::View menu_view_;
Menu::Model menu_model_;
/*Signal handlers*/
void onFileNewEmptyfile();
void OnFileNewEmptyfile();
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();
};
}

13
juci/window.cc

@ -2,23 +2,16 @@
Window::Window() :
window_box_(Gtk::ORIENTATION_HORIZONTAL),
menu() {
keybindings(),
menu(keybindings) {
set_title("example juCi++");
set_default_size(600, 600);
add(window_box_);
add_accel_group(menu.ui_manager()->get_accel_group());
window_box_.pack_start(menu.view());
add_accel_group(keybindings.ui_manager()->get_accel_group());
show_all_children();
};
Window::~Window() {
}

Loading…
Cancel
Save