From db71bb1995887676a7fb62cf30da56165a609a44 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Mon, 16 Jun 2008 16:34:47 +0100 Subject: [PATCH] Gave Zero Install its own submenu in Applications. Instead of having 'Add Zero Install Program' on the Accessories menu, we now have a top-level "Zero Install" menu with "Add Program" and "Update or Remove Programs" items (which currently just opens the cache viewer). --- applications/zeroinstall-manage.desktop | 10 ++++++++ applications/zeroinstall-zero2desktop.desktop | 4 +-- applications/zeroinstall.directory | 5 ++++ applications/zeroinstall.menu | 13 ++++++++++ setup.py | 35 +++++++++++++++++++++++---- 5 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 applications/zeroinstall-manage.desktop create mode 100644 applications/zeroinstall.directory create mode 100644 applications/zeroinstall.menu diff --git a/applications/zeroinstall-manage.desktop b/applications/zeroinstall-manage.desktop new file mode 100644 index 0000000..4a436ab --- /dev/null +++ b/applications/zeroinstall-manage.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Update or Remove Programs +GenericName=Installer +Comment=Manage Zero Install programs on your Applications menu +Exec=0launch http://0install.net/2008/interfaces/ZeroInstall-GUI.xml --cache +Icon=zeroinstall-zero2desktop +Terminal=false +Categories=PackageManager;GTK; diff --git a/applications/zeroinstall-zero2desktop.desktop b/applications/zeroinstall-zero2desktop.desktop index 0152d10..76d66d3 100644 --- a/applications/zeroinstall-zero2desktop.desktop +++ b/applications/zeroinstall-zero2desktop.desktop @@ -1,10 +1,10 @@ [Desktop Entry] Type=Application Version=1.0 -Name=Add Zero Install Program +Name=Add New Program GenericName=Installer Comment=Adds Zero Install programs to your Applications menu Exec=0launch http://0install.net/2007/interfaces/Zero2Desktop.xml -- %u Icon=zeroinstall-zero2desktop Terminal=false -Categories=Utility;Settings;PackageManager;GTK; +Categories=PackageManager;GTK; diff --git a/applications/zeroinstall.directory b/applications/zeroinstall.directory new file mode 100644 index 0000000..0002663 --- /dev/null +++ b/applications/zeroinstall.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Encoding=UTF-8 +Icon=zeroinstall-zero2desktop +Type=Directory +Name=Zero Install diff --git a/applications/zeroinstall.menu b/applications/zeroinstall.menu new file mode 100644 index 0000000..204ac8f --- /dev/null +++ b/applications/zeroinstall.menu @@ -0,0 +1,13 @@ + + + Applications + + ZeroInstall + zeroinstall.directory + + zeroinstall-zero2desktop.desktop + zeroinstall-manage.desktop + + + diff --git a/setup.py b/setup.py index 1526da9..4200766 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,9 @@ from distutils.core import setup +from distutils.util import convert_path from distutils.command.build_py import build_py +from distutils.command.install import install from distutils.command.install_lib import install_lib +from distutils.command.install_data import install_data import os import zeroinstall @@ -25,12 +28,32 @@ class build_with_data(build_py): class install_lib_exec(install_lib): def run(self): - install_lib.run(self) + install_lib.run(self) # super.run() if os.name != 'posix': return launch = os.path.join(self.install_dir, 'zeroinstall/0launch-gui/0launch-gui') os.chmod(launch, os.stat(launch).st_mode | 0111) +# distutils doesn't seem to have any support for adding configuration files. +# Unfortunately, the freedesktop.org menu spec strangely defines part of the +# menu definitions as configuration. +class my_install(install): + def finalize_options(self): + install.finalize_options(self) # super.finalize_options() + if self.home: + self.__config_dir = os.path.join(self.home, '.config') + elif self.prefix == '/usr': + self.__config_dir = os.path.join(self.root or '/', 'etc/xdg') + else: + self.__config_dir = os.path.join(self.prefix, 'etc/xdg') + + def run(self): + install.run(self) # super.run() + menus_dir = os.path.join(self.__config_dir, 'menus/applications-merged') + self.mkpath(menus_dir) + menu = convert_path('applications/zeroinstall.menu') + self.copy_file(menu, menus_dir) + setup(name="zeroinstall-injector", version=zeroinstall.version, description="The Zero Install Injector (0launch)", @@ -39,12 +62,14 @@ setup(name="zeroinstall-injector", url="http://0install.net", scripts=['0launch', '0alias', '0store', '0store-secure-add'], data_files = [('man/man1', ['0launch.1', '0alias.1', '0store-secure-add.1', '0store.1']), - ('share/applications', ['applications/zeroinstall-zero2desktop.desktop']), - ('share/pixmaps', ['applications/zeroinstall-zero2desktop.png'])], + ('share/applications', ['applications/zeroinstall-zero2desktop.desktop', 'applications/zeroinstall-manage.desktop']), + ('share/desktop-directories', ['applications/zeroinstall.directory']), + ('share/pixmaps', ['applications/zeroinstall-zero2desktop.png'])], license='LGPL', cmdclass={ - 'build_py': build_with_data, - 'install_lib': install_lib_exec, + 'build_py': build_with_data, + 'install_lib': install_lib_exec, + 'install': my_install, }, long_description="""\ A running process is created by combining many different libraries (and other -- 2.11.4.GIT