diff --git a/chirp/__init__.py b/chirp/__init__.py index 7b488218..04ae5219 100644 --- a/chirp/__init__.py +++ b/chirp/__init__.py @@ -17,7 +17,7 @@ import os import sys from glob import glob -CHIRP_VERSION = "0.3.0dev" +CHIRP_VERSION = "py3dev" module_dir = os.path.dirname(sys.modules["chirp"].__file__) __all__ = [] diff --git a/chirp/wxui/__init__.py b/chirp/wxui/__init__.py index e69de29b..700d8ed2 100644 --- a/chirp/wxui/__init__.py +++ b/chirp/wxui/__init__.py @@ -0,0 +1,59 @@ +import argparse +import gettext +import os +import sys + +from chirp import directory +from chirp import logger + + +def chirpmain(): + import wx + from chirp.ui import config + from chirp.wxui import main + + directory.import_drivers() + gettext.install('CHIRP') + 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") + parser.add_argument("--onlydriver", nargs="+", + help="Include this driver while loading") + parser.add_argument("--inspect", action="store_true", + help="Show wxPython inspector") + if sys.platform == 'linux': + parser.add_argument('--no-linux-gdk-backend', action='store_true', + help='Do not force GDK_BACKEND=x11') + logger.add_arguments(parser) + args = parser.parse_args() + + logger.handle_options(args) + + directory.import_drivers(limit=args.onlydriver) + + CONF = config.get() + if CONF.get('developer', 'state'): + from chirp.drivers import fake + fake.register_fakes() + + # wxGTK on Wayland seems to have problems. Override GDK_BACKEND to + # use X11, unless we were asked not to + if sys.platform == 'linux' and not args.no_linux_gdk_backend: + os.putenv('GDK_BACKEND', 'x11') + + app = wx.App() + mainwindow = main.ChirpMain(None, title='CHIRP') + mainwindow.Show() + for fn in args.files: + mainwindow.open_file(fn, select=False) + + if args.inspect: + from wx.lib import inspection + inspection.InspectionTool().Show() + + app.MainLoop() diff --git a/chirpwx.py b/chirpwx.py index f96ff359..74d89f66 100755 --- a/chirpwx.py +++ b/chirpwx.py @@ -1,67 +1,8 @@ #!/usr/bin/env python3 -import argparse -import gettext -import os import sys -import wx -import wx.aui -import wx.grid -import wx.lib.newevent - -# Import the drivers module before directory for frozen builds -from chirp import drivers - -from chirp import directory -from chirp import logger - -from chirp.ui import config -from chirp.wxui import main - +from chirp.wxui import chirpmain if __name__ == '__main__': - gettext.install('CHIRP') - 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") - parser.add_argument("--onlydriver", nargs="+", - help="Include this driver while loading") - parser.add_argument("--inspect", action="store_true", - help="Show wxPython inspector") - if sys.platform == 'linux': - parser.add_argument('--no-linux-gdk-backend', action='store_true', - help='Do not force GDK_BACKEND=x11') - logger.add_arguments(parser) - args = parser.parse_args() - - logger.handle_options(args) - - directory.safe_import_drivers(limit=args.onlydriver) - - CONF = config.get() - if CONF.get('developer', 'state'): - from chirp.drivers import fake - fake.register_fakes() - - # wxGTK on Wayland seems to have problems. Override GDK_BACKEND to - # use X11, unless we were asked not to - if sys.platform == 'linux' and not args.no_linux_gdk_backend: - os.putenv('GDK_BACKEND', 'x11') - - app = wx.App() - mainwindow = main.ChirpMain(None, title='CHIRP') - mainwindow.Show() - for fn in args.files: - mainwindow.open_file(fn, select=False) - - if args.inspect: - import wx.lib.inspection - wx.lib.inspection.InspectionTool().Show() - - app.MainLoop() + sys.exit(chirpmain()) diff --git a/requirements.txt b/requirements.txt index 0b0e7806..4be25fb5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ six -wxPython==4.2.0 +wxPython>=4.0,<4.2.0 # See https://github.com/wxWidgets/Phoenix/issues/2225 pyserial future requests diff --git a/setup.py b/setup.py index 8b9c16cc..ff8f8c57 100644 --- a/setup.py +++ b/setup.py @@ -1,166 +1,27 @@ -from __future__ import print_function - -import sys -import glob -import os +from distutils.core import setup +from glob import glob +from setuptools import find_packages from chirp import CHIRP_VERSION -import chirp -from chirp import directory -directory.safe_import_drivers() +desktop_files = glob("share/*.desktop") +image_files = glob("images/*") +stock_configs = glob("stock_configs/*") - -def staticify_chirp_module(): - import chirp - - with open("chirp/__init__.py", "w") as init: - print("CHIRP_VERSION = \"%s\"" % CHIRP_VERSION, file=init) - print("__all__ = %s\n" % str(chirp.__all__), file=init) - - print("Set chirp/__init__.py::__all__ = %s" % str(chirp.__all__)) - - -def staticify_drivers_module(): - import chirp.drivers - - with file("chirp/drivers/__init__.py", "w") as init: - print("__all__ = %s\n" % str(chirp.drivers.__all__), file=init) - - print("Set chirp/drivers/__init__.py::__all__ = %s" % str( - chirp.drivers.__all__)) - - -def win32_build(): - from distutils.core import setup - import py2exe - - try: - # if this doesn't work, try import modulefinder - import py2exe.mf as modulefinder - import win32com - for p in win32com.__path__[1:]: - modulefinder.AddPackagePath("win32com", p) - for extra in ["win32com.shell"]: # ,"win32com.mapi" - __import__(extra) - m = sys.modules[extra] - for p in m.__path__[1:]: - modulefinder.AddPackagePath(extra, p) - except ImportError: - # no build path setup, no worries. - pass - - staticify_chirp_module() - staticify_drivers_module() - - opts = { - "py2exe": { - "includes": "pango,atk,gobject,cairo,pangocairo," + - "win32gui,win32com,win32com.shell," + - "email.iterators,email.generator,gio", - - "compressed": 1, - "optimize": 2, - "bundle_files": 3, - # "packages": "" - } - } - - mods = [] - for mod in chirp.__all__: - mods.append("chirp.%s" % mod) - for mod in chirp.drivers.__all__: - mods.append("chirp.drivers.%s" % mod) - opts["py2exe"]["includes"] += ("," + ",".join(mods)) - - setup( - zipfile=None, - windows=[{'script': "chirpw", - 'icon_resources': [(0x0004, 'share/chirp.ico')], - }], - options=opts) - - -def macos_build(): - from setuptools import setup - import shutil - - APP = ['chirp-%s.py' % CHIRP_VERSION] - shutil.copy("chirpw", APP[0]) - DATA_FILES = [('../Frameworks', ['/opt/local/lib/libpangox-1.0.dylib']), - ('../Resources/', ['/opt/local/lib/pango']), - ] - OPTIONS = {'argv_emulation': True, "includes": "gtk,atk,pangocairo,cairo"} - - setup( - app=APP, - data_files=DATA_FILES, - options={'py2app': OPTIONS}, - setup_requires=['py2app'], - ) - - EXEC = 'bash ./build/macos/make_pango.sh ' + \ - '/opt/local dist/chirp-%s.app' % CHIRP_VERSION - # print "exec string: %s" % EXEC - os.system(EXEC) - - -def default_build(): - try: - from setuptools import setup - except ImportError: - from distutils.core import setup - from glob import glob - - os.system("make -C locale clean all") - - desktop_files = glob("share/*.desktop") - # form_files = glob("forms/*.x?l") - image_files = glob("images/*") - _locale_files = glob("locale/*/LC_MESSAGES/CHIRP.mo") - stock_configs = glob("stock_configs/*") - - locale_files = [] - for f in _locale_files: - locale_files.append(("share/chirp/%s" % os.path.dirname(f), [f])) - - print("LOC: %s" % str(locale_files)) - - xsd_files = glob("chirp*.xsd") - - setup( - name="chirp", - packages=["chirp", "chirp.drivers", "chirp.ui", "tests", "tests.unit", - "chirp.wxui"], - version=CHIRP_VERSION, - scripts=["chirpw", "rpttool", "chirpwx.py"], - data_files=[('share/applications', desktop_files), - ('share/chirp/images', image_files), - ('share/chirp', xsd_files), - ('share/doc/chirp', ['COPYING']), - ('share/pixmaps', ['share/chirp.png']), - ('share/man/man1', ["share/chirpw.1"]), - ('share/chirp/stock_configs', stock_configs), - ] + locale_files) - - -def nuke_manifest(*files): - for i in ["MANIFEST", "MANIFEST.in"]: - if os.path.exists(i): - os.remove(i) - - if not files: - return - - f = file("MANIFEST.in", "w") - for fn in files: - print(fn, file=f) - f.close() - - -if sys.platform == "darwin": - macos_build() -elif sys.platform == "win32": - win32_build() -else: - default_build() +setup(name='chirp', + descrption='A cross-platform cross-radio programming tool', + packages=find_packages(), + version=CHIRP_VERSION, + url='https://chirp.danplanet.com', + python_requires=">=3.3,<4", + install_required=['wxPython', 'serial'], + entry_points={ + 'console_scripts': ["chirp=chirp.wxui:chirpmain"], + }, + data_files=[('share/applications', desktop_files), + ('share/chirp/images', image_files), + ('share/doc/chirp', ['COPYING']), + ('share/pixmaps', ['share/chirp.png']), + ('share/man/man1', ["share/chirpw.1"]), + ('share/chirp/stock_configs', stock_configs), + ])