Add CSS Provider and convert config values to css
This commit is contained in:
parent
8157cb38ec
commit
516a18eb5d
3 changed files with 47 additions and 0 deletions
0
data/style/gajim.css
Normal file
0
data/style/gajim.css
Normal file
|
@ -242,7 +242,9 @@ class GajimApplication(Gtk.Application):
|
||||||
def do_activate(self):
|
def do_activate(self):
|
||||||
Gtk.Application.do_activate(self)
|
Gtk.Application.do_activate(self)
|
||||||
from gui_interface import Interface
|
from gui_interface import Interface
|
||||||
|
import gtkgui_helpers
|
||||||
self.interface = Interface()
|
self.interface = Interface()
|
||||||
|
gtkgui_helpers.load_css()
|
||||||
self.interface.run(self)
|
self.interface.run(self)
|
||||||
self.add_actions()
|
self.add_actions()
|
||||||
import gui_menu_builder
|
import gui_menu_builder
|
||||||
|
|
|
@ -48,6 +48,7 @@ log = logging.getLogger('gajim.gtkgui_helpers')
|
||||||
from common import i18n
|
from common import i18n
|
||||||
from common import gajim
|
from common import gajim
|
||||||
from common import pep
|
from common import pep
|
||||||
|
from common import configpaths
|
||||||
|
|
||||||
gtk_icon_theme = Gtk.IconTheme.get_default()
|
gtk_icon_theme = Gtk.IconTheme.get_default()
|
||||||
gtk_icon_theme.append_search_path(gajim.ICONS_DIR)
|
gtk_icon_theme.append_search_path(gajim.ICONS_DIR)
|
||||||
|
@ -1088,3 +1089,47 @@ def __label_size_allocate(widget, allocation):
|
||||||
|
|
||||||
def get_action(action):
|
def get_action(action):
|
||||||
return gajim.app.lookup_action(action)
|
return gajim.app.lookup_action(action)
|
||||||
|
|
||||||
|
def load_css():
|
||||||
|
path = os.path.join(configpaths.get('DATA'), 'style', 'gajim.css')
|
||||||
|
try:
|
||||||
|
with open(path, "r") as f:
|
||||||
|
css = f.read()
|
||||||
|
except Exception as exc:
|
||||||
|
print('Error loading css: %s', exc)
|
||||||
|
return
|
||||||
|
|
||||||
|
provider = Gtk.CssProvider()
|
||||||
|
css = "\n".join((css, convert_config_to_css()))
|
||||||
|
provider.load_from_data(bytes(css.encode()))
|
||||||
|
Gtk.StyleContext.add_provider_for_screen(
|
||||||
|
Gdk.Screen.get_default(),
|
||||||
|
provider,
|
||||||
|
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
|
||||||
|
|
||||||
|
def convert_config_to_css():
|
||||||
|
css = ''
|
||||||
|
themed_widgets = {}
|
||||||
|
classes = {'state_composing_color': ('', 'color'),
|
||||||
|
'state_inactive_color': ('', 'color'),
|
||||||
|
'state_gone_color': ('', 'color'),
|
||||||
|
'state_paused_color': ('', 'color'),
|
||||||
|
'msgcorrectingcolor': ('text', 'background')}
|
||||||
|
|
||||||
|
theme = gajim.config.get('roster_theme')
|
||||||
|
for key, values in themed_widgets.items():
|
||||||
|
config, attr = values
|
||||||
|
css += '#{} {{'.format(key)
|
||||||
|
value = gajim.config.get_per('themes', theme, config)
|
||||||
|
if value:
|
||||||
|
css += '{attr}: {color};\n'.format(attr=attr, color=value)
|
||||||
|
css += '}\n'
|
||||||
|
|
||||||
|
for key, values in classes.items():
|
||||||
|
node, attr = values
|
||||||
|
value = gajim.config.get_per('themes', theme, key)
|
||||||
|
if value:
|
||||||
|
css += '.theme_{cls} {node} {{ {attr}: {color}; }}\n'.format(
|
||||||
|
cls=key, node=node, attr=attr, color=value)
|
||||||
|
|
||||||
|
return css
|
||||||
|
|
Loading…
Add table
Reference in a new issue