Add About window

This commit is contained in:
daleclack 2022-01-28 17:10:54 +08:00
parent 4cb0dfaa74
commit ad377527eb
4 changed files with 81 additions and 33 deletions

View File

@ -4,6 +4,7 @@
<section> <section>
<item> <item>
<attribute name="label">About My GtkUI Mac version</attribute> <attribute name="label">About My GtkUI Mac version</attribute>
<attribute name="action">win.about</attribute>
</item> </item>
<item> <item>
<attribute name="label">Software Update...</attribute> <attribute name="label">Software Update...</attribute>

View File

@ -2,52 +2,98 @@
#include "winpe.xpm" #include "winpe.xpm"
MyWin::MyWin() MyWin::MyWin()
:menubox(Gtk::ORIENTATION_HORIZONTAL,0) : menubox(Gtk::ORIENTATION_HORIZONTAL, 0)
{ {
//Initalize window // Initalize window
set_default_size(1024,576); set_default_size(1024, 576);
set_icon_name("My_GtkUI"); set_icon_name("My_GtkUI");
set_title("My GtkUI macOS Version"); set_title("My GtkUI macOS Version");
//Add background // Add background
auto pixbuf = Gdk::Pixbuf::create_from_xpm_data(winpe); auto pixbuf = Gdk::Pixbuf::create_from_xpm_data(winpe);
auto sized = pixbuf->scale_simple(1024,576,Gdk::INTERP_BILINEAR); auto sized = pixbuf->scale_simple(1024, 576, Gdk::INTERP_BILINEAR);
gtk_image_set_from_pixbuf(m_background.gobj(),sized->gobj()); gtk_image_set_from_pixbuf(m_background.gobj(), sized->gobj());
m_overlay.add(m_background); m_overlay.add(m_background);
//Add Action for menus // Add Action for menus
add_action("logout",sigc::mem_fun(*this,&MyWin::logout_activated)); add_action("logout", sigc::mem_fun(*this, &MyWin::logout_activated));
add_action("quit",sigc::mem_fun(*this,&MyWin::quit_activated)); add_action("quit", sigc::mem_fun(*this, &MyWin::quit_activated));
add_action("about",sigc::mem_fun(*this,&MyWin::about_activated));
//Add Stack // Add Stack
m_overlay.add_overlay(*(main_stack.stack)); m_overlay.add_overlay(*(main_stack.stack));
//Add context menu // Add context menu
auto menubuilder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/mainmenu.xml"); auto menubuilder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/mainmenu.xml");
auto object = menubuilder->get_object("model"); auto object = menubuilder->get_object("model");
auto gmenu = Glib::RefPtr<Gio::Menu>::cast_dynamic(object); auto gmenu = Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
context_menu.bind_model(gmenu); context_menu.bind_model(gmenu);
context_menu.set_relative_to(m_overlay); context_menu.set_relative_to(m_overlay);
//Add Gesture for control // Add Gesture for control
gesture = Gtk::GestureMultiPress::create(m_overlay); gesture = Gtk::GestureMultiPress::create(m_overlay);
gesture->set_button(GDK_BUTTON_SECONDARY); gesture->set_button(GDK_BUTTON_SECONDARY);
gesture->signal_pressed().connect(sigc::mem_fun(*this,&MyWin::press)); gesture->signal_pressed().connect(sigc::mem_fun(*this, &MyWin::press));
add(m_overlay); add(m_overlay);
show_all_children(); show_all_children();
} }
void MyWin::press(int n_press,double x,double y){ void MyWin::press(int n_press, double x, double y)
//Show Menu {
context_menu.set_pointing_to(Gdk::Rectangle((int)x,(int)y,1,1)); // Show Menu
context_menu.set_pointing_to(Gdk::Rectangle((int)x, (int)y, 1, 1));
context_menu.popup(); context_menu.popup();
} }
void MyWin::logout_activated(){ void MyWin::logout_activated()
{
main_stack.logout(); main_stack.logout();
} }
void MyWin::quit_activated(){ void MyWin::about_activated()
{
// Authors information
const char *authors[] = {
"Dale Clack",
"GCR_CMake on github https://github.com/Makman2/GCR_CMake",
NULL};
//Version information
char *version;
version = g_strdup_printf("5.0\nRunning Against: Gtkmm %d.%d.%d",
GTKMM_MAJOR_VERSION,
GTKMM_MINOR_VERSION,
GTKMM_MICRO_VERSION);
// Get Year information
time_t t;
t=time(NULL);
struct tm * local;
local = localtime(&t);
//Copyright
char * copyright;
copyright = g_strdup_printf("©2019—%04d The Xe Project",local->tm_year+1900);
//Show the about dialog
gtk_show_about_dialog(GTK_WINDOW(gobj()),
"program-name", "My_GtkUI",
"version", version,
"copyright", copyright,
"comments", "A program that simulates desktop (Mac Version)",
"authors", authors,
"license-type", GTK_LICENSE_GPL_3_0,
"logo-icon-name", "My_GtkUI",
"title", "About My GtkUI Mac Version",
NULL);
//Free Memory
g_free(version);
g_free(copyright);
}
void MyWin::quit_activated()
{
hide(); hide();
} }

