mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Res: Add resources from xowa_app_windows_64_v4.5.26.1810
This commit is contained in:
203
res/bin/any/xowa/addon/app/cfg/edit/bin/xo.cfg_edit.css
Normal file
203
res/bin/any/xowa/addon/app/cfg/edit/bin/xo.cfg_edit.css
Normal file
@@ -0,0 +1,203 @@
|
||||
/*----------------------------------
|
||||
user agent stylesheet overrides
|
||||
----------------------------------*/
|
||||
input, select, textarea {
|
||||
/* remove 3d border; also, use softer color */
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
input[type="text"] {
|
||||
/* add a little padding else text will be too close to borders */
|
||||
padding: 2px;
|
||||
}
|
||||
select{
|
||||
/* better vertical alignment (see Gui- Shortcuts) */
|
||||
box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box;
|
||||
}
|
||||
|
||||
/*----------------------------------
|
||||
page-level
|
||||
----------------------------------*/
|
||||
#xocfg_body {
|
||||
/* use entire width */
|
||||
width:100%;
|
||||
|
||||
/* auto-center */
|
||||
margin:0 auto;
|
||||
|
||||
/* reset line-height; mw-body-content sets line-height to 1.6 which throws off vertical centering */
|
||||
line-height: initial;
|
||||
}
|
||||
#xocfg_err {
|
||||
color:red;
|
||||
/* add v-space to give space for nav_select */
|
||||
margin: 10px 0px 10px;
|
||||
}
|
||||
#xocfg_nav_select {
|
||||
/* 28px to offset for help.toggle_all */
|
||||
width: calc(100% - 28px);
|
||||
}
|
||||
#xocfg_page_help {
|
||||
/* use same margin-top as h2 to symmetrically align vertically between dropdown above and h2 below */
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/*----------------------------------
|
||||
help row: note that this overrides the xohelp.css
|
||||
----------------------------------*/
|
||||
.xohelp_div {
|
||||
/*
|
||||
remove all borders except bottom for aesthetic reasons
|
||||
*/
|
||||
border: 0px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.xohelp_msg {
|
||||
/*
|
||||
add bottom-spacer to center vertically
|
||||
*/
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
/*----------------------------------
|
||||
cfg row
|
||||
----------------------------------*/
|
||||
.xoimg_btn_x16 {
|
||||
/*
|
||||
remove margins which only exist because other pages do not correct "line-height:1.6" and use manual-pixel nudging
|
||||
note that this overrides the xocss.css
|
||||
*/
|
||||
margin: initial;
|
||||
}
|
||||
|
||||
.xocfg_row {
|
||||
/* take up 100% */
|
||||
width: 100%;
|
||||
|
||||
/* add some v-space between rows */
|
||||
margin: 2px 0px 2px;
|
||||
|
||||
/* add bottom border */
|
||||
border-bottom: 1px solid rgb(230,230,230);
|
||||
|
||||
/* add padding to give space for bottom border */
|
||||
padding: 0px 0px 4px;
|
||||
}
|
||||
.xocfg_itm_help {}
|
||||
.xocfg_itm_name {
|
||||
/* set width; will be used by data below */
|
||||
width: 120px; /* DRD.narrow */
|
||||
|
||||
/* add margins to separate from buttons on either side */
|
||||
margin: 0px 8px 0px 8px;
|
||||
|
||||
/* make bold; align-right*/
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
}
|
||||
.xocfg_itm_delete {
|
||||
/* add right margin to give space from data */
|
||||
margin: 0px 4px 0px 0px;
|
||||
}
|
||||
.xocfg_itm_hide {
|
||||
/* marker class to hide delete button */
|
||||
visibility: hidden;
|
||||
}
|
||||
.xocfg_itm_data {
|
||||
/* set width to use rest of page; note +40 for two buttons */
|
||||
width: calc(100% - 200px); /* DRD.narrow */
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.xocfg_itm_name {
|
||||
/* set width; will be used by data below */
|
||||
width: 220px; /* DRD.narrow */
|
||||
}
|
||||
.xocfg_itm_data {
|
||||
/* set width to use rest of page; note +40 for two buttons */
|
||||
width: calc(100% - 300px); /* DRD.narrow */
|
||||
}
|
||||
}
|
||||
/*----------------------------------
|
||||
data
|
||||
----------------------------------*/
|
||||
.xocfg_data__str {
|
||||
width: 100%;
|
||||
}
|
||||
.xocfg_data__int {
|
||||
width: 75px;
|
||||
|
||||
text-align: right;
|
||||
}
|
||||
.xocfg_data__list {
|
||||
width: 200px;
|
||||
}
|
||||
.xocfg_data__memo {
|
||||
width: 100%;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.xocfg_data__str {
|
||||
width: 40%;
|
||||
}
|
||||
.xocfg_data__memo {
|
||||
width: 40%;
|
||||
}
|
||||
}
|
||||
|
||||
.xocfg_data__io_cmd__exe__txt {
|
||||
width: 400px;
|
||||
/* add space to bottom to separate from arg_box */
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.xocfg_data__io_cmd__arg__txt {
|
||||
width: 400px;
|
||||
}
|
||||
.xocfg_data__io_cmd__exe__btn {}
|
||||
|
||||
.xocfg_data__gui_binding__box {
|
||||
width: 120px;
|
||||
/* add padding to make it same size as nearby text box */
|
||||
padding: 1px;
|
||||
}
|
||||
.xocfg_data__gui_binding__ipt {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.xocfg_data__readonly {
|
||||
background-color:#F9F9F9;
|
||||
}
|
||||
|
||||
/*----------------------------------
|
||||
xocfg_pulse effect for confirm icon
|
||||
----------------------------------*/
|
||||
.xocfg_pulse {
|
||||
display: block;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 0 rgba(0, 128, 0, 0.8);
|
||||
animation: xocfg_pulse 2s;
|
||||
}
|
||||
@-webkit-keyframes xocfg_pulse {
|
||||
0% {
|
||||
-webkit-box-shadow: 0 0 0 0 rgba(0, 128, 0, 0.8);
|
||||
}
|
||||
70% {
|
||||
-webkit-box-shadow: 0 0 0 2px rgba(0, 128, 0, 0);
|
||||
}
|
||||
100% {
|
||||
-webkit-box-shadow: 0 0 0 0 rgba(0, 128, 0, 0);
|
||||
}
|
||||
}
|
||||
@keyframes xocfg_pulse {
|
||||
0% {
|
||||
-moz-box-shadow: 0 0 0 0 rgba(0, 128, 0, 0.8);
|
||||
box-shadow: 0 0 0 0 rgba(0, 128, 0, 0.4);
|
||||
}
|
||||
70% {
|
||||
-moz-box-shadow: 0 0 0 2px rgba(0, 128, 0, 0);
|
||||
box-shadow: 0 0 0 2px rgba(0, 128, 0, 0);
|
||||
}
|
||||
100% {
|
||||
-moz-box-shadow: 0 0 0 0 rgba(0, 128, 0, 0);
|
||||
box-shadow: 0 0 0 0 rgba(0, 128, 0, 0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<div id='cfg_grps'>
|
||||
<div>
|
||||
<p id='page_help_para'>{{{page_help}}}</p>
|
||||
</div>
|
||||
{{#grps}}
|
||||
<h2>{{{name}}}</h2>
|
||||
|
||||
{{#itms}}
|
||||
<div class="xocfg_row flex_div">
|
||||
<div class='xocfg_itm_help'>
|
||||
<span class='xoimg_btn_x16 xoimg_help_tip' href='javascript:void(0)' onclick='return xo.help.toggle("{{key}}")' title='view more info'> </span>
|
||||
</div>
|
||||
<div id='{{key}}__name' class='xocfg_itm_name'>{{{name}}}</div>
|
||||
<div id='{{key}}__undo' data-xocfg-type='{{type}}' class='xocfg_itm_delete{{^edited}} xocfg_itm_hide{{/edited}}'>
|
||||
<span class='xoimg_btn_x16 xoimg_list_undo' onclick='return xo.cfg_edit.delete__send("{{key}}")' title="reset to "{{{dflt}}}""> </span>
|
||||
</div>
|
||||
<div class='xocfg_itm_data'>{{{html}}}</div>
|
||||
<input type='hidden' id='{{key}}__key_box' value='{{key}}'></input>
|
||||
<input type='hidden' id='{{key}}__ctx_box' value='{{{ctx}}}'></input>
|
||||
</div>
|
||||
<div id='{{key}}_help_div' class='xohelp_div'>
|
||||
<div id='{{key}}_help_msg' class='xohelp_msg'>{{{help}}}</div>
|
||||
</div>
|
||||
{{/itms}}
|
||||
{{/grps}}
|
||||
</div>
|
||||
277
res/bin/any/xowa/addon/app/cfg/edit/bin/xo.cfg_edit.js
Normal file
277
res/bin/any/xowa/addon/app/cfg/edit/bin/xo.cfg_edit.js
Normal file
@@ -0,0 +1,277 @@
|
||||
(function (xo) {
|
||||
xo.cfg_edit = new function() {
|
||||
this.debug = false;
|
||||
//{ util.elem
|
||||
this.elem__get = function(id) {
|
||||
var elem = document.getElementById(id);
|
||||
if (elem == null && xo.cfg_edit.debug) alert('elem__get failed: id=' + id);
|
||||
return elem;
|
||||
}
|
||||
this.elem__val = function(id) {
|
||||
var elem = document.getElementById(id);
|
||||
return elem == null ? null : elem.value;
|
||||
}
|
||||
this.elem__val_ = function(id, val) {
|
||||
var elem = document.getElementById(id);
|
||||
if (elem == null && xo.cfg_edit.debug) alert('elem__val failed: id=' + id);
|
||||
elem.value = val;
|
||||
}
|
||||
this.elems__get_by_atr = function(atr) {
|
||||
var rv = [];
|
||||
|
||||
// get all elems
|
||||
var elems = document.getElementsByTagName('*');
|
||||
var len = elems.length;
|
||||
|
||||
// loop all elems and add found to rv
|
||||
for (var i = 0; i < len; i++) {
|
||||
if (elems[i].getAttribute(atr) !== null) // elem has atr
|
||||
rv.push(elems[i]);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
//}
|
||||
|
||||
//{ util.xocfg
|
||||
this.err__clear = function() {xo.cfg_edit.err__write('');}
|
||||
this.err__write = function(s) {
|
||||
var elem = xo.elem.get('xocfg_err');
|
||||
if (elem)
|
||||
elem.innerHTML = s;
|
||||
}
|
||||
|
||||
this.cfg_val__set = function(type, key, val) {
|
||||
if (type === 'bool') {
|
||||
xo.cfg_edit.elem__get(key).checked = val == "y";
|
||||
}
|
||||
else if (type === 'io.cmd') {
|
||||
var flds = val.split("|");
|
||||
xo.cfg_edit.elem__val_(key + '-exe', flds[0]);
|
||||
xo.cfg_edit.elem__val_(key + '-arg', flds.length <= 1 ? "" : flds[1]);
|
||||
}
|
||||
else if (type === 'gui.binding') {
|
||||
var flds = val.split("|");
|
||||
// xo.cfg_edit.elem__val_(key + '-box', flds[0]);
|
||||
var box = xo.cfg_edit.elem__get(key + '-box');
|
||||
var len = box.options.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
var opt = box.options[i];
|
||||
if (opt.text === flds[0]) {
|
||||
box.selectedIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
xo.cfg_edit.elem__val_(key + '-ipt', flds.length <= 1 ? "" : flds[1]);
|
||||
}
|
||||
else {
|
||||
xo.cfg_edit.elem__get(key).value = val;
|
||||
}
|
||||
}
|
||||
this.cfg_val__bind_all = function() {
|
||||
var elems = xo.cfg_edit.elems__get_by_atr('data-xocfg-key');
|
||||
var len = elems.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
elems[i].addEventListener('change', xo.cfg_edit.update__send_by_event);
|
||||
if (elems[i].tagName === 'BUTTON') {
|
||||
elems[i].addEventListener('click', xo.cfg_edit.update__send_by_event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.io_cmd__select = function(io_type, elem_id, msg) {
|
||||
// call xowa to launch file_dialog
|
||||
var file_path = xowa_exec('scripts_exec', 'app.gui.kit.ask_file("' + msg + '");');
|
||||
if (file_path == null || file_path == '') return; // nothing selected; exit
|
||||
|
||||
// update val
|
||||
var elem = xo.cfg_edit.elem__get(elem_id);
|
||||
elem.value = file_path;
|
||||
xo.cfg_edit.update__send(elem);
|
||||
}
|
||||
|
||||
this.gui_binding__remap_send = function change_binding(key, name, bnd) {
|
||||
try {
|
||||
xowa_exec('scripts_exec', "app.cfg.run('app', 'xowa.gui.shortcuts.show_remap_win', '" + key + "\n" + name + "\n" + xo.cfg_edit.elem__val(key + '-ipt') + "');");
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.gui_binding__remap_recv = function(msg_str) {
|
||||
try {
|
||||
// err.write
|
||||
var msg = JSON.parse(msg_str);
|
||||
|
||||
// update
|
||||
var ipt_elem = xo.cfg_edit.elem__get(msg.key + '-ipt');
|
||||
ipt_elem.value = msg.bnd;
|
||||
xo.cfg_edit.update__send(ipt_elem);
|
||||
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
//}
|
||||
|
||||
//{ update
|
||||
this.update__send_by_event = function(e) {xo.cfg_edit.update__send(e.target);}
|
||||
this.update__send = function(elem) {
|
||||
try {
|
||||
// init vars
|
||||
var key = elem.getAttribute("data-xocfg-key");
|
||||
var type = elem.getAttribute("data-xocfg-type");
|
||||
|
||||
// read val from ui
|
||||
var val = '';
|
||||
if (type === 'bool') {val = elem.checked ? "y" : "n";}
|
||||
else if (type === 'io.cmd-exe') {val = elem.value + '|' + xo.cfg_edit.elem__val(key + '-arg');}
|
||||
else if (type === 'io.cmd-arg') {val = xo.cfg_edit.elem__val(key + '-exe') + '|' + elem.value;}
|
||||
// else if (type === 'gui.binding-box') {val = elem.value + '|' + xo.cfg_edit.elem__val(key + '-ipt');}
|
||||
else if (type === 'gui.binding-box') {var box = xo.cfg_edit.elem__get(key + '-box'); val = box_text = box.options[box.selectedIndex].text + '|' + xo.cfg_edit.elem__val(key + '-ipt');}
|
||||
else if (type === 'gui.binding-ipt') {var box = xo.cfg_edit.elem__get(key + '-box'); val = box_text = box.options[box.selectedIndex].text + '|' + elem.value;}
|
||||
else {val = elem.value;}
|
||||
|
||||
// send to server
|
||||
xo.server.send_by_bridge('xo.cfg_edit', 'update',
|
||||
{ ctx: xo.cfg_edit.elem__val(key + '__ctx_box')
|
||||
, key: key
|
||||
, val: val
|
||||
, type: type
|
||||
});
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.update__fail = function(msg_str) {
|
||||
try {
|
||||
// err.write
|
||||
var msg = JSON.parse(msg_str);
|
||||
var name = xo.cfg_edit.elem__get(msg.key + '__name');
|
||||
xo.cfg_edit.err__write('<b>' + msg.new_val + '</b> is invalid for <b>' + name.textContent.trim() + '</b><br/>Error: ' + msg.err);
|
||||
|
||||
// revert val
|
||||
xo.cfg_edit.elem__val_(msg.key, msg.old_val);
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.update__pass = function(msg_str) {
|
||||
try {
|
||||
// err.clear
|
||||
var msg = JSON.parse(msg_str);
|
||||
xo.cfg_edit.err__clear();
|
||||
if (msg.type === 'btn') return true; // if button, exit
|
||||
|
||||
// show undo button
|
||||
var undo_elem = xo.cfg_edit.elem__get(msg.key + '__undo');
|
||||
undo_elem.classList.remove("xocfg_itm_hide");
|
||||
|
||||
// show confirm icon briefly
|
||||
var img = undo_elem.children[0];
|
||||
img.className = 'xoimg_btn_x16 xoimg_misc_ok xocfg_pulse';
|
||||
setTimeout(function() {
|
||||
img.className = 'xoimg_btn_x16 xoimg_list_undo';
|
||||
}, 1200);
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
//}
|
||||
|
||||
//{ delete
|
||||
this.delete__send = function(key) {
|
||||
try {
|
||||
xo.cfg_edit.err__clear();
|
||||
|
||||
// get type
|
||||
var undo_elem = xo.cfg_edit.elem__get(key + '__undo');
|
||||
var type = undo_elem.getAttribute("data-xocfg-type");
|
||||
|
||||
// send to server
|
||||
xo.server.send_by_bridge('xo.cfg_edit', 'delete',
|
||||
{ ctx: xo.cfg_edit.elem__val(key + '__ctx_box')
|
||||
, key: key
|
||||
, type: type
|
||||
});
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.delete__recv = function(msg_str) {
|
||||
try {
|
||||
var msg = JSON.parse(msg_str);
|
||||
|
||||
// hide icon
|
||||
var undo_elem = xo.cfg_edit.elem__get(msg.key + '__undo');
|
||||
var undo_img = undo_elem.children[0];
|
||||
undo_elem.classList.add("xocfg_itm_hide");
|
||||
|
||||
// set value
|
||||
var type = undo_elem.getAttribute("data-xocfg-type");
|
||||
xo.cfg_edit.cfg_val__set(type, msg.key, msg.val);
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
//}
|
||||
|
||||
//{ select
|
||||
this.select__by_keypress = function(e, target) {
|
||||
switch (e.keyCode) {
|
||||
case 38: // up
|
||||
case 40: // down;
|
||||
if (!e.altKey) // do not fire for alt+down which drops down menu
|
||||
this.select__send(target);
|
||||
break;
|
||||
case 33: // page_up
|
||||
case 34: // page_down;
|
||||
this.select__send(target);
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.select__send = function(elem) {
|
||||
try {
|
||||
if (elem == null) // occurs when View HTML for SWT Browser
|
||||
return;
|
||||
xo.cfg_edit.err__clear();
|
||||
var key = elem.options[elem.selectedIndex].value;
|
||||
xo.server.send_by_bridge('xo.cfg_edit', 'select',
|
||||
{ ctx: 'app' //xo.cfg_edit.elem__val(key + '__ctx_box')
|
||||
, key: key
|
||||
});
|
||||
|
||||
var options_elem = xo.elem.get('options_lnk');
|
||||
if (options_elem) // null on DRD
|
||||
options_elem.href = '/wiki/Special:XowaCfg?grp=' + key;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.select__recv = function(msg_str) {
|
||||
try {
|
||||
// write grp via template
|
||||
var msg = JSON.parse(msg_str);
|
||||
var grp = xo.elem.get('cfg_grps');
|
||||
xo.tmpl.fmt('xocfg.grps', grp, msg);
|
||||
|
||||
// bind update and popups
|
||||
xo.cfg_edit.cfg_val__bind_all();
|
||||
try {
|
||||
xowa_popups_bind_to_owner(document);
|
||||
} catch (err) {}
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
//}
|
||||
|
||||
//{ help
|
||||
this.help__toggle_all = function() {
|
||||
var elems = document.getElementsByClassName('xohelp_div');
|
||||
var len = elems.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
var elem = elems[i] ;
|
||||
var id = elem.id.replace('_help_div', '');
|
||||
xo.help.toggle(id);
|
||||
}
|
||||
}
|
||||
//}
|
||||
}
|
||||
}(window.xo = window.xo || {}));
|
||||
|
||||
//{ onpageload
|
||||
xo.cfg_edit.cfg_val__bind_all();
|
||||
xo.help.add_bottom_margin = false;
|
||||
setTimeout(function() { // wait for mustache to load files async
|
||||
var elem = xo.cfg_edit.elem__get('xocfg_nav_select');
|
||||
// auto-load group; deactivated because first group comes preloaded to have HTML
|
||||
xo.cfg_edit.select__send(elem);
|
||||
elem.focus();
|
||||
}, 0);
|
||||
//}
|
||||
@@ -0,0 +1,64 @@
|
||||
<div id='xocfg_body'>
|
||||
<!-- TEXT:err_msg -->
|
||||
<div id='xocfg_err'></div>
|
||||
{{#nav_exists}}
|
||||
<div>
|
||||
<!-- BTN:info -->
|
||||
<span class='xoimg_btn_x16 xoimg_help_tip' href='javascript:void(0)' onclick='return xo.cfg_edit.help__toggle_all()' title='toggle all help'> </span>
|
||||
|
||||
<!-- COMBO:cfg_grps -->
|
||||
<select id='xocfg_nav_select' onchange='xo.cfg_edit.select__send(this);' onkeyup='xo.cfg_edit.select__by_keypress(event, this);' accesskey='l'>
|
||||
{{#itms}}
|
||||
<option value='{{key}}' {{#selected}} selected='selected'{{/selected}}>{{text}}</option>
|
||||
{{/itms}}
|
||||
</select>
|
||||
|
||||
<!-- LINK:cfg_link -->
|
||||
{{^app_is_drd}}
|
||||
<div style='float:right;margin:2px 7px;'>
|
||||
<a id='options_lnk'>options link</a>
|
||||
</div>
|
||||
{{/app_is_drd}}
|
||||
</div>
|
||||
{{/nav_exists}}
|
||||
|
||||
<div id='cfg_grps'>
|
||||
<!-- TEXT:page_help -->
|
||||
<div>
|
||||
<p id='page_help_para'>{{{page_help}}}</p>
|
||||
</div>
|
||||
{{#grps}}
|
||||
<h2>{{{name}}}</h2>
|
||||
|
||||
{{#itms}}
|
||||
<div class="xocfg_row flex_div">
|
||||
<!-- BTN:help_item -->
|
||||
<div class='xocfg_itm_help'>
|
||||
<span class='xoimg_btn_x16 xoimg_help_tip' href='javascript:void(0)' onclick='return xo.help.toggle("{{key}}")' title='view more info'> </span>
|
||||
</div>
|
||||
|
||||
<!-- TEXT:key -->
|
||||
<div id='{{key}}__name' class='xocfg_itm_name'>{{{name}}}</div>
|
||||
|
||||
<!-- BTN:undo -->
|
||||
<div id='{{key}}__undo' data-xocfg-type='{{type}}' class='xocfg_itm_delete{{^edited}} xocfg_itm_hide{{/edited}}'>
|
||||
<span class='xoimg_btn_x16 xoimg_list_undo' onclick='return xo.cfg_edit.delete__send("{{key}}")' title="reset to "{{{dflt}}}""> </span>
|
||||
</div>
|
||||
|
||||
<!-- TEXT:val -->
|
||||
<div class='xocfg_itm_data'>{{{html}}}</div>
|
||||
|
||||
<!-- HIDDEN:key,ctx -->
|
||||
<input type='hidden' id='{{key}}__key_box' value='{{key}}'></input>
|
||||
<input type='hidden' id='{{key}}__ctx_box' value='{{{ctx}}}'></input>
|
||||
</div>
|
||||
|
||||
<!-- DIV:help -->
|
||||
<div id='{{key}}_help_div' class='xohelp_div'>
|
||||
<div id='{{key}}_help_msg' class='xohelp_msg'>{{{help}}}</div>
|
||||
</div>
|
||||
{{/itms}}
|
||||
{{/grps}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
20
res/bin/any/xowa/addon/app/cfg/maint/bin/xo.cfg_maint.css
Normal file
20
res/bin/any/xowa/addon/app/cfg/maint/bin/xo.cfg_maint.css
Normal file
@@ -0,0 +1,20 @@
|
||||
.cur_head_text {
|
||||
width: calc(100% - 40px);
|
||||
}
|
||||
.cur_head_btns {
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
.label {
|
||||
display: inline-block;
|
||||
padding: 0px 0px 0px 10px;
|
||||
}
|
||||
.data {
|
||||
display: inline-block;
|
||||
width: calc(100% - 94px);
|
||||
padding: 0px 0px 0px 10px;
|
||||
}
|
||||
.button {
|
||||
display: inline-block;
|
||||
padding: 0px 10px 0px 10px;
|
||||
}
|
||||
16
res/bin/any/xowa/addon/app/cfg/maint/bin/xo.cfg_maint.js
Normal file
16
res/bin/any/xowa/addon/app/cfg/maint/bin/xo.cfg_maint.js
Normal file
@@ -0,0 +1,16 @@
|
||||
(function (xo) {
|
||||
xo.cfg_maint = new function() {
|
||||
this.get_elem_val = function(id) {
|
||||
var elem = document.getElementById(id);
|
||||
return elem == null ? null : elem.value;
|
||||
}
|
||||
this.itm__save = function(e) {
|
||||
var data = xo.cfg_maint.get_elem_val('data_box');
|
||||
xo.server.send_by_bridge('xo.cfg_maint', 'upsert',
|
||||
{ data: data
|
||||
});
|
||||
}
|
||||
}
|
||||
}(window.xo = window.xo || {}));
|
||||
document.getElementById('data_box').focus();
|
||||
document.getElementById('save_btn').addEventListener('click', xo.cfg_maint.itm__save);
|
||||
@@ -0,0 +1,25 @@
|
||||
<div id='cur_help_div' class='xohelp_div'>
|
||||
<div id='cur_help_msg' class='xohelp_msg'>
|
||||
Work in progress
|
||||
</div>
|
||||
</div>
|
||||
<div class='main_body' id='main_body'>
|
||||
<div class='list_tbl'>
|
||||
<div class='xotbl_head_row'>
|
||||
<div class='xotbl_head_text cur_head_text'>Option Maintenance</div>
|
||||
<div class='xotbl_head_btns cur_head_btns'>
|
||||
<a class='xoimg_btn_x24 xoimg_help_tip' title='view help' href='javascript:void(0)' onclick='return xo.help.toggle("cur")'> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="xotbl_data_row flex_div">
|
||||
<div class='label'>Data
|
||||
</div>
|
||||
<div class='data'>
|
||||
<textarea id='data_box' rows='40' accesskey=','></textarea>
|
||||
</div>
|
||||
<div class='button'>
|
||||
<button id='save_btn' accesskey='s'>Save</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
BIN
res/bin/any/xowa/addon/app/cfg/xo.cfg.sqlite3
Normal file
BIN
res/bin/any/xowa/addon/app/cfg/xo.cfg.sqlite3
Normal file
Binary file not shown.
Reference in New Issue
Block a user