Convert comments to UTF-8
most were encoded in Latin1 / CP1252 but a few lines in op_c.c were using IBM437/850 !
This commit is contained in:
240
src/filesel.c
240
src/filesel.c
@@ -4,7 +4,7 @@
|
||||
|
||||
Copyright 2018 Thomas Bernard
|
||||
Copyright 2014 Sergii Pylypenko
|
||||
Copyright 2011 Pawel Góralski
|
||||
Copyright 2011 Pawel Góralski
|
||||
Copyright 2009 Franck Charlet
|
||||
Copyright 2008 Peter Gordon
|
||||
Copyright 2008 Yves Rizoud
|
||||
@@ -72,17 +72,17 @@
|
||||
#include "filesel.h"
|
||||
|
||||
#define NORMAL_FILE_COLOR MC_Light // color du texte pour une ligne de
|
||||
// fichier non sélectionné
|
||||
// fichier non sélectionné
|
||||
#define NORMAL_DIRECTORY_COLOR MC_Dark // color du texte pour une ligne de
|
||||
// répertoire non sélectionné
|
||||
// répertoire non sélectionné
|
||||
#define NORMAL_BACKGROUND_COLOR MC_Black // color du fond pour une ligne
|
||||
// non sélectionnée
|
||||
// non sélectionnée
|
||||
#define SELECTED_FILE_COLOR MC_White // color du texte pour une ligne de
|
||||
// fichier sélectionnée
|
||||
// fichier sélectionnée
|
||||
#define SELECTED_DIRECTORY_COLOR MC_Light // color du texte pour une ligne de
|
||||
// repértoire sélectionnée
|
||||
// repértoire sélectionnée
|
||||
#define SELECTED_BACKGROUND_COLOR MC_Dark // color du fond pour une ligne
|
||||
// sélectionnée
|
||||
// sélectionnée
|
||||
|
||||
// -- Native fileselector for WIN32
|
||||
|
||||
@@ -158,8 +158,8 @@ static word Selector_filename_unicode[256];
|
||||
|
||||
// Conventions:
|
||||
//
|
||||
// * Le fileselect modifie le répertoire courant. Ceci permet de n'avoir
|
||||
// qu'un findfirst dans le répertoire courant à faire:
|
||||
// * Le fileselect modifie le répertoire courant. Ceci permet de n'avoir
|
||||
// qu'un findfirst dans le répertoire courant à faire:
|
||||
|
||||
void Recount_files(T_Fileselector *list)
|
||||
{
|
||||
@@ -202,9 +202,9 @@ void Recount_files(T_Fileselector *list)
|
||||
}
|
||||
}
|
||||
|
||||
// -- Destruction de la liste chaînée ---------------------------------------
|
||||
// -- Destruction de la liste chaînée ---------------------------------------
|
||||
void Free_fileselector_list(T_Fileselector *list)
|
||||
// Cette procédure détruit la chaine des fichiers. Elle doit être appelée
|
||||
// Cette procédure détruit la chaine des fichiers. Elle doit être appelée
|
||||
// avant de rappeler la fonction Read_list_of_files, ainsi qu'en fin de
|
||||
// programme.
|
||||
{
|
||||
@@ -213,11 +213,11 @@ void Free_fileselector_list(T_Fileselector *list)
|
||||
|
||||
while (list->First!=NULL)
|
||||
{
|
||||
// On mémorise l'adresse du premier élément de la liste
|
||||
// On mémorise l'adresse du premier élément de la liste
|
||||
temp_item =list->First;
|
||||
// On fait avancer la tête de la liste
|
||||
// On fait avancer la tête de la liste
|
||||
list->First=list->First->Next;
|
||||
// Et on efface l'ancien premier élément de la liste
|
||||
// Et on efface l'ancien premier élément de la liste
|
||||
free(temp_item->Unicode_full_name);
|
||||
free(temp_item->Unicode_short_name);
|
||||
free(temp_item);
|
||||
@@ -282,7 +282,7 @@ word * Format_filename_unicode(const word * fname, word max_length, int type)
|
||||
result[c]=fname[c];
|
||||
}
|
||||
|
||||
// Ensuite on recopie la partie qui suit le point (si nécessaire):
|
||||
// Ensuite on recopie la partie qui suit le point (si nécessaire):
|
||||
if (pos_last_dot != -1)
|
||||
{
|
||||
for (c = pos_last_dot+1,other_cursor=max_length-4;fname[c]!='\0' && other_cursor < max_length-1;c++,other_cursor++)
|
||||
@@ -363,7 +363,7 @@ char * Format_filename(const char * fname, word max_length, int type)
|
||||
result[c]=fname[c];
|
||||
}
|
||||
|
||||
// Ensuite on recopie la partie qui suit le point (si nécessaire):
|
||||
// Ensuite on recopie la partie qui suit le point (si nécessaire):
|
||||
if (pos_last_dot != -1)
|
||||
{
|
||||
for (c = pos_last_dot+1,other_cursor=max_length-4;fname[c]!='\0' && other_cursor < max_length-1;c++,other_cursor++)
|
||||
@@ -376,7 +376,7 @@ char * Format_filename(const char * fname, word max_length, int type)
|
||||
|
||||
// -- Rajouter a la liste des elements de la liste un element ---------------
|
||||
T_Fileselector_item * Add_element_to_list(T_Fileselector *list, const char * full_name, const char *short_name, int type, byte icon)
|
||||
// Cette procedure ajoute a la liste chainee un fichier passé en argument.
|
||||
// Cette procedure ajoute a la liste chainee un fichier passé en argument.
|
||||
{
|
||||
// Working element
|
||||
T_Fileselector_item * temp_item;
|
||||
@@ -420,7 +420,7 @@ int Check_extension(const char *filename_ext, const char * filter)
|
||||
if (filename_ext == NULL || filename_ext[0] == '\0')
|
||||
return (filter[0] == '\0' || filter[0] == ';');
|
||||
|
||||
// Vérification caractère par caractère, case-insensitive.
|
||||
// Vérification caractère par caractère, case-insensitive.
|
||||
for (c = 0; !(filter[c] == '\0' || filter[c] == ';'); c++)
|
||||
{
|
||||
if (filter[c] != '?' &&
|
||||
@@ -530,8 +530,8 @@ static void Read_dir_callback(void * pdata, const char *file_name, const word *u
|
||||
|
||||
|
||||
void Read_list_of_files(T_Fileselector *list, byte selected_format)
|
||||
// Cette procédure charge dans la liste chainée les fichiers dont l'extension
|
||||
// correspond au format demandé.
|
||||
// Cette procédure charge dans la liste chainée les fichiers dont l'extension
|
||||
// correspond au format demandé.
|
||||
{
|
||||
struct Read_dir_pdata callback_data;
|
||||
const char * current_path = NULL;
|
||||
@@ -542,14 +542,14 @@ void Read_list_of_files(T_Fileselector *list, byte selected_format)
|
||||
#endif
|
||||
|
||||
callback_data.list = list;
|
||||
// Tout d'abord, on déduit du format demandé un filtre à utiliser:
|
||||
// Tout d'abord, on déduit du format demandé un filtre à utiliser:
|
||||
callback_data.filter = Get_fileformat(selected_format)->Extensions;
|
||||
|
||||
// Ensuite, on vide la liste actuelle:
|
||||
Free_fileselector_list(list);
|
||||
// Après effacement, il ne reste ni fichier ni répertoire dans la liste
|
||||
// Après effacement, il ne reste ni fichier ni répertoire dans la liste
|
||||
|
||||
// On lit tous les répertoires:
|
||||
// On lit tous les répertoires:
|
||||
current_path = Get_current_directory(curdir, NULL, MAX_PATH_CHARACTERS);
|
||||
|
||||
For_each_directory_entry(current_path, &callback_data, Read_dir_callback);
|
||||
@@ -686,10 +686,10 @@ void Read_list_of_drives(T_Fileselector *list, byte name_length)
|
||||
{
|
||||
if ( (1 << bit_index) & drive_bits )
|
||||
{
|
||||
// On a ce lecteur, il faut maintenant déterminer son type "physique".
|
||||
// On a ce lecteur, il faut maintenant déterminer son type "physique".
|
||||
// pour profiter des jolies icones de X-man.
|
||||
char drive_path[]="A:\\";
|
||||
// Cette API Windows est étrange, je dois m'y faire...
|
||||
// Cette API Windows est étrange, je dois m'y faire...
|
||||
drive_path[0]='A'+bit_index;
|
||||
switch (GetDriveTypeA(drive_path))
|
||||
{
|
||||
@@ -731,11 +731,11 @@ void Read_list_of_drives(T_Fileselector *list, byte name_length)
|
||||
}
|
||||
#else
|
||||
{
|
||||
//Sous les différents unix, on va mettre
|
||||
//Sous les différents unix, on va mettre
|
||||
// un disque dur qui pointera vers la racine,
|
||||
// et un autre vers le home directory de l'utilisateur.
|
||||
|
||||
// Ensuite on utilise read_file_system_list pour compléter
|
||||
// Ensuite on utilise read_file_system_list pour compléter
|
||||
|
||||
struct mount_entry* mount_points_list;
|
||||
struct mount_entry* next;
|
||||
@@ -797,15 +797,15 @@ void Read_list_of_drives(T_Fileselector *list, byte name_length)
|
||||
#endif
|
||||
|
||||
|
||||
// -- Tri de la liste des fichiers et répertoires ---------------------------
|
||||
// -- Tri de la liste des fichiers et répertoires ---------------------------
|
||||
void Sort_list_of_files(T_Fileselector *list)
|
||||
// Tri la liste chainée existante dans l'ordre suivant:
|
||||
// Tri la liste chainée existante dans l'ordre suivant:
|
||||
//
|
||||
// * Les répertoires d'abord, dans l'ordre alphabétique de leur nom
|
||||
// * Les fichiers ensuite, dans l'ordre alphabétique de leur nom
|
||||
// * Les répertoires d'abord, dans l'ordre alphabétique de leur nom
|
||||
// * Les fichiers ensuite, dans l'ordre alphabétique de leur nom
|
||||
{
|
||||
byte list_is_sorted; // Booléen "La liste est triée"
|
||||
byte need_swap; // Booléen "Il faut inverser les éléments"
|
||||
byte list_is_sorted; // Booléen "La liste est triée"
|
||||
byte need_swap; // Booléen "Il faut inverser les éléments"
|
||||
T_Fileselector_item * prev_item;
|
||||
T_Fileselector_item * current_item;
|
||||
T_Fileselector_item * next_item;
|
||||
@@ -816,7 +816,7 @@ void Sort_list_of_files(T_Fileselector *list)
|
||||
{
|
||||
do
|
||||
{
|
||||
// Par défaut, on considère que la liste est triée
|
||||
// Par défaut, on considère que la liste est triée
|
||||
list_is_sorted=1;
|
||||
|
||||
current_item=list->First;
|
||||
@@ -827,7 +827,7 @@ void Sort_list_of_files(T_Fileselector *list)
|
||||
// On commence par supposer qu'il n'y pas pas besoin d'inversion
|
||||
need_swap=0;
|
||||
|
||||
// Ensuite, on vérifie si les deux éléments sont bien dans l'ordre ou
|
||||
// Ensuite, on vérifie si les deux éléments sont bien dans l'ordre ou
|
||||
// non:
|
||||
|
||||
// Drives go at the top of the list, and files go after them
|
||||
@@ -846,39 +846,39 @@ void Sort_list_of_files(T_Fileselector *list)
|
||||
|
||||
if (need_swap)
|
||||
{
|
||||
// Si les deux éléments nécessitent d'être inversé:
|
||||
// Si les deux éléments nécessitent d'être inversé:
|
||||
|
||||
// On les inverses:
|
||||
|
||||
// On note avant tout les éléments qui encapsulent nos deux amis
|
||||
// On note avant tout les éléments qui encapsulent nos deux amis
|
||||
prev_item =current_item->Previous;
|
||||
next_to_next_item=next_item->Next;
|
||||
|
||||
// On permute le chaînage des deux éléments entree eux
|
||||
// On permute le chaînage des deux éléments entree eux
|
||||
current_item->Next =next_to_next_item;
|
||||
current_item->Previous=next_item;
|
||||
next_item->Next =current_item;
|
||||
next_item->Previous=prev_item;
|
||||
|
||||
// On tente un chaînage des éléments encapsulant les compères:
|
||||
// On tente un chaînage des éléments encapsulant les compères:
|
||||
if (prev_item!=NULL)
|
||||
prev_item->Next=next_item;
|
||||
if (next_to_next_item!=NULL)
|
||||
next_to_next_item->Previous=current_item;
|
||||
|
||||
// On fait bien attention à modifier la tête de liste en cas de besoin
|
||||
// On fait bien attention à modifier la tête de liste en cas de besoin
|
||||
if (current_item==list->First)
|
||||
list->First=next_item;
|
||||
|
||||
// Ensuite, on se prépare à étudier les éléments précédents:
|
||||
// Ensuite, on se prépare à étudier les éléments précédents:
|
||||
current_item=prev_item;
|
||||
|
||||
// Et on constate que la liste n'était pas encore génialement triée
|
||||
// Et on constate que la liste n'était pas encore génialement triée
|
||||
list_is_sorted=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Si les deux éléments sont dans l'ordre:
|
||||
// Si les deux éléments sont dans l'ordre:
|
||||
|
||||
// On passe aux suivants
|
||||
current_item=current_item->Next;
|
||||
@@ -918,14 +918,14 @@ T_Fileselector_item * Get_item_by_index(T_Fileselector *list, short index)
|
||||
}
|
||||
|
||||
|
||||
// -- Affichage des éléments de la liste de fichier / répertoire ------------
|
||||
// -- Affichage des éléments de la liste de fichier / répertoire ------------
|
||||
void Display_file_list(T_Fileselector *list, short offset_first,short selector_offset)
|
||||
//
|
||||
// offset_first = Décalage entre le premier fichier visible dans le
|
||||
// sélecteur et le premier fichier de la liste
|
||||
// offset_first = Décalage entre le premier fichier visible dans le
|
||||
// sélecteur et le premier fichier de la liste
|
||||
//
|
||||
// selector_offset = Décalage entre le premier fichier visible dans le
|
||||
// sélecteur et le fichier sélectionné dans la liste
|
||||
// selector_offset = Décalage entre le premier fichier visible dans le
|
||||
// sélecteur et le fichier sélectionné dans la liste
|
||||
//
|
||||
{
|
||||
T_Fileselector_item * current_item;
|
||||
@@ -934,16 +934,16 @@ void Display_file_list(T_Fileselector *list, short offset_first,short selector_o
|
||||
byte background_color;
|
||||
|
||||
|
||||
// On vérifie s'il y a au moins 1 fichier dans la liste:
|
||||
// On vérifie s'il y a au moins 1 fichier dans la liste:
|
||||
if (list->Nb_elements>0)
|
||||
{
|
||||
// On commence par chercher à pointer sur le premier fichier visible:
|
||||
// On commence par chercher à pointer sur le premier fichier visible:
|
||||
current_item = Get_item_by_index(list, offset_first);
|
||||
|
||||
// Pour chacun des 10 éléments inscriptibles à l'écran
|
||||
// Pour chacun des 10 éléments inscriptibles à l'écran
|
||||
for (index=0;index<10;index++)
|
||||
{
|
||||
// S'il est sélectionné:
|
||||
// S'il est sélectionné:
|
||||
if (!selector_offset)
|
||||
{
|
||||
// Si c'est un fichier
|
||||
@@ -965,7 +965,7 @@ void Display_file_list(T_Fileselector *list, short offset_first,short selector_o
|
||||
background_color=NORMAL_BACKGROUND_COLOR;
|
||||
}
|
||||
|
||||
// On affiche l'élément
|
||||
// On affiche l'élément
|
||||
if (current_item->Icon != ICON_NONE)
|
||||
{
|
||||
// Name preceded by an icon
|
||||
@@ -981,7 +981,7 @@ void Display_file_list(T_Fileselector *list, short offset_first,short selector_o
|
||||
Print_in_window(8,95+index*8,current_item->Short_name,text_color,background_color);
|
||||
}
|
||||
|
||||
// On passe à la ligne suivante
|
||||
// On passe à la ligne suivante
|
||||
selector_offset--;
|
||||
current_item=current_item->Next;
|
||||
if (!current_item)
|
||||
@@ -992,30 +992,30 @@ void Display_file_list(T_Fileselector *list, short offset_first,short selector_o
|
||||
}
|
||||
|
||||
|
||||
// -- Récupérer le libellé d'un élément de la liste -------------------------
|
||||
// -- Récupérer le libellé d'un élément de la liste -------------------------
|
||||
static void Get_selected_item(T_Fileselector *list, short offset_first,short selector_offset,char * label,word * unicode_label,int *type)
|
||||
//
|
||||
// offset_first = Décalage entre le premier fichier visible dans le
|
||||
// sélecteur et le premier fichier de la liste
|
||||
// offset_first = Décalage entre le premier fichier visible dans le
|
||||
// sélecteur et le premier fichier de la liste
|
||||
//
|
||||
// selector_offset = Décalage entre le premier fichier visible dans le
|
||||
// sélecteur et le fichier à récupérer
|
||||
// selector_offset = Décalage entre le premier fichier visible dans le
|
||||
// sélecteur et le fichier à récupérer
|
||||
//
|
||||
// label = str de réception du libellé de l'élément
|
||||
// label = str 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é.
|
||||
// type = Récupération du type: 0 fichier, 1 repertoire, 2 lecteur.
|
||||
// Passer NULL si pas interessé.
|
||||
{
|
||||
T_Fileselector_item * current_item;
|
||||
|
||||
// On vérifie s'il y a au moins 1 fichier dans la liste:
|
||||
// On vérifie s'il y a au moins 1 fichier dans la liste:
|
||||
if (list->Nb_elements>0)
|
||||
{
|
||||
// On commence par chercher à pointer sur le premier fichier visible:
|
||||
// Ensuite, on saute autant d'éléments que le décalage demandé:
|
||||
// On commence par chercher à pointer sur le premier fichier visible:
|
||||
// Ensuite, on saute autant d'éléments que le décalage demandé:
|
||||
current_item = Get_item_by_index(list, offset_first + selector_offset);
|
||||
|
||||
// On recopie la chaîne
|
||||
// On recopie la chaîne
|
||||
strcpy(label, current_item->Full_name);
|
||||
if (unicode_label != NULL)
|
||||
{
|
||||
@@ -1031,28 +1031,28 @@ static void Get_selected_item(T_Fileselector *list, short offset_first,short sel
|
||||
}
|
||||
|
||||
|
||||
// ----------------- Déplacements dans la liste de fichiers -----------------
|
||||
// ----------------- Déplacements dans la liste de fichiers -----------------
|
||||
|
||||
void Selector_scroll_down(short * offset_first,short * selector_offset)
|
||||
// Fait scroller vers le bas le sélecteur de fichier... (si possible)
|
||||
// Fait scroller vers le bas le sélecteur de fichier... (si possible)
|
||||
{
|
||||
if ( ((*selector_offset)<9)
|
||||
&& ( (*selector_offset)+1 < Filelist.Nb_elements ) )
|
||||
// Si la sélection peut descendre
|
||||
// Si la sélection peut descendre
|
||||
Display_file_list(&Filelist, *offset_first,++(*selector_offset));
|
||||
else // Sinon, descendre la fenêtre (si possible)
|
||||
else // Sinon, descendre la fenêtre (si possible)
|
||||
if ((*offset_first)+10<Filelist.Nb_elements)
|
||||
Display_file_list(&Filelist, ++(*offset_first),*selector_offset);
|
||||
}
|
||||
|
||||
|
||||
void Selector_scroll_up(short * offset_first,short * selector_offset)
|
||||
// Fait scroller vers le haut le sélecteur de fichier... (si possible)
|
||||
// Fait scroller vers le haut le sélecteur de fichier... (si possible)
|
||||
{
|
||||
if ((*selector_offset)>0)
|
||||
// Si la sélection peut monter
|
||||
// Si la sélection peut monter
|
||||
Display_file_list(&Filelist, *offset_first,--(*selector_offset));
|
||||
else // Sinon, monter la fenêtre (si possible)
|
||||
else // Sinon, monter la fenêtre (si possible)
|
||||
if ((*offset_first)>0)
|
||||
Display_file_list(&Filelist, --(*offset_first),*selector_offset);
|
||||
}
|
||||
@@ -1129,9 +1129,9 @@ void Selector_home(short * offset_first,short * selector_offset)
|
||||
|
||||
short Compute_click_offset_in_fileselector(void)
|
||||
/*
|
||||
Renvoie le décalage dans le sélecteur de fichier sur lequel on a clické.
|
||||
Renvoie le décalage du dernier fichier si on a clické au delà.
|
||||
Renvoie -1 si le sélecteur est vide.
|
||||
Renvoie le décalage dans le sélecteur de fichier sur lequel on a clické.
|
||||
Renvoie le décalage du dernier fichier si on a clické au delà.
|
||||
Renvoie -1 si le sélecteur est vide.
|
||||
*/
|
||||
{
|
||||
short computed_offset;
|
||||
@@ -1148,7 +1148,7 @@ void Display_bookmark(T_Dropdown_button * Button, int bookmark_number)
|
||||
if (Config.Bookmark_directory[bookmark_number])
|
||||
{
|
||||
int label_size;
|
||||
// Libellé
|
||||
// Libellé
|
||||
Print_in_window_limited(Button->Pos_X+3+10,Button->Pos_Y+2,Config.Bookmark_label[bookmark_number],8,MC_Black,MC_Light);
|
||||
label_size=strlen(Config.Bookmark_label[bookmark_number]);
|
||||
if (label_size<8)
|
||||
@@ -1163,7 +1163,7 @@ void Display_bookmark(T_Dropdown_button * Button, int bookmark_number)
|
||||
}
|
||||
else
|
||||
{
|
||||
// Libellé
|
||||
// Libellé
|
||||
Print_in_window(Button->Pos_X+3+10,Button->Pos_Y+2,"--------",MC_Dark,MC_Light);
|
||||
// Menu apparait sur clic droit ou gauche
|
||||
Button->Active_button=RIGHT_SIDE|LEFT_SIDE;
|
||||
@@ -1181,8 +1181,8 @@ void Print_current_directory(void)
|
||||
//
|
||||
{
|
||||
char converted_name[MAX_PATH_CHARACTERS];
|
||||
int length; // length du répertoire courant
|
||||
int index; // index de parcours de la chaine complète
|
||||
int length; // length du répertoire courant
|
||||
int index; // index de parcours de la chaine complète
|
||||
|
||||
strncpy(converted_name,Selector->Directory,sizeof(converted_name));
|
||||
converted_name[sizeof(converted_name)-1] = '\0';
|
||||
@@ -1288,7 +1288,7 @@ void Print_filename_in_fileselector(void)
|
||||
Update_window_area(82,48,27*8,8);
|
||||
}
|
||||
|
||||
int Selected_type; // Utilisé pour mémoriser le type d'entrée choisi
|
||||
int Selected_type; // Utilisé pour mémoriser le type d'entrée choisi
|
||||
// dans le selecteur de fichier.
|
||||
|
||||
void Prepare_and_display_filelist(short Position, short offset, T_Scroller_button * button)
|
||||
@@ -1304,11 +1304,11 @@ void Prepare_and_display_filelist(short Position, short offset, T_Scroller_butto
|
||||
|
||||
Update_window_area(8-1,95-1,144+2,80+2);
|
||||
|
||||
// On récupère le nom du schmilblick à "accéder"
|
||||
// On récupère le nom du schmilblick à "accéder"
|
||||
Get_selected_item(&Filelist, Position,offset,Selector_filename,Selector_filename_unicode,&Selected_type);
|
||||
// On affiche le nouveau nom de fichier
|
||||
Print_filename_in_fileselector();
|
||||
// On affiche le nom du répertoire courant
|
||||
// On affiche le nom du répertoire courant
|
||||
Print_current_directory();
|
||||
}
|
||||
|
||||
@@ -1352,14 +1352,14 @@ void Scroll_fileselector(T_Scroller_button * file_scroller)
|
||||
|
||||
strcpy(old_filename,Selector_filename);
|
||||
|
||||
// On regarde si la liste a bougé
|
||||
// On regarde si la liste a bougé
|
||||
if (file_scroller->Position!=Selector->Position)
|
||||
{
|
||||
// Si c'est le cas, il faut mettre à jour la jauge
|
||||
// Si c'est le cas, il faut mettre à jour la jauge
|
||||
file_scroller->Position=Selector->Position;
|
||||
Window_draw_slider(file_scroller);
|
||||
}
|
||||
// On récupére le nom du schmilblick à "accéder"
|
||||
// On récupére le nom du schmilblick à "accéder"
|
||||
Get_selected_item(&Filelist, Selector->Position,Selector->Offset,Selector_filename,Selector_filename_unicode,&Selected_type);
|
||||
if (strcmp(old_filename,Selector_filename))
|
||||
New_preview_is_needed=1;
|
||||
@@ -1513,7 +1513,7 @@ int Quicksearch_list(T_List_button * list, T_Fileselector * selector)
|
||||
Locate_list_item(list, selected_item);
|
||||
|
||||
Hide_cursor();
|
||||
// Mise à jour du scroller
|
||||
// Mise à jour du scroller
|
||||
list->Scroller->Position=list->List_start;
|
||||
Window_draw_slider(list->Scroller);
|
||||
|
||||
@@ -1537,12 +1537,12 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
T_Dropdown_button * bookmark_dropdown[4];
|
||||
short temp;
|
||||
unsigned int format;
|
||||
int dummy=0; // Sert à appeler SDL_GetKeyState
|
||||
int dummy=0; // Sert à appeler SDL_GetKeyState
|
||||
byte save_or_load_image=0;
|
||||
byte has_clicked_ok=0;// Indique si on a clické sur Load ou Save ou sur
|
||||
//un bouton enclenchant Load ou Save juste après.
|
||||
byte has_clicked_ok=0;// Indique si on a clické sur Load ou Save ou sur
|
||||
//un bouton enclenchant Load ou Save juste après.
|
||||
byte initial_back_color; // preview destroys it (how nice)
|
||||
char previous_directory[MAX_PATH_CHARACTERS]; // Répertoire d'où l'on vient après un CHDIR
|
||||
char previous_directory[MAX_PATH_CHARACTERS]; // Répertoire d'où l'on vient après un CHDIR
|
||||
char save_filename[MAX_PATH_CHARACTERS];
|
||||
word save_filename_unicode[MAX_PATH_CHARACTERS];
|
||||
char initial_comment[COMMENT_SIZE+1];
|
||||
@@ -1676,8 +1676,8 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
Highlight_file(Find_file_in_fileselector(&Filelist, context->File_name));
|
||||
Prepare_and_display_filelist(Selector->Position,Selector->Offset,file_scroller);
|
||||
|
||||
// On initialise le nom de fichier à celui en cours et non pas celui sous
|
||||
// la barre de sélection
|
||||
// On initialise le nom de fichier à celui en cours et non pas celui sous
|
||||
// la barre de sélection
|
||||
strcpy(Selector_filename,context->File_name);
|
||||
Unicode_strlcpy(Selector_filename_unicode, context->File_name_unicode, 256);
|
||||
// On affiche le nouveau nom de fichier
|
||||
@@ -1748,9 +1748,9 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
// On efface le repertoire (si on peut)
|
||||
temp=(!Remove_directory(Selector_filename));
|
||||
|
||||
if (temp) // temp indique si l'effacement s'est bien passé
|
||||
if (temp) // temp indique si l'effacement s'est bien passé
|
||||
{
|
||||
// On remonte si c'était le dernier élément de la liste
|
||||
// On remonte si c'était le dernier élément de la liste
|
||||
if (Selector->Position+Selector->Offset==Filelist.Nb_elements-1)
|
||||
{
|
||||
if (Selector->Position)
|
||||
@@ -1759,7 +1759,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
if (Selector->Offset)
|
||||
Selector->Offset--;
|
||||
}
|
||||
else // Si ce n'était pas le dernier, il faut faire gaffe à ce
|
||||
else // Si ce n'était pas le dernier, il faut faire gaffe à ce
|
||||
{ // que ses copains d'en dessous ne remontent pas trop.
|
||||
if ( (Selector->Position)
|
||||
&& (Selector->Position+10==Filelist.Nb_elements) )
|
||||
@@ -1787,14 +1787,14 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
{
|
||||
if (temp!=Selector->Offset)
|
||||
{
|
||||
// On met à jour le décalage
|
||||
// On met à jour le décalage
|
||||
Selector->Offset=temp;
|
||||
|
||||
// On récupére le nom du schmilblick à "accéder"
|
||||
// On récupére le nom du schmilblick à "accéder"
|
||||
Get_selected_item(&Filelist, Selector->Position,Selector->Offset,Selector_filename,Selector_filename_unicode,&Selected_type);
|
||||
// On affiche le nouveau nom de fichier
|
||||
Print_filename_in_fileselector();
|
||||
// On affiche à nouveau la liste
|
||||
// On affiche à nouveau la liste
|
||||
Display_file_list(&Filelist, Selector->Position,Selector->Offset);
|
||||
|
||||
// On vient de changer de nom de fichier, donc on doit s'appreter
|
||||
@@ -1805,10 +1805,10 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
}
|
||||
else
|
||||
{
|
||||
// En sauvegarde, si on a double-clické sur un répertoire, il
|
||||
// faut mettre le nom de fichier au nom du répertoire. Sinon, dans
|
||||
// En sauvegarde, si on a double-clické sur un répertoire, il
|
||||
// faut mettre le nom de fichier au nom du répertoire. Sinon, dans
|
||||
// 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 (Selector->Position+Selector->Offset<Filelist.Nb_directories)
|
||||
Get_selected_item(&Filelist, Selector->Position,Selector->Offset,Selector_filename,Selector_filename_unicode,&Selected_type);
|
||||
|
||||
@@ -1824,11 +1824,11 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
case 5 : // Scroller de fichiers
|
||||
Hide_cursor();
|
||||
Selector->Position=Window_attribute2;
|
||||
// On récupére le nom du schmilblick à "accéder"
|
||||
// On récupére le nom du schmilblick à "accéder"
|
||||
Get_selected_item(&Filelist, Selector->Position,Selector->Offset,Selector_filename,Selector_filename_unicode,&Selected_type);
|
||||
// On affiche le nouveau nom de fichier
|
||||
Print_filename_in_fileselector();
|
||||
// On affiche à nouveau la liste
|
||||
// On affiche à nouveau la liste
|
||||
Display_file_list(&Filelist, Selector->Position,Selector->Offset);
|
||||
Display_cursor();
|
||||
New_preview_is_needed=1;
|
||||
@@ -1972,7 +1972,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
#if defined(WIN32) || defined(ENABLE_FILENAMES_ICONV)
|
||||
Unicode_strlcpy(Selector_filename_unicode, filename_unicode, sizeof(Selector_filename_unicode)/sizeof(word));
|
||||
#endif
|
||||
// On regarde s'il faut rajouter une extension. C'est-à-dire s'il
|
||||
// On regarde s'il faut rajouter une extension. C'est-à-dire s'il
|
||||
// n'y a pas de '.' dans le nom du fichier.
|
||||
for(temp=0,dummy=0; ((Selector_filename[temp]) && (!dummy)); temp++)
|
||||
if (Selector_filename[temp]=='.')
|
||||
@@ -2028,7 +2028,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
case 9 : // Volume Select
|
||||
Hide_cursor();
|
||||
// Comme on tombe sur un disque qu'on connait pas, on se place en
|
||||
// début de liste:
|
||||
// début de liste:
|
||||
Selector->Position=0;
|
||||
Selector->Offset=0;
|
||||
// Affichage des premiers fichiers visibles:
|
||||
@@ -2047,7 +2047,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
|
||||
switch(Window_attribute2)
|
||||
{
|
||||
case -1: // bouton lui-même: aller au répertoire mémorisé
|
||||
case -1: // bouton lui-même: aller au répertoire mémorisé
|
||||
if (Config.Bookmark_directory[clicked_button-10])
|
||||
{
|
||||
// backup the currently selected filename
|
||||
@@ -2087,7 +2087,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
case 1: // Rename
|
||||
if (Config.Bookmark_directory[clicked_button-10])
|
||||
{
|
||||
// On enlève les "..." avant l'édition
|
||||
// On enlève les "..." avant l'édition
|
||||
char bookmark_label[8+1];
|
||||
strcpy(bookmark_label, Config.Bookmark_label[clicked_button-10]);
|
||||
if (bookmark_label[7]==ELLIPSIS_CHARACTER)
|
||||
@@ -2174,10 +2174,10 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
break;
|
||||
case SDLK_BACKSPACE : // Backspace
|
||||
Reset_quicksearch();
|
||||
// Si le choix ".." est bien en tête des propositions...
|
||||
// Si le choix ".." est bien en tête des propositions...
|
||||
if (Filelist.Nb_elements && !strcmp(Filelist.First->Full_name,PARENT_DIR))
|
||||
{
|
||||
// On va dans le répertoire parent.
|
||||
// On va dans le répertoire parent.
|
||||
strcpy(Selector_filename,PARENT_DIR);
|
||||
Selector_filename_unicode[0] = 0;
|
||||
Selected_type=1;
|
||||
@@ -2220,7 +2220,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
|
||||
if (has_clicked_ok)
|
||||
{
|
||||
// Si c'est un répertoire, on annule "has_clicked_ok" et on passe
|
||||
// Si c'est un répertoire, on annule "has_clicked_ok" et on passe
|
||||
// dedans.
|
||||
if (Selected_type!=0)
|
||||
{
|
||||
@@ -2281,14 +2281,14 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
// Gestion du chrono et des previews
|
||||
if (New_preview_is_needed)
|
||||
{
|
||||
// On efface les infos de la preview précédente s'il y en a une
|
||||
// d'affichée
|
||||
// On efface les infos de la preview précédente s'il y en a une
|
||||
// d'affichée
|
||||
if (Timer_state==2)
|
||||
{
|
||||
Hide_cursor();
|
||||
// On efface le commentaire précédent
|
||||
// On efface le commentaire précédent
|
||||
Window_rectangle(45,70,32*8,8,MC_Light);
|
||||
// On nettoie la zone où va s'afficher la preview:
|
||||
// On nettoie la zone où va s'afficher la preview:
|
||||
Window_rectangle(183,95,PREVIEW_WIDTH,PREVIEW_HEIGHT,MC_Light);
|
||||
// On efface les dimensions de l'image
|
||||
Window_rectangle(101,59,120,8,MC_Light);
|
||||
@@ -2302,15 +2302,15 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
Print_in_window(45,70,context->Comment,MC_Black,MC_Light);
|
||||
}
|
||||
Display_cursor();
|
||||
// Un update pour couvrir les 4 zones: 3 libellés plus le commentaire
|
||||
// Un update pour couvrir les 4 zones: 3 libellés plus le commentaire
|
||||
Update_window_area(45,48,256,30);
|
||||
// Zone de preview
|
||||
Update_window_area(183,95,PREVIEW_WIDTH,PREVIEW_HEIGHT);
|
||||
}
|
||||
|
||||
New_preview_is_needed=0;
|
||||
Timer_state=0; // State du chrono = Attente d'un Xème de seconde
|
||||
// On lit le temps de départ du chrono
|
||||
Timer_state=0; // State du chrono = Attente d'un Xème de seconde
|
||||
// On lit le temps de départ du chrono
|
||||
Init_chrono(Config.Timer_delay);
|
||||
}
|
||||
|
||||
@@ -2337,7 +2337,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
|
||||
}
|
||||
|
||||
Timer_state=2; // On arrête le chrono
|
||||
Timer_state=2; // On arrête le chrono
|
||||
}
|
||||
}
|
||||
while ( (!has_clicked_ok) && (clicked_button!=2) );
|
||||
@@ -2358,7 +2358,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
}
|
||||
|
||||
|
||||
// On restaure les données de l'image qui ont certainement été modifiées
|
||||
// On restaure les données de l'image qui ont certainement été modifiées
|
||||
// par la preview.
|
||||
Back_color=initial_back_color;
|
||||
if (Windows_open <= 1)
|
||||
|
||||
Reference in New Issue
Block a user