View File

@ -23,5 +23,6 @@ private:
//Signal Handlers //Signal Handlers
void logout_activated(); void logout_activated();
void quit_activated(); void quit_activated();
void about_activated();
}; };

View File

@ -67,15 +67,15 @@ MyFinder::MyFinder()
calender.set_margin_start(5); calender.set_margin_start(5);
calender.set_margin_end(5); calender.set_margin_end(5);
//Menu button // Menu button
menu_button.set_image_from_icon_name("open-menu"); menu_button.set_image_from_icon_name("open-menu");
menu_button.set_relief(Gtk::RELIEF_NONE); menu_button.set_relief(Gtk::RELIEF_NONE);
pack_end(menu_button,Gtk::PACK_SHRINK); pack_end(menu_button, Gtk::PACK_SHRINK);
//Find Button // Find Button
find_button.set_image_from_icon_name("finder-find"); find_button.set_image_from_icon_name("finder-find");
find_button.set_relief(Gtk::RELIEF_NONE); find_button.set_relief(Gtk::RELIEF_NONE);
pack_end(find_button,Gtk::PACK_SHRINK); pack_end(find_button, Gtk::PACK_SHRINK);
// Timer // Timer
timer_button.set_label("2022/1/23 18:32"); timer_button.set_label("2022/1/23 18:32");
@ -85,31 +85,31 @@ MyFinder::MyFinder()
mytimer = Glib::signal_timeout().connect(sigc::mem_fun(*this, &MyFinder::time_out), 1000); mytimer = Glib::signal_timeout().connect(sigc::mem_fun(*this, &MyFinder::time_out), 1000);
//finder-battery Button // finder-battery Button
battery_button.set_image_from_icon_name("finder-battery"); battery_button.set_image_from_icon_name("finder-battery");
battery_button.set_relief(Gtk::RELIEF_NONE); battery_button.set_relief(Gtk::RELIEF_NONE);
pack_end(battery_button,Gtk::PACK_SHRINK); pack_end(battery_button, Gtk::PACK_SHRINK);
//NetWork Button // NetWork Button
network_button.set_image_from_icon_name("finder-wifi"); network_button.set_image_from_icon_name("finder-wifi");
network_button.set_relief(Gtk::RELIEF_NONE); network_button.set_relief(Gtk::RELIEF_NONE);
pack_end(network_button,Gtk::PACK_SHRINK); pack_end(network_button, Gtk::PACK_SHRINK);
//Audio Button // Audio Button
audio_button.set_image_from_icon_name("finder_audio"); audio_button.set_image_from_icon_name("finder_audio");
audio_button.set_relief(Gtk::RELIEF_NONE); audio_button.set_relief(Gtk::RELIEF_NONE);
pack_end(audio_button,Gtk::PACK_SHRINK); pack_end(audio_button, Gtk::PACK_SHRINK);
//Monitor Button // Monitor Button
screen_button.set_image_from_icon_name("finder-computer"); screen_button.set_image_from_icon_name("finder-computer");
screen_button.set_relief(Gtk::RELIEF_NONE); screen_button.set_relief(Gtk::RELIEF_NONE);
pack_end(screen_button,Gtk::PACK_SHRINK); pack_end(screen_button, Gtk::PACK_SHRINK);
//Add Style for MyFinder // Add Style for MyFinder
provider = Gtk::CssProvider::create(); provider = Gtk::CssProvider::create();
provider->load_from_resource("/org/gtk/daleclack/style.css"); provider->load_from_resource("/org/gtk/daleclack/style.css");
auto style = get_style_context(); auto style = get_style_context();
style->add_provider(provider,G_MAXUINT); style->add_provider(provider, G_MAXUINT);
} }
bool MyFinder::time_out() bool MyFinder::time_out()
@ -124,7 +124,7 @@ bool MyFinder::time_out()
local = localtime(&t); local = localtime(&t);
// Format the time to show // Format the time to show
sprintf(time_string, "%04d/%d/%d %02d:%02d:%02d", local->tm_year + 1900, local->tm_mon + 1, sprintf(time_string, "%04d/%d/%d %02d:%02d:%02d", local->tm_year + 1900, local->tm_mon + 1,
local->tm_mday, local->tm_hour, local->tm_min, local->tm_sec); local->tm_mday, local->tm_hour, local->tm_min, local->tm_sec);
timer_button.set_label(time_string); timer_button.set_label(time_string);