Update gtk143
This commit is contained in:
parent
e495e65b21
commit
ae1934b9ac
|
@ -26,7 +26,7 @@ link_directories (${GTKMM4_LIBRARY_DIRS})
|
|||
# set(PO_DIR ${CMAKE_BINARY_DIR}/po/zh_CN/LC_MESSAGES)
|
||||
|
||||
#Source files
|
||||
set(SOURCE_FILE src/main.cc src/MenuWin.cc src/Win1.cc src/Win2.cc)
|
||||
set(SOURCE_FILE src/main.cc src/MenuWin.cc src/Win1.cc src/Win2.cc src/MenuBar.cc)
|
||||
|
||||
#Compile Resource
|
||||
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
#include "MenuBar.hh"
|
||||
|
||||
MenuBar::MenuBar()
|
||||
{
|
||||
// Create models
|
||||
builder_def = Gtk::Builder::create_from_resource("/org/gtk/daleclack/default_menu.xml");
|
||||
model_default = builder_def->get_object<Gio::MenuModel>("default_menu");
|
||||
builder_win1 = Gtk::Builder::create_from_resource("/org/gtk/daleclack/win1_menu.xml");
|
||||
model_win1 = builder_win1->get_object<Gio::MenuModel>("win1_menu");
|
||||
builder_win2 = Gtk::Builder::create_from_resource("/org/gtk/daleclack/win2_menu.xml");
|
||||
model_win2 = builder_win2->get_object<Gio::MenuModel>("win2_menu");
|
||||
menubar = Gtk::make_managed<Gtk::PopoverMenuBar>(model_default);
|
||||
}
|
||||
|
||||
void MenuBar::change_menu(WinShown win_id)
|
||||
{
|
||||
// Switch the menu for a window
|
||||
switch (win_id)
|
||||
{
|
||||
case WinShown::DEFAULT:
|
||||
menubar->set_menu_model(model_default);
|
||||
break;
|
||||
case WinShown::WIN_1:
|
||||
menubar->set_menu_model(model_win1);
|
||||
break;
|
||||
case WinShown::WIN_2:
|
||||
menubar->set_menu_model(model_win2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
MenuBar::~MenuBar(){
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
#pragma once
|
||||
|
||||
#include <gtkmm.h>
|
||||
|
||||
enum class WinShown
|
||||
{
|
||||
DEFAULT,
|
||||
WIN_1,
|
||||
WIN_2
|
||||
};
|
||||
|
||||
class MenuBar
|
||||
{
|
||||
public:
|
||||
MenuBar();
|
||||
~MenuBar();
|
||||
void change_menu(WinShown win_id);
|
||||
Gtk::PopoverMenuBar *menubar;
|
||||
|
||||
private:
|
||||
// Menu Models
|
||||
Glib::RefPtr<Gtk::Builder> builder_def, builder_win1, builder_win2;
|
||||
Glib::RefPtr<Gio::MenuModel> model_default, model_win1, model_win2;
|
||||
};
|
|
@ -16,14 +16,6 @@ MenuWin::MenuWin()
|
|||
set_icon_name("org.gtk.daleclack");
|
||||
set_default_size(300, 200);
|
||||
|
||||
// Create models
|
||||
builder_def = Gtk::Builder::create_from_resource("/org/gtk/daleclack/default_menu.xml");
|
||||
model_default = builder_def->get_object<Gio::MenuModel>("default_menu");
|
||||
builder_win1 = Gtk::Builder::create_from_resource("/org/gtk/daleclack/win1_menu.xml");
|
||||
model_win1 = builder_win1->get_object<Gio::MenuModel>("win1_menu");
|
||||
builder_win2 = Gtk::Builder::create_from_resource("/org/gtk/daleclack/win2_menu.xml");
|
||||
model_win2 = builder_win2->get_object<Gio::MenuModel>("win2_menu");
|
||||
|
||||
// Add actions
|
||||
add_action("new_win1", sigc::mem_fun(*this, &MenuWin::new_win1));
|
||||
add_action("quit_win1", sigc::mem_fun(*this, &MenuWin::quit_win1));
|
||||
|
@ -31,8 +23,9 @@ MenuWin::MenuWin()
|
|||
add_action("quit_win2", sigc::mem_fun(*this, &MenuWin::quit_win2));
|
||||
|
||||
// Add popover menu bar
|
||||
menu_bar = new Gtk::PopoverMenuBar(model_default);
|
||||
main_box.append(*menu_bar);
|
||||
//menu_bar = new Gtk::PopoverMenuBar(model_default);
|
||||
main_box.append(*(menu_bar.menubar));
|
||||
// (menu_bar.menubar)->show();
|
||||
|
||||
// Add a label
|
||||
label1.set_expand();
|
||||
|
@ -52,6 +45,8 @@ MenuWin::MenuWin()
|
|||
btn_main.signal_clicked().connect(sigc::mem_fun(*this, &MenuWin::btnmain_clicked));
|
||||
btn_win1.signal_clicked().connect(sigc::mem_fun(*this, &MenuWin::btnwin1_clicked));
|
||||
btn_win2.signal_clicked().connect(sigc::mem_fun(*this, &MenuWin::btnwin2_clicked));
|
||||
window1.signal_close_request().connect(sigc::mem_fun(*this, &MenuWin::win1_closed),true);
|
||||
window2.signal_close_request().connect(sigc::mem_fun(*this, &MenuWin::win2_closed),true);
|
||||
|
||||
window1.set_transient_for(*this);
|
||||
window2.set_transient_for(*this);
|
||||
|
@ -64,20 +59,20 @@ void MenuWin::btnmain_clicked()
|
|||
{
|
||||
window1.hide();
|
||||
window2.hide();
|
||||
menu_bar->set_menu_model(model_default);
|
||||
menu_bar.change_menu(WinShown::DEFAULT);
|
||||
}
|
||||
|
||||
// Launch Window1
|
||||
void MenuWin::btnwin1_clicked()
|
||||
{
|
||||
menu_bar->set_menu_model(model_win1);
|
||||
menu_bar.change_menu(WinShown::WIN_1);
|
||||
window1.show();
|
||||
}
|
||||
|
||||
// Launch Window2
|
||||
void MenuWin::btnwin2_clicked()
|
||||
{
|
||||
menu_bar->set_menu_model(model_win2);
|
||||
menu_bar.change_menu(WinShown::WIN_2);
|
||||
window2.show();
|
||||
}
|
||||
|
||||
|
@ -85,31 +80,40 @@ void MenuWin::btnwin2_clicked()
|
|||
void MenuWin::new_win1()
|
||||
{
|
||||
window1.show();
|
||||
menu_bar->set_menu_model(model_win1);
|
||||
menu_bar.change_menu(WinShown::WIN_1);
|
||||
}
|
||||
|
||||
// Quit a window
|
||||
void MenuWin::quit_win1()
|
||||
{
|
||||
window1.hide();
|
||||
menu_bar->set_menu_model(model_default);
|
||||
menu_bar.change_menu(WinShown::DEFAULT);
|
||||
}
|
||||
|
||||
//
|
||||
bool MenuWin::win1_closed(){
|
||||
window1.hide();
|
||||
menu_bar.change_menu(WinShown::DEFAULT);
|
||||
return true;
|
||||
}
|
||||
|
||||
// New a window
|
||||
void MenuWin::new_win2()
|
||||
{
|
||||
window2.show();
|
||||
menu_bar->set_menu_model(model_win2);
|
||||
menu_bar.change_menu(WinShown::WIN_2);
|
||||
}
|
||||
|
||||
// Quit a window
|
||||
void MenuWin::quit_win2()
|
||||
{
|
||||
window2.hide();
|
||||
menu_bar->set_menu_model(model_default);
|
||||
menu_bar.change_menu(WinShown::DEFAULT);
|
||||
}
|
||||
|
||||
MenuWin::~MenuWin()
|
||||
{
|
||||
delete menu_bar;
|
||||
//
|
||||
bool MenuWin::win2_closed(){
|
||||
window2.hide();
|
||||
menu_bar.change_menu(WinShown::DEFAULT);
|
||||
return true;
|
||||
}
|
|
@ -3,31 +3,20 @@
|
|||
#include <gtkmm.h>
|
||||
#include "Win1.hh"
|
||||
#include "Win2.hh"
|
||||
|
||||
enum class WinShown
|
||||
{
|
||||
DEFAULT,
|
||||
WIN_1,
|
||||
WIN_2
|
||||
};
|
||||
#include "MenuBar.hh"
|
||||
|
||||
class MenuWin : public Gtk::ApplicationWindow
|
||||
{
|
||||
public:
|
||||
MenuWin();
|
||||
~MenuWin();
|
||||
|
||||
private:
|
||||
// Child Widgets
|
||||
Gtk::PopoverMenuBar *menu_bar;
|
||||
MenuBar menu_bar;
|
||||
Gtk::Box main_box, btn_box;
|
||||
Gtk::Button btn_main, btn_win1, btn_win2;
|
||||
Gtk::Label label1;
|
||||
|
||||
// Menu Models
|
||||
Glib::RefPtr<Gtk::Builder> builder_def, builder_win1, builder_win2;
|
||||
Glib::RefPtr<Gio::MenuModel> model_default, model_win1, model_win2;
|
||||
|
||||
// Windows
|
||||
Win1 window1;
|
||||
Win2 window2;
|
||||
|
@ -38,6 +27,8 @@ private:
|
|||
void btnwin2_clicked();
|
||||
void new_win1();
|
||||
void quit_win1();
|
||||
bool win1_closed();
|
||||
void new_win2();
|
||||
void quit_win2();
|
||||
bool win2_closed();
|
||||
};
|
Loading…
Reference in New Issue