diff --git a/Gtkmm3_Mac/CMakeLists.txt b/Gtkmm3_Mac/CMakeLists.txt index 881a731..bd5df77 100644 --- a/Gtkmm3_Mac/CMakeLists.txt +++ b/Gtkmm3_Mac/CMakeLists.txt @@ -58,11 +58,14 @@ set(RESOURCE_LIST icons/48x48/actions/btnabout.png icons/48x48/actions/My_GtkUI.png icons/scalable/status/my_prefs.svg + icons/scalable/status/my_prefs_running.svg icons/scalable/status/drawing_app.svg icons/scalable/status/drawing_app_running.svg icons/scalable/status/finder-find.svg + icons/scalable/status/file-app.svg + icons/scalable/status/file-app_running.svg icons/scalable/status/display_prefs.svg - icons/scalable/status/file-app.svg) + icons/scalable/status/myrunner.svg) compile_gresources(RESOURCE_FILE XML_OUT diff --git a/Gtkmm3_Mac/res/dock_style.css b/Gtkmm3_Mac/res/dock_style.css index 4548a0e..b7da0aa 100644 --- a/Gtkmm3_Mac/res/dock_style.css +++ b/Gtkmm3_Mac/res/dock_style.css @@ -11,6 +11,10 @@ box{ background-color:alpha(white,0.3); } +separator{ + background-color:alpha(white,0.3); +} + grid{ background-color:alpha(rgb(49, 48, 48),0.3); } \ No newline at end of file diff --git a/Gtkmm3_Mac/res/icons/scalable/status/file-app_running.svg b/Gtkmm3_Mac/res/icons/scalable/status/file-app_running.svg new file mode 100644 index 0000000..e8ba00a --- /dev/null +++ b/Gtkmm3_Mac/res/icons/scalable/status/file-app_running.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gtkmm3_Mac/res/icons/scalable/status/my_prefs_running.svg b/Gtkmm3_Mac/res/icons/scalable/status/my_prefs_running.svg new file mode 100644 index 0000000..891a6ef --- /dev/null +++ b/Gtkmm3_Mac/res/icons/scalable/status/my_prefs_running.svg @@ -0,0 +1,472 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gtkmm3_Mac/res/icons/scalable/status/myrunner.svg b/Gtkmm3_Mac/res/icons/scalable/status/myrunner.svg new file mode 100644 index 0000000..fee881c --- /dev/null +++ b/Gtkmm3_Mac/res/icons/scalable/status/myrunner.svg @@ -0,0 +1,32 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gtkmm3_Mac/res/mydock.ui b/Gtkmm3_Mac/res/mydock.ui index 16352a0..5604d1d 100644 --- a/Gtkmm3_Mac/res/mydock.ui +++ b/Gtkmm3_Mac/res/mydock.ui @@ -2,21 +2,6 @@ - - False - - - Notepad - True - True - True - image15 - none - top - True - - - True False @@ -62,12 +47,42 @@ 48 gedit + + True + False + 48 + gedit + + + True + False + 48 + vlc + + + True + False + 48 + vlc + + + True + False + 48 + myrunner + True False 48 drawing_app + + True + False + 48 + my_prefs + True False @@ -145,6 +160,19 @@ center center vertical + 5 + + + 5 + True + False + + + False + True + 0 + + True @@ -157,7 +185,7 @@ False True - 0 + 1 @@ -172,7 +200,7 @@ False True - 1 + 2 @@ -187,7 +215,7 @@ False True - 2 + 3 @@ -202,7 +230,7 @@ False True - 3 + 4 @@ -217,7 +245,7 @@ False True - 4 + 5 @@ -232,7 +260,7 @@ False True - 5 + 6 @@ -247,11 +275,23 @@ False True - 6 + 7 - + + 5 + True + False + + + + False + True + 8 + @@ -318,7 +358,7 @@ True True - + about 64 64 @@ -337,7 +377,7 @@ - + audacious 64 64 @@ -355,7 +395,7 @@ - + Drawing True True @@ -371,7 +411,7 @@ - + MyFinder True True @@ -387,7 +427,7 @@ - + Gedit True True @@ -403,7 +443,7 @@ - + Guess game True True @@ -419,7 +459,7 @@ - + Image Viewer True True @@ -435,22 +475,100 @@ - + + Notepad(win) + True + True + True + image15 + none + top + True + + + 2 + 1 + - + + TextEditor + True + True + True + image16 + none + top + True + + + 3 + 1 + - + + VLC(linux) + True + True + True + image17 + none + top + True + + + 4 + 1 + - + + VLC(win32) + True + True + True + image18 + none + top + True + + + 5 + 1 + - + + Run App + True + True + True + image19 + none + top + True + + + 1 + 1 + - + + Preferences + True + True + True + image20 + none + top + True + + + 0 + 1 + @@ -588,7 +706,14 @@ - + + True + False + + + 1 + 0 + diff --git a/Gtkmm3_Mac/src/ui/MyDock.cc b/Gtkmm3_Mac/src/ui/MyDock.cc index c47ad8a..5f5eaab 100644 --- a/Gtkmm3_Mac/src/ui/MyDock.cc +++ b/Gtkmm3_Mac/src/ui/MyDock.cc @@ -6,7 +6,7 @@ MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Gl ref_builder(ref_Glade), launchpad_shown(false) { - // Get Widget + // Get Widgets ref_builder->get_widget("finder_box", finder_box); ref_builder->get_widget("dock_box", dock_box); ref_builder->get_widget("btnlaunch",btnlaunch); @@ -16,23 +16,28 @@ 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("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("btnabout",btnabout); - ref_builder->get_widget("btnaud",btnaud); + ref_builder->get_widget("padaud",padaud); + ref_builder->get_widget("padgedit",padgedit); + ref_builder->get_widget("padvlc",padvlc); + ref_builder->get_widget("padnote",padnote); + ref_builder->get_widget("padvlc_win32",padvlc_win32); + ref_builder->get_widget("padset",padset); - // Add Buttons for launchpad - // launchpad_page->attach(*btnabout,0,0); - // launchpad_page->attach(*btnaud,1,0); - // label1.set_label(" "); - // label1.set_hexpand(); - // label1.set_vexpand(); - // launchpad_page->attach(label1,2,1); - - //Link signals - btnset->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::btnset_clicked)); + // Link signals btnlaunch->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::btnlaunch_clicked)); + padaud->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::padaud_clicked)); + padgedit->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::padgedit_clicked)); + padvlc->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::padvlc_clicked)); + padnote->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::padnote_clicked)); + padvlc_win32->signal_clicked().connect(sigc::mem_fun(*this,&MyDock::padvlc_win32_clicked)); + 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)); finder_box->pack_start(finder); // Add Style for MyFinder @@ -42,6 +47,8 @@ MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Gl style->add_provider(provider, G_MAXUINT); auto style1 = launchpad_page->get_style_context(); style1->add_provider(provider,G_MAXUINT); + auto style2 = separator_end->get_style_context(); + style2->add_provider(provider,G_MAXUINT); show_all_children(); } @@ -64,9 +71,75 @@ void MyDock::mydock_init(Gtk::Window *window, Gtk::Image *background1) parent_win = window; } +void MyDock::padaud_clicked(){ + std::thread first(system,"audacious"); + first.detach(); + btnlaunch_clicked(); +} + +void MyDock::padgedit_clicked(){ + std::thread second(system,"gedit"); + second.detach(); + btnlaunch_clicked(); +} + +void MyDock::padvlc_clicked(){ + std::thread third(system,"vlc"); + third.detach(); + btnlaunch_clicked(); +} + +void MyDock::padvlc_win32_clicked(){ + std::thread fourth(system,"start notepad"); + fourth.detach(); + btnlaunch_clicked(); +} + +void MyDock::padnote_clicked(){ + std::thread fifth(system,"start ..\\vlc\\vlc.exe"); + fifth.detach(); + btnlaunch_clicked(); +} + +bool MyDock::prefs_win_closed(GdkEventAny * event){ + btnset->set_image_from_icon_name("my_prefs",Gtk::ICON_SIZE_DIALOG); + prefs_win.hide(); + return true; +} + void MyDock::btnset_clicked() { - prefs_win.show_all(); + btnset->set_image_from_icon_name("my_prefs_running",Gtk::ICON_SIZE_DIALOG); + window_ctrl(prefs_win); +} + +void MyDock::padset_clicked(){ + btnset->set_image_from_icon_name("my_prefs_running",Gtk::ICON_SIZE_DIALOG); + window_ctrl(prefs_win,false); +} + +void MyDock::window_ctrl(Gtk::Window &window, bool on_dock){ + auto gdk_win = window.get_window(); + if(gdk_win){ + auto state = gdk_win->get_state(); + switch(state){ + case Gdk::WINDOW_STATE_WITHDRAWN: + window.show_all(); + break; + case Gdk::WINDOW_STATE_ICONIFIED: + window.set_transient_for(*parent_win); + window.deiconify(); + break; + default: + if(on_dock){ + window.unset_transient_for(); + window.iconify(); + break; + } + } + }else{ + window.show_all(); + } } MyDock *MyDock::create() diff --git a/Gtkmm3_Mac/src/ui/MyDock.hh b/Gtkmm3_Mac/src/ui/MyDock.hh index f878ed3..503b851 100644 --- a/Gtkmm3_Mac/src/ui/MyDock.hh +++ b/Gtkmm3_Mac/src/ui/MyDock.hh @@ -10,13 +10,14 @@ public: MyDock(BaseObjectType *cobject, const Glib::RefPtr &ref_Glade); static MyDock *create(); void btnset_clicked(); - void mydock_init(Gtk::Window * window, Gtk::Image *background1); + void mydock_init(Gtk::Window *window, Gtk::Image *background1); private: // Child widgets Gtk::Box *finder_box, *dock_box; Gtk::Button *btnlaunch, *btndraw, *btnfiles, *btngame, *btnedit, *btnimage, *btnset; + Gtk::Separator *separator_start, *separator_end; // Finder MyFinder finder; @@ -25,11 +26,16 @@ private: bool launchpad_shown; Gtk::Stack *launchpad_stack; Gtk::Grid *default_page, *launchpad_page; - Gtk::Button *btnabout, *btnaud; + Gtk::Button *padaud, *paddraw, *padfile, *padgedit, *padgame, *padset, + *padimage, *padnote, *padedit, *padvlc, *padvlc_win32, *padrun; Gtk::Label label1; - //Window Preferences + // Window Preferences MyPrefs prefs_win; + bool prefs_win_closed(GdkEventAny *event); + + // Window Control + void window_ctrl(Gtk::Window &window, bool on_dock = true); // Other Gtk::Window *parent_win; @@ -38,4 +44,10 @@ private: // Signal Handlers void btnlaunch_clicked(); + void padaud_clicked(); + void padgedit_clicked(); + void padvlc_clicked(); + void padvlc_win32_clicked(); + void padnote_clicked(); + void padset_clicked(); };