diff options
| author | Matthew Poletiek <matthew.poletiek@gmail.com> | 2020-12-08 21:03:16 -0600 |
|---|---|---|
| committer | Matthew Poletiek <matthew.poletiek@gmail.com> | 2020-12-08 21:03:16 -0600 |
| commit | e99416456afd4aa8bde42016826f9a345291cbf3 (patch) | |
| tree | a7a95639cd1cb5dbe2d91a2ca8e8defafac4296d /chirpw | |
| parent | 194cf4e5e0b6a2811103a9b739a72b9afe2b886c (diff) | |
| download | chirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.gz chirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.xz | |
Initial Commit
Diffstat (limited to 'chirpw')
| -rwxr-xr-x | chirpw | 167 |
1 files changed, 167 insertions, 0 deletions
@@ -0,0 +1,167 @@ +#!/usr/bin/env python +# +# Copyright 2014 Dan Smith <dsmith@danplanet.com> +# +# 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 glob +import os +import six + +import sys +import os +import locale +import gettext +import argparse +import logging +import urllib + +if six.PY3: + from gi import pygtkcompat + pygtkcompat.enable() + pygtkcompat.enable_gtk(version='3.0') + +from chirp import chirp_common +from chirp import directory +from chirp import logger +from chirp import elib_intl +from chirp import platform +from chirp.ui import config + +directory.safe_import_drivers() + +LOG = logging.getLogger("chirpw") + +# Does not work with python3 chirpw +# urllib.URLopener.version = chirp_common.http_user_agent() + +localepath = platform.get_platform().find_resource("locale") + +conf = config.get() +manual_language = conf.get("language", "state") +langs = [] +if manual_language and manual_language != "Auto": + lang_codes = {"English": "en_US", + "Polish": "pl", + "Italian": "it", + "Dutch": "nl", + "German": "de", + "Hungarian": "hu", + "Russian": "ru", + "Portuguese (BR)": "pt_BR", + "French": "fr", + "Spanish": "es_ES", + } + try: + LOG.info("Language: %s", lang_codes[manual_language]) + langs = [lang_codes[manual_language]] + except KeyError: + LOG.error("Unsupported language `%s'" % manual_language) +else: + lc, encoding = locale.getdefaultlocale() + if (lc): + langs = [lc] + try: + langs += os.getenv("LANG").split(":") + except: + pass + +try: + if os.name == "nt": + elib_intl._putenv("LANG", langs[0]) + else: + os.putenv("LANG", langs[0]) +except IndexError: + pass +path = "locale" +gettext.bindtextdomain("CHIRP", localepath) +gettext.textdomain("CHIRP") +lang = gettext.translation("CHIRP", localepath, languages=langs, + fallback=True) + + +# Python <2.6 does not have str.format(), which chirp uses to make translation +# strings nicer. So, instead of installing the gettext standard "_()" function, +# we can install our own, which returns a string of the following class, +# which emulates the new behavior, thus allowing us to run on older Python +# versions. +class CompatStr(str): + def format(self, **kwargs): + base = lang.gettext(self) + for k, v in kwargs.items(): + base = base.replace("{%s}" % k, str(v)) + return base + +pyver = sys.version.split()[0] + +try: + vmaj, vmin, vrel = pyver.split(".", 3) +except: + vmaj, vmin = pyver.split(".", 2) + vrel = 0 + +if int(vmaj) == 2 and int(vmin) < 6: + # Python <2.6, emulate str.format() + import __builtin__ + + def lang_with_format(string): + return CompatStr(string) + __builtin__._ = lang_with_format +else: + # Python >=2.6, use normal gettext behavior + lang.install() + +parser = argparse.ArgumentParser() +parser.add_argument("files", metavar="file", nargs='*', help="File to open") +parser.add_argument("--module", metavar="module", + help="Load module on startup") +logger.add_version_argument(parser) +parser.add_argument("--profile", action="store_true", + help="Enable profiling") +logger.add_arguments(parser) +args = parser.parse_args() + +logger.handle_options(args) + +a = None +if True: + from chirp.ui import mainapp + a = mainapp.ChirpMain() + +# Be sure to load module before opening files +if args.module: + a.load_module(args.module) + +for i in args.files: + LOG.info("Opening %s", i) + a.do_open(i) + +a.show() + +if args.profile: + import cProfile + import pstats + import gtk + cProfile.run("gtk.main()", "chirpw.stats") + p = pstats.Stats("chirpw.stats") + p.sort_stats("cumulative").print_stats(10) +else: + import gtk + gtk.main() + +if config._CONFIG: + config._CONFIG.set("last_dir", + platform.get_platform().get_last_dir(), + "state") + config._CONFIG.save() |
