mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Cfg: Change converter to use gfs parser; other minor changes
This commit is contained in:
parent
562c5b5a56
commit
758248b6a4
@ -37,7 +37,7 @@ public class Xocfg_dflt_mgr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void Run_os_gfs(gplx.xowa.apps.gfs.Xoa_gfs_mgr gfs_mgr, gplx.xowa.apps.fsys.Xoa_fsys_mgr fsys_mgr) {
|
public static void Run_os_gfs(gplx.xowa.apps.gfs.Xoa_gfs_mgr gfs_mgr, gplx.xowa.apps.fsys.Xoa_fsys_mgr fsys_mgr) {
|
||||||
Io_url url = fsys_mgr.Root_dir().GenSubFil_nest("user", "app", "cfg", "os.gfs"); // User_os_gfs(app.Fsys_mgr());
|
Io_url url = fsys_mgr.Root_dir().GenSubFil_nest("user", "anonymous", "app", "cfg", "os.gfs");
|
||||||
if (!Io_mgr.Instance.ExistsFil(url)) {
|
if (!Io_mgr.Instance.ExistsFil(url)) {
|
||||||
Io_url dflt_url = fsys_mgr.Bin_plat_dir().GenSubFil_nest("xowa", "cfg", "os.default.gfs");
|
Io_url dflt_url = fsys_mgr.Bin_plat_dir().GenSubFil_nest("xowa", "cfg", "os.default.gfs");
|
||||||
if (Io_mgr.Instance.ExistsFil(dflt_url)) // TEST: also, DRD
|
if (Io_mgr.Instance.ExistsFil(dflt_url)) // TEST: also, DRD
|
||||||
|
@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
package gplx.xowa.addons.apps.cfgs.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
|
package gplx.xowa.addons.apps.cfgs.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
|
||||||
import gplx.dbs.*;
|
import gplx.dbs.*;
|
||||||
|
import gplx.langs.gfs.*;
|
||||||
public class Xocfg_upgrade_mgr {
|
public class Xocfg_upgrade_mgr {
|
||||||
public static void Convert(Xoae_app app) {
|
public static void Convert(Xoae_app app) {
|
||||||
try {
|
try {
|
||||||
@ -60,6 +61,7 @@ public class Xocfg_upgrade_mgr {
|
|||||||
app.Cfg().Cache_mgr().Db_usr().Conn().Txn_bgn("convert");
|
app.Cfg().Cache_mgr().Db_usr().Conn().Txn_bgn("convert");
|
||||||
for (Keyval kv : kvs) {
|
for (Keyval kv : kvs) {
|
||||||
if (String_.Eq(kv.Key(), "")) continue;
|
if (String_.Eq(kv.Key(), "")) continue;
|
||||||
|
Gfo_usr_dlg_.Instance.Log_many("", "", "cfg.convert:converting; key=~{0} val=~{1}", kv.Key(), kv.Val());
|
||||||
app.Cfg().Set_str_app(kv.Key(), kv.Val_to_str_or_empty());
|
app.Cfg().Set_str_app(kv.Key(), kv.Val_to_str_or_empty());
|
||||||
}
|
}
|
||||||
app.Cfg().Cache_mgr().Db_usr().Conn().Txn_end();
|
app.Cfg().Cache_mgr().Db_usr().Conn().Txn_end();
|
||||||
@ -68,45 +70,25 @@ public class Xocfg_upgrade_mgr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static Keyval[] Parse(byte[] src) {
|
public static Keyval[] Parse(byte[] src) {
|
||||||
int pos = 0; int len = src.length;
|
|
||||||
byte[] key_bgn_bry = Bry_.new_a7("app.cfgs.get('");
|
|
||||||
byte[] key_end_bry = Bry_.new_a7("', 'app').val = '");
|
|
||||||
byte[] val_end_bry = Bry_.new_a7("';\n");
|
|
||||||
byte[] apos_2_bry = Bry_.new_a7("''");
|
|
||||||
|
|
||||||
// main parse
|
// main parse
|
||||||
|
Gfs_parser parser = new Gfs_parser();
|
||||||
Ordered_hash hash = Ordered_hash_.New();
|
Ordered_hash hash = Ordered_hash_.New();
|
||||||
while (true) {
|
Gfs_nde root = parser.Parse(src);
|
||||||
// find "app.cfgs.get('"
|
int root_len = root.Subs_len();
|
||||||
int key_bgn = Bry_find_.Find_fwd(src, key_bgn_bry, pos, len);
|
for (int i = 0; i < root_len; i++) {
|
||||||
if (key_bgn == Bry_find_.Not_found) break; // no more cfgs; break;
|
Gfs_nde app_nde = root.Subs_get_at(i);
|
||||||
|
Gfs_nde cfgs_nde = app_nde.Subs_get_at(0);
|
||||||
// update key_bgn; find key_end
|
Gfs_nde get_nde = cfgs_nde.Subs_get_at(0);
|
||||||
key_bgn += key_bgn_bry.length;
|
Gfs_nde key_atr = get_nde.Atrs_get_at(0);
|
||||||
int key_end = Bry_find_.Find_fwd(src, key_end_bry, key_bgn, len);
|
Gfs_nde val_nde = get_nde.Subs_get_at(0);
|
||||||
if (key_end == Bry_find_.Not_found) {
|
Gfs_nde val_atr = val_nde.Atrs_get_at(0);
|
||||||
Gfo_usr_dlg_.Instance.Log_many("", "", "cfg.convert:could not find key_end; src=~{0}", Bry_.Mid(src, key_bgn, len));
|
String key = String_.new_u8(key_atr.Name_bry(src));
|
||||||
break;
|
hash.Add(key, Keyval_.new_(key, String_.new_u8(val_atr.Name_bry(src))));
|
||||||
}
|
|
||||||
|
|
||||||
// look for val_end
|
|
||||||
int val_bgn = key_end + key_end_bry.length;
|
|
||||||
int val_end = Bry_find_.Find_fwd(src, val_end_bry, val_bgn, len);
|
|
||||||
if (val_end == Bry_find_.Not_found) {
|
|
||||||
Gfo_usr_dlg_.Instance.Log_many("", "", "cfg.convert:could not find val_bgn; src=~{0}", Bry_.Mid(src, val_bgn, len));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
byte[] key = Bry_.Replace(Bry_.Mid(src, key_bgn, key_end), apos_2_bry, Byte_ascii.Apos_bry);
|
|
||||||
byte[] val = Bry_.Replace(Bry_.Mid(src, val_bgn, val_end), apos_2_bry, Byte_ascii.Apos_bry);
|
|
||||||
String key_str = String_.new_u8(key);
|
|
||||||
hash.Add_if_dupe_use_nth(key_str, Keyval_.new_(key_str, String_.new_u8(val)));
|
|
||||||
pos = val_end + val_end_bry.length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// consolidate io.cmd
|
// consolidate io.cmd
|
||||||
List_adp deleted = List_adp_.New();
|
List_adp deleted = List_adp_.New();
|
||||||
len = hash.Len();
|
int len = hash.Len();
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
Keyval args_kv = (Keyval)hash.Get_at(i);
|
Keyval args_kv = (Keyval)hash.Get_at(i);
|
||||||
String args_kv_key = args_kv.Key();
|
String args_kv_key = args_kv.Key();
|
||||||
|
@ -33,10 +33,10 @@ public class Xocfg_upgrade_mgr__tst {
|
|||||||
}
|
}
|
||||||
@Test public void Parse__multi_line() {
|
@Test public void Parse__multi_line() {
|
||||||
fxt.Test__parse
|
fxt.Test__parse
|
||||||
( "app.cfgs.get('k_1', 'app').val = 'v_1\n"
|
( "app.cfgs.get('k_1', 'app').val = '''v_1'';\n"
|
||||||
+ "v_2\n"
|
+ "v_2\n"
|
||||||
+ "v_3';\n"
|
+ "v_3';\n"
|
||||||
, Keyval_.new_("k_1", "v_1\nv_2\nv_3"));
|
, Keyval_.new_("k_1", "'v_1';\nv_2\nv_3"));
|
||||||
}
|
}
|
||||||
@Test public void Parse__io_cmd() {
|
@Test public void Parse__io_cmd() {
|
||||||
fxt.Test__parse
|
fxt.Test__parse
|
||||||
@ -46,7 +46,7 @@ public class Xocfg_upgrade_mgr__tst {
|
|||||||
}
|
}
|
||||||
@Test public void Parse__gui_binding() {
|
@Test public void Parse__gui_binding() {
|
||||||
fxt.Test__parse
|
fxt.Test__parse
|
||||||
( "app.cfgs.get('app.cfg.get.gui.bnds.init('xowa.app.exit-1').src', 'app').val = 'box='browser';ipt='key.none';';\n"
|
( "app.cfgs.get('app.cfg.get.gui.bnds.init(''xowa.app.exit-1'').src', 'app').val = 'box=''browser'';ipt=''key.none'';';\n"
|
||||||
, Keyval_.new_("xowa.gui.shortcuts.xowa.app.exit-1", "browser|key.none"));
|
, Keyval_.new_("xowa.gui.shortcuts.xowa.app.exit-1", "browser|key.none"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,8 +49,8 @@ public class Xog_bnd_mgr implements Gfo_invk {
|
|||||||
, "xowa.gui.shortcuts.xowa.nav.help.about-1"
|
, "xowa.gui.shortcuts.xowa.nav.help.about-1"
|
||||||
, "xowa.gui.shortcuts.xowa.nav.help.change_log-1"
|
, "xowa.gui.shortcuts.xowa.nav.help.change_log-1"
|
||||||
, "xowa.gui.shortcuts.xowa.nav.help.diagnostics-1"
|
, "xowa.gui.shortcuts.xowa.nav.help.diagnostics-1"
|
||||||
, "xowa.gui.shortcuts.xowa.nav.xowa_main-1"
|
, "xowa.gui.shortcuts.xowa.nav.help.xowa_main-1"
|
||||||
, "xowa.gui.shortcuts.xowa.nav.xowa_blog-1"
|
, "xowa.gui.shortcuts.xowa.nav.help.xowa_blog-1"
|
||||||
, "xowa.gui.shortcuts.xowa.nav.setup.download_central-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_list-1"
|
||||||
, "xowa.gui.shortcuts.xowa.nav.setup.import_from_script-1"
|
, "xowa.gui.shortcuts.xowa.nav.setup.import_from_script-1"
|
||||||
@ -59,8 +59,6 @@ public class Xog_bnd_mgr implements Gfo_invk {
|
|||||||
, "xowa.gui.shortcuts.xowa.nav.system_data.log_session-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_app-1"
|
||||||
, "xowa.gui.shortcuts.xowa.nav.system_data.cfg_lang-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.nav.system_data.usr_history-1"
|
||||||
, "xowa.gui.shortcuts.xowa.gui.font.increase-1"
|
, "xowa.gui.shortcuts.xowa.gui.font.increase-1"
|
||||||
, "xowa.gui.shortcuts.xowa.gui.font.decrease-1"
|
, "xowa.gui.shortcuts.xowa.gui.font.decrease-1"
|
||||||
@ -176,6 +174,7 @@ public class Xog_bnd_mgr implements Gfo_invk {
|
|||||||
}
|
}
|
||||||
// if ipts match, delete old_bnd
|
// if ipts match, delete old_bnd
|
||||||
else if ( new_ipt_exists
|
else if ( new_ipt_exists
|
||||||
|
&& old_bnd.Box() == new_bnd.Box()
|
||||||
&& String_.Eq(old_bnd.Ipt().Key(), new_ipt.Key())) {
|
&& String_.Eq(old_bnd.Ipt().Key(), new_ipt.Key())) {
|
||||||
Xog_bnd_box_.Set_bnd_for_grp(Xog_bnd_box_.Set_del_ipt, win, invk_mgr, old_box, old_bnd, old_bnd.Ipt());
|
Xog_bnd_box_.Set_bnd_for_grp(Xog_bnd_box_.Set_del_ipt, win, invk_mgr, old_box, old_bnd, old_bnd.Ipt());
|
||||||
old_bnd.Ipt_to_none();
|
old_bnd.Ipt_to_none();
|
||||||
@ -239,8 +238,6 @@ public class Xog_bnd_mgr implements Gfo_invk {
|
|||||||
Init_itm(Xog_cmd_itm_.Key_nav_system_data_log_session , Xog_bnd_box_.Tid_browser , "");
|
Init_itm(Xog_cmd_itm_.Key_nav_system_data_log_session , Xog_bnd_box_.Tid_browser , "");
|
||||||
Init_itm(Xog_cmd_itm_.Key_nav_system_data_cfg_app , Xog_bnd_box_.Tid_browser , "");
|
Init_itm(Xog_cmd_itm_.Key_nav_system_data_cfg_app , Xog_bnd_box_.Tid_browser , "");
|
||||||
Init_itm(Xog_cmd_itm_.Key_nav_system_data_cfg_lang , Xog_bnd_box_.Tid_browser , "");
|
Init_itm(Xog_cmd_itm_.Key_nav_system_data_cfg_lang , Xog_bnd_box_.Tid_browser , "");
|
||||||
Init_itm(Xog_cmd_itm_.Key_nav_system_data_cfg_user , Xog_bnd_box_.Tid_browser , "");
|
|
||||||
Init_itm(Xog_cmd_itm_.Key_nav_system_data_cfg_custom , Xog_bnd_box_.Tid_browser , "");
|
|
||||||
Init_itm(Xog_cmd_itm_.Key_nav_system_data_usr_history , Xog_bnd_box_.Tid_browser , "");
|
Init_itm(Xog_cmd_itm_.Key_nav_system_data_usr_history , Xog_bnd_box_.Tid_browser , "");
|
||||||
Init_itm(Xog_cmd_itm_.Key_gui_font_increase , Xog_bnd_box_.Tid_browser , "mod.c+key.equal");
|
Init_itm(Xog_cmd_itm_.Key_gui_font_increase , Xog_bnd_box_.Tid_browser , "mod.c+key.equal");
|
||||||
Init_itm(Xog_cmd_itm_.Key_gui_font_decrease , Xog_bnd_box_.Tid_browser , "mod.c+key.minus");
|
Init_itm(Xog_cmd_itm_.Key_gui_font_decrease , Xog_bnd_box_.Tid_browser , "mod.c+key.minus");
|
||||||
|
@ -47,8 +47,6 @@ public class Xog_cmd_itm_ {
|
|||||||
, Key_nav_system_data_log_session = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.log_session" , "Special:XowaSystemData?type=log_session")
|
, Key_nav_system_data_log_session = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.log_session" , "Special:XowaSystemData?type=log_session")
|
||||||
, Key_nav_system_data_cfg_app = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.cfg_app" , "Special:XowaSystemData?type=cfg_app")
|
, Key_nav_system_data_cfg_app = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.cfg_app" , "Special:XowaSystemData?type=cfg_app")
|
||||||
, Key_nav_system_data_cfg_lang = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.cfg_lang" , "Special:XowaSystemData?type=cfg_lang")
|
, Key_nav_system_data_cfg_lang = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.cfg_lang" , "Special:XowaSystemData?type=cfg_lang")
|
||||||
, Key_nav_system_data_cfg_user = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.cfg_user" , "Special:XowaSystemData?type=cfg_user")
|
|
||||||
, Key_nav_system_data_cfg_custom = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.cfg_custom" , "Special:XowaSystemData?type=cfg_custom")
|
|
||||||
, Key_nav_system_data_usr_history = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.usr_history" , "Special:XowaSystemData?type=usr_history")
|
, Key_nav_system_data_usr_history = new_page_(Xog_ctg_itm_.Tid_nav_pages , "xowa.nav.system_data.usr_history" , "Special:XowaSystemData?type=usr_history")
|
||||||
|
|
||||||
, Key_gui_font_increase = new_dflt_(Xog_ctg_itm_.Tid_font , "xowa.gui.font.increase")
|
, Key_gui_font_increase = new_dflt_(Xog_ctg_itm_.Tid_font , "xowa.gui.font.increase")
|
||||||
|
@ -42,7 +42,8 @@ public class Xog_mnu_grp extends Xog_mnu_base {
|
|||||||
if (!mnu_is_popup && app.Gui_mgr().Browser_win().Win_box() != null)
|
if (!mnu_is_popup && app.Gui_mgr().Browser_win().Win_box() != null)
|
||||||
Gfo_invk_.Invk_by_key(app.Gui_mgr().Browser_win(), Gfui_html.Evt_win_resized);
|
Gfo_invk_.Invk_by_key(app.Gui_mgr().Browser_win(), Gfui_html.Evt_win_resized);
|
||||||
}
|
}
|
||||||
public String Source() {return source;} private String source; public void Source_(String v) {this.source = v; this.Source_exec(app.Gfs_mgr());}
|
public String Source() {return source;} private String source = ""; // NOTE: default to "" not null, else init will try to run "clear;\nnullbuild;"
|
||||||
|
public void Source_(String v) {this.source = v; this.Source_exec(app.Gfs_mgr());}
|
||||||
public Object Source_exec(Xoa_gfs_mgr gfs_mgr) {return Source_exec(gfs_mgr, source);}
|
public Object Source_exec(Xoa_gfs_mgr gfs_mgr) {return Source_exec(gfs_mgr, source);}
|
||||||
private Object Source_exec(Xoa_gfs_mgr gfs_mgr, String v) {
|
private Object Source_exec(Xoa_gfs_mgr gfs_mgr, String v) {
|
||||||
if (!enabled) return Gfo_invk_.Rv_handled;
|
if (!enabled) return Gfo_invk_.Rv_handled;
|
||||||
|
@ -86,8 +86,6 @@ public class Xog_mnu_regy {
|
|||||||
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.log_session" , Xog_cmd_itm_.Key_nav_system_data_log_session);
|
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.log_session" , Xog_cmd_itm_.Key_nav_system_data_log_session);
|
||||||
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.cfg_app" , Xog_cmd_itm_.Key_nav_system_data_cfg_app);
|
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.cfg_app" , Xog_cmd_itm_.Key_nav_system_data_cfg_app);
|
||||||
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.cfg_lang" , Xog_cmd_itm_.Key_nav_system_data_cfg_lang);
|
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.cfg_lang" , Xog_cmd_itm_.Key_nav_system_data_cfg_lang);
|
||||||
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.cfg_user" , Xog_cmd_itm_.Key_nav_system_data_cfg_user);
|
|
||||||
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.cfg_custom" , Xog_cmd_itm_.Key_nav_system_data_cfg_custom);
|
|
||||||
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.usr_history" , Xog_cmd_itm_.Key_nav_system_data_usr_history);
|
Init_obsolete_itm(hash, gui_mgr, "xowa.system.data.usr_history" , Xog_cmd_itm_.Key_nav_system_data_usr_history);
|
||||||
Init_obsolete_itm(hash, gui_mgr, "xowa.help.about" , Xog_cmd_itm_.Key_nav_help_about);
|
Init_obsolete_itm(hash, gui_mgr, "xowa.help.about" , Xog_cmd_itm_.Key_nav_help_about);
|
||||||
Init_obsolete_itm(hash, gui_mgr, "xowa.tabs.new_link__at_dflt__focus_n" , Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_n);
|
Init_obsolete_itm(hash, gui_mgr, "xowa.tabs.new_link__at_dflt__focus_n" , Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_n);
|
||||||
|
@ -199,7 +199,7 @@ public class Xog_tab_mgr implements Gfo_evt_itm {
|
|||||||
public void Tabs_new_link(boolean focus, String link) { // handle empty link
|
public void Tabs_new_link(boolean focus, String link) { // handle empty link
|
||||||
if (String_.Len_eq_0(link)) {
|
if (String_.Len_eq_0(link)) {
|
||||||
if (this.Active_tab_is_null()) return;
|
if (this.Active_tab_is_null()) return;
|
||||||
link = active_tab.Html_itm().Html_selected_get_active_or_selection();
|
link = gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url.Decode_str(active_tab.Html_itm().Html_selected_get_active_or_selection()); // NOTE: must decode else url-encoded special pages don't work; EX:home/wiki/Special:XowaCfg%3Fgrp%3Dxowa.html.css; DATE:2017-01-02
|
||||||
}
|
}
|
||||||
if (String_.Len_eq_0(link)) {win.App().Usr_dlg().Prog_many("", "", "no link or text selected"); return;}
|
if (String_.Len_eq_0(link)) {win.App().Usr_dlg().Prog_many("", "", "no link or text selected"); return;}
|
||||||
Tabs_new_link(link, focus);
|
Tabs_new_link(link, focus);
|
||||||
|
Loading…
Reference in New Issue
Block a user