mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Gui: Add option to display actual HTML in SWT browser
This commit is contained in:
19
400_xowa/src/gplx/xowa/htmls/Xoh_page_html_source.java
Normal file
19
400_xowa/src/gplx/xowa/htmls/Xoh_page_html_source.java
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*;
|
||||
public interface Xoh_page_html_source {
|
||||
byte[] Get_page_html();
|
||||
}
|
||||
28
400_xowa/src/gplx/xowa/htmls/Xoh_page_html_source_.java
Normal file
28
400_xowa/src/gplx/xowa/htmls/Xoh_page_html_source_.java
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*;
|
||||
public class Xoh_page_html_source_ {
|
||||
public static Xoh_page_html_source
|
||||
Wtr = new Xoh_page_html_source__wtr()
|
||||
, Noop = new Xoh_page_html_source__noop()
|
||||
;
|
||||
}
|
||||
class Xoh_page_html_source__wtr implements Xoh_page_html_source {
|
||||
public byte[] Get_page_html() {return null;}
|
||||
}
|
||||
class Xoh_page_html_source__noop implements Xoh_page_html_source {
|
||||
public byte[] Get_page_html() {return null;}
|
||||
}
|
||||
@@ -53,7 +53,8 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
|
||||
public void Init_by_wiki(Xow_wiki wiki) {
|
||||
wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__scripting_enabled);
|
||||
}
|
||||
public byte[] Gen(Xoae_page page, byte output_tid) {
|
||||
public byte[] Gen(Xoae_page page, byte output_tid) {return Gen(page, Xoh_page_html_source_.Noop, output_tid);}
|
||||
public byte[] Gen(Xoae_page page, Xoh_page_html_source page_html_source, byte output_tid) {
|
||||
Xoh_page_wtr_wkr wtr = Wkr(output_tid);
|
||||
Xowe_wiki wiki = page.Wikie();
|
||||
if (init) {
|
||||
@@ -62,7 +63,7 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
|
||||
page_edit_fmtr.Eval_mgr_(wiki.Eval_mgr());
|
||||
page_html_fmtr.Eval_mgr_(wiki.Eval_mgr());
|
||||
}
|
||||
wtr.Write_page(html_bfr, page, wiki.Parser_mgr().Ctx());
|
||||
wtr.Write_page(html_bfr, page, wiki.Parser_mgr().Ctx(), page_html_source);
|
||||
return html_bfr.To_bry_and_clear_and_rls();
|
||||
}
|
||||
public Xoh_page_wtr_wkr Wkr(byte output_tid) {
|
||||
|
||||
@@ -21,6 +21,7 @@ import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.d
|
||||
import gplx.xowa.xtns.pagebanners.*;
|
||||
import gplx.xowa.apps.gfs.*; import gplx.xowa.htmls.portal.*;
|
||||
import gplx.xowa.addons.wikis.ctgs.htmls.pageboxs.*;
|
||||
import gplx.xowa.htmls.core.*;
|
||||
public class Xoh_page_wtr_wkr {
|
||||
private final Object thread_lock_1 = new Object(), thread_lock_2 = new Object();
|
||||
private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
|
||||
@@ -30,7 +31,7 @@ public class Xoh_page_wtr_wkr {
|
||||
private Xoae_app app; private Xowe_wiki wiki; private Xoae_page page; private byte[] root_dir_bry;
|
||||
public Xoh_page_wtr_wkr(Xoh_page_wtr_mgr mgr, byte page_mode) {this.mgr = mgr; this.page_mode = page_mode;}
|
||||
public Xoh_page_wtr_wkr Ctgs_enabled_(boolean v) {ctgs_enabled = v; return this;} private boolean ctgs_enabled = true;
|
||||
public void Write_page(Bry_bfr rv, Xoae_page page, Xop_ctx ctx) {
|
||||
public void Write_page(Bry_bfr rv, Xoae_page page, Xop_ctx ctx, Xoh_page_html_source page_html_source) {
|
||||
synchronized (thread_lock_1) {
|
||||
this.page = page; this.wiki = page.Wikie(); this.app = wiki.Appe();
|
||||
ctx.Page_(page); // HACK: must update page for toc_mgr; WHEN: Xoae_page rewrite
|
||||
@@ -47,10 +48,20 @@ public class Xoh_page_wtr_wkr {
|
||||
}
|
||||
Bry_bfr page_bfr = wiki.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page rv to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do
|
||||
Xoh_wtr_ctx hctx = null;
|
||||
if (page_mode == Xopg_page_.Tid_html && wiki.Html__hdump_mgr().Load_mgr().Html_mode().Tid_is_hdump_save()) {
|
||||
hctx = Xoh_wtr_ctx.Hdump;
|
||||
Write_body(page_bfr, ctx, hctx, page);
|
||||
Write_page_by_tid(ctx, hctx, page_mode, rv, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(page_bfr.To_bry_and_clear()));
|
||||
if (page_mode == Xopg_page_.Tid_html && wiki.Html__hdump_mgr().Load_mgr().Html_mode().Tid_is_custom()) {
|
||||
byte[] html_bry = null;
|
||||
|
||||
// get html from html dump
|
||||
if (wiki.Html__hdump_mgr().Load_mgr().Html_mode().Tid() == Xow_hdump_mode.Hdump_save.Tid()) {
|
||||
hctx = Xoh_wtr_ctx.Hdump;
|
||||
Write_body(page_bfr, ctx, hctx, page);
|
||||
html_bry = page_bfr.To_bry_and_clear();
|
||||
}
|
||||
// get from swt browser
|
||||
else {
|
||||
html_bry = page_html_source.Get_page_html();
|
||||
}
|
||||
Write_page_by_tid(ctx, hctx, page_mode, rv, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(html_bry));
|
||||
}
|
||||
else {
|
||||
hctx = Xoh_wtr_ctx.Basic;
|
||||
|
||||
@@ -22,20 +22,25 @@ public class Xow_hdump_mode {
|
||||
public Xow_hdump_mode(int tid, String key, String gui) {
|
||||
this.tid = tid; this.key = key; this.gui = gui;
|
||||
}
|
||||
public boolean Tid_is_hdump_save() {return tid == Hdump_save.tid;}
|
||||
public int Tid() {return tid;}
|
||||
// boolean Tid_is_hdump_save() {return tid == Hdump_save.tid;}
|
||||
public boolean Tid_is_custom() {return tid < Shown.tid;}
|
||||
|
||||
public static final Xow_hdump_mode
|
||||
Shown = new Xow_hdump_mode(0, "shown" , "Shown")
|
||||
, Hdump_save = new Xow_hdump_mode(1, "hdump_save" , "Saved for HTML DB")
|
||||
, Hdump_load = new Xow_hdump_mode(2, "hdump_load" , "Loaded by HTML DB");
|
||||
Swt_browser = new Xow_hdump_mode(0, "swt_browser" , "SWT Browser")
|
||||
, Hdump_save = new Xow_hdump_mode(1, "hdump_save" , "Saved for HTML DB")
|
||||
, Shown = new Xow_hdump_mode(2, "shown" , "Shown")
|
||||
, Hdump_load = new Xow_hdump_mode(3, "hdump_load" , "Loaded by HTML DB")
|
||||
;
|
||||
public static void Cfg__reg_type(gplx.xowa.addons.apps.cfgs.mgrs.types.Xocfg_type_mgr type_mgr) {
|
||||
type_mgr.Lists__add("list:xowa.wiki.hdumps.html_mode", To_kv(Shown), To_kv(Hdump_save), To_kv(Hdump_load));
|
||||
type_mgr.Lists__add("list:xowa.wiki.hdumps.html_mode", To_kv(Shown), To_kv(Swt_browser), To_kv(Hdump_save), To_kv(Hdump_load));
|
||||
}
|
||||
private static Keyval To_kv(Xow_hdump_mode mode) {return Keyval_.new_(mode.key, mode.gui);}
|
||||
public static Xow_hdump_mode Parse(String v) {
|
||||
if (String_.Eq(v, Shown.key)) return Shown;
|
||||
else if (String_.Eq(v, Hdump_save.key)) return Hdump_save;
|
||||
else if (String_.Eq(v, Hdump_load.key)) return Hdump_load;
|
||||
else if (String_.Eq(v, Swt_browser.key)) return Swt_browser;
|
||||
else throw Err_.new_unhandled(v);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user