mirror of https://github.com/daleclack/My_GtkUi
Add support for panel mode
This commit is contained in:
parent
f2acd6ba9f
commit
b613614552
|
@ -251,6 +251,7 @@
|
|||
<property name="height-request">340</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="hscrollbar-policy">never</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<child>
|
||||
|
@ -464,6 +465,7 @@
|
|||
<property name="height-request">5</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<style>
|
||||
<class name="separator1"/>
|
||||
</style>
|
||||
|
|
|
@ -1,39 +1,57 @@
|
|||
#include "MyStack.hh"
|
||||
#include <iostream>
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -20,6 +20,7 @@ private:
|
|||
//Main Stack
|
||||
MyStack main_stack;
|
||||
int width, height;
|
||||
bool panel_mode;
|
||||
|
||||
//Signal Handlers
|
||||
void logout_activated();
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
#include "MyDock.hh"
|
||||
#include <thread>
|
||||
#include <iostream>
|
||||
|
||||
// Dock or Panel Mode
|
||||
static DockMode mode1;
|
||||
|
||||
MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade)
|
||||
: Gtk::Box(cobject),
|
||||
|
@ -16,15 +20,15 @@ MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &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<Gtk::Builder> &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<Gtk::Builder> &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<Gtk::Builder> &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<Gtk::Builder> &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;
|
||||
}
|
||||
|
|
|
@ -22,10 +22,10 @@ class MyDock : public Gtk::Box
|
|||
{
|
||||
public:
|
||||
MyDock(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &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
|
||||
|
|
|
@ -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<<data;
|
||||
outfile.close();
|
||||
}
|
||||
|
@ -452,8 +454,10 @@ void MyPrefs::load_winsize_config(){
|
|||
json data = json::parse(jsonfile);
|
||||
height = data["height"];
|
||||
width = data["width"];
|
||||
panel_mode = data["panel_mode"];
|
||||
}else{
|
||||
height = 720;
|
||||
width = 1280;
|
||||
panel_mode = false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ protected:
|
|||
private:
|
||||
// Background widget and properties
|
||||
int width, height;
|
||||
bool panel_mode;
|
||||
Gtk::Image *background1;
|
||||
std::string path;
|
||||
bool background_internal;
|
||||
|
@ -83,14 +84,16 @@ private:
|
|||
};
|
||||
|
||||
//Read Config from file without use the MyPrefs class
|
||||
static inline void get_size_config(int &width, int &height){
|
||||
static inline void get_size_config(int &width, int &height, bool &panel_mode){
|
||||
std::ifstream jsonfile("config.json");
|
||||
if(jsonfile.is_open()){
|
||||
json data = json::parse(jsonfile);
|
||||
height = data["height"];
|
||||
width = data["width"];
|
||||
panel_mode = data["panel_mode"];
|
||||
}else{
|
||||
height = 720;
|
||||
width = 1280;
|
||||
panel_mode = false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue