Update MyPrefs

This commit is contained in:
daleclack 2023-05-17 13:38:11 +08:00
parent 67d38d3cb6
commit 9184ebcd3e
9 changed files with 137 additions and 116 deletions

View File

@ -9,11 +9,13 @@
(1,1,"GtkWindow",None,None,None,None,None,None), (1,1,"GtkWindow",None,None,None,None,None,None),
(1,2,"GtkButton",None,1,None,None,None,None), (1,2,"GtkButton",None,1,None,None,None,None),
(1,3,"GtkImage","image1",None,None,None,None,None), (1,3,"GtkImage","image1",None,None,None,None,None),
(2,1,"GtkWindow",None,None,None,None,None,None) (2,1,"GtkWindow",None,None,None,None,None,None),
(2,2,"GtkDropDown",None,1,None,None,None,None)
</object> </object>
<object_property> <object_property>
(1,2,"GtkButton","child","3",None,None,None,None,None), (1,2,"GtkButton","child","3",None,None,None,None,None),
(1,3,"GtkImage","icon-name","org.gtk.Demo4",None,None,None,None,None), (1,3,"GtkImage","icon-name","org.gtk.Demo4",None,None,None,None,None),
(1,3,"GtkImage","pixel-size","48",None,None,None,None,None) (1,3,"GtkImage","pixel-size","48",None,None,None,None,None),
(2,2,"GtkDropDown","selected","4294967292",None,None,None,None,None)
</object_property> </object_property>
</cambalache-project> </cambalache-project>

View File

@ -13,6 +13,15 @@
<property name="step-increment">1</property> <property name="step-increment">1</property>
<property name="page-increment">10</property> <property name="page-increment">10</property>
</object> </object>
<object class="GtkStringList" id="sizes_list">
<items>
<item translatable="yes">640x360</item>
<item translatable="yes">800x450</item>
<item translatable="yes">1024x576</item>
<item translatable="yes">1280x720</item>
<item translatable="yes">1366x768</item>
</items>
</object>
<object class="GtkBox" id="stack_box"> <object class="GtkBox" id="stack_box">
<property name="hexpand">1</property> <property name="hexpand">1</property>
<property name="vexpand">1</property> <property name="vexpand">1</property>
@ -74,15 +83,7 @@
<property name="row-spacing">5</property> <property name="row-spacing">5</property>
<property name="column-spacing">5</property> <property name="column-spacing">5</property>
<child> <child>
<object class="GtkComboBoxText" id="combo_default"> <object class="GtkBox" id="combo_box">
<property name="active">2</property>
<items>
<item translatable="yes">640x360</item>
<item translatable="yes">800x450</item>
<item translatable="yes">1024x576</item>
<item translatable="yes">1280x720</item>
<item translatable="yes">1366x768</item>
</items>
<layout> <layout>
<property name="column">1</property> <property name="column">1</property>
<property name="row">1</property> <property name="row">1</property>
@ -180,11 +181,8 @@
<property name="hexpand">1</property> <property name="hexpand">1</property>
<property name="vexpand">1</property> <property name="vexpand">1</property>
<child> <child>
<object class="GtkButton" id="btnapply"> <object class="GtkLabel" id="label_size">
<property name="label" translatable="1">Apply</property> <property name="label" translatable="1">Current Config: </property>
<property name="focusable">1</property>
<property name="receives-default">1</property>
<property name="halign">end</property>
</object> </object>
</child> </child>
<child> <child>
@ -196,8 +194,11 @@
</object> </object>
</child> </child>
<child> <child>
<object class="GtkLabel" id="label_size"> <object class="GtkButton" id="btnapply">
<property name="label" translatable="1">Current Config: </property> <property name="label" translatable="1">Apply</property>
<property name="focusable">1</property>
<property name="receives-default">1</property>
<property name="halign">end</property>
</object> </object>
</child> </child>
</object> </object>
@ -332,6 +333,12 @@
<object class="GtkBox"> <object class="GtkBox">
<property name="hexpand">1</property> <property name="hexpand">1</property>
<property name="vexpand">1</property> <property name="vexpand">1</property>
<child>
<object class="GtkLabel">
<property name="label" translatable="1"> </property>
<property name="hexpand">1</property>
</object>
</child>
<child> <child>
<object class="GtkButton" id="btnapply1"> <object class="GtkButton" id="btnapply1">
<property name="label" translatable="1">Apply</property> <property name="label" translatable="1">Apply</property>

View File

@ -14,14 +14,14 @@ MyStack::MyStack()
btnlogin->signal_clicked().connect(sigc::mem_fun(*this, &MyStack::btnlogin_clicked)); btnlogin->signal_clicked().connect(sigc::mem_fun(*this, &MyStack::btnlogin_clicked));
} }
void MyStack::mystack_init(Gtk::Window *window, Gtk::Image *m_back) void MyStack::mystack_init(Gtk::Window *window, Gtk::Picture *m_back)
{ {
main_dock->mydock_init(window, m_back); main_dock->mydock_init(window, m_back);
} }
void MyStack::show_prefs() void MyStack::show_prefs()
{ {
// main_dock->btnset_clicked(); main_dock->btnset_clicked();
} }
void MyStack::logout() void MyStack::logout()

View File

@ -8,7 +8,7 @@ class MyStack
public: public:
MyStack(); MyStack();
void logout(); void logout();
void mystack_init(Gtk::Window *window, Gtk::Image *m_back); void mystack_init(Gtk::Window *window, Gtk::Picture *m_back);
void show_prefs(); void show_prefs();
void set_mydock_mode(DockMode mode); void set_mydock_mode(DockMode mode);

View File

@ -9,7 +9,7 @@ public:
private: private:
//Child widgets //Child widgets
Gtk::Overlay m_overlay; Gtk::Overlay m_overlay;
Gtk::Image m_background; Gtk::Picture m_background;
Gtk::Box menubox; Gtk::Box menubox;
Gtk::PopoverMenu context_menu; Gtk::PopoverMenu context_menu;

View File

