[Xfce4-commits] r23064 - in installit/trunk: . backends components data data/pixmaps data/ui i18n i18n/po tools ui
Jannis Pohlmann
jannis at xfce.org
Sun Sep 3 16:38:40 UTC 2006
Author: jannis
Date: 2006-09-03 16:38:19 +0000 (Sun, 03 Sep 2006)
New Revision: 23064
Added:
installit/trunk/data/pixmaps/
installit/trunk/data/pixmaps/i2t-large.png
installit/trunk/data/pixmaps/i2t-old.png
installit/trunk/data/pixmaps/i2t.png
installit/trunk/data/pixmaps/i2t.svg
installit/trunk/data/pixmaps/initial.png
installit/trunk/data/pixmaps/package-available.png
installit/trunk/data/pixmaps/package-install.png
installit/trunk/data/pixmaps/package-installed.png
installit/trunk/data/pixmaps/package-reinstall.png
installit/trunk/data/pixmaps/package-remove.png
installit/trunk/data/pixmaps/system-software-update.png
installit/trunk/data/ui/
installit/trunk/data/ui/main-window.ui
installit/trunk/tools/lookup.py
Removed:
installit/trunk/tmp-cmd.py
installit/trunk/ui/pixmaps/
installit/trunk/ui/xml/
Modified:
installit/trunk/ChangeLog
installit/trunk/backends/Source.py
installit/trunk/components/packages.py
installit/trunk/i18n/__init__.py
installit/trunk/i18n/po/POTFILES.in
installit/trunk/i18n/po/de.po
installit/trunk/i18n/po/i2t.pot
installit/trunk/i2t
installit/trunk/setup.py
installit/trunk/tools/__init__.py
installit/trunk/tools/env.py
installit/trunk/tools/pkgconfig.py
installit/trunk/tools/shell.py
installit/trunk/ui/initial.py
installit/trunk/ui/main.py
installit/trunk/ui/packages.py
installit/trunk/ui/tasks.py
Log:
* tools/pkgconfig.py: Add i18n support.
* tools/env.py: Add support for list of compilers. Search for the first
available compiler and use it (as a fallback to $CC).
Improve linking (add optional path argument to hasLibrary and link
methods; also search in $PATH/../lib/).
* tools/lookup.py, setup.py, ui/main.py, ui/initial.py, ui/packages.py,
ui/tasks.py, i18n/__init__.py: Add lookup class which searches local
as well as system paths for resources such as icons, translations
etc. Use this class for all resource lookups.
* tools/shell.py: Add option to pass custom environment variables to the
Command class.
* components/packages.py: Remove UnresolvedLibrary and UnresolvedProgram
classes and add path information and self.resolved variable instead.
Add isResolved and some environment variable methods (like
getLinkerFlags) to both classes. Improve dependency resolving.
* backends/Source.py: Re-implement manual program and library resolving.
It still looks ugly as hell, but that's something for later.
* setup.py: Improve build, add package data information so all
translations, images, UI descriptions and other resources are
installed into the system. We're almost done!
* i18n/po/i2t.po, i18n/po/de.po, i18n/po/POTFILES.in: Merge new strings,
update German translations.
Modified: installit/trunk/ChangeLog
===================================================================
--- installit/trunk/ChangeLog 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/ChangeLog 2006-09-03 16:38:19 UTC (rev 23064)
@@ -1,3 +1,28 @@
+2006-09-03 Jannis Pohlmann <jannis at xfce.org>
+
+ * tools/pkgconfig.py: Add i18n support.
+ * tools/env.py: Add support for list of compilers. Search for the first
+ available compiler and use it (as a fallback to $CC).
+ Improve linking (add optional path argument to hasLibrary and link
+ methods; also search in $PATH/../lib/).
+ * tools/lookup.py, setup.py, ui/main.py, ui/initial.py, ui/packages.py,
+ ui/tasks.py, i18n/__init__.py: Add lookup class which searches local
+ as well as system paths for resources such as icons, translations
+ etc. Use this class for all resource lookups.
+ * tools/shell.py: Add option to pass custom environment variables to the
+ Command class.
+ * components/packages.py: Remove UnresolvedLibrary and UnresolvedProgram
+ classes and add path information and self.resolved variable instead.
+ Add isResolved and some environment variable methods (like
+ getLinkerFlags) to both classes. Improve dependency resolving.
+ * backends/Source.py: Re-implement manual program and library resolving.
+ It still looks ugly as hell, but that's something for later.
+ * setup.py: Improve build, add package data information so all
+ translations, images, UI descriptions and other resources are
+ installed into the system. We're almost done!
+ * i18n/po/i2t.po, i18n/po/de.po, i18n/po/POTFILES.in: Merge new strings,
+ update German translations.
+
2006-07-19 Jannis Pohlmann <jannis at xfce.org>
* components/packages.py: Added methods to return sets of
Modified: installit/trunk/backends/Source.py
===================================================================
--- installit/trunk/backends/Source.py 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/backends/Source.py 2006-09-03 16:38:19 UTC (rev 23064)
@@ -27,6 +27,7 @@
import gobject
from tools.shell import Command
+from tools.env import Environment
from components.mirrors import MirrorList
from components.config import Config
from components.packages import Program, Library
@@ -80,18 +81,17 @@
# Determine working directory
directory = path.join(Config.get("TempDir"), package.unpackDir)
-
+
# Build configure command
return Command("./configure %s" % " ".join(options), directory,
- ":".join(package.getProgramPaths()))
+ package.getEnvironmentVars())
def getBuildCommand(self, package):
# Determine working directory
directory = path.join(Config.get("TempDir"), package.unpackDir)
# Generate build command
- return Command("make", directory,
- ":".join(package.getProgramPaths()))
+ return Command("make", directory, package.getEnvironmentVars())
def getTestInstallCommand(self, package):
# Determine working directory
@@ -100,16 +100,15 @@
# Generate temporary installation command
return Command("make DESTDIR=%s install"
% package.getTempInstallPrefix(), directory,
- ":".join(package.getProgramPaths()))
+ package.getEnvironmentVars())
def getInstallCommand(self, package):
# Determine working directory
directory = path.join(Config.get("TempDir"), package.unpackDir)
# Generate installation command
- return Command("make install", directory,
- ":".join(package.getProgramPaths()))
-
+ return Command("make install", directory, package.getEnvironmentVars())
+
def writeInstallLog(self, package):
# Determine log directory
logDir = MirrorList.getActiveMirror().getLogDir()
@@ -671,6 +670,7 @@
SourceWizardPage.activate(self, wizard)
wizard.backButton.set_sensitive(True)
+ wizard.forwardButton.set_sensitive(False)
if self.box.get_child():
self.box.remove(self.box.get_child())
@@ -684,12 +684,12 @@
self.locations.clear()
self.statusButtons.clear()
- # Determine unresolved programs
- self.programs = self.package.getUnresolvedPrograms()
+ # Determine programs this package depends on
+ self.programs = self.package.dependencies.programs
if len(self.programs) > 0:
# Add description label
- label = gtk.Label(_("The following programs could not be found:"))
+ label = gtk.Label(_("The following programs are required:"))
label.set_alignment(0.0, 0.5)
container.pack_start(label, False, False, 0)
label.show()
@@ -713,8 +713,12 @@
status.connect("clicked", lambda button:
self._locateProgram(program))
status.set_relief(gtk.RELIEF_NONE)
- status.set_image(gtk.image_new_from_stock(gtk.STOCK_NO,
+ if program.isResolved():
+ status.set_image(gtk.image_new_from_stock(gtk.STOCK_YES,
gtk.ICON_SIZE_BUTTON))
+ else:
+ status.set_image(gtk.image_new_from_stock(gtk.STOCK_NO,
+ gtk.ICON_SIZE_BUTTON))
hbox.pack_start(status, False, True, 0)
status.show()
@@ -728,25 +732,86 @@
label.show()
# Locate manually via file chooser
- button = gtk.Button(_("Locate manually..."))
- button.connect("clicked", lambda button:
- self._locateProgram(program))
- button.set_image(gtk.image_new_from_stock(gtk.STOCK_FIND,
- gtk.ICON_SIZE_BUTTON))
- table.attach(button, 1, 2, i, i+1, gtk.SHRINK)
- button.show()
+ if not program.isResolved():
+ button = gtk.Button(_("Locate manually..."))
+ button.connect("clicked", lambda button:
+ self._locateProgram(program))
+ button.set_image(gtk.image_new_from_stock(gtk.STOCK_FIND,
+ gtk.ICON_SIZE_BUTTON))
+ table.attach(button, 1, 2, i, i+1, gtk.SHRINK)
+ button.show()
- # Determine unresolved libraries
- self.libraries = self.package.getUnresolvedLibraries()
+ i += 1
+ # Determine libraries this program depends on
+ self.libraries = self.package.dependencies.libraries
+
+ if len(self.libraries) > 0:
+ # Add description label
+ label = gtk.Label(_("The following libraries are required:"))
+ label.set_alignment(0.0, 0.5)
+ container.pack_start(label, False, False, 0)
+ label.show()
+
+ # Add table
+ table = gtk.Table(1, 2)
+ table.set_border_width(6)
+ table.set_col_spacings(12)
+ container.pack_start(table, False, False, 0)
+ table.show()
+
+ i = 0
+
+ for library in self.libraries:
+ hbox = gtk.HBox(False, 0)
+ table.attach(hbox, 0, 1, i, i+1, gtk.SHRINK)
+ hbox.show()
+
+ # Status button
+ status = gtk.Button()
+ status.connect("clicked", lambda button:
+ self._locateLibrary(library))
+ status.set_relief(gtk.RELIEF_NONE)
+ if library.isResolved():
+ status.set_image(gtk.image_new_from_stock(gtk.STOCK_YES,
+ gtk.ICON_SIZE_BUTTON))
+ else:
+ status.set_image(gtk.image_new_from_stock(gtk.STOCK_NO,
+ gtk.ICON_SIZE_BUTTON))
+ hbox.pack_start(status, False, True, 0)
+ status.show()
+
+ self.statusButtons[library] = status
+
+ # Library label
+ label = gtk.Label()
+ label.set_markup("<b>%s</b>" % library.name)
+ label.set_alignment(0.0, 0.5)
+ hbox.pack_start(label, False, True, 0)
+ label.show()
- if self.validate():
+ # Locate manually via file chooser
+ if not library.isResolved():
+ button = gtk.Button(_("Locate manually..."))
+ button.connect("clicked", lambda button:
+ self._locateLibrary(library))
+ button.set_image(gtk.image_new_from_stock(gtk.STOCK_FIND,
+ gtk.ICON_SIZE_BUTTON))
+ table.attach(button, 1, 2, i, i+1, gtk.SHRINK)
+ button.show()
+
+ i += 1
+
+ if len(self.programs) == 0 and len(self.libraries) == 0:
self.emit("page-success")
+ if self.validate():
+ wizard.forwardButton.set_sensitive(True)
+
def validate(self):
# We're done when there are no missing depdendencies left
- if len(self.programs) == 0 and len(self.libraries) == 0:
- return True
+ return len(self.package.getUnresolvedPrograms()) == 0 and \
+ len(self.package.getUnresolvedLibraries()) == 0
def _locateProgram(self, program):
if self.locations.has_key(program):
@@ -766,15 +831,7 @@
self.statusButtons[program].set_image(image)
# Create new (resolved) program object
- newProgram = Program(program.name,
- self.fileChooser.get_filename())
-
- # Replace UnresolvedProgram with Program
- self.package.dependencies.programs.remove(program)
- self.package.dependencies.programs.add(newProgram)
-
- # Remove program from unresolved dependencies
- self.programs.remove(program)
+ program.path = self.fileChooser.get_filename()
else:
# Update status icon
image = gtk.image_new_from_stock(gtk.STOCK_NO,
@@ -783,8 +840,38 @@
# Hide the file chooser again
self.fileChooser.hide()
+
+ if self.validate():
+ self.wizard.forwardButton.set_sensitive(True)
+ def _locateLibrary(self, library):
+ if self.locations.has_key(library):
+ self.fileChooser.set_filename(self.locations[library])
+ if self.fileChooser.run() == gtk.RESPONSE_ACCEPT:
+ self.locations[library] = self.fileChooser.get_filename()
+
+ # Try to link with library located in this path
+ if Environment.hasLibrary(library, self.fileChooser.get_filename()):
+ library.path = self.fileChooser.get_filename()
+ library.resolved = True
+
+ # Update status icon
+ image = gtk.image_new_from_stock(gtk.STOCK_YES,
+ gtk.ICON_SIZE_BUTTON)
+ self.statusButtons[library].set_image(image)
+ else:
+ # Update status icon
+ image = gtk.image_new_from_stock(gtk.STOCK_NO,
+ gtk.ICON_SIZE_BUTTON)
+ self.statusButtons[library].set_image(image)
+
+ # Hide the file chooser again
+ self.fileChooser.hide()
+
+ if self.validate():
+ self.wizard.forwardButton.set_sensitive(True)
+
class BuildPage(SourceWizardPage):
def __init__(self, wizard, package):
Modified: installit/trunk/components/packages.py
===================================================================
--- installit/trunk/components/packages.py 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/components/packages.py 2006-09-03 16:38:19 UTC (rev 23064)
@@ -76,20 +76,6 @@
self.install = None
-class UnresolvedLibrary:
-
- def __init__(self, name, version, backend=None):
- self.name = name
- self.version = version
- self.backend = backend
-
-
-class UnresolvedProgram:
-
- def __init__(self, name):
- self.name = name
-
-
class Dependencies:
def __init__(self):
@@ -135,7 +121,7 @@
results = set()
for dep in self.dependencies.programs:
- if isinstance(dep, UnresolvedProgram):
+ if not dep.isResolved():
results.add(dep)
return results
@@ -144,20 +130,41 @@
results = set()
for dep in self.dependencies.libraries:
- if isinstance(dep, UnresolvedLibrary):
+ if not dep.isResolved():
results.add(dep)
return results
- def getProgramPaths(self):
+ def getPath(self):
paths = set()
for program in self.dependencies.programs:
paths.add(program.path)
-
- return paths
+ return ":" + ":".join(paths)
+ def getLinkerFlags(self):
+ flags = set()
+
+ for library in self.dependencies.libraries:
+ if library.path:
+ flags.add("-L%s" % library.path)
+
+ if library.name:
+ flags.add("-l%s" % library.name)
+
+ return " " + " ".join(flags)
+
+ def getCompilerFlags(self):
+ return ""
+
+ def getEnvironmentVars(self):
+ vars = dict()
+ vars["PATH"] = self.getPath()
+ vars["CFLAGS"] = self.getCompilerFlags()
+ vars["LDFLAGS"] = self.getLinkerFlags()
+ return vars
+
# Register Package to GObject type system
gobject.type_register(Package)
@@ -178,18 +185,34 @@
class Program:
- def __init__(self, name, path):
+ def __init__(self, name, path=None, resolved=False):
self.name = name
self.path = path
+ self.resolved = resolved
+ def isResolved(self):
+ if self.path:
+ dirExists = os.path.isdir(self.path)
+ fileExists = os.path.isfile(os.path.join(self.path, self.name))
+ else:
+ dirExists = False
+ fileExists = False
+ return self.resolved or (dirExists and fileExists)
+
+
class Library:
- def __init__(self, name, path):
+ def __init__(self, name, version, path=None, resolved=False):
self.name = name
+ self.version = version
self.path = path
+ self.resolved = resolved
+ def isResolved(self):
+ return self.resolved or (self.path and os.path.isdir(self.path))
+
class ProgramNotFoundError(Exception):
pass
@@ -559,7 +582,7 @@
for location in paths:
if os.access(path.join(location, name), os.X_OK):
- return Program(name, path.join(location, name))
+ return Program(name, path.join(location, name), True)
raise ProgramNotFoundError(name)
@@ -573,21 +596,14 @@
pkg = self.getPackage(dep["name"], dep["version"],
package.backend, True)
except PackageNotFoundError, e:
+ pkg = Library(dep["name"], dep["version"])
try:
- pkg = PkgConfig.resolve(dep["name"], dep["version"])
+ PkgConfig.resolve(dep["name"], dep["version"])
+ pkg.resolved = True
except PkgConfigModuleNotFound:
if Config.get("UseLibrarySearch"):
- ## TODO: Replace the line below with a call of the
- ## Library lookup class
- if Environment.hasLibrary(dep["name"], dep["version"]):
- return Library(dep["name"], dep["version"])
- else:
- return UnresolvedLibrary(dep["name"],
- dep["version"])
- else:
- # Mark this dependency as unresolved and try resolving
- # it manually during installation.
- pkg = UnresolvedLibrary(dep["name"], dep["version"])
+ if Environment.hasLibrary(library):
+ pkg.resolved = True
newDeps.add(pkg)
@@ -601,7 +617,7 @@
try:
pkg = self._resolveProgram(dep["name"])
except ProgramNotFoundError, e:
- pkg = UnresolvedProgram(dep["name"])
+ pkg = Program(dep["name"], None, False)
newDeps.add(pkg)
Added: installit/trunk/data/pixmaps/i2t-large.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/i2t-large.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/pixmaps/i2t-old.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/i2t-old.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/pixmaps/i2t.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/i2t.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/pixmaps/i2t.svg
===================================================================
--- installit/trunk/data/pixmaps/i2t.svg (rev 0)
+++ installit/trunk/data/pixmaps/i2t.svg 2006-09-03 16:38:19 UTC (rev 23064)
@@ -0,0 +1,927 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="600pt"
+ height="600pt"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ sodipodi:docbase="/home/jannis/devel/xfce/installit/branches/experimental/ui/pixmaps"
+ sodipodi:docname="i2t.svg"
+ inkscape:export-filename="/home/jannis/devel/xfce/installit/branches/experimental/ui/pixmaps/i2t-selfmade.png"
+ inkscape:export-xdpi="96.07"
+ inkscape:export-ydpi="96.07"
+ version="1.0">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient25224">
+ <stop
+ id="stop25226"
+ offset="0"
+ style="stop-color:#fffbff;stop-opacity:0;" />
+ <stop
+ id="stop25228"
+ offset="1"
+ style="stop-color:#fffbff;stop-opacity:0.36548224;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient22589">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.49746192;"
+ offset="0"
+ id="stop22591" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop22593" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15418">
+ <stop
+ id="stop15420"
+ offset="0"
+ style="stop-color:#1796ff;stop-opacity:1;" />
+ <stop
+ id="stop15422"
+ offset="1"
+ style="stop-color:#c8c8ff;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient12793">
+ <stop
+ id="stop12795"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:0.49746192;" />
+ <stop
+ id="stop12797"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11900">
+ <stop
+ style="stop-color:#1796ff;stop-opacity:1;"
+ offset="0"
+ id="stop11902" />
+ <stop
+ style="stop-color:#dcdcff;stop-opacity:1;"
+ offset="1"
+ id="stop11904" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11900"
+ id="linearGradient19964"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.97618,0,0,0.942681,-171.919,45.70037)"
+ x1="381.11731"
+ y1="473.29172"
+ x2="349.48495"
+ y2="454.65271" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient12793"
+ id="linearGradient19966"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.998623,0,0,0.980266,-180.3311,27.67028)"
+ x1="358.35162"
+ y1="492.15802"
+ x2="353.04834"
+ y2="484.18497" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient25224"
+ id="linearGradient25222"
+ x1="178.66624"
+ y1="489.97043"
+ x2="211.86824"
+ y2="489.97043"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-8.029081,-4.713411e-2)" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4142136"
+ inkscape:cx="313.934"
+ inkscape:cy="428.62305"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1015"
+ inkscape:window-height="674"
+ inkscape:window-x="0"
+ inkscape:window-y="30"
+ gridspacingx="0.01px"
+ gridspacingy="0.01px"
+ gridtolerance="0.01px"
+ guidetolerance="0.01px"
+ showgrid="false" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <g
+ id="g19903"
+ transform="matrix(12.74469,0,0,13.19758,-2111.912,-6098.982)">
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ d="M 215.51854,498.73952 L 215.51955,474.59873 C 215.51955,473.3565 214.43097,472.31751 213.12948,472.31751 L 177.15588,472.31751 C 175.85439,472.31751 174.79646,473.35649 174.79646,474.59873 L 175.06552,499.02442 L 166.59961,508.69649 L 223.66826,508.69649 L 215.51854,498.73952 z "
+ style="fill:#f0f0f0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.43700004;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect2223" />
+ <rect
+ ry="1.0224533"
+ rx="0.99228549"
+ y="474.84753"
+ x="177.79449"
+ height="21.677744"
+ width="34.850262"
+ id="rect6626"
+ style="opacity:1;fill:url(#linearGradient19964);fill-opacity:1;stroke:#000000;stroke-width:0.38553003;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient25222);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 178.72172,496.19853 C 189.79115,496.16289 205.63352,496.10853 211.64631,496.19889 C 190.02885,490.88409 186.58456,472.60708 178.72172,496.19853 z "
+ id="path21714"
+ sodipodi:nodetypes="ccc" />
+ <path
+ sodipodi:nodetypes="czzcsc"
+ id="path11910"
+ d="M 178.31268,495.96242 L 210.76487,496.20474 C 212.28548,496.21609 212.36196,496.35136 212.36196,494.77588 L 212.36195,476.19646 C 212.36195,476.19646 211.50167,483.71625 195.5827,484.13098 C 187.13285,484.3528 186.582,491.68116 178.31268,495.96242 z "
+ style="fill:url(#linearGradient19966);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <rect
+ y="500.29074"
+ x="179.67856"
+ height="1"
+ width="1"
+ id="rect18043"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18918"
+ width="1"
+ height="1"
+ x="181.67856"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="183.67856"
+ height="1"
+ width="1"
+ id="rect18920"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18922"
+ width="1"
+ height="1"
+ x="185.67856"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="187.67856"
+ height="1"
+ width="1"
+ id="rect18924"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18926"
+ width="1"
+ height="1"
+ x="189.67856"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="191.67856"
+ height="1"
+ width="1"
+ id="rect18928"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18930"
+ width="1"
+ height="1"
+ x="193.67856"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="195.67856"
+ height="1"
+ width="1"
+ id="rect18932"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18934"
+ width="1"
+ height="1"
+ x="197.67856"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="199.67856"
+ height="1"
+ width="1"
+ id="rect18936"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18938"
+ width="1"
+ height="1"
+ x="201.67856"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="203.67856"
+ height="1"
+ width="1"
+ id="rect18940"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18942"
+ width="1"
+ height="1"
+ x="205.67856"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="207.67856"
+ height="1"
+ width="1"
+ id="rect18944"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18946"
+ width="1"
+ height="1"
+ x="209.67856"
+ y="500.29074" />
+ <rect
+ y="502.29074"
+ x="211.67856"
+ height="1"
+ width="1"
+ id="rect18948"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18950"
+ width="1"
+ height="1"
+ x="209.67856"
+ y="502.29074" />
+ <rect
+ y="502.29074"
+ x="207.67856"
+ height="1"
+ width="1"
+ id="rect18952"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18954"
+ width="1"
+ height="1"
+ x="205.67856"
+ y="502.29074" />
+ <rect
+ y="502.29074"
+ x="203.67856"
+ height="1"
+ width="1"
+ id="rect18956"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18958"
+ width="1"
+ height="1"
+ x="201.67856"
+ y="502.29074" />
+ <rect
+ y="502.29074"
+ x="199.67856"
+ height="1"
+ width="1"
+ id="rect18960"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18962"
+ width="1"
+ height="1"
+ x="197.67856"
+ y="502.29074" />
+ <rect
+ y="502.29074"
+ x="195.67856"
+ height="1"
+ width="1"
+ id="rect18964"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18966"
+ width="1"
+ height="1"
+ x="193.67856"
+ y="502.29074" />
+ <rect
+ y="502.29074"
+ x="191.67856"
+ height="1"
+ width="1"
+ id="rect18968"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18970"
+ width="1"
+ height="1"
+ x="189.67856"
+ y="502.29074" />
+ <rect
+ y="502.29074"
+ x="187.67856"
+ height="1"
+ width="1"
+ id="rect18972"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18974"
+ width="1"
+ height="1"
+ x="185.67856"
+ y="502.29074" />
+ <rect
+ y="502.29074"
+ x="183.67856"
+ height="1"
+ width="1"
+ id="rect18976"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18978"
+ width="1"
+ height="1"
+ x="181.67856"
+ y="502.29074" />
+ <rect
+ y="502.29074"
+ x="179.67856"
+ height="1"
+ width="1"
+ id="rect18980"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18982"
+ width="1"
+ height="1"
+ x="177.67856"
+ y="502.29074" />
+ <rect
+ y="504.29074"
+ x="175.67856"
+ height="1"
+ width="1"
+ id="rect18984"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18986"
+ width="1"
+ height="1"
+ x="177.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="179.67856"
+ height="1"
+ width="1"
+ id="rect18988"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18990"
+ width="1"
+ height="1"
+ x="181.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="183.67856"
+ height="1"
+ width="1"
+ id="rect18992"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18994"
+ width="1"
+ height="1"
+ x="185.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="187.67856"
+ height="1"
+ width="1"
+ id="rect18996"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect18998"
+ width="1"
+ height="1"
+ x="189.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="191.67856"
+ height="1"
+ width="1"
+ id="rect19000"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect19002"
+ width="1"
+ height="1"
+ x="193.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="195.67856"
+ height="1"
+ width="1"
+ id="rect19004"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect19006"
+ width="1"
+ height="1"
+ x="197.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="199.67856"
+ height="1"
+ width="1"
+ id="rect19008"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect19010"
+ width="1"
+ height="1"
+ x="201.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="203.67856"
+ height="1"
+ width="1"
+ id="rect19012"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect19014"
+ width="1"
+ height="1"
+ x="205.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="205.67856"
+ height="1"
+ width="1"
+ id="rect19016"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect19018"
+ width="1"
+ height="1"
+ x="207.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="209.67856"
+ height="1"
+ width="1"
+ id="rect19020"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect19022"
+ width="1"
+ height="1"
+ x="209.67856"
+ y="504.29074" />
+ <rect
+ y="504.29074"
+ x="211.67856"
+ height="1"
+ width="1"
+ id="rect19024"
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#505050;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect19026"
+ width="1"
+ height="1"
+ x="213.67856"
+ y="504.29074" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect25230"
+ width="1.0217898"
+ height="1"
+ x="180.67451"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="182.6577"
+ height="1"
+ width="1.0217898"
+ id="rect26109"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26111"
+ width="1.0217898"
+ height="1"
+ x="184.66399"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="188.66116"
+ height="1"
+ width="1.0217898"
+ id="rect26113"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26115"
+ width="1.0217898"
+ height="1"
+ x="190.65974"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="192.65833"
+ height="1"
+ width="1.0680128"
+ id="rect26117"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26119"
+ width="1.0217898"
+ height="1"
+ x="192.65833"
+ y="502.28772" />
+ <rect
+ y="502.28772"
+ x="194.65691"
+ height="1"
+ width="1.0217898"
+ id="rect26121"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26123"
+ width="1.0217898"
+ height="1"
+ x="196.65549"
+ y="502.28772" />
+ <rect
+ y="500.29074"
+ x="196.65549"
+ height="1"
+ width="1.0217898"
+ id="rect26125"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26127"
+ width="1.0217898"
+ height="1"
+ x="198.66177"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="200.66035"
+ height="1"
+ width="1.0217898"
+ id="rect26129"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26131"
+ width="1.0217898"
+ height="1"
+ x="202.65123"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="204.65752"
+ height="1"
+ width="1.0217898"
+ id="rect26133"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26135"
+ width="1.0217898"
+ height="1"
+ x="206.67921"
+ y="500.29074" />
+ <rect
+ y="500.29074"
+ x="208.6624"
+ height="1"
+ width="1.0217898"
+ id="rect26137"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26139"
+ width="1.0217898"
+ height="1"
+ x="194.65691"
+ y="500.29074" />
+ <rect
+ y="502.28772"
+ x="190.67178"
+ height="1"
+ width="1.0217898"
+ id="rect26141"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26143"
+ width="1.0217898"
+ height="1"
+ x="188.65594"
+ y="502.28772" />
+ <rect
+ y="502.28772"
+ x="186.65475"
+ height="1"
+ width="1.0217898"
+ id="rect26145"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26147"
+ width="1.0217898"
+ height="1"
+ x="184.66333"
+ y="502.29242" />
+ <rect
+ y="502.29242"
+ x="182.66702"
+ height="1"
+ width="1.0217898"
+ id="rect26149"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26151"
+ width="1.0217898"
+ height="1"
+ x="180.65607"
+ y="502.29242" />
+ <rect
+ y="502.29242"
+ x="178.67441"
+ height="1"
+ width="1.0217898"
+ id="rect26153"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26155"
+ width="1.0217898"
+ height="1"
+ x="178.65976"
+ y="504.29059" />
+ <rect
+ y="504.29059"
+ x="176.65857"
+ height="1"
+ width="1.0217898"
+ id="rect26157"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26159"
+ width="1.0217898"
+ height="1"
+ x="180.66095"
+ y="504.29059" />
+ <rect
+ y="504.29059"
+ x="182.66702"
+ height="1"
+ width="1.0217898"
+ id="rect26161"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26163"
+ width="1.0217898"
+ height="1"
+ x="184.65356"
+ y="504.29059" />
+ <rect
+ y="504.29059"
+ x="186.66452"
+ height="1"
+ width="1.0217898"
+ id="rect26165"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26167"
+ width="1.0217898"
+ height="1"
+ x="188.67059"
+ y="504.29059" />
+ <rect
+ y="504.29059"
+ x="190.67178"
+ height="1"
+ width="1.0217898"
+ id="rect26169"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26171"
+ width="1.0217898"
+ height="1"
+ x="192.65833"
+ y="504.29059" />
+ <rect
+ y="504.29059"
+ x="194.65952"
+ height="1"
+ width="1.0217898"
+ id="rect26173"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26175"
+ width="1.0217898"
+ height="1"
+ x="196.66063"
+ y="504.29095" />
+ <rect
+ y="504.29059"
+ x="198.6619"
+ height="1"
+ width="1.0217898"
+ id="rect26177"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26179"
+ width="1.0217898"
+ height="1"
+ x="200.6582"
+ y="504.29059" />
+ <rect
+ y="504.29059"
+ x="202.65939"
+ height="1"
+ width="1.0217898"
+ id="rect26181"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26183"
+ width="1.0217898"
+ height="1"
+ x="202.67404"
+ y="502.29242" />
+ <rect
+ y="502.29242"
+ x="200.66797"
+ height="1"
+ width="1.0217898"
+ id="rect26185"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26187"
+ width="1.0217898"
+ height="1"
+ x="198.67157"
+ y="502.28772" />
+ <rect
+ y="502.29242"
+ x="204.66058"
+ height="1"
+ width="1.0217898"
+ id="rect26189"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26191"
+ width="1.0217898"
+ height="1"
+ x="206.67154"
+ y="502.29242" />
+ <rect
+ y="502.28772"
+ x="208.66785"
+ height="1"
+ width="1.0217898"
+ id="rect26193"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26195"
+ width="1.0217898"
+ height="1"
+ x="210.66904"
+ y="502.29242" />
+ <rect
+ y="504.29059"
+ x="210.65927"
+ height="1"
+ width="1.0217898"
+ id="rect26197"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26199"
+ width="1.0217898"
+ height="1"
+ x="212.66534"
+ y="504.29059" />
+ <rect
+ y="504.29059"
+ x="208.66785"
+ height="1"
+ width="1.0217898"
+ id="rect26201"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect26203"
+ width="1.0217898"
+ height="1"
+ x="206.66177"
+ y="504.29059" />
+ <rect
+ y="504.29059"
+ x="204.66058"
+ height="1"
+ width="1.0217898"
+ id="rect26205"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="500.29074"
+ x="186.65617"
+ height="1"
+ width="1.0217898"
+ id="rect26207"
+ style="opacity:1;fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
Added: installit/trunk/data/pixmaps/initial.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/initial.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/pixmaps/package-available.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/package-available.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/pixmaps/package-install.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/package-install.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/pixmaps/package-installed.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/package-installed.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/pixmaps/package-reinstall.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/package-reinstall.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/pixmaps/package-remove.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/package-remove.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/pixmaps/system-software-update.png
===================================================================
(Binary files differ)
Property changes on: installit/trunk/data/pixmaps/system-software-update.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: installit/trunk/data/ui/main-window.ui
===================================================================
--- installit/trunk/data/ui/main-window.ui (rev 0)
+++ installit/trunk/data/ui/main-window.ui 2006-09-03 16:38:19 UTC (rev 23064)
@@ -0,0 +1,67 @@
+<!--
+
+ $Id: main-window.ui 20466 2006-03-17 13:55:50Z jannis $
+
+ vi:set ts=4 sw=4 sts=4 et ai nocindent:
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ MA 02111-1307 USA
+
+-->
+<ui>
+ <menubar name="main-menu">
+ <menu action="file-menu">
+ <menuitem action="quit" />
+ </menu>
+ <menu action="edit-menu">
+ <menuitem action="preferences" />
+ </menu>
+ <menu action="actions-menu">
+ <menuitem action="install-package" />
+ <menuitem action="remove-package" />
+ <menuitem action="revert-package" />
+ <menuitem action="revert-all" />
+ <separator />
+ <menuitem action="apply-changes" />
+ <separator />
+ <menuitem action="select-mirror" />
+ <menuitem action="update-packages" />
+ </menu>
+ <menu action="view-menu">
+ <menuitem action="view-toolbar" />
+ </menu>
+ <menu action="help-menu">
+ <menuitem action="help" />
+ <menuitem action="about" />
+ </menu>
+ </menubar>
+ <toolbar name="main-toolbar">
+ <toolitem action="install-package" />
+ <toolitem action="remove-package" />
+ <toolitem action="revert-package" />
+ <separator />
+ <toolitem action="apply-changes" />
+ <separator />
+ <toolitem action="update-packages" />
+ </toolbar>
+ <popup name="package-context-menu">
+ <menuitem action="install-package" />
+ <menuitem action="remove-package" />
+ <menuitem action="revert-package" />
+ <menuitem action="revert-all" />
+ <separator />
+ <menuitem action="apply-changes" />
+ </popup>
+</ui>
Modified: installit/trunk/i18n/__init__.py
===================================================================
--- installit/trunk/i18n/__init__.py 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/i18n/__init__.py 2006-09-03 16:38:19 UTC (rev 23064)
@@ -22,6 +22,8 @@
import locale
from gettext import translation, NullTranslations
+from tools.lookup import Lookup
+
locale.setlocale(locale.LC_ALL, "")
_translation = None
@@ -31,7 +33,7 @@
if not _translation:
try:
- _translation = translation("i2t", path.join("i18n", "locale"))
+ _translation = translation("i2t", Lookup.locale())
except IOError:
_translation = NullTranslations()
Modified: installit/trunk/i18n/po/POTFILES.in
===================================================================
--- installit/trunk/i18n/po/POTFILES.in 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/i18n/po/POTFILES.in 2006-09-03 16:38:19 UTC (rev 23064)
@@ -1,3 +1,4 @@
+..//setup.py
..//backends/Source.py
..//backends/DPKG.py
..//components/backends.py
@@ -4,6 +5,7 @@
..//components/packages.py
..//components/config.py
..//components/mirrors.py
+..//ui/tasks.py
..//ui/main.py
..//ui/initial.py
..//ui/categories.py
@@ -11,8 +13,6 @@
..//ui/download.py
..//ui/packages.py
..//ui/extensions.py
-..//ui/tasks.py
-..//setup.py
..//standards/xdg.py
..//tools/download.py
..//tools/logger.py
@@ -21,3 +21,4 @@
..//tools/shell.py
..//tools/env.py
..//tools/pkgconfig.py
+..//tools/lookup.py
Modified: installit/trunk/i18n/po/de.po
===================================================================
--- installit/trunk/i18n/po/de.po 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/i18n/po/de.po 2006-09-03 16:38:19 UTC (rev 23064)
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: InstallIt 0.1beta1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-07-12 00:04+0200\n"
-"PO-Revision-Date: 2006-07-12 00:07+0100\n"
+"POT-Creation-Date: 2006-09-03 18:33+0200\n"
+"PO-Revision-Date: 2006-09-03 18:35+0100\n"
"Last-Translator: Jannis Pohlmann <jannis at xfce.org>\n"
"Language-Team: German <de at li.org>\n"
"MIME-Version: 1.0\n"
@@ -18,476 +18,589 @@
"X-Poedit-Country: GERMANY\n"
"X-Poedit-SourceCharset: utf-8\n"
-#: ../..//backends/Source.py:209
+#: ../..//setup.py:42
+msgid "You need at least PyGTK 2.6 to run InstallIt (i2t)"
+msgstr "Sie benötigen mindestens PyGTK 2.6 um InstallIt (i2t) nutzen zu können."
+
+#: ../..//setup.py:52
+msgid "The program 'libtool' could not been found in $PATH."
+msgstr "Das Programm 'libtool' konnte nicht in $PATH gefunden werden."
+
+#: ../..//setup.py:67
+msgid "Graphical source-based package manager and installer"
+msgstr "Grafisches, quellenbasiertes Paketverwaltungs- und Installationsprogramm"
+
+#: ../..//setup.py:68
+msgid "InstallIt (i2t) is a source-based package management solution"
+msgstr "InstallIt (i2t) ist eine quellenbasierte Paketverwaltungslösung"
+
+#: ../..//backends/Source.py:213
+#: ../..//build/lib/i2t/backends/Source.py:213
msgid "Removing Previous Installation"
msgstr "Entferne aktuelle Installation"
-#: ../..//backends/Source.py:333
+#: ../..//backends/Source.py:337
+#: ../..//build/lib/i2t/backends/Source.py:337
#, python-format
msgid "Select installation prefix for %s"
msgstr "Wähle Zielverzeichnis für %s"
-#: ../..//backends/Source.py:341
+#: ../..//backends/Source.py:345
+#: ../..//build/lib/i2t/backends/Source.py:345
#, python-format
-msgid ""
-"Please specify the installation prefix <b>%(name)s</b> should be installed "
-"to. You need write permissions for this directory."
-msgstr ""
-"Bitte geben Sie das Zielverzeichnis an, in das <b>%(name)s</b> installiert "
-"werden soll. Sie benötigen für dieses Verzeichnis Schreibrechte."
+msgid "Please specify the installation prefix <b>%(name)s</b> should be installed to. You need write permissions for this directory."
+msgstr "Bitte geben Sie das Zielverzeichnis an, in das <b>%(name)s</b> installiert werden soll. Sie benötigen für dieses Verzeichnis Schreibrechte."
#. File chooser dialog
-#: ../..//backends/Source.py:351 ../..//ui/main.py:82
+#: ../..//backends/Source.py:355
+#: ../..//ui/main.py:82
+#: ../..//build/lib/i2t/backends/Source.py:355
+#: ../..//build/lib/i2t/ui/main.py:82
msgid "Installation Prefix"
msgstr "Zielverzeichnis"
-#: ../..//backends/Source.py:378 ../..//ui/initial.py:306
+#: ../..//backends/Source.py:382
+#: ../..//ui/initial.py:307
+#: ../..//build/lib/i2t/backends/Source.py:382
+#: ../..//build/lib/i2t/ui/initial.py:307
#, python-format
msgid "Directory %s is not writable."
msgstr "Verzeichnis %s ist schreibgeschützt."
-#: ../..//backends/Source.py:390
+#: ../..//backends/Source.py:394
+#: ../..//build/lib/i2t/backends/Source.py:394
#, python-format
msgid "Select %(package)s features"
msgstr "Wähle Features für %(package)s"
-#: ../..//backends/Source.py:434
+#: ../..//backends/Source.py:438
+#: ../..//build/lib/i2t/backends/Source.py:438
#, python-format
msgid "Extracting %s"
msgstr "Entpacke %s"
-#: ../..//backends/Source.py:554
+#: ../..//backends/Source.py:558
+#: ../..//build/lib/i2t/backends/Source.py:558
#, python-format
msgid "Preparing %s"
msgstr "Bereite %s vor"
-#: ../..//backends/Source.py:630
+#: ../..//backends/Source.py:634
+#: ../..//build/lib/i2t/backends/Source.py:634
#, python-format
msgid "Could not configure %s."
msgstr "Konnte %s nicht konfigurieren"
-#: ../..//backends/Source.py:644
+#: ../..//backends/Source.py:648
+#: ../..//build/lib/i2t/backends/Source.py:648
#, python-format
+msgid "System Requirements for %s"
+msgstr "Systemvoraussetzungen für %s"
+
+#. Create a file chooser dialog for manually resolving dependencies
+#: ../..//backends/Source.py:657
+#: ../..//build/lib/i2t/backends/Source.py:657
+msgid "Choose Folder"
+msgstr "Wähle Verzeichnis aus"
+
+#. Add description label
+#: ../..//backends/Source.py:692
+#: ../..//build/lib/i2t/backends/Source.py:692
+msgid "The following programs are required:"
+msgstr "Die folgenden Programme werden benötigt:"
+
+#: ../..//backends/Source.py:736
+#: ../..//backends/Source.py:795
+#: ../..//build/lib/i2t/backends/Source.py:736
+#: ../..//build/lib/i2t/backends/Source.py:795
+msgid "Locate manually..."
+msgstr "Manuell auflösen..."
+
+#. Add description label
+#: ../..//backends/Source.py:751
+#: ../..//build/lib/i2t/backends/Source.py:751
+msgid "The following libraries are required:"
+msgstr "Die folgenden Bibliotheken werden benötigt:"
+
+#: ../..//backends/Source.py:879
+#: ../..//build/lib/i2t/backends/Source.py:879
+#, python-format
msgid "Compiling %s"
msgstr "Übersetze %s"
-#: ../..//backends/Source.py:721
+#: ../..//backends/Source.py:956
+#: ../..//build/lib/i2t/backends/Source.py:956
#, python-format
msgid "Could not build %s."
msgstr "Konnte %s nicht übersetzen."
-#: ../..//backends/Source.py:746
+#: ../..//backends/Source.py:981
+#: ../..//build/lib/i2t/backends/Source.py:981
#, python-format
msgid "Tracking files of %s"
msgstr "Bestimme installierte Dateien von %s"
-#: ../..//backends/Source.py:825
+#: ../..//backends/Source.py:1060
+#: ../..//build/lib/i2t/backends/Source.py:1060
msgid "Could not track files to be installed."
msgstr "Konnte Zusammenfassung der zu installierenden Dateien nicht erstellen."
-#: ../..//backends/Source.py:849
+#: ../..//backends/Source.py:1084
+#: ../..//build/lib/i2t/backends/Source.py:1084
#, python-format
msgid "Installing %s"
msgstr "Installiere %s"
-#: ../..//backends/Source.py:931
+#: ../..//backends/Source.py:1166
+#: ../..//build/lib/i2t/backends/Source.py:1166
#, python-format
msgid "Could not install %s."
msgstr "Konnte %s nicht installieren."
-#: ../..//backends/Source.py:1021
+#: ../..//backends/Source.py:1256
+#: ../..//build/lib/i2t/backends/Source.py:1256
#, python-format
msgid "Removing %s"
msgstr "Entferne %s"
-#: ../..//backends/Source.py:1115
+#: ../..//backends/Source.py:1350
+#: ../..//build/lib/i2t/backends/Source.py:1350
#, python-format
msgid "Removing file %s"
msgstr "Entferne Datei %s"
-#: ../..//backends/Source.py:1117
+#: ../..//backends/Source.py:1352
+#: ../..//build/lib/i2t/backends/Source.py:1352
#, python-format
msgid "Removing directory %s"
msgstr "Entferne Verzeichnis %s"
#. Title
#: ../..//backends/DPKG.py:61
+#: ../..//build/lib/i2t/backends/DPKG.py:61
#, python-format
msgid "Installing %(name)s %(version)s ..."
msgstr "Installiere %(name)s %(version)s ..."
-#: ../..//components/packages.py:350
+#: ../..//components/packages.py:405
+#: ../..//build/lib/i2t/components/packages.py:405
#, python-format
msgid "Could not parse package description %s: %s"
msgstr "Konnte Paketbeschreibung %s nicht lesen: %s"
#: ../..//components/config.py:267
+#: ../..//build/lib/i2t/components/config.py:267
msgid "Skipping global config."
msgstr "Überspringe globale Konfiguration."
#: ../..//components/config.py:276
+#: ../..//build/lib/i2t/components/config.py:276
msgid "Skipping user config."
msgstr "Überspringe Benutzerkonfiguration."
+#. Create dialog
+#: ../..//ui/tasks.py:204
+#: ../..//build/lib/i2t/ui/tasks.py:204
+msgid "Updating the mirror list"
+msgstr "Aktualisiere die Mirror-Liste"
+
+#: ../..//ui/tasks.py:226
+#: ../..//build/lib/i2t/ui/tasks.py:226
+#, python-format
+msgid "Could not fetch mirror list from %s."
+msgstr "Konnte Mirror-Liste nicht von %s holen."
+
+#. Create input dialog
+#: ../..//ui/tasks.py:270
+#: ../..//build/lib/i2t/ui/tasks.py:270
+msgid "Select Mirror"
+msgstr "Mirror auswählen"
+
+#. Create download wizard
+#: ../..//ui/tasks.py:393
+#: ../..//build/lib/i2t/ui/tasks.py:393
+msgid "Updating the package list"
+msgstr "Aktualisiere die Paketliste"
+
+#. Create and run download wizard
+#: ../..//ui/tasks.py:423
+#: ../..//build/lib/i2t/ui/tasks.py:423
+msgid "Updating Packages"
+msgstr "Aktualisiere Pakete"
+
+#: ../..//ui/tasks.py:429
+#: ../..//ui/main.py:484
+#: ../..//build/lib/i2t/ui/main.py:484
+#: ../..//build/lib/i2t/ui/tasks.py:429
+#, python-format
+msgid "Could not fetch package from %s."
+msgstr "Konnte Paket nicht von %s holen."
+
+#: ../..//ui/tasks.py:445
+#: ../..//build/lib/i2t/ui/tasks.py:445
+#, python-format
+msgid "Could not fetch package list from %s."
+msgstr "Konnte Paketliste nicht von %s holen."
+
+#: ../..//ui/tasks.py:449
+#: ../..//build/lib/i2t/ui/tasks.py:449
+#, python-format
+msgid "Could not fetch package %s from %s."
+msgstr "Konnte Paket %s nicht von %s herunterladen."
+
#: ../..//ui/main.py:59
+#: ../..//build/lib/i2t/ui/main.py:59
msgid "Translation by Jannis Pohlmann <jannis at xfce.org>"
msgstr "Übersetzung von Jannis Pohlmann <jannis at xfce.org>"
#: ../..//ui/main.py:66
+#: ../..//build/lib/i2t/ui/main.py:66
msgid "InstallIt Preferences"
msgstr "InstallIt Einstellungen"
#: ../..//ui/main.py:78
+#: ../..//build/lib/i2t/ui/main.py:78
msgid "Default installation prefix:"
msgstr "Standardzielverzeichnis:"
#: ../..//ui/main.py:114
+#: ../..//build/lib/i2t/ui/main.py:114
msgid "_File"
msgstr "_Datei"
#: ../..//ui/main.py:115
+#: ../..//build/lib/i2t/ui/main.py:115
msgid "_Quit"
msgstr "B_eenden"
#: ../..//ui/main.py:116
+#: ../..//build/lib/i2t/ui/main.py:116
msgid "Exit InstallIt"
msgstr "InstallIt beenden"
#: ../..//ui/main.py:121
+#: ../..//build/lib/i2t/ui/main.py:121
msgid "_Edit"
msgstr "B_earbeiten"
#: ../..//ui/main.py:122
+#: ../..//build/lib/i2t/ui/main.py:122
msgid "_Preferences"
msgstr "_Einstellungen"
#: ../..//ui/main.py:123
+#: ../..//build/lib/i2t/ui/main.py:123
msgid "Edit Preferences"
msgstr "Einstellungen bearbeiten"
#: ../..//ui/main.py:128
+#: ../..//build/lib/i2t/ui/main.py:128
msgid "_Actions"
msgstr "_Aktionen"
#: ../..//ui/main.py:129
+#: ../..//build/lib/i2t/ui/main.py:129
msgid "_Install Package(s)"
msgstr "Paket(e) _installieren"
#: ../..//ui/main.py:130
+#: ../..//build/lib/i2t/ui/main.py:130
msgid "Mark the selected package(s) for installation."
msgstr "Die ausgewählten Pakete für die Installation vormerken."
#: ../..//ui/main.py:132
+#: ../..//build/lib/i2t/ui/main.py:132
msgid "R_emove Package(s)"
msgstr "Paket(e) _entfernen"
#: ../..//ui/main.py:133
+#: ../..//build/lib/i2t/ui/main.py:133
msgid "Mark the selected package(s) for being removed."
msgstr "Die ausgewählten Pakete für die Deinstallation vormerken."
#: ../..//ui/main.py:135
+#: ../..//build/lib/i2t/ui/main.py:135
msgid "_Revert Package(s) Changes"
msgstr "Paketänderungen _rückgängig machen"
#: ../..//ui/main.py:136
+#: ../..//build/lib/i2t/ui/main.py:136
msgid "Revert changes made to the selected package(s)."
msgstr "Änderungen der ausgewählten Pakete rückgängig machen."
#: ../..//ui/main.py:138
+#: ../..//build/lib/i2t/ui/main.py:138
msgid "Revert all _Changes"
msgstr "Änderungen _rückgängig machen"
#: ../..//ui/main.py:139
+#: ../..//build/lib/i2t/ui/main.py:139
msgid "Revert all Changes."
msgstr "Alle Änderungen rückgängig machen."
#: ../..//ui/main.py:141
+#: ../..//build/lib/i2t/ui/main.py:141
msgid "_Apply Changes"
msgstr "_Änderungen durchführen"
#: ../..//ui/main.py:142
+#: ../..//build/lib/i2t/ui/main.py:142
msgid "Perform package installations/removals/updates."
-msgstr ""
-"Die gewünschten Installationen/Deinstallationen und Aktualisierungen "
-"durchführen."
+msgstr "Die gewünschten Installationen/Deinstallationen und Aktualisierungen durchführen."
#: ../..//ui/main.py:144
+#: ../..//build/lib/i2t/ui/main.py:144
msgid "Select _Mirror"
msgstr "Mirror auswählen"
#: ../..//ui/main.py:146
+#: ../..//build/lib/i2t/ui/main.py:146
msgid "Update _Packages"
msgstr "_Pakete aktualisieren"
#: ../..//ui/main.py:147
+#: ../..//build/lib/i2t/ui/main.py:147
msgid "Update package list from the mirror."
msgstr "Paketliste aus dem Internet aktualisieren"
#: ../..//ui/main.py:166
+#: ../..//build/lib/i2t/ui/main.py:166
msgid "_View"
msgstr "An_sicht"
#: ../..//ui/main.py:171
+#: ../..//build/lib/i2t/ui/main.py:171
msgid "Show _Toolbar"
msgstr "Werkzeugleis_te anzeigen"
#: ../..//ui/main.py:172
+#: ../..//build/lib/i2t/ui/main.py:172
msgid "Toggle toolbar visibility."
msgstr "Werkzeugleiste an-/ausschalten."
#: ../..//ui/main.py:177
+#: ../..//build/lib/i2t/ui/main.py:177
msgid "_Help"
msgstr "_Hilfe"
#: ../..//ui/main.py:180
+#: ../..//build/lib/i2t/ui/main.py:180
msgid "_About InstallIt (i2t)"
msgstr "Über _InstallIt (i2t)"
#. Display additional packages dialog
-#: ../..//ui/main.py:401
-msgid ""
-"The following additional packages have to be installed. Do you want to "
-"continue?"
-msgstr ""
-"Die folgenden, zusätzlichen Pakete müssen installiert werden. Wollen Sie "
-"fortfahren?"
+#: ../..//ui/main.py:400
+#: ../..//build/lib/i2t/ui/main.py:400
+msgid "The following additional packages have to be installed. Do you want to continue?"
+msgstr "Die folgenden, zusätzlichen Pakete müssen installiert werden. Wollen Sie fortfahren?"
-#: ../..//ui/main.py:417
+#: ../..//ui/main.py:416
+#: ../..//build/lib/i2t/ui/main.py:416
msgid "No changes were made."
msgstr "Es wurden keine Änderungen vorgenommen."
#. Create download wizard
-#: ../..//ui/main.py:448
+#: ../..//ui/main.py:447
+#: ../..//build/lib/i2t/ui/main.py:447
msgid "Downloading packages"
msgstr "Lade Pakete herunter"
-#: ../..//ui/main.py:485 ../..//ui/tasks.py:428
-#, python-format
-msgid "Could not fetch package from %s."
-msgstr "Konnte Paket nicht von %s holen."
-
-#: ../..//ui/initial.py:40
+#: ../..//ui/initial.py:41
+#: ../..//build/lib/i2t/ui/initial.py:41
msgid "Initial Setup Wizard"
msgstr "Einleitende Konfiguration"
-#: ../..//ui/initial.py:112
-msgid ""
-"You have to configure InstallIt on first startup. Do you really want to "
-"abort?"
-msgstr ""
-"InstallIt muss vor dem ersten Start konfiguriert werden. Sind Sie sicher, "
-"dass sie abbrechen wollen?"
+#: ../..//ui/initial.py:113
+#: ../..//build/lib/i2t/ui/initial.py:113
+msgid "You have to configure InstallIt on first startup. Do you really want to abort?"
+msgstr "InstallIt muss vor dem ersten Start konfiguriert werden. Sind Sie sicher, dass sie abbrechen wollen?"
-#: ../..//ui/initial.py:135
+#: ../..//ui/initial.py:136
+#: ../..//build/lib/i2t/ui/initial.py:136
msgid "Please fill out this page correctly."
msgstr "Bitte füllen Sie diese Seite korrekt aus."
-#: ../..//ui/initial.py:216
+#: ../..//ui/initial.py:217
+#: ../..//build/lib/i2t/ui/initial.py:217
msgid "Welcome To InstallIt"
msgstr "Willkommen bei InstallIt"
#. Description
-#: ../..//ui/initial.py:219
+#: ../..//ui/initial.py:220
+#: ../..//build/lib/i2t/ui/initial.py:220
msgid ""
-"InstallIt uses a repository system and needs to store some data on your "
-"harddrive, like the mirror list, package information and temporary "
-"installation files.\n"
+"InstallIt uses a repository system and needs to store some data on your harddrive, like the mirror list, package information and temporary installation files.\n"
" \n"
"Please enter/select the directories you want InstallIt to use."
msgstr ""
-"InstallIt verwendet ein Paketsystem und muss Daten auf Ihrer Festplatte "
-"speichern, wie zum Beispiel die Mirror-Liste, Paketinformationen und "
-"temporäre Installationsdateien. \n"
+"InstallIt verwendet ein Paketsystem und muss Daten auf Ihrer Festplatte speichern, wie zum Beispiel die Mirror-Liste, Paketinformationen und temporäre Installationsdateien. \n"
"\n"
"Bitte geben sie die Verzeichnisse an, die InstallIt dafür nutzen soll."
-#: ../..//ui/initial.py:241
+#: ../..//ui/initial.py:242
+#: ../..//build/lib/i2t/ui/initial.py:242
msgid "<b>Data:</b>"
msgstr "<b>Daten:</b>"
-#: ../..//ui/initial.py:257
+#: ../..//ui/initial.py:258
+#: ../..//build/lib/i2t/ui/initial.py:258
msgid "<b>Temporary:</b>"
msgstr "<b>Temporär:</b>"
-#: ../..//ui/initial.py:303
+#: ../..//ui/initial.py:304
+#: ../..//build/lib/i2t/ui/initial.py:304
#, python-format
msgid "Could not create directory %s."
msgstr "Konnte Verzeichnis %s nicht erstellen."
-#: ../..//ui/initial.py:316
+#: ../..//ui/initial.py:317
+#: ../..//build/lib/i2t/ui/initial.py:317
msgid "Select Directory"
msgstr "Verzeichnis auswählen"
#. Name column
-#: ../..//ui/categories.py:94 ../..//ui/installation.py:107
-#: ../..//ui/packages.py:158
+#: ../..//ui/categories.py:94
+#: ../..//ui/installation.py:105
+#: ../..//ui/packages.py:159
+#: ../..//build/lib/i2t/ui/categories.py:94
+#: ../..//build/lib/i2t/ui/installation.py:105
+#: ../..//build/lib/i2t/ui/packages.py:159
msgid "Name"
msgstr "Name"
#. Packages column
#: ../..//ui/categories.py:101
+#: ../..//build/lib/i2t/ui/categories.py:101
msgid "Packages"
msgstr "Pakete"
-#: ../..//ui/installation.py:45
+#: ../..//ui/installation.py:44
+#: ../..//build/lib/i2t/ui/installation.py:44
#, python-format
msgid "Installation: %s"
msgstr "Installation: %s"
-#: ../..//ui/installation.py:75
+#: ../..//ui/installation.py:73
+#: ../..//build/lib/i2t/ui/installation.py:73
#, python-format
msgid "Deinstallation: %s"
msgstr "Deinstallation: %s"
-#: ../..//ui/installation.py:135
+#: ../..//ui/installation.py:133
+#: ../..//build/lib/i2t/ui/installation.py:133
#, python-format
msgid "%(name)s %(version)s"
msgstr "%(name)s %(version)s"
-#: ../..//ui/installation.py:151
+#: ../..//ui/installation.py:149
+#: ../..//build/lib/i2t/ui/installation.py:149
msgid "Installation Wizard"
msgstr "Installation"
-#: ../..//ui/installation.py:174 ../..//ui/installation.py:312
+#: ../..//ui/installation.py:173
+#: ../..//ui/installation.py:312
+#: ../..//build/lib/i2t/ui/installation.py:173
+#: ../..//build/lib/i2t/ui/installation.py:312
msgid "<b>Packages:</b>"
msgstr "<b>Pakete:</b>"
#. Display success message
-#: ../..//ui/installation.py:271
+#: ../..//ui/installation.py:270
+#: ../..//build/lib/i2t/ui/installation.py:270
msgid "All packages were installed successfully."
msgstr "Alle Pakete wurden erfolgreich installiert."
-#: ../..//ui/installation.py:289
+#: ../..//ui/installation.py:288
+#: ../..//build/lib/i2t/ui/installation.py:288
msgid "Deinstallation Wizard"
msgstr "Deinstallation"
#. Display success message
#: ../..//ui/installation.py:405
+#: ../..//build/lib/i2t/ui/installation.py:405
msgid "All packages were removed successfully."
msgstr "Alle Pakete wurden erfolgreich entfernt."
-#: ../..//ui/download.py:114 ../..//ui/download.py:115
+#: ../..//ui/download.py:114
+#: ../..//ui/download.py:115
+#: ../..//build/lib/i2t/ui/download.py:114
+#: ../..//build/lib/i2t/ui/download.py:115
msgid "Establishing connection..."
msgstr "Stelle Verbindung her..."
#. Log error
#: ../..//ui/download.py:138
+#: ../..//build/lib/i2t/ui/download.py:138
#, python-format
msgid "Could not download %s."
msgstr "Konnte %s nicht herunterladen."
#: ../..//ui/download.py:149
+#: ../..//build/lib/i2t/ui/download.py:149
#, python-format
msgid "Downloading %s"
msgstr "Lade %s herunter"
#: ../..//ui/download.py:180
+#: ../..//build/lib/i2t/ui/download.py:180
#, python-format
msgid "Total: %(percent)d%% [%(bytes)d/%(total)d kB]"
msgstr "Gesamt: %(percent)d%% [%(bytes)d/%(total)d kB]"
#: ../..//ui/download.py:194
+#: ../..//build/lib/i2t/ui/download.py:194
#, python-format
msgid "%(name)s: %(percent)d%% [%(bytes)d/%(total)d kB]"
msgstr "%(name)s: %(percent)d%% [%(bytes)d/%(total)d kB]"
#. State icon column
-#: ../..//ui/packages.py:151
+#: ../..//ui/packages.py:152
+#: ../..//build/lib/i2t/ui/packages.py:152
msgid "State"
msgstr "Status"
-#. Create dialog
-#: ../..//ui/tasks.py:203
-msgid "Updating the mirror list"
-msgstr "Aktualisiere die Mirror-Liste"
-
-#: ../..//ui/tasks.py:225
+#: ../..//build/lib/i2t/tools/env.py:94
+#: ../..//tools/env.py:94
#, python-format
-msgid "Could not fetch mirror list from %s."
-msgstr "Konnte Mirror-Liste nicht von %s holen."
-
-#. Create input dialog
-#: ../..//ui/tasks.py:269
-msgid "Select Mirror"
-msgstr "Mirror auswählen"
-
-#. Create download wizard
-#: ../..//ui/tasks.py:392
-msgid "Updating the package list"
-msgstr "Aktualisiere die Paketliste"
-
-#. Create and run download wizard
-#: ../..//ui/tasks.py:422
-msgid "Updating Packages"
-msgstr "Aktualisiere Pakete"
-
-#: ../..//ui/tasks.py:444
-#, python-format
-msgid "Could not fetch package list from %s."
-msgstr "Konnte Paketliste nicht von %s holen."
-
-#: ../..//ui/tasks.py:448
-#, python-format
-msgid "Could not fetch package %s from %s."
-msgstr "Konnte Paket %s nicht von %s herunterladen."
-
-#: ../..//setup.py:43
-msgid "You need at least PyGTK 2.6 to run InstallIt (i2t)"
-msgstr ""
-"Sie benötigen mindestens PyGTK 2.6 um InstallIt (i2t) nutzen zu können."
-
-#: ../..//setup.py:59
-msgid "Graphical source-based package manager and installer"
-msgstr ""
-"Grafisches, quellenbasiertes Paketverwaltungs- und Installationsprogramm"
-
-#: ../..//setup.py:61
-msgid "InstallIt (i2t) is a source-based package management solution"
-msgstr "InstallIt (i2t) ist eine quellenbasierte Paketverwaltungslösung"
-
-#: ../..//tools/env.py:92
-#, python-format
msgid "Compiling %s => %s."
msgstr "Übersetze %s => %s."
-#: ../..//tools/env.py:97
+#: ../..//build/lib/i2t/tools/env.py:99
+#: ../..//tools/env.py:99
#, python-format
msgid "Failed to compile %s."
msgstr "Konnte %s nicht übersetzen."
-#: ../..//tools/env.py:105
+#: ../..//build/lib/i2t/tools/env.py:112
+#: ../..//tools/env.py:112
#, python-format
msgid "Linking %s with %s"
msgstr "Verlinke %s mit %s"
-#: ../..//tools/env.py:111
+#: ../..//build/lib/i2t/tools/env.py:121
+#: ../..//tools/env.py:118
#, python-format
msgid "Failed to link %s."
msgstr "Konnte %s nicht verlinken."
-#: ../..//tools/pkgconfig.py:37
+#: ../..//build/lib/i2t/tools/pkgconfig.py:40
+#: ../..//tools/pkgconfig.py:40
#, python-format
msgid "pkg-config module missing: %(name)s (%(version)s)."
msgstr "pkg-config-Modul nicht gefunden: %(name)s %(version)s."
#~ msgid "Features"
#~ msgstr "Features"
-
#~ msgid "Configuration"
#~ msgstr "Konfiguration"
-
#~ msgid "Performing Test Installation"
#~ msgstr "Führe Testinstallation durch"
-
#~ msgid "Download Wizard"
#~ msgstr "Download"
-
#~ msgid "Moving %(file)s to %(dir)s"
#~ msgstr "Verschiebe %(file)s nach %(dir)s"
-
#~ msgid "All packages were successfully installed."
#~ msgstr "Alle Pakete wurden erfolgreich installiert."
-
#~ msgid "Select _mirror"
#~ msgstr "_Mirror auswählen"
@@ -508,20 +621,16 @@
#~ msgid_plural "Remove packages"
#~ msgstr[0] "Paket _entfernen"
#~ msgstr[1] "Paket _entfernen"
-
#~ msgid "Version"
#~ msgstr "Version"
-
#~ msgid "Backend"
#~ msgstr "Backend"
-
#~ msgid ""
#~ "GTK+ bindings for Python could not be found. Please install python-gtk or "
#~ "pygtk first."
#~ msgstr ""
#~ "GTK+-Bindungen für Python konnten nicht gefunden werden. Bitte "
#~ "installieren Sie zunächst python-gtk oder pygtk."
-
#~ msgid ""
#~ "This is your first start of InstallIt. In order to use it you will have "
#~ "to define working directories first. \n"
@@ -532,3 +641,4 @@
#~ "können, müssen vorab Arbeitsverzeichnisse festgelegt werden. \n"
#~ "Sie können alternativ dazu die vordefinierten Verzeichnisse nutzen. Diese "
#~ "sind für die meisten Benutzer ausreichend."
+
Modified: installit/trunk/i18n/po/i2t.pot
===================================================================
--- installit/trunk/i18n/po/i2t.pot 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/i18n/po/i2t.pot 2006-09-03 16:38:19 UTC (rev 23064)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-07-12 00:04+0200\n"
+"POT-Creation-Date: 2006-09-03 18:36+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -16,16 +16,32 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../..//backends/Source.py:209
+#: ../..//setup.py:42
+msgid "You need at least PyGTK 2.6 to run InstallIt (i2t)"
+msgstr ""
+
+#: ../..//setup.py:52
+msgid "The program 'libtool' could not been found in $PATH."
+msgstr ""
+
+#: ../..//setup.py:67
+msgid "Graphical source-based package manager and installer"
+msgstr ""
+
+#: ../..//setup.py:68
+msgid "InstallIt (i2t) is a source-based package management solution"
+msgstr ""
+
+#: ../..//backends/Source.py:213
msgid "Removing Previous Installation"
msgstr ""
-#: ../..//backends/Source.py:333
+#: ../..//backends/Source.py:337
#, python-format
msgid "Select installation prefix for %s"
msgstr ""
-#: ../..//backends/Source.py:341
+#: ../..//backends/Source.py:345
#, python-format
msgid ""
"Please specify the installation prefix <b>%(name)s</b> should be installed "
@@ -33,75 +49,99 @@
msgstr ""
#. File chooser dialog
-#: ../..//backends/Source.py:351 ../..//ui/main.py:82
+#: ../..//backends/Source.py:355 ../..//ui/main.py:82
msgid "Installation Prefix"
msgstr ""
-#: ../..//backends/Source.py:378 ../..//ui/initial.py:306
+#: ../..//backends/Source.py:382 ../..//ui/initial.py:307
#, python-format
msgid "Directory %s is not writable."
msgstr ""
-#: ../..//backends/Source.py:390
+#: ../..//backends/Source.py:394
#, python-format
msgid "Select %(package)s features"
msgstr ""
-#: ../..//backends/Source.py:434
+#: ../..//backends/Source.py:438
#, python-format
msgid "Extracting %s"
msgstr ""
-#: ../..//backends/Source.py:554
+#: ../..//backends/Source.py:558
#, python-format
msgid "Preparing %s"
msgstr ""
-#: ../..//backends/Source.py:630
+#: ../..//backends/Source.py:634
#, python-format
msgid "Could not configure %s."
msgstr ""
-#: ../..//backends/Source.py:644
+#: ../..//backends/Source.py:648
#, python-format
+msgid "System Requirements for %s"
+msgstr ""
+
+#. Create a file chooser dialog for manually resolving dependencies
+#: ../..//backends/Source.py:657
+msgid "Choose Folder"
+msgstr ""
+
+#. Add description label
+#: ../..//backends/Source.py:692
+msgid "The following programs are required:"
+msgstr ""
+
+#: ../..//backends/Source.py:736 ../..//backends/Source.py:795
+msgid "Locate manually..."
+msgstr ""
+
+#. Add description label
+#: ../..//backends/Source.py:751
+msgid "The following libraries are required:"
+msgstr ""
+
+#: ../..//backends/Source.py:879
+#, python-format
msgid "Compiling %s"
msgstr ""
-#: ../..//backends/Source.py:721
+#: ../..//backends/Source.py:956
#, python-format
msgid "Could not build %s."
msgstr ""
-#: ../..//backends/Source.py:746
+#: ../..//backends/Source.py:981
#, python-format
msgid "Tracking files of %s"
msgstr ""
-#: ../..//backends/Source.py:825
+#: ../..//backends/Source.py:1060
msgid "Could not track files to be installed."
msgstr ""
-#: ../..//backends/Source.py:849
+#: ../..//backends/Source.py:1084
#, python-format
msgid "Installing %s"
msgstr ""
-#: ../..//backends/Source.py:931
+#: ../..//backends/Source.py:1166
#, python-format
msgid "Could not install %s."
msgstr ""
-#: ../..//backends/Source.py:1021
+#: ../..//backends/Source.py:1256
#, python-format
msgid "Removing %s"
msgstr ""
-#: ../..//backends/Source.py:1115
+#: ../..//backends/Source.py:1350
#, python-format
msgid "Removing file %s"
msgstr ""
-#: ../..//backends/Source.py:1117
+#: ../..//backends/Source.py:1352
#, python-format
msgid "Removing directory %s"
msgstr ""
@@ -112,7 +152,7 @@
msgid "Installing %(name)s %(version)s ..."
msgstr ""
-#: ../..//components/packages.py:350
+#: ../..//components/packages.py:405
#, python-format
msgid "Could not parse package description %s: %s"
msgstr ""
@@ -125,6 +165,46 @@
msgid "Skipping user config."
msgstr ""
+#. Create dialog
+#: ../..//ui/tasks.py:204
+msgid "Updating the mirror list"
+msgstr ""
+
+#: ../..//ui/tasks.py:226
+#, python-format
+msgid "Could not fetch mirror list from %s."
+msgstr ""
+
+#. Create input dialog
+#: ../..//ui/tasks.py:270
+msgid "Select Mirror"
+msgstr ""
+
+#. Create download wizard
+#: ../..//ui/tasks.py:393
+msgid "Updating the package list"
+msgstr ""
+
+#. Create and run download wizard
+#: ../..//ui/tasks.py:423
+msgid "Updating Packages"
+msgstr ""
+
+#: ../..//ui/tasks.py:429 ../..//ui/main.py:484
+#, python-format
+msgid "Could not fetch package from %s."
+msgstr ""
+
+#: ../..//ui/tasks.py:445
+#, python-format
+msgid "Could not fetch package list from %s."
+msgstr ""
+
+#: ../..//ui/tasks.py:449
+#, python-format
+msgid "Could not fetch package %s from %s."
+msgstr ""
+
#: ../..//ui/main.py:59
msgid "Translation by Jannis Pohlmann <jannis at xfce.org>"
msgstr ""
@@ -238,46 +318,41 @@
msgstr ""
#. Display additional packages dialog
-#: ../..//ui/main.py:401
+#: ../..//ui/main.py:400
msgid ""
"The following additional packages have to be installed. Do you want to "
"continue?"
msgstr ""
-#: ../..//ui/main.py:417
+#: ../..//ui/main.py:416
msgid "No changes were made."
msgstr ""
#. Create download wizard
-#: ../..//ui/main.py:448
+#: ../..//ui/main.py:447
msgid "Downloading packages"
msgstr ""
-#: ../..//ui/main.py:485 ../..//ui/tasks.py:428
-#, python-format
-msgid "Could not fetch package from %s."
-msgstr ""
-
-#: ../..//ui/initial.py:40
+#: ../..//ui/initial.py:41
msgid "Initial Setup Wizard"
msgstr ""
-#: ../..//ui/initial.py:112
+#: ../..//ui/initial.py:113
msgid ""
"You have to configure InstallIt on first startup. Do you really want to "
"abort?"
msgstr ""
-#: ../..//ui/initial.py:135
+#: ../..//ui/initial.py:136
msgid "Please fill out this page correctly."
msgstr ""
-#: ../..//ui/initial.py:216
+#: ../..//ui/initial.py:217
msgid "Welcome To InstallIt"
msgstr ""
#. Description
-#: ../..//ui/initial.py:219
+#: ../..//ui/initial.py:220
msgid ""
"InstallIt uses a repository system and needs to store some data on your "
"harddrive, like the mirror list, package information and temporary "
@@ -286,26 +361,26 @@
"Please enter/select the directories you want InstallIt to use."
msgstr ""
-#: ../..//ui/initial.py:241
+#: ../..//ui/initial.py:242
msgid "<b>Data:</b>"
msgstr ""
-#: ../..//ui/initial.py:257
+#: ../..//ui/initial.py:258
msgid "<b>Temporary:</b>"
msgstr ""
-#: ../..//ui/initial.py:303
+#: ../..//ui/initial.py:304
#, python-format
msgid "Could not create directory %s."
msgstr ""
-#: ../..//ui/initial.py:316
+#: ../..//ui/initial.py:317
msgid "Select Directory"
msgstr ""
#. Name column
-#: ../..//ui/categories.py:94 ../..//ui/installation.py:107
-#: ../..//ui/packages.py:158
+#: ../..//ui/categories.py:94 ../..//ui/installation.py:105
+#: ../..//ui/packages.py:159
msgid "Name"
msgstr ""
@@ -314,35 +389,35 @@
msgid "Packages"
msgstr ""
-#: ../..//ui/installation.py:45
+#: ../..//ui/installation.py:44
#, python-format
msgid "Installation: %s"
msgstr ""
-#: ../..//ui/installation.py:75
+#: ../..//ui/installation.py:73
#, python-format
msgid "Deinstallation: %s"
msgstr ""
-#: ../..//ui/installation.py:135
+#: ../..//ui/installation.py:133
#, python-format
msgid "%(name)s %(version)s"
msgstr ""
-#: ../..//ui/installation.py:151
+#: ../..//ui/installation.py:149
msgid "Installation Wizard"
msgstr ""
-#: ../..//ui/installation.py:174 ../..//ui/installation.py:312
+#: ../..//ui/installation.py:173 ../..//ui/installation.py:312
msgid "<b>Packages:</b>"
msgstr ""
#. Display success message
-#: ../..//ui/installation.py:271
+#: ../..//ui/installation.py:270
msgid "All packages were installed successfully."
msgstr ""
-#: ../..//ui/installation.py:289
+#: ../..//ui/installation.py:288
msgid "Deinstallation Wizard"
msgstr ""
@@ -377,78 +452,31 @@
msgstr ""
#. State icon column
-#: ../..//ui/packages.py:151
+#: ../..//ui/packages.py:152
msgid "State"
msgstr ""
-#. Create dialog
-#: ../..//ui/tasks.py:203
-msgid "Updating the mirror list"
-msgstr ""
-
-#: ../..//ui/tasks.py:225
+#: ../..//tools/env.py:94
#, python-format
-msgid "Could not fetch mirror list from %s."
-msgstr ""
-
-#. Create input dialog
-#: ../..//ui/tasks.py:269
-msgid "Select Mirror"
-msgstr ""
-
-#. Create download wizard
-#: ../..//ui/tasks.py:392
-msgid "Updating the package list"
-msgstr ""
-
-#. Create and run download wizard
-#: ../..//ui/tasks.py:422
-msgid "Updating Packages"
-msgstr ""
-
-#: ../..//ui/tasks.py:444
-#, python-format
-msgid "Could not fetch package list from %s."
-msgstr ""
-
-#: ../..//ui/tasks.py:448
-#, python-format
-msgid "Could not fetch package %s from %s."
-msgstr ""
-
-#: ../..//setup.py:43
-msgid "You need at least PyGTK 2.6 to run InstallIt (i2t)"
-msgstr ""
-
-#: ../..//setup.py:59
-msgid "Graphical source-based package manager and installer"
-msgstr ""
-
-#: ../..//setup.py:61
-msgid "InstallIt (i2t) is a source-based package management solution"
-msgstr ""
-
-#: ../..//tools/env.py:92
-#, python-format
msgid "Compiling %s => %s."
msgstr ""
-#: ../..//tools/env.py:97
+#: ../..//tools/env.py:99
#, python-format
msgid "Failed to compile %s."
msgstr ""
-#: ../..//tools/env.py:105
+#: ../..//tools/env.py:112
#, python-format
msgid "Linking %s with %s"
msgstr ""
-#: ../..//tools/env.py:111
+#: ../..//tools/env.py:118
#, python-format
msgid "Failed to link %s."
msgstr ""
-#: ../..//tools/pkgconfig.py:37
+#: ../..//tools/pkgconfig.py:40
#, python-format
msgid "pkg-config module missing: %(name)s (%(version)s)."
msgstr ""
Modified: installit/trunk/i2t
===================================================================
--- installit/trunk/i2t 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/i2t 2006-09-03 16:38:19 UTC (rev 23064)
@@ -31,14 +31,14 @@
# Load InstallIt
sys.path += map(addI2tSearchPath, sys.path)
- try:
- import main
- except ImportError:
- try:
- from i2t import main
- except ImportError:
- print "Could not locate i2t Python package."
- sys.exit(1)
+ #try:
+ import main
+ #except ImportError:
+ # try:
+ # from i2t import main
+ # except ImportError:
+ # print "Could not locate i2t Python package."
+ # sys.exit(1)
from tools.env import Environment
Modified: installit/trunk/setup.py
===================================================================
--- installit/trunk/setup.py 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/setup.py 2006-09-03 16:38:19 UTC (rev 23064)
@@ -19,6 +19,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
+import os
from sys import version_info, exit
from os import putenv
from commands import getstatusoutput
@@ -30,36 +31,41 @@
_ = i18n.init()
def checkDependencies():
-
+ # Check PyGTK dependency
try:
import pygtk
pygtk.require("2.0")
import gtk
-
if gtk.pygtk_version < (2, 6, 0):
raise ImportError
-
except ImportError:
print _("You need at least PyGTK 2.6 to run InstallIt (i2t)")
exit(1)
+ # Make sure libtool is available
+ libtoolFound = False
+ for path in os.environ.get("PATH").split(":"):
+ if os.access(os.path.join(path, "libtool"), os.X_OK):
+ libtoolFound = True
+ break
+ if not libtoolFound:
+ print _("The program 'libtool' could not been found in $PATH.")
+ exit(1)
+
# Check if required dependencies are available
checkDependencies()
# Create installation information script
-print sysconfig.get_config_var("BINDIR")
-vars = sysconfig.get_config_vars()
-for key in vars:
- value = vars.get(key)
- print "%s => %s" % (key, value)
+#vars = sysconfig.get_config_vars()
+#for key in vars:
+# value = vars.get(key)
+# print "%s => %s" % (key, value)
# Setup information
setup(name = "i2t",
version = info.version,
- description = _("Graphical source-based package manager and "
- "installer"),
- long_description = _("InstallIt (i2t) is a source-based package "
- "management solution"),
+ description = _("Graphical source-based package manager and installer"),
+ long_description = _("InstallIt (i2t) is a source-based package management solution"),
author = "Jannis Pohlmann",
author_email = "jannis at xfce.org",
url = "http://installit.xfce.org",
@@ -82,5 +88,13 @@
"i2t/backends": "backends",
"i2t/ui": "ui",
},
+ package_data = {
+ "i2t": [
+ "data/*.*",
+ "data/pixmaps/*.*",
+ "data/ui/*.*",
+ "i18n/locale/*/LC_MESSAGES/i2t.mo",
+ ]
+ },
scripts = ["i2t"],
)
Deleted: installit/trunk/tmp-cmd.py
Modified: installit/trunk/tools/__init__.py
===================================================================
--- installit/trunk/tools/__init__.py 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/tools/__init__.py 2006-09-03 16:38:19 UTC (rev 23064)
@@ -24,4 +24,5 @@
"pkgconfig",
"shell",
"env",
+ "lookup",
]
Modified: installit/trunk/tools/env.py
===================================================================
--- installit/trunk/tools/env.py 2006-09-03 13:26:53 UTC (rev 23063)
+++ installit/trunk/tools/env.py 2006-09-03 16:38:19 UTC (rev 23064)
@@ -53,7 +53,8 @@
return False
def getCompiler(self):
- default = "gcc"
+ defaults = ["gcc", "gcc30", "gcc31", "gcc32", "gcc33", "gcc34",
+ "gcc40", "gcc41", "gcc42", "cc"]
if os.environ.has_key("CC"):
for pathname in os.environ.get("PATH").split(":"):
@@ -62,11 +63,12 @@
return fullpath
for pathname in os.environ.get("PATH").split(":"):
- fullpath = os.path.join(pathname, default)
- if os.access(fullpath, os.X_OK):
- return fullpath
+ for compiler in defaults:
+ fullpath = os.path.join(pathname, compiler)
+ if os.access(fullpath, os.X_OK):
+ return fullpath
- return default
+ return defaults[0]
def hasLibtool(self):
for pathname in os.environ.get("PATH").split(":"):
@@ -97,9 +99,14 @@
Logger.error("Environment", _("Failed to compile %s.") % (source))
return False
- def link(self, source, library):
- command = "%s --mode=link %s -o %s %s -l%s" % \
+ def link(self, source, library, path=None):
+ if path:
+ command = "%s --mode=link %s -o %s %s -L%s -l%s" % \
(self.getLibtool(), os.path.basename(self.getCompiler()),
+ source + ".linked", source, path, library)
+ else:
+ command = "%s --mode=link %s -o %s %s -l%s" % \
+ (self.getLibtool(), os.path.basename(self.getCompiler()),
source + ".linked", source, library)
Logger.debug("Environment", _("Linking %s with %s")
@@ -111,17 +118,24 @@
Logger.error("Environment", _("Failed to link %s.") % (source))
return False
- def hasLibrary(self, name, version):
+ def hasLibrary(self, library, path=None):
source = os.path.join(Config.get("DataDir"), "test.o")
# Try linking against the library (without version)
- if self.link(source, name):
+ if self.link(source, library.name, path):
+ library.path = path
return True
- # Try linking against the library (with version)
- if self.link(source, name + "-" + version):
- return True
-
+ # Iterate through $PATH, searching for the library
+ if not path:
+ for path in BaseDir.getPath():
+ path = os.path.join(path, "..", "lib")
+
+ # Try linking against the library (w/o version)
+ if self.link(source, library.name, path):
+ library.path = path
+ return True
+
# No direct linking possible
return False
Added: installit/trunk/tools/lookup.py
===================================================================
--- installit/trunk/tools/lookup.py (rev 0)
+++ installit/trunk/tools/lookup.py 2006-09-03 16:38:19 UTC (rev 23064)
@@ -0,0 +1,85 @@
+# $Id$
+#
+# vi:set ts=4 sw=4 sts=4 et ai nocindent:
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+
+import sys
+from os import path
+
+
+class Lookup:
+
+ def __init__(self):
+ # Build search paths list
+