2013/10/10 Dov Grobgeld <dov.grobgeld@xxxxxxxxx>
1) you may attach css class for special widget, for example if you will have following application style
custom css style stored as option in configuration file, so user can change application theme by it self
Here's what I ended up doing, with the help of Denis Linvinus:
#!/usr/bin/python
from gi.repository import Gtkmw = Gtk.Window()background-color: pink;
prov = Gtk.CssProvider()
Gtk.StyleContext.add_provider_for_screen(mw.get_screen(),prov,Gtk.STYLE_PROVIDER_PRIORITY_USER)
prov.load_from_data("""
* {
font: Serif 30;
}
""")
mw.connect('delete-event',Gtk.main_quit)
mw.add(Gtk.Label('Hello Gtk %s!'%Gtk._version))
mw.show_all()
Gtk.main()Note that it is possible to run several prov.load_from_data() calls to interactively change the properties, e.g. based on some external event.
bad idea, you should use classes and states of widget (active,prelight,focused)
please read documentation for GtkCssProvider at https://developer.gnome.org/gtk3/stable/GtkCssProvider.html
https://developer.gnome.org/gtk3/stable/GtkStyleContext.html#gtkstylecontext-classes
https://developer.gnome.org/gtk3/stable/GtkStyleContext.html#gtkstylecontext-classes
also, have a look at this video http://www.youtube.com/watch?v=gTYUn72Wjyk
it show power of css in gtk3
1) you may attach css class for special widget, for example if you will have following application style
.my_custom_css_class {
background-color: #FF0000;
}
background-color: #FF0000;
}
then you can attach this class on the fly
label.get_style_context().add_class("my_custom_css_class");
or remove it
label.get_style_context().remove_class("my_custom_css_class");
label.get_style_context().add_class("my_custom_css_class");
or remove it
label.get_style_context().remove_class("my_custom_css_class");
more over you may remove default class if you wish
button.get_style_context().remove_class("button");
button.get_style_context().remove_class("button");
2) if you will use your own widgets then you can use your custom widget name in css as selector
for example i have custom class
public class VTToggleButton : Gtk.Button{
}
public class VTToggleButton : Gtk.Button{
}
now i can use name VTToggleButton in css
VTToggleButton {
background-color: #FF0000;
}
VTToggleButton {
background-color: #FF0000;
}
so you can completely divide applications view from application sources.
i use such approach in my application https://github.com/linvinus/AltYo
custom css style stored as option in configuration file, so user can change application theme by it self
Regards,
Dov
On Thu, Oct 10, 2013 at 4:16 PM, Paul Davis <paul@xxxxxxxxxxxxxxxxxxxxx> wrote:
On Thu, Oct 10, 2013 at 4:05 AM, Dov Grobgeld <dov.grobgeld@xxxxxxxxx> wrote:
Hi,Has something changed with the setting of styles in Gtk3, or is there some environment setting that inhibits the setting of the style? Consider the following python program:
#!/usr/bin/python
from gi.repository import Gtk
Gtk.rc_parse_string("""
style "normal" {
font_name ="serif 30"
}
widget "*" style "normal"
""")My impression was that GTK RC files were deprecated (and ignored) and that all themeing/styling was done with CSS now. I may be wrong about that. Note that it isn't trivial to do per-widget CSS stuff, apparently.
_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
https://mail.gnome.org/mailman/listinfo/gtk-list
_______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx https://mail.gnome.org/mailman/listinfo/gtk-list