mirror of https://github.com/daleclack/My_GtkUi
Add TopPanel and custom background
This commit is contained in:
parent
7f1d24365a
commit
0c6cc4c1b7
|
@ -54,7 +54,8 @@ set(RESOURCE_LIST
|
||||||
icons/scalable/status/system.svg
|
icons/scalable/status/system.svg
|
||||||
gnome-fs-directory.png
|
gnome-fs-directory.png
|
||||||
gnome-fs-regular.png
|
gnome-fs-regular.png
|
||||||
STRIPBLANKS appmenu.xml)
|
STRIPBLANKS appmenu.xml
|
||||||
|
STRIPBLANKS stack.ui)
|
||||||
|
|
||||||
compile_gresources(RESOURCE_FILE
|
compile_gresources(RESOURCE_FILE
|
||||||
XML_OUT
|
XML_OUT
|
||||||
|
@ -67,7 +68,7 @@ compile_gresources(RESOURCE_FILE
|
||||||
# It depends on the output RESOURCE_FILE.
|
# It depends on the output RESOURCE_FILE.
|
||||||
add_custom_target(resource ALL DEPENDS ${RESOURCE_FILE})
|
add_custom_target(resource ALL DEPENDS ${RESOURCE_FILE})
|
||||||
|
|
||||||
set(SOURCES src/main.cpp src/MainWin.cpp)
|
set(SOURCES src/main.cpp src/MainWin.cpp src/MainStack.cpp)
|
||||||
|
|
||||||
# Step 4:Add the resource to compile list and compile
|
# Step 4:Add the resource to compile list and compile
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
|
|
@ -0,0 +1,216 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk" version="4.0"/>
|
||||||
|
<object class="GtkImage" id="imghome">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="icon-name">user_home</property>
|
||||||
|
<property name="pixel-size">48</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkAdjustment" id="adjustment1">
|
||||||
|
<property name="upper">100</property>
|
||||||
|
<property name="step-increment">1</property>
|
||||||
|
<property name="page-increment">10</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkStack" id="stack">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">login_page</property>
|
||||||
|
<property name="title" translatable="yes">page1</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkBox" id="login_box">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage" id="imglogin">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="icon-name">My_GtkUI</property>
|
||||||
|
<property name="pixel-size">48</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label_user">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="label" translatable="yes">dale</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="btnlogin">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="label" translatable="yes">login</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
|
<property name="has-frame">0</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="name">main_page</property>
|
||||||
|
<property name="title" translatable="yes">page0</property>
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkBox" id="main_box">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="top_panel">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label_app">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="label" translatable="yes">My GtkUI Desktop</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="notice_box">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="seprator_label">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="hexpand">1</property>
|
||||||
|
<property name="label" translatable="yes"> </property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label_time">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="hexpand">0</property>
|
||||||
|
<property name="label" translatable="yes">20:00 2021/2/14</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="help_button">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="hexpand">0</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
|
<property name="icon-name">system-help</property>
|
||||||
|
<property name="has-frame">0</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="ac_button">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="hexpand">0</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
|
<property name="icon-name">ac-adapter-symbolic</property>
|
||||||
|
<property name="has-frame">0</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="volume_button">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
|
<property name="icon-name">audio-volume-high-symbolic</property>
|
||||||
|
<property name="has-frame">0</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuButton" id="menu_button">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="focus-on-click">0</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
|
<property name="has-frame">0</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="desktop_box">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="leftbox">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkGrid">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="label" translatable="yes">Home</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="has-frame">0</property>
|
||||||
|
<property name="child">imghome</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">0</property>
|
||||||
|
<property name="row">0</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="home_label">
|
||||||
|
<property name="visible">1</property>
|
||||||
|
<property name="hexpand">0</property>
|
||||||
|
<property name="label" translatable="yes">Home</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">0</property>
|
||||||
|
<property name="row">1</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
|
@ -1,51 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!-- Generated with glade 3.38.2 -->
|
|
||||||
<interface>
|
|
||||||
<requires lib="gtk+" version="3.24"/>
|
|
||||||
<object class="GtkImage" id="image1">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can-focus">False</property>
|
|
||||||
<property name="icon-name">user-home</property>
|
|
||||||
</object>
|
|
||||||
<object class="GtkWindow" id="window">
|
|
||||||
<property name="can-focus">False</property>
|
|
||||||
<property name="title" translatable="yes">gtk(42)</property>
|
|
||||||
<property name="default-width">640</property>
|
|
||||||
<property name="default-height">360</property>
|
|
||||||
<property name="hide-titlebar-when-maximized">True</property>
|
|
||||||
<property name="icon-name">gtk4-icon</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkFixed" id="fixed">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can-focus">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="background">
|
|
||||||
<property name="width-request">100</property>
|
|
||||||
<property name="height-request">80</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can-focus">False</property>
|
|
||||||
<property name="stock">gtk-missing-image</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="btn_home">
|
|
||||||
<property name="label" translatable="yes">Home</property>
|
|
||||||
<property name="width-request">100</property>
|
|
||||||
<property name="height-request">80</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can-focus">True</property>
|
|
||||||
<property name="receives-default">True</property>
|
|
||||||
<property name="image">image1</property>
|
|
||||||
<property name="relief">none</property>
|
|
||||||
<property name="image-position">top</property>
|
|
||||||
<property name="always-show-image">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="x">70</property>
|
|
||||||
<property name="y">30</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</interface>
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
#include "MainStack.h"
|
||||||
|
|
||||||
|
static gboolean change_time(gpointer data){
|
||||||
|
//Get local time
|
||||||
|
time_t t;
|
||||||
|
struct tm *local;
|
||||||
|
t=time(NULL);
|
||||||
|
local=localtime(&t);
|
||||||
|
//Format the time and set the time
|
||||||
|
char current_time[20];
|
||||||
|
sprintf(current_time,"%02d:%02d %04d/%02d/%02d",
|
||||||
|
local->tm_hour,local->tm_min,local->tm_year+1900,local->tm_mon+1,local->tm_mday);
|
||||||
|
//g_print("%s\n",current_time);
|
||||||
|
gtk_label_set_label(GTK_LABEL(data),current_time);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stack_login(GtkWidget *widget,GtkStack * stack){
|
||||||
|
gtk_stack_set_visible_child_name(stack,"main_page");
|
||||||
|
}
|
||||||
|
|
||||||
|
GtkWidget * create_main_stack(GtkWidget * left_box,GMenuModel * model){
|
||||||
|
GtkBuilder * stack_builder;
|
||||||
|
stack_builder = gtk_builder_new_from_resource("/org/gtk/daleclack/stack.ui");
|
||||||
|
|
||||||
|
//Get Main Widget
|
||||||
|
GtkWidget * main_stack;
|
||||||
|
main_stack = (GtkWidget*)gtk_builder_get_object(stack_builder,"stack");
|
||||||
|
|
||||||
|
//Login Button
|
||||||
|
GtkWidget * btnlogin = (GtkWidget*)gtk_builder_get_object(stack_builder,"btnlogin");
|
||||||
|
g_signal_connect(btnlogin,"clicked",G_CALLBACK(stack_login),main_stack);
|
||||||
|
|
||||||
|
//Time Label
|
||||||
|
GtkWidget * label_time = (GtkWidget*)gtk_builder_get_object(stack_builder,"label_time");
|
||||||
|
g_timeout_add(100,change_time,label_time);
|
||||||
|
|
||||||
|
//Menu Button
|
||||||
|
GtkWidget * menubtn = (GtkWidget*)gtk_builder_get_object(stack_builder,"menu_button");
|
||||||
|
GtkWidget * popover = gtk_popover_menu_new_from_model(model);
|
||||||
|
gtk_widget_set_halign(popover,GTK_ALIGN_END);
|
||||||
|
gtk_menu_button_set_popover(GTK_MENU_BUTTON(menubtn),popover);
|
||||||
|
|
||||||
|
//Box for LeftPanel
|
||||||
|
left_box = (GtkWidget*)gtk_builder_get_object(stack_builder,"leftbox");
|
||||||
|
|
||||||
|
return main_stack;
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
GtkWidget * create_main_stack(GtkWidget * left_box,GMenuModel * model);
|
|
@ -1,6 +1,8 @@
|
||||||
#include "MainWin.h"
|
#include "MainWin.h"
|
||||||
|
#include "MainStack.h"
|
||||||
#include "winpe.xpm"
|
#include "winpe.xpm"
|
||||||
#include "img7.xpm"
|
#include "img7.xpm"
|
||||||
|
#include "image_types.h"
|
||||||
|
|
||||||
enum class BackMode{
|
enum class BackMode{
|
||||||
DEFAULT_1,
|
DEFAULT_1,
|
||||||
|
@ -14,17 +16,70 @@ struct _MainWin{
|
||||||
GtkWidget * overlay;
|
GtkWidget * overlay;
|
||||||
GtkGesture * gesture;
|
GtkGesture * gesture;
|
||||||
GtkWidget * popover;
|
GtkWidget * popover;
|
||||||
|
GtkWidget * stack;
|
||||||
|
GtkWidget * leftbox;
|
||||||
int width,height;
|
int width,height;
|
||||||
BackMode back_mode;
|
BackMode back_mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE(MainWin,main_win,GTK_TYPE_APPLICATION_WINDOW)
|
G_DEFINE_TYPE(MainWin,main_win,GTK_TYPE_APPLICATION_WINDOW)
|
||||||
|
|
||||||
static void change_background(GtkWindow * dialog,int response,MainWin *win){
|
static void change_background(GtkNativeDialog * dialog,int response,MainWin *win){
|
||||||
gtk_window_destroy(dialog);
|
if(response == GTK_RESPONSE_ACCEPT){
|
||||||
|
GFile * file = gtk_file_chooser_get_file(GTK_FILE_CHOOSER(dialog));
|
||||||
|
char * filename = g_file_get_path(file);
|
||||||
|
|
||||||
|
//Set Image from the file
|
||||||
|
GdkPixbuf * pixbuf, * sized;
|
||||||
|
pixbuf = gdk_pixbuf_new_from_file(filename,NULL);
|
||||||
|
sized = gdk_pixbuf_scale_simple(pixbuf,win->width,win->height,GDK_INTERP_BILINEAR);
|
||||||
|
gtk_picture_set_pixbuf(GTK_PICTURE(win->background),sized);
|
||||||
|
|
||||||
|
//Change Mode and free memory
|
||||||
|
win->back_mode = BackMode::CUSTOM;
|
||||||
|
g_object_unref(pixbuf);
|
||||||
|
g_object_unref(sized);
|
||||||
|
g_object_unref(file);
|
||||||
|
g_free(filename);
|
||||||
|
}
|
||||||
|
gtk_native_dialog_destroy(dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void background_dialog(GSimpleAction * action, GVariant * parmeter, gpointer data){
|
static void background_dialog(GSimpleAction * action, GVariant * parmeter, gpointer data){
|
||||||
|
GtkFileChooserNative * dialog = gtk_file_chooser_native_new("Open Image File",GTK_WINDOW(data),
|
||||||
|
GTK_FILE_CHOOSER_ACTION_OPEN,"OK","Cancel");
|
||||||
|
|
||||||
|
GtkFileFilter * filter_image = gtk_file_filter_new();
|
||||||
|
gtk_file_filter_set_name(filter_image,"Image Files");
|
||||||
|
|
||||||
|
//For Systems supported mime type and not supported, use different way
|
||||||
|
if(mime_type_supported()){
|
||||||
|
gtk_file_filter_add_mime_type(filter_image,"image/*");
|
||||||
|
}else{
|
||||||
|
for(int i=0;supported_globs !=NULL && supported_globs[i]!=NULL;i++){
|
||||||
|
const char * glob = supported_globs[i];
|
||||||
|
gtk_file_filter_add_pattern(filter_image,glob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter_image);
|
||||||
|
|
||||||
|
GtkFileFilter * filter_any = gtk_file_filter_new();
|
||||||
|
gtk_file_filter_set_name(filter_any,"Any Files");
|
||||||
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter_any);
|
||||||
|
|
||||||
|
g_signal_connect(dialog,"response",G_CALLBACK(change_background),data);
|
||||||
|
gtk_native_dialog_show(GTK_NATIVE_DIALOG(dialog));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void logout_activated(GSimpleAction * action, GVariant * parmeter, gpointer data){
|
||||||
|
MainWin * win = MAIN_WIN(data);
|
||||||
|
gtk_stack_set_visible_child_name(GTK_STACK(win->stack),"login_page");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void quit_activated(GSimpleAction * action, GVariant * parmeter, gpointer data){
|
||||||
|
gtk_window_destroy(GTK_WINDOW(data));
|
||||||
|
}
|
||||||
|
static void winsize_activated(GSimpleAction * action, GVariant * parmeter, gpointer data){
|
||||||
}
|
}
|
||||||
|
|
||||||
static void default_background1(GSimpleAction * action, GVariant * parmeter, gpointer data){
|
static void default_background1(GSimpleAction * action, GVariant * parmeter, gpointer data){
|
||||||
|
@ -72,7 +127,29 @@ static void refresh_activated(GSimpleAction * action, GVariant * parmeter, gpoin
|
||||||
|
|
||||||
static void about_activated(GSimpleAction * action, GVariant * parmeter, gpointer data){
|
static void about_activated(GSimpleAction * action, GVariant * parmeter, gpointer data){
|
||||||
GtkWindow * win =GTK_WINDOW(data);
|
GtkWindow * win =GTK_WINDOW(data);
|
||||||
|
const char *authors[]={
|
||||||
|
"Dale Clack",
|
||||||
|
"GCR_CMake on github https://github.com/Makman2/GCR_CMake",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
char *version;
|
||||||
|
version=g_strdup_printf("4.0-Beta1\nRunning Against GTK %d.%d.%d",
|
||||||
|
gtk_get_major_version(),
|
||||||
|
gtk_get_minor_version(),
|
||||||
|
gtk_get_micro_version());
|
||||||
|
GtkWidget *dialog;
|
||||||
|
dialog=gtk_about_dialog_new();
|
||||||
|
gtk_show_about_dialog(win,
|
||||||
|
"program-name","My_GtkUI",
|
||||||
|
"version",version,
|
||||||
|
"copyright", "© 2019—2021 The Xe Project",
|
||||||
|
"comments", "A program that simulates desktop",
|
||||||
|
"authors",authors,
|
||||||
|
"license-type",GTK_LICENSE_GPL_3_0,
|
||||||
|
"logo-icon-name","My_GtkUI",
|
||||||
|
"title","About My GtkUI (Gtk4 Version)",
|
||||||
|
NULL);
|
||||||
|
g_free(version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gesture_pressed(GtkGestureClick *self,int n_press,double x,double y,MainWin * win){
|
static void gesture_pressed(GtkGestureClick *self,int n_press,double x,double y,MainWin * win){
|
||||||
|
@ -90,7 +167,11 @@ static GActionEntry entries[] = {
|
||||||
{"back",background_dialog,NULL,NULL,NULL},
|
{"back",background_dialog,NULL,NULL,NULL},
|
||||||
{"default1",default_background1,NULL,NULL,NULL},
|
{"default1",default_background1,NULL,NULL,NULL},
|
||||||
{"default2",default_background2,NULL,NULL,NULL},
|
{"default2",default_background2,NULL,NULL,NULL},
|
||||||
{"refresh",refresh_activated,NULL,NULL,NULL}
|
{"refresh",refresh_activated,NULL,NULL,NULL},
|
||||||
|
{"about",about_activated,NULL,NULL,NULL},
|
||||||
|
{"logout",logout_activated,NULL,NULL,NULL},
|
||||||
|
{"quit",quit_activated,NULL,NULL,NULL},
|
||||||
|
{"size",winsize_activated,NULL,NULL,NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void main_win_init(MainWin * win){
|
static void main_win_init(MainWin * win){
|
||||||
|
@ -125,6 +206,12 @@ static void main_win_init(MainWin * win){
|
||||||
g_signal_connect(win->gesture,"pressed",G_CALLBACK(gesture_pressed),win);
|
g_signal_connect(win->gesture,"pressed",G_CALLBACK(gesture_pressed),win);
|
||||||
gtk_widget_add_controller(win->overlay,GTK_EVENT_CONTROLLER(win->gesture));
|
gtk_widget_add_controller(win->overlay,GTK_EVENT_CONTROLLER(win->gesture));
|
||||||
|
|
||||||
|
//Add Main Page
|
||||||
|
win->stack = create_main_stack(win->leftbox,model);
|
||||||
|
gtk_widget_set_halign(GTK_WIDGET(win->stack),GTK_ALIGN_FILL);
|
||||||
|
gtk_widget_set_valign(GTK_WIDGET(win->stack),GTK_ALIGN_FILL);
|
||||||
|
gtk_overlay_add_overlay(GTK_OVERLAY(win->overlay),GTK_WIDGET(win->stack));
|
||||||
|
|
||||||
gtk_window_set_child(GTK_WINDOW(win),win->overlay);
|
gtk_window_set_child(GTK_WINDOW(win),win->overlay);
|
||||||
g_object_unref(menu_builder);
|
g_object_unref(menu_builder);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
#include <ctime>
|
|
||||||
#include "panel1.h"
|
|
||||||
#include "winconf.h"
|
|
||||||
#include "background.h"
|
|
||||||
|
|
||||||
static gboolean change_time(gpointer data){
|
|
||||||
//Get local time
|
|
||||||
time_t t;
|
|
||||||
struct tm *local;
|
|
||||||
t=time(NULL);
|
|
||||||
local=localtime(&t);
|
|
||||||
//Format the time and set the time
|
|
||||||
char current_time[20];
|
|
||||||
sprintf(current_time,"%02d:%02d %04d/%02d/%02d",
|
|
||||||
local->tm_hour,local->tm_min,local->tm_year+1900,local->tm_mon+1,local->tm_mday);
|
|
||||||
//g_print("%s\n",current_time);
|
|
||||||
gtk_label_set_label(GTK_LABEL(data),current_time);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void add_toppanel(GtkBuilder *builder,GtkFixed *fixed){
|
|
||||||
//Get position
|
|
||||||
int width=640,height=480;
|
|
||||||
get_config(&width,&height);
|
|
||||||
//Get panel
|
|
||||||
GtkBuilder *panel=gtk_builder_new_from_resource("/gtk42/toppanel.ui");
|
|
||||||
GObject *panel1=gtk_builder_get_object(panel,"btnbox");
|
|
||||||
gtk_widget_set_size_request(GTK_WIDGET(panel1),width,15);
|
|
||||||
//Get timer label and set time
|
|
||||||
GObject *label_time=gtk_builder_get_object(panel,"label_time");
|
|
||||||
g_timeout_add(100,change_time,label_time);
|
|
||||||
//Get popover window
|
|
||||||
GObject *popover=gtk_builder_get_object(panel,"popover1");
|
|
||||||
//Get button for change background
|
|
||||||
GObject *btn_back=gtk_builder_get_object(panel,"btnback");
|
|
||||||
GObject *img_back=gtk_builder_get_object(panel,"image3");
|
|
||||||
gtk_image_set_from_resource(GTK_IMAGE(img_back),"/gtk42/graphics.png");
|
|
||||||
//gtk_button_set_image(GTK_BUTTON(btn_back),GTK_WIDGET(img_back));
|
|
||||||
gtk_button_set_always_show_image(GTK_BUTTON(btn_back),TRUE);
|
|
||||||
g_signal_connect(btn_back,"clicked",G_CALLBACK(fileopen),builder);
|
|
||||||
g_signal_connect_swapped(btn_back,"clicked",G_CALLBACK(gtk_widget_hide),popover);
|
|
||||||
//Config button
|
|
||||||
GObject *btn_conf=gtk_builder_get_object(panel,"btnset");
|
|
||||||
GObject *img_set=gtk_builder_get_object(panel,"image5");
|
|
||||||
gtk_image_set_from_resource(GTK_IMAGE(img_set),"/gtk42/system.png");
|
|
||||||
//gtk_button_set_image(GTK_BUTTON(btn_conf),GTK_WIDGET(img_set));
|
|
||||||
gtk_button_set_always_show_image(GTK_BUTTON(btn_conf),TRUE);
|
|
||||||
g_signal_connect(btn_conf,"clicked",G_CALLBACK(conf_dialog),builder);
|
|
||||||
g_signal_connect_swapped(btn_conf,"clicked",G_CALLBACK(gtk_widget_hide),popover);
|
|
||||||
//Get Exit button
|
|
||||||
GObject *btn_exit=gtk_builder_get_object(panel,"PanelExit");
|
|
||||||
GObject *img_exit=gtk_builder_get_object(panel,"image4");
|
|
||||||
gtk_image_set_from_resource(GTK_IMAGE(img_exit),"/gtk42/log-out.png");
|
|
||||||
//gtk_button_set_image(GTK_BUTTON(btn_exit),GTK_WIDGET(img_exit));
|
|
||||||
gtk_button_set_always_show_image(GTK_BUTTON(btn_exit),TRUE);
|
|
||||||
GObject *window=gtk_builder_get_object(builder,"window");
|
|
||||||
g_signal_connect_swapped(btn_exit,"clicked",G_CALLBACK(gtk_widget_destroy),window);
|
|
||||||
gtk_fixed_put(fixed,GTK_WIDGET(panel1),0,0);
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
#ifndef __TIMER_H_
|
|
||||||
#define __TIMER_H_
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
|
|
||||||
//gboolean change_time(gpointer data);
|
|
||||||
|
|
||||||
void add_toppanel(GtkBuilder *builder,GtkFixed *fixed);
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue