示例#1
0
    def __init__(self, guitype, root):
        gobject.GObject.__init__(self)
        self.current_target = None
        self.current_position = None
        self.create_recursive(self.SETTINGS_DIR)

        dataroot = path.join(root, "data")

        self._install_updates()

        self.__read_config()
        self.connect("settings-changed", self.__on_settings_changed)
        self.connect("save-settings", self.__on_save_settings)
        self.create_recursive(self.settings["download_output_dir"])
        self.create_recursive(self.settings["download_map_path"])

        self.downloader = downloader.FileDownloader(
            self.settings["options_username"],
            self.settings["options_password"],
            self.COOKIE_FILE,
            cachedownloader.GeocachingComCacheDownloader.login_callback,
        )

        self.pointprovider = provider.PointProvider(self.CACHES_DB, geocaching.GeocacheCoordinate, "geocaches")

        self.gui = guitype(self, dataroot)

        actor_tts = TTS(self)
        actor_tts.connect("error", lambda caller, msg: self.gui.show_error(msg))
        # actor_notify = Notify(self)

        self.emit("settings-changed", self.settings, self)

        if "--sim" in argv:
            self.gps_thread = gpsreader.FakeGpsReader(self)
            gobject.timeout_add(1000, self.__read_gps)
            self.set_target(gpsreader.FakeGpsReader.get_target())
        elif "gpsprovider" in self.gui.USES:
            self.gps_thread = gpsreader.GpsReader()
            # self.gps_thread = gpsreader.FakeGpsReader(self)
            gobject.timeout_add(1000, self.__read_gps)
        elif "locationgpsprovider" in self.gui.USES:
            self.gps_thread = gpsreader.LocationGpsReader(self.__read_gps_cb_error, self.__read_gps_cb_changed)
            gobject.idle_add(self.gps_thread.start)
        if "geonames" in self.gui.USES:
            import geonames

            self.geonames = geonames.Geonames(self.downloader)

        if "--startup-only" in argv:
            return

        self.gui.show()
示例#2
0
    def __init__(self, guitype, gpstype, extensions):
        """
        Initialize the application.
        
        guitype -- Python type of the gui which is to be used.
        gpstype -- String indicating the desired GPS access method.
        extensions -- List of strings indicating desired extensions.
        """
        gobject.GObject.__init__(self)
        self.current_target = None
        self.current_position = None
        self.auto_update_checked = False
        self.create_recursive(self.SETTINGS_DIR)

        # self.cachedownloader is populated in settings handling.
        self.cachedownloader = None
        self._install_updates()

        self.__read_config()
        
        # Check tile URLs for outdated URLs after Openstreetmap URL change
        for name, details in self.settings['map_providers']:
            prev = details['remote_url']
            details['remote_url'] = sub(r'//(.*).openstreetmap.org/([a-z]*/)?', '//tile.openstreetmap.org/', prev)
            if prev != details['remote_url']:
                logger.info("Replaced url '%s' with '%s' because Openstreetmaps changed their URLs." % (prev, details['remote_url']))
        
        self.connect('settings-changed', self.__on_settings_changed)
        self.connect('save-settings', self.__on_save_settings)
        self.create_recursive(self.settings['download_output_dir'])
        self.create_recursive(self.settings['download_map_path'])
        
        self.downloader = downloader.FileDownloader(self.COOKIE_FILE)
                
        self.pointprovider = provider.PointProvider(self.CACHES_DB, geocaching.GeocacheCoordinate)

        self.gui = guitype(self)
        
        
        if ('debug_log_to_http' in self.settings and self.settings['debug_log_to_http']) or '--remote' in argv:
            http_handler = logging.handlers.HTTPHandler("danielfett.de", "http://www.danielfett.de/files/collect.php")
            buffering_handler = logging.handlers.MemoryHandler(100, target = http_handler)
            logging.getLogger('').addHandler(buffering_handler)
            logging.getLogger('').setLevel(logging.DEBUG)
            logging.debug("Remote logging activated!")
            # Now reset the setting to default
            self.settings['debug_log_to_http'] = False
        
        
        self.emit('settings-changed', self.settings, self)
        self.emit('fieldnotes-changed')  

        self.__setup_gps(gps)
            
        if 'geonames' in extensions:
            import geonames
            self.geonames = geonames.Geonames(self.downloader)
            
        if 'tts' in extensions:
            from actors.notify import Notify
            actor_tts = TTS(self)
            actor_tts.connect('error', lambda caller, msg: self.emit('error', msg))
            actor_notify = Notify(self)

        if '--startup-only' in argv:
            return

        self.gui.show()
        if not '--profile' in argv:
            exit()