Skip to content

Commit

Permalink
Update base.
Browse files Browse the repository at this point in the history
  • Loading branch information
HsOjo committed Feb 15, 2020
1 parent 45ace42 commit 0ce7c74
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 15 deletions.
18 changes: 13 additions & 5 deletions app/base/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ def __init__(self, config_class):
'shell_class': self.app_shell.__class__.__name__,
'runtime_dir': self.app_shell.get_runtime_dir(),
'app_path': self.app_shell.get_app_path(),
'is_restart': self.is_restart,
'restart_data': self.restart_data,
})

self.config = config_class()
Expand All @@ -46,6 +48,13 @@ def __init__(self, config_class):
def is_restart(self):
return '--restart' in sys.argv

@property
def restart_data(self):
if self.is_restart:
index = sys.argv.index('--restart') + 1
if index < len(sys.argv):
return common.load_b64_data(sys.argv[index])

def add_menu(self, name, title=None, callback=None, parent=None):
if parent is None:
parent = self.app.menu
Expand Down Expand Up @@ -196,7 +205,7 @@ def callback_exception(self, exc=None):
if 'KeyboardInterrupt' in exc:
self.quit()
elif 'Too many open files in system' in exc:
self.restart()
self.quit()

if osa_api.alert(self.lang.title_crash, self.lang.description_crash):
self.export_log()
Expand Down Expand Up @@ -227,19 +236,18 @@ def boom(type, value, tb):
def quit(self):
rumps.quit_application()

def restart(self):
def restart(self, data=None):
path = self.app_shell.get_app_path()
if path is not None:
system_api.open_url(path, True, p_args=('--restart',))
rd = common.dump_b64_data(data)
system_api.open_url(path, True, p_args=('--restart', rd))
else:
# quick restart for debug.
self.app.title = '\x00'
self.app.icon = None

path = common.python_path()
if path is not None:
if not self.is_restart:
sys.argv.append('--restart')
os.system('%s %s' % (path, ' '.join(sys.argv)))

self.quit()
Expand Down
14 changes: 14 additions & 0 deletions app/common.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import base64
import json
import os
import sys
import time
Expand Down Expand Up @@ -102,3 +104,15 @@ def python_path():
return paths[0]

return None


def load_b64_data(data_str) -> object:
data_str = base64.b64decode(data_str).decode()
data = json.loads(data_str)
return data


def dump_b64_data(obj) -> str:
data_str = json.dumps(obj)
data_str = base64.b64encode(data_str.encode()).decode()
return data_str
12 changes: 2 additions & 10 deletions app/util/system_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,18 +79,10 @@ def open_url(url, new=False, wait=False, bundle: str = None, p_args=None):

args.append(url)

p_args_conv = []
if p_args is not None:
for arg in p_args:
if isinstance(arg, str):
if ' ' in arg:
arg = '"%s"' % arg
else:
arg = '%s' % arg
p_args_conv.append(arg)

args.append('--args')
args.append(' '.join(p_args_conv))
for arg in p_args:
args.append(arg)

return common.execute(args)

Expand Down

0 comments on commit 0ce7c74

Please sign in to comment.