#include #include #include #include #include #include "projet.h" /* Controle l'affichage des ‚tapes de traitement ex‚cut‚ par projet. Ce systŠme permet d'afficher ce que r‚alise projet au fur et … mesure. En plus d'afficher, le systŠme m‚morise les messages. Il est alors possible de revenir en arriŠre. De plus, un fichier permet de retracer le traitement effectu‚ durant une session. Evidemment, ce que vous venez de lire est du Vaporware. D'ailleurs une version de ce module est en chantier pour WINDOWS NT. Elle devrait ˆtre disponible sur IBM370, AS400, VAX, HP ainsi que VIC-20 et NINTENDO. */ PUBLIC WINDOW_LOG::WINDOW_LOG ( const char *fname, // Enregistre dans le fichier fname si != NULL int append) // Ajoute ou cr‚ation du log. : PROJET_LOG (fname,append) { dia = NULL; maxlin = 10; if (fname != NULL) log_getpath (fname,fpath); } PUBLIC WINDOW_LOG::~WINDOW_LOG() { if (dia != NULL) edit(); delete dia; } /* Enregistre dans le window de log */ PROTECTED VIRTUAL void WINDOW_LOG::sendstr (const char *str) { PROJET_LOG::sendstr (str); // Enregistre dans le fichier #if 0 while (*str != '\0'){ char tmp[80]; char *pt = tmp; /* #Sp‚cification: log / window / tabulateur Les messages inscrit dans le log visuel peuvent contenir des tabulateur \t. Le tabulateur est standard … 8 caractŠres. */ while (*str != '\0' && *str != '\n' && (int)(pt-tmp) < 75){ if (*str == '\t'){ str++; if ((pt-tmp)%8 == 0) *pt++ = ' '; while ((pt-tmp)%8 != 0) *pt++ = ' '; }else{ *pt++ = *str++; } } *pt = '\0'; if (*str == '\n') str++; buf.appendf ("%s\n",tmp); } if (dia != NULL){ static time_t last = 0; time_t t = time(NULL); if (t - last > 2){ last = t; dia->reload (); diagui_flush(); } } #endif } /* Affiche le log */ PUBLIC void WINDOW_LOG::show () { if (dia == NULL){ dia = new DIALOG; dia->newf_textarea ("",buf,70,10); int nof=0; dia->show ("",fpath,help_nil,nof,MENUBUT_CANCEL); } } /* Efface le log. Le contenu n'est pas perdu. */ PUBLIC void WINDOW_LOG::hide () { delete dia; dia = NULL; } PUBLIC void WINDOW_LOG::edit() { if (dia != NULL){ int nof=0; buf.append ("Termine\n"); dia->reload (); dia->edit ("",fpath,help_nil,nof,MENUBUT_CANCEL); } }