diff --git a/gestion/affich_tools.py b/gestion/affich_tools.py index 1df2f234..891a7515 100755 --- a/gestion/affich_tools.py +++ b/gestion/affich_tools.py @@ -82,6 +82,17 @@ def tableau(largeurs,data) : [ ( données entète), (données ligne1), .... ] """ sep_col = u'|' + + # Si l'une des largeurs est '*', alors on la met la plus grande possible + if '*' in largeurs: + rows, cols = get_size() + nlargeurs = [] + for n in largeurs: + if n != '*': + nlargeurs.append(n) + else: + nlargeurs.append(max(cols - sum(filter(lambda x:x!='*',largeurs)) - len(largeurs) - 1, 3)) + largeurs = nlargeurs # Ligne de séparation entète corps s=u'\n' @@ -109,6 +120,20 @@ def tableau(largeurs,data) : f = f.replace(u'\n',s,1) # Insertion du séparateur entète - corps return f[:-1] # Supression du \n final +def get_size(): + """Retourne la taille de l'écran. + + Sous la forme d'un tuble (colonnes, lignes)""" + try: + from termios import TIOCGWINSZ + from struct import pack, unpack + from fcntl import ioctl + s = pack("HHHH", 0, 0, 0, 0) + rows, cols = unpack("HHHH", ioctl(sys.stdout.fileno(), TIOCGWINSZ, s))[:2] + return (rows, cols) + except: + return (80, 24) + def prompt(prompt, defaut=''): """ Pose la question prompt, retourne la réponse """ sys.stdout.write(coul(prompt,'gras')) diff --git a/gestion/whos.py b/gestion/whos.py index ca2dffa5..22b9bbce 100755 --- a/gestion/whos.py +++ b/gestion/whos.py @@ -129,7 +129,7 @@ def adhers_brief(adhers) : return u"Machines en rouge = machines avec limitation de services\n" + \ u"P : paiement année en cours, le fond vert indique le précâblage\n" + \ u"C : carte d'étudiant année en cours\n" + \ - tableau([5, 30 , 5, 1, 1,30], data) + tableau([5, 30 , 5, 1, 1, '*'], data) def machines_brief(machines) : """ @@ -158,7 +158,7 @@ def machines_brief(machines) : data.append((m.id() , t, m.nom().split('.')[0], p, a.chbre(), bl)) return u"Le propriétaire en rouge signale un problème administratif\n" + \ - tableau([5, 4, 18, 30, 5, 10], data) + tableau([5, 4, 18, '*', 5, 10], data) def clubs_brief(clubs) : """ @@ -198,7 +198,7 @@ def clubs_brief(clubs) : return u"Machines en rouge = machines avec limitation de services\n" + \ u"P : signature charte année en cours, le fond vert indique le précâblage\n" + \ - tableau([5, 15 , 6, 1, 21, 24], data) + tableau([5, 15 , 6, 1, 21, '*'], data) def list_machines(machines) : @@ -219,7 +219,7 @@ def list_machines(machines) : # Données data.append((m.id() , t, m.nom().split('.')[0], m.ip(), m.mac(), bl)) - return tableau([5, 4, 18, 17, 19, 10], data) + return tableau([5, 4, '*', 17, 19, 10], data) def list_bornes(bornes) : """ @@ -245,7 +245,7 @@ def list_bornes(bornes) : l = u'????' data.append((b.id() , b.nom().split('.')[0], b.ip(), b.mac(), b.canal(), b.puissance(),l )) - return u"C=canal, P=puissance\n" + tableau([5, 14, 17, 19, 2, 2, 13], data) + return u"C=canal, P=puissance\n" + tableau([5, 14, 17, 19, 2, 2, '*'], data) def adher_details(adher) : """