summaryrefslogtreecommitdiff
path: root/domestic/utility/loading.py
diff options
context:
space:
mode:
Diffstat (limited to 'domestic/utility/loading.py')
-rw-r--r--domestic/utility/loading.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/domestic/utility/loading.py b/domestic/utility/loading.py
new file mode 100644
index 0000000..39c3198
--- /dev/null
+++ b/domestic/utility/loading.py
@@ -0,0 +1,31 @@
+import threading
+import time
+import sys
+
+from domestic.utility.status_message import *
+from domestic.global_state import *
+
+
+def loading(text, blacklist):
+ if state['settings']['loading-animation']:
+ start_time = time.time()
+
+ while True:
+ for i in range(len(text)):
+ if not state['settings']['dynamic']['is-loading']:
+ sys.exit(0)
+ if text[i].lower() in blacklist:
+ continue
+ text = text[:i].lower() + text[i:].capitalize()
+ time_taken = time.time() - start_time
+ status_message(f'[{time_taken:.1f}] {text}', 'loading', {'end': True})
+ time.sleep(0.1)
+ else:
+ status_message(text.capitalize(), 'loading', {'end': True})
+
+def start_loading(text, blacklist=('.', ' ')):
+ state['settings']['dynamic']['is-loading'] = True
+ threading.Thread(target=loading, args=(text, blacklist), daemon=True).start()
+
+def stop_loading():
+ state['settings']['dynamic']['is-loading'] = False \ No newline at end of file