summaryrefslogtreecommitdiff
path: root/portato/backend/__init__.py
blob: c3de44331775795b64a7d47b0174a579b2badc66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# -*- coding: utf-8 -*-
#
# File: portato/backend/__init__.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
# Copyright (C) 2006-2007 René 'Necoro' Neumann
# This is free software.  You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
#
# Written by René 'Necoro' Neumann <necoro@necoro.net>

from exceptions import *
from system_interface import SystemInterface

SYSTEM = "portage" # the name of the current system
_sys = None # the SystemInterface-instance

class SystemWrapper (object, SystemInterface):
	"""This is a wrapper to the different system interfaces, allowing the direct import via C{from portato.backend import system}.
	With this wrapper a change of the system is propagated to all imports."""
	
	def __getattribute__ (self, name):
		"""Just pass all attribute accesses directly to _sys."""
		global _sys
		return eval ("_sys.%s" % name)

def set_system (new_sys):
	"""Sets the current system to a new one.

	@param new_sys: the name of the system to take
	@type new_sys: string"""

	global SYSTEM
	SYSTEM = new_sys
	load_system()

def load_system ():
	"""Loads the current chosen system.

	@raises InvalidSystemError: if an inappropriate system is set"""
	
	global _sys

	if SYSTEM == "portage":
		from portato.backend.portage import PortageSystem
		_sys = PortageSystem ()
	else:
		raise InvalidSystemError, SYSTEM

system = SystemWrapper()

# import package before loading the system as some systems may depend on it being in the namespace
from package import Package

load_system()
='/portato.git/commit/portato_qt.desktop?id=9cb2b747090990fc2301c6b64ef521892ab2644f&follow=1'>add application icon and desktop filenecoro7-4/+25 2007-04-24moved *.glade and *.ui to one directory to omit the change of the config.py e...necoro8-5/+2538 2007-04-24moved *.glade and *.ui to one directory to omit the change of the config.py e...necoro5-1191/+0 2007-04-24moved *.glade and *.ui to one directory to omit the change of the config.py e...necoro1-1340/+0 2007-04-24added dialogs to warn you when the queue is running on quitting portatonecoro8-214/+267 2007-04-20Made qt plugin-ready; lots of documentationnecoro15-81/+351 2007-04-18nomsgnecoro1-1/+0 2007-04-18finished Qt-Frontendnecoro5-15/+117 2007-04-17marking installed packages in pkglistnecoro5-14/+50 2007-04-16added ebuild window for Qt-Frontendnecoro4-2/+229 2007-04-16added preferences for Qt-Frontendnecoro9-279/+710 2007-04-13Improved masking display and made most of the Qt-Frontend worknecoro7-35/+334 2007-04-10Some more functionality for the Qt-Frontend (complete emerge)necoro8-217/+347 2007-04-07Some more functionality for the Qt-Frontendnecoro11-88/+463 2007-04-07Added Qt-Terminalnecoro4-4/+213 2007-04-06First qt draftnecoro6-1/+796 2007-04-04showed masked packages unmasked by the user similar to stable marked testing ...necoro5-13/+40 2007-03-31changed changelognecoro1-1/+2 2007-03-31Some small changes for etcproposals 1.1necoro1-2/+2 2007-03-31Some small changes for etcproposals 1.1necoro2-3/+3 2007-03-31Some small changes for etcproposals 1.1necoro1-6/+13 2007-03-31Allowed Plugins to have a menunecoro7-201/+315 2007-03-15Added etc-proposals pluginnecoro7-28/+121 2007-03-10Added USE_EXPAND-supportnecoro5-11/+63 2007-03-10Added plugin-data to about-dialognecoro3-197/+264