diff options
Diffstat (limited to 'FusionIcon/interface.py')
-rw-r--r-- | FusionIcon/interface.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/FusionIcon/interface.py b/FusionIcon/interface.py new file mode 100644 index 0000000..450a7f9 --- /dev/null +++ b/FusionIcon/interface.py @@ -0,0 +1,89 @@ +# This file is part of Fusion-icon. + +# Fusion-icon 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. +# +# Fusion-icon 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, see <http://www.gnu.org/licenses/>. +# +# Author(s): crdlb, nesl247 +# +# Copyright 2007 Christopher Williams <christopherw@verizon.net> + +import sys +from util import env +import start + +interfaces={ + 'gtk': 'GTK', + 'qt4': 'Qt4', + 'qt3': 'Qt3', +} + +def import_interface(interface): + try: + if interface in interfaces: + print ' * Using the', interfaces[interface], 'Interface' + __import__('FusionIcon.interface_%s' %interface) + + else: + print ' *** Error: "%s" interface is invalid, this should not happen' %interface + raise SystemExit + + except ImportError, e: + if [i for i in interfaces if 'interface_%s' %i in str(e)]: + print ' * Interface not installed' + else: + print ' *', e + + #doesn't work so remove it from the dict + del interfaces[interface] + if interfaces: + print ' ... Trying another interface' + choose_interface() + else: + print ' *** Error: All interfaces failed, aborting!' + raise SystemExit + +def choose_interface(try_first=None): + + chosen_interface = None + + # handle explicit choice first + if try_first: + if try_first in interfaces: + chosen_interface = try_first + else: + raise SystemExit, ' *** Error: No such interface: %s' %try_first + else: + +# gtk for everybody for now + # use qt for kde; gtk for everything else: +# if 'qt4' in interfaces and env.desktop == 'kde': +# chosen_interface = 'qt4' + +# elif 'qt3' in interfaces and env.desktop == 'kde': +# chosen_interface = 'qt3' + + if 'gtk' in interfaces: + chosen_interface = 'gtk' + + # try qt* for non-kde: + elif 'qt4' in interfaces: + chosen_interface = 'qt4' + elif 'qt3' in interfaces: + chosen_interface = 'qt3' + + # interfaces is empty + else: + raise SystemExit, ' *** no available interfaces, this should not happen' + + import_interface(chosen_interface) + |