OSDN Git Service

[perftests] clean things up a bit
[mypaint-anime/master.git] / mypaint.py
1 # This file is part of MyPaint.
2 # Copyright (C) 2007-2009 by Martin Renold <martinxyz@gmx.ch>
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2 of the License, or
7 # (at your option) any later version.
8
9 """
10 This script does all the platform dependent stuff. Its main task is
11 to figure out where the python modules are.
12 """
13
14 def get_paths():
15     import sys, os
16     join = os.path.join
17
18     lib_shared='share/mypaint/'
19     # note: some distros use lib64 instead, they have to edit this...
20     lib_compiled='lib/mypaint/'
21
22     scriptdir=os.path.dirname(sys.argv[0])
23
24     # this script is installed as $prefix/bin. We just need $prefix to continue.
25     #pwd=os.getcwd() # why????
26     #dir_install=os.path.normpath(join(pwd,scriptdir)) # why????
27     dir_install=scriptdir # same, except maybe if scriptdir is relative...
28
29     if os.path.basename(dir_install) == 'bin':
30         prefix=os.path.dirname(dir_install)
31         libpath=join(prefix, lib_shared)
32         libpath_compiled = join(prefix, lib_compiled)
33         sys.path.insert(0, libpath)
34         sys.path.insert(0, libpath_compiled)
35     else:
36         # we are not installed
37         prefix=None
38         libpath='.'
39         # checking for import error below
40
41     try: # just for a nice error message
42         from lib import mypaintlib
43     except ImportError:
44         print
45         print "We are not correctly installed or compiled!"
46         print 'script: "%s"' % sys.argv[0]
47         if prefix:
48             print 'deduced prefix: "%s"' % prefix
49             print 'lib_shared: "%s"' % libpath
50             print 'lib_compiled: "%s"' % libpath_compiled
51         print
52         raise
53
54     datapath = libpath
55     if not os.path.isdir(join(datapath, 'brushes')):
56         print 'Default brush collection not found! It should have been here:'
57         print datapath
58         raise sys.exit(1)
59
60     homepath =  os.path.expanduser('~')
61     if homepath == '~':
62         confpath = join(prefix, 'UserData')
63     else:
64         confpath = join(homepath, '.mypaint/')
65
66     return datapath, confpath
67
68 def psyco_opt():
69     # This helps on slow PCs where the python overhead dominates.
70     # (30% higher framerate measured on 533MHz CPU; startup slowdown below 20%)
71     # Note: python -O -O does not help.
72     import psyco
73     psyco.full()
74     print 'Psyco being used'
75
76
77 if __name__ == '__main__':
78     try:
79         psyco_opt()
80     except ImportError:
81         pass
82     datapath, confpath = get_paths()
83     from gui import main
84     main.main(datapath, confpath)