mirror of https://github.com/daleclack/My_GtkUi
Add label for time
This commit is contained in:
parent
2baabb3ee9
commit
b74138df04
|
@ -1,51 +1,84 @@
|
||||||
#include "MainWin.h"
|
#include "MainWin.h"
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
struct _MainWin{
|
struct _MainWin
|
||||||
|
{
|
||||||
GtkApplicationWindow parent_instance;
|
GtkApplicationWindow parent_instance;
|
||||||
GtkWidget * overlay;
|
GtkWidget *overlay;
|
||||||
GtkWidget * background;
|
GtkWidget *background;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE(MainWin,main_win,GTK_TYPE_APPLICATION_WINDOW)
|
G_DEFINE_TYPE(MainWin, main_win, GTK_TYPE_APPLICATION_WINDOW)
|
||||||
|
|
||||||
static void main_win_init(MainWin * win){
|
static gboolean label_timer(gpointer data)
|
||||||
//Initalize window
|
{
|
||||||
gtk_window_set_title(GTK_WINDOW(win),"My GtkUI Flos Version");
|
// Get Local Time
|
||||||
gtk_window_set_default_size(GTK_WINDOW(win),800,450);
|
time_t t;
|
||||||
gtk_window_set_icon_name(GTK_WINDOW(win),"org.gtk.daleclack");
|
t = time(NULL);
|
||||||
|
struct tm *local;
|
||||||
|
local = localtime(&t);
|
||||||
|
|
||||||
//Create widgets
|
// Set Label time
|
||||||
|
char buf[57];
|
||||||
|
sprintf(buf, "%d:%d %d/%d/%d", local->tm_hour,
|
||||||
|
local->tm_min, local->tm_year + 1900, local->tm_mon + 1, local->tm_mday);
|
||||||
|
gtk_label_set_label(GTK_LABEL(data), buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void main_win_init(MainWin *win)
|
||||||
|
{
|
||||||
|
// Initalize window
|
||||||
|
gtk_window_set_title(GTK_WINDOW(win), "My GtkUI Flos Version");
|
||||||
|
gtk_window_set_default_size(GTK_WINDOW(win), 800, 450);
|
||||||
|
gtk_window_set_icon_name(GTK_WINDOW(win), "org.gtk.daleclack");
|
||||||
|
|
||||||
|
// Create widgets
|
||||||
win->overlay = gtk_overlay_new();
|
win->overlay = gtk_overlay_new();
|
||||||
win->background = gtk_picture_new();
|
win->background = gtk_picture_new();
|
||||||
|
|
||||||
//Add Background
|
// Add Background
|
||||||
GdkPixbuf * pixbuf = gdk_pixbuf_new_from_resource("/org/gtk/daleclack/flos.png",NULL);
|
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_resource("/org/gtk/daleclack/flos.png", NULL);
|
||||||
GdkPixbuf * sized = gdk_pixbuf_scale_simple(pixbuf,800,450,GDK_INTERP_BILINEAR);
|
GdkPixbuf *sized = gdk_pixbuf_scale_simple(pixbuf, 800, 450, GDK_INTERP_BILINEAR);
|
||||||
gtk_picture_set_pixbuf(GTK_PICTURE(win->background),sized);
|
gtk_picture_set_pixbuf(GTK_PICTURE(win->background), sized);
|
||||||
g_object_unref(pixbuf);
|
g_object_unref(pixbuf);
|
||||||
g_object_unref(sized);
|
g_object_unref(sized);
|
||||||
|
|
||||||
//Add MenuBar
|
// Add MenuBar
|
||||||
GtkBuilder * builder = gtk_builder_new_from_resource("/org/gtk/daleclack/menubar.xml");
|
GtkBuilder *builder = gtk_builder_new_from_resource("/org/gtk/daleclack/menubar.xml");
|
||||||
GMenuModel * model = G_MENU_MODEL(gtk_builder_get_object(builder,"model"));
|
GMenuModel *model = G_MENU_MODEL(gtk_builder_get_object(builder, "model"));
|
||||||
GtkWidget * menubar = gtk_popover_menu_bar_new_from_model(model);
|
GtkWidget *menubar = gtk_popover_menu_bar_new_from_model(model);
|
||||||
//gtk_button_set_child(GTK_BUTTON(back_button),menubar);
|
// gtk_button_set_child(GTK_BUTTON(back_button),menubar);
|
||||||
gtk_widget_set_valign(menubar,GTK_ALIGN_START);
|
gtk_widget_set_valign(menubar, GTK_ALIGN_START);
|
||||||
gtk_widget_set_halign(menubar,GTK_ALIGN_FILL);
|
gtk_widget_set_halign(menubar, GTK_ALIGN_FILL);
|
||||||
gtk_overlay_add_overlay(GTK_OVERLAY(win->overlay),menubar);
|
gtk_overlay_add_overlay(GTK_OVERLAY(win->overlay), menubar);
|
||||||
|
|
||||||
//Apply Style for menubar
|
// Apply Style for menubar
|
||||||
GtkStyleProvider * provider = GTK_STYLE_PROVIDER(gtk_css_provider_new());
|
GtkStyleProvider *provider = GTK_STYLE_PROVIDER(gtk_css_provider_new());
|
||||||
gtk_css_provider_load_from_resource(GTK_CSS_PROVIDER(provider),"/org/gtk/daleclack/style.css");
|
gtk_css_provider_load_from_resource(GTK_CSS_PROVIDER(provider), "/org/gtk/daleclack/style.css");
|
||||||
gtk_style_context_add_provider(gtk_widget_get_style_context(menubar),provider,G_MAXINT);
|
gtk_style_context_add_provider(gtk_widget_get_style_context(menubar), provider, G_MAXINT);
|
||||||
|
|
||||||
//Add widgets
|
// Add Label for time
|
||||||
gtk_overlay_set_child(GTK_OVERLAY(win->overlay),win->background);
|
GtkWidget *time_label = gtk_label_new("12:21 2022/1/9");
|
||||||
gtk_window_set_child(GTK_WINDOW(win),win->overlay);
|
g_timeout_add(1000, label_timer, time_label);
|
||||||
|
|
||||||
|
gtk_widget_set_halign(time_label, GTK_ALIGN_END);
|
||||||
|
gtk_widget_set_valign(time_label, GTK_ALIGN_START);
|
||||||
|
|
||||||
|
// Set Position of the label
|
||||||
|
gtk_widget_set_margin_bottom(time_label, 3);
|
||||||
|
gtk_widget_set_margin_start(time_label, 3);
|
||||||
|
gtk_widget_set_margin_end(time_label, 10);
|
||||||
|
gtk_widget_set_margin_top(time_label, 3);
|
||||||
|
gtk_overlay_add_overlay(GTK_OVERLAY(win->overlay), time_label);
|
||||||
|
|
||||||
|
// Add widgets
|
||||||
|
gtk_overlay_set_child(GTK_OVERLAY(win->overlay), win->background);
|
||||||
|
gtk_window_set_child(GTK_WINDOW(win), win->overlay);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void main_win_class_init(MainWinClass * klass){}
|
static void main_win_class_init(MainWinClass *klass) {}
|
||||||
|
|
||||||
MainWin * main_win_new(GtkApplication * app){
|
MainWin *main_win_new(GtkApplication *app)
|
||||||
return (MainWin*)g_object_new(main_win_get_type(),"application",app,NULL);
|
{
|
||||||
|
return (MainWin *)g_object_new(main_win_get_type(), "application", app, NULL);
|
||||||
}
|
}
|
Loading…
Reference in New Issue