This is Controleur.m in view mode; [Download] [Up]
#import "Controleur.h" #import "InfoView.h" @implementation Controleur // // Rİcupİration des valeurs dans les diffİrentes zones de texte, // puis appel de la mİthode dessine dans l©objet graphe // - calculer:sender { int i; if (sender != self ) // Si le sender est le bouton OK { couleur =[[zoneCouleur target] indexOfItem:[zoneCouleur title]]; pas = [zonePas floatValueAt:0]; nbrSouris = [zoneNbrSouris intValueAt:0]; profondeur = [zoneNbrIter intValueAt:0]; for (i=0;i<nbrSouris;i++) { x[i] = [[matrice cellAt:(i*2):0] floatValue]; y[i] = [[matrice cellAt:(i*2+1):0] floatValue]; } } else [fenetre makeKeyAndOrderFront:self]; [graphe dessine:nbrSouris:profondeur:couleur:pas:x:y]; return self; } - charger:sender // // Rİcupİration des valeurs initiales ainsi que des paramÜtres dans un fichier // Attention : cette mİthode est appellİe soit par le menu "Open", soit par la mİthode // "app:openFile:type" (cas oò l©application est lancİe par un double click sur un fichier // ".mice" // { id panneau,cellule,leMenu,laMatrice; char *ext[2] = {"mice"}; char titre[100]; int i; FILE *fich; float r1,v1,b1,r2,v2,b2,rf,vf,bf; if (sender != self) // si le sender est le menu "Open" { panneau = [OpenPanel new]; [panneau setTitle:"Open"]; // Ouverture de l©OpenPanel en modal if ([panneau runModalForTypes:ext]) strcpy(nomdefichier , [panneau filename]); // Rİcupİration du fichier sİlectionnİ else return self; } fich = fopen(nomdefichier,"r"); // Ouverture du fichier for (i=0;i<6;i++) // Lecture de l©entŞte fscanf(fich,"%s",titre); fscanf(fich,"%f%d%d" ,&pas ,&nbrSouris ,&profondeur); // Lecture des paramÜtres if ((strcmp(titre,"V2.0")==0)||(strcmp(titre,"V1.3")==0)) { fscanf(fich,"%d",&couleur); if (titre[1] == '2') { fscanf(fich,"%f%f%f%f%f%f%f%f%f\n" ,&r1,&v1,&b1,&r2,&v2,&b2,&rf,&vf,&bf); [couleur1 setColor:NXConvertRGBToColor(r1,v1,b1)]; [couleur2 setColor:NXConvertRGBToColor(r2,v2,b2)]; [couleurFond setColor:NXConvertRGBToColor(rf,vf,bf)]; } } else couleur = 0; leMenu = [zoneCouleur target]; laMatrice = [leMenu itemList]; [laMatrice selectCellWithTag:couleur]; [zoneCouleur setTitle:[[laMatrice selectedCell] title]]; for (i=0;i<nbrSouris;i++) // Lecture des positions initiales fscanf(fich,"%f%f ",&x[i],&y[i]); fclose(fich); // Fermeture du fichier // Modification du titre de la fenŞtre strcpy(titre,"Of Mice And Men : "); strcat(titre,strrchr(nomdefichier,'/')+1); [fenetre setTitle:titre]; // Transfert des paramÜtres vers l©interface graphique [zonePas setFloatValue:pas at:0]; // Affectation au champ de texte // Rİcupİration de la valeur par le target (ici, un slider) [[zonePas target] takeFloatValueFrom:zonePas]; [zoneNbrSouris setIntValue:nbrSouris at:0]; [[zoneNbrSouris target] takeFloatValueFrom:zoneNbrSouris]; [zoneNbrIter setIntValue:profondeur at:0]; [[zoneNbrIter target] takeFloatValueFrom:zoneNbrIter]; for (i=0;i<nbrSouris;i++) { cellule = [matrice cellAt:(i*2):0]; [cellule setFloatValue:x[i]]; [[cellule target] takeFloatValueFrom:cellule]; cellule = [matrice cellAt:(i*2+1):0]; [cellule setFloatValue:y[i]]; [[cellule target] takeFloatValueFrom:cellule]; } [self calculer:self]; [posPanel orderFront:self]; [paramPanel orderFront:self]; [fenetre makeKeyAndOrderFront:self]; // Fait apparaätre la fenŞtre return self; } // // Ecriture dans un fichier ASCII des donnİes initiales et paramÜtres de l©image affichİe // - sauver:sender { id panneau; int i; FILE *fich; float r1,v1,b1,r2,v2,b2,rf,vf,bf; // Ouverture du SavePanel panneau = [SavePanel new]; [panneau setRequiredFileType:"mice"]; // Spİcifie l©extension des fichiers [panneau setTitle:"Save"]; if ([panneau runModal]) { fich = fopen([panneau filename],"w"); // Ouverture du fichier fprintf(fich,"Of Mice And Men - V2.0\n"); // Version du logiciel fprintf(fich,"%f %d %d %d\n" // Ecriture des paramÜtres ,pas , nbrSouris ,profondeur ,couleur); NXConvertColorToRGB([couleur1 color],&r1,&v1,&b1); NXConvertColorToRGB([couleur2 color],&r2,&v2,&b2); NXConvertColorToRGB([couleurFond color],&rf,&vf,&bf); fprintf(fich,"%f %f %f %f %f %f %f %f %f\n",r1,v1,b1,r2,v2,b2,rf,vf,bf); for (i=0;i<nbrSouris;i++) fprintf(fich,"%f %f \n",x[i],y[i]); // Ecriture des valeurs initiales fclose(fich); // Fermeture du fichier }; return self; } - nouveau : sender { int i; id cellule; strcpy(nomdefichier,"Untitled.mice"); [fenetre setTitle:nomdefichier]; [zonePas setFloatValue:0.99 at:0]; [[zonePas target] takeFloatValueFrom:zonePas]; [zoneNbrSouris setIntValue:4 at:0]; [[zoneNbrSouris target] takeFloatValueFrom:zoneNbrSouris]; [zoneNbrIter setIntValue:100 at:0]; [[zoneNbrIter target] takeFloatValueFrom:zoneNbrIter]; for (i=0;i<10;i++) { cellule = [matrice cellAt:(i*2):0]; [cellule setFloatValue:0.0]; [[cellule target] takeFloatValueFrom:cellule]; cellule = [matrice cellAt:(i*2+1):0]; [cellule setFloatValue:0.0]; [[cellule target] takeFloatValueFrom:cellule]; } [self appDidInit:self]; [graphe efface:self]; [posPanel orderFront:self]; [paramPanel orderFront:self]; [fenetre makeKeyAndOrderFront:self]; return self; } - showInfo:sender { if (infoView == nil) { if ([NXApp loadNibSection: "info.nib" owner: self] == nil) { return nil; } } [[infoView window] makeKeyAndOrderFront: nil]; [infoView animateInfo:self]; return self; } - (BOOL)appAcceptsAnotherFile:sender { return YES; } // // Message reÛu par le delegate de l©application pour qu©il ouvre le fichier de nom filename // et de type aType // - (int)app:sender openFile:(const char *)filename type:(const char *)aType { char titre[100]; strcpy(nomdefichier , filename); strcpy(titre,"Of Mice And Men :"); strcat(titre,strrchr(filename,'/')+1); // Recherche le nom du fichier dans le path et l©ajoute au titre [fenetre setTitle:titre]; if ([self charger:self]) initialise = YES; return 1; } // // Message reÛu par le delegate de l©application au dİmarrage de celle-ci // - appDidInit:sender; { if (!initialise) { [couleurFond setColor:NX_COLORBLACK]; [couleur1 setColor:NX_COLORCLEAR]; [couleur2 setColor:NX_COLORWHITE]; } [fenetre setMiniwindowIcon:"image2"]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.