diff --git a/Gtkmm3_Mac/res/mydock.ui b/Gtkmm3_Mac/res/mydock.ui
index 9a1e08d..23e4fc8 100644
--- a/Gtkmm3_Mac/res/mydock.ui
+++ b/Gtkmm3_Mac/res/mydock.ui
@@ -251,6 +251,7 @@
340
True
True
+ True
never
in
@@ -464,6 +465,7 @@
5
True
False
+ end
diff --git a/Gtkmm3_Mac/src/core/MyStack.cc b/Gtkmm3_Mac/src/core/MyStack.cc
index 2e418c1..3001c5c 100644
--- a/Gtkmm3_Mac/src/core/MyStack.cc
+++ b/Gtkmm3_Mac/src/core/MyStack.cc
@@ -1,39 +1,57 @@
#include "MyStack.hh"
+#include
-MyStack::MyStack(){
+MyStack::MyStack()
+{
// Get Widgets
stackbuilder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/stack.ui");
- stackbuilder->get_widget("main_stack",stack);
- stackbuilder->get_widget("login_page",login_page);
- stackbuilder->get_widget("main_page",main_page);
- stackbuilder->get_widget("btnlogin",btnlogin);
+ stackbuilder->get_widget("main_stack", stack);
+ stackbuilder->get_widget("login_page", login_page);
+ stackbuilder->get_widget("main_page", main_page);
+ stackbuilder->get_widget("btnlogin", btnlogin);
// Link Signals
- btnlogin->signal_clicked().connect(sigc::mem_fun(*this,&MyStack::btnlogin_clicked));
+ btnlogin->signal_clicked().connect(sigc::mem_fun(*this, &MyStack::btnlogin_clicked));
+}
- //Add Widget
- main_dock = MyDock::create();
+void MyStack::mystack_init(Gtk::Window *window, Gtk::Image *m_back)
+{
+ main_dock->mydock_init(window, m_back);
+}
+
+void MyStack::show_prefs()
+{
+ main_dock->btnset_clicked();
+}
+
+void MyStack::logout()
+{
+ stack->set_visible_child(*login_page);
+}
+
+void MyStack::btnlogin_clicked()
+{
+ stack->set_visible_child(*main_page);
+}
+
+void MyStack::set_mydock_mode(DockMode mode)
+{
+ // main_dock->set_dock_mode(mode);
+ // switch (mode)
+ // {
+ // case DockMode::MODE_DOCK:
+ // std::cout << "dock mode" << std::endl;
+ // break;
+ // case DockMode::MODE_PANEL:
+ // std::cout << "panel mode" << std::endl;
+ // break;
+ // default:
+ // std::cout << "undefined" << std::endl;
+ // break;
+ // }
+ // Add Widget
+ main_dock = MyDock::create(mode);
main_dock->set_hexpand();
main_dock->set_vexpand();
main_page->pack_start(*main_dock);
}
-
-void MyStack::mystack_init(Gtk::Window *window, Gtk::Image *m_back){
- main_dock->mydock_init(window,m_back);
-}
-
-void MyStack::show_prefs(){
- main_dock->btnset_clicked();
-}
-
-void MyStack::logout(){
- stack->set_visible_child(*login_page);
-}
-
-void MyStack::btnlogin_clicked(){
- stack->set_visible_child(*main_page);
-}
-
-void MyStack::set_mydock_mode(DockMode mode){
- main_dock->set_dock_mode(mode);
-}
diff --git a/Gtkmm3_Mac/src/core/MyWin.cc b/Gtkmm3_Mac/src/core/MyWin.cc
index 7ce5398..c560977 100644
--- a/Gtkmm3_Mac/src/core/MyWin.cc
+++ b/Gtkmm3_Mac/src/core/MyWin.cc
@@ -9,7 +9,14 @@ MyWin::MyWin()
// Initalize window
set_icon_name("My_GtkUI");
set_title("My GtkUI macOS Version");
- get_size_config(width, height);
+ get_size_config(width, height, panel_mode);
+
+ // Set the display mode of dock
+ if(panel_mode){
+ main_stack.set_mydock_mode(DockMode::MODE_PANEL);
+ }else{
+ main_stack.set_mydock_mode(DockMode::MODE_DOCK);
+ }
// Add background
auto pixbuf = Gdk::Pixbuf::create_from_xpm_data(winpe);
diff --git a/Gtkmm3_Mac/src/core/MyWin.hh b/Gtkmm3_Mac/src/core/MyWin.hh
index 590c354..137bdd2 100644
--- a/Gtkmm3_Mac/src/core/MyWin.hh
+++ b/Gtkmm3_Mac/src/core/MyWin.hh
@@ -20,6 +20,7 @@ private:
//Main Stack
MyStack main_stack;
int width, height;
+ bool panel_mode;
//Signal Handlers
void logout_activated();
diff --git a/Gtkmm3_Mac/src/ui/MyDock.cc b/Gtkmm3_Mac/src/ui/MyDock.cc
index 34905bd..cdd5f47 100644
--- a/Gtkmm3_Mac/src/ui/MyDock.cc
+++ b/Gtkmm3_Mac/src/ui/MyDock.cc
@@ -1,5 +1,9 @@
#include "MyDock.hh"
#include
+#include
+
+// Dock or Panel Mode
+static DockMode mode1;
MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Glade)
: Gtk::Box(cobject),
@@ -16,15 +20,15 @@ MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Gl
ref_builder->get_widget("btnedit", btnedit);
ref_builder->get_widget("btnimage", btnimage);
ref_builder->get_widget("btnset", btnset);
- ref_builder->get_widget("btngame24",btngame24);
- ref_builder->get_widget("btncalc",btncalc);
+ ref_builder->get_widget("btngame24", btngame24);
+ ref_builder->get_widget("btncalc", btncalc);
ref_builder->get_widget("btnmine", btnmine);
ref_builder->get_widget("separator_start", separator_start);
ref_builder->get_widget("separator_end", separator_end);
ref_builder->get_widget("launchpad_stack", launchpad_stack);
ref_builder->get_widget("default_page", default_page);
ref_builder->get_widget("launchpad_page", launchpad_page);
- ref_builder->get_widget("apps_grid",apps_grid);
+ ref_builder->get_widget("apps_grid", apps_grid);
ref_builder->get_widget("padaud", padaud);
ref_builder->get_widget("padgedit", padgedit);
ref_builder->get_widget("padvlc", padvlc);
@@ -38,8 +42,8 @@ MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Gl
ref_builder->get_widget("padimage", padimage);
ref_builder->get_widget("padedit", padedit);
ref_builder->get_widget("padrun", padrun);
- ref_builder->get_widget("padgame24",padgame24);
- ref_builder->get_widget("padcalc",padcalc);
+ ref_builder->get_widget("padgame24", padgame24);
+ ref_builder->get_widget("padcalc", padcalc);
ref_builder->get_widget("padmine", padmine);
// Create window
@@ -64,7 +68,7 @@ MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Gl
the next signal for button on launchpad
last 1 or 2 signals for the window
*/
-
+
btnset->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::btnset_clicked));
padset->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::padset_clicked));
prefs_win.signal_delete_event().connect(sigc::mem_fun(*this, &MyDock::prefs_win_closed));
@@ -83,15 +87,15 @@ MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Gl
game_win->signal_delete_event().connect(sigc::mem_fun(*this, &MyDock::game_win_closed));
game_win->signal_hide().connect(sigc::mem_fun(*this, &MyDock::game_win_hide));
- btngame24->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::btngame24_clicked));
- padgame24->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::padgame24_clicked));
- game24_win->signal_delete_event().connect(sigc::mem_fun(*this,&MyDock::game24_win_closed));
- game24_win->signal_hide().connect(sigc::mem_fun(*this,&MyDock::game24_win_hide));
+ btngame24->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::btngame24_clicked));
+ padgame24->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::padgame24_clicked));
+ game24_win->signal_delete_event().connect(sigc::mem_fun(*this, &MyDock::game24_win_closed));
+ game24_win->signal_hide().connect(sigc::mem_fun(*this, &MyDock::game24_win_hide));
- btncalc->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::btncalc_clicked));
- padcalc->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::padcalc_clicked));
- calc_win->signal_delete_event().connect(sigc::mem_fun(*this,&MyDock::calc_win_closed));
- calc_win->signal_hide().connect(sigc::mem_fun(*this,&MyDock::calc_win_hide));
+ btncalc->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::btncalc_clicked));
+ padcalc->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::padcalc_clicked));
+ calc_win->signal_delete_event().connect(sigc::mem_fun(*this, &MyDock::calc_win_closed));
+ calc_win->signal_hide().connect(sigc::mem_fun(*this, &MyDock::calc_win_hide));
btnimage->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::btnimage_clicked));
padimage->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::padimage_clicked));
@@ -114,27 +118,42 @@ MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Gl
apply_style(*dock_box);
apply_style(*launchpad_page);
apply_style(*separator_end);
- //apps_grid->foreach(sigc::mem_fun(*this,&MyDock::apply_style));
+ // apps_grid->foreach(sigc::mem_fun(*this,&MyDock::apply_style));
+
+ // Set Dock or panel mode
+ switch (mode1)
+ {
+ case DockMode::MODE_DOCK:
+ dock_box->set_vexpand(false);
+ // std::cout << "dock mode" << std::endl;
+ break;
+ case DockMode::MODE_PANEL:
+ dock_box->set_vexpand();
+ dock_box->set_valign(Gtk::ALIGN_FILL);
+ // std::cout << "panel mode" << std::endl;
+ break;
+ }
show_all_children();
}
-void MyDock::set_dock_mode(DockMode mode){
- switch(mode){
- case DockMode::MODE_DOCK:
- set_vexpand(false);
- break;
- case DockMode::MODE_PANEL:
- set_vexpand();
- set_valign(Gtk::ALIGN_FILL);
- break;
- }
-}
+// void MyDock::set_dock_mode(DockMode mode){
+// switch(mode){
+// case DockMode::MODE_DOCK:
+// set_vexpand(false);
+// break;
+// case DockMode::MODE_PANEL:
+// set_vexpand();
+// set_valign(Gtk::ALIGN_FILL);
+// break;
+// }
+// }
// Set the style of dock widget
-void MyDock::apply_style(Gtk::Widget &widget){
+void MyDock::apply_style(Gtk::Widget &widget)
+{
auto style = widget.get_style_context();
- style->add_provider(provider,G_MAXUINT);
+ style->add_provider(provider, G_MAXUINT);
}
// Launchpad
@@ -230,7 +249,7 @@ void MyDock::padset_clicked()
btnlaunch_clicked();
}
-//Signal Handlers for drawing app window
+// Signal Handlers for drawing app window
bool MyDock::draw_win_closed(GdkEventAny *event)
{
@@ -239,7 +258,8 @@ bool MyDock::draw_win_closed(GdkEventAny *event)
return true;
}
-void MyDock::draw_win_hide(){
+void MyDock::draw_win_hide()
+{
btndraw->set_image_from_icon_name("drawing_app", Gtk::ICON_SIZE_DIALOG);
draw_app.hide();
}
@@ -309,49 +329,57 @@ void MyDock::padgame_clicked()
// Signal Handlers for game24 window
-bool MyDock::game24_win_closed(GdkEventAny *event){
- btngame24->set_image_from_icon_name("24game",Gtk::ICON_SIZE_DIALOG);
+bool MyDock::game24_win_closed(GdkEventAny *event)
+{
+ btngame24->set_image_from_icon_name("24game", Gtk::ICON_SIZE_DIALOG);
game24_win->hide();
return true;
}
-void MyDock::btngame24_clicked(){
- btngame24->set_image_from_icon_name("24game_running",Gtk::ICON_SIZE_DIALOG);
+void MyDock::btngame24_clicked()
+{
+ btngame24->set_image_from_icon_name("24game_running", Gtk::ICON_SIZE_DIALOG);
window_ctrl(*game24_win);
}
-void MyDock::padgame24_clicked(){
- btngame24->set_image_from_icon_name("24game_running",Gtk::ICON_SIZE_DIALOG);
- window_ctrl(*game24_win,false);
+void MyDock::padgame24_clicked()
+{
+ btngame24->set_image_from_icon_name("24game_running", Gtk::ICON_SIZE_DIALOG);
+ window_ctrl(*game24_win, false);
btnlaunch_clicked();
}
-void MyDock::game24_win_hide(){
- btngame24->set_image_from_icon_name("24game",Gtk::ICON_SIZE_DIALOG);
+void MyDock::game24_win_hide()
+{
+ btngame24->set_image_from_icon_name("24game", Gtk::ICON_SIZE_DIALOG);
game24_win->hide();
}
// Signal Handlers for Calc App
-bool MyDock::calc_win_closed(GdkEventAny *event){
- btncalc->set_image_from_icon_name("calcapp",Gtk::ICON_SIZE_DIALOG);
+bool MyDock::calc_win_closed(GdkEventAny *event)
+{
+ btncalc->set_image_from_icon_name("calcapp", Gtk::ICON_SIZE_DIALOG);
calc_win->hide();
return true;
}
-void MyDock::btncalc_clicked(){
- btncalc->set_image_from_icon_name("calcapp_running",Gtk::ICON_SIZE_DIALOG);
+void MyDock::btncalc_clicked()
+{
+ btncalc->set_image_from_icon_name("calcapp_running", Gtk::ICON_SIZE_DIALOG);
window_ctrl(*calc_win);
}
-void MyDock::padcalc_clicked(){
- btncalc->set_image_from_icon_name("calcapp_running",Gtk::ICON_SIZE_DIALOG);
+void MyDock::padcalc_clicked()
+{
+ btncalc->set_image_from_icon_name("calcapp_running", Gtk::ICON_SIZE_DIALOG);
window_ctrl(*calc_win);
btnlaunch_clicked();
}
-void MyDock::calc_win_hide(){
- btncalc->set_image_from_icon_name("calcapp",Gtk::ICON_SIZE_DIALOG);
+void MyDock::calc_win_hide()
+{
+ btncalc->set_image_from_icon_name("calcapp", Gtk::ICON_SIZE_DIALOG);
calc_win->hide();
}
@@ -401,18 +429,21 @@ void MyDock::padedit_clicked()
// Signal Handler for minesweeper window
-bool MyDock::mine_win_closed(GdkEventAny *event){
+bool MyDock::mine_win_closed(GdkEventAny *event)
+{
btnmine->set_image_from_icon_name("mines_app", Gtk::ICON_SIZE_DIALOG);
mine_win.hide();
return true;
}
-void MyDock::btnmine_clicked(){
+void MyDock::btnmine_clicked()
+{
btnmine->set_image_from_icon_name("mines_app_running", Gtk::ICON_SIZE_DIALOG);
window_ctrl(mine_win);
}
-void MyDock::padmine_clicked(){
+void MyDock::padmine_clicked()
+{
btnmine->set_image_from_icon_name("mines_app_running", Gtk::ICON_SIZE_DIALOG);
window_ctrl(mine_win, false);
btnlaunch_clicked();
@@ -464,13 +495,27 @@ void MyDock::window_ctrl(Gtk::Window &window, bool on_dock)
}
}
-MyDock *MyDock::create()
+MyDock *MyDock::create(DockMode mode)
{
MyDock *dock;
+ mode1 = mode;
// Get Widget
auto builder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/mydock.ui");
builder->get_widget_derived("main_box", dock);
+
+ // switch (mode)
+ // {
+ // case DockMode::MODE_DOCK:
+ // std::cout << "dock mode" << std::endl;
+ // break;
+ // case DockMode::MODE_PANEL:
+ // std::cout << "panel mode" << std::endl;
+ // break;
+ // default:
+ // std::cout << "undefined" << std::endl;
+ // break;
+ // }
return dock;
}
diff --git a/Gtkmm3_Mac/src/ui/MyDock.hh b/Gtkmm3_Mac/src/ui/MyDock.hh
index 08509ec..f9fb630 100644
--- a/Gtkmm3_Mac/src/ui/MyDock.hh
+++ b/Gtkmm3_Mac/src/ui/MyDock.hh
@@ -22,10 +22,10 @@ class MyDock : public Gtk::Box
{
public:
MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Glade);
- static MyDock *create();
+ static MyDock *create(DockMode mode);
void btnset_clicked();
void mydock_init(Gtk::Window *window, Gtk::Image *background1);
- void set_dock_mode(DockMode mode);
+ // void set_dock_mode(DockMode mode);
private:
// Child widgets
diff --git a/Gtkmm3_Mac/src/ui/MyPrefs.cc b/Gtkmm3_Mac/src/ui/MyPrefs.cc
index 312a16a..d5aa7c3 100644
--- a/Gtkmm3_Mac/src/ui/MyPrefs.cc
+++ b/Gtkmm3_Mac/src/ui/MyPrefs.cc
@@ -423,7 +423,8 @@ void MyPrefs::btnapply_clicked()
json data = json::parse(R"(
{
"height":1280,
- "width":720
+ "width":720,
+ "panel_mode":false
}
)");
std::fstream outfile;
@@ -432,6 +433,7 @@ void MyPrefs::btnapply_clicked()
{
data["width"] = width;
data["height"] = height;
+ data["panel_mode"] = panel_mode;
outfile<