@ -76,9 +76,9 @@ MyDock::MyDock(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Gl
last 1 or 2 signals for the window last 1 or 2 signals for the window
*/ */
// btnset->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::btnset_clicked)); btnset->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::btnset_clicked));
// padset->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::padset_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)); prefs_win.signal_close_request().connect(sigc::mem_fun(*this, &MyDock::prefs_win_closed), true);
// btndraw->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::btndraw_clicked)); // btndraw->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::btndraw_clicked));
// paddraw->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::paddraw_clicked)); // paddraw->signal_clicked().connect(sigc::mem_fun(*this, &MyDock::paddraw_clicked));
@ -225,11 +225,11 @@ void MyDock::btnlaunch_clicked()
} }
} }
void MyDock::mydock_init(Gtk::Window *window, Gtk::Image *background1) void MyDock::mydock_init(Gtk::Window *window, Gtk::Picture *background1)
{ {
// Initalize Preference window // Initalize Preference window
// prefs_win.set_background(background1); prefs_win.set_background(background1);
// prefs_win.set_transient_for(*window); prefs_win.set_transient_for(*window);
parent_win = window; parent_win = window;
} }
@ -280,28 +280,28 @@ void MyDock::padnote_clicked()
btnlaunch_clicked(); btnlaunch_clicked();
} }
// bool MyDock::prefs_win_closed(GdkEventAny *event) bool MyDock::prefs_win_closed()
// { {
// // Handle the "closed" signal of preference window // Handle the "closed" signal of preference window
// btnset->set_image_from_icon_name("my_prefs", Gtk::ICON_SIZE_DIALOG); // btnset->set_image_from_icon_name("my_prefs", Gtk::ICON_SIZE_DIALOG);
// prefs_win.hide(); prefs_win.set_visible(false);
// return true; return true;
// } }
// void MyDock::btnset_clicked() void MyDock::btnset_clicked()
// { {
// // Show settings window (preferences) // Show settings window (preferences)
// btnset->set_image_from_icon_name("my_prefs_running", Gtk::ICON_SIZE_DIALOG); // btnset->set_image_from_icon_name("my_prefs_running", Gtk::ICON_SIZE_DIALOG);
// window_ctrl(prefs_win); window_ctrl(prefs_win);
// } }
// void MyDock::padset_clicked() void MyDock::padset_clicked()
// { {
// // Function for button on launchpad // Function for button on launchpad
// btnset->set_image_from_icon_name("my_prefs_running", Gtk::ICON_SIZE_DIALOG); // btnset->set_image_from_icon_name("my_prefs_running", Gtk::ICON_SIZE_DIALOG);
// window_ctrl(prefs_win, false); window_ctrl(prefs_win, false);
// btnlaunch_clicked(); btnlaunch_clicked();
// } }
// // Signal Handlers for drawing app window // // Signal Handlers for drawing app window
@ -511,43 +511,44 @@ void MyDock::padnote_clicked()
// btnlaunch_clicked(); // btnlaunch_clicked();
// } // }
// void MyDock::window_ctrl(Gtk::Window &window, bool on_dock) void MyDock::window_ctrl(Gtk::Window &window, bool on_dock)
// { {
// // Get the GdkWindow object to get the state of a window // Get the GdkWindow object to get the state of a window
// auto gdk_win = window.get_window(); auto gdk_win = window.get_surface();
// if (gdk_win) if (gdk_win)
// { {
// /* /*
// The State of GdkWindow (GdkSurface for Gtk4) The State of GdkWindow (GdkSurface for Gtk4)
// Gdk::WINDOW_STATE_WITHDRAWN: The window is not shown Gdk::Toplevel::State::BELOW: The window is below other windows
// Gdk::WINDOW_STATE_ICONIFIED: The window is minimized Gdk::Toplevel::State::MINIMIZED: The window is minimized
// the default mode for first launch the default mode for first launch
// */ */
// auto state = gdk_win->get_state(); auto toplevel = Glib::wrap(GDK_TOPLEVEL(gdk_win->gobj()));
// switch (state) auto state = toplevel->get_state();
// { switch (state)
// case Gdk::WINDOW_STATE_WITHDRAWN: {
// case Gdk::Toplevel::State::BELOW:
// window.present(); // window.present();
// break; // break;
// case Gdk::WINDOW_STATE_ICONIFIED: case Gdk::Toplevel::State::MINIMIZED:
// window.set_transient_for(*parent_win); window.set_transient_for(*parent_win);
// window.deiconify(); window.unminimize();
// break; break;
// default: default:
// if (on_dock) if (on_dock)
// { {
// window.unset_transient_for(); window.unset_transient_for();
// window.iconify(); window.minimize();
// break; break;
// } }
// } }
// } }
// else else
// { {
// window.set_transient_for(*parent_win); window.set_transient_for(*parent_win);
// window.present(); window.present();
// } }
// } }
MyDock *MyDock::create(DockMode mode) MyDock *MyDock::create(DockMode mode)
{ {

View File

@ -19,7 +19,7 @@ public:
MyDock(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade); MyDock(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &ref_Glade);
static MyDock *create(DockMode mode); static MyDock *create(DockMode mode);
void btnset_clicked(); void btnset_clicked();
void mydock_init(Gtk::Window *window, Gtk::Image *background1); void mydock_init(Gtk::Window *window, Gtk::Picture *background1);
// void set_dock_mode(DockMode mode); // void set_dock_mode(DockMode mode);
private: private:
@ -41,10 +41,10 @@ private:
*padimage, *padnote, *padedit, *padvlc, *padvlc_win32, *padrun, *padgame24, *padmine; *padimage, *padnote, *padedit, *padvlc, *padvlc_win32, *padrun, *padgame24, *padmine;
Gtk::Label label1; Gtk::Label label1;
// // Window Preferences // Window Preferences
// MyPrefs prefs_win; MyPrefs prefs_win;
// bool prefs_win_closed(GdkEventAny *event); bool prefs_win_closed();
// void padset_clicked(); void padset_clicked();
// // Drawing Window // // Drawing Window
// Drawing draw_app; // Drawing draw_app;
@ -101,8 +101,9 @@ private:
// // A Simple Runner // // A Simple Runner
// GtkRunner runner1; // GtkRunner runner1;
// // Window Control // Window Control
// void window_ctrl(Gtk::Window &window, bool on_dock = true); bool first_launch;
void window_ctrl(Gtk::Window &window, bool on_dock = true);
// Other // Other
Gtk::Window *parent_win; Gtk::Window *parent_win;

View File

@ -124,21 +124,27 @@ MyPrefs::MyPrefs()
// Get Widgets for multi pages // Get Widgets for multi pages
stackbuilder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/prefs_stack.ui"); stackbuilder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/prefs_stack.ui");
stackbuilder->get_widget("stack_box", stack_box); stack_box = stackbuilder->get_widget<Gtk::Box>("stack_box");
stackbuilder->get_widget("back_page", back_page); back_page = stackbuilder->get_widget<Gtk::Box>("back_page");
stackbuilder->get_widget("combo_default", combo_default); combo_box = stackbuilder->get_widget<Gtk::Box>("combo_box");
stackbuilder->get_widget("radio_default", radio_default); radio_default = stackbuilder->get_widget<Gtk::CheckButton>("radio_default");
stackbuilder->get_widget("radio_custom", radio_custom); radio_custom = stackbuilder->get_widget<Gtk::CheckButton>("radio_custom");
stackbuilder->get_widget("spin_width", spin_width); spin_width = stackbuilder->get_widget<Gtk::SpinButton>("spin_width");
stackbuilder->get_widget("spin_height", spin_height); spin_height = stackbuilder->get_widget<Gtk::SpinButton>("spin_height");
stackbuilder->get_widget("btnapply", btnapply); btnapply = stackbuilder->get_widget<Gtk::Button>("btnapply");
stackbuilder->get_widget("btnGet", btnGet); btnGet = stackbuilder->get_widget<Gtk::Button>("btnGet");
stackbuilder->get_widget("label_size", label_size); label_size = stackbuilder->get_widget<Gtk::Label>("label_size");
stackbuilder->get_widget("mode_check", mode_check); mode_check = stackbuilder->get_widget<Gtk::CheckButton>("mode_check");
stackbuilder->get_widget("radio_left", radio_left); radio_left = stackbuilder->get_widget<Gtk::CheckButton>("radio_left");
stackbuilder->get_widget("radio_right", radio_right); radio_right = stackbuilder->get_widget<Gtk::CheckButton>("radio_right");
stackbuilder->get_widget("radio_bottom", radio_bottom); radio_bottom = stackbuilder->get_widget<Gtk::CheckButton>("radio_bottom");
stackbuilder->get_widget("btnapply1", btnapply1); btnapply1 = stackbuilder->get_widget<Gtk::Button>("btnapply1");
// Create Dropdown selecter
sizes_list = stackbuilder->get_object<Gtk::StringList>("sizes_list");
combo_default.set_model(sizes_list);
combo_default.set_selected(2);
combo_box->append(combo_default);
// Initalize radio buttons // Initalize radio buttons
radio_default->set_active(); radio_default->set_active();
@ -286,6 +292,7 @@ int MyPrefs::sort_func(const Gtk::TreeModel::iterator &a, const Gtk::TreeModel::
// { // {
// return g_utf8_collate(name_a.c_str(), name_b.c_str()); // return g_utf8_collate(name_a.c_str(), name_b.c_str());
// } // }
return -1;
} }
bool MyPrefs::icasecompare(const std::string &a, const std::string &b) bool MyPrefs::icasecompare(const std::string &a, const std::string &b)
@ -402,7 +409,8 @@ void MyPrefs::set_background_internal(const char *const *data)
// Set a internal background // Set a internal background
auto pixbuf = Gdk::Pixbuf::create_from_xpm_data(data); auto pixbuf = Gdk::Pixbuf::create_from_xpm_data(data);
auto sized = pixbuf->scale_simple(width, height, Gdk::InterpType::BILINEAR); auto sized = pixbuf->scale_simple(width, height, Gdk::InterpType::BILINEAR);
gtk_image_set_from_pixbuf(background1->gobj(), sized->gobj()); // gtk_image_set_from_pixbuf(background1->gobj(), sized->gobj());
background1->set_pixbuf(sized);
pixbuf.reset(); pixbuf.reset();
sized.reset(); sized.reset();
background_internal = true; background_internal = true;
@ -414,7 +422,8 @@ void MyPrefs::set_background_file()
try{ try{
auto pixbuf = Gdk::Pixbuf::create_from_file(path); auto pixbuf = Gdk::Pixbuf::create_from_file(path);
auto sized = pixbuf->scale_simple(width, height, Gdk::InterpType::BILINEAR); auto sized = pixbuf->scale_simple(width, height, Gdk::InterpType::BILINEAR);
gtk_image_set_from_pixbuf(background1->gobj(), sized->gobj()); // gtk_image_set_from_pixbuf(background1->gobj(), sized->gobj());
background1->set_pixbuf(sized);
pixbuf.reset(); pixbuf.reset();
sized.reset(); sized.reset();
background_internal = false; background_internal = false;
@ -429,7 +438,7 @@ void MyPrefs::update_background_size()
{ {
} }
void MyPrefs::set_background(Gtk::Image *back) void MyPrefs::set_background(Gtk::Picture *back)
{ {
// Link background widget to the class // Link background widget to the class
background1 = back; background1 = back;
@ -455,7 +464,7 @@ void MyPrefs::radiobutton_toggled()
{ {
// Change sensitive state of buttons // Change sensitive state of buttons
bool mode = radio_default->get_active(); bool mode = radio_default->get_active();
combo_default->set_sensitive(mode); combo_default.set_sensitive(mode);
spin_height->set_sensitive(!mode); spin_height->set_sensitive(!mode);
spin_width->set_sensitive(!mode); spin_width->set_sensitive(!mode);
btnGet->set_sensitive(!mode); btnGet->set_sensitive(!mode);
@ -516,7 +525,7 @@ void MyPrefs::btnapply_clicked()
// Get Config // Get Config
if (radio_default->get_active()) if (radio_default->get_active())
{ {
int mode = combo_default->get_active_row_number(); int mode = combo_default.get_selected();
switch (mode) switch (mode)
{ {
case 0: case 0:

View File

@ -25,7 +25,7 @@ class MyPrefs : public Gtk::Window
{ {
public: public:
MyPrefs(); MyPrefs();
void set_background(Gtk::Image *back); void set_background(Gtk::Picture *back);
void load_winsize_config(); void load_winsize_config();
void update_background_size(); void update_background_size();
DockPos get_dock_pos(); DockPos get_dock_pos();
@ -39,7 +39,7 @@ private:
int width, height; // Window size int width, height; // Window size
bool panel_mode; // dock or panel mode bool panel_mode; // dock or panel mode
DockPos dock_pos; // position of dock DockPos dock_pos; // position of dock
Gtk::Image *background1; // background widget from main window Gtk::Picture *background1; // background widget from main window
std::string path; // Current background path std::string path; // Current background path
bool background_internal; // tag for background internal bool background_internal; // tag for background internal
@ -48,9 +48,10 @@ private:
// Page switcher and another page // Page switcher and another page
Glib::RefPtr<Gtk::Builder> stackbuilder; Glib::RefPtr<Gtk::Builder> stackbuilder;
Gtk::Box *stack_box, *back_page, *winsize_page; Glib::RefPtr<Gtk::StringList> sizes_list;
Gtk::Box *stack_box, *back_page, *winsize_page, *combo_box;
Gtk::CheckButton *radio_default, *radio_custom; Gtk::CheckButton *radio_default, *radio_custom;
Gtk::ComboBoxText *combo_default; Gtk::DropDown combo_default;
Gtk::SpinButton *spin_width, *spin_height; Gtk::SpinButton *spin_width, *spin_height;
Gtk::Button *btnapply, *btnGet; Gtk::Button *btnapply, *btnGet;
Gtk::Label *label_size; Gtk::Label *label_size;