Ejemplo n.º 1
0
void ASSISTANT::PagePre()
{
    qDebug() << "Dans PagePre";
    if(liste)
    {
        disconnect(this);
        disconnect(page(lect),0,0,0);
        page(lect)->close();
        qDebug() << "Lect = " <<lect;
        if(lect-1)
        {
            disconnect(this,0,0,0);
            disconnect(page(lect),0,0,0);
            lect--;
            QObject::connect(page(lect), SIGNAL(precedent()), this, SLOT(PagePre()));
            qDebug() << "Connexion Suivant, il est " << QTime::currentTime().toString("HH:mm::ss");
            QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(PageSuiv()));
            page(lect)->show();
        }
        else
        {
            disconnect(this,0,0,0);
            QObject::connect(page(lect), SIGNAL(precedent()), this, SLOT(Fermer()));
            qDebug() << "Connexion Suivant, il est " << QTime::currentTime().toString("HH:mm::ss");
            QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(PageSuiv()));
            qDebug() << "Show";
            page(lect)->show();
            qDebug() << "Après Show";
        }
    }
}
Ejemplo n.º 2
0
creerDossier::creerDossier(Etudiant& etu,QWidget *parent) :
    QDialog(parent),
    ui(new Ui::creerDossier),
    e(etu)
{
    ui->setupUi(this);
//    TemplateManager<Formation>& tForm=TemplateManager<Formation>::getInstance();
    ui->InscriptionTable->hide();
    ui->InscriptionTable_2->hide();
    ui->InscriptionText->hide();
    ui->InscriptionText2->hide();
    ui->AjouterLigne->hide();
    if(e.getDossier().getFormation().size()==0)
    {
        ui->Suivant->setEnabled(false);
    }

    ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
    ui->buttonBox->button(QDialogButtonBox::Cancel)->hide();

    displayFormationTables();

    QObject::connect(ui->Valider, SIGNAL(pressed()),  this, SLOT(validerFormation()));
    QObject::connect(ui->Suivant, SIGNAL(pressed()),  this, SLOT(suivant()));
}
Ejemplo n.º 3
0
void inserer(t_valeurMot mot) {
	/*Insère un élément dans la liste, en préservant l'ordre croissant des valeurs de la liste*/
	int valeur, valeur_actuelle;
	
	valeur = mot.score;
	
	
	if(liste_vide()) {
		ajout_droit(mot);
	} else {
		en_tete();
		valeur_elt(&valeur_actuelle);
		while(!hors_liste() && valeur_actuelle < valeur) {
			suivant();
			valeur_elt(&valeur_actuelle);
		}
		
		if(hors_liste()) {
			en_queue();
			ajout_droit(mot);
		} else {
			ajout_gauche(mot);
		}
	}
}
Ejemplo n.º 4
0
void ASSISTANT::PageSuiv()
{
    qDebug() << "Dans PageSuiv";
    page(lect)->close();
    disconnect(page(lect),0,0,0);
    if(page(lect)->terminer)
    {
        QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(Fermer()));}
    else
    {lect++;
        QObject::connect(page(lect+1), SIGNAL(precedent()), this, SLOT(PagePre()));
        QObject::connect(page(lect+1), SIGNAL(suivant()), this, SLOT(PageSuiv()));
    page(lect)->show();
    }

}
Ejemplo n.º 5
0
    //les actions
void MNotePad::creerAction()
{
    a_nouveauTab = new QAction(QIcon("images/nouveau.png"),tr("nouveau"),this);
    a_nouveauTab->setShortcut(tr("Ctrl+N"));
    connect(a_nouveauTab,SIGNAL(triggered()),this,SLOT(nouveauTab()));
    a_ouvrirTab = new QAction(QIcon("images/ouvrir.png"),tr("ouvrir"),this);
    a_ouvrirTab->setShortcut(tr("Ctrl+O"));
    connect(a_ouvrirTab,SIGNAL(triggered()),this,SLOT(ouvrirTab()));
    a_saveTab = new QAction(QIcon("images/save.png"),tr("save"),this);
    a_saveTab->setShortcut(tr("Ctrl+S"));
    connect(a_saveTab,SIGNAL(triggered()),this,SLOT(saveTab()));
    a_fermerTab = new QAction(tr("fermer"),this);
    a_fermerTab->setShortcut(tr("Ctrl+W"));
    connect(a_fermerTab,SIGNAL(triggered()),this,SLOT(fermerTab()));
    a_quitter = new QAction(QIcon("images/quitter.png"),tr("quitter"),this);
    a_quitter->setShortcut(tr("Ctrl+Q"));
    connect(a_quitter,SIGNAL(triggered()),qApp,SLOT(quit()));

    a_precedent = new QAction(QIcon("images/precedent.png"),tr("precedent"),this);
    a_precedent->setShortcut(tr("Ctrl+Z"));
    connect(a_precedent,SIGNAL(triggered()),this,SLOT(precedent()));
    a_suivant = new QAction(QIcon("images/suivant.png"),tr("suivant"),this);
    a_suivant->setShortcut(tr("Ctrl+F"));
    connect(a_suivant,SIGNAL(triggered()),this,SLOT(suivant()));
    a_font = new QAction(QIcon("images/font.png"),tr("font"),this);
    connect(a_font,SIGNAL(triggered()),this,SLOT(font()));

    a_apropos = new QAction(QIcon("images/apropos.png"),tr("A propos"),this);
    connect(a_apropos,SIGNAL(triggered()),this,SLOT(apropos()));
    a_aproposQt = new QAction(QIcon("images/aproposQt.png"),tr("A propos de Qt"),this);
    connect(a_aproposQt,SIGNAL(triggered()),qApp,SLOT(aboutQt()));
    }
