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 870dd6df3..ef6209a62 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
@@ -17,8 +17,10 @@ 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.*;
public class Xocfg_mgr {
private final Xocfg_cache_mgr cache_mgr = new Xocfg_cache_mgr();
+ public Xocfg_type_mgr Type_mgr() {return type_mgr;} private final Xocfg_type_mgr type_mgr = new Xocfg_type_mgr();
public void Init_by_app(Xoa_app app) {
cache_mgr.Init_by_app // SECTION_EDIT
( gplx.xowa.addons.apps.cfgs.dbs.Xocfg_db_app.New_conn(app)
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_row.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_row.java
index 5c85dbf91..dd6fec89d 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_row.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_row.java
@@ -17,10 +17,10 @@ along with this program. If not, see .
*/
package gplx.xowa.addons.apps.cfgs.dbs.tbls; 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.dbs.*;
public class Xocfg_itm_row {
- public Xocfg_itm_row(int id, int scope_id, int db_type, int gui_type, String gui_args, String key, String dflt) {
+ public Xocfg_itm_row(int id, int scope_id, String data_type, int gui_type, String gui_args, String key, String dflt) {
this.id = id;
this.scope_id = scope_id;
- this.db_type = db_type;
+ this.data_type = data_type;
this.gui_type = gui_type;
this.gui_args = gui_args;
this.key = key;
@@ -28,7 +28,7 @@ public class Xocfg_itm_row {
}
public int Id() {return id;} private final int id;
public int Scope_id() {return scope_id;} private final int scope_id;
- public int Db_type() {return db_type;} private final int db_type;
+ public String Data_type() {return data_type;} private final String data_type;
public int Gui_type() {return gui_type;} private final int gui_type;
public String Gui_args() {return gui_args;} private final String gui_args;
public String Key() {return key;} private final String key;
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_tbl.java
index 79ba5306e..c4846cc67 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_tbl.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_tbl.java
@@ -19,7 +19,7 @@ package gplx.xowa.addons.apps.cfgs.dbs.tbls; import gplx.*; import gplx.xowa.*;
import gplx.dbs.*; import gplx.dbs.utls.*;
public class Xocfg_itm_tbl implements Db_tbl {
private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
- private final String fld__itm_id, fld__itm_key, fld__itm_scope_id, fld__itm_db_type, fld__itm_gui_type, fld__itm_gui_args, fld__itm_dflt;
+ private final String fld__itm_id, fld__itm_key, fld__itm_scope_id, fld__itm_data_type, fld__itm_gui_type, fld__itm_gui_args, fld__itm_dflt;
private final Db_conn conn;
public Xocfg_itm_tbl(Db_conn conn) {
this.conn = conn;
@@ -27,7 +27,7 @@ public class Xocfg_itm_tbl implements Db_tbl {
this.fld__itm_id = flds.Add_int_pkey("itm_id"); // EX: '2'
this.fld__itm_key = flds.Add_str("itm_key", 255); // EX: 'cfg_1'
this.fld__itm_scope_id = flds.Add_int("itm_scope_id"); // EX: '1'; ENUM: Xoitm_scope_tid
- this.fld__itm_db_type = flds.Add_int("itm_db_type"); // EX: '1'; ENUM: Type_adp_
+ this.fld__itm_data_type = flds.Add_str("itm_data_type", 255); // EX: '1'; ENUM: Type_adp_
this.fld__itm_gui_type = flds.Add_int("itm_gui_type"); // EX: '1'; ENUM: Xoitm_gui_tid
this.fld__itm_gui_args = flds.Add_str("itm_gui_args", 255); // EX: '1,40' (numeric); '255' (textbox); 'enum_name' (combo); etc..
this.fld__itm_dflt = flds.Add_str("itm_dflt", 4096); // EX: 'abc'
@@ -38,7 +38,7 @@ public class Xocfg_itm_tbl implements Db_tbl {
conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds
, Dbmeta_idx_itm.new_unique_by_tbl(tbl_name, fld__itm_key, fld__itm_key)));
}
- public void Upsert(int itm_id, int scope_id, int db_type, int gui_type, String gui_args, String itm_key, String itm_dflt) {
+ public void Upsert(int itm_id, int scope_id, String db_type, int gui_type, String gui_args, String itm_key, String itm_dflt) {
Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__itm_id), itm_id, itm_key, scope_id, db_type, gui_type, gui_args, itm_dflt);
}
public Xocfg_itm_row Select_by_key_or_null(String key) {
@@ -50,7 +50,7 @@ public class Xocfg_itm_tbl implements Db_tbl {
return new Xocfg_itm_row
( rdr.Read_int(fld__itm_id)
, rdr.Read_int(fld__itm_scope_id)
- , rdr.Read_int(fld__itm_db_type)
+ , rdr.Read_str(fld__itm_data_type)
, rdr.Read_int(fld__itm_gui_type)
, rdr.Read_str(fld__itm_gui_args)
, rdr.Read_str(fld__itm_key)
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 0c310637c..a78484691 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
@@ -47,6 +47,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_.Has_at_bgn(db_type, "list:"))
+ return Xoitm_gui_tid.Str__select;
else
return Xoitm_gui_tid.Str__textbox;
}
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_grp.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_grp.java
index 349a45bc6..8ccecc336 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_grp.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_grp.java
@@ -19,32 +19,22 @@ package gplx.xowa.addons.apps.cfgs.specials.edits.objs; import gplx.*; import gp
import gplx.langs.mustaches.*;
import gplx.core.gfobjs.*;
public class Xoedit_grp implements Xoedit_nde, Mustache_doc_itm {
- public Xoedit_grp(int id, int sort, String key) {
+ private String lang, name, help;
+ public Xoedit_grp(int id, String key, int sort) {
this.id = id;
- this.sort = sort;
this.key = key;
+ this.sort = sort;
}
- public int Id() {return id;} private final int id;
- public int Sort() {return sort;} private final int sort;
-
- public String Key() {return key;} private String key;
-
- 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 int Id() {return id;} private final int id;
+ public String Key() {return key;} private final String key;
+ public int Sort() {return sort;} private final int sort;
public Xoedit_itm[] Itms() {return itms;} private Xoedit_itm[] itms = new Xoedit_itm[0];
+ public void Itms_(Xoedit_itm[] v) {this.itms = v;}
public void Load_by_i18n(String lang, String name, String help) {
this.lang = lang;
this.name = name;
this.help = help;
}
-
- public void Grps__add(Xoedit_grp grp) {
- }
- public void Itms_(Xoedit_itm[] v) {
- this.itms = v;
- }
public Gfobj_nde To_nde() {
Gfobj_nde rv = Gfobj_nde.New();
rv.Add_int("id", id);
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 9b7923821..610a02f75 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,34 +18,25 @@ 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.*;
public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
- public Xoedit_itm(int id, int sort, String key) {
+ private int gui_type;
+ private boolean edited;
+ private String data_type, gui_args, dflt, lang, name, help, ctx, val, date;
+ 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;
this.id = id;
- this.sort = sort;
this.key = key;
+ this.sort = sort;
}
- public int Id() {return id;} private final int id;
- public int Sort() {return sort;} private final int sort;
-
- public int Scope_id() {return scope_id;} private int scope_id;
- public int Gui_type() {return gui_type;} private int gui_type;
- 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;
- public String Help() {return help;} private String help;
-
- public String Ctx() {return ctx;} private String ctx;
- public String Val() {return val;} private String val;
- public String Date() {return date;} private String date;
- public void Load_by_meta(String key, int scope_id, int gui_type, String gui_args, String dflt) {
- this.scope_id = scope_id;
+ public int Id() {return id;} private final int id;
+ public String Key() {return key;} private final String key;
+ 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) {
+ this.data_type = data_type;
this.gui_type = gui_type;
this.gui_args = gui_args;
- this.key = key;
this.dflt = dflt;
}
public void Load_by_i18n(String lang, String name, String help) {
@@ -77,12 +68,12 @@ public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
rv.Add_str("val", val);
rv.Add_str("date", date);
Bry_bfr bfr = Bry_bfr_.New();
- To_html(bfr);
+ To_html(bfr, type_mgr);
rv.Add_str("html", bfr.To_str_and_clear());
return rv;
}
- private void To_html(Bry_bfr bfr) {
- new Xoedit_itm_html().Build_html(bfr, key, name, gui_type, gui_args, val);
+ 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);
}
public boolean Mustache__write(String k, Mustache_bfr bfr) {
if (String_.Eq(k, "id")) bfr.Add_int(id);
@@ -94,7 +85,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, "html")) To_html(bfr.Bfr());
+ else if (String_.Eq(k, "html")) To_html(bfr.Bfr(), type_mgr);
return true;
}
public static String Ctx__app = "app";
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 12dd85ad4..ff51578fb 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,8 +17,9 @@ 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.*;
public class Xoedit_itm_html {
- public void Build_html(Bry_bfr bfr, String key, String name, int gui_type, String gui_args, String data) {
+ 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\"" : "");
@@ -33,15 +34,21 @@ public class Xoedit_itm_html {
bfr.Add_str_u8_fmt("", key, data);
break;
case Xoitm_gui_tid.Tid__select:
- bfr.Add_str_u8_fmt("