Commit 77356c6dcd635b665d64f926fc64c69ee06f8f85

Authored by Olli-Pekka Kahilakoski
Committed by GitHub
1 parent df13f481
Exists in master

Move initializations to main() (#409)

To enable starting InVesalius by importing app.py and calling main().
Showing 1 changed file with 35 additions and 27 deletions   Show diff stats
@@ -490,9 +490,41 @@ def print_events(topic=Publisher.AUTO_TOPIC, **msg_data): @@ -490,9 +490,41 @@ def print_events(topic=Publisher.AUTO_TOPIC, **msg_data):
490 utils.debug("%s\n\tParameters: %s" % (topic, msg_data)) 490 utils.debug("%s\n\tParameters: %s" % (topic, msg_data))
491 491
492 492
  493 +def init():
  494 + """
  495 + Initialize InVesalius.
  496 +
  497 + Mostly file-system related initializations.
  498 + """
  499 + #Is needed because of pyinstaller
  500 + multiprocessing.freeze_support()
  501 +
  502 + #Needed in win 32 exe
  503 + if hasattr(sys,"frozen") and sys.platform.startswith('win'):
  504 +
  505 + #Click in the .inv3 file support
  506 + root = winreg.HKEY_CLASSES_ROOT
  507 + key = "InVesalius 3.1\InstallationDir"
  508 + hKey = winreg.OpenKey (root, key, 0, winreg.KEY_READ)
  509 + value, type_ = winreg.QueryValueEx (hKey, "")
  510 + path = os.path.join(value,'dist')
  511 +
  512 + os.chdir(path)
  513 +
  514 + if not inv_paths.USER_INV_DIR.exists():
  515 + inv_paths.create_conf_folders()
  516 + if inv_paths.OLD_USER_INV_DIR.exists():
  517 + inv_paths.copy_old_files()
  518 +
  519 + if hasattr(sys,"frozen") and sys.frozen == "windows_exe":
  520 + # Set system standard error output to file
  521 + path = inv_paths.USER_LOG_DIR.join("stderr.log")
  522 + sys.stderr = open(path, "w")
  523 +
  524 +
493 def main(connection=None): 525 def main(connection=None):
494 """ 526 """
495 - Initialize InVesalius GUI 527 + Start InVesalius.
496 528
497 Parameters: 529 Parameters:
498 connection: An object to communicate with the outside world. 530 connection: An object to communicate with the outside world.
@@ -505,6 +537,8 @@ def main(connection=None): @@ -505,6 +537,8 @@ def main(connection=None):
505 functionality, InVesalius needs to be started by calling the main 537 functionality, InVesalius needs to be started by calling the main
506 function directly with a proper connection object. 538 function directly with a proper connection object.
507 """ 539 """
  540 + init()
  541 +
508 options, args = parse_command_line() 542 options, args = parse_command_line()
509 543
510 session = ses.Session() 544 session = ses.Session()
@@ -536,30 +570,4 @@ def main(connection=None): @@ -536,30 +570,4 @@ def main(connection=None):
536 570
537 571
538 if __name__ == '__main__': 572 if __name__ == '__main__':
539 - #Is needed because of pyinstaller  
540 - multiprocessing.freeze_support()  
541 -  
542 - #Needed in win 32 exe  
543 - if hasattr(sys,"frozen") and sys.platform.startswith('win'):  
544 -  
545 - #Click in the .inv3 file support  
546 - root = winreg.HKEY_CLASSES_ROOT  
547 - key = "InVesalius 3.1\InstallationDir"  
548 - hKey = winreg.OpenKey (root, key, 0, winreg.KEY_READ)  
549 - value, type_ = winreg.QueryValueEx (hKey, "")  
550 - path = os.path.join(value,'dist')  
551 -  
552 - os.chdir(path)  
553 -  
554 - if not inv_paths.USER_INV_DIR.exists():  
555 - inv_paths.create_conf_folders()  
556 - if inv_paths.OLD_USER_INV_DIR.exists():  
557 - inv_paths.copy_old_files()  
558 -  
559 - if hasattr(sys,"frozen") and sys.frozen == "windows_exe":  
560 - # Set system standard error output to file  
561 - path = inv_paths.USER_LOG_DIR.join("stderr.log")  
562 - sys.stderr = open(path, "w")  
563 -  
564 - # Init application  
565 main() 573 main()