Ejemplo n.º 6
0
/*
 ** Test du noyau preemptif. Lier ce fichier avec noyau.c et noyaufil.c
 */
int main(void)
{
    serial_init(115200);
    printf("Kernel started !");
    file_init();

    ajoute(3);
    affic_file();
    ajoute(5);
    ajoute(1);
    ajoute(0);
    ajoute(2);
    affic_file();

    suivant();
    affic_file();

    retire(0);
    affic_file();

    ajoute(6);

    affic_file();

    while(1);

    return 0;
}
Ejemplo n.º 7
0
void ASSISTANT::Ouvrir()
{
    qDebug() << "Dans Ouvrir";
    qDebug() << "Lect = " <<lect;
    if(liste)
    {
        QObject::connect(page(lect), SIGNAL(precedent()), this, SLOT(Fermer()));
        if(page(lect)->terminer)
        {
            QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(Fermer()));}
        else
        {
            QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(PageSuiv()));
        }
        page(lect)->show();
    }
}
Ejemplo n.º 8
0
// chercher un pointeur sur l'élément contenant "objet" de la liste ls
static Element* chercherElement (ListeS* ls, Objet* objet) {
booleen trouve = faux;
Element* ptc = premier (ls);
while ( (ptc != NULL) && !trouve ) {
trouve = ls->comparer (objet, ptc->reference) == 0;
if (!trouve) ptc = suivant (ptc);
}
return trouve ? ptc : NULL;
}
Ejemplo n.º 9
0
Liste::~Liste()
{
	premier();
	for (int i = 0; i < get_longueur(); i++)
	{
		effacer();
		suivant();
	}
}
Ejemplo n.º 10
0
// parcourir du premier vers le dernier
void parcoursListeSym (ListeS* ls, void (*f) (Objet*)) {
if (listeVide(ls)) {
printf ("Liste symétrique vide\n");
} else {
Element* ptc = premier (ls);
while (ptc != NULL) {
f (ptc->reference);
ptc = suivant (ptc);
}
}
}
Ejemplo n.º 11
0
int est_present(t_coord v){
	t_coord valeur;
	if(!liste_vide()){
		en_tete();
		while(!hors_liste()){
			valeur_elt(&valeur);
			if(valeur.x==v.x && valeur.y==v.y) return 1;
			suivant();
		}
	}
	return 0;
}
Ejemplo n.º 12
0
Bool Est_present(Liste l, char* e) {

    Joueur courant = l.tab[l.tete];
    Bool ok = true;
    while(ok) {
        if(strcmp(courant.nom, e)) {
            return true;
        } else {
            courant = suivant(l, courant);
            ok = strcmp(courant.nom, "END")?false:true;
        }
    }

    return false;
}
Ejemplo n.º 13
0
void afficher_liste(void)
/* Affiche les valeurs de la liste */
{
	int elem;

	if(liste_vide())
		printf("La liste est vide\n");
	else
	{
		printf("\nLa liste contient: ");
		en_tete();
		while(!hors_liste())
		{
			valeur_elt(&elem);
			printf("%s : %i\n", elem.score, elem.mot);
			suivant();
		}
		printf("\n");
	}
}
Ejemplo n.º 14
0
void creerDossier::suivant()
{
    ui->FormationTable->hide();
    ui->FormationText->hide();
    ui->FormationTable_2->hide();
    ui->FormationText2->hide();
    ui->Suivant->hide();
    ui->Valider->setEnabled(true);

    QObject::disconnect(ui->Valider, SIGNAL(pressed()),  this, SLOT(validerFormation()));
    QObject::disconnect(ui->Suivant, SIGNAL(pressed()),  this, SLOT(suivant()));

    QObject::connect(ui->Valider, SIGNAL(pressed()),  this, SLOT(validerInscription()));

    QObject::connect(ui->AjouterLigne, SIGNAL(clicked()),  this, SLOT(addRowInscription()));
    ui->InscriptionTable->show();
    ui->InscriptionTable_2->show();
    ui->InscriptionText->show();
    ui->InscriptionText2->show();
    ui->AjouterLigne->show();
    ui->InscriptionTable->setRowCount(0);
    fillInscriptionTable(0);
}
Ejemplo n.º 15
0
ListeDescripteurs liste(char* nom_fichier, bool affichage) {
    int fd = open(nom_fichier, O_RDONLY);
    if (fd == -1) {
        printf("%s n'a pas pu être ouvert... Merci de vérifier son chemin\n", nom_fichier);
        return NULL;
    }
    //printf("Avant lseek\n");
    off_t finDescripteurs = lseek(fd, ((-1)  * sizeof(uint)), SEEK_END);             //on se met au descripteur global d'archive
    uint archive;
    //printf("avant read\n");
    read(fd, &archive, 32);
    //printf("avant premierDescripteur\n");
    off_t premierDescripteur = getPremierDescripteur(archive);      //on construit le 1° descripteur
    
    lseek(fd, premierDescripteur, SEEK_SET);

    uint bufferDescripteursBruts;
    uint* descripteursBruts = malloc(255 * sizeof(uint)); 
    int lus;
    int i=0;
    while((lus = read(fd, &bufferDescripteursBruts, sizeof(uint))) > 0){
        descripteursBruts[i] = bufferDescripteursBruts;
    }
    // On a récupérer les descripteurs en "brut" (que des int qui se suivent)
    if(descripteursBruts == NULL){
        printf("le buffer est vide\n");
    }
    // Cette fonction nous créé une liste de descripteurs
    ListeDescripteurs liste =  getIntToDescripteurs(descripteursBruts);

    // partie affichage
    if (affichage) {
        int j;
        printf("type:date:nom");
        if (affiche)
            printf(":taille(octets):uid:gid:droits");
        printf("\n");

        int profTab = 0;
        if(courant(liste) == NULL){
            printf("Erreur : impossible de récupérer la configuration de l'archive\n");
            detruireListeDescripteurs(liste);
            return NULL;
        }
        do{
            char* espacement_actuel = "";
            profTab = getProfondeur(courant(liste));
            for (j = 0; j < profTab; j++) { //tabulation par rapport a la profondeur du fichier
                strcat(espacement_actuel, espacement);
            }
            char* nameS = getFilename(courant(liste));
            printf("nom de fichier%s\n", getNbCarac(courant(liste)));
    	    printf("%s->%u:%u:%s", espacement_actuel, getType(courant(liste)), getDate(courant(liste)), nameS), getFilename(courant(liste));

            if (affiche) { //le reste des parametres de l'archive si demandé
                printf(":%u:%u:%u:%u", getTailleFichier(courant(liste)), getUid(courant(liste)), getGid(courant(liste)), getDroits(courant(liste)));
            }
            printf("\n");
        }while(suivant(liste));
    }
    close(fd);
    return liste;
}
Ejemplo n.º 16
0
/*--------------------------------------------------------------------------*
 *                  ORDONNANCEUR preemptif optimise                         *
 *                                                                          *
 *             !! Cette fonction doit s'exécuter en mode IRQ !!             *
 *  !! Pas d'appel direct ! Utiliser schedule pour provoquer une            *
 *  commutation !!                                                          *
 *--------------------------------------------------------------------------*/
