From f1396e13c7bb579a461e8def6b6e88ab97ad8d6f Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sun, 11 Dec 2016 10:04:40 -0500 Subject: [PATCH] Cfg: Add defaults loader --- .../gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java | 10 +++-- .../addons/apps/cfgs/enums/Xoitm_gui_tid.java | 14 ++++--- .../mgrs/{ => caches}/Xocfg_cache_grp.java | 5 ++- .../mgrs/{ => caches}/Xocfg_cache_itm.java | 2 +- .../mgrs/{ => caches}/Xocfg_cache_mgr.java | 6 ++- .../{ => caches}/Xocfg_cache_mgr__tst.java | 2 +- .../mgrs/{ => caches}/Xocfg_cache_sub.java | 2 +- .../apps/cfgs/mgrs/dflts/Xocfg_dflt_itm.java | 30 ++++++++++++++ .../cfgs/mgrs/dflts/Xocfg_dflt_loader.java | 41 +++++++++++++++++++ .../apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java | 40 ++++++++++++++++++ .../cfgs/{ => mgrs}/types/Xocfg_type_mgr.java | 2 +- .../cfgs/specials/edits/objs/Xoedit_itm.java | 2 +- .../specials/edits/objs/Xoedit_itm_html.java | 14 +++++-- .../cfgs/specials/edits/objs/Xoedit_root.java | 2 +- .../edits/services/Xocfg_edit_loader.java | 15 ++++--- .../gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java | 6 --- .../hdrs/sections/Xop_section_mgr.java | 2 +- .../gplx/xowa/wikis/caches/Xow_cache_mgr.java | 2 +- 18 files changed, 164 insertions(+), 33 deletions(-) rename 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/{ => caches}/Xocfg_cache_grp.java (87%) rename 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/{ => caches}/Xocfg_cache_itm.java (82%) rename 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/{ => caches}/Xocfg_cache_mgr.java (87%) rename 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/{ => caches}/Xocfg_cache_mgr__tst.java (91%) rename 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/{ => caches}/Xocfg_cache_sub.java (83%) create mode 100644 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_itm.java create mode 100644 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_loader.java create mode 100644 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java rename 400_xowa/src/gplx/xowa/addons/apps/cfgs/{ => mgrs}/types/Xocfg_type_mgr.java (82%) diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java index ef6209a62..d0f135a15 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java @@ -16,15 +16,19 @@ 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; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.dbs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; -import gplx.xowa.addons.apps.cfgs.types.*; +import gplx.dbs.*; import gplx.xowa.addons.apps.cfgs.mgrs.caches.*; import gplx.xowa.addons.apps.cfgs.mgrs.dflts.*; import gplx.xowa.addons.apps.cfgs.mgrs.types.*; public class Xocfg_mgr { private final Xocfg_cache_mgr cache_mgr = new Xocfg_cache_mgr(); + public Xocfg_mgr() { + this.dflt_mgr = new Xocfg_dflt_mgr(cache_mgr); + } public Xocfg_type_mgr Type_mgr() {return type_mgr;} private final Xocfg_type_mgr type_mgr = new Xocfg_type_mgr(); + public Xocfg_dflt_mgr Dflt_mgr() {return dflt_mgr;} private final Xocfg_dflt_mgr dflt_mgr; public void Init_by_app(Xoa_app app) { - cache_mgr.Init_by_app // SECTION_EDIT + cache_mgr.Init_by_app ( gplx.xowa.addons.apps.cfgs.dbs.Xocfg_db_app.New_conn(app) , app.User().User_db_mgr().Conn()); + dflt_mgr.Init_by_app(app); } public void Clear() { cache_mgr.Clear(); 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 a78484691..60458ad7f 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 @@ -17,15 +17,16 @@ 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.*; public class Xoitm_gui_tid { // SERIALIZED - public static final int Tid__checkbox = 1, Tid__numeric = 2, Tid__select = 3, Tid__textbox = 4, Tid__fs_file = 5, Tid__fs_dir = 6, Tid__memo = 7, Tid__button = 8, Tid__label = 9; + public static final int Tid__checkbox = 1, Tid__numeric = 2, Tid__select = 3, Tid__textbox = 4, Tid__memo = 5, Tid__io_file = 6, Tid__io_dir = 7, Tid__io_process = 8, Tid__button = 10, Tid__label = 11; public static final String Str__checkbox = "checkbox" , Str__numeric = "numeric" , Str__select = "select" , Str__textbox = "textbox" - , Str__fs_file = "fs_file" - , Str__fs_dir = "fs_dir" , Str__memo = "memo" + , Str__io_file = "io.file" + , Str__io_dir = "io.dir" + , Str__io_process = "io.process" , Str__button = "button" , Str__label = "label" ; @@ -35,9 +36,10 @@ public class Xoitm_gui_tid { // SERIALIZED else if (String_.Eq(str, Str__numeric)) return Tid__numeric; else if (String_.Eq(str, Str__select)) return Tid__select; else if (String_.Eq(str, Str__textbox)) return Tid__textbox; - else if (String_.Eq(str, Str__fs_file)) return Tid__fs_file; - else if (String_.Eq(str, Str__fs_dir)) return Tid__fs_dir; else if (String_.Eq(str, Str__memo)) return Tid__memo; + else if (String_.Eq(str, Str__io_file)) return Tid__io_file; + else if (String_.Eq(str, Str__io_dir)) return Tid__io_dir; + else if (String_.Eq(str, Str__io_process)) return Tid__io_process; else if (String_.Eq(str, Str__button)) return Tid__button; else if (String_.Eq(str, Str__label)) return Tid__label; else throw Err_.new_unhandled_default(str); @@ -47,6 +49,8 @@ public class Xoitm_gui_tid { // SERIALIZED return Xoitm_gui_tid.Str__checkbox; else if (String_.Eq(db_type, "memo")) return Xoitm_gui_tid.Str__memo; + else if (String_.Eq(db_type, "io.process")) + return Xoitm_gui_tid.Str__io_process; else if (String_.Has_at_bgn(db_type, "list:")) return Xoitm_gui_tid.Str__select; else diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_grp.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_grp.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_grp.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_grp.java index f8a0b1736..b3785cb21 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_grp.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_grp.java @@ -15,7 +15,7 @@ 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.mgrs; 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.mgrs.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; class Xocfg_cache_grp { private final Hash_adp vals = Hash_adp_.New(); private final Ordered_hash subs = Ordered_hash_.New(); @@ -24,7 +24,8 @@ class Xocfg_cache_grp { this.dflt = dflt; } public String Key() {return key;} private final String key; - public String Dflt() {return dflt;} private final String dflt; + public String Dflt() {return dflt;} private String dflt; + public void Dflt_(String v) {this.dflt = v;} public String Get(String ctx) { // exact match; EX: "en.w|key_1" Xocfg_cache_itm rv = (Xocfg_cache_itm)vals.Get_by(ctx); diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_itm.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_itm.java similarity index 82% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_itm.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_itm.java index 09332dce6..422f46139 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_itm.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_itm.java @@ -15,7 +15,7 @@ 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.mgrs; 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.mgrs.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; class Xocfg_cache_itm { public Xocfg_cache_itm(String ctx, String key, String val) { this.ctx = ctx; diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_mgr.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr.java index 014e391b0..1ff108dfa 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr.java @@ -15,7 +15,7 @@ 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.mgrs; 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.mgrs.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; import gplx.dbs.*; import gplx.xowa.addons.apps.cfgs.dbs.*; import gplx.xowa.addons.apps.cfgs.dbs.tbls.*; public class Xocfg_cache_mgr { @@ -51,6 +51,10 @@ public class Xocfg_cache_mgr { Xocfg_cache_grp grp = Grps__get_or_load(key); grp.Sub(sub, ctx, evt); } + public void Dflt(String key, String val) { + Xocfg_cache_grp grp = Grps__get_or_load(key); + grp.Dflt_(val); + } private Xocfg_cache_grp Grps__get_or_load(String key) { Xocfg_cache_grp grp = (Xocfg_cache_grp)grps.Get_by(key); if (grp == null) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_mgr__tst.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java similarity index 91% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_mgr__tst.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java index a5113c802..af2bf80f2 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_mgr__tst.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java @@ -15,7 +15,7 @@ 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.mgrs; 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.mgrs.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; import org.junit.*; import gplx.core.tests.*; import gplx.dbs.*; import gplx.xowa.addons.apps.cfgs.dbs.*; import gplx.xowa.addons.apps.cfgs.specials.maints.services.*; public class Xocfg_cache_mgr__tst { diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_sub.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_sub.java similarity index 83% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_sub.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_sub.java index d90aad3eb..7c1ee30d9 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/Xocfg_cache_sub.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_sub.java @@ -15,7 +15,7 @@ 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.mgrs; 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.mgrs.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; class Xocfg_cache_sub { public Xocfg_cache_sub(Gfo_invk sub, String ctx, String evt, String key) { this.ctx = ctx; diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_itm.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_itm.java new file mode 100644 index 000000000..1a227b4e6 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_itm.java @@ -0,0 +1,30 @@ +/* +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.mgrs.dflts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; +public interface Xocfg_dflt_itm { + String Get_str(String key); +} +class Xocfg_dflt_itm__static implements Xocfg_dflt_itm { + private final String val; + public Xocfg_dflt_itm__static(String val) { + this.val = val; + } + public String Get_str(String key) { + return val; + } +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_loader.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_loader.java new file mode 100644 index 000000000..a3e74ea3e --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_loader.java @@ -0,0 +1,41 @@ +/* +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.mgrs.dflts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; +import gplx.langs.jsons.*; +class Xocfg_dflt_loader { + public void Load_by_file(Xocfg_dflt_mgr dflt_mgr, Io_url url) { + byte[] src = Io_mgr.Instance.LoadFilBryOrNull(url); + if (src == null) return; + Json_parser parser = new Json_parser(); + Json_doc doc = parser.Parse(src); + Json_ary ary = doc.Root_ary(); + int len = ary.Len(); + for (int i = 0; i < len; i++) { + Json_nde nde = ary.Get_at_as_nde(i); + String key = nde.Get_as_str_or("key", null); + String val = nde.Get_as_str_or("val", null); + dflt_mgr.Add(key, val); + } + } +} +/* +[ + {"key":"abcd", "val":"abcde\nbdfdfd"} +, {"key":"abcd", "val":"abcde\nbdfdfd"} +] +*/ diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java new file mode 100644 index 000000000..33a11e6aa --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/dflts/Xocfg_dflt_mgr.java @@ -0,0 +1,40 @@ +/* +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.mgrs.dflts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; +import gplx.xowa.addons.apps.cfgs.mgrs.caches.*; +public class Xocfg_dflt_mgr { + private final Xocfg_cache_mgr cache_mgr; + private final Ordered_hash hash = Ordered_hash_.New(); + public Xocfg_dflt_mgr(Xocfg_cache_mgr cache_mgr) { + this.cache_mgr = cache_mgr; + } + public void Init_by_app(Xoa_app app) { + Xocfg_dflt_loader loader = new Xocfg_dflt_loader(); + loader.Load_by_file(this, app.Fsys_mgr().Bin_plat_dir().GenSubFil_nest("cfg", "xo.cfg.dflt.json")); + } + public String Get_or(String key, String or) { + Xocfg_dflt_itm itm = (Xocfg_dflt_itm)hash.Get_by(key); + return (itm == null) ? or : itm.Get_str(key); + } + public void Add(String key, String val) { + cache_mgr.Dflt(key, val); + } + public void Add(String key, Xocfg_dflt_itm itm) { + hash.Add(key, itm); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/types/Xocfg_type_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java similarity index 82% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/types/Xocfg_type_mgr.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java index 9a83dbb8f..9bbd2eb93 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/types/Xocfg_type_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java @@ -15,7 +15,7 @@ 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.types; 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.mgrs.types; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; public class Xocfg_type_mgr { private final Ordered_hash list_hash = Ordered_hash_.New(); public Xocfg_type_mgr() { diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java index 610a02f75..1a65a2934 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.addons.apps.cfgs.specials.edits.objs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.specials.*; import gplx.xowa.addons.apps.cfgs.specials.edits.*; import gplx.langs.mustaches.*; import gplx.core.gfobjs.*; import gplx.langs.jsons.*; -import gplx.xowa.addons.apps.cfgs.types.*; +import gplx.xowa.addons.apps.cfgs.mgrs.types.*; public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm { private int gui_type; private boolean edited; 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 ff51578fb..a2e0ef5b7 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 @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.addons.apps.cfgs.specials.edits.objs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.specials.*; import gplx.xowa.addons.apps.cfgs.specials.edits.*; import gplx.xowa.addons.apps.cfgs.enums.*; -import gplx.xowa.addons.apps.cfgs.types.*; +import gplx.xowa.addons.apps.cfgs.mgrs.types.*; public class Xoedit_itm_html { public void Build_html(Bry_bfr bfr, Xocfg_type_mgr type_mgr, String key, String name, String data_type, int gui_type, String gui_args, String data) { switch (gui_type) { @@ -44,8 +44,16 @@ public class Xoedit_itm_html { } bfr.Add_str_u8_fmt(""); break; - case Xoitm_gui_tid.Tid__fs_file: - bfr.Add_str_u8_fmt("", key, data); + case Xoitm_gui_tid.Tid__io_process: + String[] fields = String_.Split(data, "\n"); + String exe = fields.length > 1 ? fields[0] : "exe"; + String arg = fields.length > 2 ? fields[1] : "args"; + bfr.Add_str_u8_fmt + ( "\n" + + "
\n" + , key + "-exe", exe); + bfr.Add_str_u8_fmt + ( "\n", key + "-arg", arg); break; default: break; diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_root.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_root.java index 3d425dfce..3c64ba6b3 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_root.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_root.java @@ -41,7 +41,7 @@ public class Xoedit_root implements Mustache_doc_itm { } public Mustache_doc_itm[] Mustache__subs(String key) { if (String_.Eq(key, "grps")) return grps; - else if (String_.Eq(key, "nav_exists")) return Mustache_doc_itm_.Ary__bool(nav_mgr.Itms().length > 0); + else if (String_.Eq(key, "nav_exists")) return Mustache_doc_itm_.Ary__bool(nav_mgr.Itms().length > 1); // NOTE: do not show combo if 0 or 1 item else if (String_.Eq(key, "itms")) return nav_mgr.Itms(); return Mustache_doc_itm_.Ary__empty; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java index 1c4d2922e..dd066bfe0 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java @@ -18,15 +18,18 @@ along with this program. If not, see . package gplx.xowa.addons.apps.cfgs.specials.edits.services; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.specials.*; import gplx.xowa.addons.apps.cfgs.specials.edits.*; import gplx.dbs.*; import gplx.xowa.addons.apps.cfgs.dbs.*; import gplx.xowa.addons.apps.cfgs.dbs.tbls.*; -import gplx.xowa.addons.apps.cfgs.specials.edits.objs.*; import gplx.xowa.addons.apps.cfgs.types.*; +import gplx.xowa.addons.apps.cfgs.specials.edits.objs.*; +import gplx.xowa.addons.apps.cfgs.mgrs.*; import gplx.xowa.addons.apps.cfgs.mgrs.dflts.*; import gplx.xowa.addons.apps.cfgs.mgrs.types.*; public class Xocfg_edit_loader { private final Xocfg_db_app db_app; private final Xocfg_db_usr db_usr; private final Xocfg_type_mgr type_mgr; - public Xocfg_edit_loader(Xocfg_db_app db_app, Xocfg_db_usr db_usr, Xocfg_type_mgr type_mgr) { + private final Xocfg_dflt_mgr dflt_mgr; + public Xocfg_edit_loader(Xocfg_db_app db_app, Xocfg_db_usr db_usr, Xocfg_type_mgr type_mgr, Xocfg_dflt_mgr dflt_mgr) { this.db_app = db_app; this.db_usr = db_usr; this.type_mgr = type_mgr; + this.dflt_mgr = dflt_mgr; } public Xoedit_root Load_root(String grp_key, String ctx, String lang) { // create lists @@ -157,8 +160,10 @@ public class Xocfg_edit_loader { Db_rdr rdr = db_app.Conn().Stmt_sql(sql).Exec_select__rls_auto(); while (rdr.Move_next()) { - Xoedit_itm edit_itm = (Xoedit_itm)itm_list.Get_by_or_fail(rdr.Read_str("itm_key")); - edit_itm.Load_by_meta(rdr.Read_int("itm_scope_id"), rdr.Read_str("itm_data_type"), rdr.Read_int("itm_gui_type"), rdr.Read_str("itm_gui_args"), rdr.Read_str("itm_dflt")); + String key = rdr.Read_str("itm_key"); + Xoedit_itm edit_itm = (Xoedit_itm)itm_list.Get_by_or_fail(key); + String dflt = dflt_mgr.Get_or(key, rdr.Read_str("itm_dflt")); + edit_itm.Load_by_meta(rdr.Read_int("itm_scope_id"), rdr.Read_str("itm_data_type"), rdr.Read_int("itm_gui_type"), rdr.Read_str("itm_gui_args"), dflt); } } } @@ -236,6 +241,6 @@ public class Xocfg_edit_loader { } public static Xocfg_edit_loader New(Xoa_app app) { Xocfg_db_app db_app = Xocfg_db_app.New(app); - return new Xocfg_edit_loader(db_app, new Xocfg_db_usr(db_app, app.User().User_db_mgr().Conn()), app.Cfg().Type_mgr()); + return new Xocfg_edit_loader(db_app, new Xocfg_db_usr(db_app, app.User().User_db_mgr().Conn()), app.Cfg().Type_mgr(), app.Cfg().Dflt_mgr()); } } diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java index f307d6518..2f3fb3631 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java @@ -77,12 +77,6 @@ public class Xop_hdr_wkr implements Xop_ctx_wkr { if (dirty) hdr.Init_by_parse(hdr_len, bgn_manual, end_manual); - // section-editable -// if ( ctx.Wiki().Parser_mgr().Hdr__section_editable__enabled() -// && Bry_.Eq(src, cur_pos, cur_pos + Xop_section_mgr.Len__meta, Xop_section_mgr.Bry__meta)) { -// ctx.Wiki().Parser_mgr().Hdr__section_editable__mgr().Parse(hdr, ctx.Page().Ttl().Full_db(), src, cur_pos, src_len); // SECTION_EDIT -// } - // gobble ws; hdr gobbles up trailing ws; EX: "==a== \n\t \n \nb" gobbles up all 3 "\n"s; otherwise para_wkr will process
cur_pos = Find_fwd_while_ws_hdr_version(src, cur_pos, src_len); ctx.Para().Process_block__bgn_n__end_y(Xop_xnde_tag_.Tag__h2); diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java index 20c62b501..0cea893c8 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java @@ -32,7 +32,7 @@ public class Xop_section_mgr implements Gfo_invk { public void Init_by_wiki(Xowe_wiki wiki) { this.app = wiki.Appe(); this.wiki = wiki; - this.enabled = wiki.App().Cfg().Bind_bool(wiki, gplx.xowa.htmls.core.wkrs.hdrs.Xoh_section_editable_.Cfg__section_editing__enabled, this); // SECTION_EDIT + this.enabled = wiki.App().Cfg().Bind_bool(wiki, gplx.xowa.htmls.core.wkrs.hdrs.Xoh_section_editable_.Cfg__section_editing__enabled, this); this.tidy_mgr = wiki.Html_mgr().Tidy_mgr(); } public byte[] Slice_section(Xoa_url url, Xoa_ttl ttl, byte[] src) { diff --git a/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java b/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java index c085aad9a..3932c65ae 100644 --- a/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java @@ -53,11 +53,11 @@ public class Xow_cache_mgr { public void Free_mem_all() {this.Free_mem_all(Bool_.Y);} public void Free_mem_all(boolean free_page_cache) { if (free_page_cache) { - page_cache.Free_mem_all(); commons_cache.Clear(); ifexist_cache.Clear(); wiki.Appe().Wiki_mgr().Wdata_mgr().Clear(); // moved from ctx.Clear(); DATE:2016-07-21 } + page_cache.Free_mem_all(); wiki.Ctg__catpage_mgr().Free_mem_all(); tmpl_result_cache.Clear(); defn_cache.Free_mem_all();