mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Cfg: Standardize Xoitm_gui_tid; add support for io.cmd
This commit is contained in:
parent
ce36e1e76a
commit
ad5d608ba5
@ -16,46 +16,59 @@ You should have received a copy of the GNU Affero General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.*;
|
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 class Xoitm_gui_tid {
|
||||||
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 Xoitm_gui_tid(int uid, String key) {
|
||||||
public static final String
|
this.uid = uid;
|
||||||
Str__checkbox = "checkbox"
|
this.key = key;
|
||||||
, Str__numeric = "numeric"
|
}
|
||||||
, Str__select = "select"
|
public int Uid() {return uid;} private final int uid;
|
||||||
, Str__textbox = "textbox"
|
public String Key() {return key;} private final String key;
|
||||||
, 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 static int To_tid(String str) {
|
public static final int // SERIALIZED
|
||||||
if (String_.Eq(str, Str__checkbox)) return Tid__checkbox;
|
Tid__bool = 0
|
||||||
else if (String_.Eq(str, Str__numeric)) return Tid__numeric;
|
, Tid__str = 1
|
||||||
else if (String_.Eq(str, Str__select)) return Tid__select;
|
, Tid__int = 2
|
||||||
else if (String_.Eq(str, Str__textbox)) return Tid__textbox;
|
, Tid__memo = 3
|
||||||
else if (String_.Eq(str, Str__memo)) return Tid__memo;
|
, Tid__list = 4
|
||||||
else if (String_.Eq(str, Str__io_file)) return Tid__io_file;
|
, Tid__io_cmd = 5
|
||||||
else if (String_.Eq(str, Str__io_dir)) return Tid__io_dir;
|
, Tid__io_file = 6
|
||||||
else if (String_.Eq(str, Str__io_process)) return Tid__io_process;
|
, Tid__io_dir = 7
|
||||||
else if (String_.Eq(str, Str__button)) return Tid__button;
|
, Tid__btn = 8
|
||||||
else if (String_.Eq(str, Str__label)) return Tid__label;
|
, Tid__label = 9
|
||||||
else throw Err_.new_unhandled_default(str);
|
;
|
||||||
|
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) {
|
public static String Infer_gui_type(String db_type) {
|
||||||
if (String_.Eq(db_type, "bool"))
|
if (String_.Eq(db_type, "bool")) return Itm__bool.key;
|
||||||
return Xoitm_gui_tid.Str__checkbox;
|
else if (String_.Eq(db_type, "int")) return Itm__int.key;
|
||||||
else if (String_.Eq(db_type, "int"))
|
else if (String_.Eq(db_type, "memo")) return Itm__memo.key;
|
||||||
return Xoitm_gui_tid.Str__numeric;
|
else if (String_.Eq(db_type, "io.cmd")) return Itm__io_cmd.key;
|
||||||
else if (String_.Eq(db_type, "memo"))
|
else if (String_.Has_at_bgn(db_type, "list:")) return Itm__list.key;
|
||||||
return Xoitm_gui_tid.Str__memo;
|
else return Itm__str.key;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 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) {
|
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_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));
|
mgr.Db_usr().Set_str(ctx, key, Object_.Xto_str_strict_or_null(val));
|
||||||
}
|
}
|
||||||
public void Init__sub(String ctx, String key, String evt) {
|
public void Init__sub(String ctx, String key, String evt) {
|
||||||
|
@ -20,7 +20,7 @@ import gplx.langs.mustaches.*;
|
|||||||
import gplx.core.gfobjs.*; import gplx.langs.jsons.*;
|
import gplx.core.gfobjs.*; import gplx.langs.jsons.*;
|
||||||
import gplx.xowa.addons.apps.cfgs.mgrs.types.*;
|
import gplx.xowa.addons.apps.cfgs.mgrs.types.*;
|
||||||
public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
|
public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
|
||||||
private int gui_type;
|
private String gui_type;
|
||||||
private boolean edited;
|
private boolean edited;
|
||||||
private String data_type, gui_args, dflt, lang, name, ctx, val, date;
|
private String data_type, gui_args, dflt, lang, name, ctx, val, date;
|
||||||
private Xocfg_type_mgr type_mgr;
|
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 String Help() {return help;} private String help;
|
||||||
|
|
||||||
public int Sort() {return sort;} private final int sort;
|
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.data_type = data_type;
|
||||||
this.gui_type = gui_type;
|
this.gui_type = gui_type;
|
||||||
this.gui_args = gui_args;
|
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("ctx", ctx);
|
||||||
rv.Add_str("val", val);
|
rv.Add_str("val", val);
|
||||||
rv.Add_str("date", date);
|
rv.Add_str("date", date);
|
||||||
|
rv.Add_str("gui", gui_type);
|
||||||
Bry_bfr bfr = Bry_bfr_.New();
|
Bry_bfr bfr = Bry_bfr_.New();
|
||||||
To_html(bfr, type_mgr);
|
To_html(bfr, type_mgr);
|
||||||
rv.Add_str("html", bfr.To_str_and_clear());
|
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, "ctx")) bfr.Add_str_u8(ctx);
|
||||||
else if (String_.Eq(k, "val")) bfr.Add_str_u8(val);
|
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, "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);
|
else if (String_.Eq(k, "html")) To_html(bfr.Bfr(), type_mgr);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -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.enums.*;
|
||||||
import gplx.xowa.addons.apps.cfgs.mgrs.types.*;
|
import gplx.xowa.addons.apps.cfgs.mgrs.types.*;
|
||||||
public class Xoedit_itm_html {
|
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) {
|
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 (gui_type) {
|
switch (Xoitm_gui_tid.To_uid(gui_type_key)) {
|
||||||
case Xoitm_gui_tid.Tid__checkbox:
|
case Xoitm_gui_tid.Tid__bool:
|
||||||
bfr.Add_str_u8_fmt("<input id=\"{0}\" data-xocfg=\"0\" type=\"checkbox\" accesskey=\"d\" class=\"xocfg_checkbox\"{1}></input>", key, String_.Eq(data, "y") ? " checked=\"checked\"" : "");
|
bfr.Add_str_u8_fmt("<input id=\"{1}\" data-xocfg-key=\"{1}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__bool\" type=\"checkbox\"{2}></input>", gui_type_key, key, String_.Eq(data, "y") ? " checked=\"checked\"" : "");
|
||||||
break;
|
break;
|
||||||
case Xoitm_gui_tid.Tid__numeric:
|
case Xoitm_gui_tid.Tid__int:
|
||||||
bfr.Add_str_u8_fmt("<input id=\"{0}\" data-xocfg=\"0\" type=\"text\" accesskey=\"d\" class=\"xocfg_numeric\" value=\"{1}\"></input>", key, data);
|
bfr.Add_str_u8_fmt("<input id=\"{1}\" data-xocfg-key=\"{1}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__int\" type=\"text\" value=\"{2}\"></input>", gui_type_key, key, data);
|
||||||
break;
|
break;
|
||||||
case Xoitm_gui_tid.Tid__textbox:
|
case Xoitm_gui_tid.Tid__str:
|
||||||
bfr.Add_str_u8_fmt("<input id=\"{0}\" data-xocfg=\"0\" type=\"text\" accesskey=\"d\" class=\"xocfg_textbox\" value=\"{1}\"></input>", key, data);
|
bfr.Add_str_u8_fmt("<input id=\"{1}\" data-xocfg-key=\"{1}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__str\" type=\"text\" value=\"{2}\"></input>", gui_type_key, key, data);
|
||||||
break;
|
break;
|
||||||
case Xoitm_gui_tid.Tid__memo:
|
case Xoitm_gui_tid.Tid__memo:
|
||||||
bfr.Add_str_u8_fmt("<textarea id=\"{0}\" data-xocfg=\"0\" type=\"text\" accesskey=\"d\" class=\"xocfg_memo\" rows=\"4\">{1}</textarea>", key, String_.Replace(data, "<", "<"));
|
bfr.Add_str_u8_fmt("<textarea id=\"{1}\" data-xocfg-key=\"{1}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__memo\" rows=\"4\">{2}</textarea>", gui_type_key, key, String_.Replace(data, "<", "<"));
|
||||||
break;
|
break;
|
||||||
case Xoitm_gui_tid.Tid__select:
|
case Xoitm_gui_tid.Tid__list:
|
||||||
Keyval[] kvs_ary = type_mgr.Lists__get(data_type);
|
Keyval[] kvs_ary = type_mgr.Lists__get(data_type);
|
||||||
int len = kvs_ary.length;
|
int len = kvs_ary.length;
|
||||||
bfr.Add_str_u8_fmt("<select id=\"{0}\" data-xocfg=\"0\" type=\"text\" accesskey=\"d\" class=\"xocfg_select\" size=\"{1}\">", key, len);
|
bfr.Add_str_u8_fmt("<select id=\"{1}\" data-xocfg-key=\"{1}\" data-xocfg-gui=\"{0}\" accesskey=\"d\" class=\"xocfg__list\" type=\"text\" size=\"{2}\">\n", gui_type_key, key, len);
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
Keyval kv = kvs_ary[i];
|
Keyval kv = kvs_ary[i];
|
||||||
String kv_key = kv.Key();
|
String kv_key = kv.Key();
|
||||||
String kv_val = kv.Val_to_str_or_null();
|
String kv_val = kv.Val_to_str_or_null();
|
||||||
bfr.Add_str_u8_fmt("<option value=\"{0}\"{2}>{1}</option>", kv_key, kv_val, String_.Eq(data, kv_key) ? " selected=\"selected\"" : "");
|
bfr.Add_str_u8_fmt("<option value=\"{0}\"{2}>{1}</option>\n", kv_key, kv_val, String_.Eq(data, kv_key) ? " selected=\"selected\"" : "");
|
||||||
}
|
}
|
||||||
bfr.Add_str_u8_fmt("</select>");
|
bfr.Add_str_u8_fmt("</select>\n");
|
||||||
break;
|
break;
|
||||||
case Xoitm_gui_tid.Tid__io_process:
|
case Xoitm_gui_tid.Tid__io_cmd:
|
||||||
String[] fields = String_.Split(data, "\n");
|
String[] fields = String_.Split(data, "\n");
|
||||||
String exe = fields.length > 1 ? fields[0] : "exe";
|
String exe = fields.length > 0 && !String_.Eq(fields[0], "") ? fields[0] : "";
|
||||||
String arg = fields.length > 2 ? fields[1] : "args";
|
String arg = fields.length > 1 ? fields[1] : "";
|
||||||
bfr.Add_str_u8_fmt
|
bfr.Add_str_u8_fmt
|
||||||
( "<input class=\"xocfg__io_process__exe__txt\" id=\"{0}\" data-xocfg=\"0\" type=\"text\" accesskey=\"d\" value=\"{1}\"></input>\n"
|
( "<input class=\"xocfg__io_cmd__exe__txt\" id=\"{1}-exe\" data-xocfg-key=\"{1}\" data-xocfg-gui=\"{0}-exe\" accesskey=\"d\" type=\"text\" value=\"{2}\"></input>\n"
|
||||||
+ "<button class=\"xocfg__io_process__exe__btn\" onclick='xowa_io_select(\"file\", \"{0}\", \"Please select a file.\");'>...</button><br/>\n"
|
+ "<button class=\"xocfg__io_cmd__exe__btn\" onclick='xowa_io_select(\"file\", \"{1}-exe\", \"Please select a file.\");'>...</button><br/>\n"
|
||||||
, key + "-exe", exe);
|
, gui_type_key, key, exe);
|
||||||
bfr.Add_str_u8_fmt
|
bfr.Add_str_u8_fmt
|
||||||
( "<input class=\"xocfg__io_process__arg__txt\" id=\"{0}\" data-xocfg=\"0\" type=\"text\" accesskey=\"d\" value='{1}'>\n", key + "-arg", arg);
|
( "<input class=\"xocfg__io_cmd__arg__txt\" id=\"{1}-arg\" data-xocfg-key=\"{1}\" data-xocfg-gui=\"{0}-arg\" accesskey=\"d\" type=\"text\" value='{2}'>\n"
|
||||||
|
, gui_type_key, key, arg);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -165,7 +165,8 @@ public class Xocfg_edit_loader {
|
|||||||
String key = rdr.Read_str("itm_key");
|
String key = rdr.Read_str("itm_key");
|
||||||
Xoedit_itm edit_itm = (Xoedit_itm)itm_list.Get_by_or_fail(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"));
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ public class Xocfg_maint_svc {
|
|||||||
// insert itm_meta
|
// insert itm_meta
|
||||||
int grp_id = db_app.Tbl__grp().Select_id_by_key_or_fail(owner);
|
int grp_id = db_app.Tbl__grp().Select_id_by_key_or_fail(owner);
|
||||||
int scope_id = Xoitm_scope_tid.To_int(scope);
|
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);
|
db_app.Tbl__itm().Upsert(itm_id, scope_id, db_type, gui_type_id, gui_args, key, dflt);
|
||||||
|
|
||||||
// insert grp_map
|
// insert grp_map
|
||||||
|
Loading…
Reference in New Issue
Block a user