1 # Copyright(C) 2008, David Aguilar <davvid@gmail.com>
8 from cola
import version
9 from cola
.models
import Model
12 parser
= optparse
.OptionParser(usage
='%prog [options]')
14 parser
.add_option('-v', '--version',
15 help='Show cola version',
19 parser
.add_option('-s', '--style',
20 help='Applies an alternate stylesheet. '
21 'The allowed values are: "dark" or a file path.',
23 metavar
='PATH or STYLE',
25 parser
.add_option('-r', '--repo',
26 help='Specifies the path to a git repository.',
30 opts
, args
= parser
.parse_args()
32 if opts
.version
or 'version' in args
:
33 print "cola version", version
.version
36 repo
= os
.path
.realpath(opts
.repo
)
37 if not os
.path
.isdir(repo
):
38 print >> sys
.stderr
, "fatal: '%s' is not a directory. Consider supplying -r <path>.\n" % repo
41 # load the model right away so that we can bail out when
46 # Defer these imports to allow git cola --version without pyqt installed
47 from PyQt4
import QtCore
48 from PyQt4
import QtGui
50 print >> sys
.stderr
, 'Sorry, you do not seem to have PyQt4 installed.'
51 print >> sys
.stderr
, 'Please install it before using cola.'
52 print >> sys
.stderr
, 'e.g.: sudo apt-get install python-qt4'
55 class ColaApplication(QtGui
.QApplication
):
56 """This makes translation work by throwing out the context."""
57 wrapped
= QtGui
.QApplication
.translate
59 trtxt
= unicode(ColaApplication
.wrapped('', *args
[2:]))
60 if trtxt
[-6:-4] == '@@': # handle @@verb / @@noun
64 app
= ColaApplication(sys
.argv
)
65 QtGui
.QApplication
.translate
= app
.translate
66 app
.setWindowIcon(QtGui
.QIcon(utils
.get_icon('git.png')))
67 locale
= str(QtCore
.QLocale().system().name())
68 qmfile
= utils
.get_qm_for_locale(locale
)
69 if os
.path
.exists(qmfile
):
70 translator
= QtCore
.QTranslator(app
)
71 translator
.load(qmfile
)
72 app
.installTranslator(translator
)
75 # This loads the built-in and user-specified stylesheets.
76 # We allows absolute and relative paths to a stylesheet
77 # by assuming that non-file arguments refer to a built-in style.
78 if os
.path
.isabs(opts
.style
) or os
.path
.isfile(opts
.style
):
81 filename
= utils
.get_stylesheet(opts
.style
)
84 # Automatically register each subdirectory in the style dir
85 # as a Qt resource directory.
86 dirname
= os
.path
.dirname(filename
)
88 resource_paths
.extend(utils
.get_resource_dirs(dirname
))
89 for r
in resource_paths
:
90 basename
= os
.path
.basename(r
)
91 QtCore
.QDir
.setSearchPaths(basename
, [r
])
92 stylesheet
= open(filename
, 'r')
93 style
= stylesheet
.read()
95 app
.setStyleSheet(style
)
97 print >> sys
.stderr
, ("warn: '%s' is not a valid style."
100 from cola
.views
import View
101 from cola
.controllers
import Controller
102 view
= View(app
.activeWindow())
103 ctl
= Controller(model
, view
)
105 sys
.exit(app
.exec_())