summaryrefslogtreecommitdiff
path: root/domestic/utility/loading.py
blob: 39c3198ec69e7bd006be64de964a97e43251ce4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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