From bc9633f87f48cc54b407cabfc1b6748f69c187c0 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sat, 24 Dec 2016 10:35:22 -0500 Subject: [PATCH] Cfg: Add 'Gui - Shortcuts' --- .../src/gplx/gfui/Gfui_bnd_parser_tst.java | 36 ++--- .../apps/cfgs/enums/Xoitm_gui_binding.java | 46 +++++++ .../addons/apps/cfgs/enums/Xoitm_gui_tid.java | 5 +- .../specials/edits/objs/Xoedit_itm_html.java | 13 +- .../edits/services/Xocfg_edit_svc.java | 8 ++ .../src/gplx/xowa/guis/bnds/Xog_bnd_box_.java | 8 ++ .../src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java | 128 +++++++++++++++++- 7 files changed, 223 insertions(+), 21 deletions(-) create mode 100644 400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_binding.java diff --git a/400_xowa/src/gplx/gfui/Gfui_bnd_parser_tst.java b/400_xowa/src/gplx/gfui/Gfui_bnd_parser_tst.java index c89411cac..f928d063f 100644 --- a/400_xowa/src/gplx/gfui/Gfui_bnd_parser_tst.java +++ b/400_xowa/src/gplx/gfui/Gfui_bnd_parser_tst.java @@ -20,30 +20,34 @@ import org.junit.*; public class Gfui_bnd_parser_tst { @Before public void init() {fxt.Clear();} private Gfui_bnd_parser_fxt fxt = new Gfui_bnd_parser_fxt(); @Test public void Norm_one() { - fxt.Test_x_to_norm("mod.c" , "Ctrl"); - fxt.Test_x_to_norm("key.ctrl" , "Ctrl"); - fxt.Test_x_to_norm("key.a" , "A"); - fxt.Test_x_to_norm("key.left" , "Left"); + fxt.Test__to_norm("mod.c" , "Ctrl"); + fxt.Test__to_norm("key.ctrl" , "Ctrl"); + fxt.Test__to_norm("key.a" , "A"); + fxt.Test__to_norm("key.left" , "Left"); } @Test public void Norm_add() { - fxt.Test_x_to_norm("mod.c+key.a" , "Ctrl + A"); - fxt.Test_x_to_norm("mod.ca+key.a" , "Ctrl + Alt + A"); - fxt.Test_x_to_norm("mod.cas+key.a" , "Ctrl + Alt + Shift + A"); + fxt.Test__to_norm("mod.c+key.a" , "Ctrl + A"); + fxt.Test__to_norm("mod.ca+key.a" , "Ctrl + Alt + A"); + fxt.Test__to_norm("mod.cas+key.a" , "Ctrl + Alt + Shift + A"); } @Test public void Norm_chord() { - fxt.Test_x_to_norm("key.a,key.b" , "A, B"); + fxt.Test__to_norm("key.a,key.b" , "A, B"); } @Test public void Norm_add_and_chord() { - fxt.Test_x_to_norm("mod.c+key.a,mod.a+key.b" , "Ctrl + A, Alt + B"); + fxt.Test__to_norm("mod.c+key.a,mod.a+key.b" , "Ctrl + A, Alt + B"); } @Test public void Gfui_add() { - fxt.Test_x_to_gfui("Ctrl + A" , "mod.c+key.a"); - fxt.Test_x_to_gfui("Ctrl + Shift + A" , "mod.cs+key.a"); - fxt.Test_x_to_gfui("Ctrl + Alt + Shift + A" , "mod.cas+key.a"); + fxt.Test__to_gfui("Ctrl + A" , "mod.c+key.a"); + fxt.Test__to_gfui("Ctrl + Shift + A" , "mod.cs+key.a"); + fxt.Test__to_gfui("Ctrl + Alt + Shift + A" , "mod.cas+key.a"); } @Test public void Keypad_enter() { - fxt.Test_x_to_norm("key.keypad_enter" , "Keypad Enter"); - fxt.Test_x_to_norm("mod.c+key.keypad_enter" , "Ctrl + Keypad Enter"); + fxt.Test__to_norm("key.keypad_enter" , "Keypad Enter"); + fxt.Test__to_norm("mod.c+key.keypad_enter" , "Ctrl + Keypad Enter"); + } + @Test public void None() { + fxt.Test__to_gfui("None" , "key.none"); + fxt.Test__to_norm("key.none" , "None"); } } class Gfui_bnd_parser_fxt { @@ -51,10 +55,10 @@ class Gfui_bnd_parser_fxt { public void Clear() { parser = Gfui_bnd_parser.new_en_(); } - public void Test_x_to_norm(String key, String expd) { + public void Test__to_norm(String key, String expd) { Tfds.Eq(expd, parser.Xto_norm(key)); } - public void Test_x_to_gfui(String key, String expd) { + public void Test__to_gfui(String key, String expd) { Tfds.Eq(expd, parser.Xto_gfui(key)); } } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_binding.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_binding.java new file mode 100644 index 000000000..1fb529ada --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_binding.java @@ -0,0 +1,46 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program 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 Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.addons.apps.cfgs.enums; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; +import gplx.gfui.*; import gplx.xowa.guis.bnds.*; +public class Xoitm_gui_binding { + public static String[] To_gui(String val) { + Gfui_bnd_parser parser = Gfui_bnd_parser.new_en_(); + String[] rv = new String[2]; + int pipe_pos = String_.FindFwd(val, "|"); + if (pipe_pos == -1) throw Err_.new_wo_type("cfg.binding:unknown gui binding; val=" + val); + rv[0] = Xog_bnd_box_.To_gui_str(String_.Mid(val, 0, pipe_pos)); + rv[1] = parser.Xto_norm(String_.Mid(val, pipe_pos + 1, String_.Len(val))); + return rv; + } + public static String To_db_str(String val) { + Gfui_bnd_parser parser = Gfui_bnd_parser.new_en_(); + String[] rv = new String[2]; + int pipe_pos = String_.FindFwd(val, "|"); + if (pipe_pos == -1) throw Err_.new_wo_type("cfg.binding:unknown gui binding; val=" + val); + rv[0] = Xog_bnd_box_.To_key_str(String_.Mid(val, 0, pipe_pos)); + rv[1] = parser.Xto_gfui(String_.Mid(val, pipe_pos + 1, String_.Len(val))); + return rv[0] + "|" + rv[1]; + } + public static String[] To_ary(String val) { + String[] rv = new String[2]; + int pipe_pos = String_.FindFwd(val, "|"); + rv[0] = String_.Mid(val, 0, pipe_pos); + rv[1] = String_.Mid(val, pipe_pos + 1, String_.Len(val)); + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_tid.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_tid.java index 8014eae0c..415a3324c 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_tid.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_tid.java @@ -34,7 +34,7 @@ public class Xoitm_gui_tid { , Tid__io_file = 6 , Tid__io_dir = 7 , Tid__btn = 8 - , Tid__label = 9 + , Tid__gui_binding = 9 ; private static final Hash_adp to_uid_hash = Hash_adp_.New(); private static final Xoitm_gui_tid[] to_key_ary = new Xoitm_gui_tid[10]; @@ -48,7 +48,7 @@ public class Xoitm_gui_tid { , Itm__io_file = New(Tid__io_file , "io.file") , Itm__io_dir = New(Tid__io_dir , "io.dir") , Itm__btn = New(Tid__btn , "btn") - , Itm__lbl = New(Tid__label , "label") + , Itm__gui_binding = New(Tid__gui_binding , "gui.binding") ; private static Xoitm_gui_tid New(int uid, String key) { Xoitm_gui_tid rv = new Xoitm_gui_tid(uid, key); @@ -68,6 +68,7 @@ public class Xoitm_gui_tid { else if (String_.Eq(db_type, "int")) return Itm__int.key; else if (String_.Eq(db_type, "memo")) return Itm__memo.key; else if (String_.Eq(db_type, "io.cmd")) return Itm__io_cmd.key; + else if (String_.Eq(db_type, "gui.binding")) return Itm__gui_binding.key; else if (String_.Has_at_bgn(db_type, "list:")) return Itm__list.key; else if (String_.Eq(db_type, "btn")) return Itm__btn.key; else return Itm__str.key; diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java index 9a48fa9c2..fc8324eb8 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java @@ -61,13 +61,22 @@ public class Xoedit_itm_html { case Xoitm_gui_tid.Tid__io_cmd: String[] lines = Xocfg_mgr.Parse_io_cmd(val); bfr.Add_str_u8_fmt - ( "\n" + ( "\n" + "
\n" , gui_type_key, gui_args, key, lines[0]); bfr.Add_str_u8_fmt - ( "\n" + ( "\n" , gui_type_key, gui_args, key, lines[1]); break; + case Xoitm_gui_tid.Tid__gui_binding: + String[] flds = Xoitm_gui_binding.To_gui(val); + bfr.Add_str_u8_fmt + ( "\n" + , gui_type_key, gui_args, key, flds[0]); + bfr.Add_str_u8_fmt + ( "\n" + , gui_type_key, gui_args, key, flds[1]); + break; case Xoitm_gui_tid.Tid__btn: bfr.Add_str_u8_fmt("", gui_type_key, gui_args, key, name); break; diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_svc.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_svc.java index 4ffc3cac3..2e5568d9a 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_svc.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_svc.java @@ -31,14 +31,22 @@ public class Xocfg_edit_svc { String ctx = args.Get_as_str("ctx"); String key = args.Get_as_str("key"); String val = args.Get_as_str("val"); + String gui = args.Get_as_str("gui"); + if (String_.Has_at_bgn(gui, "gui.binding")) { + val = gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_binding.To_db_str(val); + } app.Cfg().Set_str(ctx, key, val); app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.cfg_edit.upsert__recv", Gfobj_nde.New().Add_str("key", key)); } public void Revert(Json_nde args) { String ctx = args.Get_as_str("ctx"); String key = args.Get_as_str("key"); + String gui = args.Get_as_str("gui"); app.Cfg().Del(ctx, key); String val = app.Cfg().Get_str(ctx, key); + if (String_.Has_at_bgn(gui, "gui.binding")) { + val = String_.Concat_with_str("|", gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_binding.To_gui(val)); + } app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.cfg_edit.revert__recv", Gfobj_nde.New().Add_str("key", key).Add_str("val", val)); } public void Load(Json_nde args) { diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java index 8ccf6e686..16f8b9235 100644 --- a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java @@ -36,6 +36,14 @@ public class Xog_bnd_box_ { return ary; } private static Xog_bnd_box[] ary; private static void ary_init(Xog_bnd_box[] ary, int tid, String key) {ary[tid] = new Xog_bnd_box(tid, key);} + public static String To_gui_str(String key) { + int tid = Xto_sys_int(key); + return Xto_gui_str(tid); + } + public static String To_key_str(String gui) { + int tid = Xby_gui_str(gui); + return Xto_sys_str(tid); + } public static int[] Xto_sys_int_ary(String s) { String[] ary = String_.Split(s, "|"); int len = ary.length; diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java index 15dd35fdd..a539b4abd 100644 --- a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java @@ -18,7 +18,8 @@ along with this program. If not, see . package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.gfui.*; import gplx.gfui.ipts.*; import gplx.gfui.controls.elems.*; import gplx.xowa.guis.views.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.guis.menus.dom.*; -public class Xog_bnd_mgr { +public class Xog_bnd_mgr implements Gfo_invk { + private Xoae_app app; private Xog_win_itm win; private Xog_cmd_mgr_invk invk_mgr; private Xog_bnd_box[] boxs = Xog_bnd_box_.Ary(); private List_adp startup_itms = List_adp_.New(); @@ -29,10 +30,126 @@ public class Xog_bnd_mgr { public Xog_bnd_itm Get_at(int i) {return (Xog_bnd_itm)regy.Get_at(i);} public Xog_bnd_itm Get_or_null(String v) {return (Xog_bnd_itm)regy.Get_by(v);} public void Init_by_kit(Xoae_app app) { + this.app = app; Add_system_bnds(); Add_custom_bnds(); // NOTE: should go after Add_system_bnds in case user overrides any; Bind_all(); app.Cfg_regy().App().Gui_mgr().Bnd_mgr().Init(); + + app.Cfg().Bind_many_app(this + , "xowa.gui.shortcuts.xowa.app.exit-1" + , "xowa.gui.shortcuts.xowa.nav.go_bwd-1" + , "xowa.gui.shortcuts.xowa.nav.go_fwd-1" + , "xowa.gui.shortcuts.xowa.nav.cfg.main-1" + , "xowa.gui.shortcuts.xowa.nav.cfg.menus-1" + , "xowa.gui.shortcuts.xowa.nav.wiki.main_page-1" + , "xowa.gui.shortcuts.xowa.nav.wiki.sandbox-1" + , "xowa.gui.shortcuts.xowa.nav.wiki.sandbox-2" + , "xowa.gui.shortcuts.xowa.nav.wiki.random-1" + , "xowa.gui.shortcuts.xowa.nav.help.help-1" + , "xowa.gui.shortcuts.xowa.nav.help.about-1" + , "xowa.gui.shortcuts.xowa.nav.help.change_log-1" + , "xowa.gui.shortcuts.xowa.nav.help.diagnostics-1" + , "xowa.gui.shortcuts.xowa.nav.xowa_main-1" + , "xowa.gui.shortcuts.xowa.nav.xowa_blog-1" + , "xowa.gui.shortcuts.xowa.nav.setup.download_central-1" + , "xowa.gui.shortcuts.xowa.nav.setup.import_from_list-1" + , "xowa.gui.shortcuts.xowa.nav.setup.import_from_script-1" + , "xowa.gui.shortcuts.xowa.nav.setup.maintenance-1" + , "xowa.gui.shortcuts.xowa.nav.setup.download-1" + , "xowa.gui.shortcuts.xowa.nav.system_data.log_session-1" + , "xowa.gui.shortcuts.xowa.nav.system_data.cfg_app-1" + , "xowa.gui.shortcuts.xowa.nav.system_data.cfg_lang-1" + , "xowa.gui.shortcuts.xowa.nav.system_data.cfg_user-1" + , "xowa.gui.shortcuts.xowa.nav.system_data.cfg_custom-1" + , "xowa.gui.shortcuts.xowa.nav.system_data.usr_history-1" + , "xowa.gui.shortcuts.xowa.gui.font.increase-1" + , "xowa.gui.shortcuts.xowa.gui.font.decrease-1" + , "xowa.gui.shortcuts.xowa.gui.font.reset-1" + , "xowa.gui.shortcuts.xowa.gui.page.view.mode_read-1" + , "xowa.gui.shortcuts.xowa.gui.page.view.mode_edit-1" + , "xowa.gui.shortcuts.xowa.gui.page.view.mode_html-1" + , "xowa.gui.shortcuts.xowa.gui.page.view.mode_html-2" + , "xowa.gui.shortcuts.xowa.gui.page.view.refresh-1" + , "xowa.gui.shortcuts.xowa.gui.page.view.reload-1" + , "xowa.gui.shortcuts.xowa.gui.page.view.save_as-1" + , "xowa.gui.shortcuts.xowa.gui.page.view.print-1" + , "xowa.gui.shortcuts.xowa.gui.page.edit.save-1" + , "xowa.gui.shortcuts.xowa.gui.page.edit.save_draft-1" + , "xowa.gui.shortcuts.xowa.gui.page.edit.focus_edit_box-1" + , "xowa.gui.shortcuts.xowa.gui.page.edit.preview-1" + , "xowa.gui.shortcuts.xowa.gui.page.edit.dbg_tmpl-1" + , "xowa.gui.shortcuts.xowa.gui.page.edit.dbg_tmpl-2" + , "xowa.gui.shortcuts.xowa.gui.page.edit.dbg_html-1" + , "xowa.gui.shortcuts.xowa.gui.page.edit.exec-1" + , "xowa.gui.shortcuts.xowa.gui.page.selection.select_all-1" + , "xowa.gui.shortcuts.xowa.gui.page.selection.copy-1" + , "xowa.gui.shortcuts.xowa.gui.page.selection.save_file_as-1" + , "xowa.gui.shortcuts.xowa.gui.browser.url.focus-1" + , "xowa.gui.shortcuts.xowa.gui.browser.url.focus-2" + , "xowa.gui.shortcuts.xowa.gui.browser.url.exec-1" + , "xowa.gui.shortcuts.xowa.gui.browser.url.exec-2" + , "xowa.gui.shortcuts.xowa.gui.browser.url.exec_by_paste-1" + , "xowa.gui.shortcuts.xowa.gui.browser.url.exec_by_paste-2" + , "xowa.gui.shortcuts.xowa.gui.browser.url.exec_by_paste-3" + , "xowa.gui.shortcuts.xowa.gui.browser.url.exec_new_tab_by_paste-1" + , "xowa.gui.shortcuts.xowa.gui.browser.url.exec_new_tab_by_paste-2" + , "xowa.gui.shortcuts.xowa.gui.browser.url.restore-1" + , "xowa.gui.shortcuts.xowa.gui.browser.search.focus-1" + , "xowa.gui.shortcuts.xowa.gui.browser.search.exec-1" + , "xowa.gui.shortcuts.xowa.gui.browser.search.exec-2" + , "xowa.gui.shortcuts.xowa.gui.browser.html.focus-1" + , "xowa.gui.shortcuts.xowa.gui.browser.html.focus-2" + , "xowa.gui.shortcuts.xowa.gui.browser.html.focus-3" + , "xowa.gui.shortcuts.xowa.gui.browser.html.focus-4" + , "xowa.gui.shortcuts.xowa.gui.browser.html.selection_focus_toggle-1" + , "xowa.gui.shortcuts.xowa.gui.browser.find.show-1" + , "xowa.gui.shortcuts.xowa.gui.browser.find.show_by_paste-1" + , "xowa.gui.shortcuts.xowa.gui.browser.find.hide-1" + , "xowa.gui.shortcuts.xowa.gui.browser.find.exec-1" + , "xowa.gui.shortcuts.xowa.gui.browser.find.exec-2" + , "xowa.gui.shortcuts.xowa.gui.browser.find.find_fwd-1" + , "xowa.gui.shortcuts.xowa.gui.browser.find.find_bwd-1" + , "xowa.gui.shortcuts.xowa.gui.browser.find.case_toggle-1" + , "xowa.gui.shortcuts.xowa.gui.browser.find.wrap_toggle-1" + , "xowa.gui.shortcuts.xowa.gui.browser.prog.focus-1" + , "xowa.gui.shortcuts.xowa.gui.browser.prog_log.show-1" + , "xowa.gui.shortcuts.xowa.gui.browser.prog_log.show-2" + , "xowa.gui.shortcuts.xowa.gui.browser.info.focus-1" + , "xowa.gui.shortcuts.xowa.gui.browser.info.clear-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.new_dflt__at_dflt__focus_y-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.new_link__at_dflt__focus_n-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.new_link__at_dflt__focus_y-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_bwd-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_bwd-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_fwd-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_fwd-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_by_idx_1-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_by_idx_2-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_by_idx_3-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_by_idx_4-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_by_idx_5-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_by_idx_6-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_by_idx_7-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_by_idx_8-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.select_by_idx_9-2" + , "xowa.gui.shortcuts.xowa.gui.tabs.move_bwd-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.move_fwd-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.close_cur-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.close_others-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.close_to_bgn-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.close_to_end-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.close_undo-1" + , "xowa.gui.shortcuts.xowa.gui.tabs.pin_toggle-1" + , "xowa.gui.shortcuts.xowa.html.tidy.toggle-1" + , "xowa.gui.shortcuts.xowa.net.enable_n_-1" + , "xowa.gui.shortcuts.xowa.net.enable_y_-1" + , "xowa.gui.shortcuts.xowa.net.enable_x_-1" + , "xowa.gui.shortcuts.xowa.usr.bookmarks.add-1" + , "xowa.gui.shortcuts.xowa.usr.bookmarks.show-1" + , "xowa.gui.shortcuts.xowa.usr.history.goto_recent-1" + , "xowa.gui.shortcuts.xowa.usr.history.show-1" + ); } public Xog_bnd_itm Set(Xog_bnd_itm itm, int new_box, IptArg new_ipt) { if (win.Win_box() == null) { // kit not built yet; occurs when restoring bindings through cfg file; DATE:2014-05-16 @@ -233,4 +350,13 @@ public class Xog_bnd_mgr { this.Bind(Xog_bnd_box_.Tid_browser_prog , win.Prog_box()); this.Bind(Xog_bnd_box_.Tid_browser_info , win.Info_box()); } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + String[] flds = gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_binding.To_ary(m.ReadStr("v")); + int box = Xog_bnd_box_.Xto_sys_int(flds[0]); + String key = String_.Replace(k, "xowa.gui.shortcuts.", ""); + Xog_bnd_itm bnd = app.Gui_mgr().Bnd_mgr().Get_or_null(key); + Set(bnd, box, IptArg_.parse(flds[1])); + return this; + } + }