2014-10-21 27 views
5

Sto tentando di modificare il tema in GTK # (Sistema operativo: Windows, IDE: Xamarin). Ma ho prossimi numeri:Tema Gtk in GTK # (Windows)

  1. sono stato in grado di trovare un solo tema che rendono correttamente, si tratta di "Orta". Tutto andava bene, ad eccezione di ritardi e blocchi. Qui è il mio codice:

    string Resource_File = "Orta\\gtk-2.0\\gtkrc"; Application.Init(); Gtk.Rc.AddDefaultFile (Resource_File); Gtk.Rc.Parse (Resource_File); MainWindow win = new MainWindow(); win.Show(); Application.Run();

    Quando cambia la dimensione della Paned o cliccando sul tasto ottengo GUI si blocca (I already asked about this). Questo problema si verifica solo quando si utilizza questo tema, con gli altri temi tutto funziona in modo tollerabile. Ho usato la ricerca e ho trovato un paio di opinioni, a proposito del fatto che questo è dovuto all'uso del Cairo per il rendering della grafica (one of them).

  2. se si tenta di utilizzare un tema diverso, un sacco di elementi GUI non fusi correttamente nella mia applicazione GTK #, ma sono correttamente rendono nel Selettore tema GTK. Se il tema viene visualizzato correttamente in GTK Theme Selector, cerco di utilizzare il file gtkrc selezionato nella mia app Gtk # (come mostrato in Esempio con "Orta"), ma quasi sempre, la maggior parte dei widget non viene visualizzata correttamente (here is an example)

Così ho alcune domande:

  1. Come scegliere un tema di lavoro?
  2. Come impostare un tema per GTK # (Windows)?
  3. Quale applicazione open source Gtk # utilizza il tema e come?
  4. Quale altro modo per modificare lo stile della GUI nell'app GTK #?
  5. Perché il tema "Orta" si blocca?

Quindi ho bisogno del vostro aiuto! Grazie!

risposta

2

So che è una vecchia domanda, ma ultimamente ho combattuto con i temi.

Si scopre che quando si esegue una build di app Gtk # con Xamarin, i problemi del tema appariranno perché sembra che alcuni temi "simili a Windows" siano forzati nel codice.

Durante l'esecuzione dell'applicazione da Xamarin Studio, a seconda del framework .Net (Microsoft .NET 4.5, Mono 3.3.0, Mono 4.0.1) il comportamento era diverso. E avevo un avvertimento con Mono 3.3.0, che mi diceva che il motore 'Xamarin' non poteva essere trovato.

ho finito con il seguente codice:

Application.Init(); 
Gtk.Settings.Default.ThemeName = "Theme/gtk-2.0/gtkrc"; 
Gtk.Rc.Parse ("./Theme/gtk-2.0/gtkrc"); 

Dove gtkrc è il mio tema. Senza impostare il nome del tema predefinito, nulla ha funzionato correttamente. Non sono andato molto lontano nel personalizzare il mio tema, quindi non posso dire se risolve ogni problema del tema.