mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Cfg: Add better escaping for val and dflt
This commit is contained in:
parent
460f4a323b
commit
6f3500d129
@ -30,6 +30,7 @@ class Gfobj_fld_ {
|
||||
, Fld_tid__long = 4
|
||||
, Fld_tid__double = 5
|
||||
, Fld_tid__str = 6
|
||||
, Fld_tid__bry = 7
|
||||
;
|
||||
}
|
||||
class Gfobj_fld_str implements Gfobj_fld {
|
||||
@ -39,6 +40,13 @@ class Gfobj_fld_str implements Gfobj_fld {
|
||||
public Object As_obj() {return val;}
|
||||
public String As_str() {return val;} private String val;
|
||||
}
|
||||
class Gfobj_fld_bry implements Gfobj_fld {
|
||||
public Gfobj_fld_bry(String key, byte[] val) {this.key = key; this.val = val;}
|
||||
public String Key() {return key;} private final String key;
|
||||
public byte Fld_tid() {return Gfobj_fld_.Fld_tid__bry;}
|
||||
public Object As_obj() {return val;}
|
||||
public byte[] As_bry() {return val;} private byte[] val;
|
||||
}
|
||||
class Gfobj_fld_bool implements Gfobj_fld {
|
||||
public Gfobj_fld_bool(String key, boolean val) {this.key = key; this.val = val;}
|
||||
public String Key() {return key;} private final String key;
|
||||
|
@ -49,6 +49,7 @@ public class Gfobj_nde implements Gfobj_grp {
|
||||
public Gfobj_nde Add_int(String key, int val) {return Add_fld(new Gfobj_fld_int(key, val));}
|
||||
public Gfobj_nde Add_long(String key, long val) {return Add_fld(new Gfobj_fld_long(key, val));}
|
||||
public Gfobj_nde Add_str(String key, String val) {return Add_fld(new Gfobj_fld_str(key, val));}
|
||||
public Gfobj_nde Add_bry(String key, byte[] val) {return Add_fld(new Gfobj_fld_bry(key, val));}
|
||||
public Gfobj_nde Add_url(String key, Io_url val) {return Add_fld(new Gfobj_fld_str(key, val.Raw()));}
|
||||
public Gfobj_nde Add_double(String key, double val) {return Add_fld(new Gfobj_fld_double(key, val));}
|
||||
public Gfobj_nde Add_nde(String key, Gfobj_nde val) {return Add_fld(new Gfobj_fld_nde(key, val));}
|
||||
|
@ -53,6 +53,7 @@ public class Gfobj_wtr__json {
|
||||
private void Write_fld(Gfobj_fld itm) {
|
||||
switch (itm.Fld_tid()) {
|
||||
case Gfobj_fld_.Fld_tid__str: wtr.Kv_str(itm.Key() , ((Gfobj_fld_str)itm).As_str()); break;
|
||||
case Gfobj_fld_.Fld_tid__bry: wtr.Kv_bry(itm.Key() , ((Gfobj_fld_bry)itm).As_bry()); break;
|
||||
case Gfobj_fld_.Fld_tid__int: wtr.Kv_int(itm.Key() , ((Gfobj_fld_int)itm).As_int()); break;
|
||||
case Gfobj_fld_.Fld_tid__long: wtr.Kv_long(itm.Key() , ((Gfobj_fld_long)itm).As_long()); break;
|
||||
case Gfobj_fld_.Fld_tid__bool: wtr.Kv_bool(itm.Key() , ((Gfobj_fld_bool)itm).As_bool()); break;
|
||||
|
@ -37,7 +37,7 @@ public class Xoedit_grp implements Xoedit_nde, Mustache_doc_itm {
|
||||
this.name = name;
|
||||
this.help = help;
|
||||
}
|
||||
public Gfobj_nde To_nde() {
|
||||
public Gfobj_nde To_nde(Bry_bfr tmp_bfr) {
|
||||
Gfobj_nde rv = Gfobj_nde.New();
|
||||
rv.Add_int("id", id);
|
||||
rv.Add_str("key", key);
|
||||
@ -49,7 +49,7 @@ public class Xoedit_grp implements Xoedit_nde, Mustache_doc_itm {
|
||||
int len = itms.length;
|
||||
for (int i = 0; i < len; i++) {
|
||||
Xoedit_itm itm = itms[i];
|
||||
list.Add(itm.To_nde());
|
||||
list.Add(itm.To_nde(tmp_bfr));
|
||||
}
|
||||
rv.Add_ary("itms", new Gfobj_ary((Gfobj_nde[])list.To_ary_and_clear(Gfobj_nde.class)));
|
||||
return rv;
|
||||
|
@ -19,10 +19,12 @@ package gplx.xowa.addons.apps.cfgs.specials.edits.objs; import gplx.*; import gp
|
||||
import gplx.langs.mustaches.*;
|
||||
import gplx.core.gfobjs.*; import gplx.langs.jsons.*;
|
||||
import gplx.xowa.addons.apps.cfgs.mgrs.types.*;
|
||||
import gplx.langs.htmls.*;
|
||||
public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
|
||||
private String gui_type;
|
||||
private boolean edited;
|
||||
private String data_type, gui_args, dflt, lang, name, ctx, val, date;
|
||||
private String data_type, gui_args, lang, name, ctx, date;
|
||||
private byte[] val, dflt; // NOTE: data is always escaped b/c it is only consumed by mustache; EX: "<'" not "<'"
|
||||
private Xocfg_type_mgr type_mgr;
|
||||
public Xoedit_itm(Xocfg_type_mgr type_mgr, int id, String key, int sort) {
|
||||
this.type_mgr = type_mgr;
|
||||
@ -35,20 +37,20 @@ public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
|
||||
public String Help() {return help;} private String help;
|
||||
|
||||
public int Sort() {return sort;} private final int sort;
|
||||
public void Load_by_meta(int scope_id, String data_type, String gui_type, String gui_args, String dflt) {
|
||||
public void Load_by_meta(Bry_bfr tmp_bfr, int scope_id, String data_type, String gui_type, String gui_args, String dflt_str) {
|
||||
this.data_type = data_type;
|
||||
this.gui_type = gui_type;
|
||||
this.gui_args = gui_args;
|
||||
this.dflt = dflt;
|
||||
this.dflt = Gfh_utl.Escape_html_as_bry(tmp_bfr, Bry_.new_u8(dflt_str), Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.N);
|
||||
}
|
||||
public void Load_by_i18n(String lang, String name, String help) {
|
||||
this.lang = lang;
|
||||
this.name = name;
|
||||
this.help = help;
|
||||
}
|
||||
public void Load_by_data(String ctx, String val, String date) {
|
||||
public void Load_by_data(Bry_bfr tmp_bfr, String ctx, String val_str, String date) {
|
||||
this.ctx = ctx;
|
||||
this.val = val;
|
||||
this.val = Gfh_utl.Escape_html_as_bry(tmp_bfr, Bry_.new_u8(val_str), Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.N);
|
||||
this.date = date;
|
||||
this.edited = true;
|
||||
if ( String_.Has(gui_args, "read"+"only=") || String_.Has(gui_args, "disabled=")
|
||||
@ -61,40 +63,38 @@ public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
|
||||
this.date = String_.Empty;
|
||||
this.edited = false;
|
||||
}
|
||||
public Gfobj_nde To_nde() {
|
||||
public Gfobj_nde To_nde(Bry_bfr tmp_bfr) {
|
||||
Gfobj_nde rv = Gfobj_nde.New();
|
||||
rv.Add_int("id", id);
|
||||
rv.Add_str("key", key);
|
||||
rv.Add_str("dflt", dflt);
|
||||
rv.Add_str("dflt_text", String_.Replace(dflt, "'", "'"));
|
||||
rv.Add_bry("dflt", dflt);
|
||||
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_bry("val", val);
|
||||
rv.Add_str("date", date);
|
||||
rv.Add_str("gui", gui_type);
|
||||
Bry_bfr bfr = Bry_bfr_.New();
|
||||
To_html(bfr, type_mgr);
|
||||
rv.Add_str("html", bfr.To_str_and_clear());
|
||||
To_html(tmp_bfr, type_mgr);
|
||||
rv.Add_str("html", tmp_bfr.To_str_and_clear());
|
||||
rv.Add_bool("edited", edited);
|
||||
return rv;
|
||||
}
|
||||
private void To_html(Bry_bfr bfr, Xocfg_type_mgr type_mgr) {
|
||||
new Xoedit_itm_html().Build_html(bfr, type_mgr, key, name, data_type, gui_type, gui_args, val);
|
||||
Xoedit_itm_html.Build_html(bfr, type_mgr, key, name, data_type, gui_type, gui_args, val);
|
||||
}
|
||||
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);
|
||||
else if (String_.Eq(k, "dflt")) bfr.Add_str_u8(dflt);
|
||||
else if (String_.Eq(k, "lang")) bfr.Add_str_u8(lang);
|
||||
else if (String_.Eq(k, "name")) bfr.Add_str_u8(name);
|
||||
else if (String_.Eq(k, "help")) bfr.Add_str_u8(help);
|
||||
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, "gui")) bfr.Add_str_u8(gui_type);
|
||||
else if (String_.Eq(k, "html")) To_html(bfr.Bfr(), type_mgr);
|
||||
if (String_.Eq(k, "id")) bfr.Add_int(id);
|
||||
else if (String_.Eq(k, "key")) bfr.Add_str_u8(key);
|
||||
else if (String_.Eq(k, "dflt")) bfr.Add_bry(dflt);
|
||||
else if (String_.Eq(k, "lang")) bfr.Add_str_u8(lang);
|
||||
else if (String_.Eq(k, "name")) bfr.Add_str_u8(name);
|
||||
else if (String_.Eq(k, "help")) bfr.Add_str_u8(help);
|
||||
else if (String_.Eq(k, "ctx")) bfr.Add_str_u8(ctx);
|
||||
else if (String_.Eq(k, "val")) bfr.Add_bry(val);
|
||||
else if (String_.Eq(k, "date")) bfr.Add_str_u8(date);
|
||||
else if (String_.Eq(k, "gui")) bfr.Add_str_u8(gui_type);
|
||||
else if (String_.Eq(k, "html")) To_html(bfr.Bfr(), type_mgr);
|
||||
return true;
|
||||
}
|
||||
public Mustache_doc_itm[] Mustache__subs(String k) {
|
||||
|
@ -19,28 +19,30 @@ package gplx.xowa.addons.apps.cfgs.specials.edits.objs; import gplx.*; import gp
|
||||
import gplx.xowa.addons.apps.cfgs.enums.*;
|
||||
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, String gui_type_key, String gui_args, String val) {
|
||||
public static void Build_html(Bry_bfr bfr, Xocfg_type_mgr type_mgr, String key, String name, String data_type, String gui_type_key, String gui_args, byte[] val) {
|
||||
// if gui_args exists, prepend space for html insertion; EX: "type='checkbox'{1}>" with "a=b" -> "type='checkbox' a='b'" x> "type='checkbox'a='b'"
|
||||
if (String_.Len_gt_0(gui_args)) gui_args = " " + gui_args;
|
||||
switch (Xoitm_gui_tid.To_uid(gui_type_key)) {
|
||||
case Xoitm_gui_tid.Tid__bool:
|
||||
bfr.Add_str_u8_fmt("<input id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__bool\" type=\"checkbox\"{1}{3}></input>", gui_type_key, gui_args, key, String_.Eq(val, "y") ? " checked=\"checked\"" : "");
|
||||
/*
|
||||
String span_args = "";
|
||||
if (String_.Has(gui_args, "disabled=\"disabled\""))
|
||||
span_args = " class=\"xocfg__bool__disabled\"";
|
||||
bfr.Add_str_u8_fmt("<label><input id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__bool\" type=\"checkbox\"{1}{3}></input><span{4}></span></label>", gui_type_key, gui_args, key, String_.Eq(val, "y") ? " checked=\"checked\"" : "", span_args);
|
||||
*/
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<input id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__bool\" type=\"checkbox\"{1}{3}></input>"
|
||||
, gui_type_key, gui_args, key, Bry_.Eq(val, Bool_.Y_bry) ? " checked=\"checked\"" : "");
|
||||
break;
|
||||
case Xoitm_gui_tid.Tid__int:
|
||||
bfr.Add_str_u8_fmt("<input id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__int\" type=\"text\"{1} value=\"{3}\"></input>", gui_type_key, gui_args, key, val);
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<input id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__int\" type=\"text\"{1} value=\"{3}\"></input>"
|
||||
, gui_type_key, gui_args, key, val);
|
||||
break;
|
||||
case Xoitm_gui_tid.Tid__str:
|
||||
bfr.Add_str_u8_fmt("<input id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__str\" type=\"text\"{1} value=\"{3}\"></input>", gui_type_key, gui_args, key, val);
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<input id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__str\" type=\"text\"{1} value=\"{3}\"></input>"
|
||||
, gui_type_key, gui_args, key, val);
|
||||
break;
|
||||
case Xoitm_gui_tid.Tid__memo:
|
||||
if (String_.Len_eq_0(gui_args)) gui_args = " rows=\"4\"";
|
||||
bfr.Add_str_u8_fmt("<textarea id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__memo\"{1}>{3}</textarea>", gui_type_key, gui_args, key, String_.Replace(val, "<", "<"));
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<textarea id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__memo\"{1}>{3}</textarea>"
|
||||
, gui_type_key, gui_args, key, val);
|
||||
break;
|
||||
case Xoitm_gui_tid.Tid__list:
|
||||
// get list of kvs by type
|
||||
@ -49,27 +51,32 @@ public class Xoedit_itm_html {
|
||||
if (String_.Len_eq_0(gui_args)) gui_args = "size=\"" + Int_.To_str(len) + "\"";
|
||||
|
||||
// build html
|
||||
bfr.Add_str_u8_fmt("<select id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__list\" {1}>\n", gui_type_key, gui_args, key);
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<select id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__list\" {1}>\n"
|
||||
, gui_type_key, gui_args, key);
|
||||
String val_str = String_.new_u8(val);
|
||||
for (int i = 0; i < len; i++) {
|
||||
Keyval kv = kvs_ary[i];
|
||||
String kv_key = kv.Key();
|
||||
String kv_val = kv.Val_to_str_or_null();
|
||||
bfr.Add_str_u8_fmt("<option value=\"{0}\"{2}>{1}</option>\n", kv_key, kv_val, String_.Eq(val, kv_key) ? " selected=\"selected\"" : "");
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<option value=\"{0}\"{2}>{1}</option>\n"
|
||||
, kv_key, kv_val, String_.Eq(val_str, kv_key) ? " selected=\"selected\"" : "");
|
||||
}
|
||||
bfr.Add_str_u8_fmt("</select>\n");
|
||||
break;
|
||||
case Xoitm_gui_tid.Tid__io_cmd:
|
||||
String[] lines = Xocfg_mgr.Parse_io_cmd(val);
|
||||
String[] lines = Xocfg_mgr.Parse_io_cmd(String_.new_u8(val));
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<input class=\"xocfg__io_cmd__exe__txt\" id=\"{2}-exe\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}-exe\" accesskey=\"d\" type=\"text\"{1} value=\"{3}\"></input>\n"
|
||||
+ "<button class=\"xocfg__io_cmd__exe__btn\" onclick='xowa_io_select(\"file\", \"{2}-exe\", \"Please select a file.\");'>...</button><br/>\n"
|
||||
, gui_type_key, gui_args, key, lines[0]);
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<input class=\"xocfg__io_cmd__arg__txt\" id=\"{2}-arg\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}-arg\" accesskey=\"d\" type=\"text\"{1} value=\"{3}\">\n"
|
||||
, gui_type_key, gui_args, key, String_.Replace(lines[1], "\"", """));
|
||||
, gui_type_key, gui_args, key, lines[1]);
|
||||
break;
|
||||
case Xoitm_gui_tid.Tid__gui_binding:
|
||||
String[] flds = Xoitm_gui_binding.To_gui(val);
|
||||
String[] flds = Xoitm_gui_binding.To_gui(String_.new_u8(val));
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<input class=\"xocfg__gui_binding__box__txt\" id=\"{2}-box\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}-box\" accesskey=\"d\" type=\"text\"{1} value=\"{3}\"></input>\n"
|
||||
, gui_type_key, gui_args, key, flds[0]);
|
||||
@ -78,7 +85,9 @@ public class Xoedit_itm_html {
|
||||
, gui_type_key, gui_args, key, flds[1]);
|
||||
break;
|
||||
case Xoitm_gui_tid.Tid__btn:
|
||||
bfr.Add_str_u8_fmt("<button id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" class=\"xocfg__btn\" {1}>{3}</button>", gui_type_key, gui_args, key, name);
|
||||
bfr.Add_str_u8_fmt
|
||||
( "<button id=\"{2}\" data-xocfg-key=\"{2}\" data-xocfg-gui=\"{0}\" class=\"xocfg__btn\" {1}>{3}</button>"
|
||||
, gui_type_key, gui_args, key, name);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -27,13 +27,13 @@ public class Xoedit_root implements Mustache_doc_itm {
|
||||
this.page_help = page_help;
|
||||
this.grps = grps;
|
||||
}
|
||||
public Gfobj_nde To_nde() {
|
||||
public Gfobj_nde To_nde(Bry_bfr tmp_bfr) {
|
||||
Gfobj_nde rv = Gfobj_nde.New();
|
||||
List_adp list = List_adp_.New();
|
||||
int len = grps.length;
|
||||
for (int i = 0; i < len; i++) {
|
||||
Xoedit_grp itm = grps[i];
|
||||
list.Add(itm.To_nde());
|
||||
list.Add(itm.To_nde(tmp_bfr));
|
||||
}
|
||||
rv.Add_str("page_help", page_help);
|
||||
rv.Add_ary("grps", new Gfobj_ary((Gfobj_nde[])list.To_ary_and_clear(Gfobj_nde.class)));
|
||||
|
@ -54,8 +54,9 @@ public class Xocfg_edit_loader {
|
||||
}
|
||||
|
||||
// load itms and i18n
|
||||
Load_itm_meta(itm_list);
|
||||
Load_itm_data(itm_list, ctx);
|
||||
Bry_bfr tmp_bfr = Bry_bfr_.New();
|
||||
Load_itm_meta(tmp_bfr, itm_list);
|
||||
Load_itm_data(tmp_bfr, itm_list, ctx);
|
||||
Load_i18n(grp_list, itm_list, lang);
|
||||
|
||||
Xoedit_nde page_nde = grp_list.Get_by_or_fail(grp_key);
|
||||
@ -146,7 +147,7 @@ public class Xocfg_edit_loader {
|
||||
}
|
||||
owner.Itms_((Xoedit_itm[])itms_list.To_ary_and_clear(Xoedit_itm.class));
|
||||
}
|
||||
private void Load_itm_meta(Xoedit_nde_hash itm_list) {
|
||||
private void Load_itm_meta(Bry_bfr tmp_bfr, Xoedit_nde_hash itm_list) {
|
||||
Xogui_nde_iter iter = Xogui_nde_iter.New_sql(itm_list);
|
||||
while (iter.Move_next()) {
|
||||
String sql = Db_sql_.Make_by_fmt(String_.Ary
|
||||
@ -168,11 +169,11 @@ public class Xocfg_edit_loader {
|
||||
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"));
|
||||
int gui_type = rdr.Read_int("itm_gui_type");
|
||||
edit_itm.Load_by_meta(rdr.Read_int("itm_scope_id"), rdr.Read_str("itm_data_type"), gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_tid.To_key(gui_type), rdr.Read_str("itm_gui_args"), dflt);
|
||||
edit_itm.Load_by_meta(tmp_bfr, rdr.Read_int("itm_scope_id"), rdr.Read_str("itm_data_type"), gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_tid.To_key(gui_type), rdr.Read_str("itm_gui_args"), dflt);
|
||||
}
|
||||
}
|
||||
}
|
||||
private void Load_itm_data(Xoedit_nde_hash itm_list, String... ctxs) {
|
||||
private void Load_itm_data(Bry_bfr tmp_bfr, Xoedit_nde_hash itm_list, String... ctxs) {
|
||||
Xoedit_nde_hash cur_regy = new Xoedit_nde_hash().Merge(itm_list);
|
||||
|
||||
// loop ctxs where later ctxs are more general defaults; EX: ["en.w", "en.*", "*.w", "app"]
|
||||
@ -197,7 +198,7 @@ public class Xocfg_edit_loader {
|
||||
Db_rdr rdr = db_usr.Conn().Stmt_sql(sql).Exec_select__rls_auto();
|
||||
while (rdr.Move_next()) {
|
||||
Xoedit_itm gui_itm = (Xoedit_itm)cur_regy.Get_by_or_fail(rdr.Read_str("itm_key"));
|
||||
gui_itm.Load_by_data(rdr.Read_str("itm_ctx"), rdr.Read_str("itm_val"), rdr.Read_str("itm_date"));
|
||||
gui_itm.Load_by_data(tmp_bfr, rdr.Read_str("itm_ctx"), rdr.Read_str("itm_val"), rdr.Read_str("itm_date"));
|
||||
cur_regy.Deleted__add(gui_itm);
|
||||
}
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ public class Xocfg_edit_svc {
|
||||
String key = args.Get_as_str("key");
|
||||
if (edit_loader == null) edit_loader = Xocfg_edit_loader.New(app);
|
||||
Xoedit_root root = edit_loader.Load_root(key, ctx, "en");
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.cfg_edit.load__recv", root.To_nde(Bry_bfr_.New()));
|
||||
app.Cfg().Set_str_app("xowa.app.cfg.recent_page", key);
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.cfg_edit.load__recv", root.To_nde());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user