From 9fa3347fc174b1388f59c667ca02bc8f112eb607 Mon Sep 17 00:00:00 2001 From: Slava Zanko Date: Thu, 1 Oct 2009 22:15:25 +0300 Subject: [PATCH] Added keymaps for some sort types. * PanelSortOrderByName * PanelSortOrderByExt * PanelSortOrderBySize * PanelSortOrderByMTime Also added 'PanelReverseSort' keymap. Signed-off-by: Slava Zanko --- misc/mc.keymap | 6 ++++++ src/cmddef.h | 5 +++++ src/keybind.c | 5 +++++ src/screen.c | 28 ++++++++++++++++++++++++++++ 4 files changed, 44 insertions(+) diff --git a/misc/mc.keymap b/misc/mc.keymap index 61908bbf2..82ab6fb1b 100644 --- a/misc/mc.keymap +++ b/misc/mc.keymap @@ -238,6 +238,12 @@ PanelMoveEnd = alt-gt; end PanelSelectSortOrder= PanelToggleSortOrderPrev= PanelToggleSortOrderNext= +PanelReverseSort= +PanelSortOrderByName= +PanelSortOrderByExt= +PanelSortOrderBySize= +PanelSortOrderByMTime= + [panel:xmap] diff --git a/src/cmddef.h b/src/cmddef.h index 92db63a9a..9ab50d06d 100644 --- a/src/cmddef.h +++ b/src/cmddef.h @@ -341,6 +341,11 @@ #define CK_PanelToggleSortOrderNext 8032 #define CK_PanelToggleSortOrderPrev 8033 #define CK_PanelSelectSortOrder 8034 +#define CK_PanelReverseSort 8035 +#define CK_PanelSortOrderByName 8036 +#define CK_PanelSortOrderByExt 8037 +#define CK_PanelSortOrderBySize 8038 +#define CK_PanelSortOrderByMTime 8039 /* Process a block through a shell command: CK_Pipe_Block(i) executes shell_cmd[i]. diff --git a/src/keybind.c b/src/keybind.c index 7fd17e33e..791765080 100644 --- a/src/keybind.c +++ b/src/keybind.c @@ -321,6 +321,11 @@ static const name_key_map_t command_names[] = { { "PanelToggleSortOrderNext", CK_PanelToggleSortOrderNext }, { "PanelToggleSortOrderPrev", CK_PanelToggleSortOrderPrev }, { "PanelSelectSortOrder", CK_PanelSelectSortOrder }, + { "PanelReverseSort", CK_PanelReverseSort }, + { "PanelSortOrderByName", CK_PanelSortOrderByName }, + { "PanelSortOrderByExt", CK_PanelSortOrderByExt }, + { "PanelSortOrderBySize", CK_PanelSortOrderBySize }, + { "PanelSortOrderByMTime", CK_PanelSortOrderByMTime }, /* widgets */ { "InputBol", CK_InputBol }, diff --git a/src/screen.c b/src/screen.c index a03af1cf0..d2f165ae8 100644 --- a/src/screen.c +++ b/src/screen.c @@ -2513,6 +2513,18 @@ panel_select_sort_order(WPanel *panel) } +static void +panel_set_sort_type_by_id(WPanel *panel, const char *name) +{ + const panel_field_t *sort_order; + + sort_order = panel_get_field_by_id (name); + if (sort_order == NULL) + return; + panel->current_sort_field = sort_order; + panel_set_sort_order (panel, panel->current_sort_field); +} + typedef void (*panel_key_callback) (WPanel *); static void cmd_do_enter(WPanel *wp) { (void) do_enter(wp); } @@ -2633,6 +2645,22 @@ panel_execute_cmd (WPanel *panel, int command) case CK_PanelToggleSortOrderNext: panel_toggle_sort_order_next(panel); break; + case CK_PanelReverseSort: + panel->reverse = ! panel->reverse; + panel_set_sort_order (panel, panel->current_sort_field); + break; + case CK_PanelSortOrderByName: + panel_set_sort_type_by_id(panel, "name"); + break; + case CK_PanelSortOrderByExt: + panel_set_sort_type_by_id(panel, "extension"); + break; + case CK_PanelSortOrderBySize: + panel_set_sort_type_by_id(panel, "size"); + break; + case CK_PanelSortOrderByMTime: + panel_set_sort_type_by_id(panel, "mtime"); + break; } return res; } -- 2.11.4.GIT