Browse Source

BAB-11 #time 2h #comment added menu plugins

merge-requests/365/head
oyvang 11 years ago
parent
commit
c75b8e3ce4
  1. 25
      juci/controller.h
  2. 75
      juci/controllers.cc
  3. 2
      juci/juci.h
  4. 6
      juci/model.h
  5. 16
      juci/models.cc
  6. 17
      juci/view.h
  7. 16
      juci/views.cc
  8. 15
      juci/window.cc

25
juci/controller.h

@ -18,21 +18,24 @@ public:
Menu(); Menu();
virtual ~Menu(); virtual ~Menu();
Gtk::Box &get_view(); Gtk::Box &view();
Glib::RefPtr<Gtk::ActionGroup> get_action_group() { Glib::RefPtr<Gtk::UIManager> ui_manager() {
return menu_view.get_action_group(); return menu_view_.ui_manager();
};
Glib::RefPtr<Gtk::UIManager> get_ui_manager() {
return menu_view.get_ui_manager();
}; };
private: private:
View::Menu menu_view; View::Menu menu_view_;
Model::Menu menu_model; Model::Menu menu_model_;
void onNewEmptyfile(); /*Signal handlers*/
void onNewCCFile(); void onFileNewEmptyfile();
void onNewHeaderFile(); void onFileNewCCFile();
void onFileNewHeaderFile();
void onFileOpenFile();
void onFileOpenFolder();
void onSystemQuit();
void onPluginAddSnippet();
}; };
}; };

75
juci/controllers.cc

@ -1,33 +1,80 @@
#include "controller.h" #include "controller.h"
Controller::Menu::Menu() : Controller::Menu::Menu() :
menu_view(Gtk::ORIENTATION_VERTICAL), menu_view_(Gtk::ORIENTATION_VERTICAL),
menu_model() { menu_model_() {
/*Add action to menues*/ /*Add action to menues*/
menu_view.get_action_group()->add(Gtk::Action::create("FileMenu", "File")); /*File menu*/
menu_view_.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.get_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]() {
onNewEmptyfile(); onFileNewEmptyfile();
}); });
menu_view_.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();
});
menu_view_.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();
});
/* File-> New files end */
menu_view_.action_group()->add(Gtk::Action::create("FileOpenFile", Gtk::Stock::OPEN),
[this]() {
onFileNewEmptyfile();
});
menu_view_.action_group()->add(Gtk::Action::create("FileOpenFolder", "Open folder"),
[this]() {
onFileNewEmptyfile();
});
menu_view_.action_group()->add(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT),
[this]() {
onSystemQuit();
});
menu_view_.action_group()->add(Gtk::Action::create("PluginMenu", "Plugins"));
menu_view_.action_group()->add(Gtk::Action::create("PluginSnippet", "Snippet"));
menu_view_.action_group()->add(Gtk::Action::create("PluginAddSnippet", "Add snippet"),
Gtk::AccelKey("<alt>space"),
[this]() {
onPluginAddSnippet();
});
menu_view.set_ui_manager_action_group(menu_view.get_action_group()); menu_view_.set_ui_manager_action_group(menu_view_.action_group());
menu_view.set_ui_manger_string(menu_model.get_ui_string()); menu_view_.set_ui_manger_string(menu_model_.ui_string());
} }
Controller::Menu::~Menu() { Controller::Menu::~Menu() {
} }
Gtk::Box &Controller::Menu::get_view() { Gtk::Box &Controller::Menu::view() {
return menu_view.get_view(); return menu_view_.view();
} }
void Controller::Menu::onNewEmptyfile() { void Controller::Menu::onFileNewEmptyfile() {
std::cout << "New file clicked"<< std::endl; std::cout << "New file clicked" << std::endl;
}
void Controller::Menu::onFileNewCCFile() {
std::cout << "New cc file clicked" << std::endl;
} }
void Controller::Menu::onFileNewHeaderFile() {
std::cout << "New cc file clicked" << std::endl;
}
void Controller::Menu::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 Controller::Menu::onPluginAddSnippet() {
std::cout << "Add snipper" << std::endl; //TODO(Forgi add you snippet magic code)
}

2
juci/juci.h

@ -15,7 +15,7 @@ public:
virtual ~Window(); virtual ~Window();
Gtk::Box window_box; Gtk::Box window_box_;
private: private:
Controller::Menu menu; Controller::Menu menu;

6
juci/model.h

@ -16,11 +16,11 @@ public:
virtual~Menu(); virtual~Menu();
std::string get_ui_string() { std::string ui_string() {
return ui_string; return ui_string_;
}; };
private: private:
std::string ui_string; std::string ui_string_;
}; };
}; };

16
juci/models.cc

