1
0
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:
gnosygnu
2018-11-02 09:58:55 -04:00
parent a672fd8340
commit 5721913241
6057 changed files with 1156950 additions and 0 deletions

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

View File

@@ -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'>&nbsp;</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 &quot;{{{dflt}}}&quot;">&nbsp;</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>

View 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);
//}

View File

@@ -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'>&nbsp;</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'>&nbsp;</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 &quot;{{{dflt}}}&quot;">&nbsp;</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>

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

View 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);

View File

@@ -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")'>&nbsp;</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>

Binary file not shown.