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 @@
+
+
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 @@
-
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();
};