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.