Bienvenue dans le dépôt des applications MiniPavi ! Ce dépôt contient trois applications Minitel modernisées grâce à la passerelle MiniPavi. Chaque application exploite les capacités de MiniPavi pour offrir une expérience Minitel enrichie et interactive.
3615 CRYPTO est une application dédiée aux cryptomonnaies. Elle permet aux utilisateurs de suivre les cours des principales cryptomonnaies en temps réel, directement sur leur Minitel.
- Fonctionnalités :
- Suivi des cours des cryptomonnaies.
- Mises à jour en temps réel.
- Navigation fluide entre les différentes cryptomonnaies.
Ces applications utilisent la passerelle MiniPavi pour communiquer avec les services Minitel. MiniPavi permet de moderniser les services Minitel en utilisant des technologies web comme les websockets et HTTP.
- Avantages de MiniPavi :
- Compatibilité avec les émulateurs Minitel modernes.
- Facilité de développement grâce à l'utilisation de langages web.
- Support pour le contenu multimédia via l'interface WebMedia.
Pour installer et configurer ces applications, suivez les instructions ci-dessous :
-
Cloner le dépôt :
git clone https://github.com/renaudgweb/MiniPaviPy.git cd MiniPaviPy
-
Configurer les applications :
- Assurez-vous d'avoir un serveur web configuré pour exécuter les scripts PHP.
- Configurez les fichiers de configuration pour chaque application selon vos besoins.
-
Lancer les applications :
- Accédez aux applications via un émulateur Minitel ou un véritable terminal Minitel connecté à MiniPavi.
DisplayPaginatedText.py
elif context.get('step') == 10:
if MiniPaviCli.MiniPaviCli.fctn == 'SOMMAIRE':
context['step'] = 0 # Retour au sommaire
else:
# Récupération de l'éventuel objet existant dans le contexte utilisateur
obj_display_paginated_text = context.get('objDisplayPaginatedText')
if not isinstance(obj_display_paginated_text, DisplayPaginatedText):
# L'utilisateur n'a pas l'objet dans son contexte : il vient d'arriver sur cette rubrique
# Fond de page
vdt_start = MiniPaviCli.MiniPaviCli.clear_screen()
with open('fond-de-page.vdt', 'r') as file:
vdt_start += file.read()
# Effacement du texte affiché
vdt_clear_page = MiniPaviCli.MiniPaviCli.set_pos(3, 23)
vdt_clear_page += MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDNORM + MiniPaviCli.MiniPaviCli.repeat_char(' ', 33)
for i in range(18):
vdt_clear_page += MiniPaviCli.MiniPaviCli.set_pos(1, 21 - i)
vdt_clear_page += MiniPaviCli.VDT_BGBLUE + MiniPaviCli.MiniPaviCli.repeat_char(' ', 33)
# fichier contenant le texte
text_filename = 'le-texte.txt'
# titre Cyan , double hauteur
vdt_pre_title = MiniPaviCli.VDT_TXTCYAN + MiniPaviCli.VDT_SZDBLH
# Position du titre
l_title = 2
c_title = 11
# Position du compteur de page
l_counter = 21
c_counter = 35
# Compteur de page couleur Cyan
vdt_pre_counter = MiniPaviCli.VDT_TXTCYAN
# Position début du texte
l_text = 5
c_text = 2
# Longueur maximum d'une ligne
max_length_text = 38
# Couleur normale : jaune
normal_color = MiniPaviCli.VDT_TXTYELLOW
# Couleur spéciale : blanc
special_color = MiniPaviCli.VDT_TXTWHITE
# Rien de particulier à afficher avant chaque ligne
vdt_pre_text = ''
# Bas de page si ni Suite ni Retour acceptés (Sommaire n'est pas gérée par l'objet, mais directement par le script)
vdt_none = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDINV + " Sommaire "
# Bas de page si uniquement Suite accepté
vdt_suite = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDINV + " Suite " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Sommaire "
# Bas de page si uniquement Retour accepté
vdt_retour = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDINV + " Retour " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Sommaire "
# Bas de page si Suite et Retour acceptés
vdt_suite_retour = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDINV + " Suite " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Retour " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Sommaire "
# Message d'erreur si première page atteinte et appui sur Retour
vdt_err_no_prev = MiniPaviCli.MiniPaviCli.to_g2("Première page !")
# Message d'erreur si dernière page atteinte et appui sur Suite
vdt_err_no_next = MiniPaviCli.MiniPaviCli.to_g2("Dernière page !")
# 16 lignes maximum par page
lines = 16
# initialisation
obj_display_paginated_text = DisplayPaginatedText(
vdt_start, vdt_clear_page, text_filename, l_title, c_title, vdt_pre_title,
l_counter, c_counter, vdt_pre_counter, l_text, c_text,
max_length_text, normal_color, special_color, vdt_pre_text, vdt_none, vdt_suite, vdt_retour,
vdt_suite_retour, vdt_err_no_prev, vdt_err_no_next, lines
)
# Execution
r = obj_display_paginated_text.process('', vdt)
else:
# L'utilisateur a déjà l'objet dans son contexte, execution
r = obj_display_paginated_text.process(MiniPaviCli.MiniPaviCli.fctn, vdt)
# A ce stade, $vdt contient le code videotex à envoyer à l'utilisateur
# On conserve l'objet dans le contexte utilisateur pour le récupérer lors de sa prochaine action
context['objDisplayPaginatedText'] = obj_display_paginated_text
# On ne change pas la valeur de $step car à la prochaine action on exécute de nouveau cette partie du script
DisplayList.py
if context.get('step') == 20:
if MiniPaviCli.MiniPaviCli.fctn == 'SOMMAIRE':
context['step'] = 10 # Retour au sommaire
else:
# Liste des éléments
list_items = [
'1er choix',
'2ème choix',
'3ème choix',
'4ème choix'
]
# Récupération de l'éventuel objet existant dans le contexte utilisateur
obj_display_list = context.get('objDisplayList')
if not isinstance(obj_display_list, DisplayList):
# L'utilisateur n'a pas l'objet dans son contexte : il vient d'arriver sur cette rubrique
vdt_start = MiniPaviCli.MiniPaviCli.clear_screen()
with open('fond-de-page.vdt', 'r') as file:
vdt_start += file.read()
# Effacement du texte affiché
vdt_clear_page = MiniPaviCli.MiniPaviCli.set_pos(3, 23)
vdt_clear_page += MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDNORM + MiniPaviCli.MiniPaviCli.repeat_char(' ', 33)
for i in range(18):
vdt_clear_page += MiniPaviCli.MiniPaviCli.set_pos(1, 21 - i)
vdt_clear_page += MiniPaviCli.VDT_BGBLUE + MiniPaviCli.MiniPaviCli.repeat_char(' ', 33)
# Position du compteur de page
l_counter = 21
c_counter = 35
# Compteur de page couleur Cyan
vdt_pre_counter = MiniPaviCli.VDT_TXTCYAN
# Position début du texte
l_text = 5
c_text = 2
# On affiche rien de spécial avant chaque élément
vdt_pre_text = ''
# Bas de page si ni Suite ni Retour acceptés (Sommaire n'est pas géré par l'objet, mais directement par le script)
vdt_none = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.MiniPaviCli.to_g2("N°+ ") + MiniPaviCli.VDT_FDINV + " Envoi " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Sommaire "
# Bas de page si uniquement Suite accepté
vdt_suite = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.MiniPaviCli.to_g2("N°+ ") + MiniPaviCli.VDT_FDINV + " Envoi " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Suite " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Somm. "
# Bas de page si uniquement Retour accepté
vdt_retour = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.MiniPaviCli.to_g2("N°+ ") + MiniPaviCli.VDT_FDINV + " Envoi " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Retour " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Somm. "
# Bas de page si Suite et Retour acceptés
vdt_suite_retour = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.MiniPaviCli.to_g2("N°+ ") + MiniPaviCli.VDT_FDINV + " Envoi " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Suite " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Retour " + MiniPaviCli.VDT_FDNORM
# Message d'erreur si première page atteinte et appui sur Retour
vdt_err_no_prev = MiniPaviCli.MiniPaviCli.to_g2("Première page !")
# Message d'erreur si dernière page atteinte et appui sur Suite
vdt_err_no_next = MiniPaviCli.MiniPaviCli.to_g2("Dernière page !")
# Message d'erreur si choix incorrect saisi
vdt_err_choice = MiniPaviCli.MiniPaviCli.to_g2("Choix incorrect !")
# 8 éléments maximum par page
lines = 8
# 1 ligne vide entre chaque élément
space_lines = 1
# Le numéro de l'élément sera sur fond bleu, texte vert, inversé.
# Le signe # représente le numéro de l'élément et est modifié à la volée
vdt_item_num = MiniPaviCli.VDT_BGBLUE + MiniPaviCli.VDT_TXTGREEN + MiniPaviCli.VDT_FDINV + ' # ' + MiniPaviCli.VDT_FDNORM + MiniPaviCli.VDT_TXTYELLOW
# Initialisation
obj_display_list = DisplayList(
vdt_start,
vdt_clear_page,
list_items,
l_counter,
c_counter,
vdt_pre_counter,
vdt_item_num,
l_text,
c_text,
vdt_pre_text,
vdt_none,
vdt_suite,
vdt_retour,
vdt_suite_retour,
vdt_err_no_prev,
vdt_err_no_next,
vdt_err_choice,
lines,
space_lines
)
# Exécution
r, vdt = obj_display_list.process('', '', vdt)
else:
# L'utilisateur a déjà l'objet dans son contexte, exécution
r, vdt = obj_display_list.process(MiniPaviCli.MiniPaviCli.fctn, MiniPaviCli.MiniPaviCli.content[0], vdt)
# On conserve l'objet dans le contexte utilisateur pour le récupérer lors de sa prochaine action
context['objDisplayList'] = obj_display_list
# Attente d'une saisie
cmd = MiniPaviCli.MiniPaviCli.create_input_txt_cmd(34, 23, 2, MiniPaviCli.MSK_ENVOI | MiniPaviCli.MSK_SOMMAIRE | MiniPaviCli.MSK_REPETITION | MiniPaviCli.MSK_SUITE | MiniPaviCli.MSK_RETOUR, True, ' ', '')
if r == -1 or r is False:
# L'utilisateur n'a pas saisi de choix (ou choix invalide)
break
# Un choix valide a été saisi, $r représente l’index du choix dans $list
# On traite le choix saisi
vdt += MiniPaviCli.MiniPaviCli.write_line_0('Choix = ' + list_items[r])
break
🔗 MiEdit
Pour toute question ou suggestion, n'hésitez pas à ouvrir une issue ou à me contacter directement.