2021-03-18 05:29:58 +00:00
|
|
|
# Python imports
|
|
|
|
import os
|
|
|
|
|
|
|
|
# Lib imports
|
|
|
|
|
|
|
|
# Application imports
|
|
|
|
|
|
|
|
|
|
|
|
class Path:
|
2022-10-28 01:41:27 +00:00
|
|
|
def get_home(self) -> str:
|
2021-04-28 03:09:21 +00:00
|
|
|
return os.path.expanduser("~") + self.subpath
|
|
|
|
|
2022-10-28 01:41:27 +00:00
|
|
|
def get_path(self) -> str:
|
2022-02-11 06:29:50 +00:00
|
|
|
return f"/{'/'.join(self.path)}" if self.path else f"/{''.join(self.path)}"
|
2021-03-18 05:29:58 +00:00
|
|
|
|
2022-10-28 01:41:27 +00:00
|
|
|
def get_path_list(self) -> list:
|
2021-03-18 05:29:58 +00:00
|
|
|
return self.path
|
|
|
|
|
2022-10-28 01:41:27 +00:00
|
|
|
def push_to_path(self, dir: str):
|
2021-03-18 05:29:58 +00:00
|
|
|
self.path.append(dir)
|
|
|
|
self.load_directory()
|
|
|
|
|
2022-10-28 01:41:27 +00:00
|
|
|
def pop_from_path(self) -> None:
|
2022-02-11 06:29:50 +00:00
|
|
|
try:
|
|
|
|
self.path.pop()
|
2021-03-18 05:29:58 +00:00
|
|
|
|
2022-02-11 06:29:50 +00:00
|
|
|
if not self.go_past_home:
|
|
|
|
if self.get_home() not in self.get_path():
|
|
|
|
self.set_to_home()
|
2021-03-18 05:29:58 +00:00
|
|
|
|
2022-02-11 06:29:50 +00:00
|
|
|
self.load_directory()
|
|
|
|
except Exception as e:
|
|
|
|
pass
|
2021-03-18 05:29:58 +00:00
|
|
|
|
2022-10-28 01:41:27 +00:00
|
|
|
def set_path(self, path: str) -> bool:
|
2021-11-27 07:54:08 +00:00
|
|
|
if path == self.get_path():
|
2022-10-28 01:41:27 +00:00
|
|
|
return False
|
2021-11-27 07:54:08 +00:00
|
|
|
|
|
|
|
if os.path.isdir(path):
|
|
|
|
self.path = list( filter(None, path.replace("\\", "/").split('/')) )
|
|
|
|
self.load_directory()
|
|
|
|
return True
|
|
|
|
|
|
|
|
return False
|
2021-03-18 05:29:58 +00:00
|
|
|
|
2022-10-28 01:41:27 +00:00
|
|
|
def set_path_with_sub_path(self, sub_path: str) -> bool:
|
2021-11-27 07:54:08 +00:00
|
|
|
path = os.path.join(self.get_home(), sub_path)
|
|
|
|
if path == self.get_path():
|
|
|
|
return False
|
|
|
|
|
|
|
|
if os.path.isdir(path):
|
|
|
|
self.path = list( filter(None, path.replace("\\", "/").split('/')) )
|
|
|
|
self.load_directory()
|
|
|
|
return True
|
|
|
|
|
|
|
|
return False
|
2021-03-18 05:29:58 +00:00
|
|
|
|
2022-10-28 01:41:27 +00:00
|
|
|
def set_to_home(self) -> None:
|
2021-03-18 05:29:58 +00:00
|
|
|
home = os.path.expanduser("~") + self.subpath
|
|
|
|
path = list( filter(None, home.replace("\\", "/").split('/')) )
|
|
|
|
self.path = path
|
|
|
|
self.load_directory()
|