Cfg: Standardize Xoitm_gui_tid; add support for io.cmd

v3.3.4
gnosygnu 8 years ago
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/>.
*/
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;
}
}

@ -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) {

@ -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;
}

@ -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("<input id=\"{0}\" data-xocfg=\"0\" type=\"checkbox\" accesskey=\"d\" class=\"xocfg_checkbox\"{1}></input>", 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("<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;
case Xoitm_gui_tid.Tid__numeric:
bfr.Add_str_u8_fmt("<input id=\"{0}\" data-xocfg=\"0\" type=\"text\" accesskey=\"d\" class=\"xocfg_numeric\" value=\"{1}\"></input>", key, data);
case Xoitm_gui_tid.Tid__int:
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;
case Xoitm_gui_tid.Tid__textbox:
bfr.Add_str_u8_fmt("<input id=\"{0}\" data-xocfg=\"0\" type=\"text\" accesskey=\"d\" class=\"xocfg_textbox\" value=\"{1}\"></input>", key, data);
case Xoitm_gui_tid.Tid__str:
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;
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, "<", "&lt;"));
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, "<", "&lt;"));
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("<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++) {
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>", 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;
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
( "<input class=\"xocfg__io_process__exe__txt\" id=\"{0}\" data-xocfg=\"0\" type=\"text\" accesskey=\"d\" value=\"{1}\"></input>\n"
+ "<button class=\"xocfg__io_process__exe__btn\" onclick='xowa_io_select(\"file\", \"{0}\", \"Please select a file.\");'>...</button><br/>\n"
, key + "-exe", exe);
( "<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_cmd__exe__btn\" onclick='xowa_io_select(\"file\", \"{1}-exe\", \"Please select a file.\");'>...</button><br/>\n"
, gui_type_key, key, exe);
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;
default:
break;

@ -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);
}
}
}

@ -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

Loading…
Cancel
Save