2 * Copyright (C) 2009 by Aiwota Programmer
3 * aiwotaprog@tetteke.tk
5 * This file is part of Dialektos.
7 * Dialektos is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * Dialektos is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Dialektos. If not, see <http://www.gnu.org/licenses/>.
21 #include "application_framework.hxx"
23 #include <glibmm/error.h>
24 #include <glibmm/ustring.h>
25 #include <gtkmm/widget.h>
26 #include <gtkmm/main.h>
27 #include <gtkmm/stock.h>
28 #include <gtkmm/menu.h>
29 #include <gtkmm/uimanager.h>
30 #include <gtkmm/actiongroup.h>
31 #include <boost/foreach.hpp>
33 #include "bookmark_window.hxx"
39 ApplicationFrameWork::ApplicationFrameWork() :
43 ui_manager_(Gtk::UIManager::create()),
44 action_group_(Gtk::ActionGroup::create()),
49 ApplicationWindow::add(vbox_);
51 statusbar_.set_no_show_all(true);
54 ApplicationFrameWork::~ApplicationFrameWork() {}
56 void ApplicationFrameWork::add(Gtk::Widget& child) {
57 vbox_.pack_start(*menubar_, Gtk::PACK_SHRINK);
58 vbox_.pack_start(*toolbar_, Gtk::PACK_SHRINK);
59 vbox_.pack_start(child, true, true);
60 vbox_.pack_start(statusbar_, Gtk::PACK_SHRINK);
62 void ApplicationFrameWork::build_menubar() {
64 action_group_->add(Gtk::Action::create("MenuFile", "_File"));
65 action_group_->add(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT),
66 sigc::mem_fun(*this, &ApplicationFrameWork::on_action_file_quit));
69 action_group_->add(Gtk::Action::create("MenuView", "_View"));
70 action_group_->add(Gtk::Action::create("ViewRefresh", Gtk::Stock::REFRESH),
71 sigc::mem_fun(*this, &ApplicationFrameWork::on_action_view_refresh));
72 action_group_->add(Gtk::Action::create("ViewStop", Gtk::Stock::STOP),
73 sigc::mem_fun(*this, &ApplicationFrameWork::on_action_view_stop));
74 action_group_->add(Gtk::Action::create("ViewMenubar", "Toggle _Menubar"),
75 sigc::mem_fun(*this, &ApplicationFrameWork::on_action_view_menubar));
76 action_group_->add(Gtk::Action::create("ViewToolbar", "Toggle _Toolbar"),
77 sigc::mem_fun(*this, &ApplicationFrameWork::on_action_view_toolbar));
78 action_group_->add(Gtk::Action::create("ViewStatusbar", "Toggle _Statusbar"),
79 sigc::mem_fun(*this, &ApplicationFrameWork::on_action_view_statusbar));
82 action_group_->add(Gtk::Action::create("MenuBookmark", "_Bookmark"));
83 action_group_->add(Gtk::Action::create("BookmarkShow", "_Show Bookmarks"),
84 sigc::mem_fun(*this, &ApplicationFrameWork::on_action_bookmark_show));
86 ui_manager_->insert_action_group(action_group_);
87 add_accel_group(ui_manager_->get_accel_group());
89 Glib::ustring ui_info =
91 " <menubar name='MenuBar'>"
92 " <menu action='MenuFile'>"
93 " <menuitem action='FileQuit'/>"
95 " <menu action='MenuView'>"
96 " <menuitem action='ViewRefresh'/>"
97 " <menuitem action='ViewStop'/>"
99 " <menuitem action='ViewMenubar'/>"
100 " <menuitem action='ViewToolbar'/>"
101 " <menuitem action='ViewStatusbar'/>"
103 " <menu action='MenuBookmark'>"
104 " <menuitem action='BookmarkShow'/>"
107 " <toolbar name='ToolBar'>"
108 " <toolitem action='ViewRefresh'/>"
109 " <toolitem action='ViewStop'/>"
111 " <popup name='MenuPopup'>"
112 " <menuitem action='ViewRefresh'/>"
113 " <menuitem action='ViewStop'/>"
115 " <menuitem action='ViewMenubar'/>"
119 ui_manager_->add_ui_from_string(ui_info);
121 menubar_ = ui_manager_->get_widget("/MenuBar");
122 menubar_->set_no_show_all(true);
124 toolbar_ = ui_manager_->get_widget("/ToolBar");
125 toolbar_->set_no_show_all(true);
128 dynamic_cast<Gtk::Menu*>(ui_manager_->get_widget("/MenuPopup"));
132 void ApplicationFrameWork::on_action_file_quit() {
134 BOOST_FOREACH(const ApplicationWindow& window, windows)
140 void ApplicationFrameWork::on_action_view_refresh() {
141 std::cout << "view refresh activated" << std::endl;
144 void ApplicationFrameWork::on_action_view_stop() {
145 std::cout << "view refresh stop" << std::endl;
148 void ApplicationFrameWork::on_action_view_menubar() {
149 if (menubar_->is_visible()) menubar_->hide(); else menubar_->show();
152 void ApplicationFrameWork::on_action_view_toolbar() {
153 if (toolbar_->is_visible()) toolbar_->hide(); else toolbar_->show();
156 void ApplicationFrameWork::on_action_view_statusbar() {
157 if (statusbar_.is_visible()) statusbar_.hide(); else statusbar_.show();
160 void ApplicationFrameWork::on_action_bookmark_show() {
161 BookmarkWindow::create();
164 void ApplicationFrameWork::on_child_button_press(GdkEventButton* event) {
165 if (event->type == GDK_BUTTON_PRESS && event->button == 3) {
166 popupmenu_->popup(event->button, event->time);
171 } // namespace dialektos