feat: simple progress bar

This commit is contained in:
Swann
2020-02-09 00:41:00 +01:00
parent c42c0cb017
commit 6975edfb66
2 changed files with 35 additions and 11 deletions

View File

@ -3,7 +3,7 @@ import logging
import bpy
from . import operators, presence, utils
from .libs.replication.replication.constants import FETCHED, RP_COMMON, STATE_ACTIVE
from .libs.replication.replication.constants import FETCHED, RP_COMMON, STATE_ACTIVE, STATE_SYNCING, STATE_SRV_SYNC
logger = logging.getLogger(__name__)
logger.setLevel(logging.WARNING)
@ -212,7 +212,7 @@ class DrawClient(Draw):
class ClientUpdate(Timer):
def __init__(self, timout=1):
def __init__(self, timout=.5):
super().__init__(timout)
def execute(self):
@ -273,3 +273,6 @@ class ClientUpdate(Timer):
# TODO: event drivent 3d view refresh
presence.refresh_3d_view()
# ui update
elif session:
presence.refresh_3d_view()

View File

@ -15,10 +15,27 @@ ICONS_PROP_STATES = ['TRIA_DOWN', # ADDED
'FILE_REFRESH', # UP
'TRIA_UP'] # CHANGED
def printProgressBar (iteration, total, prefix = '', suffix = '', decimals = 1, length = 100, fill = '', fill_empty=' '):
"""
Call in a loop to create terminal progress bar
@params:
iteration - Required : current iteration (Int)
total - Required : total iterations (Int)
prefix - Optional : prefix string (Str)
suffix - Optional : suffix string (Str)
decimals - Optional : positive number of decimals in percent complete (Int)
length - Optional : character length of bar (Int)
fill - Optional : bar fill character (Str)
"""
percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total)))
filledLength = int(length * iteration // total)
bar = fill * filledLength + fill_empty * (length - filledLength)
return '{} |{}| {}%{}'.format(prefix, bar, percent, suffix)
def get_state_str(state):
state_str = 'None'
if state == STATE_WAITING:
state_str = 'WRMING UP DATA'
state_str = 'WARMING UP DATA'
elif state == STATE_SYNCING:
state_str = 'FETCHING FROM SERVER'
elif state == STATE_AUTH:
@ -26,7 +43,7 @@ def get_state_str(state):
elif state == STATE_CONFIG:
state_str = 'CONFIGURATION'
elif state == STATE_ACTIVE:
state_str = 'ACTIVE'
state_str = 'ONLINE'
elif state == STATE_SRV_SYNC:
state_str = 'PUSHING TO SERVER'
return state_str
@ -54,21 +71,25 @@ class SESSION_PT_settings(bpy.types.Panel):
pass
else:
cli_state = operators.client.state
row.label(text=f"Status : {get_state_str(cli_state['STATE'])}")
row = layout.row()
# STATE ACTIVE
if cli_state['STATE'] == STATE_ACTIVE:
row = layout.row()
row.operator("session.stop", icon='QUIT', text="Exit")
row = layout.row()
# STATE SYNCING
else:
row.label(text='Connecting:')
row = layout.row()
row.label(text=f"{get_state_str(cli_state['STATE'])}")
row = layout.row()
box = row.box()
if cli_state['STATE'] in [STATE_SYNCING,STATE_SRV_SYNC,STATE_WAITING]:
row.label(text=f"{cli_state['CURRENT']}/{cli_state['TOTAL']}")
box.label(text=printProgressBar(
cli_state['CURRENT'],
cli_state['TOTAL'],
length=16
))
row = layout.row()
row.operator("session.stop", icon='QUIT', text="CANCEL")