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 6470a2e0b..992c47026 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
@@ -16,46 +16,59 @@ 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.*;
-public class Xoitm_gui_tid { // SERIALIZED
- 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__memo = "memo"
- , Str__io_file = "io.file"
- , Str__io_dir = "io.dir"
- , Str__io_process = "io.process"
- , Str__button = "button"
- , Str__label = "label"
- ;
+public class Xoitm_gui_tid {
+ public Xoitm_gui_tid(int uid, String key) {
+ this.uid = uid;
+ this.key = key;
+ }
+ public int Uid() {return uid;} private final int uid;
+ public String Key() {return key;} private final String key;
- public static int To_tid(String str) {
- if (String_.Eq(str, Str__checkbox)) return Tid__checkbox;
- 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__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);
+ public static final int // SERIALIZED
+ Tid__bool = 0
+ , Tid__str = 1
+ , Tid__int = 2
+ , Tid__memo = 3
+ , Tid__list = 4
+ , Tid__io_cmd = 5
+ , Tid__io_file = 6
+ , Tid__io_dir = 7
+ , Tid__btn = 8
+ , Tid__label = 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];
+ public static final Xoitm_gui_tid
+ Itm__bool = New(Tid__bool , "bool")
+ , Itm__str = New(Tid__str , "string")
+ , Itm__int = New(Tid__int , "int")
+ , Itm__memo = New(Tid__memo , "memo")
+ , Itm__list = New(Tid__list , "select")
+ , Itm__io_cmd = New(Tid__io_cmd , "io.cmd")
+ , 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")
+ ;
+ private static Xoitm_gui_tid New(int uid, String key) {
+ Xoitm_gui_tid rv = new Xoitm_gui_tid(uid, key);
+ to_uid_hash.Add(key, rv);
+ to_key_ary[uid] = rv;
+ return rv;
+ }
+ public static int To_uid(String str) {
+ Xoitm_gui_tid rv = (Xoitm_gui_tid)to_uid_hash.Get_by_or_fail(str);
+ return rv.uid;
+ }
+ public static String To_key(int uid) {
+ return to_key_ary[uid].key;
}
public static String Infer_gui_type(String db_type) {
- if (String_.Eq(db_type, "bool"))
- return Xoitm_gui_tid.Str__checkbox;
- else if (String_.Eq(db_type, "int"))
- return Xoitm_gui_tid.Str__numeric;
- 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
- return Xoitm_gui_tid.Str__textbox;
+ if (String_.Eq(db_type, "bool")) return Itm__bool.key;
+ 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_.Has_at_bgn(db_type, "list:")) return Itm__list.key;
+ else return Itm__str.key;
}
}
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java
index 3b79a6f83..f66b796c3 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java
@@ -53,7 +53,7 @@ class Xocfg_cache_mgr__fxt {
public Xocfg_cache_sub_mock Sub() {return sub;} private Xocfg_cache_sub_mock sub = new Xocfg_cache_sub_mock();
public void Init__db_add(String ctx, String key, Object val) {
Xocfg_maint_svc.Create_grp(mgr.Db_app(), id++, "test_grp", "", "", "");
- Xocfg_maint_svc.Create_itm(mgr.Db_app(), id++, key, "test_grp", "", "", "wiki", "string", "dflt", "textbox", "");
+ Xocfg_maint_svc.Create_itm(mgr.Db_app(), id++, key, "test_grp", "", "", "wiki", "string", "dflt", "string", "");
mgr.Db_usr().Set_str(ctx, key, Object_.Xto_str_strict_or_null(val));
}
public void Init__sub(String ctx, String key, String evt) {
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 f6afc7af3..7fbeb42ed 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
@@ -20,7 +20,7 @@ import gplx.langs.mustaches.*;
import gplx.core.gfobjs.*; import gplx.langs.jsons.*;
import gplx.xowa.addons.apps.cfgs.mgrs.types.*;
public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
- private int gui_type;
+ private String gui_type;
private boolean edited;
private String data_type, gui_args, dflt, lang, name, ctx, val, date;
private Xocfg_type_mgr type_mgr;
@@ -35,7 +35,7 @@ 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, int gui_type, String gui_args, String dflt) {
+ public void Load_by_meta(int scope_id, String data_type, String gui_type, String gui_args, String dflt) {
this.data_type = data_type;
this.gui_type = gui_type;
this.gui_args = gui_args;
@@ -69,6 +69,7 @@ public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
rv.Add_str("ctx", ctx);
rv.Add_str("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());
@@ -88,6 +89,7 @@ public class Xoedit_itm implements Xoedit_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, "gui")) bfr.Add_str_u8(gui_type);
else if (String_.Eq(k, "html")) To_html(bfr.Bfr(), type_mgr);
return true;
}
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 dc6666bc3..856980aef 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
@@ -19,42 +19,43 @@ 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, 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\"" : "");
+ 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 data) {
+ switch (Xoitm_gui_tid.To_uid(gui_type_key)) {
+ case Xoitm_gui_tid.Tid__bool:
+ bfr.Add_str_u8_fmt("", gui_type_key, key, String_.Eq(data, "y") ? " checked=\"checked\"" : "");
break;
- case Xoitm_gui_tid.Tid__numeric:
- bfr.Add_str_u8_fmt("", key, data);
+ case Xoitm_gui_tid.Tid__int:
+ bfr.Add_str_u8_fmt("", gui_type_key, key, data);
break;
- case Xoitm_gui_tid.Tid__textbox:
- bfr.Add_str_u8_fmt("", key, data);
+ case Xoitm_gui_tid.Tid__str:
+ bfr.Add_str_u8_fmt("", gui_type_key, key, data);
break;
case Xoitm_gui_tid.Tid__memo:
- bfr.Add_str_u8_fmt("", key, String_.Replace(data, "<", "<"));
+ bfr.Add_str_u8_fmt("", gui_type_key, key, String_.Replace(data, "<", "<"));
break;
- case Xoitm_gui_tid.Tid__select:
+ case Xoitm_gui_tid.Tid__list:
Keyval[] kvs_ary = type_mgr.Lists__get(data_type);
int len = kvs_ary.length;
- bfr.Add_str_u8_fmt("\n");
break;
- case Xoitm_gui_tid.Tid__io_process:
+ case Xoitm_gui_tid.Tid__io_cmd:
String[] fields = String_.Split(data, "\n");
- String exe = fields.length > 1 ? fields[0] : "exe";
- String arg = fields.length > 2 ? fields[1] : "args";
+ String exe = fields.length > 0 && !String_.Eq(fields[0], "") ? fields[0] : "";
+ String arg = fields.length > 1 ? fields[1] : "";
bfr.Add_str_u8_fmt
- ( "\n"
- + "
\n"
- , key + "-exe", exe);
+ ( "\n"
+ + "
\n"
+ , gui_type_key, key, exe);
bfr.Add_str_u8_fmt
- ( "\n", key + "-arg", arg);
+ ( "\n"
+ , gui_type_key, key, arg);
break;
default:
break;
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 60fe58fb5..811b18412 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
@@ -165,7 +165,8 @@ public class Xocfg_edit_loader {
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);
+ 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);
}
}
}
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java
index 1891b37f3..cb6d3d444 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java
@@ -65,7 +65,7 @@ public class Xocfg_maint_svc {
// insert itm_meta
int grp_id = db_app.Tbl__grp().Select_id_by_key_or_fail(owner);
int scope_id = Xoitm_scope_tid.To_int(scope);
- int gui_type_id = Xoitm_gui_tid.To_tid(gui_type);
+ int gui_type_id = Xoitm_gui_tid.To_uid(gui_type);
db_app.Tbl__itm().Upsert(itm_id, scope_id, db_type, gui_type_id, gui_args, key, dflt);
// insert grp_map