A micro-blogging tool with multiple interfaces.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

113 lines
3.5 KiB

#!/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 <http://www.gnu.org/licenses/>.
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()