]> Dogcows Code - chaz/tint2/blob - src/tint2conf/mainwin.cpp
play with some tint2conf code
[chaz/tint2] / src / tint2conf / mainwin.cpp
1
2 #include <gtkmm/stock.h>
3 #include <iostream>
4 #include "mainwin.h"
5
6
7 MainWin::MainWin()
8 {
9 set_title("Tint2 config");
10 set_default_size(600, 350);
11
12 add(m_Box); // put a MenuBar at the top of the box and other stuff below it.
13
14 //Create actions for menus and toolbars:
15 m_refActionGroup = Gtk::ActionGroup::create();
16
17 //File menu:
18 m_refActionGroup->add(Gtk::Action::create("FileMenu", "File"));
19 //Sub-menu.
20 m_refActionGroup->add(Gtk::Action::create("FileOpen", Gtk::Stock::OPEN, "_Open", "Open config file"), sigc::mem_fun(*this, &MainWin::on_menu_file_new_generic));
21 m_refActionGroup->add(Gtk::Action::create("FileSaveAs", Gtk::Stock::SAVE_AS, "_Save As", "Save config as"), sigc::mem_fun(*this, &MainWin::on_menu_file_new_generic));
22 m_refActionGroup->add(Gtk::Action::create("FileRefreshAll", Gtk::Stock::REFRESH, "_Refresh all", "Refresh all config file"), sigc::mem_fun(*this, &MainWin::on_menu_file_new_generic));
23 m_refActionGroup->add(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT), sigc::mem_fun(*this, &MainWin::on_menu_file_quit));
24
25 //Edit menu:
26 m_refActionGroup->add(Gtk::Action::create("EditMenu", "Edit"));
27 m_refActionGroup->add(Gtk::Action::create("EditProperties", Gtk::Stock::PROPERTIES, "_Properties...", "Show properties"), sigc::mem_fun(*this, &MainWin::on_menu_others));
28 m_refActionGroup->add(Gtk::Action::create("EditRename", "_Rename...", "Rename current config"), sigc::mem_fun(*this, &MainWin::on_menu_others));
29 m_refActionGroup->add(Gtk::Action::create("EditDelete", Gtk::Stock::DELETE), sigc::mem_fun(*this, &MainWin::on_menu_others));
30 m_refActionGroup->add(Gtk::Action::create("EditApply", Gtk::Stock::APPLY, "_Apply", "Apply current config"), sigc::mem_fun(*this, &MainWin::on_menu_others));
31 m_refActionGroup->add(Gtk::Action::create("EditRefresh", Gtk::Stock::REFRESH), sigc::mem_fun(*this, &MainWin::on_menu_others));
32
33 //Help menu:
34 m_refActionGroup->add( Gtk::Action::create("HelpMenu", "Help") );
35 m_refActionGroup->add( Gtk::Action::create("About", Gtk::Stock::ABOUT), sigc::mem_fun(*this, &MainWin::on_menu_about) );
36
37 m_refUIManager = Gtk::UIManager::create();
38 m_refUIManager->insert_action_group(m_refActionGroup);
39
40 add_accel_group(m_refUIManager->get_accel_group());
41
42 //Layout the actions in a menubar and toolbar:
43 Glib::ustring ui_info =
44 "<ui>"
45 " <menubar name='MenuBar'>"
46 " <menu action='FileMenu'>"
47 " <menuitem action='FileOpen'/>"
48 " <menuitem action='FileSaveAs'/>"
49 " <separator/>"
50 " <menuitem action='FileRefreshAll'/>"
51 " <separator/>"
52 " <menuitem action='FileQuit'/>"
53 " </menu>"
54 " <menu action='EditMenu'>"
55 " <menuitem action='EditProperties'/>"
56 " <menuitem action='EditRename'/>"
57 " <separator/>"
58 " <menuitem action='EditDelete'/>"
59 " <separator/>"
60 " <menuitem action='EditRefresh'/>"
61 " </menu>"
62 " <menu action='HelpMenu'>"
63 " <menuitem action='About'/>"
64 " </menu>"
65 " </menubar>"
66 " <toolbar name='ToolBar'>"
67 " <toolitem action='FileRefreshAll'/>"
68 " <separator/>"
69 " <toolitem action='EditProperties'/>"
70 " <toolitem action='EditApply'/>"
71 " </toolbar>"
72 "</ui>";
73
74 #ifdef GLIBMM_EXCEPTIONS_ENABLED
75 try
76 {
77 m_refUIManager->add_ui_from_string(ui_info);
78 }
79 catch(const Glib::Error& ex)
80 {
81 std::cerr << "building menus failed: " << ex.what();
82 }
83 #else
84 std::auto_ptr<Glib::Error> ex;
85 m_refUIManager->add_ui_from_string(ui_info, ex);
86 if(ex.get())
87 {
88 std::cerr << "building menus failed: " << ex->what();
89 }
90 #endif //GLIBMM_EXCEPTIONS_ENABLED
91
92 //Get the menubar and toolbar widgets, and add them to a container widget:
93 Gtk::Widget* pMenubar = m_refUIManager->get_widget("/MenuBar");
94 if(pMenubar)
95 m_Box.pack_start(*pMenubar, Gtk::PACK_SHRINK);
96
97 Gtk::Widget* pToolbar = m_refUIManager->get_widget("/ToolBar") ;
98 if(pToolbar)
99 m_Box.pack_start(*pToolbar, Gtk::PACK_SHRINK);
100
101
102 m_Box.add(view);
103
104 show_all_children();
105 }
106
107 MainWin::~MainWin()
108 {
109 }
110
111
112 void MainWin::on_menu_file_quit()
113 {
114 hide();
115 }
116
117
118 void MainWin::on_menu_file_new_generic()
119 {
120 std::cout << "A File|New menu item was selected." << std::endl;
121 }
122
123
124 void MainWin::on_menu_others()
125 {
126 std::cout << "A menu item was selected." << std::endl;
127 }
128
129
130 void MainWin::on_menu_about()
131 {
132 Glib::ustring message = "tint2conf " + Glib::ustring(VERSION);
133 Gtk::MessageDialog dialog(*this, message);
134
135 dialog.set_title("About tint2conf");
136 dialog.set_secondary_text("Config tool for tint2.\n\nCopyright (C) 2009 Thierry lorthiois. \nRefer to source code from Nitrogen\nby Dave Foster & Javeed Shaikh.");
137
138 dialog.run();
139 }
140
This page took 0.042602 seconds and 4 git commands to generate.