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. 73
      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();
virtual ~Menu();
Gtk::Box &get_view();
Gtk::Box &view();
Glib::RefPtr<Gtk::ActionGroup> get_action_group() {
return menu_view.get_action_group();
};
Glib::RefPtr<Gtk::UIManager> get_ui_manager() {
return menu_view.get_ui_manager();
Glib::RefPtr<Gtk::UIManager> ui_manager() {
return menu_view_.ui_manager();
};
private:
View::Menu menu_view;
Model::Menu menu_model;
void onNewEmptyfile();
void onNewCCFile();
void onNewHeaderFile();
View::Menu menu_view_;
Model::Menu menu_model_;
/*Signal handlers*/
void onFileNewEmptyfile();
void onFileNewCCFile();
void onFileNewHeaderFile();
void onFileOpenFile();
void onFileOpenFolder();
void onSystemQuit();
void onPluginAddSnippet();
};
};

73
juci/controllers.cc

@ -1,33 +1,80 @@
#include "controller.h"
Controller::Menu::Menu() :
menu_view(Gtk::ORIENTATION_VERTICAL),
menu_model() {
menu_view_(Gtk::ORIENTATION_VERTICAL),
menu_model_() {
/*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"),
[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_manger_string(menu_model.get_ui_string());
menu_view_.set_ui_manager_action_group(menu_view_.action_group());
menu_view_.set_ui_manger_string(menu_model_.ui_string());
}
Controller::Menu::~Menu() {
}
Gtk::Box &Controller::Menu::get_view() {
return menu_view.get_view();
Gtk::Box &Controller::Menu::view() {
return menu_view_.view();
}
void Controller::Menu::onNewEmptyfile() {
void Controller::Menu::onFileNewEmptyfile() {
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();
Gtk::Box window_box;
Gtk::Box window_box_;
private:
Controller::Menu menu;

6
juci/model.h

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

16
juci/models.cc

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

17
juci/view.h

@ -18,14 +18,13 @@ public:
virtual ~Menu();
Gtk::Box &get_view();
Glib::RefPtr<Gtk::ActionGroup> get_action_group() {
return action_group;
Gtk::Box &view();
Glib::RefPtr<Gtk::ActionGroup> action_group() {
return action_group_;
};
Glib::RefPtr<Gtk::UIManager> get_ui_manager() {
return ui_manager;
Glib::RefPtr<Gtk::UIManager> ui_manager() {
return ui_manager_;
};
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);
protected:
Gtk::Box view;
Glib::RefPtr<Gtk::UIManager> ui_manager;
Glib::RefPtr<Gtk::ActionGroup> action_group;
Gtk::Box view_;
Glib::RefPtr<Gtk::UIManager> ui_manager_;
Glib::RefPtr<Gtk::ActionGroup> action_group_;
};

16
juci/views.cc

@ -5,17 +5,17 @@
/* MENU */
/***********************************/
View::Menu::Menu(Gtk::Orientation orientation) :
view(orientation) {
view_(orientation) {
action_group = Gtk::ActionGroup::create();
ui_manager = Gtk::UIManager::create();
action_group_ = Gtk::ActionGroup::create();
ui_manager_ = Gtk::UIManager::create();
}
void View::Menu::set_ui_manger_string(std::string ui_string) {
try {
ui_manager->add_ui_from_string(ui_string);
ui_manager_->add_ui_from_string(ui_string);
}
catch (const Glib::Error &ex) {
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) {
ui_manager->insert_action_group(action_group);
ui_manager_->insert_action_group(action_group);
}
Gtk::Box &View::Menu::get_view() {
view.pack_start(*ui_manager->get_widget("/MenuBar"), Gtk::PACK_SHRINK);
return view;
Gtk::Box &View::Menu::view() {
view_.pack_start(*ui_manager_->get_widget("/MenuBar"), Gtk::PACK_SHRINK);
return view_;
}

15
juci/window.cc

@ -1,30 +1,23 @@
#include "juci.h"
Window::Window() :
window_box(Gtk::ORIENTATION_HORIZONTAL),
window_box_(Gtk::ORIENTATION_HORIZONTAL),
menu() {
set_title("example juCi++");
set_default_size(600, 600);
add(window_box);
menu.get_action_group()->add(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT),
[this]() {
onSystemQuit();
});
add(window_box_);
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();
};
void Window::onSystemQuit() {
hide();
}
Window::~Window() {

Loading…
Cancel
Save