| 
									
										
										
										
											2017-11-28 09:36:32 -05:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2017-12-17 00:25:46 -05:00
										 |  |  | import subprocess | 
					
						
							| 
									
										
										
										
											2017-11-28 09:36:32 -05:00
										 |  |  | import sys | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def is_bundled(): | 
					
						
							|  |  |  |     return getattr(sys, 'frozen', False) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def local_path(path): | 
					
						
							|  |  |  |     if local_path.cached_path is not None: | 
					
						
							|  |  |  |         return os.path.join(local_path.cached_path, path) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if is_bundled(): | 
					
						
							|  |  |  |         # we are running in a bundle | 
					
						
							| 
									
										
										
										
											2017-12-17 00:25:46 -05:00
										 |  |  |         local_path.cached_path = sys._MEIPASS # pylint: disable=protected-access,no-member | 
					
						
							| 
									
										
										
										
											2017-11-28 09:36:32 -05:00
										 |  |  |     else: | 
					
						
							|  |  |  |         # we are running in a normal Python environment | 
					
						
							|  |  |  |         local_path.cached_path = os.path.dirname(os.path.abspath(__file__)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return os.path.join(local_path.cached_path, path) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | local_path.cached_path = None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def output_path(path): | 
					
						
							|  |  |  |     if output_path.cached_path is not None: | 
					
						
							|  |  |  |         return os.path.join(output_path.cached_path, path) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if not is_bundled(): | 
					
						
							|  |  |  |         output_path.cached_path = '.' | 
					
						
							|  |  |  |         return os.path.join(output_path.cached_path, path) | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         # has been packaged, so cannot use CWD for output. | 
					
						
							|  |  |  |         if sys.platform == 'win32': | 
					
						
							|  |  |  |             #windows | 
					
						
							|  |  |  |             import ctypes.wintypes | 
					
						
							|  |  |  |             CSIDL_PERSONAL = 5       # My Documents | 
					
						
							|  |  |  |             SHGFP_TYPE_CURRENT = 0   # Get current, not default value | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             buf = ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH) | 
					
						
							|  |  |  |             ctypes.windll.shell32.SHGetFolderPathW(None, CSIDL_PERSONAL, None, SHGFP_TYPE_CURRENT, buf) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             documents = buf.value | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         elif sys.platform == 'darwin': | 
					
						
							| 
									
										
										
										
											2017-12-17 00:25:46 -05:00
										 |  |  |             from AppKit import NSSearchPathForDirectoriesInDomains # pylint: disable=import-error | 
					
						
							| 
									
										
										
										
											2017-11-28 09:36:32 -05:00
										 |  |  |             # http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSSearchPathForDirectoriesInDomains | 
					
						
							|  |  |  |             NSDocumentDirectory = 9 | 
					
						
							|  |  |  |             NSUserDomainMask = 1 | 
					
						
							|  |  |  |             # True for expanding the tilde into a fully qualified path | 
					
						
							|  |  |  |             documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, True)[0] | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             raise NotImplementedError('Not supported yet') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         output_path.cached_path = os.path.join(documents, 'ALttPEntranceRandomizer') | 
					
						
							|  |  |  |         if not os.path.exists(output_path.cached_path): | 
					
						
							|  |  |  |             os.mkdir(output_path.cached_path) | 
					
						
							|  |  |  |         return os.path.join(output_path.cached_path, path) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | output_path.cached_path = None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def open_file(filename): | 
					
						
							|  |  |  |     if sys.platform == 'win32': | 
					
						
							|  |  |  |         os.startfile(filename) | 
					
						
							|  |  |  |     else: | 
					
						
							| 
									
										
										
										
											2017-12-17 00:25:46 -05:00
										 |  |  |         open_command = 'open' if sys.platform == 'darwin' else 'xdg-open' | 
					
						
							| 
									
										
										
										
											2017-11-28 09:36:32 -05:00
										 |  |  |         subprocess.call([open_command, filename]) | 
					
						
							| 
									
										
										
										
											2017-12-02 09:21:04 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | def close_console(): | 
					
						
							|  |  |  |     if sys.platform == 'win32': | 
					
						
							|  |  |  |         #windows | 
					
						
							|  |  |  |         import ctypes.wintypes | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             ctypes.windll.kernel32.FreeConsole() | 
					
						
							| 
									
										
										
										
											2017-12-17 00:25:46 -05:00
										 |  |  |         except Exception: | 
					
						
							| 
									
										
										
										
											2017-12-02 09:21:04 -05:00
										 |  |  |             pass |