Display unicode names in script factory as well

So in windows the long filename is shown instead of the short filename
This commit is contained in:
Thomas Bernard 2018-02-21 20:25:16 +01:00
parent db39392411
commit b6c3852aad
3 changed files with 31 additions and 8 deletions

View File

@ -64,6 +64,8 @@ char * Bound_script[10];
#define putenv _putenv #define putenv _putenv
#endif #endif
#include "unicode.h"
/// ///
/// Number of characters for name in fileselector. /// Number of characters for name in fileselector.
/// Window is adjusted according to it. /// Window is adjusted according to it.
@ -2161,7 +2163,10 @@ void Draw_script_name(word x, word y, word index, byte highlighted)
} }
} }
Print_in_window(x, y, current_item->Short_name, fg,bg); if (current_item->Unicode_short_name != NULL)
Print_in_window_unicode(x, y, current_item->Unicode_short_name, fg, bg);
else
Print_in_window(x, y, current_item->Short_name, fg,bg);
Update_window_area(x,y,NAME_WIDTH*8,8); Update_window_area(x,y,NAME_WIDTH*8,8);
} }
@ -2258,8 +2263,8 @@ void Draw_script_information(T_Fileselector_item * script_item, const char *full
static void Add_script(void * pdata, const char *file_name, const word *unicode_name, byte is_file, byte is_directory, byte is_hidden) static void Add_script(void * pdata, const char *file_name, const word *unicode_name, byte is_file, byte is_directory, byte is_hidden)
{ {
int len; int len;
T_Fileselector_item * item;
(void)pdata; (void)pdata;
(void)unicode_name;
if (is_file) if (is_file)
{ {
@ -2271,7 +2276,12 @@ static void Add_script(void * pdata, const char *file_name, const word *unicode_
if (is_hidden && !Config.Show_hidden_files) if (is_hidden && !Config.Show_hidden_files)
return; return;
Add_element_to_list(&Scripts_selector, file_name, Format_filename(file_name, NAME_WIDTH+1, 0), 0, ICON_NONE); item = Add_element_to_list(&Scripts_selector, file_name, Format_filename(file_name, NAME_WIDTH+1, 0), 0, ICON_NONE);
if (item != NULL && unicode_name != NULL)
{
item->Unicode_full_name = Unicode_strdup(unicode_name);
item->Unicode_short_name = Unicode_strdup(Format_filename_unicode(unicode_name, NAME_WIDTH+1, 1));
}
} }
else if (is_directory) else if (is_directory)
{ {
@ -2285,7 +2295,12 @@ static void Add_script(void * pdata, const char *file_name, const word *unicode_
if (is_hidden && !Config.Show_hidden_directories) if (is_hidden && !Config.Show_hidden_directories)
return; return;
Add_element_to_list(&Scripts_selector, file_name, Format_filename(file_name, NAME_WIDTH+1, 1), 1, ICON_NONE); item = Add_element_to_list(&Scripts_selector, file_name, Format_filename(file_name, NAME_WIDTH+1, 1), 1, ICON_NONE);
if (item != NULL && unicode_name != NULL)
{
item->Unicode_full_name = Unicode_strdup(unicode_name);
item->Unicode_short_name = Unicode_strdup(Format_filename_unicode(unicode_name, NAME_WIDTH+1, 1));
}
} }
} }

View File

@ -498,8 +498,11 @@ static void Read_dir_callback(void * pdata, const char *file_name, const word *u
// Add to list // Add to list
item = Add_element_to_list(p->list, file_name, Format_filename(file_name, 19, 1), 1, ICON_NONE); item = Add_element_to_list(p->list, file_name, Format_filename(file_name, 19, 1), 1, ICON_NONE);
item->Unicode_full_name = Unicode_strdup(unicode_name); if (item != NULL && unicode_name != NULL)
item->Unicode_short_name = Unicode_strdup(Format_filename_unicode(unicode_name, 19, 1)); {
item->Unicode_full_name = Unicode_strdup(unicode_name);
item->Unicode_short_name = Unicode_strdup(Format_filename_unicode(unicode_name, 19, 1));
}
p->list->Nb_directories++; p->list->Nb_directories++;
} }
else if (is_file && // It's a file else if (is_file && // It's a file
@ -512,8 +515,11 @@ static void Read_dir_callback(void * pdata, const char *file_name, const word *u
{ {
// Add to list // Add to list
item = Add_element_to_list(p->list, file_name, Format_filename(file_name, 19, 0), 0, ICON_NONE); item = Add_element_to_list(p->list, file_name, Format_filename(file_name, 19, 0), 0, ICON_NONE);
item->Unicode_full_name = Unicode_strdup(unicode_name); if (item != NULL && unicode_name != NULL)
item->Unicode_short_name = Unicode_strdup(Format_filename_unicode(unicode_name, 19, 0)); {
item->Unicode_full_name = Unicode_strdup(unicode_name);
item->Unicode_short_name = Unicode_strdup(Format_filename_unicode(unicode_name, 19, 0));
}
p->list->Nb_files++; p->list->Nb_files++;
// Stop searching // Stop searching
break; break;

View File

@ -38,6 +38,8 @@ T_Fileselector_item * Add_element_to_list(T_Fileselector *list, const char * ful
/// including the '\\0'. /// including the '\\0'.
char * Format_filename(const char * fname, word max_length, int type); char * Format_filename(const char * fname, word max_length, int type);
word * Format_filename_unicode(const word * fname, word max_length, int type);
void Free_fileselector_list(T_Fileselector *list); void Free_fileselector_list(T_Fileselector *list);
void Sort_list_of_files(T_Fileselector *list); void Sort_list_of_files(T_Fileselector *list);