#
# Copyright, Saul Youssef, August 2003
#
from Environment import *
from WebPage import *
class PackageSite(Environment):
type = 'remote package'
title = 'Remote Packages'
action = 'install remotely'
def __init__(self,package,site):
self.package = package
self.package.resolve()
self.site = site
self.installed = 0
#-- Set
def equal(self,x): return self.package==x.package and self.site==x.site
def str(self): return `self.package`+' at '+`self.site`
def display(self,indent=0):
print indent*' '+self.str()
self.site.display(indent+4)
def htmlOut(self,w):
w.text('')
self.package.htmlLine(w); w.text(' @ ')
self.site.htmlOut(w)
w.text('')
menubar = get(fullpath('$PAC_ANCHOR/htmls/menubar.w'))
menubar.text('')
self.site.htmlOut(menubar); menubar.text('
')
menubar.text('')
menubar.put(fullpath('$PAC_ANCHOR/htmls/menubar.w'))
#-- Satisfiability
def satisfied(self):
if self.installed: return self.site.satisfied()
else: return Reason("["+`self.package`+"] has not been installed at ["+`self.site`+"].")
def satisfiable(self): return self.site.satisfiable()
#-- Action
def acquire(self):
reason = self.site.satisfy()
if reason.ok(): reason = self.site.addPackage(self.package)
if reason.ok(): reason = self.site.satisfy()
self.installed = 1
return reason
def retract(self):
self.installed = 0
return self.site.removeInstallation()