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
#endif
#include "unicode.h"
///
/// Number of characters for name in fileselector.
/// Window is adjusted according to it.
@ -2161,6 +2163,9 @@ void Draw_script_name(word x, word y, word index, byte highlighted)
}
}
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);
@ -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)
{
int len;
T_Fileselector_item * item;
(void)pdata;
(void)unicode_name;
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)
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)
{
@ -2285,7 +2295,12 @@ static void Add_script(void * pdata, const char *file_name, const word *unicode_
if (is_hidden && !Config.Show_hidden_directories)
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
item = Add_element_to_list(p->list, file_name, Format_filename(file_name, 19, 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, 19, 1));
}
p->list->Nb_directories++;
}
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
item = Add_element_to_list(p->list, file_name, Format_filename(file_name, 19, 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, 19, 0));
}
p->list->Nb_files++;
// Stop searching
break;

View File

@ -38,6 +38,8 @@ T_Fileselector_item * Add_element_to_list(T_Fileselector *list, const char * ful
/// including the '\\0'.
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 Sort_list_of_files(T_Fileselector *list);