mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-03 18:14:25 +03:00
Remove array of hardcoded format names from listmode.c
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
This commit is contained in:
parent
82a384d8f4
commit
b4f7ea071f
@ -94,18 +94,13 @@ struct listmode_label {
|
||||
static char *
|
||||
select_new_item (void)
|
||||
{
|
||||
/* NOTE: The following array of possible items must match the
|
||||
formats array in screen.c. Better approach might be to make the
|
||||
formats array global */
|
||||
char *possible_items[] =
|
||||
{ "name", "size", "type", "mtime", "perm", "mode", "|", "nlink",
|
||||
"owner", "group", "atime", "ctime", "space", "mark",
|
||||
"inode", NULL
|
||||
};
|
||||
|
||||
char **possible_items;
|
||||
char *ret = NULL;
|
||||
int i;
|
||||
Listbox *mylistbox;
|
||||
|
||||
possible_items = panel_get_user_possible_formats(NULL);
|
||||
|
||||
mylistbox =
|
||||
create_listbox_window (12, 20, " Add listing format item ",
|
||||
listmode_section);
|
||||
@ -115,9 +110,10 @@ select_new_item (void)
|
||||
|
||||
i = run_listbox (mylistbox);
|
||||
if (i >= 0)
|
||||
return possible_items[i];
|
||||
else
|
||||
return NULL;
|
||||
ret = g_strdup(possible_items[i]);
|
||||
|
||||
g_strfreev (possible_items);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
@ -138,6 +134,7 @@ badd_cback (int action)
|
||||
char *s = select_new_item ();
|
||||
if (s) {
|
||||
listbox_add_item (l_listmode, 0, 0, s, NULL);
|
||||
g_free(s);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -46,6 +46,7 @@ typedef struct panel_format_struct {
|
||||
const char *title;
|
||||
const char *title_hotkey;
|
||||
int use_in_gui;
|
||||
gboolean use_in_user_format;
|
||||
const char *(*string_fn)(file_entry *, int);
|
||||
sortfn *sort_routine; /* used by mouse_sort_col() */
|
||||
} panel_format_t;
|
||||
@ -149,5 +150,7 @@ gsize panel_get_num_of_sortable_formats(void);
|
||||
const char **panel_get_sortable_formats(gsize *);
|
||||
const panel_format_t *panel_get_format_by_id(const char *);
|
||||
const panel_format_t *panel_get_format_by_title_hotkey(const char *);
|
||||
gsize panel_get_num_of_user_possible_formats(void);
|
||||
const char **panel_get_user_possible_formats(gsize *);
|
||||
|
||||
#endif
|
||||
|
78
src/screen.c
78
src/screen.c
@ -430,131 +430,131 @@ string_dot (file_entry *fe, int len)
|
||||
panel_format_t panel_formats [] = {
|
||||
{
|
||||
"unsorted", 12, 1, J_LEFT_FIT,
|
||||
N_("Unsorted"), N_("&Unsorted"), 1,
|
||||
N_("Unsorted"), N_("&Unsorted"), 0, FALSE,
|
||||
string_file_name,
|
||||
(sortfn *) unsorted
|
||||
},
|
||||
{
|
||||
"name", 12, 1, J_LEFT_FIT,
|
||||
N_("Name"), N_("&Name"), 1,
|
||||
N_("Name"), N_("&Name"), 1, TRUE,
|
||||
string_file_name,
|
||||
(sortfn *) sort_name
|
||||
},
|
||||
{
|
||||
"extension", 12, 1, J_LEFT_FIT,
|
||||
N_("Extension"), N_("&Extension"), 1,
|
||||
N_("Extension"), N_("&Extension"), 1, FALSE,
|
||||
string_file_name, /* TODO: string_file_ext*/
|
||||
(sortfn *) sort_ext
|
||||
},
|
||||
{
|
||||
"size", 7, 0, J_RIGHT,
|
||||
N_("Size"), N_("&Size"), 1,
|
||||
N_("Size"), N_("&Size"), 1, TRUE,
|
||||
string_file_size,
|
||||
(sortfn *) sort_size
|
||||
},
|
||||
{
|
||||
"bsize", 7, 0, J_RIGHT,
|
||||
N_("Block Size"), NULL, 1,
|
||||
N_("Block Size"), NULL, 1, FALSE,
|
||||
string_file_size_brief,
|
||||
(sortfn *) sort_size
|
||||
},
|
||||
{
|
||||
"type", GT, 0, J_LEFT,
|
||||
"", NULL, 2,
|
||||
"", NULL, 2, TRUE,
|
||||
string_file_type,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"mtime", 12, 0, J_RIGHT,
|
||||
N_("MTime"), N_("&Modify time"), 1,
|
||||
N_("MTime"), N_("&Modify time"), 1, TRUE,
|
||||
string_file_mtime,
|
||||
(sortfn *) sort_time
|
||||
},
|
||||
{
|
||||
"atime", 12, 0, J_RIGHT,
|
||||
N_("ATime"), N_("&Access time"), 1,
|
||||
N_("ATime"), N_("&Access time"), 1, TRUE,
|
||||
string_file_atime,
|
||||
(sortfn *) sort_atime
|
||||
},
|
||||
{
|
||||
"ctime", 12, 0, J_RIGHT,
|
||||
N_("CTime"), N_("C&Hange time"), 1,
|
||||
N_("CTime"), N_("C&Hange time"), 1, TRUE,
|
||||
string_file_ctime,
|
||||
(sortfn *) sort_ctime
|
||||
},
|
||||
{
|
||||
"perm", 10, 0, J_LEFT,
|
||||
N_("Permission"), NULL, 1,
|
||||
N_("Permission"), NULL, 1, TRUE,
|
||||
string_file_permission,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"mode", 6, 0, J_RIGHT,
|
||||
N_("Perm"), NULL, 1,
|
||||
N_("Perm"), NULL, 1, TRUE,
|
||||
string_file_perm_octal,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"nlink", 2, 0, J_RIGHT,
|
||||
N_("Nl"), NULL, 1,
|
||||
N_("Nl"), NULL, 1, TRUE,
|
||||
string_file_nlinks, NULL
|
||||
},
|
||||
{
|
||||
"inode", 5, 0, J_RIGHT,
|
||||
N_("Inode"), N_("&Inode"), 1,
|
||||
N_("Inode"), N_("&Inode"), 1, TRUE,
|
||||
string_inode,
|
||||
(sortfn *) sort_inode
|
||||
},
|
||||
{
|
||||
"nuid", 5, 0, J_RIGHT,
|
||||
N_("UID"), NULL, 1,
|
||||
N_("UID"), NULL, 1, FALSE,
|
||||
string_file_nuid,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"ngid", 5, 0, J_RIGHT,
|
||||
N_("GID"), NULL, 1,
|
||||
N_("GID"), NULL, 1, FALSE,
|
||||
string_file_ngid,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"owner", 8, 0, J_LEFT_FIT,
|
||||
N_("Owner"), NULL, 1,
|
||||
N_("Owner"), NULL, 1, TRUE,
|
||||
string_file_owner,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"group", 8,0, J_LEFT_FIT,
|
||||
N_("Group"), NULL, 1,
|
||||
N_("Group"), NULL, 1, TRUE,
|
||||
string_file_group,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"mark", 1, 0, J_RIGHT,
|
||||
" ", NULL, 1,
|
||||
" ", NULL, 1, TRUE,
|
||||
string_marked,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"|", 1, 0, J_RIGHT,
|
||||
" ", NULL, 0,
|
||||
" ", NULL, 0, TRUE,
|
||||
NULL,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"space", 1, 0, J_RIGHT,
|
||||
" ", NULL, 0,
|
||||
" ", NULL, 0, TRUE,
|
||||
string_space,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
"dot", 1, 0, J_RIGHT,
|
||||
" ", NULL, 0,
|
||||
" ", NULL, 0, FALSE,
|
||||
string_dot,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
NULL, 0, 0, J_RIGHT, NULL, NULL, 0, NULL, NULL
|
||||
NULL, 0, 0, J_RIGHT, NULL, NULL, 0, FALSE, NULL, NULL
|
||||
},
|
||||
};
|
||||
|
||||
@ -3093,3 +3093,37 @@ panel_get_format_by_title_hotkey(const char *name)
|
||||
return &panel_formats[index];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gsize
|
||||
panel_get_num_of_user_possible_formats(void)
|
||||
{
|
||||
gsize ret = 0, index;
|
||||
|
||||
for(index=0; panel_formats[index].id != NULL; index ++)
|
||||
if (panel_formats[index].use_in_user_format)
|
||||
ret++;
|
||||
return ret;
|
||||
}
|
||||
|
||||
const char **
|
||||
panel_get_user_possible_formats(gsize *array_size)
|
||||
{
|
||||
char **ret;
|
||||
gsize index, i;
|
||||
|
||||
index = panel_get_num_of_user_possible_formats();
|
||||
|
||||
ret = g_new0 (char *, index + 1);
|
||||
if (ret == NULL)
|
||||
return NULL;
|
||||
|
||||
if (array_size != NULL)
|
||||
*array_size = index;
|
||||
|
||||
index=0;
|
||||
|
||||
for(i=0; panel_formats[i].id != NULL; i ++)
|
||||
if (panel_formats[i].use_in_user_format)
|
||||
ret[index++] = g_strdup(_(panel_formats[i].title_hotkey));
|
||||
return (const char**) ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user