@ -1,15 +1,29 @@
#include "model.h" #include "model.h"
Model::Menu::Menu() { Model::Menu::Menu() {
ui_string = ui_string_ =
"<ui> " "<ui> "
" <menubar name='MenuBar'> " " <menubar name='MenuBar'> "
" <menu action='FileMenu'> " " <menu action='FileMenu'> "
" <menu action='FileNew'> "
" <menuitem action='FileNewStandard'/> " " <menuitem action='FileNewStandard'/> "
" <menuitem action='FileNewCC'/> "
" <menuitem action='FileNewH'/> "
" </menu> "
// " <menuitem action='FileOpenFile'/> "
//" <menuitem action='FileOpenFolder'/> "
" <separator/> "
" <menuitem action='FileQuit'/> " " <menuitem action='FileQuit'/> "
" </menu> " " </menu> "
" <menu action='PluginMenu'> "
" <menu action='PluginSnippet'> "
" <menuitem action='PluginAddSnippet'/> "
" </menu> "
" </menu> "
" </menubar> " " </menubar> "
"</ui> "; "</ui> ";
// TODO(oyvang) legg til <menuitem action='FileCloseTab'/> under en meny Window
} }
Model::Menu::~Menu() { Model::Menu::~Menu() {

17
juci/view.h

@ -18,14 +18,13 @@ public:
virtual ~Menu(); virtual ~Menu();
Gtk::Box &get_view(); Gtk::Box &view();
Glib::RefPtr<Gtk::ActionGroup> action_group() {
Glib::RefPtr<Gtk::ActionGroup> get_action_group() { return action_group_;
return action_group;
}; };
Glib::RefPtr<Gtk::UIManager> get_ui_manager() { Glib::RefPtr<Gtk::UIManager> ui_manager() {
return ui_manager; return ui_manager_;
}; };
void set_ui_manger_string(std::string ui_string); void set_ui_manger_string(std::string ui_string);
@ -33,9 +32,9 @@ public:
void set_ui_manager_action_group(Glib::RefPtr<Gtk::ActionGroup> action_group); 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::UIManager> ui_manager_;
Glib::RefPtr<Gtk::ActionGroup> action_group; Glib::RefPtr<Gtk::ActionGroup> action_group_;
}; };

16
juci/views.cc

@ -5,17 +5,17 @@
/* MENU */ /* MENU */
/***********************************/ /***********************************/
View::Menu::Menu(Gtk::Orientation orientation) : View::Menu::Menu(Gtk::Orientation orientation) :
view(orientation) { view_(orientation) {
action_group = Gtk::ActionGroup::create(); action_group_ = Gtk::ActionGroup::create();
ui_manager = Gtk::UIManager::create(); ui_manager_ = Gtk::UIManager::create();
} }
void View::Menu::set_ui_manger_string(std::string ui_string) { void View::Menu::set_ui_manger_string(std::string ui_string) {
try { try {
ui_manager->add_ui_from_string(ui_string); ui_manager_->add_ui_from_string(ui_string);
} }
catch (const Glib::Error &ex) { catch (const Glib::Error &ex) {
std::cerr << "building menus failed: " << ex.what(); std::cerr << "building menus failed: " << ex.what();
@ -23,12 +23,12 @@ void View::Menu::set_ui_manger_string(std::string ui_string) {
} }
void View::Menu::set_ui_manager_action_group(Glib::RefPtr<Gtk::ActionGroup> action_group) { void View::Menu::set_ui_manager_action_group(Glib::RefPtr<Gtk::ActionGroup> action_group) {
ui_manager->insert_action_group(action_group); ui_manager_->insert_action_group(action_group);
} }
Gtk::Box &View::Menu::get_view() { Gtk::Box &View::Menu::view() {
view.pack_start(*ui_manager->get_widget("/MenuBar"), Gtk::PACK_SHRINK); view_.pack_start(*ui_manager_->get_widget("/MenuBar"), Gtk::PACK_SHRINK);
return view; return view_;
} }

15
juci/window.cc

@ -1,30 +1,23 @@
#include "juci.h" #include "juci.h"
Window::Window() : Window::Window() :
window_box(Gtk::ORIENTATION_HORIZONTAL), window_box_(Gtk::ORIENTATION_HORIZONTAL),
menu() { menu() {
set_title("example juCi++"); set_title("example juCi++");
set_default_size(600, 600); set_default_size(600, 600);
add(window_box); add(window_box_);
menu.get_action_group()->add(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT),
[this]() {
onSystemQuit();
});
add_accel_group(menu.get_ui_manager()->get_accel_group()); add_accel_group(menu.ui_manager()->get_accel_group());
window_box.pack_start(menu.get_view()); window_box_.pack_start(menu.view());
show_all_children(); show_all_children();
}; };
void Window::onSystemQuit() {
hide();
}
Window::~Window() { Window::~Window() {

Loading…
Cancel
Save