From 15301318f1e9dffc5aa12670e870e75f073a1a46 Mon Sep 17 00:00:00 2001 From: daleclack Date: Wed, 31 Mar 2021 22:00:28 +0800 Subject: [PATCH] Add gtk58 --- .../.vscode/c_cpp_properties.json | 39 +++++++ Gtk4/gtk58_popover_gtk4/.vscode/launch.json | 29 +++++ Gtk4/gtk58_popover_gtk4/.vscode/settings.json | 4 + Gtk4/gtk58_popover_gtk4/.vscode/tasks.json | 62 +++++++++++ .../res/compile-resource.sh | 1 + .../gtk58_popover_gtk4/res/gtk57.resource.xml | 6 ++ Gtk4/gtk58_popover_gtk4/res/menubar.xml | 30 ++++++ Gtk4/gtk58_popover_gtk4/src/main.cpp | 101 ++++++++++++++++++ Gtk4/gtk58_popover_gtk4/src/resources.7z | Bin 0 -> 2893 bytes 9 files changed, 272 insertions(+) create mode 100644 Gtk4/gtk58_popover_gtk4/.vscode/c_cpp_properties.json create mode 100644 Gtk4/gtk58_popover_gtk4/.vscode/launch.json create mode 100644 Gtk4/gtk58_popover_gtk4/.vscode/settings.json create mode 100644 Gtk4/gtk58_popover_gtk4/.vscode/tasks.json create mode 100644 Gtk4/gtk58_popover_gtk4/res/compile-resource.sh create mode 100644 Gtk4/gtk58_popover_gtk4/res/gtk57.resource.xml create mode 100644 Gtk4/gtk58_popover_gtk4/res/menubar.xml create mode 100644 Gtk4/gtk58_popover_gtk4/src/main.cpp create mode 100644 Gtk4/gtk58_popover_gtk4/src/resources.7z diff --git a/Gtk4/gtk58_popover_gtk4/.vscode/c_cpp_properties.json b/Gtk4/gtk58_popover_gtk4/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..0d485ac --- /dev/null +++ b/Gtk4/gtk58_popover_gtk4/.vscode/c_cpp_properties.json @@ -0,0 +1,39 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + //This is the gtk4 config file on vscode + //Due to no gtk4 on debian and ubuntu till now,the configure only support manjaro(Arch linux may can use it) + "${workspaceFolder}/**", + "/usr/include/gtk-4.0/**", + "/usr/include/pango-1.0/**", + "/usr/include/glib-2.0/**", + "/usr/lib/glib-2.0/include/**", + "/usr/include/harfbuzz/**", + "/usr/include/freetype2/**", + "/usr/include/libpng16/**", + "/usr/include/libmount/**", + "/usr/include/blkid/**", + "/usr/include/fribidi/**", + "/usr/include/cairo/**", + "/usr/include/lzo/**", + "/usr/include/pixman-1/**", + "/usr/include/gdk-pixbuf-2.0/**", + "/usr/include/graphene-1.0/**", + "/usr/lib/graphene-1.0/include/**", + "/usr/include/gio-unix-2.0/**" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "gnu17", + "cppStandard": "gnu++14", + "intelliSenseMode": "gcc-arm64", + "compilerArgs": [ + "`pkg-config --cflags --libs gtk+-3.0`" + ], + "configurationProvider": "ms-vscode.cmake-tools" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/Gtk4/gtk58_popover_gtk4/.vscode/launch.json b/Gtk4/gtk58_popover_gtk4/.vscode/launch.json new file mode 100644 index 0000000..1bb9981 --- /dev/null +++ b/Gtk4/gtk58_popover_gtk4/.vscode/launch.json @@ -0,0 +1,29 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "g++ - Build and debug active file", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/bin/gtk58", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ], + "preLaunchTask": "C/C++: g++ build active file", + "miDebuggerPath": "/usr/bin/gdb" + } + ] +} diff --git a/Gtk4/gtk58_popover_gtk4/.vscode/settings.json b/Gtk4/gtk58_popover_gtk4/.vscode/settings.json new file mode 100644 index 0000000..0baae3a --- /dev/null +++ b/Gtk4/gtk58_popover_gtk4/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "C_Cpp.errorSquiggles": "Disabled", + "cmake.configureOnOpen": false +} \ No newline at end of file diff --git a/Gtk4/gtk58_popover_gtk4/.vscode/tasks.json b/Gtk4/gtk58_popover_gtk4/.vscode/tasks.json new file mode 100644 index 0000000..dcccad1 --- /dev/null +++ b/Gtk4/gtk58_popover_gtk4/.vscode/tasks.json @@ -0,0 +1,62 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: g++ build active file", + "command": "/usr/bin/g++", + "args": [ + "-g", + "src/*.cpp", + "-o", + "${workspaceFolder}/bin/gtk58", + "-pthread", + "-I${workspaceFolder}/", + "-I/usr/include/gtk-4.0", + "-I/usr/include/pango-1.0", + "-I/usr/include/glib-2.0", + "-I/usr/lib/glib-2.0/include", + "-I/usr/include/harfbuzz", + "-I/usr/include/freetype2", + "-I/usr/include/libpng16", + "-I/usr/include/libmount", + "-I/usr/include/blkid", + "-I/usr/include/fribidi", + "-I/usr/include/cairo", + "-I/usr/include/lzo", + "-I/usr/include/pixman-1", + "-I/usr/include/gdk-pixbuf-2.0", + "-I/usr/include/graphene-1.0", + "-I/usr/lib/graphene-1.0/include", + "-I/usr/include/gio-unix-2.0", + "-mfpmath=sse", + "-msse", + "-msse2", + "-lgtk-4", + "-lpangocairo-1.0", + "-lpango-1.0", + "-lharfbuzz", + "-lgdk_pixbuf-2.0", + "-lcairo-gobject", + "-lcairo", + "-lvulkan", + "-lgraphene-1.0", + "-lgio-2.0", + "-lgobject-2.0", + "-lglib-2.0" + + ], + "options": { + "cwd": "${workspaceFolder}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} diff --git a/Gtk4/gtk58_popover_gtk4/res/compile-resource.sh b/Gtk4/gtk58_popover_gtk4/res/compile-resource.sh new file mode 100644 index 0000000..364fb9c --- /dev/null +++ b/Gtk4/gtk58_popover_gtk4/res/compile-resource.sh @@ -0,0 +1 @@ + glib-compile-resources gtk57.resource.xml --target=../src/resources.cpp --generate-source diff --git a/Gtk4/gtk58_popover_gtk4/res/gtk57.resource.xml b/Gtk4/gtk58_popover_gtk4/res/gtk57.resource.xml new file mode 100644 index 0000000..8dfeda3 --- /dev/null +++ b/Gtk4/gtk58_popover_gtk4/res/gtk57.resource.xml @@ -0,0 +1,6 @@ + + + + menubar.xml + + \ No newline at end of file diff --git a/Gtk4/gtk58_popover_gtk4/res/menubar.xml b/Gtk4/gtk58_popover_gtk4/res/menubar.xml new file mode 100644 index 0000000..e177697 --- /dev/null +++ b/Gtk4/gtk58_popover_gtk4/res/menubar.xml @@ -0,0 +1,30 @@ + + + +
+ + Config + + Change Config1 + app.config1 + + + Change Config2 + app.config2 + + + Change Config3 + app.config3 + + + + About + app.about + + + Exit + app.quit + +
+
+
\ No newline at end of file diff --git a/Gtk4/gtk58_popover_gtk4/src/main.cpp b/Gtk4/gtk58_popover_gtk4/src/main.cpp new file mode 100644 index 0000000..f3c144d --- /dev/null +++ b/Gtk4/gtk58_popover_gtk4/src/main.cpp @@ -0,0 +1,101 @@ +#include + +static void MsgBox(const gchar *msg,gpointer app){ + GtkWidget *dialog,*vbox,*label2; + GtkWindow *win; + //Initalize window + dialog=gtk_dialog_new(); + gtk_window_set_default_size(GTK_WINDOW(dialog),300,150); + gtk_window_set_icon_name(GTK_WINDOW(dialog),"org.gtk.daleclack"); + win=gtk_application_get_active_window(GTK_APPLICATION(app)); + gtk_window_set_transient_for(GTK_WINDOW(dialog),win); + gtk_dialog_add_button(GTK_DIALOG(dialog),"OK",GTK_RESPONSE_OK); + vbox=gtk_dialog_get_content_area(GTK_DIALOG(dialog)); + //label1=gtk_label_new(" "); + //gtk_box_pack_start(GTK_BOX(vbox),label1,TRUE,TRUE,0); + label2=gtk_label_new(msg); + //gtk_box_pack_start(GTK_BOX(vbox),label2,TRUE,TRUE,0); + gtk_widget_set_hexpand(label2,TRUE); + gtk_widget_set_vexpand(label2,TRUE); + gtk_box_append(GTK_BOX(vbox),label2); + g_signal_connect_swapped(dialog,"response",G_CALLBACK(gtk_window_destroy),dialog); + gtk_widget_show(dialog); +} + +static void config1_activated(GSimpleAction *action, + GVariant *parameter, + gpointer app) +{ + MsgBox("Config1",app); +} + +static void config2_activated(GSimpleAction *action, + GVariant *parameter, + gpointer app) +{ + MsgBox("Config2",app); +} + +static void config3_activated(GSimpleAction *action, + GVariant *parameter, + gpointer app) +{ + MsgBox("Config3",app); +} + +static void about_activated(GSimpleAction *action, + GVariant *parameter, + gpointer app) +{ + MsgBox("About gtk57\nA GtkPopover test(Gtk3 Version)",app); +} + +static void quit_activated(GSimpleAction *action, + GVariant *parameter, + gpointer app) +{ + g_application_quit(G_APPLICATION(app)); +} + +static GActionEntry app_entry[] = +{ + {"quit",quit_activated,NULL,NULL,NULL}, + {"about",about_activated,NULL,NULL,NULL}, + {"config1",config1_activated,NULL,NULL,NULL}, + {"config2",config2_activated,NULL,NULL,NULL}, + {"config3",config3_activated,NULL,NULL,NULL} +}; + +static void gtkmain(GtkApplication *app,gpointer user_data){ + GtkWidget *window,*header,*menubtn,*popover; + GtkBuilder *builder=gtk_builder_new_from_resource("/gtk57/menubar.xml"); + GMenuModel *model; + //Initalize window + window=gtk_application_window_new(app); + gtk_window_set_icon_name(GTK_WINDOW(window),"org.gtk.daleclack"); + gtk_window_set_default_size(GTK_WINDOW(window),400,240); + gtk_window_set_title(GTK_WINDOW(window),"gtk (57)"); + g_action_map_add_action_entries(G_ACTION_MAP(app),app_entry, + G_N_ELEMENTS (app_entry),app); + //Header bar + header=gtk_header_bar_new(); + gtk_header_bar_set_show_title_buttons(GTK_HEADER_BAR(header),TRUE); + //gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(header),TRUE); + //gtk_header_bar_set_title(GTK_HEADER_BAR(header),"gtk (57)"); + //A application menu + menubtn=gtk_menu_button_new(); + model=G_MENU_MODEL(gtk_builder_get_object(builder,"app-menu")); + popover=gtk_popover_menu_new_from_model(model); + //popover=gtk_popover_new_from_model(menubtn,model); + gtk_header_bar_pack_end(GTK_HEADER_BAR(header),menubtn); + gtk_menu_button_set_popover(GTK_MENU_BUTTON(menubtn),popover); + gtk_window_set_titlebar(GTK_WINDOW(window),header); + gtk_widget_show(window); +} + +int main(int argc,char **argv){ + 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); +} \ No newline at end of file diff --git a/Gtk4/gtk58_popover_gtk4/src/resources.7z b/Gtk4/gtk58_popover_gtk4/src/resources.7z new file mode 100644 index 0000000000000000000000000000000000000000..52ba9a7b7f3a11cbb6efbbd18029cd42f0ff0af5 GIT binary patch literal 2893 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 literal 0 HcmV?d00001