16
16
import sys
17
17
import argparse
18
18
import re
19
+ import signal
19
20
20
21
# This code should stay on top to handle relative imports in case of direct call of FireDM.py
21
22
if __package__ is None :
32
33
from .controller import Controller , set_option
33
34
from .tkview import MainWindow
34
35
from .cmdview import CmdView
35
- from .utils import parse_urls , parse_bytes
36
- from .setting import get_user_settings , load_setting
36
+ from .utils import parse_urls , parse_bytes , size_format
37
+ from .setting import load_setting
37
38
from .version import __version__
38
39
39
40
@@ -249,8 +250,9 @@ def speed(txt):
249
250
help = 'Number of retries to download a file, default=%(default)s.' )
250
251
downloader .add_argument (
251
252
'-l' , '--speed-limit' , dest = 'speed_limit' ,
252
- type = speed , metavar = 'LIMIT' , default = get_default ("speed_limit" ),
253
- help = 'download speed limit, in bytes per second (e.g. 100K or 5M), zero means no limit, default=%(default)s.' )
253
+ type = speed , metavar = 'LIMIT' , default = config .speed_limit ,
254
+ help = f'download speed limit, in bytes per second (e.g. 100K or 5M), zero means no limit, '
255
+ f'current value={ size_format (config .speed_limit )} /s.' )
254
256
downloader .add_argument (
255
257
'--concurrent' , dest = 'max_concurrent_downloads' ,
256
258
type = int , metavar = 'NUMBER' , default = get_default ("max_concurrent_downloads" ),
@@ -350,9 +352,29 @@ def getversion(mod):
350
352
# update config module with custom settings
351
353
config .__dict__ .update (custom_settings )
352
354
355
+ guimode = True if len (sys .argv ) == 1 or args .gui else False
356
+ controller = None
357
+
358
+ def cleanup ():
359
+ if guimode or args .persistent :
360
+ setting .save_setting ()
361
+ controller .quit ()
362
+
363
+ def signal_handler (signum , frame ):
364
+ print ('\n \n user interrupt operation, cleanup ...' )
365
+ signal .signal (signum , signal .SIG_IGN ) # ignore additional signals
366
+ cleanup ()
367
+ sys .exit (0 )
368
+
369
+ signal .signal (signal .SIGINT , signal_handler )
370
+
353
371
# ------------------------------------------------------------------------------------------------------------------
354
372
# if running application without arguments will start the gui, otherwise will run application in cmdline
355
- if len (sys .argv ) > 1 and not args .gui :
373
+ if guimode :
374
+ # GUI
375
+ controller = Controller (view_class = MainWindow , custom_settings = custom_settings )
376
+ controller .run ()
377
+ else :
356
378
config .log_level = 1
357
379
controller = Controller (view_class = CmdView , custom_settings = custom_settings )
358
380
@@ -376,13 +398,7 @@ def getversion(mod):
376
398
377
399
config .shutdown = True
378
400
379
- if args .persistent :
380
- setting .save_setting ()
381
- else :
382
- # GUI
383
- controller = Controller (view_class = MainWindow , custom_settings = custom_settings )
384
- controller .run ()
385
- setting .save_setting ()
401
+ cleanup ()
386
402
387
403
388
404
if __name__ == '__main__' :
0 commit comments