From 345bab3a998eff7c436a6aa017fcbce94e325e53 Mon Sep 17 00:00:00 2001 From: Daniel Pavel Date: Fri, 4 Jan 2013 08:18:22 +0200 Subject: [PATCH] fix code looking for icons --- .gitignore | 5 +++++ bin/solaar | 28 ++++++---------------------- bin/solaar-cli | 17 ++++++----------- setup.py | 11 ++--------- src/solaar/ui/__init__.py | 25 +++++++++++++++++++++++++ 5 files changed, 44 insertions(+), 42 deletions(-) diff --git a/.gitignore b/.gitignore index a9606130..010b4d9b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,8 @@ __pycache__/ *.log /src/Solaar.egg-info/ +/build/ +/sdist/ +/dist/ +/deb_dist/ +/MANIFEST diff --git a/bin/solaar b/bin/solaar index 591a1c10..9612f5a2 100755 --- a/bin/solaar +++ b/bin/solaar @@ -6,30 +6,14 @@ from __future__ import absolute_import def init_paths(): + """Make the app work in the source tree.""" + import sys import os.path as _path - prefix = _path.dirname(_path.dirname(_path.realpath(_path.abspath(__file__)))) - - dist_lib = _path.join(prefix, 'share', 'solaar', 'lib') - src_lib = _path.join(prefix, 'src') - - for location in (dist_lib, src_lib): - init_py = _path.join(location, 'solaar', '__init__.py') - if _path.exists(init_py): - import sys - sys.path.insert(1, location) - break - - # src_override = _path.join(prefix, 'share_override') - dist_share = _path.join(prefix, 'share', 'solaar') - src_share = _path.join(prefix, 'share') - - for location in (dist_share, src_share): - solaar_png = _path.join(location, 'icons', 'solaar.png') - if _path.exists(solaar_png): - import os - os.environ['XDG_DATA_DIRS'] = location + ':' + os.environ.get('XDG_DATA_DIRS', '') - break + src_lib = _path.normpath(_path.join(_path.realpath(sys.path[0]), '..', 'src')) + init_py = _path.join(src_lib, 'solaar', '__init__.py') + if _path.exists(init_py): + sys.path[0] = src_lib if __name__ == '__main__': diff --git a/bin/solaar-cli b/bin/solaar-cli index f9f18a61..a2873d22 100755 --- a/bin/solaar-cli +++ b/bin/solaar-cli @@ -6,19 +6,14 @@ from __future__ import absolute_import def init_paths(): + """Make the app work in the source tree.""" + import sys import os.path as _path - prefix = _path.dirname(_path.dirname(_path.realpath(_path.abspath(__file__)))) - - dist_lib = _path.join(prefix, 'share', 'solaar', 'lib') - src_lib = _path.join(prefix, 'src') - - for location in (dist_lib, src_lib): - init_py = _path.join(location, 'solaar', '__init__.py') - if _path.exists(init_py): - import sys - sys.path.insert(1, location) - break + src_lib = _path.normpath(_path.join(_path.realpath(sys.path[0]), '..', 'src')) + init_py = _path.join(src_lib, 'solaar', '__init__.py') + if _path.exists(init_py): + sys.path[0] = src_lib if __name__ == '__main__': diff --git a/setup.py b/setup.py index ad69aac6..06d5c142 100755 --- a/setup.py +++ b/setup.py @@ -1,8 +1,7 @@ #!/usr/bin/env python from glob import glob -# from distutils.core import setup -from setuptools import setup, find_packages +from distutils.core import setup setup(name='Solaar', @@ -33,11 +32,9 @@ battery status. platforms=['linux'], requires=['pyudev (>= 0.13)', 'gi.repository.GObject (>= 2.0)', 'gi.repository.Gtk (>= 3.0)'], - extras_require={'notifications': 'gi.repository.Notify'}, package_dir={'': 'src'}, - # packages=['hidapi', 'logitech', 'logitech.unifying_receiver', 'solaar', 'solaar.ui'], - packages=find_packages('src'), + packages=['hidapi', 'logitech', 'logitech.unifying_receiver', 'solaar', 'solaar.ui'], data_files=[ # ('share/applications', ['share/applications/solaar.desktop']), @@ -47,8 +44,4 @@ battery status. ], scripts=['bin/solaar', 'bin/solaar-cli'], - # entry_points={ - # 'console_scripts': ['solaar-cli = solaar.cli:main'], - # 'gui_scripts': ['solaar = solaar.gtk:main'], - # }, ) diff --git a/src/solaar/ui/__init__.py b/src/solaar/ui/__init__.py index 978fbdf9..7f72d5e7 100644 --- a/src/solaar/ui/__init__.py +++ b/src/solaar/ui/__init__.py @@ -4,6 +4,31 @@ from __future__ import absolute_import, division, print_function, unicode_literals + +def _look_for_application_icons(): + import os.path as _path + import os as _os + + import sys as _sys + src_share = _path.normpath(_path.join(_path.realpath(_sys.path[0]), '..', 'share')) + local_share = _os.environ.get('XDG_DATA_HOME', _path.expanduser('~/.local/share')) + data_dirs = _os.environ.get('XDG_DATA_DIRS', '/usr/local/share:/usr/share') + + share_solaar = [src_share] + list(_path.join(x, 'solaar') for x in [local_share] + data_dirs.split(':')) + for location in share_solaar: + solaar_png = _path.join(location, 'icons', 'solaar.png') + if _path.exists(solaar_png): + _os.environ['XDG_DATA_DIRS'] = location + ':' + data_dirs + break + + del _sys + del _os + # del _path + +# look for application-specific icons before initializing Gtk +_look_for_application_icons() + + from gi.repository import GObject, Gtk GObject.threads_init()