2011-09-17 76 views
0

我正在使用gtk3.0.12並試圖創建一個使用css有不同選項卡背景顏色的筆記本。除了背景之外,我可以爲每個事物設置不同的屬性。我該怎麼做呢?gtk3 css與GtkNotebook

/* Compile with: 
* gcc -Wall -o notebook1 `pkg-config --cflags --libs gtk+-3.0` notebook1.c 
*/ 
#include <gtk/gtk.h> 

int main(int argc, char *argv[]) 
{ 
    GtkWidget *window; 
    GtkWidget *mynotebook; 
    GtkWidget *grid; 

gtk_init (&argc, &argv); 

GtkCssProvider *provider = gtk_css_provider_new(); 
GdkDisplay *display = gdk_display_get_default(); 
GdkScreen *screen = gdk_display_get_default_screen (display); 
gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER  
     (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); 

gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), 
           " GtkNotebook {\n" // or " .notebook {\n" 
           " -GtkWidget-focus-line-width: 0;\n" 
           "}\n" 
           " .notebook tab {\n" // or " * tab {\n" 
           " padding: 10 20 10 20;\n" 
           " border-radius: 8;\n" 
           " background-color: blue;\n" 
           "}\n" 
           " GtkNotebook tab GtkLabel#settings_tab {\n" 
           " color: white;\n" 
           " font: Serif 12;\n" 
           "}\n" 
           " .notebook tab GtkLabel#report_tab {\n" 
           " color: red;\n" 
           " font: Sans 12;\n" 
           "}\n", -1, NULL); 

g_object_unref (provider); 

window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
gtk_window_set_default_size(GTK_WINDOW(window), 800, 480); 
g_signal_connect (GTK_WIDGET (window), "destroy", 
        G_CALLBACK (gtk_main_quit), NULL); 
mynotebook = gtk_notebook_new(); 
gtk_widget_set_name (GTK_WIDGET(mynotebook), "notebook"); 
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (mynotebook), GTK_POS_TOP); 

grid = gtk_grid_new(); 
GtkWidget *report_label = gtk_label_new ("Report"); 
gtk_widget_set_name (GTK_WIDGET(report_label), "report_tab"); 

gtk_container_add(GTK_CONTAINER(window),mynotebook); 
gtk_container_add(GTK_CONTAINER(mynotebook),grid); 
gtk_notebook_set_tab_label(GTK_NOTEBOOK(mynotebook), grid, report_label); 

GtkWidget *grid2 = gtk_grid_new(); 
GtkWidget *settings_label = gtk_label_new ("Settings"); 
gtk_widget_set_name (GTK_WIDGET(settings_label), "settings_tab"); 

gtk_notebook_insert_page (GTK_NOTEBOOK(mynotebook), GTK_WIDGET(grid2), 
      GTK_WIDGET(settings_label), -1); 

gtk_widget_show_all(window); 
gtk_main(); 
return(0); 
} 

回答

1

林具有標籤的一些困難, 你嘗試類似:

background-color: shade (#000000, 0.90); 

我發現gtk3
background-image: -gtk-gradient (linear, left top, left bottom, 
            from (shade (#000000, 1.30)), 
            to (shade (#ffffff, 1.05))); 

唯一信息是這裏 http://developer.gnome.org/gtk3/3.3/GtkCssProvider.html