Load/Save: "Select Drive" button. Allows a way for the AmigaOS4 version to display the list of drives / volume names.
Peter, you can plug in Lire_liste_des_lecteurs(void) to enumerate the drives.
Additionally, if you want to display drive icons as well, you have a spot in
Rechercher_drives(void) :
For each drive, call Ajouter_lecteur(car, icon, string);
* car is the displayed character
* string is the drive name "df0:", "mypictures:" etc. (string will be copied)
* icon is one of :
LECTEUR_FLOPPY_3_5
LECTEUR_FLOPPY_5_25
LECTEUR_HDD
LECTEUR_CDROM
LECTEUR_NETWORK
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@309 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
aeda49b9bb
commit
cf54d4a460
1
aide.c
1
aide.c
@ -1,5 +1,6 @@
|
|||||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||||
|
|
||||||
|
Copyright 2008 Peter Gordon
|
||||||
Copyright 2008 Yves Rizoud
|
Copyright 2008 Yves Rizoud
|
||||||
Copyright 2008 Franck Charlet
|
Copyright 2008 Franck Charlet
|
||||||
Copyright 2007 Adrien Destugues
|
Copyright 2007 Adrien Destugues
|
||||||
|
|||||||
48
boutons.c
48
boutons.c
@ -47,6 +47,7 @@
|
|||||||
#include "io.h"
|
#include "io.h"
|
||||||
#include "aide.h"
|
#include "aide.h"
|
||||||
#include "texte.h"
|
#include "texte.h"
|
||||||
|
#include "sdlscreen.h"
|
||||||
|
|
||||||
#ifdef __WATCOMC__
|
#ifdef __WATCOMC__
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
@ -2241,6 +2242,8 @@ void Print_Format(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int Type_selectionne; // Utilisé pour mémoriser le type d'entrée choisi
|
||||||
|
// dans le selecteur de fichier.
|
||||||
|
|
||||||
void Preparer_et_afficher_liste_fichiers(short Position, short Decalage,
|
void Preparer_et_afficher_liste_fichiers(short Position, short Decalage,
|
||||||
struct Fenetre_Bouton_scroller * Enreg)
|
struct Fenetre_Bouton_scroller * Enreg)
|
||||||
@ -2257,7 +2260,7 @@ void Preparer_et_afficher_liste_fichiers(short Position, short Decalage,
|
|||||||
UpdateRect(Fenetre_Pos_X+(Menu_Facteur_X<<3),Fenetre_Pos_Y+(Menu_Facteur_Y*(89+FILENAMESPACE)),Menu_Facteur_X*98,Menu_Facteur_Y*82);
|
UpdateRect(Fenetre_Pos_X+(Menu_Facteur_X<<3),Fenetre_Pos_Y+(Menu_Facteur_Y*(89+FILENAMESPACE)),Menu_Facteur_X*98,Menu_Facteur_Y*82);
|
||||||
|
|
||||||
// On récupère le nom du schmilblick à "accéder"
|
// On récupère le nom du schmilblick à "accéder"
|
||||||
Determiner_element_de_la_liste(Position,Decalage,Principal_Nom_fichier);
|
Determiner_element_de_la_liste(Position,Decalage,Principal_Nom_fichier,&Type_selectionne);
|
||||||
// On affiche le nouveau nom de fichier
|
// On affiche le nouveau nom de fichier
|
||||||
Print_Nom_fichier_dans_selecteur();
|
Print_Nom_fichier_dans_selecteur();
|
||||||
// On affiche le nom du répertoire courant
|
// On affiche le nom du répertoire courant
|
||||||
@ -2287,7 +2290,7 @@ void On_vient_de_scroller_dans_le_fileselect(struct Fenetre_Bouton_scroller * Sc
|
|||||||
Fenetre_Dessiner_jauge(Scroller_de_fichiers);
|
Fenetre_Dessiner_jauge(Scroller_de_fichiers);
|
||||||
}
|
}
|
||||||
// On récupére le nom du schmilblick à "accéder"
|
// On récupére le nom du schmilblick à "accéder"
|
||||||
Determiner_element_de_la_liste(Principal_File_list_Position,Principal_File_list_Decalage,Principal_Nom_fichier);
|
Determiner_element_de_la_liste(Principal_File_list_Position,Principal_File_list_Decalage,Principal_Nom_fichier,&Type_selectionne);
|
||||||
if (strcmp(Ancien_nom_de_fichier,Principal_Nom_fichier))
|
if (strcmp(Ancien_nom_de_fichier,Principal_Nom_fichier))
|
||||||
Nouvelle_preview=1;
|
Nouvelle_preview=1;
|
||||||
|
|
||||||
@ -2367,7 +2370,6 @@ char * Nom_correspondant_le_mieux_a(char * Nom)
|
|||||||
return Pointeur_Meilleur_nom;
|
return Pointeur_Meilleur_nom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
byte Bouton_Load_ou_Save(byte Load, byte Image)
|
byte Bouton_Load_ou_Save(byte Load, byte Image)
|
||||||
// Load=1 => On affiche le menu du bouton LOAD
|
// Load=1 => On affiche le menu du bouton LOAD
|
||||||
// Load=0 => On affiche le menu du bouton SAVE
|
// Load=0 => On affiche le menu du bouton SAVE
|
||||||
@ -2472,13 +2474,16 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
|
|
||||||
Print_Format();
|
Print_Format();
|
||||||
|
|
||||||
|
// Selecteur de Lecteur / Volume
|
||||||
|
Fenetre_Definir_bouton_normal(8,21,120,14,"Select drive",0,1,SDLK_LAST); // 9
|
||||||
|
|
||||||
// Définition des boutons représentant les lecteurs
|
// Définition des boutons représentant les lecteurs
|
||||||
Drives_Debut_Y=(Nb_drives<=13)? 23 : 18;
|
Drives_Debut_Y=(Nb_drives<=8)? 23 : 18;
|
||||||
for (Temp=0; Temp<Nb_drives; Temp++)
|
for (Temp=0; Temp<Nb_drives; Temp++)
|
||||||
{
|
{
|
||||||
Nom_drive[0]=Drive[Temp].Lettre;
|
Nom_drive[0]=Drive[Temp].Lettre;
|
||||||
Fenetre_Definir_bouton_normal(8+((Temp%13)*20),Drives_Debut_Y+((Temp/13)*12),19,11,Nom_drive,0,1, SDLK_LAST); // 9 et +
|
Fenetre_Definir_bouton_normal(130+((Temp%8)*20),Drives_Debut_Y+((Temp/8)*12),19,11,Nom_drive,0,1, SDLK_LAST); // 10 et +
|
||||||
Fenetre_Afficher_sprite_drive(18+((Temp%13)*20),Drives_Debut_Y+2+((Temp/13)*12),Drive[Temp].Type);
|
Fenetre_Afficher_sprite_drive(140+((Temp%8)*20),Drives_Debut_Y+2+((Temp/8)*12),Drive[Temp].Type);
|
||||||
}
|
}
|
||||||
|
|
||||||
// On prend bien soin de passer dans le répertoire courant (le bon qui faut! Oui madame!)
|
// On prend bien soin de passer dans le répertoire courant (le bon qui faut! Oui madame!)
|
||||||
@ -2529,7 +2534,7 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 3 : // Delete
|
case 3 : // Delete
|
||||||
if (Liste_Nb_elements && (*Principal_Nom_fichier!='.'))
|
if (Liste_Nb_elements && (*Principal_Nom_fichier!='.') && Type_selectionne!=2)
|
||||||
{
|
{
|
||||||
Effacer_curseur();
|
Effacer_curseur();
|
||||||
// On affiche une demande de confirmation
|
// On affiche une demande de confirmation
|
||||||
@ -2620,7 +2625,7 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
Principal_File_list_Decalage=Temp;
|
Principal_File_list_Decalage=Temp;
|
||||||
|
|
||||||
// On récupére le nom du schmilblick à "accéder"
|
// On récupére le nom du schmilblick à "accéder"
|
||||||
Determiner_element_de_la_liste(Principal_File_list_Position,Principal_File_list_Decalage,Principal_Nom_fichier);
|
Determiner_element_de_la_liste(Principal_File_list_Position,Principal_File_list_Decalage,Principal_Nom_fichier,&Type_selectionne);
|
||||||
// On affiche le nouveau nom de fichier
|
// On affiche le nouveau nom de fichier
|
||||||
Print_Nom_fichier_dans_selecteur();
|
Print_Nom_fichier_dans_selecteur();
|
||||||
// On affiche à nouveau la liste
|
// On affiche à nouveau la liste
|
||||||
@ -2637,7 +2642,7 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
// certains cas, on risque de sauvegarder avec le nom du fichier
|
// certains cas, on risque de sauvegarder avec le nom du fichier
|
||||||
// actuel au lieu de changer de répertoire.
|
// actuel au lieu de changer de répertoire.
|
||||||
if (Principal_File_list_Position+Principal_File_list_Decalage<Liste_Nb_repertoires)
|
if (Principal_File_list_Position+Principal_File_list_Decalage<Liste_Nb_repertoires)
|
||||||
Determiner_element_de_la_liste(Principal_File_list_Position,Principal_File_list_Decalage,Principal_Nom_fichier);
|
Determiner_element_de_la_liste(Principal_File_list_Position,Principal_File_list_Decalage,Principal_Nom_fichier,&Type_selectionne);
|
||||||
|
|
||||||
On_a_clicke_sur_OK=1;
|
On_a_clicke_sur_OK=1;
|
||||||
Nouvelle_preview=1;
|
Nouvelle_preview=1;
|
||||||
@ -2651,7 +2656,7 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
Effacer_curseur();
|
Effacer_curseur();
|
||||||
Principal_File_list_Position=Fenetre_Attribut2;
|
Principal_File_list_Position=Fenetre_Attribut2;
|
||||||
// On récupére le nom du schmilblick à "accéder"
|
// On récupére le nom du schmilblick à "accéder"
|
||||||
Determiner_element_de_la_liste(Principal_File_list_Position,Principal_File_list_Decalage,Principal_Nom_fichier);
|
Determiner_element_de_la_liste(Principal_File_list_Position,Principal_File_list_Decalage,Principal_Nom_fichier,&Type_selectionne);
|
||||||
// On affiche le nouveau nom de fichier
|
// On affiche le nouveau nom de fichier
|
||||||
Print_Nom_fichier_dans_selecteur();
|
Print_Nom_fichier_dans_selecteur();
|
||||||
// On affiche à nouveau la liste
|
// On affiche à nouveau la liste
|
||||||
@ -2701,9 +2706,22 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
}
|
}
|
||||||
Afficher_curseur();
|
Afficher_curseur();
|
||||||
break;
|
break;
|
||||||
|
case 9 : // Volume Select
|
||||||
|
Effacer_curseur();
|
||||||
|
// Comme on tombe sur un disque qu'on connait pas, on se place en
|
||||||
|
// début de liste:
|
||||||
|
Principal_File_list_Position=0;
|
||||||
|
Principal_File_list_Decalage=0;
|
||||||
|
// Affichage des premiers fichiers visibles:
|
||||||
|
Lire_liste_des_lecteurs();
|
||||||
|
Trier_la_liste_des_fichiers();
|
||||||
|
Preparer_et_afficher_liste_fichiers(Principal_File_list_Position,Principal_File_list_Decalage,Scroller_de_fichiers);
|
||||||
|
Afficher_curseur();
|
||||||
|
Nouvelle_preview=1;
|
||||||
|
break;
|
||||||
default : // Drives
|
default : // Drives
|
||||||
// On change de lecteur: Lecteur = Drive[Bouton_clicke-9].Lettre-64
|
// On change de lecteur:
|
||||||
if (! ActiverLecteur(Bouton_clicke-9))
|
if (! ActiverLecteur(Bouton_clicke-10))
|
||||||
{
|
{
|
||||||
Effacer_curseur();
|
Effacer_curseur();
|
||||||
// On lit le répertoire courant de ce lecteur
|
// On lit le répertoire courant de ce lecteur
|
||||||
@ -2807,18 +2825,18 @@ byte Bouton_Load_ou_Save(byte Load, byte Image)
|
|||||||
{
|
{
|
||||||
// Si c'est un répertoire, on annule "On_a_clicke_sur_OK" et on passe
|
// Si c'est un répertoire, on annule "On_a_clicke_sur_OK" et on passe
|
||||||
// dedans.
|
// dedans.
|
||||||
if (Repertoire_existe(Principal_Nom_fichier))
|
if (Type_selectionne!=0)
|
||||||
{
|
{
|
||||||
Effacer_curseur();
|
Effacer_curseur();
|
||||||
On_a_clicke_sur_OK=0;
|
On_a_clicke_sur_OK=0;
|
||||||
|
|
||||||
// On mémorise le répertoire dans lequel on était
|
// On mémorise le répertoire dans lequel on était
|
||||||
if (strcmp(Principal_Nom_fichier,".."))
|
if (strcmp(Principal_Nom_fichier,".."))
|
||||||
strcpy(Repertoire_precedent,Nom_formate(".."));
|
strcpy(Repertoire_precedent,Nom_formate("..", 1));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
strcpy(Repertoire_precedent,
|
strcpy(Repertoire_precedent,
|
||||||
Nom_formate(Position_dernier_slash(Principal_Repertoire_courant))
|
Nom_formate(Position_dernier_slash(Principal_Repertoire_courant), 1)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
69
files.c
69
files.c
@ -1,5 +1,7 @@
|
|||||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||||
|
|
||||||
|
Copyright 2008 Peter Gordon
|
||||||
|
Copyright 2008 Yves Rizoud
|
||||||
Copyright 2007 Adrien Destugues
|
Copyright 2007 Adrien Destugues
|
||||||
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
||||||
|
|
||||||
@ -140,7 +142,7 @@ void Detruire_liste_du_fileselect(void)
|
|||||||
|
|
||||||
|
|
||||||
// -- Formatage graphique des noms de fichier / répertoire ------------------
|
// -- Formatage graphique des noms de fichier / répertoire ------------------
|
||||||
char * Nom_formate(char * Nom)
|
char * Nom_formate(char * Nom, int Type)
|
||||||
{
|
{
|
||||||
static char Resultat[13];
|
static char Resultat[13];
|
||||||
int Curseur;
|
int Curseur;
|
||||||
@ -151,9 +153,9 @@ char * Nom_formate(char * Nom)
|
|||||||
{
|
{
|
||||||
strcpy(Resultat,".. ");
|
strcpy(Resultat,".. ");
|
||||||
}
|
}
|
||||||
else if (Nom[0]=='.')
|
else if (Nom[0]=='.' || Type==2)
|
||||||
{
|
{
|
||||||
// Fichiers ".quelquechose": Calé à gauche sur 12 caractères maximum.
|
// Fichiers ".quelquechose" ou lecteurs: Calé à gauche sur 12 caractères maximum.
|
||||||
strcpy(Resultat," ");
|
strcpy(Resultat," ");
|
||||||
for (Curseur=0;Nom[Curseur]!='\0' && Curseur < 12;Curseur++)
|
for (Curseur=0;Nom[Curseur]!='\0' && Curseur < 12;Curseur++)
|
||||||
Resultat[Curseur]=Nom[Curseur];
|
Resultat[Curseur]=Nom[Curseur];
|
||||||
@ -190,10 +192,9 @@ char * Nom_formate(char * Nom)
|
|||||||
|
|
||||||
|
|
||||||
// -- Rajouter a la liste des elements de la liste un element ---------------
|
// -- Rajouter a la liste des elements de la liste un element ---------------
|
||||||
void Ajouter_element_a_la_liste(struct dirent* Enreg)
|
void Ajouter_element_a_la_liste(char * Nom, int Type)
|
||||||
// Cette procedure ajoute a la liste chainee un fichier passé en argument.
|
// Cette procedure ajoute a la liste chainee un fichier passé en argument.
|
||||||
{
|
{
|
||||||
struct stat Infos_enreg;
|
|
||||||
// Pointeur temporaire d'insertion
|
// Pointeur temporaire d'insertion
|
||||||
struct Element_de_liste_de_fileselect * Element_temporaire;
|
struct Element_de_liste_de_fileselect * Element_temporaire;
|
||||||
|
|
||||||
@ -201,10 +202,9 @@ void Ajouter_element_a_la_liste(struct dirent* Enreg)
|
|||||||
Element_temporaire=(struct Element_de_liste_de_fileselect *)malloc(sizeof(struct Element_de_liste_de_fileselect));
|
Element_temporaire=(struct Element_de_liste_de_fileselect *)malloc(sizeof(struct Element_de_liste_de_fileselect));
|
||||||
|
|
||||||
// On met a jour le nouvel emplacement:
|
// On met a jour le nouvel emplacement:
|
||||||
strcpy(Element_temporaire->NomAbrege,Nom_formate(Enreg->d_name));
|
strcpy(Element_temporaire->NomAbrege,Nom_formate(Nom, Type));
|
||||||
strcpy(Element_temporaire->NomComplet,Enreg->d_name);
|
strcpy(Element_temporaire->NomComplet,Nom);
|
||||||
stat(Enreg->d_name,&Infos_enreg);
|
Element_temporaire->Type = Type;
|
||||||
Element_temporaire->Type = S_ISDIR(Infos_enreg.st_mode);
|
|
||||||
|
|
||||||
Element_temporaire->Suivant =Liste_du_fileselect;
|
Element_temporaire->Suivant =Liste_du_fileselect;
|
||||||
Element_temporaire->Precedent=NULL;
|
Element_temporaire->Precedent=NULL;
|
||||||
@ -285,8 +285,8 @@ void Lire_liste_des_fichiers(byte Format_demande)
|
|||||||
Config.Lire_les_repertoires_caches ||
|
Config.Lire_les_repertoires_caches ||
|
||||||
!isHidden(Enreg)))
|
!isHidden(Enreg)))
|
||||||
{
|
{
|
||||||
// On rajoute le répertore à la liste
|
// On rajoute le répertoire à la liste
|
||||||
Ajouter_element_a_la_liste(Enreg);
|
Ajouter_element_a_la_liste(Enreg->d_name, 1);
|
||||||
Liste_Nb_repertoires++;
|
Liste_Nb_repertoires++;
|
||||||
}
|
}
|
||||||
else if (S_ISREG(Infos_enreg.st_mode) && //Il s'agit d'un fichier
|
else if (S_ISREG(Infos_enreg.st_mode) && //Il s'agit d'un fichier
|
||||||
@ -296,7 +296,7 @@ void Lire_liste_des_fichiers(byte Format_demande)
|
|||||||
if (VerifieExtension(Enreg->d_name, Filtre))
|
if (VerifieExtension(Enreg->d_name, Filtre))
|
||||||
{
|
{
|
||||||
// On rajoute le fichier à la liste
|
// On rajoute le fichier à la liste
|
||||||
Ajouter_element_a_la_liste(Enreg);
|
Ajouter_element_a_la_liste(Enreg->d_name, 0);
|
||||||
Liste_Nb_fichiers++;
|
Liste_Nb_fichiers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -306,6 +306,42 @@ void Lire_liste_des_fichiers(byte Format_demande)
|
|||||||
|
|
||||||
Liste_Nb_elements=Liste_Nb_repertoires+Liste_Nb_fichiers;
|
Liste_Nb_elements=Liste_Nb_repertoires+Liste_Nb_fichiers;
|
||||||
}
|
}
|
||||||
|
// -- Lecture d'une liste de lecteurs / volumes -----------------------------
|
||||||
|
void Lire_liste_des_lecteurs(void)
|
||||||
|
{
|
||||||
|
int Indice;
|
||||||
|
|
||||||
|
// Empty the current content of fileselector:
|
||||||
|
Detruire_liste_du_fileselect();
|
||||||
|
// Reset number of items
|
||||||
|
Liste_Nb_fichiers=0;
|
||||||
|
Liste_Nb_repertoires=0;
|
||||||
|
|
||||||
|
// AmigaOS4
|
||||||
|
#ifdef __amigaos4__
|
||||||
|
// Peter, this is where you act :)
|
||||||
|
// The strings you pass will be copied as needed.
|
||||||
|
// The 2 is for drive/volume; 0 and 1 would be files and directories.
|
||||||
|
// samples:
|
||||||
|
Ajouter_element_a_la_liste("df0", 2);
|
||||||
|
Liste_Nb_repertoires++;
|
||||||
|
Ajouter_element_a_la_liste("df1", 2);
|
||||||
|
Liste_Nb_repertoires++;
|
||||||
|
Ajouter_element_a_la_liste("hd0", 2);
|
||||||
|
Liste_Nb_repertoires++;
|
||||||
|
|
||||||
|
// Other platforms: simply read the "static" list of Drives.
|
||||||
|
#else
|
||||||
|
for (Indice=0; Indice<Nb_drives; Indice++)
|
||||||
|
{
|
||||||
|
// Add the drive's name ("c:\\", "/" etc.) to the list
|
||||||
|
Ajouter_element_a_la_liste(Drive[Indice].Chemin, 2);
|
||||||
|
Liste_Nb_repertoires++;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Liste_Nb_elements=Liste_Nb_repertoires+Liste_Nb_fichiers;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- Tri de la liste des fichiers et répertoires ---------------------------
|
// -- Tri de la liste des fichiers et répertoires ---------------------------
|
||||||
@ -344,7 +380,7 @@ void Trier_la_liste_des_fichiers(void)
|
|||||||
|
|
||||||
// Si l'élément courant est un fichier est que le suivant est
|
// Si l'élément courant est un fichier est que le suivant est
|
||||||
// un répertoire -> Inversion
|
// un répertoire -> Inversion
|
||||||
if ( (Element_courant->Type==0) && (Element_suivant->Type==1) )
|
if ( Element_courant->Type < Element_suivant->Type )
|
||||||
Inversion=1;
|
Inversion=1;
|
||||||
// Si les deux éléments sont de même type et que le nom du suivant
|
// Si les deux éléments sont de même type et que le nom du suivant
|
||||||
// est plus petit que celui du courant -> Inversion
|
// est plus petit que celui du courant -> Inversion
|
||||||
@ -464,7 +500,7 @@ void Afficher_la_liste_des_fichiers(short Decalage_premier,short Decalage_select
|
|||||||
|
|
||||||
|
|
||||||
// -- Récupérer le libellé d'un élément de la liste -------------------------
|
// -- Récupérer le libellé d'un élément de la liste -------------------------
|
||||||
void Determiner_element_de_la_liste(short Decalage_premier,short Decalage_select,char * Libelle)
|
void Determiner_element_de_la_liste(short Decalage_premier,short Decalage_select,char * Libelle,int *Type)
|
||||||
//
|
//
|
||||||
// Decalage_premier = Décalage entre le premier fichier visible dans le
|
// Decalage_premier = Décalage entre le premier fichier visible dans le
|
||||||
// sélecteur et le premier fichier de la liste
|
// sélecteur et le premier fichier de la liste
|
||||||
@ -474,6 +510,8 @@ void Determiner_element_de_la_liste(short Decalage_premier,short Decalage_select
|
|||||||
//
|
//
|
||||||
// Libelle = Chaine de réception du libellé de l'élément
|
// Libelle = Chaine de réception du libellé de l'élément
|
||||||
//
|
//
|
||||||
|
// Type = Récupération du type: 0 fichier, 1 repertoire, 2 lecteur.
|
||||||
|
// Passer NULL si pas interessé.
|
||||||
{
|
{
|
||||||
struct Element_de_liste_de_fileselect * Element_courant;
|
struct Element_de_liste_de_fileselect * Element_courant;
|
||||||
|
|
||||||
@ -491,6 +529,9 @@ void Determiner_element_de_la_liste(short Decalage_premier,short Decalage_select
|
|||||||
|
|
||||||
// On recopie la chaîne
|
// On recopie la chaîne
|
||||||
strcpy(Libelle, Element_courant->NomComplet);
|
strcpy(Libelle, Element_courant->NomComplet);
|
||||||
|
|
||||||
|
if (Type != NULL)
|
||||||
|
*Type=Element_courant->Type;
|
||||||
} // Fin du test d'existence de fichiers
|
} // Fin du test d'existence de fichiers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
files.h
10
files.h
@ -32,12 +32,14 @@ int Fichier_existe(char * Fichier);
|
|||||||
void Detruire_liste_du_fileselect(void);
|
void Detruire_liste_du_fileselect(void);
|
||||||
// -- Lecture d'une liste de fichiers ---------------------------------------
|
// -- Lecture d'une liste de fichiers ---------------------------------------
|
||||||
void Lire_liste_des_fichiers(byte Format_demande);
|
void Lire_liste_des_fichiers(byte Format_demande);
|
||||||
|
// -- Lecture d'une liste de lecteurs / volumes -----------------------------
|
||||||
|
void Lire_liste_des_lecteurs(void);
|
||||||
// -- Tri de la liste des fichiers et répertoires ---------------------------
|
// -- Tri de la liste des fichiers et répertoires ---------------------------
|
||||||
void Trier_la_liste_des_fichiers(void);
|
void Trier_la_liste_des_fichiers(void);
|
||||||
// -- Affichage des éléments de la liste de fichier / répertoire ------------
|
// -- Affichage des éléments de la liste de fichier / répertoire ------------
|
||||||
void Afficher_la_liste_des_fichiers(short Decalage_premier,short Decalage_select);
|
void Afficher_la_liste_des_fichiers(short Decalage_premier,short Decalage_select);
|
||||||
// -- Récupérer le libellé d'un élément de la liste -------------------------
|
// -- Récupérer le libellé d'un élément de la liste -------------------------
|
||||||
void Determiner_element_de_la_liste(short Decalage_premier,short Decalage_select,char * Libelle);
|
void Determiner_element_de_la_liste(short Decalage_premier,short Decalage_select,char * Libelle,int *Type);
|
||||||
|
|
||||||
// -- Déplacements dans la liste des fichiers -------------------------------
|
// -- Déplacements dans la liste des fichiers -------------------------------
|
||||||
|
|
||||||
@ -48,6 +50,6 @@ void Select_Page_Up (short * Decalage_premier,short * Decalage_select);
|
|||||||
void Select_End (short * Decalage_premier,short * Decalage_select);
|
void Select_End (short * Decalage_premier,short * Decalage_select);
|
||||||
void Select_Home (short * Decalage_premier,short * Decalage_select);
|
void Select_Home (short * Decalage_premier,short * Decalage_select);
|
||||||
|
|
||||||
short Calculer_decalage_click_dans_fileselector(void);
|
short Calculer_decalage_click_dans_fileselector(void);
|
||||||
|
|
||||||
char * Nom_formate(char * Nom);
|
char * Nom_formate(char * Nom, int Type);
|
||||||
|
|||||||
1
gfxcfg.c
1
gfxcfg.c
@ -1,5 +1,6 @@
|
|||||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||||
|
|
||||||
|
Copyright 2008 Peter Gordon
|
||||||
Copyright 2008 Yves Rizoud
|
Copyright 2008 Yves Rizoud
|
||||||
Copyright 2008 Adrien Destugues
|
Copyright 2008 Adrien Destugues
|
||||||
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
||||||
|
|||||||
51
init.c
51
init.c
@ -1,5 +1,6 @@
|
|||||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||||
|
|
||||||
|
Copyright 2008 Peter Gordon
|
||||||
Copyright 2008 Yves Rizoud
|
Copyright 2008 Yves Rizoud
|
||||||
Copyright 2008 Franck Charlet
|
Copyright 2008 Franck Charlet
|
||||||
Copyright 2007 Adrien Destugues
|
Copyright 2007 Adrien Destugues
|
||||||
@ -72,11 +73,13 @@ void Chercher_repertoire_du_programme(char * Chaine)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ajouter un lecteur à la liste de lecteurs
|
// Ajouter un lecteur à la liste de lecteurs
|
||||||
void Ajouter_lecteur(char Lettre, byte Type)
|
void Ajouter_lecteur(char Lettre, byte Type, char *Chemin)
|
||||||
{
|
{
|
||||||
Drive[Nb_drives].Lettre=Lettre;
|
Drive[Nb_drives].Lettre=Lettre;
|
||||||
Drive[Nb_drives].Type =Type;
|
Drive[Nb_drives].Type =Type;
|
||||||
|
Drive[Nb_drives].Chemin=(char *)malloc(strlen(Chemin)+1);
|
||||||
|
strcpy(Drive[Nb_drives].Chemin, Chemin);
|
||||||
|
|
||||||
Nb_drives++;
|
Nb_drives++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,16 +88,22 @@ void Ajouter_lecteur(char Lettre, byte Type)
|
|||||||
void Rechercher_drives(void)
|
void Rechercher_drives(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__amigaos4__)
|
#if defined(__linux__)
|
||||||
//Sous linux, il n'y a pas de lecteurs, on va juste mettre
|
//Sous linux, il n'y a pas de lecteurs, on va juste mettre
|
||||||
// un disque dur qui pointera vers la racine,
|
// un disque dur qui pointera vers la racine,
|
||||||
// et un autre vers le home directory de l'utilisateur.
|
// et un autre vers le home directory de l'utilisateur.
|
||||||
Ajouter_lecteur('/', LECTEUR_HDD);
|
char * Home = getenv("HOME");
|
||||||
Ajouter_lecteur('~', LECTEUR_HDD);
|
Ajouter_lecteur('/', LECTEUR_HDD, "/");
|
||||||
#else
|
Ajouter_lecteur('~', LECTEUR_HDD, Home ? Home : "");
|
||||||
|
|
||||||
|
#elif defined(__amigaos4__)
|
||||||
|
// No icons by default.
|
||||||
|
// It's possible to add some here.
|
||||||
|
#elif defined (__WIN32__)
|
||||||
|
char NomLecteur[]="A:\\";
|
||||||
int DriveBits = GetLogicalDrives();
|
int DriveBits = GetLogicalDrives();
|
||||||
int IndiceLecteur;
|
int IndiceLecteur;
|
||||||
int IndiceBit;
|
int IndiceBit;
|
||||||
// Sous Windows, on a la totale, presque aussi bien que sous DOS:
|
// Sous Windows, on a la totale, presque aussi bien que sous DOS:
|
||||||
IndiceLecteur = 0;
|
IndiceLecteur = 0;
|
||||||
for (IndiceBit=0; IndiceBit<26 && IndiceLecteur<23; IndiceBit++)
|
for (IndiceBit=0; IndiceBit<26 && IndiceLecteur<23; IndiceBit++)
|
||||||
@ -125,7 +134,8 @@ void Rechercher_drives(void)
|
|||||||
TypeLecteur=LECTEUR_NETWORK;
|
TypeLecteur=LECTEUR_NETWORK;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Ajouter_lecteur('A'+IndiceBit, TypeLecteur);
|
NomLecteur[0]='A'+IndiceBit;
|
||||||
|
Ajouter_lecteur(NomLecteur[0], TypeLecteur,NomLecteur);
|
||||||
IndiceLecteur++;
|
IndiceLecteur++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -136,28 +146,7 @@ void Rechercher_drives(void)
|
|||||||
// Renvoie 0 si ok, -1 si problème.
|
// Renvoie 0 si ok, -1 si problème.
|
||||||
int ActiverLecteur(int NumeroLecteur)
|
int ActiverLecteur(int NumeroLecteur)
|
||||||
{
|
{
|
||||||
// Cas particulier du lecteur ~
|
return chdir(Drive[NumeroLecteur].Chemin);
|
||||||
if (Drive[NumeroLecteur].Lettre == '~')
|
|
||||||
{
|
|
||||||
char * Home = getenv("HOME");
|
|
||||||
if (! Home)
|
|
||||||
return -1;
|
|
||||||
#if defined(__linux__)||defined(__amigaos4__)
|
|
||||||
return chdir(Home);
|
|
||||||
#else
|
|
||||||
return ! SetCurrentDirectory(Home);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(__linux__)||defined(__amigaos4__)
|
|
||||||
char NomLecteur[]=" ";
|
|
||||||
NomLecteur[0]=Drive[NumeroLecteur].Lettre;
|
|
||||||
return chdir(NomLecteur);
|
|
||||||
#else
|
|
||||||
char NomLecteur[]="A:\\";
|
|
||||||
NomLecteur[0]=Drive[NumeroLecteur].Lettre;
|
|
||||||
return ! SetCurrentDirectory(NomLecteur);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Charger_DAT(void)
|
void Charger_DAT(void)
|
||||||
|
|||||||
1
linux.c
1
linux.c
@ -1,5 +1,6 @@
|
|||||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||||
|
|
||||||
|
Copyright 2008 Peter Gordon
|
||||||
Copyright 2007 Adrien Destugues
|
Copyright 2007 Adrien Destugues
|
||||||
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
||||||
|
|
||||||
|
|||||||
2
main.c
2
main.c
@ -1,5 +1,6 @@
|
|||||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||||
|
|
||||||
|
Copyright 2008 Peter Gordon
|
||||||
Copyright 2008 Franck Charlet
|
Copyright 2008 Franck Charlet
|
||||||
Copyright 2007 Adrien Destugues
|
Copyright 2007 Adrien Destugues
|
||||||
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
||||||
@ -46,6 +47,7 @@
|
|||||||
#include "saveini.h"
|
#include "saveini.h"
|
||||||
#include "linux.h"
|
#include "linux.h"
|
||||||
#include "io.h"
|
#include "io.h"
|
||||||
|
#include "texte.h"
|
||||||
|
|
||||||
#ifndef __linux__
|
#ifndef __linux__
|
||||||
#ifndef __amigaos4__
|
#ifndef __amigaos4__
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||||
|
|
||||||
|
Copyright 2008 Peter Gordon
|
||||||
Copyright 2008 Yves Rizoud
|
Copyright 2008 Yves Rizoud
|
||||||
Copyright 2007 Adrien Destugues
|
Copyright 2007 Adrien Destugues
|
||||||
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||||
|
|
||||||
|
Copyright 2008 Peter Gordon
|
||||||
Copyright 2008 Yves Rizoud
|
Copyright 2008 Yves Rizoud
|
||||||
Copyright 2007 Adrien Destugues
|
Copyright 2007 Adrien Destugues
|
||||||
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
|
||||||
|
|||||||
6
struct.h
6
struct.h
@ -106,8 +106,8 @@ struct Fenetre_Bouton_special
|
|||||||
struct T_Drive
|
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.5" / 1: Diskette 5.25" / 2: HDD / 3: CD-ROM / 4: Logique
|
||||||
char Chemin[4]; // Reservé pour "x:\", ou "/", ou "~"
|
char *Chemin; // Reservé pour "x:\", ou "/", "DF0:", etc.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ struct Element_de_liste_de_fileselect
|
|||||||
{
|
{
|
||||||
char NomAbrege[13]; // Le nom tel qu'affiché dans le fileselector
|
char NomAbrege[13]; // Le nom tel qu'affiché dans le fileselector
|
||||||
char NomComplet[256]; // Le nom du fichier ou du répertoire
|
char NomComplet[256]; // Le nom du fichier ou du répertoire
|
||||||
byte Type; // Type d'élément : 0 = Fichier, 1 = Répertoire
|
byte Type; // Type d'élément : 0 = Fichier, 1 = Répertoire, 2 = Lecteur
|
||||||
|
|
||||||
// données de chaînage de la liste
|
// données de chaînage de la liste
|
||||||
struct Element_de_liste_de_fileselect * Suivant;
|
struct Element_de_liste_de_fileselect * Suivant;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user