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 0fa75f9db..7e4286352 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
@@ -37,4 +37,7 @@ public class Xocfg_mgr {
public void Set_str(String ctx, String key, String val) {
cache_mgr.Set(ctx, key, val);
}
+ public void Del(String ctx, String key) {
+ cache_mgr.Del(ctx, key);
+ }
}
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_grp.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_grp.java
index f4a8e356c..698cf3e58 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_grp.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_grp.java
@@ -17,8 +17,8 @@ along with this program. If not, see .
*/
package gplx.xowa.addons.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
import gplx.langs.mustaches.*;
-public class Xogui_grp implements Xogui_nde, Mustache_doc_itm {
- private Xogui_itm[] itms = new Xogui_itm[0];
+import gplx.core.gfobjs.*;
+public class Xogui_grp implements Xogui_nde, Mustache_doc_itm {
public Xogui_grp(int id, int sort, String key) {
this.id = id;
this.sort = sort;
@@ -32,6 +32,8 @@ public class Xogui_grp implements Xogui_nde, Mustache_doc_itm {
public String Lang() {return lang;} private String lang;
public String Name() {return name;} private String name;
public String Help() {return help;} private String help;
+
+ public Xogui_itm[] Itms() {return itms;} private Xogui_itm[] itms = new Xogui_itm[0];
public void Load_by_i18n(String lang, String name, String help) {
this.lang = lang;
this.name = name;
@@ -43,6 +45,23 @@ public class Xogui_grp implements Xogui_nde, Mustache_doc_itm {
public void Itms_(Xogui_itm[] v) {
this.itms = v;
}
+ public Gfobj_nde To_nde() {
+ Gfobj_nde rv = Gfobj_nde.New();
+ rv.Add_int("id", id);
+ rv.Add_str("key", key);
+ rv.Add_str("lang", lang);
+ rv.Add_str("name", name);
+ rv.Add_str("help", help);
+
+ List_adp list = List_adp_.New();
+ int len = itms.length;
+ for (int i = 0; i < len; i++) {
+ Xogui_itm itm = itms[i];
+ list.Add(itm.To_nde());
+ }
+ rv.Add_ary("itms", new Gfobj_ary((Gfobj_nde[])list.To_ary_and_clear(Gfobj_nde.class)));
+ return rv;
+ }
public boolean Mustache__write(String k, Mustache_bfr bfr) {
if (String_.Eq(k, "id")) bfr.Add_int(id);
else if (String_.Eq(k, "key")) bfr.Add_str_u8(key);
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_itm.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_itm.java
index 813abbd70..7aefc8c25 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_itm.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_itm.java
@@ -17,6 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.addons.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
import gplx.langs.mustaches.*;
+import gplx.core.gfobjs.*; import gplx.langs.jsons.*;
public class Xogui_itm implements Xogui_nde, Mustache_doc_itm {
public Xogui_itm(int id, int sort) {
this.id = id;
@@ -30,6 +31,7 @@ public class Xogui_itm implements Xogui_nde, Mustache_doc_itm {
public String Gui_args() {return gui_args;} private String gui_args;
public String Key() {return key;} private String key;
public String Dflt() {return dflt;} private String dflt;
+ public boolean Edited() {return edited;} private boolean edited;
public String Lang() {return lang;} private String lang;
public String Name() {return name;} private String name;
@@ -54,11 +56,33 @@ public class Xogui_itm implements Xogui_nde, Mustache_doc_itm {
this.ctx = ctx;
this.val = val;
this.date = date;
+ this.edited = true;
}
public void Set_data_by_dflt() {
this.ctx = Ctx__app;
this.val = dflt;
this.date = String_.Empty;
+ this.edited = false;
+ }
+ public Gfobj_nde To_nde() {
+ Gfobj_nde rv = Gfobj_nde.New();
+ rv.Add_int("id", id);
+ rv.Add_str("key", key);
+ rv.Add_str("dflt", lang);
+ rv.Add_str("lang", lang);
+ rv.Add_str("name", name);
+ rv.Add_str("help", help);
+ rv.Add_str("ctx", ctx);
+ rv.Add_str("val", val);
+ rv.Add_str("date", date);
+ Bry_bfr bfr = Bry_bfr_.New();
+ To_html(bfr);
+ // rv.Add_str("html", String_.Replace(bfr.To_str_and_clear(), "'", "\\\""));
+ rv.Add_str("html", bfr.To_str_and_clear());
+ return rv;
+ }
+ private void To_html(Bry_bfr bfr) {
+ new Xogui_itm_html().Build_html(bfr, key, name, gui_type, gui_args, val);
}
public boolean Mustache__write(String k, Mustache_bfr bfr) {
if (String_.Eq(k, "id")) bfr.Add_int(id);
@@ -70,11 +94,12 @@ public class Xogui_itm implements Xogui_nde, Mustache_doc_itm {
else if (String_.Eq(k, "ctx")) bfr.Add_str_u8(ctx);
else if (String_.Eq(k, "val")) bfr.Add_str_u8(val);
else if (String_.Eq(k, "date")) bfr.Add_str_u8(date);
- else if (String_.Eq(k, "html")) new Xogui_itm_html().Build_html(bfr.Bfr(), key, name, gui_type, gui_args, val);
+ else if (String_.Eq(k, "html")) To_html(bfr.Bfr());
return true;
}
public static String Ctx__app = "app";
- public Mustache_doc_itm[] Mustache__subs(String key) {
+ public Mustache_doc_itm[] Mustache__subs(String k) {
+ if (String_.Eq(k, "edited")) return Mustache_doc_itm_.Ary__bool(edited);
return Mustache_doc_itm_.Ary__empty;
}
}
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_itm_html.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_itm_html.java
index da0d46c38..788c599a2 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_itm_html.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/gui/Xogui_itm_html.java
@@ -21,26 +21,26 @@ public class Xogui_itm_html {
public void Build_html(Bry_bfr bfr, String key, String name, int gui_type, String gui_args, String data) {
switch (gui_type) {
case Xoitm_gui_tid.Tid__checkbox:
- bfr.Add_str_u8_fmt("", key, String_.Eq(data, "y") ? " checked='checked'" : "");
+ bfr.Add_str_u8_fmt("", key, String_.Eq(data, "y") ? " checked=\"checked\"" : "");
break;
case Xoitm_gui_tid.Tid__numeric:
- bfr.Add_str_u8_fmt("", key, data);
+ bfr.Add_str_u8_fmt("", key, data);
break;
case Xoitm_gui_tid.Tid__textbox:
- bfr.Add_str_u8_fmt("", key, data);
+ bfr.Add_str_u8_fmt("", key, data);
break;
case Xoitm_gui_tid.Tid__memo:
- bfr.Add_str_u8_fmt("", key, data);
+ bfr.Add_str_u8_fmt("", key, data);
break;
case Xoitm_gui_tid.Tid__select:
- bfr.Add_str_u8_fmt("