#!/usr/bin/env python # -*- coding: utf-8 -*- # Mitter, a Maemo client for Twitter. # Copyright (C) 2007, 2008 Julio Biason # # This program 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 3 of the License, or # (at your option) any later version. # # This program 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 . import time import urllib import sys import os import os.path import logging import warnings import gettext import mitterlib.network as network from mitterlib.configopt import ConfigOpt from mitterlib.network import Networks from mitterlib.ui import Interfaces log = logging.getLogger('mitter') # ---------------------------------------------------------------------- # i18n stuff # ---------------------------------------------------------------------- local_path = os.path.realpath(os.path.dirname(sys.argv[0])) gettext.bindtextdomain('mitter', local_path) gettext.textdomain('mitter') lang = gettext.translation('mitter', local_path, fallback = True) _ = lang.gettext def main(): """Main function.""" # options options = ConfigOpt() options.add_group('General', ('General options')) options.add_option('-d', '--debug', group='General', option='debug', action='store_true', help=_('Display debugging information.'), default=False, is_config_option=False) options.add_option('-i', '--interface', group='General', option='interface', default=None, metavar='INTERFACE', help=_('Interface to be used.')) # Start the network manager (which will add the network options) connection = Networks(options) # Start the interface manager and make interfaces add their options to the # command line interfaces = Interfaces(options) interfaces.options() # Parse the command line options and the config file options() # start the logging service if options['General']['debug']: logging.basicConfig(level=logging.DEBUG) else: logging.basicConfig(level=logging.INFO) log = logging.getLogger('mitter') # disable the warnings. Interfaces may choose to receive the warnings # changing the filter to "error" warnings.simplefilter('ignore') # select an interface (preferably, the one the user selected in the # command line) preferred_interface = options['General']['interface'] log.debug('Config interface: %s', preferred_interface) if 'interface' in options.conflicts: preferred_interface = options.conflicts['interface'] log.debug('Command line interface: %s', preferred_interface) # load the module with the selected interface (or pick one for the user if # they don't chose anything.) display = interfaces.load(connection, preferred_interface) if display is None: log.error(_('Sorry, no interface could be found for your system')) return # display the interface (the interface should take care of updating # itself) display() options.save() if __name__ == '__main__': main()