mirror of https://github.com/daleclack/My_GtkUi
Add MenuBar
This commit is contained in:
parent
948865aa0c
commit
0d26ccd7bc
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
cmake_minimum_required(VERSION 3.0.0)
|
cmake_minimum_required(VERSION 3.0.0)
|
||||||
project(gtk120 VERSION 1.0.0)
|
project(My_GtkUI_Flos VERSION 4.0.0)
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../GCR_CMake/macros)
|
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../GCR_CMake/macros)
|
||||||
include(GlibCompileResourcesSupport)
|
include(GlibCompileResourcesSupport)
|
||||||
|
@ -14,6 +14,7 @@ set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
|
||||||
include(CPack)
|
include(CPack)
|
||||||
include_directories(.)
|
include_directories(.)
|
||||||
include_directories(..)
|
include_directories(..)
|
||||||
|
include_directories(src/core)
|
||||||
|
|
||||||
find_package (PkgConfig REQUIRED)
|
find_package (PkgConfig REQUIRED)
|
||||||
pkg_check_modules (GTK4 REQUIRED gtk4)
|
pkg_check_modules (GTK4 REQUIRED gtk4)
|
||||||
|
@ -23,7 +24,8 @@ link_directories (${GTK4_LIBRARY_DIRS})
|
||||||
#Compile Resource
|
#Compile Resource
|
||||||
|
|
||||||
set(RESOURCE_LIST
|
set(RESOURCE_LIST
|
||||||
flos.png)
|
flos.png
|
||||||
|
menubar.xml)
|
||||||
|
|
||||||
compile_gresources(RESOURCE_FILE
|
compile_gresources(RESOURCE_FILE
|
||||||
XML_OUT
|
XML_OUT
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<menu id="model">
|
||||||
|
<submenu>
|
||||||
|
<attribute name='label'>File</attribute>
|
||||||
|
</submenu>
|
||||||
|
<submenu>
|
||||||
|
<attribute name='label'>Edit</attribute>
|
||||||
|
</submenu>
|
||||||
|
<submenu>
|
||||||
|
<attribute name='label'>Show</attribute>
|
||||||
|
</submenu>
|
||||||
|
<submenu>
|
||||||
|
<attribute name='label'>Go to</attribute>
|
||||||
|
</submenu>
|
||||||
|
<submenu>
|
||||||
|
<attribute name='label'>windows</attribute>
|
||||||
|
</submenu>
|
||||||
|
<submenu>
|
||||||
|
<attribute name='label'>Help</attribute>
|
||||||
|
</submenu>
|
||||||
|
</menu>
|
||||||
|
</interface>
|
|
@ -0,0 +1,53 @@
|
||||||
|
#include "MainWin.h"
|
||||||
|
|
||||||
|
struct _MainWin{
|
||||||
|
GtkApplicationWindow parent_instance;
|
||||||
|
GtkWidget * overlay;
|
||||||
|
GtkWidget * background;
|
||||||
|
};
|
||||||
|
|
||||||
|
G_DEFINE_TYPE(MainWin,main_win,GTK_TYPE_APPLICATION_WINDOW)
|
||||||
|
|
||||||
|
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->background = gtk_picture_new();
|
||||||
|
|
||||||
|
//Add Background
|
||||||
|
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);
|
||||||
|
gtk_picture_set_pixbuf(GTK_PICTURE(win->background),sized);
|
||||||
|
g_object_unref(pixbuf);
|
||||||
|
g_object_unref(sized);
|
||||||
|
|
||||||
|
//Add button for menubar
|
||||||
|
GtkWidget * back_button = gtk_button_new_with_label(" ");
|
||||||
|
gtk_widget_set_valign(back_button,GTK_ALIGN_START);
|
||||||
|
gtk_widget_set_halign(back_button,GTK_ALIGN_FILL);
|
||||||
|
gtk_widget_set_sensitive(back_button,FALSE);
|
||||||
|
gtk_widget_set_opacity(back_button,0.7);
|
||||||
|
gtk_overlay_add_overlay(GTK_OVERLAY(win->overlay),back_button);
|
||||||
|
|
||||||
|
//Add MenuBar
|
||||||
|
GtkBuilder * builder = gtk_builder_new_from_resource("/org/gtk/daleclack/menubar.xml");
|
||||||
|
GMenuModel * model = G_MENU_MODEL(gtk_builder_get_object(builder,"model"));
|
||||||
|
GtkWidget * menubar = gtk_popover_menu_bar_new_from_model(model);
|
||||||
|
gtk_widget_set_valign(menubar,GTK_ALIGN_START);
|
||||||
|
gtk_widget_set_halign(menubar,GTK_ALIGN_FILL);
|
||||||
|
gtk_overlay_add_overlay(GTK_OVERLAY(win->overlay),menubar);
|
||||||
|
|
||||||
|
//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){}
|
||||||
|
|
||||||
|
MainWin * main_win_new(GtkApplication * app){
|
||||||
|
return (MainWin*)g_object_new(main_win_get_type(),"application",app,NULL);
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
G_DECLARE_FINAL_TYPE(MainWin,main_win,MAIN,WIN,GtkApplicationWindow)
|
||||||
|
|
||||||
|
MainWin * main_win_new(GtkApplication * app);
|
|
@ -1,5 +1,16 @@
|
||||||
#include <gtk/gtk.h>
|
#include "MainWin.h"
|
||||||
|
|
||||||
|
static void gtkmain(GtkApplication * app,gpointer user_data){
|
||||||
|
//Create a window and show
|
||||||
|
MainWin * window;
|
||||||
|
window = main_win_new(app);
|
||||||
|
gtk_widget_show(GTK_WIDGET(window));
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char ** argv){
|
int main(int argc, char ** argv){
|
||||||
|
//Create a new application and run
|
||||||
|
GtkApplication * app;
|
||||||
|
app = gtk_application_new("org.gtk.daleclack",G_APPLICATION_NON_UNIQUE);
|
||||||
|
g_signal_connect(app,"activate",G_CALLBACK(gtkmain),NULL);
|
||||||
|
return g_application_run(G_APPLICATION(app),argc,argv);
|
||||||
}
|
}
|
Loading…
Reference in New Issue