mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-03 01:54:24 +03:00
reimplemented diffviewer to use new keymap system
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
This commit is contained in:
parent
0f89dbc39a
commit
47f0dfd636
@ -4,6 +4,7 @@ libdiffviewer_la_SOURCES = \
|
|||||||
events.c \
|
events.c \
|
||||||
execute.c execute.h \
|
execute.c execute.h \
|
||||||
internal.h \
|
internal.h \
|
||||||
|
keymaps.c \
|
||||||
options.c options.h \
|
options.c options.h \
|
||||||
search.c \
|
search.c \
|
||||||
tools.c \
|
tools.c \
|
||||||
|
@ -529,7 +529,8 @@ mc_diffviewer_cmd_quit (event_info_t * event_info, gpointer data, GError ** erro
|
|||||||
(void) event_info;
|
(void) event_info;
|
||||||
(void) error;
|
(void) error;
|
||||||
|
|
||||||
dview->view_quit = 1;
|
dview->view_quit = TRUE;
|
||||||
|
dlg_stop (WIDGET (data)->owner);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ typedef struct WDiff
|
|||||||
int ndiff; /* number of hunks */
|
int ndiff; /* number of hunks */
|
||||||
DSRC dsrc; /* data source: memory or temporary file */
|
DSRC dsrc; /* data source: memory or temporary file */
|
||||||
|
|
||||||
int view_quit:1; /* Quit flag */
|
gboolean view_quit; /* Quit flag */
|
||||||
|
|
||||||
int height;
|
int height;
|
||||||
int half1;
|
int half1;
|
||||||
@ -140,6 +140,7 @@ typedef struct WDiff
|
|||||||
/*** declarations of public functions ************************************************************/
|
/*** declarations of public functions ************************************************************/
|
||||||
|
|
||||||
void mc_diffviewer_init_events (GError ** error);
|
void mc_diffviewer_init_events (GError ** error);
|
||||||
|
void mc_diffviewer_init_keymaps (GError ** error);
|
||||||
|
|
||||||
/* search.c */
|
/* search.c */
|
||||||
gboolean mc_diffviewer_cmd_search (event_info_t * event_info, gpointer data, GError ** error);
|
gboolean mc_diffviewer_cmd_search (event_info_t * event_info, gpointer data, GError ** error);
|
||||||
|
163
src/diffviewer/keymaps.c
Normal file
163
src/diffviewer/keymaps.c
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
/*
|
||||||
|
Default values for keymapping engine
|
||||||
|
|
||||||
|
Copyright (C) 2009-2014
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Written by:
|
||||||
|
Vitja Makarov, 2005
|
||||||
|
Ilia Maslakov <il.smind@gmail.com>, 2009, 2010
|
||||||
|
Andrew Borodin <aborodin@vmail.ru>, 2010, 2011
|
||||||
|
|
||||||
|
This file is part of the Midnight Commander.
|
||||||
|
|
||||||
|
The Midnight Commander is free software: you can redistribute it
|
||||||
|
and/or modify it under the terms of the GNU General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the License,
|
||||||
|
or (at your option) any later version.
|
||||||
|
|
||||||
|
The Midnight Commander is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include "lib/global.h"
|
||||||
|
#include "lib/widget.h" /* dialog_map, input_map, listbox_map */
|
||||||
|
#include "lib/keymap.h"
|
||||||
|
|
||||||
|
#include "src/keybind-defaults.h"
|
||||||
|
#include "internal.h"
|
||||||
|
|
||||||
|
/*** global variables ****************************************************************************/
|
||||||
|
|
||||||
|
GArray *diff_keymap = NULL;
|
||||||
|
|
||||||
|
/*** file scope macro definitions ****************************************************************/
|
||||||
|
|
||||||
|
/*** file scope type declarations ****************************************************************/
|
||||||
|
|
||||||
|
/* default keymaps in ini (key=value) format */
|
||||||
|
|
||||||
|
/*** file scope variables ************************************************************************/
|
||||||
|
|
||||||
|
/* diff viewer */
|
||||||
|
static const default_keymap_ini_t default_diff_keymap[] = {
|
||||||
|
{"ShowSymbols", "alt-s; s"},
|
||||||
|
{"ShowNumbers", "alt-n; l"},
|
||||||
|
{"SplitFull", "f"},
|
||||||
|
{"SplitEqual", "equal"},
|
||||||
|
{"SplitMore", "gt"},
|
||||||
|
{"SplitLess", "lt"},
|
||||||
|
{"Tab2", "2"},
|
||||||
|
{"Tab3", "3"},
|
||||||
|
{"Tab4", "4"},
|
||||||
|
{"Tab8", "8"},
|
||||||
|
{"Swap", "ctrl-u"},
|
||||||
|
{"Redo", "ctrl-r"},
|
||||||
|
{"HunkNext", "n; enter; space"},
|
||||||
|
{"HunkPrev", "p; backspace"},
|
||||||
|
{"Goto", "g; shift-g"},
|
||||||
|
{"Save", "f2"},
|
||||||
|
{"Edit", "f4"},
|
||||||
|
{"EditOther", "f14"},
|
||||||
|
{"Merge", "f5"},
|
||||||
|
{"MergeOther", "f15"},
|
||||||
|
{"Search", "f7"},
|
||||||
|
{"SearchContinue", "f17"},
|
||||||
|
{"Options", "f9"},
|
||||||
|
{"Top", "ctrl-home"},
|
||||||
|
{"Bottom", "ctrl-end"},
|
||||||
|
{"Down", "down"},
|
||||||
|
{"Up", "up"},
|
||||||
|
{"LeftQuick", "ctrl-left"},
|
||||||
|
{"RightQuick", "ctrl-right"},
|
||||||
|
{"Left", "left"},
|
||||||
|
{"Right", "right"},
|
||||||
|
{"PageDown", "pgdn"},
|
||||||
|
{"PageUp", "pgup"},
|
||||||
|
{"Home", "home"},
|
||||||
|
{"End", "end"},
|
||||||
|
{"Quit", "f10; q; shift-q; esc"},
|
||||||
|
#ifdef HAVE_CHARSET
|
||||||
|
{"SelectCodepage", "alt-e"},
|
||||||
|
#endif
|
||||||
|
{"Shell", "ctrl-o"},
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const mc_keymap_event_init_group_t mc_keymap_event_diffview[] = {
|
||||||
|
{"ShowSymbols", MCEVENT_GROUP_DIFFVIEWER, "show_symbols"},
|
||||||
|
{"ShowNumbers", MCEVENT_GROUP_DIFFVIEWER, "show_numbers"},
|
||||||
|
{"SplitFull", MCEVENT_GROUP_DIFFVIEWER, "split_full"},
|
||||||
|
{"SplitEqual", MCEVENT_GROUP_DIFFVIEWER, "split_equal"},
|
||||||
|
{"SplitMore", MCEVENT_GROUP_DIFFVIEWER, "split_more"},
|
||||||
|
{"SplitLess", MCEVENT_GROUP_DIFFVIEWER, "split_less"},
|
||||||
|
{"Tab2", MCEVENT_GROUP_DIFFVIEWER, "tab_size_2"},
|
||||||
|
{"Tab3", MCEVENT_GROUP_DIFFVIEWER, "tab_size_3"},
|
||||||
|
{"Tab4", MCEVENT_GROUP_DIFFVIEWER, "tab_size_4"},
|
||||||
|
{"Tab8", MCEVENT_GROUP_DIFFVIEWER, "tab_size_8"},
|
||||||
|
{"Swap", MCEVENT_GROUP_DIFFVIEWER, "swap"},
|
||||||
|
{"Redo", MCEVENT_GROUP_DIFFVIEWER, "redo"},
|
||||||
|
{"HunkNext", MCEVENT_GROUP_DIFFVIEWER, "hunk_next"},
|
||||||
|
{"HunkPrev", MCEVENT_GROUP_DIFFVIEWER, "hunk_prev"},
|
||||||
|
{"Goto", MCEVENT_GROUP_DIFFVIEWER, "goto_line"},
|
||||||
|
{"Save", MCEVENT_GROUP_DIFFVIEWER, "save_changes"},
|
||||||
|
{"Edit", MCEVENT_GROUP_DIFFVIEWER, "edit_current"},
|
||||||
|
{"EditOther", MCEVENT_GROUP_DIFFVIEWER, "edit_other"},
|
||||||
|
{"Merge", MCEVENT_GROUP_DIFFVIEWER, "merge_from_left_to_right"},
|
||||||
|
{"MergeOther", MCEVENT_GROUP_DIFFVIEWER, "merge_from_right_to_left"},
|
||||||
|
{"Search", MCEVENT_GROUP_DIFFVIEWER, "search"},
|
||||||
|
{"SearchContinue", MCEVENT_GROUP_DIFFVIEWER, "continue_search"},
|
||||||
|
{"Options", MCEVENT_GROUP_DIFFVIEWER, "options_show_dialog"},
|
||||||
|
{"Top", MCEVENT_GROUP_DIFFVIEWER, "goto_top"},
|
||||||
|
{"Bottom", MCEVENT_GROUP_DIFFVIEWER, "goto_bottom"},
|
||||||
|
{"Down", MCEVENT_GROUP_DIFFVIEWER, "goto_down"},
|
||||||
|
{"Up", MCEVENT_GROUP_DIFFVIEWER, "goto_up"},
|
||||||
|
{"LeftQuick", MCEVENT_GROUP_DIFFVIEWER, "goto_left_quick"},
|
||||||
|
{"RightQuick", MCEVENT_GROUP_DIFFVIEWER, "goto_right_quick"},
|
||||||
|
{"Left", MCEVENT_GROUP_DIFFVIEWER, "goto_left"},
|
||||||
|
{"Right", MCEVENT_GROUP_DIFFVIEWER, "goto_right"},
|
||||||
|
{"PageDown", MCEVENT_GROUP_DIFFVIEWER, "goto_page_down"},
|
||||||
|
{"PageUp", MCEVENT_GROUP_DIFFVIEWER, "goto_page_up"},
|
||||||
|
{"Home", MCEVENT_GROUP_DIFFVIEWER, "goto_start_of_line"},
|
||||||
|
{"Quit", MCEVENT_GROUP_DIFFVIEWER, "quit"},
|
||||||
|
#ifdef HAVE_CHARSET
|
||||||
|
{"SelectCodepage", MCEVENT_GROUP_DIFFVIEWER, "select_encoding_show_dialog"},
|
||||||
|
#endif
|
||||||
|
{"Shell", MCEVENT_GROUP_FILEMANAGER, "view_other"},
|
||||||
|
{NULL, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const mc_keymap_event_init_t mc_keymap_event_defaults[] = {
|
||||||
|
{KEYMAP_SECTION_DIFFVIEWER, mc_keymap_event_diffview},
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*** file scope macro definitions ****************************************************************/
|
||||||
|
|
||||||
|
/*** file scope type declarations ****************************************************************/
|
||||||
|
|
||||||
|
/*** file scope variables ************************************************************************/
|
||||||
|
|
||||||
|
/*** file scope functions ************************************************************************/
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
/*** public functions ****************************************************************************/
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void
|
||||||
|
mc_diffviewer_init_keymaps (GError ** error)
|
||||||
|
{
|
||||||
|
mc_core_keybind_mass_init (KEYMAP_SECTION_DIFFVIEWER, default_diff_keymap, FALSE, error);
|
||||||
|
mc_keymap_mass_bind_event (mc_keymap_event_defaults, error);
|
||||||
|
}
|
@ -1585,6 +1585,9 @@ mc_diffviewer_update (WDiff * dview)
|
|||||||
int width2;
|
int width2;
|
||||||
int last;
|
int last;
|
||||||
|
|
||||||
|
if (dview->view_quit)
|
||||||
|
return;
|
||||||
|
|
||||||
last = dview->a[DIFF_LEFT]->len - 1;
|
last = dview->a[DIFF_LEFT]->len - 1;
|
||||||
|
|
||||||
if (dview->skip_rows > last)
|
if (dview->skip_rows > last)
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#include "lib/charsets.h"
|
#include "lib/charsets.h"
|
||||||
#endif
|
#endif
|
||||||
#include "lib/event.h" /* mc_event_raise() */
|
#include "lib/event.h" /* mc_event_raise() */
|
||||||
|
#include "lib/keymap.h"
|
||||||
|
|
||||||
#include "src/filemanager/cmd.h" /* edit_file_at_line(), view_other_cmd() */
|
#include "src/filemanager/cmd.h" /* edit_file_at_line(), view_other_cmd() */
|
||||||
#include "src/filemanager/panel.h"
|
#include "src/filemanager/panel.h"
|
||||||
@ -149,7 +150,7 @@ dview_init (WDiff * dview, const char *args, const char *file1, const char *file
|
|||||||
|
|
||||||
dview->ndiff = ndiff;
|
dview->ndiff = ndiff;
|
||||||
|
|
||||||
dview->view_quit = 0;
|
dview->view_quit = FALSE;
|
||||||
|
|
||||||
dview->bias = 0;
|
dview->bias = 0;
|
||||||
dview->new_frame = 1;
|
dview->new_frame = 1;
|
||||||
@ -192,13 +193,13 @@ dview_labels (WDiff * dview)
|
|||||||
h = d->owner;
|
h = d->owner;
|
||||||
b = find_buttonbar (h);
|
b = find_buttonbar (h);
|
||||||
|
|
||||||
buttonbar_set_label (b, 1, Q_ ("ButtonBar|Help"), diff_map, d);
|
buttonbar_init_button (b, 1, Q_ ("ButtonBar|Help"), KEYMAP_SECTION_DIFFVIEWER, d);
|
||||||
buttonbar_set_label (b, 2, Q_ ("ButtonBar|Save"), diff_map, d);
|
buttonbar_init_button (b, 2, Q_ ("ButtonBar|Save"), KEYMAP_SECTION_DIFFVIEWER, d);
|
||||||
buttonbar_set_label (b, 4, Q_ ("ButtonBar|Edit"), diff_map, d);
|
buttonbar_init_button (b, 4, Q_ ("ButtonBar|Edit"), KEYMAP_SECTION_DIFFVIEWER, d);
|
||||||
buttonbar_set_label (b, 5, Q_ ("ButtonBar|Merge"), diff_map, d);
|
buttonbar_init_button (b, 5, Q_ ("ButtonBar|Merge"), KEYMAP_SECTION_DIFFVIEWER, d);
|
||||||
buttonbar_set_label (b, 7, Q_ ("ButtonBar|Search"), diff_map, d);
|
buttonbar_init_button (b, 7, Q_ ("ButtonBar|Search"), KEYMAP_SECTION_DIFFVIEWER, d);
|
||||||
buttonbar_set_label (b, 9, Q_ ("ButtonBar|Options"), diff_map, d);
|
buttonbar_init_button (b, 9, Q_ ("ButtonBar|Options"), KEYMAP_SECTION_DIFFVIEWER, d);
|
||||||
buttonbar_set_label (b, 10, Q_ ("ButtonBar|Quit"), diff_map, d);
|
buttonbar_init_button (b, 10, Q_ ("ButtonBar|Quit"), KEYMAP_SECTION_DIFFVIEWER, d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
@ -279,160 +280,26 @@ dview_ok_to_exit (WDiff * dview)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static cb_ret_t
|
|
||||||
dview_execute_cmd (WDiff * dview, unsigned long command)
|
|
||||||
{
|
|
||||||
cb_ret_t res = MSG_NOT_HANDLED;
|
|
||||||
const char *event_name = NULL;
|
|
||||||
const char *event_group_name = MCEVENT_GROUP_DIFFVIEWER;
|
|
||||||
|
|
||||||
switch (command)
|
|
||||||
{
|
|
||||||
case CK_ShowSymbols:
|
|
||||||
event_name = "show_symbols";
|
|
||||||
break;
|
|
||||||
case CK_ShowNumbers:
|
|
||||||
event_name = "show_numbers";
|
|
||||||
break;
|
|
||||||
case CK_SplitFull:
|
|
||||||
event_name = "split_full";
|
|
||||||
break;
|
|
||||||
case CK_SplitEqual:
|
|
||||||
event_name = "split_equal";
|
|
||||||
break;
|
|
||||||
case CK_SplitMore:
|
|
||||||
event_name = "split_more";
|
|
||||||
break;
|
|
||||||
case CK_SplitLess:
|
|
||||||
event_name = "split_less";
|
|
||||||
break;
|
|
||||||
case CK_Tab2:
|
|
||||||
event_name = "tab_size_2";
|
|
||||||
break;
|
|
||||||
case CK_Tab3:
|
|
||||||
event_name = "tab_size_3";
|
|
||||||
break;
|
|
||||||
case CK_Tab4:
|
|
||||||
event_name = "tab_size_4";
|
|
||||||
break;
|
|
||||||
case CK_Tab8:
|
|
||||||
event_name = "tab_size_8";
|
|
||||||
break;
|
|
||||||
case CK_Swap:
|
|
||||||
event_name = "swap";
|
|
||||||
break;
|
|
||||||
case CK_Redo:
|
|
||||||
event_name = "redo";
|
|
||||||
break;
|
|
||||||
case CK_HunkNext:
|
|
||||||
event_name = "hunk_next";
|
|
||||||
break;
|
|
||||||
case CK_HunkPrev:
|
|
||||||
event_name = "hunk_prev";
|
|
||||||
break;
|
|
||||||
case CK_Goto:
|
|
||||||
event_name = "goto_line";
|
|
||||||
break;
|
|
||||||
case CK_Edit:
|
|
||||||
event_name = "edit_current";
|
|
||||||
break;
|
|
||||||
case CK_Merge:
|
|
||||||
event_name = "merge_from_left_to_right";
|
|
||||||
break;
|
|
||||||
case CK_MergeOther:
|
|
||||||
event_name = "merge_from_right_to_left";
|
|
||||||
break;
|
|
||||||
case CK_EditOther:
|
|
||||||
event_name = "edit_other";
|
|
||||||
break;
|
|
||||||
case CK_Search:
|
|
||||||
event_name = "search";
|
|
||||||
break;
|
|
||||||
case CK_SearchContinue:
|
|
||||||
event_name = "continue_search";
|
|
||||||
break;
|
|
||||||
case CK_Top:
|
|
||||||
event_name = "goto_top";
|
|
||||||
break;
|
|
||||||
case CK_Bottom:
|
|
||||||
event_name = "goto_bottom";
|
|
||||||
break;
|
|
||||||
case CK_Up:
|
|
||||||
event_name = "goto_up";
|
|
||||||
break;
|
|
||||||
case CK_Down:
|
|
||||||
event_name = "goto_down";
|
|
||||||
break;
|
|
||||||
case CK_PageDown:
|
|
||||||
event_name = "goto_page_down";
|
|
||||||
break;
|
|
||||||
case CK_PageUp:
|
|
||||||
event_name = "goto_page_up";
|
|
||||||
break;
|
|
||||||
case CK_Left:
|
|
||||||
event_name = "goto_left";
|
|
||||||
break;
|
|
||||||
case CK_Right:
|
|
||||||
event_name = "goto_right";
|
|
||||||
break;
|
|
||||||
case CK_LeftQuick:
|
|
||||||
event_name = "goto_left_quick";
|
|
||||||
break;
|
|
||||||
case CK_RightQuick:
|
|
||||||
event_name = "goto_right_quick";
|
|
||||||
break;
|
|
||||||
case CK_Home:
|
|
||||||
event_name = "goto_start_of_line";
|
|
||||||
break;
|
|
||||||
case CK_Shell:
|
|
||||||
event_group_name = MCEVENT_GROUP_FILEMANAGER;
|
|
||||||
event_name = "view_other";
|
|
||||||
res = MSG_HANDLED;
|
|
||||||
break;
|
|
||||||
case CK_Quit:
|
|
||||||
event_name = "quit";
|
|
||||||
break;
|
|
||||||
case CK_Save:
|
|
||||||
event_name = "save_changes";
|
|
||||||
break;
|
|
||||||
case CK_Options:
|
|
||||||
event_name = "options_show_dialog";
|
|
||||||
break;
|
|
||||||
#ifdef HAVE_CHARSET
|
|
||||||
case CK_SelectCodepage:
|
|
||||||
event_name = "select_encoding_show_dialog";
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case CK_Cancel:
|
|
||||||
/* don't close diffviewer due to SIGINT */
|
|
||||||
break;
|
|
||||||
default:;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event_name != NULL && mc_event_raise (event_group_name, event_name, dview, NULL, NULL))
|
|
||||||
res = MSG_HANDLED;
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static cb_ret_t
|
static cb_ret_t
|
||||||
dview_handle_key (WDiff * dview, int key)
|
dview_handle_key (WDiff * dview, int key, GError ** error)
|
||||||
{
|
{
|
||||||
unsigned long command;
|
cb_ret_t ret_value = MSG_NOT_HANDLED;
|
||||||
|
event_return_t ret;
|
||||||
|
|
||||||
#ifdef HAVE_CHARSET
|
#ifdef HAVE_CHARSET
|
||||||
key = convert_from_input_c (key);
|
key = convert_from_input_c (key);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
command = keybind_lookup_keymap_command (diff_map, key);
|
ret.b = TRUE;
|
||||||
if ((command != CK_IgnoreKey) && (dview_execute_cmd (dview, command) == MSG_HANDLED))
|
|
||||||
return MSG_HANDLED;
|
|
||||||
|
|
||||||
/* Key not used */
|
if (mc_keymap_process_group (KEYMAP_SECTION_DIFFVIEWER, key, (void *) dview, &ret, error))
|
||||||
return MSG_NOT_HANDLED;
|
ret_value = (ret.b) ? MSG_HANDLED : MSG_NOT_HANDLED;
|
||||||
|
|
||||||
|
mc_diffviewer_update (dview);
|
||||||
|
|
||||||
|
return ret_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
@ -441,8 +308,6 @@ static cb_ret_t
|
|||||||
dview_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
|
dview_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
|
||||||
{
|
{
|
||||||
WDiff *dview = (WDiff *) w;
|
WDiff *dview = (WDiff *) w;
|
||||||
WDialog *h = w->owner;
|
|
||||||
cb_ret_t i;
|
|
||||||
|
|
||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
@ -458,20 +323,7 @@ dview_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d
|
|||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
|
|
||||||
case MSG_KEY:
|
case MSG_KEY:
|
||||||
i = dview_handle_key (dview, parm);
|
return dview_handle_key (dview, parm, NULL);
|
||||||
if (dview->view_quit)
|
|
||||||
dlg_stop (h);
|
|
||||||
else
|
|
||||||
mc_diffviewer_update (dview);
|
|
||||||
return i;
|
|
||||||
|
|
||||||
case MSG_ACTION:
|
|
||||||
i = dview_execute_cmd (dview, parm);
|
|
||||||
if (dview->view_quit)
|
|
||||||
dlg_stop (h);
|
|
||||||
else
|
|
||||||
mc_diffviewer_update (dview);
|
|
||||||
return i;
|
|
||||||
|
|
||||||
case MSG_DESTROY:
|
case MSG_DESTROY:
|
||||||
mc_event_raise (MCEVENT_GROUP_DIFFVIEWER, "options_save", dview, NULL, NULL);
|
mc_event_raise (MCEVENT_GROUP_DIFFVIEWER, "options_save", dview, NULL, NULL);
|
||||||
@ -514,21 +366,6 @@ dview_dialog_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm,
|
|||||||
dview_adjust_size (h);
|
dview_adjust_size (h);
|
||||||
return MSG_HANDLED;
|
return MSG_HANDLED;
|
||||||
|
|
||||||
case MSG_ACTION:
|
|
||||||
/* shortcut */
|
|
||||||
if (sender == NULL)
|
|
||||||
return dview_execute_cmd (NULL, parm);
|
|
||||||
/* message from buttonbar */
|
|
||||||
if (sender == WIDGET (find_buttonbar (h)))
|
|
||||||
{
|
|
||||||
if (data != NULL)
|
|
||||||
return send_message (data, NULL, MSG_ACTION, parm, NULL);
|
|
||||||
|
|
||||||
dview = (WDiff *) find_widget_type (h, dview_callback);
|
|
||||||
return dview_execute_cmd (dview, parm);
|
|
||||||
}
|
|
||||||
return MSG_NOT_HANDLED;
|
|
||||||
|
|
||||||
case MSG_VALIDATE:
|
case MSG_VALIDATE:
|
||||||
dview = (WDiff *) find_widget_type (h, dview_callback);
|
dview = (WDiff *) find_widget_type (h, dview_callback);
|
||||||
h->state = DLG_ACTIVE; /* don't stop the dialog before final decision */
|
h->state = DLG_ACTIVE; /* don't stop the dialog before final decision */
|
||||||
@ -696,6 +533,7 @@ void
|
|||||||
mc_diffviewer_init (GError ** error)
|
mc_diffviewer_init (GError ** error)
|
||||||
{
|
{
|
||||||
mc_diffviewer_init_events (error);
|
mc_diffviewer_init_events (error);
|
||||||
|
mc_diffviewer_init_keymaps (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
@ -29,9 +29,11 @@
|
|||||||
|
|
||||||
#include "lib/global.h"
|
#include "lib/global.h"
|
||||||
#include "lib/widget.h" /* dialog_map, input_map, listbox_map */
|
#include "lib/widget.h" /* dialog_map, input_map, listbox_map */
|
||||||
|
#include "lib/keymap.h"
|
||||||
|
|
||||||
#include "keybind-defaults.h"
|
#include "keybind-defaults.h"
|
||||||
|
|
||||||
|
|
||||||
/*** global variables ****************************************************************************/
|
/*** global variables ****************************************************************************/
|
||||||
|
|
||||||
GArray *main_keymap = NULL;
|
GArray *main_keymap = NULL;
|
||||||
@ -48,9 +50,6 @@ GArray *editor_x_keymap = NULL;
|
|||||||
#endif
|
#endif
|
||||||
GArray *viewer_keymap = NULL;
|
GArray *viewer_keymap = NULL;
|
||||||
GArray *viewer_hex_keymap = NULL;
|
GArray *viewer_hex_keymap = NULL;
|
||||||
#ifdef USE_DIFF_VIEW
|
|
||||||
GArray *diff_keymap = NULL;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const global_keymap_t *main_map = NULL;
|
const global_keymap_t *main_map = NULL;
|
||||||
const global_keymap_t *main_x_map = NULL;
|
const global_keymap_t *main_x_map = NULL;
|
||||||
@ -64,25 +63,17 @@ const global_keymap_t *editor_x_map = NULL;
|
|||||||
#endif
|
#endif
|
||||||
const global_keymap_t *viewer_map = NULL;
|
const global_keymap_t *viewer_map = NULL;
|
||||||
const global_keymap_t *viewer_hex_map = NULL;
|
const global_keymap_t *viewer_hex_map = NULL;
|
||||||
#ifdef USE_DIFF_VIEW
|
|
||||||
const global_keymap_t *diff_map = NULL;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*** file scope macro definitions ****************************************************************/
|
/*** file scope macro definitions ****************************************************************/
|
||||||
|
|
||||||
/*** file scope type declarations ****************************************************************/
|
/*** file scope type declarations ****************************************************************/
|
||||||
|
|
||||||
/* default keymaps in ini (key=value) format */
|
/* default keymaps in ini (key=value) format */
|
||||||
typedef struct global_keymap_ini_t
|
|
||||||
{
|
|
||||||
const char *key;
|
|
||||||
const char *value;
|
|
||||||
} global_keymap_ini_t;
|
|
||||||
|
|
||||||
/*** file scope variables ************************************************************************/
|
/*** file scope variables ************************************************************************/
|
||||||
|
|
||||||
/* midnight */
|
/* midnight */
|
||||||
static const global_keymap_ini_t default_main_keymap[] = {
|
static const default_keymap_ini_t default_main_keymap[] = {
|
||||||
{"Help", "f1"},
|
{"Help", "f1"},
|
||||||
{"UserMenu", "f2"},
|
{"UserMenu", "f2"},
|
||||||
{"View", "f3"},
|
{"View", "f3"},
|
||||||
@ -133,7 +124,7 @@ static const global_keymap_ini_t default_main_keymap[] = {
|
|||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const global_keymap_ini_t default_main_x_keymap[] = {
|
static const default_keymap_ini_t default_main_x_keymap[] = {
|
||||||
{"CompareDirs", "d"},
|
{"CompareDirs", "d"},
|
||||||
#ifdef USE_DIFF_VIEW
|
#ifdef USE_DIFF_VIEW
|
||||||
{"CompareFiles", "ctrl-d"},
|
{"CompareFiles", "ctrl-d"},
|
||||||
@ -164,7 +155,7 @@ static const global_keymap_ini_t default_main_x_keymap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* panel */
|
/* panel */
|
||||||
static const global_keymap_ini_t default_panel_keymap[] = {
|
static const default_keymap_ini_t default_panel_keymap[] = {
|
||||||
{"PanelOtherCd", "alt-o"},
|
{"PanelOtherCd", "alt-o"},
|
||||||
{"PanelOtherCdLink", "alt-l"},
|
{"PanelOtherCdLink", "alt-l"},
|
||||||
{"CopySingle", "f15"},
|
{"CopySingle", "f15"},
|
||||||
@ -204,7 +195,7 @@ static const global_keymap_ini_t default_panel_keymap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* dialog */
|
/* dialog */
|
||||||
static const global_keymap_ini_t default_dialog_keymap[] = {
|
static const default_keymap_ini_t default_dialog_keymap[] = {
|
||||||
{"Ok", "enter"},
|
{"Ok", "enter"},
|
||||||
{"Cancel", "f10; esc; ctrl-g"},
|
{"Cancel", "f10; esc; ctrl-g"},
|
||||||
{"Up", "up; left"},
|
{"Up", "up; left"},
|
||||||
@ -223,7 +214,7 @@ static const global_keymap_ini_t default_dialog_keymap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* input line */
|
/* input line */
|
||||||
static const global_keymap_ini_t default_input_keymap[] = {
|
static const default_keymap_ini_t default_input_keymap[] = {
|
||||||
/* Motion */
|
/* Motion */
|
||||||
{"Home", "ctrl-a; alt-lt; home; a1"},
|
{"Home", "ctrl-a; alt-lt; home; a1"},
|
||||||
{"End", "ctrl-e; alt-gt; end; c1"},
|
{"End", "ctrl-e; alt-gt; end; c1"},
|
||||||
@ -258,7 +249,7 @@ static const global_keymap_ini_t default_input_keymap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* listbox */
|
/* listbox */
|
||||||
static const global_keymap_ini_t default_listbox_keymap[] = {
|
static const default_keymap_ini_t default_listbox_keymap[] = {
|
||||||
{"Up", "up; ctrl-p"},
|
{"Up", "up; ctrl-p"},
|
||||||
{"Down", "down; ctrl-n"},
|
{"Down", "down; ctrl-n"},
|
||||||
{"Top", "home; alt-lt; a1"},
|
{"Top", "home; alt-lt; a1"},
|
||||||
@ -271,7 +262,7 @@ static const global_keymap_ini_t default_listbox_keymap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* tree */
|
/* tree */
|
||||||
static const global_keymap_ini_t default_tree_keymap[] = {
|
static const default_keymap_ini_t default_tree_keymap[] = {
|
||||||
{"Help = f1"},
|
{"Help = f1"},
|
||||||
{"Rescan = f2; ctrl-r"},
|
{"Rescan = f2; ctrl-r"},
|
||||||
{"Forget = f3"},
|
{"Forget = f3"},
|
||||||
@ -296,7 +287,7 @@ static const global_keymap_ini_t default_tree_keymap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* help */
|
/* help */
|
||||||
static const global_keymap_ini_t default_help_keymap[] = {
|
static const default_keymap_ini_t default_help_keymap[] = {
|
||||||
{"Help", "f1"},
|
{"Help", "f1"},
|
||||||
{"Index", "f2; c"},
|
{"Index", "f2; c"},
|
||||||
{"Back", "f3; left; l"},
|
{"Back", "f3; left; l"},
|
||||||
@ -318,7 +309,7 @@ static const global_keymap_ini_t default_help_keymap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#ifdef USE_INTERNAL_EDIT
|
#ifdef USE_INTERNAL_EDIT
|
||||||
static const global_keymap_ini_t default_editor_keymap[] = {
|
static const default_keymap_ini_t default_editor_keymap[] = {
|
||||||
{"Enter", "enter"},
|
{"Enter", "enter"},
|
||||||
{"Return", "shift-enter; ctrl-enter; ctrl-shift-enter"}, /* useful for pasting multiline text */
|
{"Return", "shift-enter; ctrl-enter; ctrl-shift-enter"}, /* useful for pasting multiline text */
|
||||||
{"Tab", "tab; shift-tab; ctrl-tab; ctrl-shift-tab"}, /* ditto */
|
{"Tab", "tab; shift-tab; ctrl-tab; ctrl-shift-tab"}, /* ditto */
|
||||||
@ -423,13 +414,13 @@ static const global_keymap_ini_t default_editor_keymap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* emacs keyboard layout emulation */
|
/* emacs keyboard layout emulation */
|
||||||
static const global_keymap_ini_t default_editor_x_keymap[] = {
|
static const default_keymap_ini_t default_editor_x_keymap[] = {
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
#endif /* USE_INTERNAL_EDIT */
|
#endif /* USE_INTERNAL_EDIT */
|
||||||
|
|
||||||
/* viewer */
|
/* viewer */
|
||||||
static const global_keymap_ini_t default_viewer_keymap[] = {
|
static const default_keymap_ini_t default_viewer_keymap[] = {
|
||||||
{"Help", "f1"},
|
{"Help", "f1"},
|
||||||
{"WrapMode", "f2"},
|
{"WrapMode", "f2"},
|
||||||
{"Quit", "f3; f10; q; esc"},
|
{"Quit", "f3; f10; q; esc"},
|
||||||
@ -470,7 +461,7 @@ static const global_keymap_ini_t default_viewer_keymap[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* hex viewer */
|
/* hex viewer */
|
||||||
static const global_keymap_ini_t default_viewer_hex_keymap[] = {
|
static const default_keymap_ini_t default_viewer_hex_keymap[] = {
|
||||||
{"Help", "f1"},
|
{"Help", "f1"},
|
||||||
{"HexEditMode", "f2"},
|
{"HexEditMode", "f2"},
|
||||||
{"Quit", "f3; f10; q; esc"},
|
{"Quit", "f3; f10; q; esc"},
|
||||||
@ -503,53 +494,10 @@ static const global_keymap_ini_t default_viewer_hex_keymap[] = {
|
|||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef USE_DIFF_VIEW
|
static const mc_keymap_event_init_t mc_keymap_event_defaults[] = {
|
||||||
/* diff viewer */
|
|
||||||
static const global_keymap_ini_t default_diff_keymap[] = {
|
|
||||||
{"ShowSymbols", "alt-s; s"},
|
|
||||||
{"ShowNumbers", "alt-n; l"},
|
|
||||||
{"SplitFull", "f"},
|
|
||||||
{"SplitEqual", "equal"},
|
|
||||||
{"SplitMore", "gt"},
|
|
||||||
{"SplitLess", "lt"},
|
|
||||||
{"Tab2", "2"},
|
|
||||||
{"Tab3", "3"},
|
|
||||||
{"Tab4", "4"},
|
|
||||||
{"Tab8", "8"},
|
|
||||||
{"Swap", "ctrl-u"},
|
|
||||||
{"Redo", "ctrl-r"},
|
|
||||||
{"HunkNext", "n; enter; space"},
|
|
||||||
{"HunkPrev", "p; backspace"},
|
|
||||||
{"Goto", "g; shift-g"},
|
|
||||||
{"Save", "f2"},
|
|
||||||
{"Edit", "f4"},
|
|
||||||
{"EditOther", "f14"},
|
|
||||||
{"Merge", "f5"},
|
|
||||||
{"MergeOther", "f15"},
|
|
||||||
{"Search", "f7"},
|
|
||||||
{"SearchContinue", "f17"},
|
|
||||||
{"Options", "f9"},
|
|
||||||
{"Top", "ctrl-home"},
|
|
||||||
{"Bottom", "ctrl-end"},
|
|
||||||
{"Down", "down"},
|
|
||||||
{"Up", "up"},
|
|
||||||
{"LeftQuick", "ctrl-left"},
|
|
||||||
{"RightQuick", "ctrl-right"},
|
|
||||||
{"Left", "left"},
|
|
||||||
{"Right", "right"},
|
|
||||||
{"PageDown", "pgdn"},
|
|
||||||
{"PageUp", "pgup"},
|
|
||||||
{"Home", "home"},
|
|
||||||
{"End", "end"},
|
|
||||||
{"Help", "f1"},
|
|
||||||
{"Quit", "f10; q; shift-q; esc"},
|
|
||||||
#ifdef HAVE_CHARSET
|
|
||||||
{"SelectCodepage", "alt-e"},
|
|
||||||
#endif
|
|
||||||
{"Shell", "ctrl-o"},
|
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
/*** file scope macro definitions ****************************************************************/
|
/*** file scope macro definitions ****************************************************************/
|
||||||
|
|
||||||
@ -562,7 +510,7 @@ static const global_keymap_ini_t default_diff_keymap[] = {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
create_default_keymap_section (mc_config_t * keymap, const char *section,
|
create_default_keymap_section (mc_config_t * keymap, const char *section,
|
||||||
const global_keymap_ini_t * k)
|
const default_keymap_ini_t * k)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
@ -574,8 +522,20 @@ create_default_keymap_section (mc_config_t * keymap, const char *section,
|
|||||||
/*** public functions ****************************************************************************/
|
/*** public functions ****************************************************************************/
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void
|
||||||
|
mc_core_keybind_mass_init (const char *keymap_group, const default_keymap_ini_t * k,
|
||||||
|
gboolean isDeleteOld, GError ** error)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; k[i].key != NULL; i++)
|
||||||
|
mc_keymap_bind_keycode (keymap_group, k[i].key, k[i].value, isDeleteOld, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
mc_config_t *
|
mc_config_t *
|
||||||
create_default_keymap (void)
|
create_default_keymap (GError ** error)
|
||||||
{
|
{
|
||||||
mc_config_t *keymap;
|
mc_config_t *keymap;
|
||||||
|
|
||||||
@ -595,9 +555,10 @@ create_default_keymap (void)
|
|||||||
#endif
|
#endif
|
||||||
create_default_keymap_section (keymap, KEYMAP_SECTION_VIEWER, default_viewer_keymap);
|
create_default_keymap_section (keymap, KEYMAP_SECTION_VIEWER, default_viewer_keymap);
|
||||||
create_default_keymap_section (keymap, KEYMAP_SECTION_VIEWER_HEX, default_viewer_hex_keymap);
|
create_default_keymap_section (keymap, KEYMAP_SECTION_VIEWER_HEX, default_viewer_hex_keymap);
|
||||||
#ifdef USE_DIFF_VIEW
|
|
||||||
create_default_keymap_section (keymap, KEYMAP_SECTION_DIFFVIEWER, default_diff_keymap);
|
mc_keymap_mass_bind_event (mc_keymap_event_defaults, error);
|
||||||
#endif
|
|
||||||
|
|
||||||
return keymap;
|
return keymap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
@ -11,6 +11,12 @@
|
|||||||
|
|
||||||
/*** structures declarations (and typedefs of structures)*****************************************/
|
/*** structures declarations (and typedefs of structures)*****************************************/
|
||||||
|
|
||||||
|
typedef struct global_keymap_ini_t
|
||||||
|
{
|
||||||
|
const char *key;
|
||||||
|
const char *value;
|
||||||
|
} default_keymap_ini_t;
|
||||||
|
|
||||||
/*** global variables defined in .c file *********************************************************/
|
/*** global variables defined in .c file *********************************************************/
|
||||||
|
|
||||||
extern GArray *main_keymap;
|
extern GArray *main_keymap;
|
||||||
@ -27,9 +33,6 @@ extern GArray *editor_x_keymap;
|
|||||||
#endif
|
#endif
|
||||||
extern GArray *viewer_keymap;
|
extern GArray *viewer_keymap;
|
||||||
extern GArray *viewer_hex_keymap;
|
extern GArray *viewer_hex_keymap;
|
||||||
#ifdef USE_DIFF_VIEW
|
|
||||||
extern GArray *diff_keymap;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
extern const global_keymap_t *main_map;
|
extern const global_keymap_t *main_map;
|
||||||
@ -44,13 +47,12 @@ extern const global_keymap_t *editor_x_map;
|
|||||||
#endif
|
#endif
|
||||||
extern const global_keymap_t *viewer_map;
|
extern const global_keymap_t *viewer_map;
|
||||||
extern const global_keymap_t *viewer_hex_map;
|
extern const global_keymap_t *viewer_hex_map;
|
||||||
#ifdef USE_DIFF_VIEW
|
|
||||||
extern const global_keymap_t *diff_map;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*** declarations of public functions ************************************************************/
|
/*** declarations of public functions ************************************************************/
|
||||||
|
|
||||||
mc_config_t *create_default_keymap (void);
|
mc_config_t *create_default_keymap (GError ** error);
|
||||||
|
void mc_core_keybind_mass_init (const char *keymap_group, const default_keymap_ini_t * k,
|
||||||
|
gboolean isDeleteOld, GError ** error);
|
||||||
|
|
||||||
/*** inline functions ****************************************************************************/
|
/*** inline functions ****************************************************************************/
|
||||||
|
|
||||||
|
10
src/main.c
10
src/main.c
@ -44,6 +44,7 @@
|
|||||||
#include "lib/global.h"
|
#include "lib/global.h"
|
||||||
|
|
||||||
#include "lib/event.h"
|
#include "lib/event.h"
|
||||||
|
#include "lib/keymap.h"
|
||||||
#include "lib/tty/tty.h"
|
#include "lib/tty/tty.h"
|
||||||
#include "lib/tty/key.h" /* For init_key() */
|
#include "lib/tty/key.h" /* For init_key() */
|
||||||
#include "lib/tty/mouse.h" /* init_mouse() */
|
#include "lib/tty/mouse.h" /* init_mouse() */
|
||||||
@ -291,6 +292,12 @@ main (int argc, char *argv[])
|
|||||||
goto startup_exit_falure;
|
goto startup_exit_falure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!mc_keymap_init (&mcerror))
|
||||||
|
{
|
||||||
|
mc_event_deinit (NULL);
|
||||||
|
goto startup_exit_falure;
|
||||||
|
}
|
||||||
|
|
||||||
vfs_init ();
|
vfs_init ();
|
||||||
vfs_plugins_init ();
|
vfs_plugins_init ();
|
||||||
|
|
||||||
@ -366,7 +373,7 @@ main (int argc, char *argv[])
|
|||||||
/* Removing this from the X code let's us type C-c */
|
/* Removing this from the X code let's us type C-c */
|
||||||
load_key_defs ();
|
load_key_defs ();
|
||||||
|
|
||||||
load_keymap_defs (!mc_args__nokeymap);
|
load_keymap_defs (!mc_args__nokeymap, &mcerror);
|
||||||
|
|
||||||
macros_list = g_array_new (TRUE, FALSE, sizeof (macros_t));
|
macros_list = g_array_new (TRUE, FALSE, sizeof (macros_t));
|
||||||
|
|
||||||
@ -434,6 +441,7 @@ main (int argc, char *argv[])
|
|||||||
tty_shutdown ();
|
tty_shutdown ();
|
||||||
|
|
||||||
done_setup ();
|
done_setup ();
|
||||||
|
mc_keymap_deinit (&mcerror);
|
||||||
|
|
||||||
if (mc_global.tty.console_flag != '\0' && (quit & SUBSHELL_EXIT) == 0)
|
if (mc_global.tty.console_flag != '\0' && (quit & SUBSHELL_EXIT) == 0)
|
||||||
handle_console (CONSOLE_RESTORE);
|
handle_console (CONSOLE_RESTORE);
|
||||||
|
41
src/setup.c
41
src/setup.c
@ -33,6 +33,7 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#include "lib/global.h"
|
#include "lib/global.h"
|
||||||
|
#include "lib/keymap.h"
|
||||||
|
|
||||||
#include "lib/tty/tty.h"
|
#include "lib/tty/tty.h"
|
||||||
#include "lib/tty/key.h"
|
#include "lib/tty/key.h"
|
||||||
@ -721,7 +722,7 @@ load_setup_get_keymap_profile_config (gboolean load_from_file)
|
|||||||
char *fname, *fname2;
|
char *fname, *fname2;
|
||||||
|
|
||||||
/* 0) Create default keymap */
|
/* 0) Create default keymap */
|
||||||
keymap_config = create_default_keymap ();
|
keymap_config = create_default_keymap (NULL);
|
||||||
if (!load_from_file)
|
if (!load_from_file)
|
||||||
return keymap_config;
|
return keymap_config;
|
||||||
|
|
||||||
@ -1234,7 +1235,7 @@ load_anon_passwd (void)
|
|||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
void
|
void
|
||||||
load_keymap_defs (gboolean load_from_file)
|
load_keymap_defs (gboolean load_from_file, GError ** error)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Load keymap from GLOBAL_KEYMAP_FILE before ${XDG_CONFIG_HOME}/mc/mc.keymap, so that the user
|
* Load keymap from GLOBAL_KEYMAP_FILE before ${XDG_CONFIG_HOME}/mc/mc.keymap, so that the user
|
||||||
@ -1246,6 +1247,30 @@ load_keymap_defs (gboolean load_from_file)
|
|||||||
|
|
||||||
if (mc_global_keymap != NULL)
|
if (mc_global_keymap != NULL)
|
||||||
{
|
{
|
||||||
|
char **keymap_sections, **section_name;
|
||||||
|
|
||||||
|
keymap_sections = mc_config_get_groups (mc_global_keymap, NULL);
|
||||||
|
|
||||||
|
for (section_name = keymap_sections; *section_name != NULL; section_name++)
|
||||||
|
{
|
||||||
|
char **keymap_names, **param_name;
|
||||||
|
|
||||||
|
keymap_names = mc_config_get_keys (mc_global_keymap, *section_name, NULL);
|
||||||
|
for (param_name = keymap_names; *param_name != NULL; param_name++)
|
||||||
|
{
|
||||||
|
char *value;
|
||||||
|
|
||||||
|
value =
|
||||||
|
mc_config_get_string_raw (mc_global_keymap, *section_name, *param_name, NULL);
|
||||||
|
|
||||||
|
if (value != NULL)
|
||||||
|
mc_keymap_bind_keycode (*section_name, *param_name, value, TRUE, error);
|
||||||
|
}
|
||||||
|
g_strfreev (keymap_names);
|
||||||
|
}
|
||||||
|
g_strfreev (keymap_sections);
|
||||||
|
|
||||||
|
|
||||||
main_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
|
main_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
|
||||||
load_keymap_from_section (KEYMAP_SECTION_MAIN, main_keymap, mc_global_keymap);
|
load_keymap_from_section (KEYMAP_SECTION_MAIN, main_keymap, mc_global_keymap);
|
||||||
main_x_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
|
main_x_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
|
||||||
@ -1281,11 +1306,6 @@ load_keymap_defs (gboolean load_from_file)
|
|||||||
viewer_hex_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
|
viewer_hex_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
|
||||||
load_keymap_from_section (KEYMAP_SECTION_VIEWER_HEX, viewer_hex_keymap, mc_global_keymap);
|
load_keymap_from_section (KEYMAP_SECTION_VIEWER_HEX, viewer_hex_keymap, mc_global_keymap);
|
||||||
|
|
||||||
#ifdef USE_DIFF_VIEW
|
|
||||||
diff_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t));
|
|
||||||
load_keymap_from_section (KEYMAP_SECTION_DIFFVIEWER, diff_keymap, mc_global_keymap);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mc_config_deinit (mc_global_keymap);
|
mc_config_deinit (mc_global_keymap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1303,9 +1323,6 @@ load_keymap_defs (gboolean load_from_file)
|
|||||||
#endif
|
#endif
|
||||||
viewer_map = (global_keymap_t *) viewer_keymap->data;
|
viewer_map = (global_keymap_t *) viewer_keymap->data;
|
||||||
viewer_hex_map = (global_keymap_t *) viewer_hex_keymap->data;
|
viewer_hex_map = (global_keymap_t *) viewer_hex_keymap->data;
|
||||||
#ifdef USE_DIFF_VIEW
|
|
||||||
diff_map = (global_keymap_t *) diff_keymap->data;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
@ -1339,10 +1356,6 @@ free_keymap_defs (void)
|
|||||||
g_array_free (viewer_keymap, TRUE);
|
g_array_free (viewer_keymap, TRUE);
|
||||||
if (viewer_hex_keymap != NULL)
|
if (viewer_hex_keymap != NULL)
|
||||||
g_array_free (viewer_hex_keymap, TRUE);
|
g_array_free (viewer_hex_keymap, TRUE);
|
||||||
#ifdef USE_DIFF_VIEW
|
|
||||||
if (diff_keymap != NULL)
|
|
||||||
g_array_free (diff_keymap, TRUE);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
@ -150,7 +150,7 @@ void load_key_defs (void);
|
|||||||
char *load_anon_passwd (void);
|
char *load_anon_passwd (void);
|
||||||
#endif /* ENABLE_VFS_FTP */
|
#endif /* ENABLE_VFS_FTP */
|
||||||
|
|
||||||
void load_keymap_defs (gboolean load_from_file);
|
void load_keymap_defs (gboolean load_from_file, GError ** error);
|
||||||
void free_keymap_defs (void);
|
void free_keymap_defs (void);
|
||||||
|
|
||||||
void panel_load_setup (WPanel * panel, const char *section);
|
void panel_load_setup (WPanel * panel, const char *section);
|
||||||
|
Loading…
Reference in New Issue
Block a user