This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch cvix/2.x in repository pyhoca-gui. commit 752afcaaefb8c1ee31563419db00d4b506b6a370 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Feb 5 16:03:32 2014 +0100 CVix: rewrite CVix_setup.py --- CVix.py | 65 ++- CVix_customer.key | 1 + CVix_nsis_template.py | 4 +- ...template.py => CVix_session_profile_template.py | 1 + CVix_setup.py | 415 +++----------------- desktop/CVix.desktop | 12 + icons/CVix/128x128/CVix_sessionicon.png | Bin 0 -> 3091 bytes icons/CVix/128x128/CVix_trayicon.png | Bin 0 -> 3091 bytes icons/CVix/128x128/CVix_winicon.png | Bin 0 -> 3091 bytes icons/CVix/16x16/CVix_sessionicon.png | Bin 0 -> 483 bytes icons/CVix/22x22/CVix_sessionicon.png | Bin 0 -> 654 bytes img/CVix.png | Bin 3956205 -> 0 bytes pixmaps/CVix.svg | 358 +++++++++++++++++ 13 files changed, 493 insertions(+), 363 deletions(-) diff --git a/CVix.py b/CVix.py index 25a76dd..d26ccce 100755 --- a/CVix.py +++ b/CVix.py @@ -25,13 +25,67 @@ import sys from pyhoca.wxgui import * from pyhoca.wxgui import __VERSION__ +import x2go +import CVix_session_profile_template + __author__ = "Mike Gabriel, Dick Kniep" __version__ = 2.0 -if __name__ == '__main__': +PROG_NAME = 'CVix' +# change this to .CVix??? +SESSION_DIR = '.x2goclient' + + +def CVixConfigFile(): + """\ + Create CVix's customer based session profile file. + + """ + f = open(os.path.join('CVix_customer'), 'r') + CUSTOMER_HOST = f.read().replace('\n', '').replace('\r', '') + f.close() + CUSTOMER_USER = CUSTOMER_HOST.split('.')[0] + CUSTOMER_KEY = 'CVix_customer.key' + + session_dir = os.path.join(os.path.normpath(os.path.expanduser('~')), SESSION_DIR) + session_file = os.path.join(session_dir, 'sessions') + + session_profiles = x2go.X2GoSessionProfiles(config_files=[session_file]) + + found = False + if 'CVix' in session_profiles.profile_names: + session_profiles.delete_profile('CVix') + + profile_config = CVix_session_profile_template.SESSION_PROFILE_TEMPLATE + customized_config = { + 'sshproxyhost': '{hostname}'.format(hostname=CUSTOMER_HOST), + 'sshproxyport': 3389, + 'sshproxyuser': CUSTOMER_USER, + 'sshproxykeyfile': os.path.join(CUSTOMER_KEY), + 'icon': os.path.join('icons', 'CVix', '128x128', 'CVix_sessionicon.png'), + 'user': x2go.CURRENT_LOCAL_USER, + } + + profile_config['export'] = profile_config['export'].format(local_home=os.path.normpath(os.path.expanduser('~'))) + profile_config.update(customized_config) + + session_profiles.add_profile(profile_id=None, **profile_config) + session_profiles.write_user_config = True + session_profiles.write() + +def startCVix(): + """\ + Deze functie zorgt er voor dat bij verschillende mensen die gebruik + maken van dezelfde computer en verschillende accounts hebben, + de directory met de juiste instellingen gekopieerd wordt naar + de nieuwe gebruiker. Tevens geeft het info indien er een probleem met + opstarten. + + """ + launcher = PyHocaGUI_Launcher() - launcher.setup_progname('CVix') + launcher.setup_progname(PROG_NAME) launcher.setup_version(__version__) launcher.setup_consolelog() launcher.setup_process() @@ -52,3 +106,10 @@ if __name__ == '__main__': args, logger, liblogger = launcher.parseargs() launcher.main(args=args, logger=logger, liblogger=liblogger) + + +if __name__ == '__main__': + + CVixConfigFile() + startCVix() + diff --git a/CVix_customer.key b/CVix_customer.key new file mode 120000 index 0000000..242d00d --- /dev/null +++ b/CVix_customer.key @@ -0,0 +1 @@ +CVix_restricted/keys/eega.key \ No newline at end of file diff --git a/CVix_nsis_template.py b/CVix_nsis_template.py index 295f0fe..e267ecf 100644 --- a/CVix_nsis_template.py +++ b/CVix_nsis_template.py @@ -15,7 +15,7 @@ Name "{program_name}" ; Sets the title bar text (although NSIS seems to append "Installer") Caption "{program_desc}" -!define py2exeOutputDirectory '{output_dir}' +!define distOutputDirectory '{output_dir}' ; The file to write OutFile "..\\{program_name}_{schema}_${{VERSION}}_win32-setup.exe" @@ -163,7 +163,7 @@ Section "{program_name} ($REQUIRED)" SectionIn RO ; Set output path to the installation directory. SetOutPath "$INSTDIR" - File /r /x .svn /x .git "${{py2exeOutputDirectory}}\\*.*" + File /r /x .svn /x .git "${{distDirectory}}\\*.*" ; Write the installation path into the registry WriteRegStr HKLM SOFTWARE\\{program_name} "Install_Dir" "$INSTDIR" diff --git a/CVix_session_template.py b/CVix_session_profile_template.py similarity index 98% rename from CVix_session_template.py rename to CVix_session_profile_template.py index 957b883..b199aab 100644 --- a/CVix_session_template.py +++ b/CVix_session_profile_template.py @@ -38,6 +38,7 @@ SESSION_PROFILE_TEMPLATE = { 'rdpoptions': '-u X2GO_USER -p X2GO_PASSWORD', 'print': 1, 'usesshproxy': 1, + 'sshproxyautologin': False, 'sshproxytunnel': 'localhost:53000:localhost:3389', # gets substituted during application start 'sshproxykeyfile': '{sshproxykeyfile}', diff --git a/CVix_setup.py b/CVix_setup.py index 640f712..d01da0c 100755 --- a/CVix_setup.py +++ b/CVix_setup.py @@ -1,389 +1,86 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010-2012 by Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -# -# PyHoca 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 +# Copyright (C) 2010-2014 by Mike Gabriel <mike.gabriel@das-netzwerkteam.de> +# +# CVix is free software; you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # -# PyHoca is distributed in the hope that it will be useful, +# CVix 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. +# GNU Affero General Public License for more details. # -# You should have received a copy of the GNU General Public License +# You should have received a copy of the GNU Affero 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. +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. -# import the PyHoca-GUI import sys import os -import shutil - -### Create Global variables -mySCHEMA = None -#SCHEMATA = None -CUSTOMER_HOST = None -CUSTOMER_USER = None -CUSTOMER_KEY = None -PROGRAM_DESC = None -PROGRAM_VERSION = '1.2' -PROGRAM_ICON = None PROGRAM_NAME = 'CVix' +PROGRAM_DESC = '%s Client is a tool to access CVix application servers' % PROGRAM_NAME +for line in file(os.path.join('pyhoca', 'wxgui', '__init__.py')).readlines(): + if (line.startswith('__VERSION__')): + exec(line.strip()) +PROGRAM_VERSION = __VERSION__ +PROGRAM_ICON = "pixmaps/CVix.ico" LICENSE = 'AGPLv3+' AUTHOR = 'Mike Gabriel, Dick Kniep' -URL = 'http://www.lindix.org' +URL = 'http://www.lindix.nl' LIBRARY_ZIP = r"lib\shardlib.zip" -PROGRAM_ICON_MAP2 = '' -icon_files = [] -customer_files = [] - -### customize the SCHEMA before running the setup - -def datafilelist(installbase, sourcebase): - datafileList = [] - for root, subFolders, files in os.walk(sourcebase): - fileList = [] - for f in files: - fileList.append(os.path.join(root, f)) - datafileList.append((root.replace(sourcebase, installbase), fileList)) - return datafileList - -def _fillGlobals(schema=None): - global mySCHEMA - global SCHEMATA - global CUSTOMER_HOST - global CUSTOMER_USER - global CUSTOMER_KEY - global PROGRAM_DESC - global PROGRAM_ICON - global PROGRAM_ICON_MAP2 - global icon_files - global customer_files - if len(sys.argv) > 2 and schema is None: - mySCHEMA = sys.argv[2] - del sys.argv[2] - elif schema: - mySCHEMA = schema - else: - mySCHEMA = 'autitude' # not relevant...... - - SCHEMATA = { - 'autitude':'autitude.cvix.nl', - 'cvixcoaches':'cvixcoaches.cvix.nl', - 'comsupport':'communitysupport.cvix.nl', - 'nlwerkt':'nederland-werkt.cvix.nl', - 'amarant':'amarant.cvix.nl', - 'ambulantehulpverlening':'ambulantehulpverlening.cvix.nl', - 'deplannenmakers':'deplannenmakers.cvix.nl', - 'emobrain':'emotionalbrain.cvix.nl', - 'held':'held.cvix.nl', - 'leff':'leff.cvix.nl', - 'menea':'menea.cvix.nl', - 'meneanew':'meneanew.cvix.nl', - 'eega':'eega.cvix.nl', - 'reinaerde':'reinaerde.cvix.nl', - 'ruimbaan':'ruimbaan.cvix.nl', - 'streamcvix':'streamtrajecten.cvix.nl', - 'traject':'trajectbv.cvix.nl', - 'zorgconcept':'zorgconcept.cvix.nl', - 'zzpflevoland':'zzpflevoland.cvix.nl', - 'asscoaching':'asscoaching.cvix.nl', - 'demo':'demo.cvix.nl', - } - - PROGRAM_NAME = 'CVix' - if mySCHEMA in SCHEMATA: - CUSTOMER_HOST = SCHEMATA[mySCHEMA] - else: - CUSTOMER_HOST = mySCHEMA + '.cvix.nl' - CUSTOMER_USER = CUSTOMER_HOST.split('.')[0] - CUSTOMER_KEY = '%s.key' % CUSTOMER_HOST.split('.')[0] - f = open(os.path.join(os.getcwd(), PROGRAM_NAME, 'customer'), 'w+') - f.write(CUSTOMER_HOST) - f.close() - - PROGRAM_DESC = '%s is een terminal server programma aangepast aan het gebruik van CVix door %s' % (PROGRAM_NAME, CUSTOMER_USER) - PROGRAM_ICON = "%s/pixmaps/%s.ico" % (PROGRAM_NAME, PROGRAM_NAME) - PROGRAM_ICON_MAP2 = "%s\\pixmaps\\%s.ico" % (PROGRAM_NAME, PROGRAM_NAME) - icon_files = datafilelist('icons\\PyHoca', r'icons\\PyHoca') + datafilelist('icons\\PyHoca', r'%s\\icons' % PROGRAM_NAME) - customer_files = [(PROGRAM_NAME, [r'%s\\keys\\' % PROGRAM_NAME + CUSTOMER_KEY, r'%s\\customer' % PROGRAM_NAME])] - -#from setuptools import setup, find_packages +from setuptools import setup, find_packages from distutils.core import setup, Command import platform -_fillGlobals() -NSIS_COMPILE = os.path.join(os.environ['ProgramFiles'], 'NSIS', 'makensis.exe') -# from py2exe.build_exe import py2exe -from bbfreeze import Freezer -py2exe = object -import os, os.path -import subprocess -sys.path.append(os.path.normpath('../pyhoca-contrib/mswin/ms-vc-runtime')) - -from glob import glob - -exec("from nsis_template_%s import NSIS_SCRIPT_TEMPLATE" % (PROGRAM_NAME, PROGRAM_NAME)) - -# -# to build .exe file, run on Windows: -# ,,python setup.py py2exe'' -# -# to update i18n .mo files (and merge .pot file into .po files) run on Linux: -# ,,python setup.py build_i18n -m'' - -cmd_class = {} -data_files = [] - -class NSISScript(object): - - def __init__(self, program_name, program_desc, program_version, dist_dir, icon_loc): - self.program_name = program_name - self.program_desc = program_desc - self.program_version = program_version - self.dist_dir = dist_dir - self.icon_loc = icon_loc - self.pathname = "setup_%s.nsi" % self.program_name - - def create(self): - contents = NSIS_SCRIPT_TEMPLATE.format( - program_name = self.program_name, - program_version = self.program_version, - program_desc = self.program_desc, - output_dir = self.dist_dir, - icon_location = os.path.join(self.dist_dir, self.icon_loc), - schema = mySCHEMA) - - with open(self.pathname, "w") as outfile: - outfile.write(contents) - - def compile(self): - subproc = subprocess.Popen( - # "/P5" uses realtime priority for the LZMA compression stage. - # This can get annoying though. - [NSIS_COMPILE, self.pathname, "/P5"], env=os.environ) - subproc.communicate() - - retcode = subproc.returncode - - if retcode: - raise RuntimeError("NSIS compilation return code: %d" % retcode) - -class build_all(Command): - user_options = [('all','A','yes')] - def initialize_options(self): - pass - def finalize_options(self): - pass - def run(self): - - logFile = file('build_all.log','ab') - - for schema, machine in SCHEMATA.items(): - print "\n\n\n* * * * * * * * * Build environment %s\n\n" % schema - _fillGlobals(schema) - sys.argv[1] = 'build_installer_bbfreeze' - startSetup() - - -class build_installer(object): - - # This class first invokes building the the exe file(s) and then creates an NSIS - # installer - def __init__(self, dist_dir): - self.dist_dir = dist_dir - - def do_build_exe(self): - # replace this method with the freezer's build_exe logic - pass - - def run(self): - - # clean up dist_dir - shutil.rmtree(self.dist_dir, ignore_errors=True) - # and recreate a clean one afterwards - os.makedirs(self.dist_dir) - - # First, build the exe file - self.do_build_exe() +import setup +from CVix_nsis_template import NSIS_SCRIPT_TEMPLATE +# monkey patch setup.py +setup.NSIS_SCRIPT_TEMPLATE = NSIS_SCRIPT_TEMPLATE - # Create the installer, using the files py2exe has created. - script = NSISScript( - PROGRAM_NAME, - PROGRAM_DESC, - PROGRAM_VERSION, - self.dist_dir, - os.path.normpath(PROGRAM_ICON) - ) - print "*** creating the NSIS setup script***" - script.create() - print "*** compiling the NSIS setup script***" - script.compile() -class build_installer_bbfreeze(build_installer, Freezer, Command): - - user_options = [ - ('dist-dir=', 'd', - "directory to put final built distributions in (default is dist)"), - - ("excludes=", 'e', - "comma-separated list of modules to exclude"), - ("includes=", 'i', - "comma-separated list of modules to include"), - ] - - def __init__(self, *args, **kwargs): - Command.__init__(self, *args) - build_installer.__init__(self, dist_dir=self.dist_dir) - - def initialize_options(self): - self.includes = [] - self.excludes = [] - self.packages = [] - self.compressed = False - self.dist_dir = None - - def finalize_options(self): - self.includes = fancy_split(self.includes) - self.excludes = fancy_split(self.excludes) - self.compressed = False - if self.dist_dir is None: - self.dist_dir = 'dist' - self.dist_dir = os.path.abspath(os.path.join(os.getcwd(), self.dist_dir)) - if not os.path.exists(self.dist_dir): - os.makedirs(self.dist_dir) - - def do_build_exe(self): - Freezer.__init__(self, self.dist_dir, - includes=self.includes, - excludes=self.excludes, - ) - self.addScript("CVix.py", gui_only=True) - Freezer.__call__(self) - if self.distribution.has_data_files(): - print "*** copy data files ***" - install_data = self.reinitialize_command('install_data') - install_data.install_dir = self.dist_dir - install_data.ensure_finalized() - install_data.run() - -def fancy_split(strVal, sep=","): - # a split which also strips whitespace from the items - # passing a list or tuple will return it unchanged - if strVal is None: - return [] - if hasattr(strVal, "split"): - return [item.strip() for item in strVal.split(sep)] - return strVal - - - -executables = [] if platform.system() == 'Windows': - - dll_data_files = [("Microsoft.VC90.CRT", glob(r'..\\pyhoca-contrib\\mswin\\ms-vc-runtime\\*.*'))] - nxproxy_files = [("nxproxy", glob(r'..\\pyhoca-contrib\\mswin\\nxproxy-mswin\\nxproxy-3.5.0.12\\*.*'))] - pulseaudio_files = [("pulseaudio", glob(r'..\\pyhoca-contrib\\mswin\\pulseaudio-mswin\\pulseaudio-1.1\\*.*'))] - xserver_files = datafilelist('vcxsrv', r'..\\pyhoca-contrib\\mswin\\vcxsrv-mswin\\vcxsrv-1.14.2.0') - - icon_files = datafilelist('icons\\PyHoca', r'icons\\PyHoca') - img_files = [("img", glob(r'img\\*.*'))] - i18n_files = datafilelist('mo', r'build\\mo') - - data_files.extend([ ('icons', ["pixmaps\\pyhoca-gui.ico"]), ] + - dll_data_files + - icon_files + - img_files + - nxproxy_files + - pulseaudio_files + - xserver_files + - i18n_files - ) - - cmd_class.update( - { - "build_with_bbfreeze": build_installer_bbfreeze, - } - ) - cmd_class.update({ 'build_exe': cmd_class['build_with_{freezer}'.format(freezer='bbfreeze')] }) + CVix_icon_files = datafilelist('icons\\CVix', r'icons\\CVix') + CVix_data_files = CVix_icon_files elif platform.system() == 'Linux': - cmd_class.update( - { - "build" : build_extra.build_extra, - "build_i18n" : build_i18n.build_i18n, - "clean": clean_i18n.clean_i18n, - } - ) - - icon_files = datafilelist('{prefix}/share/icons/PyHoca'.format(prefix=sys.prefix), r'icons/PyHoca') - img_files = [("{prefix}/share/pyhoca/img".format(prefix=sys.prefix), glob('img/*.*'))] - desktop_files = [ - ('{prefix}/share/applications'.format(prefix=sys.prefix), glob('desktop/*')), - ('{prefix}/share/pixmaps'.format(prefix=sys.prefix), glob('pixmaps/*.svg')), + CVix_icon_files = datafilelist('{prefix}/share/icons/CVix'.format(prefix=sys.prefix), r'icons/CVix') + CVix_desktop_files = [ + ('{prefix}/share/applications'.format(prefix=sys.prefix), glob('desktop/CVix.desktop')), + ('{prefix}/share/pixmaps'.format(prefix=sys.prefix), glob('pixmaps/CVix.svg')), ] - manpage_files = [ - ('{prefix}/share/man/man1'.format(prefix=sys.prefix), glob('man/man1/*.1')), + CVix_manpage_files = [ + # ('{prefix}/share/man/man1'.format(prefix=sys.prefix), glob('man/man1/*.1')), ] - data_files.extend(icon_files + - img_files + - desktop_files + - manpage_files - ) - -if platform.system() == 'Windows': - cmd_options={ - 'py2exe': { - 'includes': ['greenlet', 'gevent.core', 'gevent.ares', 'gevent._semaphore', 'gevent._util', ], - 'compressed': 1, - 'optimize': 2, - }, - 'build_with_py2exe': { - 'includes': ['greenlet', 'gevent.core', 'gevent.ares', 'gevent._semaphore', 'gevent._util', ], - 'compressed': 1, - 'optimize': 2, + CVix_data_files = CVix_icon_files + CVix_desktop_files + CVix_manpage_files + +setup.data_files.extend([ ('icons', ["pixmaps\\CVix.ico"]), ] + CVix_files) + +setup( + name = PROGRAM_NAME, + version = PROGRAM_VERSION, + description = PROGRAM_DESC, + license = LICENSE, + author = AUTHOR, + url = URL, + namespace_packages = [ 'pyhoca', ], + packages = [ 'pyhoca.wxgui', ], + package_dir = {'': '.'}, + install_requires = [ 'setuptools', ], + cmdclass = setup.cmd_class, + windows = [ + { + "script": "CVix.py", + "icon_resources": [(0, os.path.normpath(PROGRAM_ICON))], + "dest_base": PROGRAM_NAME, }, - 'build_with_bbfreeze': { - 'includes': ['greenlet', 'gevent.core', 'gevent.ares', 'gevent._semaphore', 'gevent._util', 'gevent.resolver_thread', 'gevent.resolver_ares', 'gevent.server', 'gevent.socket', 'gevent.threadpool', 'gevent.select', 'gevent.subprocess', 'distutils.version', 'Crypto', 'Crypto.Random', 'Crypto.Hash', 'Crypto.PublicKey', 'Crypto.PublicKey.DSA', 'Crypto.PublicKey.RSA', 'Crypto.Cipher', 'Crypto.Cipher.AES', 'Crypto.Cipher.ARC4', 'Crypto.Cipher.Blowfish', 'Crypto.Cipher.DES3', 'Crypt [...] - 'excludes': ['MSVCR90.dll', 'MSVCP90.dll', ], - } - } - cmd_options.update({ 'build_exe': cmd_options['build_with_{freezer}'.format(freezer='bbfreeze')] }) - -else: - cmd_options={} - -def startSetup(): - setup( - name = PROGRAM_NAME, - version = PROGRAM_VERSION, - description = PROGRAM_DESC, - license = LICENSE, - author = AUTHOR, - url = URL, - namespace_packages = [ 'pyhoca', ], - packages = [ 'pyhoca.wxgui', ], - package_dir = {'': '.'}, - install_requires = [ 'setuptools', ], - cmdclass = cmd_class, - windows = [ - { - "script": "pyhoca-gui", - "icon_resources": [(0, os.path.normpath(PROGRAM_ICON))], - "dest_base": PROGRAM_NAME, - }, - ], - data_files=data_files, - zipfile = LIBRARY_ZIP, - executables = executables, - options=cmd_options, - ) - - -startSetup() + ], + data_files=data_files, + zipfile = LIBRARY_ZIP, + executables = executables, + options=setup.cmd_options, +) diff --git a/desktop/CVix.desktop b/desktop/CVix.desktop new file mode 100644 index 0000000..16172d5 --- /dev/null +++ b/desktop/CVix.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=CVix Client +GenericName=CVix Client +Comment=Client for accessing CVix Servers +Exec=CVix +Icon=CVix +X-Window-Icon=CVix +X-HildonDesk-ShowInToolbar=true +X-Osso-Type=application/x-executable +Terminal=false +Type=Application +Categories=GNOME;KDE;Network; diff --git a/icons/CVix/128x128/CVix_sessionicon.png b/icons/CVix/128x128/CVix_sessionicon.png new file mode 100644 index 0000000..9b637cd Binary files /dev/null and b/icons/CVix/128x128/CVix_sessionicon.png differ diff --git a/icons/CVix/128x128/CVix_trayicon.png b/icons/CVix/128x128/CVix_trayicon.png new file mode 100644 index 0000000..9b637cd Binary files /dev/null and b/icons/CVix/128x128/CVix_trayicon.png differ diff --git a/icons/CVix/128x128/CVix_winicon.png b/icons/CVix/128x128/CVix_winicon.png new file mode 100644 index 0000000..9b637cd Binary files /dev/null and b/icons/CVix/128x128/CVix_winicon.png differ diff --git a/icons/CVix/16x16/CVix_sessionicon.png b/icons/CVix/16x16/CVix_sessionicon.png new file mode 100644 index 0000000..3986624 Binary files /dev/null and b/icons/CVix/16x16/CVix_sessionicon.png differ diff --git a/icons/CVix/22x22/CVix_sessionicon.png b/icons/CVix/22x22/CVix_sessionicon.png new file mode 100644 index 0000000..9440f6a Binary files /dev/null and b/icons/CVix/22x22/CVix_sessionicon.png differ diff --git a/img/CVix.png b/img/CVix.png deleted file mode 100644 index d27b7d5..0000000 Binary files a/img/CVix.png and /dev/null differ diff --git a/pixmaps/CVix.svg b/pixmaps/CVix.svg new file mode 100644 index 0000000..04c15f4 --- /dev/null +++ b/pixmaps/CVix.svg @@ -0,0 +1,358 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + 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://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + width="128" + height="128" + sodipodi:docname="x2go-logo-ubuntu.svg" + sodipodi:docbase="/Users/h1/Documents/Projekte/x2go/x2go" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0" + inkscape:export-filename="/home/h1/Desktop/x2go-logo.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <metadata + id="metadata87"> + <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> + <defs + id="defs85"> + <linearGradient + id="linearGradient3453"> + <stop + style="stop-color:#2b0000;stop-opacity:1;" + offset="0" + id="stop3455" /> + <stop + id="stop3461" + offset="0.5" + style="stop-color:#950000;stop-opacity:1;" /> + <stop + style="stop-color:#ffe400;stop-opacity:1;" + offset="1" + id="stop3457" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 300 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="800 : 300 : 1" + inkscape:persp3d-origin="400 : 200 : 1" + id="perspective2637" /> + <linearGradient + id="linearGradient4665"> + <stop + style="stop-color:#162d50;stop-opacity:1;" + offset="0" + id="stop4667" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="1" + id="stop4669" /> + </linearGradient> + <filter + inkscape:collect="always" + x="-0.20268817" + width="1.4053763" + y="-0.4560484" + height="1.9120969" + id="filter3580"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="15.201613" + id="feGaussianBlur3582" /> + </filter> + <filter + inkscape:collect="always" + id="filter4659"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.82806857" + id="feGaussianBlur4661" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4665" + id="linearGradient4671" + x1="400" + y1="100" + x2="400" + y2="0" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(1,1.1)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3453" + id="linearGradient3459" + x1="0" + y1="3" + x2="0" + y2="128" + gradientUnits="userSpaceOnUse" /> + </defs> + <sodipodi:namedview + inkscape:window-height="816" + inkscape:window-width="1503" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + guidetolerance="10.0" + gridtolerance="10000" + objecttolerance="10.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" + showgrid="true" + inkscape:object-nodes="true" + inkscape:grid-points="true" + inkscape:guide-points="true" + width="800px" + height="600px" + inkscape:zoom="4.625" + inkscape:cx="37.664865" + inkscape:cy="66.782471" + inkscape:window-x="0" + inkscape:window-y="22" + inkscape:current-layer="svg2" + units="mm" + showguides="true" + inkscape:guide-bbox="true"> + <sodipodi:guide + orientation="vertical" + position="100" + id="guide2393" /> + <sodipodi:guide + orientation="vertical" + position="700" + id="guide2395" /> + <inkscape:grid + id="GridFromPre046Settings" + type="xygrid" + originx="0px" + originy="0px" + spacingx="1px" + spacingy="1px" + color="#0000ff" + empcolor="#0000ff" + opacity="0.2" + empopacity="0.4" + empspacing="5" + visible="true" + enabled="true" + dotted="true" /> + </sodipodi:namedview> + <rect + style="fill:url(#linearGradient3459);fill-opacity:1;opacity:0.5" + id="rect2681" + width="128" + height="128" + x="0" + y="-7.1054274e-15" + ry="10.162162" /> + <path + sodipodi:type="arc" + style="opacity:0.11693546;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1;filter:url(#filter3580)" + id="path2397" + sodipodi:cx="410" + sodipodi:cy="150" + sodipodi:rx="90" + sodipodi:ry="40" + d="M 500,150 A 90,40 0 1 1 320,150 A 90,40 0 1 1 500,150 z" + transform="matrix(0.888889,0,0,0.75,-224.4445,38.25)" /> + <g + style="fill:#ffffff" + id="g4" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 90,977.626 L 103.32,951.85 C 104.256,949.33 104.688,947.53 104.688,946.594 C 104.688,945.082 104.184,943.93 103.248,943.282 C 102.24,942.562 100.512,942.202 98.064,942.202 L 98.064,939.826 L 120.168,939.826 L 120.168,942.202 C 117.144,942.202 114.984,942.85 113.472,944.146 C 111.96,945.442 109.872,948.898 106.992,954.514 L 92.376,982.954 L 110.808,1024.498 C 112.68,1028.386 114.336,1031.122 115.776,1032.634 C 117.216,1034.074 118.944,1034.866 120.888,1034.866 L 120.888,1037.1 [...] + id="path6" /> + </g> + <g + style="fill:#ffffff" + id="g8" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,940.474 L 50.976,939.25 L 50.976,941.698 L 6.984,940.474 z" + id="path10" /> + </g> + <g + style="fill:#ffffff" + id="g12" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,946.45 L 50.976,945.298 L 50.976,946.954 L 56.16,947.026 L 56.52,947.026 L 56.808,947.026 L 57.096,947.098 L 57.384,947.098 L 57.672,947.17 L 57.888,947.242 L 58.104,947.314 L 58.32,947.386 L 58.464,947.458 L 58.608,947.53 L 58.752,947.602 L 58.896,947.674 L 58.968,947.746 L 59.112,947.818 L 59.112,947.89 L 59.184,947.89 L 6.984,946.45 z" + id="path14" /> + </g> + <g + style="fill:#ffffff" + id="g16" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,952.498 L 61.272,950.986 L 61.488,951.346 L 61.776,951.922 L 62.064,952.498 L 62.352,953.146 L 62.64,953.794 L 62.784,954.01 L 6.984,952.498 z" + id="path18" /> + </g> + <g + style="fill:#ffffff" + id="g20" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,958.474 L 63.936,956.89 L 65.376,960.058 L 6.984,958.474 z" + id="path22" /> + </g> + <g + style="fill:#ffffff" + id="g24" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,964.45 L 66.528,962.866 L 67.968,966.106 L 6.984,964.45 z" + id="path26" /> + </g> + <g + style="fill:#ffffff" + id="g28" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,970.498 L 69.12,968.77 L 70.632,972.226 L 6.984,970.498 z" + id="path30" /> + </g> + <g + style="fill:#ffffff" + id="g32" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,976.474 L 71.712,974.674 L 73.296,978.274 L 6.984,976.474 z" + id="path34" /> + </g> + <g + style="fill:#ffffff" + id="g36" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,982.45 L 74.304,980.65 L 75.96,984.322 L 6.984,982.45 z" + id="path38" /> + </g> + <g + style="fill:#ffffff" + id="g40" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,988.426 L 76.896,986.554 L 78.408,989.866 L 78.192,990.37 L 6.984,988.426 z" + id="path42" /> + </g> + <g + style="fill:#ffffff" + id="g44" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,994.402 L 77.112,992.458 L 75.168,996.274 L 6.984,994.402 z" + id="path46" /> + </g> + <g + style="fill:#ffffff" + id="g48" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,1000.378 L 74.016,998.578 L 72.216,1002.178 L 6.984,1000.378 z" + id="path50" /> + </g> + <g + style="fill:#ffffff" + id="g52" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,1006.354 L 70.92,1004.626 L 69.192,1008.082 L 6.984,1006.354 z" + id="path54" /> + </g> + <g + style="fill:#ffffff" + id="g56" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,1012.402 L 67.896,1010.746 L 66.168,1013.986 L 6.984,1012.402 z" + id="path58" /> + </g> + <g + style="fill:#ffffff" + id="g60" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,1036.378 L 50.976,1035.154 L 50.976,1037.602 L 6.984,1036.378 z" + id="path62" /> + </g> + <g + style="fill:#ffffff" + id="g64" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,1030.402 L 58.104,1028.962 L 58.032,1029.106 L 57.888,1029.178 L 57.744,1029.322 L 57.6,1029.394 L 57.528,1029.538 L 57.384,1029.61 L 57.312,1029.682 L 57.168,1029.682 L 57.024,1029.754 L 56.952,1029.826 L 56.808,1029.898 L 56.736,1029.898 L 56.592,1029.97 L 56.448,1029.97 L 56.376,1029.97 L 56.232,1030.042 L 56.088,1030.042 L 55.944,1030.042 L 50.976,1030.114 L 50.976,1031.554 L 6.984,1030.402 z" + id="path66" /> + </g> + <g + style="fill:#ffffff" + id="g68" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,1024.354 L 61.776,1022.914 L 60.984,1024.498 L 60.696,1025.002 L 60.48,1025.506 L 60.264,1025.866 L 6.984,1024.354 z" + id="path70" /> + </g> + <g + style="fill:#ffffff" + id="g72" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 6.984,1018.378 L 64.8,1016.794 L 63.288,1019.89 L 6.984,1018.378 z" + id="path74" /> + </g> + <g + style="fill:#ffffff" + id="g76" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 63.936,924.49 L 118.872,924.49 C 123.84,924.49 127.872,928.522 127.872,933.49 L 127.872,1043.362 C 127.872,1048.33 123.84,1052.362 118.872,1052.362 L 63.936,1052.362 L 63.936,1050.418 L 117.864,1050.418 C 122.256,1050.418 125.856,1046.818 125.856,1042.426 L 125.856,934.498 C 125.856,930.106 122.256,926.506 117.864,926.506 L 63.936,926.506 L 63.936,924.49 z" + id="path78" /> + </g> + <g + style="fill:#ffffff" + id="g80" + transform="matrix(1.001001,0,0,1.001001,0,-925.41541)"> + <path + style="fill:#ffffff" + d="M 9,924.49 L 63.936,924.49 L 63.936,926.506 L 9.936,926.506 C 5.544,926.506 1.944,930.106 1.944,934.498 L 1.944,1042.426 C 1.944,1046.818 5.544,1050.418 9.936,1050.418 L 63.936,1050.418 L 63.936,1052.362 L 9,1052.362 C 4.032,1052.362 0,1048.33 0,1043.362 L 0,933.49 C 0,928.522 4.032,924.49 9,924.49 z" + id="path82" /> + </g> +</svg> -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/pyhoca-gui.git