mirror of https://github.com/daleclack/My_GtkUi
Add timer
This commit is contained in:
parent
5e8109aa0a
commit
30a1399689
|
@ -2,7 +2,46 @@
|
|||
<interface>
|
||||
<menu id="model">
|
||||
<section>
|
||||
|
||||
<item>
|
||||
<attribute name="label">New Folder</attribute>
|
||||
</item>
|
||||
</section>
|
||||
<section>
|
||||
<item>
|
||||
<attribute name="label">Show Info</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Change Background</attribute>
|
||||
</item>
|
||||
</section>
|
||||
<section>
|
||||
<item>
|
||||
<attribute name="label">Automater</attribute>
|
||||
</item>
|
||||
<submenu>
|
||||
<attribute name="label">Automater method</attribute>
|
||||
<item>
|
||||
<attribute name="label">Name</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Date Modified</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Date Created</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Size</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Kind</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label">Label</attribute>
|
||||
</item>
|
||||
</submenu>
|
||||
<item>
|
||||
<attribute name="label">Show View Options</attribute>
|
||||
</item>
|
||||
</section>
|
||||
</menu>
|
||||
</interface>
|
||||
|
|
|
@ -25,11 +25,26 @@ MyWin::MyWin()
|
|||
|
||||
//Add context menu
|
||||
auto menubuilder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/mainmenu.xml");
|
||||
auto object = menubuilder->get_object("model");
|
||||
auto gmenu = Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
|
||||
context_menu.bind_model(gmenu);
|
||||
context_menu.set_relative_to(m_overlay);
|
||||
|
||||
//Add Gesture for control
|
||||
gesture = Gtk::GestureMultiPress::create(m_overlay);
|
||||
gesture->set_button(GDK_BUTTON_SECONDARY);
|
||||
gesture->signal_pressed().connect(sigc::mem_fun(*this,&MyWin::press));
|
||||
|
||||
add(m_overlay);
|
||||
show_all_children();
|
||||
}
|
||||
|
||||
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));
|
||||
context_menu.popup();
|
||||
}
|
||||
|
||||
void MyWin::logout_activated(){
|
||||
main_stack.logout();
|
||||
}
|
||||
|
|
|
@ -11,7 +11,11 @@ private:
|
|||
Gtk::Overlay m_overlay;
|
||||
Gtk::Image m_background;
|
||||
Gtk::Box menubox;
|
||||
Gtk::DrawingArea draw_area;
|
||||
Gtk::Popover context_menu;
|
||||
|
||||
//Gesture Control
|
||||
Glib::RefPtr<Gtk::GestureMultiPress> gesture;
|
||||
void press(int n_press,double x,double y);
|
||||
|
||||
//Main Stack
|
||||
MyStack main_stack;
|
||||
|
|
|
@ -1,63 +1,65 @@
|
|||
#include "MyFinder.hh"
|
||||
#include <ctime>
|
||||
|
||||
MyFinder::MyFinder(){
|
||||
//Add a menubar
|
||||
MyFinder::MyFinder()
|
||||
{
|
||||
// Add a menubar
|
||||
auto menubuilder = Gtk::Builder::create_from_resource("/org/gtk/daleclack/menubar.xml");
|
||||
|
||||
//Add widgets to menubox
|
||||
btnlogo.set_image_from_icon_name("My_GtkUI",Gtk::ICON_SIZE_BUTTON);
|
||||
// Add widgets to menubox
|
||||
btnlogo.set_image_from_icon_name("My_GtkUI", Gtk::ICON_SIZE_BUTTON);
|
||||
btnlogo.set_relief(Gtk::RELIEF_NONE);
|
||||
btnlogo.set_use_popover(false);
|
||||
btnlogo.set_menu_model(get_menu(menubuilder,"main_menu"));
|
||||
pack_start(btnlogo,Gtk::PACK_SHRINK);
|
||||
btnlogo.set_menu_model(get_menu(menubuilder, "main_menu"));
|
||||
pack_start(btnlogo, Gtk::PACK_SHRINK);
|
||||
|
||||
btntitle.set_label("MyFinder");
|
||||
btntitle.set_relief(Gtk::RELIEF_NONE);
|
||||
btntitle.set_use_popover(false);
|
||||
btntitle.set_menu_model(get_menu(menubuilder,"title_menu"));
|
||||
pack_start(btntitle,Gtk::PACK_SHRINK);
|
||||
btntitle.set_menu_model(get_menu(menubuilder, "title_menu"));
|
||||
pack_start(btntitle, Gtk::PACK_SHRINK);
|
||||
|
||||
btnfile.set_label("File");
|
||||
btnfile.set_relief(Gtk::RELIEF_NONE);
|
||||
btnfile.set_use_popover(false);
|
||||
btnfile.set_menu_model(get_menu(menubuilder,"menu_file"));
|
||||
pack_start(btnfile,Gtk::PACK_SHRINK);
|
||||
btnfile.set_menu_model(get_menu(menubuilder, "menu_file"));
|
||||
pack_start(btnfile, Gtk::PACK_SHRINK);
|
||||
|
||||
btnedit.set_label("Edit");
|
||||
btnedit.set_relief(Gtk::RELIEF_NONE);
|
||||
btnedit.set_use_popover(false);
|
||||
btnedit.set_menu_model(get_menu(menubuilder,"menu_edit"));
|
||||
pack_start(btnedit,Gtk::PACK_SHRINK);
|
||||
btnedit.set_menu_model(get_menu(menubuilder, "menu_edit"));
|
||||
pack_start(btnedit, Gtk::PACK_SHRINK);
|
||||
|
||||
btnshow.set_label("Show");
|
||||
btnshow.set_relief(Gtk::RELIEF_NONE);
|
||||
btnshow.set_use_popover(false);
|
||||
btnshow.set_menu_model(get_menu(menubuilder,"menu_show"));
|
||||
pack_start(btnshow,Gtk::PACK_SHRINK);
|
||||
btnshow.set_menu_model(get_menu(menubuilder, "menu_show"));
|
||||
pack_start(btnshow, Gtk::PACK_SHRINK);
|
||||
|
||||
btngoto.set_label("Go to");
|
||||
btngoto.set_relief(Gtk::RELIEF_NONE);
|
||||
btngoto.set_use_popover(false);
|
||||
btngoto.set_menu_model(get_menu(menubuilder,"menu_goto"));
|
||||
pack_start(btngoto,Gtk::PACK_SHRINK);
|
||||
btngoto.set_menu_model(get_menu(menubuilder, "menu_goto"));
|
||||
pack_start(btngoto, Gtk::PACK_SHRINK);
|
||||
|
||||
btnwin.set_label("Windows");
|
||||
btnwin.set_relief(Gtk::RELIEF_NONE);
|
||||
btnwin.set_use_popover(false);
|
||||
btnwin.set_menu_model(get_menu(menubuilder,"menu_win"));
|
||||
pack_start(btnwin,Gtk::PACK_SHRINK);
|
||||
btnwin.set_menu_model(get_menu(menubuilder, "menu_win"));
|
||||
pack_start(btnwin, Gtk::PACK_SHRINK);
|
||||
|
||||
btnhelp.set_label("Help");
|
||||
btnhelp.set_relief(Gtk::RELIEF_NONE);
|
||||
btnhelp.set_use_popover(false);
|
||||
btnhelp.set_menu_model(get_menu(menubuilder,"menu_help"));
|
||||
pack_start(btnhelp,Gtk::PACK_SHRINK);
|
||||
btnhelp.set_menu_model(get_menu(menubuilder, "menu_help"));
|
||||
pack_start(btnhelp, Gtk::PACK_SHRINK);
|
||||
|
||||
//Add menu to window
|
||||
// Add menu to window
|
||||
set_halign(Gtk::ALIGN_FILL);
|
||||
set_valign(Gtk::ALIGN_START);
|
||||
|
||||
//Add a timer
|
||||
// Add a timer
|
||||
time_popover.add(calender);
|
||||
calender.show();
|
||||
calender.set_margin_bottom(5);
|
||||
|
@ -65,14 +67,37 @@ MyFinder::MyFinder(){
|
|||
calender.set_margin_start(5);
|
||||
calender.set_margin_end(5);
|
||||
|
||||
//Timer
|
||||
// Timer
|
||||
timer_button.set_label("2022/1/23 18:32");
|
||||
timer_button.set_relief(Gtk::RELIEF_NONE);
|
||||
timer_button.set_popover(time_popover);
|
||||
pack_end(timer_button,Gtk::PACK_SHRINK);
|
||||
pack_end(timer_button, Gtk::PACK_SHRINK);
|
||||
|
||||
mytimer = Glib::signal_timeout().connect(sigc::mem_fun(*this, &MyFinder::time_out), 1000);
|
||||
}
|
||||
|
||||
Glib::RefPtr<Gio::Menu> MyFinder::get_menu(Glib::RefPtr<Gtk::Builder> &builder, const Glib::ustring &id){
|
||||
bool MyFinder::time_out()
|
||||
{
|
||||
|
||||
char time_string[57];
|
||||
|
||||
// Get local time
|
||||
time_t t;
|
||||
struct tm *local;
|
||||
t = time(NULL);
|
||||
local = localtime(&t);
|
||||
|
||||
// Format the time to show
|
||||
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);
|
||||
|
||||
timer_button.set_label(time_string);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Glib::RefPtr<Gio::Menu> MyFinder::get_menu(Glib::RefPtr<Gtk::Builder> &builder, const Glib::ustring &id)
|
||||
{
|
||||
auto object = builder->get_object(id);
|
||||
auto gmenu = Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
|
||||
return gmenu;
|
||||
|
|
|
@ -20,4 +20,5 @@ private:
|
|||
|
||||
//Timer
|
||||
sigc::connection mytimer;
|
||||
bool time_out();
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue