From 2baabb3ee9b5d41590f1213e347d174d5b1c6900 Mon Sep 17 00:00:00 2001 From: daleclack Date: Sun, 9 Jan 2022 11:57:39 +0800 Subject: [PATCH] Add css style --- Flos_Gtk4/CMakeLists.txt | 4 +++- Flos_Gtk4/res/reset.css | 12 ++++++++++++ Flos_Gtk4/res/style.css | 12 ++++++++++++ Flos_Gtk4/src/core/MainWin.cpp | 14 ++++++-------- 4 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 Flos_Gtk4/res/reset.css create mode 100644 Flos_Gtk4/res/style.css diff --git a/Flos_Gtk4/CMakeLists.txt b/Flos_Gtk4/CMakeLists.txt index bfcb764..ebe5673 100644 --- a/Flos_Gtk4/CMakeLists.txt +++ b/Flos_Gtk4/CMakeLists.txt @@ -25,7 +25,9 @@ link_directories (${GTK4_LIBRARY_DIRS}) set(RESOURCE_LIST flos.png - menubar.xml) + menubar.xml + style.css + reset.css) compile_gresources(RESOURCE_FILE XML_OUT diff --git a/Flos_Gtk4/res/reset.css b/Flos_Gtk4/res/reset.css new file mode 100644 index 0000000..ec253f6 --- /dev/null +++ b/Flos_Gtk4/res/reset.css @@ -0,0 +1,12 @@ +/* @import this colorsheet to get the default values for every property. + * This is useful when writing special CSS tests that should not be + * inluenced by themes - not even the default ones. + * Keep in mind that the output will be very ugly and not look like + * anything GTK. + * Also, when adding new style properties, please add them here. + */ + + * { + all: unset; + } + \ No newline at end of file diff --git a/Flos_Gtk4/res/style.css b/Flos_Gtk4/res/style.css new file mode 100644 index 0000000..25c79a6 --- /dev/null +++ b/Flos_Gtk4/res/style.css @@ -0,0 +1,12 @@ +/* +您可以在这里输入任何 GTK 可识别的 CSS 规则。 +您可以点击上面的“暂停”按钮来暂时停用这个自定义 CSS。 + +变更会立即应用到全局,影响整个应用程序。 +*/ +@import url("resource://org/gtk/daleclack/reset.css"); + +/*Style for menubar*/ +menubar{ + background-color:#FFFA; +} diff --git a/Flos_Gtk4/src/core/MainWin.cpp b/Flos_Gtk4/src/core/MainWin.cpp index fb7bbba..b717119 100644 --- a/Flos_Gtk4/src/core/MainWin.cpp +++ b/Flos_Gtk4/src/core/MainWin.cpp @@ -25,22 +25,20 @@ static void main_win_init(MainWin * win){ 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_button_set_child(GTK_BUTTON(back_button),menubar); 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); + //Apply Style for menubar + 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_style_context_add_provider(gtk_widget_get_style_context(menubar),provider,G_MAXINT); + //Add widgets gtk_overlay_set_child(GTK_OVERLAY(win->overlay),win->background); gtk_window_set_child(GTK_WINDOW(win),win->overlay);