[X2Go-Commits] [pyhoca-gui] 08/71: CVix: rewrite CVix_setup.py

git-admin at x2go.org git-admin at x2go.org
Thu Mar 20 00:32:41 CET 2014


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 at 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 at 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 at 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



More information about the x2go-commits mailing list