Save/Load: Added drive icons (also linux, but untested)
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@153 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
ca9115aba6
commit
646ac6235f
13
boutons.c
13
boutons.c
@ -2611,11 +2611,10 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
Afficher_curseur();
|
Afficher_curseur();
|
||||||
break;
|
break;
|
||||||
default : // Drives
|
default : // Drives
|
||||||
Effacer_curseur();
|
|
||||||
// On change de lecteur: Lecteur = Drive[Bouton_clicke-9].Lettre-64
|
// On change de lecteur: Lecteur = Drive[Bouton_clicke-9].Lettre-64
|
||||||
/* A revoir ...
|
if (! ActiverLecteur(Bouton_clicke-9))
|
||||||
_dos_setdrive(Drive[Bouton_clicke-9].Lettre-64,&Bidon);
|
{
|
||||||
*/
|
Effacer_curseur();
|
||||||
// On lit le répertoire courant de ce lecteur
|
// On lit le répertoire courant de ce lecteur
|
||||||
Determiner_repertoire_courant();
|
Determiner_repertoire_courant();
|
||||||
// Comme on tombe sur un disque qu'on connait pas, on se place en
|
// Comme on tombe sur un disque qu'on connait pas, on se place en
|
||||||
@ -2627,6 +2626,12 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
Afficher_curseur();
|
Afficher_curseur();
|
||||||
Nouvelle_preview=1;
|
Nouvelle_preview=1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Un ptit flash rouge pour signaler le lecteur invalide.
|
||||||
|
Erreur(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (Touche)
|
switch (Touche)
|
||||||
{
|
{
|
||||||
|
|||||||
10
const.h
10
const.h
@ -276,11 +276,11 @@ enum CHUNKS_CFG
|
|||||||
|
|
||||||
enum TYPES_DE_LECTEURS
|
enum TYPES_DE_LECTEURS
|
||||||
{
|
{
|
||||||
DRIVE_FLOPPY_3_5, // 0: Diskette 3"«
|
LECTEUR_FLOPPY_3_5, // 0: Diskette 3"«
|
||||||
DRIVE_FLOPPY_5_25, // 1: Diskette 5"¬
|
LECTEUR_FLOPPY_5_25, // 1: Diskette 5"¬
|
||||||
DRIVE_HDD, // 2: HDD
|
LECTEUR_HDD, // 2: HDD
|
||||||
DRIVE_CDROM, // 3: CD-ROM
|
LECTEUR_CDROM, // 3: CD-ROM
|
||||||
DRIVE_NETWORK // 4: Logique (réseau?)
|
LECTEUR_NETWORK // 4: Logique (réseau?)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Les différents boutons:
|
// Les différents boutons:
|
||||||
|
|||||||
164
init.c
164
init.c
@ -24,6 +24,10 @@
|
|||||||
|
|
||||||
#include "errno.h"
|
#include "errno.h"
|
||||||
|
|
||||||
|
#ifndef __linux__
|
||||||
|
#include "windows.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// Chercher le répertoire contenant GFX2.EXE
|
// Chercher le répertoire contenant GFX2.EXE
|
||||||
void Chercher_repertoire_du_programme(char * Chaine)
|
void Chercher_repertoire_du_programme(char * Chaine)
|
||||||
{
|
{
|
||||||
@ -68,9 +72,9 @@ word Drive_Touche[26]=
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Ajouter un lecteur à la liste de lecteurs
|
// Ajouter un lecteur à la liste de lecteurs
|
||||||
void Ajouter_lecteur(byte Numero, byte Type)
|
void Ajouter_lecteur(byte Numero, char Lettre, byte Type)
|
||||||
{
|
{
|
||||||
Drive[Nb_drives].Lettre=Numero+65;
|
Drive[Nb_drives].Lettre=Lettre;
|
||||||
Drive[Nb_drives].Type =Type;
|
Drive[Nb_drives].Type =Type;
|
||||||
Drive[Nb_drives].Touche=Drive_Touche[Numero];
|
Drive[Nb_drives].Touche=Drive_Touche[Numero];
|
||||||
|
|
||||||
@ -81,120 +85,68 @@ void Ajouter_lecteur(byte Numero, byte Type)
|
|||||||
// Rechercher la liste et le type des lecteurs de la machine
|
// Rechercher la liste et le type des lecteurs de la machine
|
||||||
void Rechercher_drives(void)
|
void Rechercher_drives(void)
|
||||||
{
|
{
|
||||||
/*
|
int DriveBits = GetLogicalDrives();
|
||||||
byte Lecteur;
|
int IndiceLecteur;
|
||||||
byte Nb_lecteurs_disquettes;
|
int IndiceBit;
|
||||||
byte Lecteur_de_disquettes;
|
|
||||||
byte Type_de_lecteur=42;
|
|
||||||
//char Bidon[256];
|
|
||||||
|
|
||||||
Nb_drives=0;
|
#ifdef __linux__
|
||||||
Nb_lecteurs_disquettes=(Type_de_lecteur_de_disquette(0)>0)+(Type_de_lecteur_de_disquette(1)>0);
|
//Sous linux, il n'y a pas de lecteurs, on va juste mettre
|
||||||
|
// un disque dur qui pointera vers la racine,
|
||||||
// Test du type des lecteurs A: et B:
|
// et un autre vers le home directory de l'utilisateur.
|
||||||
if (Nb_lecteurs_disquettes==2)
|
Ajouter_lecteur(0,'/', LECTEUR_HDD);
|
||||||
for (Lecteur=0; Lecteur<=1; Lecteur++)
|
Ajouter_lecteur(1,'~', LECTEUR_HDD);
|
||||||
|
#else
|
||||||
|
// Sous Windows, on a la totale, presque aussi bien que sous DOS:
|
||||||
|
IndiceLecteur = 0;
|
||||||
|
for (IndiceBit=0; IndiceBit<26 && IndiceLecteur<23; IndiceBit++)
|
||||||
{
|
{
|
||||||
switch (Type_de_lecteur_de_disquette(Lecteur))
|
if ( (1 << IndiceBit) & DriveBits )
|
||||||
{
|
{
|
||||||
case 1 :
|
// On a ce lecteur, il faut maintenant déterminer son type "physique".
|
||||||
case 2 :
|
// pour profiter des jolies icones de X-man.
|
||||||
Ajouter_lecteur(Lecteur,DRIVE_FLOPPY_5_25);
|
int TypeLecteur;
|
||||||
|
char CheminLecteur[]="A:\\";
|
||||||
|
// Cette API Windows est étrange, je dois m'y faire...
|
||||||
|
CheminLecteur[0]='A'+IndiceBit;
|
||||||
|
switch (GetDriveType(CheminLecteur))
|
||||||
|
{
|
||||||
|
case DRIVE_CDROM:
|
||||||
|
TypeLecteur=LECTEUR_CDROM;
|
||||||
|
break;
|
||||||
|
case DRIVE_REMOTE:
|
||||||
|
TypeLecteur=LECTEUR_NETWORK;
|
||||||
|
break;
|
||||||
|
case DRIVE_REMOVABLE:
|
||||||
|
TypeLecteur=LECTEUR_FLOPPY_3_5;
|
||||||
|
break;
|
||||||
|
case DRIVE_FIXED:
|
||||||
|
TypeLecteur=LECTEUR_HDD;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Ajouter_lecteur(Lecteur,DRIVE_FLOPPY_3_5);
|
TypeLecteur=LECTEUR_NETWORK;
|
||||||
}
|
|
||||||
}
|
|
||||||
else // On n'a pas 2 lecteurs donc on regarde si "logiquement" c'est A: ou B:
|
|
||||||
if (Nb_lecteurs_disquettes==1)
|
|
||||||
{
|
|
||||||
if (Disk_map(2)==Disk_map(1))
|
|
||||||
{
|
|
||||||
// Il n'y a pas de lecteur émulé par un SUBST
|
|
||||||
Lecteur_de_disquettes=Disk_map(1)-1;
|
|
||||||
for (Lecteur=0; Lecteur<=1; Lecteur++)
|
|
||||||
{
|
|
||||||
switch (Type_de_lecteur_de_disquette(Lecteur))
|
|
||||||
{
|
|
||||||
case 0 :
|
|
||||||
break;
|
break;
|
||||||
case 1 :
|
}
|
||||||
case 2 :
|
Ajouter_lecteur(IndiceBit, 'A'+IndiceBit, TypeLecteur);
|
||||||
Ajouter_lecteur(Lecteur_de_disquettes,DRIVE_FLOPPY_5_25);
|
IndiceLecteur++;
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Ajouter_lecteur(Lecteur_de_disquettes,DRIVE_FLOPPY_3_5);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
#endif
|
||||||
else
|
|
||||||
{
|
|
||||||
// Il y a un lecteur émulé par un SUBST
|
|
||||||
Lecteur_de_disquettes=Disk_map(1)-1;
|
|
||||||
|
|
||||||
// On cherche d'abord sur quel lecteur le lecteur physique est dispo
|
|
||||||
for (Lecteur=0; Lecteur<=1; Lecteur++)
|
|
||||||
{
|
|
||||||
switch (Type_de_lecteur_de_disquette(Lecteur))
|
|
||||||
{
|
|
||||||
case 0 :
|
|
||||||
break;
|
|
||||||
case 1 :
|
|
||||||
case 2 :
|
|
||||||
Type_de_lecteur=DRIVE_FLOPPY_5_25;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Type_de_lecteur=DRIVE_FLOPPY_3_5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// On déclare les trucs maintenant
|
|
||||||
if (Lecteur_de_disquettes==0)
|
|
||||||
{
|
|
||||||
// Situation : On a un lecteur A: qui est réel et un lecteur B: émulé
|
|
||||||
Ajouter_lecteur(0,Type_de_lecteur);
|
|
||||||
Ajouter_lecteur(1,DRIVE_NETWORK);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Situation : On a un lecteur A: qui est réel et un lecteur B: émulé
|
|
||||||
Ajouter_lecteur(0,DRIVE_NETWORK);
|
|
||||||
Ajouter_lecteur(1,Type_de_lecteur);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
// Il n'y a pas de lecteur de D7 physique, mais on vérifie s'il n'y en a
|
|
||||||
// pas qui seraient émulés par SUBST
|
|
||||||
for (Lecteur=0; Lecteur<=1; Lecteur++)
|
|
||||||
{
|
|
||||||
switch (Freespace(Lecteur+1))
|
|
||||||
{
|
|
||||||
case -1:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Ajouter_lecteur(Lecteur,DRIVE_NETWORK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test de la présence d'autres lecteurs (HDD, CD, Réseau)
|
|
||||||
// On les met tous en réseau avant de tester leur vrai type.
|
|
||||||
for (Lecteur=2; Lecteur<=25; Lecteur++)
|
|
||||||
{
|
|
||||||
if (Disque_dur_present(Lecteur-2))
|
|
||||||
Ajouter_lecteur(Lecteur,DRIVE_HDD);
|
|
||||||
else
|
|
||||||
if (Lecteur_CDROM_present(Lecteur))
|
|
||||||
Ajouter_lecteur(Lecteur,DRIVE_CDROM);
|
|
||||||
else
|
|
||||||
if (Freespace(Lecteur+1)!=-1)
|
|
||||||
Ajouter_lecteur(Lecteur,DRIVE_NETWORK);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
//Sous linux, il n'y a pas de lecteurs, on va juste mettre un disque dur qui pointera vers la racine
|
|
||||||
Ajouter_lecteur(0,DRIVE_HDD); //Le lecteur numéro 0 est un disque dur.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Active un lecteur, changeant normalement le répertoire en cours.
|
||||||
|
// Renvoie 0 si ok, -1 si problème.
|
||||||
|
int ActiverLecteur(int NumeroLecteur)
|
||||||
|
{
|
||||||
|
#ifdef __linux__
|
||||||
|
char NomLecteur[]=" ";
|
||||||
|
NomLecteur[0]=Drive[NumeroLecteur].Lettre;
|
||||||
|
return chdir(NomLecteur);
|
||||||
|
#else
|
||||||
|
char NomLecteur[]="A:\\";
|
||||||
|
NomLecteur[0]=Drive[NumeroLecteur].Lettre;
|
||||||
|
return ! SetCurrentDirectory(NomLecteur);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// Fonction de décryptage
|
// Fonction de décryptage
|
||||||
|
|
||||||
|
|||||||
1
init.h
1
init.h
@ -10,3 +10,4 @@ void Initialiser_la_table_des_carres(void);
|
|||||||
void Initialiser_la_table_precalculee_des_distances_de_couleur(void);
|
void Initialiser_la_table_precalculee_des_distances_de_couleur(void);
|
||||||
|
|
||||||
void Definition_des_modes_video(void);
|
void Definition_des_modes_video(void);
|
||||||
|
int ActiverLecteur(int);
|
||||||
|
|||||||
1
struct.h
1
struct.h
@ -87,6 +87,7 @@ struct T_Drive
|
|||||||
char Lettre;
|
char Lettre;
|
||||||
byte Type; // 0: Diskette 3"« / 1: Diskette 5"¬ / 2: HDD / 3: CD-ROM / 4: Logique
|
byte Type; // 0: Diskette 3"« / 1: Diskette 5"¬ / 2: HDD / 3: CD-ROM / 4: Logique
|
||||||
word Touche;
|
word Touche;
|
||||||
|
char Chemin[4]; // Reservé pour "x:\", ou "/", ou "~"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user