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<