Read icon attach points when is not possible get the info from gtk
Gtk has deprecated gtk-icon-get-attach-points on version 3.14 We need that information to place pur badges, this fix read the information from the .icon file [1] https://developer.gnome.org/gtk3/stable/GtkIconTheme.html#gtk-icon-info-get-attach-points
This commit is contained in:
parent
597721877f
commit
f7966382b8
@ -24,6 +24,8 @@ STABLE.
|
|||||||
import re
|
import re
|
||||||
import math
|
import math
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
|
from ConfigParser import ConfigParser
|
||||||
|
|
||||||
from gi.repository import GObject
|
from gi.repository import GObject
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
@ -124,12 +126,27 @@ class _IconBuffer(object):
|
|||||||
|
|
||||||
def _get_attach_points(self, info, size_request):
|
def _get_attach_points(self, info, size_request):
|
||||||
has_attach_points_, attach_points = info.get_attach_points()
|
has_attach_points_, attach_points = info.get_attach_points()
|
||||||
|
attach_x = attach_y = 0
|
||||||
if attach_points:
|
if attach_points:
|
||||||
|
# this works only for Gtk < 3.14
|
||||||
|
# https://developer.gnome.org/gtk3/stable/GtkIconTheme.html
|
||||||
|
# #gtk-icon-info-get-attach-points
|
||||||
attach_x = float(attach_points[0].x) / size_request
|
attach_x = float(attach_points[0].x) / size_request
|
||||||
attach_y = float(attach_points[0].y) / size_request
|
attach_y = float(attach_points[0].y) / size_request
|
||||||
else:
|
elif info.get_filename():
|
||||||
attach_x = attach_y = 0
|
# try read from the .icon file
|
||||||
|
icon_filename = info.get_filename().replace('.svg', '.icon')
|
||||||
|
if os.path.exists(icon_filename):
|
||||||
|
try:
|
||||||
|
with open(icon_filename) as config_file:
|
||||||
|
cp = ConfigParser()
|
||||||
|
cp.readfp(config_file)
|
||||||
|
attach_points_str = cp.get('Icon Data', 'AttachPoints')
|
||||||
|
attach_points = attach_points_str.split(',')
|
||||||
|
attach_x = float(attach_points[0].strip()) / 1000
|
||||||
|
attach_y = float(attach_points[1].strip()) / 1000
|
||||||
|
except Exception as e:
|
||||||
|
logging.exception('Exception reading icon info: %s', e)
|
||||||
|
|
||||||
return attach_x, attach_y
|
return attach_x, attach_y
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user