Passed
Push — master ( fd9e5f...b4cf22 )
by Alexander
01:34
created

things3.things3_app.open_browser()   A

Complexity

Conditions 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
#!/usr/bin/env python3
2
# -*- coding: utf-8 -*-
3
4
"""KanbanView (app) for Things 3."""
5
6
from __future__ import print_function
7
8
# pylint: disable=duplicate-code
9
__author__ = "Luc Beaulieu and Alexander Willner"
10
__copyright__ = "Copyright 2018 Luc Beaulieu / 2020 Alexander Willner"
11
__credits__ = ["Luc Beaulieu", "Alexander Willner"]
12
__license__ = "Apache License 2.0"
13
__version__ = "2.0.1"
14
__maintainer__ = "Alexander Willner"
15
__email__ = "[email protected]"
16
__status__ = "Development"
17
18
import sys
19
from os import system
20
from threading import Thread
21
import webview  # type: ignore
0 ignored issues
show
introduced by
Unable to import 'webview'
Loading history...
22
import objc  # type: ignore # pylint: disable=unused-import # noqa F401
0 ignored issues
show
introduced by
Unable to import 'objc'
Loading history...
23
import pkg_resources.py2_warn  # type: ignore # pylint: disable=unused-import # noqa F401
0 ignored issues
show
introduced by
third party import "import pkg_resources.py2_warn" should be placed before "import webview"
Loading history...
24
import things3.things3_api as things3_api
25
26
27
def open_api():
28
    """Delay opening the browser."""
29
    things3_api.APP.run(port=things3_api.PORT)
30
31
32
FILE = "kanban.html"
33
THREAD = Thread(target=open_api)
34
35
36
def main():
37
    """Run the app."""
38
    # kill possible zombie processes; can't use psutil in py2app context
39
    system('lsof -nti:' + str(things3_api.PORT) +
40
           ' | xargs kill -9')
41
42
    webview.create_window(
43
        title='KanbanView for Things 3',
44
        url=f'http://localhost:{things3_api.PORT}/{FILE}',
45
        width=1024,
46
        min_size=(1024, 600),
47
        frameless=True)
48
49
    try:
50
        THREAD.start()
51
        webview.start()
52
    except KeyboardInterrupt:
53
        print("Shutting down...")
54
        THREAD.join()
55
        sys.exit(0)
56
57
58
if __name__ == "__main__":
59
    main()
60