void __attribute__((naked)) scheduler(void) {
	register CONTEXTE *p;
	register unsigned int sp asm("sp");  /* Pointeur de pile */

	/* Sauvegarder le contexte complet sur la pile IRQ */
	__asm__ __volatile__(
		/* Sauvegarde registres mode system */
		"stmfd sp,{r0-r12,sp,lr}^\t\n"
		/* Attendre un cycle */
		"nop\t\n"
		/* Ajustement pointeur de pile */
		"sub sp, sp, #60\t\n"
		/* Sauvegarde lr IRQ */
		"stmfd sp!,{lr}\t\n"
		/* Sauvegarde de spsr_irq */
		"mrs r0, SPSR\t\n"
		"stmfd sp!,{r0}\t\n"
	);

	/* Réinitialiser le timer si nécessaire */
	if (_ack_timer) {
		/* Acquiter l'événement de comparaison du Timer pour pouvoir */
		/* obtenir le déclencement d'une prochaine interruption */
		timerComparedOccured(TIMER1);
	}
	else {
	  _ack_timer = 1;
	}

	/* memoriser le pointeur de pile */
	_contexte[_tache_c].sp_irq = sp;
	/* recherche du suivant */
	_tache_c = suivant();
	/* Incrémenter le compteur d'activations  */
	compteurs[_tache_c]++;
	/* p pointe sur la nouvelle tache courante*/
	p = &_contexte[_tache_c];

	/* tache prete ? */
	if (p->status == PRET) {
		/* Charger sp_irq initial */
		sp = p->sp_irq;
		/* Passer en mode système */
		_set_arm_mode_(ARMMODE_SYS);
		/* Charger sp_sys initial */
		sp = p->sp_ini;
		/* status tache -> execution */
		p->status = EXEC;
		/* autoriser les interuptions */
		_irq_enable_();
		/* lancement de la tâche */
		p->tache_adr();
	}
	else {
		/* tache deja en execution, restaurer sp_irq */
		sp = p->sp_irq;
	}

	/* Restaurer le contexte complet depuis la pile IRQ */
	__asm__ __volatile__(
		/* Restaurer spsr_irq */
		"ldmfd sp!,{r0}\t\n"
		"msr SPSR, r0\t\n"
		/* et lr_irq */
		"ldmfd sp!,{lr}\t\n"
		/* Restaurer registres mode system */
		"ldmfd sp,{r0-r12,sp,lr}^\t\n"
		/* Attendre un cycle */
		"nop\t\n"
		/* Ajuster pointeur de pile irq */
		"add sp, sp, #60\t\n"
		/* Retour d'exception */
		"subs pc, lr, #4\t\n"
	); 
}
Ejemplo n.º 17
0
int createFiles(char** files, int nb_fichiers, ListeDescripteurs* descripteurs, int archive) {
    struct stat info; // pour stocker les informtations d'un fichier / répertoire
    int s; // pour vérifier que les informations soient bien accessibles
    int total_fichiers = 0;

    int fd;
    int lus, ecrits; // permettent de stocker le nombre d'octets lus et écrits dans un fichier

    char b_read[TAILLE_BUFFER]; // buffer pour écrire dans l'archive

    uint profondeur = 0;

    int i;
    for (i = 0; i < nb_fichiers; i++) // on parcourt chaque fichier
    {
        s = stat(files[i], &info); // on récupère ses informations
           
            if (S_ISDIR(info.st_mode)) // si c'est un dossier
            {

                
             if (affiche)
                    printf("%s/\n ", files[i]);
                Descripteur d = construireDescripteur(0, (uint) info.st_mtime, (uint) info.st_size, (uint) info.st_uid, (uint) info.st_gid,
                        (uint) info.st_mode, profondeur, (uint) sizeof (files[i]) / sizeof (char), files[i]);
                ajouter(*descripteurs, d); // On ajoute le descripteur du dossier parent à la liste
                total_fichiers += createDossier(files[i], descripteurs, archive, &profondeur);
                if (affiche)
                    printf("\n\tDone\n");
            } else if (S_ISREG(info.st_mode)) // si c'est un fichier
            {
                if (affiche)
                    printf("%s ", files[i]);
                fd = open(files[i], O_RDONLY, NULL);

                if (fd == -1) // si, on ne peut pas ouvrir le fichier en lecture seule
                {
                    printf("Erreur lors de l'ouverture du fichier %s\n", files[i]);
                    continue; // on passe au suivant
                }
                else
                {
                    while ((lus = read(fd, &b_read, TAILLE_BUFFER)) > 0) // on lit tout le fichier
                    {
                        ecrits = write(archive, &b_read, lus); // on écrit ce qui vient d'être lu
                        if (ecrits != lus) // si on a pas pu tout écrire
                        {
                            printf("Archive corrompue. Tout le contenu de %s n'a pas pu être copié dans l'archive !\n", files[i]);
                        }
                    }

                    Descripteur d = construireDescripteur(1, (uint) info.st_mtime, (uint) info.st_size, (uint) info.st_uid, (uint) info.st_gid,
                            (uint) info.st_mode, profondeur, (uint) strlen(files[i]), files[i]);
                    ajouter(*descripteurs, d);
                    suivant(*descripteurs);
                    
                    total_fichiers += 1;

                    if (close(fd) == -1) {
                        printf("Erreur lors de la fermeture de %s\n", files[i]);
                        return -1;
                    }
                    if (affiche)
                        printf("\tDone\n");    
                }
            }
            else
                printf("Type non géré pour %s car %s\n", files[i], info.st_mode);
        
   // 
    }
       
    return total_fichiers;
}