Add main stack page

This commit is contained in:
daleclack 2023-06-09 17:36:53 +08:00
parent 230bd06029
commit 92e663df5e
7 changed files with 68 additions and 5 deletions

View File

@ -23,7 +23,7 @@ pkg_check_modules (GTK REQUIRED gtk4)
include_directories (${GTK_INCLUDE_DIRS})
link_directories (${GTK_LIBRARY_DIRS})
set(SOURCES src/core/main.cpp src/core/MainWin.cpp)
set(SOURCES src/core/main.cpp src/core/MainWin.cpp src/core/MyStack.cpp)
#Compile resources with GCR_CMake

View File

@ -3,19 +3,26 @@
<cambalache-project version="0.10.3" target_tk="gtk-4.0">
<ui>
(1,None,"test.ui","test.ui",None,None,None,None,None,None),
(2,None,None,"test2.ui",None,None,None,None,None,None)
(2,None,None,"test2.ui",None,None,None,None,None,None),
(3,None,None,"test3",None,None,None,None,None,None)
</ui>
<object>
(1,1,"GtkWindow",None,None,None,None,None,None),
(1,2,"GtkButton",None,1,None,None,None,None),
(1,3,"GtkImage","image1",None,None,None,None,None),
(2,1,"GtkWindow",None,None,None,None,None,None),
(2,2,"GtkDropDown",None,1,None,None,None,None)
(2,2,"GtkDropDown",None,1,None,None,None,None),
(3,1,"GtkWindow",None,None,None,None,None,None),
(3,2,"GtkStack","main_stack",1,None,None,None,-1),
(3,3,"GtkBox",None,2,None,None,None,-1),
(3,4,"GtkBox",None,2,None,None,None,-1)
</object>
<object_property>
(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","pixel-size","48",None,None,None,None,None),
(2,2,"GtkDropDown","selected","4294967292",None,None,None,None,None)
(2,2,"GtkDropDown","selected","4294967292",None,None,None,None,None),
(3,2,"GtkWidget","name","page2",None,None,None,None,None),
(3,3,"GtkWidget","name","test1",None,None,None,None,None)
</object_property>
</cambalache-project>

View File

@ -0,0 +1,20 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.10.3 -->
<interface>
<requires lib="gtk" version="4.6"/>
<object class="GtkWindow">
<child>
<object class="GtkStack" id="main_stack">
<property name="name">page2</property>
<child>
<object class="GtkBox">
<property name="name">test1</property>
</object>
</child>
<child>
<object class="GtkBox"/>
</child>
</object>
</child>
</object>
</interface>

View File

@ -6,6 +6,7 @@
<child>
<object class="GtkStackPage">
<property name="title" translatable="1">page0</property>
<property name="name">login_page1</property>
<property name="child">
<object class="GtkBox" id="login_page">
<property name="halign">center</property>
@ -37,6 +38,7 @@
<child>
<object class="GtkStackPage">
<property name="title" translatable="1">page1</property>
<property name="name">main_page1</property>
<property name="child">
<object class="GtkBox" id="main_page">
<property name="orientation">vertical</property>

View File

@ -1,4 +1,5 @@
#include "MainWin.h"
#include "MyStack.h"
struct _MainWin{
GtkApplicationWindow parent_class;
@ -6,7 +7,14 @@ struct _MainWin{
G_DEFINE_TYPE(MainWin, main_win, GTK_TYPE_APPLICATION_WINDOW)
static void main_win_init(MainWin *win){}
static void main_win_init(MainWin *win){
// Initalize window
gtk_window_set_default_size(GTK_WINDOW(win), 1024, 576);
gtk_window_set_icon_name(GTK_WINDOW(win), "My_GtkUI");
// Add Main Stack
create_main_stack(GTK_WINDOW(win));
}
static void main_win_class_init(MainWinClass *win_class){}

View File

@ -0,0 +1,21 @@
#include "MyStack.h"
static void btnlogin_clicked(GtkWidget *widget, GtkStack *stack){
gtk_stack_set_visible_child_name(stack, "main_page1");
}
void create_main_stack(GtkWindow *win){
// Create a builder
GtkBuilder *builder = gtk_builder_new_from_resource("/org/gtk/daleclack/stack.ui");
// Get Widgets
GtkWidget *stack = GTK_WIDGET(gtk_builder_get_object(builder, "main_stack"));
GtkWidget *login_page = GTK_WIDGET(gtk_builder_get_object(builder, "login_page"));
GtkWidget *main_page = GTK_WIDGET(gtk_builder_get_object(builder, "main_page"));
GtkWidget *btnlogin = GTK_WIDGET(gtk_builder_get_object(builder, "btnlogin"));
// Link Signals
g_signal_connect(btnlogin, "clicked", G_CALLBACK(btnlogin_clicked), stack);
gtk_window_set_child(win, stack);
}

View File

@ -0,0 +1,5 @@
#pragma once
#include <gtk/gtk.h>
void create_main_stack(GtkWindow *win);