mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v2.6.3.1
This commit is contained in:
@@ -25,10 +25,9 @@ public interface Gxw_html extends GxwElem {
|
||||
String Html_doc_selected_get_href_or_text();
|
||||
String Html_doc_selected_get_src_or_empty();
|
||||
String Html_doc_selected_get_active_or_selection(); // gets selected anchor or highlighted text for opening a new page
|
||||
boolean Html_doc_find(String id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find);
|
||||
boolean Html_doc_find(String id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight);
|
||||
void Html_doc_body_focus();
|
||||
void Html_doc_selection_focus_toggle();
|
||||
boolean Html_doc_loaded();
|
||||
String Html_elem_atr_get_str (String id, String atr_key);
|
||||
boolean Html_elem_atr_get_bool (String id, String atr_key);
|
||||
boolean Html_elem_atr_set (String id, String atr_key, String val);
|
||||
|
||||
@@ -27,7 +27,7 @@ public class Gfui_html extends GfuiElemBase {
|
||||
public String Html_doc_selected_get_href_or_text() {return under.Html_doc_selected_get_href_or_text();}
|
||||
public String Html_doc_selected_get_src_or_empty() {return under.Html_doc_selected_get_src_or_empty();}
|
||||
public String Html_doc_selected_get_active_or_selection() {return under.Html_doc_selected_get_active_or_selection();}
|
||||
public boolean Html_doc_find(String elem_id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find) {return under.Html_doc_find(elem_id, find, dir_fwd, case_match, wrap_find);}
|
||||
public boolean Html_doc_find(String elem_id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight_matches) {return under.Html_doc_find(elem_id, find, dir_fwd, case_match, wrap_find, highlight_matches);}
|
||||
public void Html_doc_body_focus() {under.Html_doc_body_focus();}
|
||||
public void Html_doc_selection_focus_toggle() {under.Html_doc_selection_focus_toggle();}
|
||||
@gplx.Virtual public String Html_elem_atr_get_str(String elem_id, String atr_key) {return under.Html_elem_atr_get_str(elem_id, atr_key);}
|
||||
@@ -47,7 +47,6 @@ public class Gfui_html extends GfuiElemBase {
|
||||
public String Html_active_atr_get_str(String atrKey, String or) {return under.Html_active_atr_get_str(atrKey, or);}
|
||||
public void Html_js_enabled_(boolean v) {under.Html_js_enabled_(v);}
|
||||
public void Html_js_eval_proc(String name, String... args) {under.Html_js_eval_proc(name, args);}
|
||||
public boolean Html_doc_loaded() {return under.Html_doc_loaded();}
|
||||
public String Html_js_eval_script(String script) {return under.Html_js_eval_script(script);}
|
||||
public void Html_js_cbks_add(String js_func_name, GfoInvkAble invk) {under.Html_js_cbks_add(js_func_name, invk);}
|
||||
public void Html_invk_src_(GfoEvObj v) {under.Html_invk_src_(v);}
|
||||
|
||||
@@ -25,10 +25,9 @@ public class Gfui_html_cfg implements GfoInvkAble {
|
||||
public String Doc_selected_get_href_or_text() {return Exec_fmt(fmtr_doc_selected_get_href_or_text);} private Bry_fmtr fmtr_doc_selected_get_href_or_text = Bry_fmtr.keys_();
|
||||
public String Doc_selected_get_src_or_empty() {return Exec_fmt(fmtr_doc_selected_get_src_or_empty);} private Bry_fmtr fmtr_doc_selected_get_src_or_empty = Bry_fmtr.keys_();
|
||||
public String Doc_selected_get_active_or_selection() {return Exec_fmt(fmtr_doc_selected_get_active_or_selection);} private Bry_fmtr fmtr_doc_selected_get_active_or_selection = Bry_fmtr.keys_();
|
||||
public String Doc_loaded() {return Exec_fmt(fmtr_doc_loaded);} private Bry_fmtr fmtr_doc_loaded = Bry_fmtr.keys_();
|
||||
public String Doc_find_html(String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean search_text_is_diff, int prv_find_bgn) {
|
||||
return Exec_fmt(fmtr_doc_find_html, find, Bool_.Xto_str_lower(dir_fwd), Bool_.Xto_str_lower(case_match), Bool_.Xto_str_lower(wrap_find), Bool_.Xto_str_lower(search_text_is_diff), Int_.Xto_str(prv_find_bgn));
|
||||
} private Bry_fmtr fmtr_doc_find_html = Bry_fmtr.keys_("find_text", "dir_fwd", "case_match", "wrap_find", "find_text_is_diff", "prv_find_bgn");
|
||||
public String Doc_find_html(String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight_matches) {
|
||||
return Exec_fmt(fmtr_doc_find_html, find, Bool_.Xto_str_lower(dir_fwd), Bool_.Xto_str_lower(case_match), Bool_.Xto_str_lower(wrap_find), Bool_.Xto_str_lower(highlight_matches));
|
||||
} private Bry_fmtr fmtr_doc_find_html = Bry_fmtr.keys_("find_text", "dir_fwd", "case_match", "wrap_find", "highlight_matches");
|
||||
public String Doc_find_edit(String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean search_text_is_diff, int prv_find_bgn) {
|
||||
return Exec_fmt(fmtr_doc_find_edit, find, Bool_.Xto_str_lower(dir_fwd), Bool_.Xto_str_lower(case_match), Bool_.Xto_str_lower(wrap_find), Bool_.Xto_str_lower(search_text_is_diff), Int_.Xto_str(prv_find_bgn));
|
||||
} private Bry_fmtr fmtr_doc_find_edit = Bry_fmtr.keys_("find_text", "dir_fwd", "case_match", "wrap_find", "find_text_is_diff", "prv_find_bgn");
|
||||
@@ -75,7 +74,6 @@ public class Gfui_html_cfg implements GfoInvkAble {
|
||||
else if (ctx.Match(k, Invk_doc_selected_get_active_or_selection_)) fmtr_doc_selected_get_active_or_selection.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_doc_find_html_)) fmtr_doc_find_html.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_doc_find_edit_)) fmtr_doc_find_edit.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_doc_loaded_)) fmtr_doc_loaded.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_elem_atr_get_)) fmtr_elem_atr_get.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_elem_atr_get_toString_)) fmtr_elem_atr_get_toString.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_elem_atr_set_)) fmtr_elem_atr_set.Fmt_(m.ReadBry("v"));
|
||||
@@ -104,7 +102,7 @@ public class Gfui_html_cfg implements GfoInvkAble {
|
||||
node_path.Val_(node_path_val);
|
||||
}
|
||||
public static final String Invk_debug_file_ = "debug_file_"
|
||||
, Invk_doc_html_ = "doc_html_", Invk_doc_body_focus_ = "doc_body_focus_", Invk_doc_selection_focus_toggle_ = "doc_selection_focus_toggle_", Invk_doc_loaded_ = "doc_loaded"
|
||||
, Invk_doc_html_ = "doc_html_", Invk_doc_body_focus_ = "doc_body_focus_", Invk_doc_selection_focus_toggle_ = "doc_selection_focus_toggle_"
|
||||
, Invk_doc_active_atr_get_ = "doc_active_atr_get_", Invk_doc_find_html_ = "doc_find_html_", Invk_doc_find_edit_ = "doc_find_edit_"
|
||||
, Invk_doc_selected_get_text_or_href_ = "doc_selected_get_text_or_href_", Invk_doc_selected_get_href_or_text_ = "doc_selected_get_href_or_text_", Invk_doc_selected_get_src_or_empty_ = "doc_selected_get_src_or_empty_", Invk_doc_selected_get_active_or_selection_ = "doc_selected_get_active_or_selection_"
|
||||
, Invk_win_print_preview_ = "win_print_preview_"
|
||||
|
||||
@@ -25,7 +25,6 @@ class Mem_html extends GxwTextMemo_lang implements Gxw_html { public String Htm
|
||||
public String Html_doc_selected_get_href_or_text() {return "";}
|
||||
public String Html_doc_selected_get_src_or_empty() {return "";}
|
||||
public String Html_doc_selected_get_active_or_selection() {return "";}
|
||||
public boolean Html_doc_loaded() {return true;}
|
||||
public boolean Html_window_print_preview() {return false;}
|
||||
public void Html_invk_src_(GfoEvObj v) {}
|
||||
public String Html_elem_atr_get_str(String elem_id, String atr_key) {
|
||||
@@ -87,7 +86,7 @@ class Mem_html extends GxwTextMemo_lang implements Gxw_html { public String Htm
|
||||
if (!Int_.Between(pos, q0, q1)) return null; // current pos is not between nearest quotes
|
||||
return String_.Mid(txt, q0 + 1, q1);
|
||||
}
|
||||
public boolean Html_doc_find(String elem_id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find) {
|
||||
public boolean Html_doc_find(String elem_id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight_matches) {
|
||||
// String txt = this.TextVal();
|
||||
// int pos = this.SelBgn();
|
||||
// int bgn = String_.FindFwd(txt, find, pos); if (bgn == String_.Find_none) return false;
|
||||
|
||||
@@ -40,10 +40,9 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener {
|
||||
this.kit = kit;
|
||||
lnr_location = new Swt_html_lnr_location(this);
|
||||
lnr_status = new Swt_html_lnr_status(this);
|
||||
int browser_type = Swt_html.Browser_tid_none;
|
||||
Object browser_type_obj = ctorArgs.FetchValOr(Swt_kit.Cfg_Html_BrowserType, null);
|
||||
if (browser_type_obj != null) browser_type = Int_.cast_(browser_type_obj);
|
||||
browser = new Browser(owner_control.Under_composite(), browser_type);
|
||||
Object browser_tid_obj = ctorArgs.FetchValOr(Swt_kit.Cfg_Html_BrowserType, null);
|
||||
this.browser_tid = browser_tid_obj == null ? Browser_tid_none : Int_.cast_(browser_tid_obj);
|
||||
browser = new Browser(owner_control.Under_composite(), browser_tid);
|
||||
core = new Swt_core_cmds_html(this, browser);
|
||||
browser.addKeyListener(new Swt_lnr_key(this));
|
||||
browser.addMouseListener(new Swt_html_lnr_mouse(this, browser, kit));
|
||||
@@ -58,6 +57,7 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener {
|
||||
@Override public Control Under_control() {return browser;} private Browser browser;
|
||||
@Override public Composite Under_composite() {return null;}
|
||||
@Override public Control Under_menu_control() {return browser;}
|
||||
public int Browser_tid() {return browser_tid;} private final int browser_tid;
|
||||
public String Html_doc_html() {return Eval_script_as_str(kit.Html_cfg().Doc_html());}
|
||||
public void Html_doc_html_load_by_mem(String html) {
|
||||
html_doc_html_load_tid = Gxw_html_load_tid_.Tid_mem;
|
||||
@@ -75,7 +75,6 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener {
|
||||
public String Html_doc_selected_get_src_or_empty() {return Eval_script_as_str(kit.Html_cfg().Doc_selected_get_src_or_empty());}
|
||||
public String Html_doc_selected_get_active_or_selection() {return Eval_script_as_str(kit.Html_cfg().Doc_selected_get_active_or_selection());}
|
||||
public void Html_doc_body_focus() {Eval_script_as_exec(kit.Html_cfg().Doc_body_focus());}
|
||||
public boolean Html_doc_loaded() {return Bool_.parse_((String)Eval_script(kit.Html_cfg().Doc_loaded()));}
|
||||
public void Html_doc_selection_focus_toggle() {Eval_script_as_exec(kit.Html_cfg().Doc_selection_focus_toggle());}
|
||||
public String Html_elem_atr_get_str(String elem_id, String atr_key) {return Eval_script_as_str(kit.Html_cfg().Elem_atr_get(elem_id, atr_key));}
|
||||
public boolean Html_elem_atr_get_bool(String elem_id, String atr_key) {return Bool_.parse_((String)Eval_script(kit.Html_cfg().Elem_atr_get_toString(elem_id, atr_key)));}
|
||||
@@ -119,20 +118,16 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener {
|
||||
Gfui_html_cfg.Html_window_vpos_parse(v, scroll_top, node_path);
|
||||
return Eval_script_as_exec(kit.Html_cfg().Window_vpos_(node_path.Val(), scroll_top.Val()));
|
||||
} private String_obj_ref scroll_top = String_obj_ref.null_(), node_path = String_obj_ref.null_();
|
||||
public boolean Html_doc_find(String elem_id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find) {
|
||||
public boolean Html_doc_find(String elem_id, String find, boolean dir_fwd, boolean case_match, boolean wrap_find, boolean highlight_matches) {
|
||||
// if (String_.Eq(find, String_.Empty)) return false;
|
||||
find = String_.Replace(find, "\\", "\\\\"); // escape \ -> \\
|
||||
find = String_.Replace(find, "'", "\\'"); // escape ' -> \'; NOTE: \\' instead of \'
|
||||
boolean search_text_is_diff = !String_.Eq(find, prv_find_str);
|
||||
prv_find_str = find;
|
||||
String script = String_.Eq(elem_id, Gfui_html.Elem_id_body)
|
||||
? kit.Html_cfg().Doc_find_html(find, dir_fwd, case_match, wrap_find, search_text_is_diff, prv_find_bgn)
|
||||
: kit.Html_cfg().Doc_find_edit(find, dir_fwd, case_match, wrap_find, search_text_is_diff, prv_find_bgn);
|
||||
Object result_obj = Eval_script(script);
|
||||
try {prv_find_bgn = (int)Double_.cast_(result_obj);}
|
||||
catch (Exception e) {Err_.Noop(e); return false;}
|
||||
? kit.Html_cfg().Doc_find_html(find, dir_fwd, case_match, wrap_find, highlight_matches)
|
||||
: kit.Html_cfg().Doc_find_edit(find, dir_fwd, case_match, wrap_find, false, -1);
|
||||
Eval_script(script);
|
||||
return true;
|
||||
} private String prv_find_str = ""; private int prv_find_bgn;
|
||||
}
|
||||
public void Html_invk_src_(GfoEvObj invk) {lnr_location.Host_set(invk); lnr_status.Host_set(invk);}
|
||||
public void Html_dispose() {
|
||||
browser.dispose();
|
||||
@@ -186,8 +181,8 @@ class Swt_html_eval_rslt {
|
||||
public Object Result() {return result;} public void Result_set(Object v) {result = v; error = null;} private Object result;
|
||||
public String Error () {return error;} public void Error_set(String v) {error = v; result = null;} private String error;
|
||||
}
|
||||
class Swt_html_lnr_Traverse implements TraverseListener {
|
||||
public Swt_html_lnr_Traverse(Swt_html html_box) {}
|
||||
class Swt_html_lnr_traverse implements TraverseListener {
|
||||
public Swt_html_lnr_traverse(Swt_html html_box) {}
|
||||
@Override public void keyTraversed(TraverseEvent arg0) {}
|
||||
}
|
||||
class Swt_html_lnr_title implements TitleListener {
|
||||
@@ -240,6 +235,10 @@ class Swt_html_lnr_location implements LocationListener {
|
||||
private void Pub_evt(LocationEvent arg, String evt) {
|
||||
String location = arg.location;
|
||||
if (String_.Eq(location, "about:blank")) return; // location changing event fires once when page is loaded; ignore
|
||||
if ( html_box.Browser_tid() == Swt_html.Browser_tid_webkit // webkit prefixes "about:blank" to anchors; causes TOC to fail when clicking on links; EX:about:blank#TOC1; DATE:2015-06-09
|
||||
&& String_.HasAtBgn(location, "about:blank")) {
|
||||
location = String_.Mid(location, 11); // 11 = "about:blank".length
|
||||
}
|
||||
if ( html_box.Html_doc_html_load_tid() == Gxw_html_load_tid_.Tid_url // navigating to file://page.html will fire location event; ignore if url mode
|
||||
&& String_.HasAtBgn(location, "file:")
|
||||
&& String_.HasAtEnd(location, ".html")
|
||||
|
||||
Reference in New Issue
Block a user