2017-06-14 29 views
1

私はC/GTK + GUIアプリケーションをVS2017のGTKSharpを使ってC#に変換しています。私はこのパッケージhttps://www.nuget.org/packages/GtkSharp/3.1.3をNuGet経由でインストールしました。ここでGTKSharpのCSSスタイリング

は、私は(アプリケーションインタフェースを定義するためにグレードファイルを使用しています)CSSを読み込む方法は次のとおりです。

static void Main(string[] args) 
    { 
     new Program(args); 
    } 

    public Program(string[] args) 
    { 
     Application.Init(); 

     builder = new Builder(); 
     Gtk.CssProvider provider = new CssProvider(); 
     builder.AddFromFile("interface.glade"); 
     provider.LoadFromPath("style.css"); 
     builder.Autoconnect(this); 

     Gtk.Window window = (Gtk.Window)builder.GetObject("start"); 
     Gtk.StyleContext.AddProviderForScreen(Gdk.Screen.Default, provider, 800); // couldn't find the equivalent to GTK_STYLE_PROVIDER_PRIORITY_USER so I set the priority to a random number 
     window.Show(); 

     Application.Run(); 
    } 

セレクタ名はGTK +と異なるように見えます。例えば、C/GTK +ではなく、C#で

window { 
    ... 
    } 

作品、C#で

GtkWindow { 
    ... 
    } 

作品に対しなくC/GTK +です。それから、私は全くスタイルできないようなウィジェットがいくつかあります。例えば、GTK +で

button { 
    ... 
    } 

作品が、

GtkButton { 
    ... 
    } 

は、C#で動作しません。私はGTK#がCSSのスタイルをどのように扱うかに関するドキュメントを見つけることができなかったので、GTK +と同じであると思っていました。すべてのポインタ?

答えて

0

GTKSharpはGTK3の動作によく似ているようです。

Here is the reference manual from developer.gnome.org

Espcially有用なTable 1. Selector syntaxセクションでなければなりません。

要するに、要素はGTKクラス名の後にGtkButton、GtkLabelなどの名前が付けられます。

デフォルトのGTK3 wigets check out the docs talbe of content.のクラスリストについては、

GTKボタンは、背景をレンダリングしないコンテナウィジェットです。セレクタを使用して適用しようとする実際のCSSプロパティは表示されません。なぜ動作しないのかはわかりませんが、それは別々に内容になります。例えば。

GtkButton GtkLabel { 
    color: lime; 
} 

セレクタ自体GtkButton正確でなければなりません。

0

バージョンの問題です。

GTK#の3.22はGtkButtonセレクタを正しく検出します。私はGTK 3.14のネイティブライブラリを使用していました。 3.22バージョンのwin32ライブラリを提供するunlisted NuGet packageが1つあります。不思議なことに、そのバージョンは、 "GtkButton"、 "GtkWindow" ...タグの代わりに古い "ボタン"、 "ウィンドウ"を検出します。

関連する問題