From 93fcec3457fe05157a39d03e39bdc18d476dfbb4 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Wed, 21 Dec 2016 03:07:38 -0500 Subject: [PATCH] Cfg: Convert rest of pages --- 400_xowa/src/gplx/xowa/Xoae_app.java | 5 +- 400_xowa/src/gplx/xowa/Xowe_wiki.java | 8 +- 400_xowa/src/gplx/xowa/Xowe_wiki_.java | 2 +- .../src/gplx/xowa/addons/Xoax_addon_mgr.java | 10 ++ .../gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java | 7 +- .../addons/apps/cfgs/enums/Xoitm_gui_tid.java | 1 + .../apps/cfgs/mgrs/execs/Xocfg_exec_mgr.java | 39 +++++++ .../apps/cfgs/mgrs/types/Xocfg_type_mgr.java | 6 +- .../specials/edits/objs/Xoedit_itm_html.java | 3 + .../specials/edits/pages/Xocfg_edit_html.java | 7 +- .../edits/pages/Xocfg_edit_special.java | 9 +- .../edits/services/Xocfg_edit_loader.java | 2 + .../addons/apps/scripts/Xoscript_mgr.java | 2 +- .../Xob_hdump_tbl_retriever__ns_to_db.java | 4 +- .../cmds/Xobldr__fsdb_db__create_data.java | 2 +- .../mass_parses/makes/Xomp_html_db_wtr.java | 2 +- .../xowa/addons/wikis/ctgs/Xoa_ctg_mgr.java | 41 +------ .../htmls/catpages/Xoctg_catpage_mgr.java | 14 ++- .../htmls/pageboxs/Xoctg_pagebox_wtr.java | 14 ++- .../pages/syncs/core/Xosync_read_mgr.java | 34 +++++- .../wikis/searchs/Srch_search_addon.java | 1 + .../addons/wikis/searchs/Srch_search_cfg.java | 108 ------------------ .../wikis/searchs/bldrs/Srch_bldr_mgr_.java | 2 +- .../gui/htmlbars/Srch_htmlbar_mgr.java | 54 +++++++++ .../searchs/gui/urlbars/Srch_urlbar_mgr.java | 104 +++++++++++++++++ .../searchs/searchers/Srch_search_qry.java | 13 ++- .../cbks/Srch_rslt_cbk__url_bar.java | 11 +- .../searchs/specials/Srch_special_cfg.java | 80 +++++++++++++ .../searchs/specials/Srch_special_page.java | 57 ++++----- .../htmls/Srch_html_page_bldr_tst.java | 2 +- 400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java | 6 + .../src/gplx/xowa/apps/apis/Xoapi_root.java | 4 +- .../gplx/xowa/apps/apis/xowa/Xoapi_addon.java | 10 -- .../gplx/xowa/apps/apis/xowa/Xoapi_html.java | 9 +- .../xowa/apps/apis/xowa/Xoapi_special.java | 31 ----- .../gplx/xowa/apps/apis/xowa/Xoapi_xtns.java | 1 + .../apis/xowa/addons/Xoapi_addon_bldr.java | 8 +- .../apis/xowa/addons/Xoapi_addon_search.java | 10 +- .../xowa/addons/bldrs/Xoapi_sync_api.java | 51 --------- .../xowa/addons/searchs/Xoapi_url_bar.java | 78 ------------- .../apis/xowa/bldrs/imports/Xoapi_import.java | 78 +------------ .../imports/page_ranks/Xoapi_page_rank.java | 30 ----- .../apps/apis/xowa/gui/Xoapi_browser.java | 8 +- .../apis/xowa/gui/browsers/Xoapi_url.java | 6 +- .../xowa/gui/browsers/Xoapi_url_searcher.java | 74 ------------ .../apps/apis/xowa/html/Xoapi_modules.java | 10 +- .../xowa/apps/apis/xowa/html/Xoapi_skins.java | 35 ------ .../xowa/apps/apis/xowa/html/Xoapi_tidy.java | 40 ------- .../xowa/html/modules/Xoapi_collapsible.java | 32 ------ .../xowa/html/modules/Xoapi_navframe.java | 32 ------ .../apis/xowa/html/modules/Xoapi_toc.java | 32 ------ .../xowa/html/skins/Xoapi_skin_app_base.java | 29 ----- .../apps/apis/xowa/specials/Xoapi_search.java | 73 ------------ .../xowa/apps/apis/xowa/usrs/Xoapi_cache.java | 10 +- .../apps/apis/xowa/xtns/Xoapi_wikibase.java | 22 ++-- .../gplx/xowa/apps/progs/Xoa_prog_mgr.java | 72 +++++++----- .../apps/servers/http/Http_server_mgr.java | 19 ++- 400_xowa/src/gplx/xowa/bldrs/Xobldr_cfg.java | 65 +++++++++++ .../bldrs/cmds/texts/sqls/Xob_page_cmd.java | 8 +- .../cmds/texts/sqls/Xob_page_cmd_tst.java | 37 ------ .../xowa/bldrs/installs/Xoi_cmd_base.java | 6 +- .../xowa/bldrs/installs/Xoi_dump_mgr.java | 66 +++++------ .../bldrs/setups/addons/Xoi_addon_mgr.java | 2 +- .../setups/addons/Xoi_firefox_installer.java | 7 +- .../src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java | 40 ------- .../src/gplx/xowa/files/Xof_cfg_download.java | 11 +- .../src/gplx/xowa/files/Xof_file_mgr.java | 7 +- .../src/gplx/xowa/files/Xow_file_mgr.java | 3 + .../gplx/xowa/files/caches/Xou_cache_mgr.java | 19 ++- .../files/xfers/Xof_xfer_queue_html_fxt.java | 3 +- .../Xof_xfer_queue_html_wmf_api_tst.java | 7 +- 400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java | 10 +- .../src/gplx/xowa/guis/bnds/Xog_bnd_temp.java | 67 +++++++++++ .../src/gplx/xowa/htmls/Xoh_html_mgr.java | 5 +- .../src/gplx/xowa/htmls/Xoh_imgs_mgr.java | 36 ------ .../src/gplx/xowa/htmls/Xoh_page_mgr.java | 10 +- .../src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java | 6 + .../src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java | 8 +- .../src/gplx/xowa/htmls/Xow_html_mgr.java | 8 +- .../xowa/htmls/core/Xow_hdump_mgr__load.java | 3 +- .../xowa/htmls/core/bldrs/Xob_hdump_bldr.java | 3 +- .../xowa/htmls/core/htmls/Xoh_html_wtr.java | 1 + .../htmls/core/htmls/tidy/Xoa_tidy_mgr.java | 58 ---------- .../htmls/core/htmls/tidy/Xoh_tidy_wkr_.java | 16 --- .../htmls/core/htmls/tidy/Xow_tidy_mgr.java | 31 ++--- .../core/wkrs/hdrs/Xoh_section_editable_.java | 22 ---- .../core/wkrs/lnkis/htmls/Xoh_file_mgr.java | 3 + .../wkrs/lnkis/htmls/Xoh_file_wtr__basic.java | 22 +++- .../core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java | 3 + .../heads/Xoh_head_itm__collapsible.java | 4 +- .../xowa/htmls/heads/Xoh_head_itm__css.java | 2 +- .../htmls/heads/Xoh_head_itm__navframe.java | 4 +- .../xowa/htmls/heads/Xoh_head_itm__toc.java | 6 +- .../gplx/xowa/htmls/heads/Xoh_head_mgr.java | 2 +- .../src/gplx/xowa/htmls/js/Xoh_js_cbk.java | 2 +- .../xowa/htmls/portal/Xow_portal_mgr.java | 52 ++++++--- .../xowa/htmls/portal/Xow_portal_mgr_tst.java | 1 + .../hdrs/sections/Xop_section_mgr.java | 5 +- .../gplx/xowa/specials/Xoa_special_mgr.java | 7 +- .../gplx/xowa/specials/Xow_special_mgr.java | 3 +- .../xowa/diags/Xows_cmd__file_check.java | 2 +- .../src/gplx/xowa/users/prefs/Prefs_mgr.java | 2 +- .../gplx/xowa/users/prefs/Prefs_mgr_tst.java | 64 +++++------ .../xowa/wikis/modules/Xow_module_mgr.java | 22 +++- .../gplx/xowa/wikis/pages/Xowe_page_mgr.java | 7 +- .../src/gplx/xowa/xtns/math/Xof_math_mgr.java | 23 ++-- .../xowa/xtns/math/Xof_math_mgr_html_tst.java | 4 +- .../gplx/xowa/xtns/scores/Score_xtn_mgr.java | 5 + .../xowa/xtns/scribunto/Scrib_core_mgr.java | 1 + .../xowa/xtns/scribunto/Scrib_xtn_mgr.java | 49 ++++---- .../imports/json/Xowb_json_dump_db.java | 8 +- .../specials/Wdata_itemByTitle_cfg.java | 10 +- 112 files changed, 946 insertions(+), 1386 deletions(-) create mode 100644 400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/execs/Xocfg_exec_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_cfg.java create mode 100644 400_xowa/src/gplx/xowa/addons/wikis/searchs/gui/htmlbars/Srch_htmlbar_mgr.java create mode 100644 400_xowa/src/gplx/xowa/addons/wikis/searchs/gui/urlbars/Srch_urlbar_mgr.java create mode 100644 400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_cfg.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/addons/bldrs/Xoapi_sync_api.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/addons/searchs/Xoapi_url_bar.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/page_ranks/Xoapi_page_rank.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url_searcher.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java delete mode 100644 400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java create mode 100644 400_xowa/src/gplx/xowa/bldrs/Xobldr_cfg.java delete mode 100644 400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd_tst.java delete mode 100644 400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java create mode 100644 400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_temp.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoa_tidy_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_section_editable_.java diff --git a/400_xowa/src/gplx/xowa/Xoae_app.java b/400_xowa/src/gplx/xowa/Xoae_app.java index cd8e5f31e..367d6105f 100644 --- a/400_xowa/src/gplx/xowa/Xoae_app.java +++ b/400_xowa/src/gplx/xowa/Xoae_app.java @@ -149,6 +149,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk { stage = Xoa_stage_.Tid_init; user.Init_by_app(this); cfg.Init_by_app(this); + user.User_db_mgr().Cache_mgr().Init_by_app(this); misc_mgr.Init_by_app(this); user.History_mgr().Init_by_app(this); prog_mgr.Init_by_app(this, url_cmd_eval); @@ -157,13 +158,15 @@ public class Xoae_app implements Xoa_app, Gfo_invk { html__css_installer.Init_by_app(this); wiki_mgr.Init_by_app(); gplx.xowa.bldrs.setups.upgrades.Xoa_upgrade_mgr.Check(this); - ctg_mgr.Init_by_app(this); setup_mgr.Init_by_app(this); thread_mgr_old.Usr_dlg_(Xoa_app_.Usr_dlg()); html_mgr.Init_by_app(this); api_root.Init_by_app(this); wmf_mgr.Init_by_app(this); gplx.core.net.emails.Gfo_email_mgr_.Instance = gplx.core.net.emails.Gfo_email_mgr_.New_jre(); + file_mgr.Init_by_app(this); + special_mgr.Init_by_app(this); + sys_cfg.Init_by_app(this); } public boolean Launch_done() {return stage == Xoa_stage_.Tid_launch;} public void Launch() { diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki.java b/400_xowa/src/gplx/xowa/Xowe_wiki.java index e4693e1ed..b2d693327 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki.java @@ -198,7 +198,6 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm { if (app.Stage() == Xoa_stage_.Tid_launch) init_needed = false; // NOTE: only mark inited if app fully launched; otherwise statements in xowa.gfs can fire and prematurely set home to inited; DATE:2013-03-24 Gfo_log_bfr log_bfr = app.Log_bfr(); log_bfr.Add("wiki.init.bgn: " + domain_str); app.Cfg_mgr().Init(this); - file_mgr.Cfg_download().Enabled_(app.File_mgr().Wmf_mgr().Enabled()); // default download to app global; can be overriden below app.Gfs_mgr().Run_url_for(this, tdb_fsys_mgr.Cfg_wiki_stats_fil()); Init_db_mgr(); if (!app.Bldr().Import_marker().Chk(this)) {app.Wiki_mgr().Del(domain_bry); init_needed = false; return;} // NOTE: must call after Db_mgr_create_as_sql(); also, must delete wiki from mgr; DATE:2014-08-24 @@ -227,7 +226,6 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm { app.Html__css_installer().Install(this, Xowd_css_core_mgr.Key_default); html_mgr.Init_by_wiki(this); html__hdump_mgr.Init_by_db(this); - this.Copy_cfg(app.Usere().Wiki()); Xow_repo_mgr_.Assert_repos(app, this); xtn_mgr.Init_by_wiki(this); log_bfr.Add("wiki.init.end"); @@ -237,6 +235,10 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm { app.Site_cfg_mgr().Load(this); app.Addon_mgr().Load_by_wiki(this); ctg_pagebox_wtr.Init_by_wiki(this); + + import_mgr.Init_by_wiki(this); + file_mgr.Init_by_wiki(this); + page_mgr.Init_by_wiki(this); } public void Rls() { if (rls_list != null) { @@ -251,7 +253,7 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm { file_mgr.Rls(); } public void Init_needed_y_() {this.init_needed = true;} - private void Copy_cfg(Xowe_wiki wiki) {html_mgr.Copy_cfg(wiki.Html_mgr());} +// private void Copy_cfg(Xowe_wiki wiki) {html_mgr.Copy_cfg(wiki.Html_mgr());} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_files)) return file_mgr; else if (ctx.Match(k, Invk_stats)) return stats; diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki_.java b/400_xowa/src/gplx/xowa/Xowe_wiki_.java index e82a1f67c..db131997d 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki_.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki_.java @@ -21,7 +21,7 @@ public class Xowe_wiki_ { public static void Create(Xowe_wiki wiki, long src_fil_len, String src_fil_name) { wiki.Db_mgr_create_as_sql(); // create db_mgr as sql Xoapi_import import_api = wiki.Appe().Api_root().Bldr().Wiki().Import(); - Xowd_core_db_props db_mgr_props = import_api.New_props(wiki.Domain_str(), src_fil_len); + Xowd_core_db_props db_mgr_props = gplx.xowa.bldrs.Xobldr_cfg.New_props(wiki.App(), wiki.Domain_str(), src_fil_len); Xob_info_session info_session = Xob_info_session.new_(import_api.User_name(), wiki.Domain_str(), src_fil_name); wiki.Data__core_mgr().Init_by_make(db_mgr_props, info_session); // make core_db } diff --git a/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java b/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java index e0ec9e0fb..ab95df575 100644 --- a/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/Xoax_addon_mgr.java @@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.addons; import gplx.*; import gplx.xowa.*; +import gplx.xowa.addons.wikis.searchs.gui.urlbars.*; import gplx.xowa.addons.wikis.searchs.gui.htmlbars.*; import gplx.xowa.addons.wikis.searchs.specials.*; public class Xoax_addon_mgr { private final Ordered_hash hash = Ordered_hash_.New(); // LOCK: must synchronized else two search tabs will fail on startup public Xoax_addon_itm Itms__get_or_null(String key) {synchronized (hash) {return (Xoax_addon_itm)hash.Get_by(key);}} @@ -30,6 +31,15 @@ public class Xoax_addon_mgr { // Xoa_app_.Usr_dlg().Log_many("", "", "addons.init: ~{0}", addon_key); } } + // HACK: should make separate generic app-level container + public Srch_urlbar_mgr Itms__search__urlbar() {return itms__search__urlbar;} private final Srch_urlbar_mgr itms__search__urlbar = new Srch_urlbar_mgr(); + public Srch_htmlbar_mgr Itms__search__htmlbar() {return itms__search__htmlbar;} private final Srch_htmlbar_mgr itms__search__htmlbar = new Srch_htmlbar_mgr(); + public Srch_special_cfg Itms__search__special() {return itms__search__special;} private final Srch_special_cfg itms__search__special = new Srch_special_cfg(); + public void Init_by_kit(Xoae_app app, gplx.gfui.kits.core.Gfui_kit kit) { + itms__search__urlbar.Init_by_kit(app, kit); + itms__search__htmlbar.Init_by_kit(app, kit); + itms__search__special.Init_by_kit(app, kit); + } public Xoax_addon_mgr Add_dflts_by_app(Xoa_app app) { app.Bldr().Cmd_regy().Add_many ( gplx.xowa.bldrs.cmds.utils.Xob_alert_cmd.Prototype diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java index 097341771..9ca91be38 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.addons.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; -import gplx.dbs.*; import gplx.xowa.addons.apps.cfgs.mgrs.caches.*; import gplx.xowa.addons.apps.cfgs.mgrs.dflts.*; import gplx.xowa.addons.apps.cfgs.mgrs.types.*; +import gplx.dbs.*; import gplx.xowa.addons.apps.cfgs.mgrs.caches.*; import gplx.xowa.addons.apps.cfgs.mgrs.dflts.*; import gplx.xowa.addons.apps.cfgs.mgrs.types.*; import gplx.xowa.addons.apps.cfgs.mgrs.execs.*; public class Xocfg_mgr { private final Xocfg_cache_mgr cache_mgr = new Xocfg_cache_mgr(); public Xocfg_mgr() { @@ -24,6 +24,7 @@ public class Xocfg_mgr { } public Xocfg_type_mgr Type_mgr() {return type_mgr;} private final Xocfg_type_mgr type_mgr = new Xocfg_type_mgr(); public Xocfg_dflt_mgr Dflt_mgr() {return dflt_mgr;} private final Xocfg_dflt_mgr dflt_mgr; + public Xocfg_exec_mgr Exec_mgr() {return exec_mgr;} private final Xocfg_exec_mgr exec_mgr = new Xocfg_exec_mgr(); public void Init_by_app(Xoa_app app) { cache_mgr.Init_by_app ( gplx.xowa.addons.apps.cfgs.dbs.Xocfg_db_app.New_conn(app) @@ -62,6 +63,10 @@ public class Xocfg_mgr { String rv = cache_mgr.Get_or(Ctx__app, key, null); return rv == null ? or : Int_.parse_or(rv, or); } + public long Get_long_app_or(String key, long or) { + String rv = cache_mgr.Get_or(Ctx__app, key, null); + return rv == null ? or : Long_.parse_or(rv, or); + } public String Get_str_app_or(String key, String or) {return cache_mgr.Get_or(Ctx__app, key, or);} public String Get_str_app(String key) {return Get_str(Xocfg_mgr.Ctx__app, key);} public boolean Get_bool_or(String ctx, String key, boolean or) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_tid.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_tid.java index 992c47026..8014eae0c 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_tid.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/enums/Xoitm_gui_tid.java @@ -69,6 +69,7 @@ public class Xoitm_gui_tid { 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 if (String_.Eq(db_type, "btn")) return Itm__btn.key; else return Itm__str.key; } } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/execs/Xocfg_exec_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/execs/Xocfg_exec_mgr.java new file mode 100644 index 000000000..9c77c9858 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/execs/Xocfg_exec_mgr.java @@ -0,0 +1,39 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.addons.apps.cfgs.mgrs.execs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.mgrs.*; +public class Xocfg_exec_mgr { + private final Ordered_hash hash = Ordered_hash_.New(); + public void Add(Gfo_invk invk, String... cmds) { + for (String cmd : cmds) { + hash.Add(cmd, invk); + } + } + public void Exec(String cmd, Object... args) { + Gfo_invk invk = (Gfo_invk)hash.Get_by(cmd); + + // create msg and add args + GfoMsg msg = GfoMsg_.new_parse_(cmd); + int args_len = args.length; + if (args_len > 0) { + for (int i = 0; i < args_len; i += 2) { + msg.Add((String)args[i], args[i + 1]); + } + } + Gfo_invk_.Invk_by_msg(invk, cmd, msg); + } +} diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java index 6559ca484..ff9f4cf9d 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java @@ -23,13 +23,13 @@ public class Xocfg_type_mgr { this.Lists__add("list:xowa.app.startup.window.mode", "previous", "maximized", "absolute", "relative", "default"); this.Lists__add("list:xowa.app.startup.pages.type", "blank", "xowa", "previous", "custom"); this.Lists__add("list:xowa.gui.window.html_box.adj_type", "none", "relative", "absolute"); - this.Lists__add("list:xowa.wiki.database.general.zip_mode", "text", "gzip", "bzip2", "xz"); + this.Lists__add("list:xowa.wiki.database.zip_mode", "text", "gzip", "bzip2", "xz"); this.Lists__add("list:xowa.html.wiki.portal.missing_class", Keyval_.new_("", "Show as blue link"), Keyval_.new_("new", "Show as red link"), Keyval_.new_("xowa_display_none", "Hide")); this.Lists__add("list:xowa.html.category.basic.missing_class", "normal", "hide", "red_link"); this.Lists__add("list:xowa.html.tidy.general.engine", "tidy", "jtidy"); - this.Lists__add("list:xowa.addon.http_server.general.file_retrieve_mode", Keyval_.new_("wait"), Keyval_.new_("skip"), Keyval_.new_("async_server", "async server")); + this.Lists__add("list:xowa.addon.http_server.file_retrieve_mode", Keyval_.new_("wait"), Keyval_.new_("skip"), Keyval_.new_("async_server", "async server")); this.Lists__add("list:xowa.addon.search_suggest.html_bar.search_mode", "Search", "AllPages", "AllPages_(v2)"); - this.Lists__add("list:xowa.addon.math.general.renderer", "MathJax", "LaTeX"); + this.Lists__add("list:xowa.addon.math.renderer", Keyval_.new_("mathjax","MathJax"), Keyval_.new_("latex", "LaTeX")); this.Lists__add("list:xowa.addon.scribunto.general.engine", "luaj", "lua"); } public void Lists__add(String key, String... vals) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java index 6f619cf77..c571dd22c 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java @@ -55,6 +55,9 @@ public class Xoedit_itm_html { ( "\n" , gui_type_key, key, lines[1]); break; + case Xoitm_gui_tid.Tid__btn: + bfr.Add_str_u8_fmt("", gui_type_key, key, key); + break; default: break; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_html.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_html.java index e7e70e73a..d652b0664 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_html.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_html.java @@ -19,8 +19,10 @@ package gplx.xowa.addons.apps.cfgs.specials.edits.pages; import gplx.*; import g import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; import gplx.xowa.addons.apps.cfgs.specials.edits.services.*; import gplx.xowa.addons.apps.cfgs.specials.edits.objs.*; class Xocfg_edit_html extends Xow_special_wtr__base { + private final Xocfg_edit_loader loader; private final String grp, ctx, lang; - public Xocfg_edit_html(String grp, String ctx, String lang) { + public Xocfg_edit_html(Xocfg_edit_loader loader, String grp, String ctx, String lang) { + this.loader = loader; this.grp = grp; this.ctx = ctx; this.lang = lang; @@ -28,8 +30,7 @@ class Xocfg_edit_html extends Xow_special_wtr__base { @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "app", "cfg", "edit");} @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xo.cfg_edit.page.mustache.html");} @Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) { - Xocfg_edit_loader mgr = Xocfg_edit_loader.New(app); - return mgr.Load_root(grp, ctx, lang); + return loader.Load_root(grp, ctx, lang); } @Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) { Xopg_tag_mgr head_tags = page_data.Head_tags(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_special.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_special.java index 1d5e81531..9cf11533a 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_special.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_special.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.addons.apps.cfgs.specials.edits.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.specials.*; import gplx.xowa.addons.apps.cfgs.specials.edits.*; import gplx.xowa.specials.*; import gplx.core.net.qargs.*; +import gplx.xowa.addons.apps.cfgs.specials.edits.services.*; public class Xocfg_edit_special implements Xow_special_page { public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary()); @@ -25,10 +26,16 @@ public class Xocfg_edit_special implements Xow_special_page { String ctx = url_args.Read_str_or("ctx", "app"); String lang = url_args.Read_str_or("lang", wiki.App().User().Wikii().Lang().Key_str()); + Xocfg_edit_loader loader = Xocfg_edit_loader.New(wiki.App()); if (String_.Eq(grp, "")) { grp = wiki.App().Cfg().Get_str_app("xowa.app.cfg.recent_page"); + if (!loader.Grp_key_exists(grp)) { + grp = "xowa.app.security"; + Gfo_usr_dlg_.Instance.Warn_many("", "", "cfg:grp_key not found; defaulting to xowa.app.security; key=~{0}", grp); + } + } - new Xocfg_edit_html(grp, ctx, lang).Bld_page_by_mustache(wiki.App(), page, this); + new Xocfg_edit_html(loader, grp, ctx, lang).Bld_page_by_mustache(wiki.App(), page, this); } Xocfg_edit_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java index 811b18412..cd15c8ac3 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java @@ -31,6 +31,8 @@ public class Xocfg_edit_loader { this.type_mgr = type_mgr; this.dflt_mgr = dflt_mgr; } + public boolean Grp_key_exists(String grp_key) {return db_app.Tbl__grp().Select_by_key_or_null(grp_key) != null; + } public Xoedit_root Load_root(String grp_key, String ctx, String lang) { // create lists Ordered_hash grp_temp = Ordered_hash_.New(); diff --git a/400_xowa/src/gplx/xowa/addons/apps/scripts/Xoscript_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/scripts/Xoscript_mgr.java index eb56e193a..1759f7a25 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/scripts/Xoscript_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/scripts/Xoscript_mgr.java @@ -30,7 +30,7 @@ public class Xoscript_mgr { } public void Write(Bry_bfr rv, Xow_wiki wiki, Xoa_page page) { // init - if (!wiki.App().Api_root().Addon().App__scripting__enabled()) return; + if (!wiki.Html__wtr_mgr().Scripting_enabled()) return; this.Init(wiki); if (xtn_mgr == null) return; diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xob_hdump_tbl_retriever__ns_to_db.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xob_hdump_tbl_retriever__ns_to_db.java index dda9e6bcf..0f9a69161 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xob_hdump_tbl_retriever__ns_to_db.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xob_hdump_tbl_retriever__ns_to_db.java @@ -22,8 +22,8 @@ class Xob_hdump_tbl_retriever__ns_to_db implements Xob_hdump_tbl_retriever { private final Xob_ns_to_db_mgr ns_to_db_mgr; public Xob_hdump_tbl_retriever__ns_to_db(Xowe_wiki wiki) { Xow_db_mgr core_data_mgr = wiki.Db_mgr_as_sql().Core_data_mgr(); - this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__html(core_data_mgr.Db__core()), core_data_mgr, wiki.Appe().Api_root().Bldr().Wiki().Import().Html_db_max()); - Xob_ns_file_itm.Init_ns_bldr_data(Xow_db_file_.Tid__html_data, wiki.Ns_mgr(), gplx.xowa.apps.apis.xowa.bldrs.imports.Xoapi_import.Ns_file_map__each); + this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__html(core_data_mgr.Db__core()), core_data_mgr, Xobldr_cfg.Max_size__html(wiki.App())); + Xob_ns_file_itm.Init_ns_bldr_data(Xow_db_file_.Tid__html_data, wiki.Ns_mgr(), gplx.xowa.bldrs.Xobldr_cfg.Ns_file_map__each); } public Xowd_html_tbl Get_html_tbl(Xow_ns ns, int prv_row_len) { Xow_db_file html_db = ns_to_db_mgr.Get_by_ns(ns.Bldr_data(), prv_row_len); // get html_db diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_data.java b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_data.java index da0f149f5..b359fcf7b 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_data.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/files/cmds/Xobldr__fsdb_db__create_data.java @@ -66,7 +66,7 @@ public class Xobldr__fsdb_db__create_data extends Xob_cmd__base implements Xob_c wmf_wkr.Fail_timeout_(0); // 1000; NOTE: set Fail_timeout here; DATE:2014-06-21; NOTE: do not put in ctor, or else will be 1st wkr; DATE:2014-06-28 } // trg_mnt_itm - this.trg_bin_db_max = app.Api_root().Bldr().Wiki().Import().File_db_max(); + this.trg_bin_db_max = Xobldr_cfg.Max_size__file(app); Io_url trg_file_dir_v1 = String_.Eq(trg_bin_mgr__fsdb_version, "v1") ? wiki.Fsys_mgr().File_dir().GenNewNameOnly(wiki.Domain_str() + "-prv") : wiki.Fsys_mgr().File_dir(); // NOTE: convoluted way of setting trg to -prv if trg_bin_mgr__fsdb_version_v1 is set; otherwise set to "en.wikipedia.org" which will noop; DATE:2015-12-02 Fsdb_db_mgr trg_db_mgr = Fsdb_db_mgr_.new_detect(wiki, wiki.Fsys_mgr().Root_dir(), trg_file_dir_v1); if (trg_db_mgr == null) trg_db_mgr = Fsdb_db_mgr__v2_bldr.Get_or_make(wiki, Bool_.Y); diff --git a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_html_db_wtr.java b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_html_db_wtr.java index 6ae1d13c2..c0cb97d2e 100644 --- a/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_html_db_wtr.java +++ b/400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_html_db_wtr.java @@ -27,7 +27,7 @@ class Xomp_html_db_wtr { private Xob_ns_file_itm ns_itm; public Xomp_html_db_wtr(Xowe_wiki wiki) { this.wiki = wiki; this.db_mgr = wiki.Data__core_mgr(); - this.len_max = wiki.Appe().Api_root().Bldr().Wiki().Import().Html_db_max(); + this.len_max = gplx.xowa.bldrs.Xobldr_cfg.Max_size__html(wiki.App()); } public int Cur_db_id() {return html_db.Id();} public Xowd_html_tbl Tbls__get_or_new(int ns_id, long html_len) { diff --git a/400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoa_ctg_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoa_ctg_mgr.java index f082685fd..1ca57498a 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoa_ctg_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/Xoa_ctg_mgr.java @@ -17,46 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.addons.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.ctgs.htmls.*; -public class Xoa_ctg_mgr implements Gfo_invk { - public void Init_by_app(Xoae_app app) {} - public boolean Pagecats_grouping_enabled() {return pagecats_grouping_enabled;} private boolean pagecats_grouping_enabled = false; - public byte Missing_ctg_cls_tid() {return missing_ctg_cls_tid;} private byte missing_ctg_cls_tid = Missing_ctg_cls_red_tid; - public byte[] Missing_ctg_cls_css() { - switch (missing_ctg_cls_tid) { - case Missing_ctg_cls_normal_tid: return Missing_ctg_cls_normal_css; - case Missing_ctg_cls_hide_tid: return Missing_ctg_cls_hide_css; - case Missing_ctg_cls_red_tid: return Missing_ctg_cls_red_css; - default: throw Err_.new_unhandled(missing_ctg_cls_tid); - } - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_missing_ctg_cls)) return Missing_ctg_cls_tid_print(missing_ctg_cls_tid); - else if (ctx.Match(k, Invk_missing_ctg_cls_)) missing_ctg_cls_tid = Missing_ctg_cls_tid_parse(m.ReadStr("v")); - else if (ctx.Match(k, Invk_missing_ctg_cls_list)) return Options_missing_ctg_cls_list; - else if (ctx.Match(k, Invk_pagecats_grouping_enabled)) return Yn.To_str(pagecats_grouping_enabled); - else if (ctx.Match(k, Invk_pagecats_grouping_enabled_)) pagecats_grouping_enabled = m.ReadYn("v"); - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String Invk_missing_ctg_cls = "missing_ctg_cls", Invk_missing_ctg_cls_ = "missing_ctg_cls_", Invk_missing_ctg_cls_list = "missing_ctg_cls_list", Invk_pagecats_grouping_enabled = "pagecats_grouping_enabled", Invk_pagecats_grouping_enabled_ = "pagecats_grouping_enabled_"; - private static final byte Missing_ctg_cls_normal_tid = 0, Missing_ctg_cls_hide_tid = 1, Missing_ctg_cls_red_tid = 2; - private static final String Missing_ctg_cls_normal_str = "normal", Missing_ctg_cls_hide_str = "hide", Missing_ctg_cls_red_str = "red_link"; - private static final byte[] Missing_ctg_cls_normal_css = Bry_.new_a7(".xowa-missing-category-entry {}"), Missing_ctg_cls_hide_css = Bry_.new_a7(".xowa-missing-category-entry {display: none;}"), Missing_ctg_cls_red_css = Bry_.new_a7(".xowa-missing-category-entry {color: red;}"); - private static Keyval[] Options_missing_ctg_cls_list = Keyval_.Ary(Keyval_.new_(Missing_ctg_cls_normal_str), Keyval_.new_(Missing_ctg_cls_hide_str), Keyval_.new_(Missing_ctg_cls_red_str)); - private static byte Missing_ctg_cls_tid_parse(String v) { - if (String_.Eq(v, Missing_ctg_cls_normal_str)) return Missing_ctg_cls_normal_tid; - else if (String_.Eq(v, Missing_ctg_cls_hide_str)) return Missing_ctg_cls_hide_tid; - else if (String_.Eq(v, Missing_ctg_cls_red_str)) return Missing_ctg_cls_red_tid; - else throw Err_.new_unhandled(v); - } - private static String Missing_ctg_cls_tid_print(byte v) { - switch (v) { - case Missing_ctg_cls_normal_tid: return Missing_ctg_cls_normal_str; - case Missing_ctg_cls_hide_tid: return Missing_ctg_cls_hide_str; - case Missing_ctg_cls_red_tid: return Missing_ctg_cls_red_str; - default: throw Err_.new_unhandled(v); - } - } +public class Xoa_ctg_mgr { public static final byte Version_null = Byte_.Zero, Version_1 = 1, Version_2 = 2; public static final byte Tid__subc = 0, Tid__file = 1, Tid__page = 2, Tid___max = 3; // SERIALIZED; cat_link.cl_type_id public static final byte Hidden_n = Byte_.Zero, Hidden_y = (byte)1; diff --git a/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/catpages/Xoctg_catpage_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/catpages/Xoctg_catpage_mgr.java index 92c936d23..d988ad4be 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/catpages/Xoctg_catpage_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/catpages/Xoctg_catpage_mgr.java @@ -25,7 +25,8 @@ public class Xoctg_catpage_mgr implements Gfo_invk { private final Hash_adp_bry cache = Hash_adp_bry.cs(); private final Xoctg_catpage_loader loader = new Xoctg_catpage_loader(); private final Xoctg_fmt_grp fmt_subcs = Xoctg_fmt_grp.New__subc(), fmt_pages = Xoctg_fmt_grp.New__page(), fmt_files = Xoctg_fmt_grp.New__file(); - private final Uca_ltr_extractor ltr_extractor = new Uca_ltr_extractor(true); + private final Uca_ltr_extractor ltr_extractor = new Uca_ltr_extractor(true); + private String missing_cls = Str__missing_cls__red; public int Grp_max() {return grp_max;} private int grp_max = Grp_max_dflt; public Xoctg_catpage_mgr(Xow_wiki wiki) { this.wiki = wiki; @@ -40,6 +41,12 @@ public class Xoctg_catpage_mgr implements Gfo_invk { default: throw Err_.new_unhandled(tid); } } + public byte[] Missing_ctg_cls_css() { + if (String_.Eq(missing_cls, Str__missing_cls__normal)) return Css__missing_cls__normal; + else if (String_.Eq(missing_cls, Str__missing_cls__hide)) return Css__missing_cls__hide; + else if (String_.Eq(missing_cls, Str__missing_cls__red)) return Css__missing_cls__red; + else throw Err_.new_unhandled(missing_cls); + } public void Free_mem_all() {cache.Clear();} public Xoctg_catpage_ctg Get_or_load_or_null(byte[] page_ttl, Xoctg_catpage_url catpage_url, Xoa_ttl cat_ttl, int limit) { // load categories from cat dbs; exit if not found @@ -81,10 +88,15 @@ public class Xoctg_catpage_mgr implements Gfo_invk { public void Grp_max_(int v) {grp_max = v;} // TEST: public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__collation_)) collation_mgr.Collation_name_(m.ReadStr("v")); + else if (ctx.Match(k, Cfg__missing_class)) missing_cls = m.ReadStr("v"); else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk__collation_ = "collation_"; public static int Grp_max_dflt = 200; private static final Object thread_lock = new Object(); + + private static final String Cfg__missing_class = "xowa.category.html.missing_class"; + private static final String Str__missing_cls__normal = "normal", Str__missing_cls__hide = "hide", Str__missing_cls__red = "red_link"; + private static final byte[] Css__missing_cls__normal = Bry_.new_a7(".xowa-missing-category-entry {}"), Css__missing_cls__hide = Bry_.new_a7(".xowa-missing-category-entry {display: none;}"), Css__missing_cls__red = Bry_.new_a7(".xowa-missing-category-entry {color: red;}"); } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/pageboxs/Xoctg_pagebox_wtr.java b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/pageboxs/Xoctg_pagebox_wtr.java index 75e936dcb..1c909f329 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/pageboxs/Xoctg_pagebox_wtr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/pageboxs/Xoctg_pagebox_wtr.java @@ -19,18 +19,20 @@ package gplx.xowa.addons.wikis.ctgs.htmls.pageboxs; import gplx.*; import gplx.x import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.addons.wikis.ctgs.htmls.pageboxs.singles.*; import gplx.xowa.addons.wikis.ctgs.htmls.pageboxs.doubles.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.addons.wikis.ctgs.dbs.*; -public class Xoctg_pagebox_wtr { +public class Xoctg_pagebox_wtr implements Gfo_invk { private final Xoctg_single_box single_box = new Xoctg_single_box(); private final Xoctg_double_box double_box = new Xoctg_double_box(); private final Xoctg_pagebox_hash hash = new Xoctg_pagebox_hash(); private final Xowd_page_itm tmp_page_itm = new Xowd_page_itm(); + public boolean Grouping_enabled() {return grouping_enabled;} private boolean grouping_enabled; public void Init_by_wiki(Xow_wiki wiki) { single_box.Init_by_wiki(wiki); double_box.Init_by_wiki(wiki); + wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__grouping_enabled); } - public void Write_pagebox(boolean double_mode, Bry_bfr bfr, Xow_wiki wiki, Xoa_page page, Xoctg_pagebox_itm[] pagebox_itms) { + public void Write_pagebox(Bry_bfr bfr, Xow_wiki wiki, Xoa_page page, Xoctg_pagebox_itm[] pagebox_itms) { try { - if (double_mode) + if (grouping_enabled) double_box.Write_pagebox(bfr, pagebox_itms); else single_box.Write_pagebox(bfr, pagebox_itms); @@ -72,4 +74,10 @@ public class Xoctg_pagebox_wtr { return hash.To_ary_and_clear(); } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Cfg__grouping_enabled)) this.grouping_enabled = m.ReadYn("v"); + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String Cfg__grouping_enabled = "xowa.category.html.grouping_enabled"; } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_read_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_read_mgr.java index df9cf79a6..86de5c657 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_read_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/pages/syncs/core/Xosync_read_mgr.java @@ -21,18 +21,25 @@ import gplx.xowa.htmls.*; import gplx.xowa.addons.wikis.pages.syncs.dbs.*; import gplx.xowa.apps.apis.xowa.addons.bldrs.*; import gplx.xowa.wikis.data.tbls.*; -public class Xosync_read_mgr { +public class Xosync_read_mgr implements Gfo_invk { + private boolean auto_enabled = false; + private int auto_interval = 60 * 24; // in minutes private final Xowd_page_itm tmp_dbpg = new Xowd_page_itm(); private Db_conn sync_conn; private Xosync_sync_tbl sync_tbl; + private final Xopg_match_mgr auto_page_matcher = new Xopg_match_mgr(); private final Xosync_update_mgr update_mgr = new Xosync_update_mgr(); + public void Init_by_wiki(Xow_wiki wiki) { + this.Auto_scope_("*:Main_Page"); + wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__auto__enabled, Cfg__auto__interval, Cfg__auto__scope); + } + public boolean Manual_enabled() {return manual_enabled;} private boolean manual_enabled; public void Auto_update(Xow_wiki wiki, Xoa_page page, Xoa_ttl page_ttl) { if (wiki.Domain_itm().Domain_type_id() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__home) return; if (wiki.Domain_itm().Domain_type_id() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__other) return; if (page_ttl.Ns().Id_is_special()) return; - Xoapi_sync_api sync_api = wiki.App().Api_root().Addon().Bldr().Sync(); - if (!sync_api.Auto_enabled()) return; - if (!sync_api.Auto_page_matcher().Match(wiki, page_ttl.Full_db())) return; + if (!auto_enabled) return; + if (!auto_page_matcher.Match(wiki, page_ttl.Full_db())) return; wiki.Data__core_mgr().Db__core().Tbl__page().Select_by_ttl(tmp_dbpg, page_ttl.Ns(), page_ttl.Page_db()); @@ -43,7 +50,7 @@ public class Xosync_read_mgr { sync_conn.Meta_tbl_assert(sync_tbl); } DateAdp sync_date = sync_tbl.Select_sync_date_or_min(tmp_dbpg.Id()); - if (Datetime_now.Get().Diff(sync_date).Total_mins().To_int() <= sync_api.Auto_interval()) return; + if (Datetime_now.Get().Diff(sync_date).Total_mins().To_int() <= auto_interval) return; Xoa_app app = wiki.App(); Xoh_page hpg = new Xoh_page(); @@ -53,4 +60,21 @@ public class Xosync_read_mgr { sync_tbl.Upsert(tmp_dbpg.Id(), Datetime_now.Get()); } + private void Auto_scope_(String v) { + auto_page_matcher.Set(v); + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Cfg__manual__enabled)) this.manual_enabled = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__auto__enabled)) this.auto_enabled = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__auto__interval)) this.auto_interval = m.ReadInt("v"); + else if (ctx.Match(k, Cfg__auto__scope)) Auto_scope_(m.ReadStr("v")); + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String + Cfg__manual__enabled = "xowa.wiki.import.page_sync.manual.enabled" + , Cfg__auto__enabled = "xowa.wiki.import.page_sync.auto.enabled" + , Cfg__auto__interval = "xowa.wiki.import.page_sync.auto.interval" + , Cfg__auto__scope = "xowa.wiki.import.page_sync.auto.scope" + ; } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon.java index 82d3a55c1..ff76f4abe 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_addon.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.addons.wikis.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.dbs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.parsers.*; import gplx.xowa.addons.wikis.searchs.searchers.rslts.*; import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; +import gplx.xowa.addons.wikis.searchs.gui.urlbars.*; import gplx.xowa.langs.cases.*; public class Srch_search_addon implements Xoax_addon_itm, Srch_search_addon_api { private final Srch_search_mgr search_mgr; diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_cfg.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_cfg.java deleted file mode 100644 index 92bc1d02d..000000000 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/Srch_search_cfg.java +++ /dev/null @@ -1,108 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.addons.wikis.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; -import gplx.core.net.*; import gplx.core.net.qargs.*; -import gplx.xowa.wikis.nss.*; -import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; import gplx.xowa.addons.wikis.searchs.searchers.*; -public class Srch_search_cfg implements Gfo_invk { - private final Xoae_app app; - private String args_default_str = "";// default args for search - private byte search_mode = Tid_search_mode_all_pages_v2; - private int all_pages_extend = 1000; // look ahead by 1000 - private int all_pages_min = 10000; // only look at pages > 10 kb - private boolean log_enabled = false; - public Srch_search_cfg(Xoae_app app) { - this.app = app; - ns_mgr.Add_main_if_empty(); - } - public boolean Enabled() {return enabled;} private boolean enabled = true; - public int Rslts_max() {return results_max;} private int results_max = 25; - public boolean Auto_wildcard() {return auto_wildcard;} private boolean auto_wildcard = false; // automatically add wild-card; EX: Earth -> *Earth* - public Srch_ns_mgr Ns_mgr() {return ns_mgr;} private final Srch_ns_mgr ns_mgr = new Srch_ns_mgr(); - public Gfo_qarg_itm[] Args_default() {return args_default;} private Gfo_qarg_itm[] args_default = Gfo_qarg_itm.Ary_empty; - public void Args_default_str_(String v) { - this.args_default_str = v; - byte[] bry = Bry_.new_a7("http://x.org/a?" + v); - Gfo_url tmp_url = app.User().Wikii().Utl__url_parser().Url_parser().Parse(bry, 0, bry.length); - args_default = tmp_url.Qargs(); - } - private Srch_search_addon addon; - public void Search(Xowe_wiki wiki, byte[] search_bry, byte[] cbk_func) { - if ( !enabled - || search_bry.length == 0 - ) return; - if (addon == null) - addon = Srch_search_addon.Get(wiki); - else { - if (!Bry_.Eq(wiki.Domain_bry(), addon.Wiki_domain())) // NOTE: suggest-box caches addon at wiki level; need to check if wiki has changed - addon = Srch_search_addon.Get(wiki); - } - // tab_close_mgr.Add(this); - Srch_search_qry qry = Srch_search_qry.New__suggest_box(wiki, this, search_bry); - Srch_rslt_cbk__suggest_box cbk = new Srch_rslt_cbk__suggest_box(wiki.Appe(), cbk_func, search_bry); - addon.Search(qry, cbk); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); - else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); - else if (ctx.Match(k, Invk_results_max)) return results_max; - else if (ctx.Match(k, Invk_results_max_)) results_max = m.ReadInt("v"); - else if (ctx.Match(k, Invk_search_mode)) return Search_mode_str(search_mode); - else if (ctx.Match(k, Invk_search_mode_)) search_mode = Search_mode_parse(m.ReadStr("v")); - else if (ctx.Match(k, Invk_search_mode_list)) return Options_search_mode_list; - else if (ctx.Match(k, Invk_all_pages_extend)) return all_pages_extend; - else if (ctx.Match(k, Invk_all_pages_extend_)) all_pages_extend = m.ReadInt("v"); - else if (ctx.Match(k, Invk_all_pages_min)) return all_pages_min; - else if (ctx.Match(k, Invk_all_pages_min_)) all_pages_min = m.ReadInt("v"); - else if (ctx.Match(k, Invk_auto_wildcard)) return Yn.To_str(auto_wildcard); - else if (ctx.Match(k, Invk_auto_wildcard_)) auto_wildcard = m.ReadYn("v"); - else if (ctx.Match(k, Invk_log_enabled)) return Yn.To_str(log_enabled); - else if (ctx.Match(k, Invk_log_enabled_)) log_enabled = m.ReadYn("v"); - else if (ctx.Match(k, Invk_args_default)) return args_default_str; - else if (ctx.Match(k, Invk_args_default_)) Args_default_str_(m.ReadStr("v")); - else return Gfo_invk_.Rv_unhandled; - return this; - } - public static final String - Invk_enabled = "enabled", Invk_enabled_ = "enabled_", Invk_results_max = "results_max", Invk_results_max_ = "results_max_" - , Invk_search_mode = "search_mode", Invk_search_mode_ = "search_mode_", Invk_search_mode_list = "search_mode_list" - , Invk_all_pages_extend = "all_pages_extend", Invk_all_pages_extend_ = "all_pages_extend_" - , Invk_all_pages_min = "all_pages_min", Invk_all_pages_min_ = "all_pages_min_" - , Invk_auto_wildcard = "auto_wildcard", Invk_auto_wildcard_ = "auto_wildcard_" - , Invk_log_enabled = "log_enabled", Invk_log_enabled_ = "log_enabled_" - , Invk_args_default = "args_default", Invk_args_default_ = "args_default_" - ; - private static final String Str_search_mode_search = "Search", Str_search_mode_all_pages_v1 = "AllPages", Str_search_mode_all_pages_v2 = "AllPages_(v2)"; - public static final int[] Ns_default_main = new int[] {Xow_ns_.Tid__main}; - public static final byte Tid_search_mode_all_pages_v1 = 0, Tid_search_mode_search = 1, Tid_search_mode_all_pages_v2 = 2; - private static Keyval[] Options_search_mode_list = Keyval_.Ary(Keyval_.new_(Str_search_mode_search), Keyval_.new_(Str_search_mode_all_pages_v1), Keyval_.new_(Str_search_mode_all_pages_v2)); - private static byte Search_mode_parse(String v) { - if (String_.Eq(v, Str_search_mode_search)) return Tid_search_mode_search; - else if (String_.Eq(v, Str_search_mode_all_pages_v1)) return Tid_search_mode_all_pages_v1; - else if (String_.Eq(v, Str_search_mode_all_pages_v2)) return Tid_search_mode_all_pages_v2; - else throw Err_.new_unhandled(v); - } - private static String Search_mode_str(byte v) { - switch (v) { - case Tid_search_mode_search: return Str_search_mode_search; - case Tid_search_mode_all_pages_v1: return Str_search_mode_all_pages_v1; - case Tid_search_mode_all_pages_v2: return Str_search_mode_all_pages_v2; - default: throw Err_.new_unhandled(v); - } - } -} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_mgr_.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_mgr_.java index 119d8ef3e..f0a43b787 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_mgr_.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/bldrs/Srch_bldr_mgr_.java @@ -24,7 +24,7 @@ public class Srch_bldr_mgr_ { Xob_bldr bldr = app.Bldr(); bldr.Cmd_mgr().Add_many(wiki, Xob_cmd_keys.Key_text_search_cmd); - int page_rank_iterations = app.Api_root().Bldr().Wiki().Import().Page_rank().Iteration_max(); + int page_rank_iterations = wiki.Import_mgr().Page_rank_iterations(); boolean page_rank_enabled = page_rank_iterations > 0; if (page_rank_enabled) { bldr.Cmd_mgr().Add(new gplx.xowa.bldrs.cmds.utils.Xob_download_cmd(bldr, wiki).Dump_type_(gplx.xowa.addons.bldrs.wmdumps.pagelinks.bldrs.Pglnk_bldr_cmd.Dump_type_key)); diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/gui/htmlbars/Srch_htmlbar_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/gui/htmlbars/Srch_htmlbar_mgr.java new file mode 100644 index 000000000..f31bd8b08 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/gui/htmlbars/Srch_htmlbar_mgr.java @@ -0,0 +1,54 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.addons.wikis.searchs.gui.htmlbars; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.gui.*; +import gplx.core.net.*; import gplx.core.net.qargs.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; import gplx.xowa.addons.wikis.searchs.searchers.*; +public class Srch_htmlbar_mgr implements Gfo_invk { + private Srch_search_addon addon; + private int results_max = 25; + public void Init_by_kit(Xoae_app app, gplx.gfui.kits.core.Gfui_kit kit) { + app.Cfg().Bind_many_app(this, Cfg__enabled, Cfg__results_max); + } + public boolean Enabled() {return enabled;} private boolean enabled = true; + public void Search(Xowe_wiki wiki, byte[] search_bry, byte[] cbk_func) { + if ( !enabled + || search_bry.length == 0 + ) return; + if (addon == null) + addon = Srch_search_addon.Get(wiki); + else { + if (!Bry_.Eq(wiki.Domain_bry(), addon.Wiki_domain())) // NOTE: suggest-box caches addon at wiki level; need to check if wiki has changed + addon = Srch_search_addon.Get(wiki); + } + // tab_close_mgr.Add(this); + Srch_search_qry qry = Srch_search_qry.New__suggest_box(wiki, wiki.App().Addon_mgr().Itms__search__special().Ns_mgr(), results_max, search_bry); + Srch_rslt_cbk__suggest_box cbk = new Srch_rslt_cbk__suggest_box(wiki.Appe(), cbk_func, search_bry); + addon.Search(qry, cbk); + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Cfg__enabled)) enabled = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__results_max)) results_max = m.ReadInt("v"); + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String + Cfg__enabled = "xowa.addon.search.html_bar.enabled" + , Cfg__results_max = "xowa.addon.search.html_bar.results_max" + ; +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/gui/urlbars/Srch_urlbar_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/gui/urlbars/Srch_urlbar_mgr.java new file mode 100644 index 000000000..d5fb49c83 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/gui/urlbars/Srch_urlbar_mgr.java @@ -0,0 +1,104 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.addons.wikis.searchs.gui.urlbars; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.gui.*; +import gplx.gfui.controls.standards.*; +import gplx.gfui.kits.core.*; +import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; +import gplx.xowa.guis.views.*; +public class Srch_urlbar_mgr implements Gfo_invk { // NOTE: needs to be app-level b/c binding to key events in urlbar + private Srch_search_addon addon; + private Xoae_app app; + private GfuiComboBox url_bar; + private boolean enabled = true; + private int max_results = 10; + private boolean auto_wildcard = true; + private final Srch_ns_mgr ns_mgr = new Srch_ns_mgr().Add_main_if_empty(); + private Srch_crt_scanner_syms syms = Srch_search_mgr.Scanner_syms; + private void Ns_ids_(String s) { + int[] ns_ids = Int_.Ary_empty; + if (String_.Eq(s, "*")) {} // leave as int[0]; ns_mgr will interpret as wildcard + else { + ns_ids = Int_.Ary_parse(s, ","); + } + ns_mgr.Add_by_int_ids(ns_ids); + if (addon != null) addon.Clear_rslts_cache(); // invalidate cache when ns changes; else ns_0 rslts will show up in ns_100; DATE:2016-03-24 + } + + public void Init_by_kit(Xoae_app app, Gfui_kit kit) { + // get url_bar and set defaults + this.url_bar = app.Gui_mgr().Browser_win().Url_box(); + url_bar.Items__jump_len_(5); + url_bar.Items__visible_rows_(10); + + this.app = app; + app.Cfg().Bind_many_app(this, Cfg__enabled, Cfg__max_results, Cfg__auto_wildcard, Cfg__ns_ids, Cfg__symbols, Cfg__visible_rows, Cfg__jump_len); + } + public void Search() { + if (!enabled) return; + Xog_tab_itm active_tab = app.Gui_mgr().Browser_win().Tab_mgr().Active_tab(); if (active_tab == null) return; + Xow_wiki wiki = active_tab.Wiki(); + + String search_str = url_bar.Text(); + url_bar.Text_fallback_(search_str); + + // remove "en.wikipedia.org/wiki/" + // String url_bgn = wiki.Domain_str() + gplx.xowa.htmls.hrefs.Xoh_href_.Str__wiki; + // if (String_.Has_at_bgn(search_str, url_bgn)) + // search_str = String_.Mid(search_str, String_.Len(url_bgn)); + if (String_.Len_eq_0(search_str)) { + url_bar.Items__update(String_.Ary_empty); + return; + } + + if (addon == null) { + addon = Srch_search_addon.Get(wiki); + } + else { + if (!Bry_.Eq(wiki.Domain_bry(), addon.Wiki_domain())) // NOTE: url_bar_api caches addon at wiki level; need to check if wiki has changed + addon = Srch_search_addon.Get(wiki); + } + if (addon.Db_mgr().Cfg().Version_id__needs_upgrade()) return; // exit early, else will flash "searching" message below; note that url-bar should not trigger upgrade; + url_bar.List_sel_idx_(0); // clear selected list item; EX: search "a" -> page down; sel is row #5 -> search "b" -> sel should not be #5; DATE:2016-03-24 + if (!url_bar.List_visible()) url_bar.Items__size_to_fit(max_results); // resize offscreen; handles 1st search when dropdown flashes briefly in middle of screen before being moved under bar; DATE:2016-03-24 + + Srch_search_qry qry = Srch_search_qry.New__url_bar(wiki, ns_mgr, auto_wildcard, max_results, Bry_.new_u8(search_str)); + Srch_rslt_cbk__url_bar cbk = new Srch_rslt_cbk__url_bar(app, url_bar, max_results); + Xoa_app_.Usr_dlg().Prog_one("", "", "searching (please wait): ~{0}", search_str); + addon.Search(qry, cbk); + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Cfg__enabled)) enabled = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__max_results)) max_results = m.ReadInt("v"); + else if (ctx.Match(k, Cfg__auto_wildcard)) auto_wildcard = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__ns_ids)) Ns_ids_(m.ReadStr("v")); + else if (ctx.Match(k, Cfg__symbols)) syms.Parse(m.ReadBry("v")); + else if (ctx.Match(k, Cfg__visible_rows)) url_bar.Items__visible_rows_(m.ReadInt("v")); + else if (ctx.Match(k, Cfg__jump_len)) url_bar.Items__jump_len_(m.ReadInt("v")); + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String + Cfg__enabled = "xowa.addon.search.url_bar.enabled" + , Cfg__max_results = "xowa.addon.search.url_bar.max_results" + , Cfg__auto_wildcard = "xowa.addon.search.url_bar.auto_wildcard" + , Cfg__ns_ids = "xowa.addon.search.url_bar.ns_ids" + , Cfg__symbols = "xowa.addon.search.url_bar.symbols" + , Cfg__visible_rows = "xowa.addon.search.url_bar.visible_rows" + , Cfg__jump_len = "xowa.addon.search.url_bar.jump_len" + ; +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_qry.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_qry.java index a72a73618..f3d8ac099 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_qry.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/Srch_search_qry.java @@ -17,6 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.addons.wikis.searchs.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.wikis.domains.*; +import gplx.xowa.addons.wikis.searchs.gui.htmlbars.*; public class Srch_search_qry { public Srch_search_qry(byte tid, Srch_ns_mgr ns_mgr, Srch_search_phrase phrase, int slab_bgn, int slab_end) { this.Tid = tid; @@ -32,17 +33,17 @@ public class Srch_search_qry { public final int Slab_end; // EX: 20 public static final byte Tid_len = 4, Tid__url_bar = 0, Tid__suggest_box = 1, Tid__search_page = 2, Tid__android = 3; - public static Srch_search_qry New__url_bar(Xow_wiki wiki, gplx.xowa.apps.apis.xowa.addons.searchs.Xoapi_url_bar cfg, byte[] search_orig) { - return new Srch_search_qry(Tid__url_bar, cfg.Ns_mgr(), Srch_search_phrase.New(wiki.Case_mgr(), search_orig, cfg.Auto_wildcard()), 0, cfg.Max_results()); + public static Srch_search_qry New__url_bar(Xow_wiki wiki, Srch_ns_mgr ns_mgr, boolean auto_wildcard, int max_results, byte[] search_orig) { + return new Srch_search_qry(Tid__url_bar, ns_mgr, Srch_search_phrase.New(wiki.Case_mgr(), search_orig, auto_wildcard), 0, max_results); } - public static Srch_search_qry New__suggest_box(Xow_wiki wiki, Srch_search_cfg cfg, byte[] search_orig) { - return new Srch_search_qry(Tid__suggest_box, cfg.Ns_mgr(), Srch_search_phrase.New(wiki.Case_mgr(), search_orig, Bool_.Y), 0, cfg.Rslts_max()); + public static Srch_search_qry New__suggest_box(Xow_wiki wiki, Srch_ns_mgr ns_mgr, int results_max, byte[] search_orig) { + return new Srch_search_qry(Tid__suggest_box, ns_mgr, Srch_search_phrase.New(wiki.Case_mgr(), search_orig, Bool_.Y), 0, results_max); } - public static Srch_search_qry New__search_page(Xow_domain_itm[] domains, Xow_wiki wiki, Srch_search_cfg cfg, boolean simple_search, byte[] search_orig, int slab_idx, int slab_len) { + public static Srch_search_qry New__search_page(Xow_domain_itm[] domains, Xow_wiki wiki, Srch_ns_mgr ns_mgr, boolean simple_search, byte[] search_orig, int slab_idx, int slab_len) { int slab_bgn = slab_idx * slab_len; int slab_end = slab_bgn + slab_len; boolean wildcard = simple_search; - return new Srch_search_qry(Tid__search_page, cfg.Ns_mgr(), Srch_search_phrase.New(wiki.Case_mgr(), search_orig, wildcard), slab_bgn, slab_end); + return new Srch_search_qry(Tid__search_page, ns_mgr, Srch_search_phrase.New(wiki.Case_mgr(), search_orig, wildcard), slab_bgn, slab_end); } public static Srch_search_qry New__drd(Xow_wiki wiki, Srch_ns_mgr ns_mgr, byte[] search_orig, int slab_bgn, int slab_end) { return new Srch_search_qry(Tid__android, ns_mgr, Srch_search_phrase.New(wiki.Case_mgr(), search_orig, Bool_.Y), slab_bgn, slab_end); diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java index 2233b6b45..733a9cbfb 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/searchers/cbks/Srch_rslt_cbk__url_bar.java @@ -22,13 +22,13 @@ import gplx.xowa.apps.apis.xowa.addons.searchs.*; public class Srch_rslt_cbk__url_bar implements Srch_rslt_cbk, Gfo_invk { private final Xoae_app app; private final GfuiComboBox url_bar; - private final Xoapi_url_bar url_bar_api; private String[] cbo_ary; private boolean rslts_finished; private int rslts_in_this_pass; private boolean rslts_shown = false; - public Srch_rslt_cbk__url_bar(Xoae_app app, GfuiComboBox url_bar, Xoapi_url_bar url_bar_api) { - this.app = app; this.url_bar = url_bar; this.url_bar_api = url_bar_api; + private int max_results; + public Srch_rslt_cbk__url_bar(Xoae_app app, GfuiComboBox url_bar, int max_results) { + this.app = app; this.url_bar = url_bar; this.max_results = max_results; } public void On_cancel() {} public void On_rslts_found(Srch_search_qry qry, Srch_rslt_list rslts_list, int rslts_bgn, int rslts_end) { @@ -41,8 +41,7 @@ public class Srch_rslt_cbk__url_bar implements Srch_rslt_cbk, Gfo_invk { && rslts_bgn != 0 // if first one, still update; blanks out results from previous try; && !rslts_finished) // if rslts_finished, still update to force cbo to "shrink" return; // exit now else will "blink" when refreshing; - int max_rslts = url_bar_api.Max_results(); - int cbo_len = max_rslts; // force cbo_len to be max_rslts; reduces "blinking" when typing by keeping visible area to same size + int cbo_len = max_results; // force cbo_len to be max_rslts; reduces "blinking" when typing by keeping visible area to same size if (rslts_list.Rslts_are_done) { // "shrink" cbo_len to rslts_len; EX: 10 wanted; 2 returned; shrink to 2 rows; cbo_len = rslts_len; } @@ -51,7 +50,7 @@ public class Srch_rslt_cbk__url_bar implements Srch_rslt_cbk, Gfo_invk { this.cbo_ary = new String[cbo_len]; for (int i = 0; i < cbo_len; ++i) { String cbo_itm = ""; - if (i >= max_rslts) break; + if (i >= max_results) break; if (i < rslts_len) { Srch_rslt_row rslt = rslts_list.Get_at(i); cbo_itm = String_.new_u8(rslt.Page_ttl_display(Bool_.N)); diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_cfg.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_cfg.java new file mode 100644 index 000000000..2122809ca --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_cfg.java @@ -0,0 +1,80 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.addons.wikis.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; +import gplx.core.net.*; import gplx.core.net.qargs.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; +import gplx.xowa.addons.wikis.searchs.searchers.*; +public class Srch_special_cfg implements Gfo_invk { + private Xoa_app app; + private final Xow_domain_crt_kv_itm_mgr multi_wikis_mgr = new Xow_domain_crt_kv_itm_mgr(); private byte[] multi_wikis_bry = Dflt_multi_wikis_bry; + private final Xow_domain_crt_kv_itm_mgr multi_sorts_mgr = new Xow_domain_crt_kv_itm_mgr(); private byte[] multi_sorts_bry = Dflt_multi_sorts_bry; + private String args_default_str = "";// default args for search + public Srch_special_cfg() { + multi_wikis_mgr.Parse_as_itms(multi_wikis_bry); + multi_sorts_mgr.Parse_as_arys(multi_sorts_bry); + ns_mgr.Add_main_if_empty(); + } + public void Init_by_kit(Xoae_app app, gplx.gfui.kits.core.Gfui_kit kit) { + this.app = app; + app.Cfg().Bind_many_app(this, Cfg__results_per_page, Cfg__async_db, Cfg__auto_wildcard, Cfg__args_default, Cfg__multi_wikis, Cfg__multi_sorts); + } + public int Results_per_page() {return results_per_page;} private int results_per_page = 100; + public boolean Async_db() {return async_db;} private boolean async_db = true; + public boolean Auto_wildcard() {return auto_wildcard;} private boolean auto_wildcard = false; // automatically add wild-card; EX: Earth -> *Earth* + public Gfo_qarg_itm[] Args_default() {return args_default;} private Gfo_qarg_itm[] args_default = Gfo_qarg_itm.Ary_empty; + public Srch_ns_mgr Ns_mgr() {return ns_mgr;} private final Srch_ns_mgr ns_mgr = new Srch_ns_mgr(); + public Xow_domain_crt_itm Multi_wikis_crt (Xow_domain_itm cur_domain) {return multi_wikis_mgr.Find_itm(cur_domain, cur_domain);} + public Xow_domain_crt_itm[] Multi_sorts_crt (Xow_domain_itm cur_domain) {return multi_sorts_mgr.Find_ary(cur_domain, cur_domain);} + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Cfg__results_per_page)) results_per_page = m.ReadInt("v"); + else if (ctx.Match(k, Cfg__async_db)) async_db = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__auto_wildcard)) auto_wildcard = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__args_default)) { + this.args_default_str = m.ReadStr("v"); + byte[] bry = Bry_.new_a7("http://x.org/a?" + args_default_str); + Gfo_url tmp_url = app.User().Wikii().Utl__url_parser().Url_parser().Parse(bry, 0, bry.length); + this.args_default = tmp_url.Qargs(); + } + else if (ctx.Match(k, Cfg__multi_wikis)) { + byte[] multi_wikis_temp = m.ReadBry("v"); + if (multi_wikis_mgr.Parse_as_itms(multi_wikis_temp)) { + this.multi_wikis_bry = multi_wikis_temp; + } + } + else if (ctx.Match(k, Cfg__multi_sorts)) { + byte[] multi_sorts_temp = m.ReadBry("v"); + if (multi_sorts_mgr.Parse_as_arys(multi_sorts_temp)) { + this.multi_sorts_bry = multi_sorts_temp; + } + } + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String + Cfg__results_per_page = "xowa.addon.search.results_per_page" + , Cfg__async_db = "xowa.addon.search.async_db" + , Cfg__auto_wildcard = "xowa.addon.search.auto_wildcard" + , Cfg__args_default = "xowa.addon.search.args_default" + , Cfg__multi_wikis = "xowa.addon.search.multi_wikis" + , Cfg__multi_sorts = "xowa.addon.search.multi_sorts" + ; + public static final byte[] + Dflt_multi_wikis_bry = Bry_.new_a7("|") + , Dflt_multi_sorts_bry = Bry_.new_a7("|,*.wikipedia,*.wikivoyage,*.wiktionary,*.wikisource,*.wikiquote,*.wikibooks,*.wikiversity,*.wikinews") + ; +} diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java index 5a5a7d52a..9ec069e5a 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/Srch_special_page.java @@ -16,30 +16,19 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.addons.wikis.searchs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; -import gplx.core.primitives.*; import gplx.xowa.apps.apis.xowa.specials.*; +import gplx.core.primitives.*; import gplx.xowa.addons.wikis.searchs.specials.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; import gplx.xowa.specials.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; -public class Srch_special_page implements Xow_special_page, Gfo_invk, Gfo_evt_itm { - private final Xoae_app app; private final Xow_domain_itm wiki_domain; private final Xoapi_search search_api; - private final Srch_special_searcher search_mgr; private final Srch_qarg_mgr qargs_mgr; - private Xow_domain_itm[] search_domain_ary; - public Srch_special_page(Xowe_wiki wiki) { - this.ev_mgr = new Gfo_evt_mgr(this); - this.app = wiki.Appe(); - this.wiki_domain = wiki.Domain_itm(); - this.search_mgr = new Srch_special_searcher(wiki.Appe().Wiki_mgr()); - this.search_api = wiki.Appe().Api_root().Special().Search(); - this.qargs_mgr = new Srch_qarg_mgr(app.Gui_mgr().Search_cfg().Ns_mgr()); - Gfo_evt_mgr_.Sub_same_many(search_api, this, Xoapi_search.Evt_multi_wikis_changed, Xoapi_search.Evt_multi_wikis_changed); - } - public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private final Gfo_evt_mgr ev_mgr; +import gplx.xowa.addons.wikis.searchs.gui.htmlbars.*; +public class Srch_special_page implements Xow_special_page { public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__search;} public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) { Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei; - if (search_domain_ary == null) Multi_wikis_changed(); + Srch_special_cfg search_cfg = wiki.Appe().Addon_mgr().Itms__search__special(); + Xow_domain_itm[] search_domain_ary = Get_domains(wiki.Appe(), search_cfg, wiki.Domain_itm()); // get args from urls while applying defaults from search_cfg - Srch_search_cfg search_cfg = wiki.Appe().Gui_mgr().Search_cfg(); + Srch_qarg_mgr qargs_mgr = new Srch_qarg_mgr(wiki.App().Addon_mgr().Itms__search__special().Ns_mgr()); qargs_mgr.Clear(); qargs_mgr.Parse(search_cfg.Args_default()); qargs_mgr.Parse(url.Qargs_ary()); @@ -68,6 +57,7 @@ public class Srch_special_page implements Xow_special_page, Gfo_invk, Gfo_evt_it // page not found, or explicit_search invoked if (search_page.Db().Page().Exists_n() || fulltext_invoked) { + Srch_special_searcher search_mgr = new Srch_special_searcher(wiki.Appe().Wiki_mgr()); if (qargs_mgr.Cancel() != null) { // cancel any existing searches search_mgr.Search__cancel(qargs_mgr.Cancel()); page.Tab_data().Cancel_show_y_(); @@ -75,8 +65,8 @@ public class Srch_special_page implements Xow_special_page, Gfo_invk, Gfo_evt_it } page.Html_data().Html_restricted_n_(); page.Html_data().Xtn_search_text_(search_raw); - Srch_search_qry qry = Srch_search_qry.New__search_page(search_domain_ary, wiki, search_cfg, qargs_mgr.Simple_search(), search_raw, qargs_mgr.Slab_idx(), search_api.Results_per_page()); - search_mgr.Search(wiki, page, search_api.Async_db(), search_domain_ary, qry); + Srch_search_qry qry = Srch_search_qry.New__search_page(search_domain_ary, wiki, wiki.App().Addon_mgr().Itms__search__special().Ns_mgr(), qargs_mgr.Simple_search(), search_raw, qargs_mgr.Slab_idx(), search_cfg.Results_per_page()); + search_mgr.Search(wiki, page, search_cfg.Async_db(), search_domain_ary, qry); } // page found; return it; else { @@ -89,24 +79,6 @@ public class Srch_special_page implements Xow_special_page, Gfo_invk, Gfo_evt_it page.Redirect_trail().Itms__add__article(redirect_url, search_ttl, null); } } - private void Multi_wikis_changed() { - Xow_domain_crt_itm crt = search_api.Multi_wikis_crt(wiki_domain); - this.search_domain_ary = Get_by_crt(app.Usere().Wiki().Xwiki_mgr(), wiki_domain, crt); - if (search_domain_ary.length == 0) search_domain_ary = new Xow_domain_itm[] {wiki_domain}; // default to current if bad input - Multi_sorts_changed(); - } - private void Multi_sorts_changed() { - Xow_domain_crt_itm[] ary = search_api.Multi_sorts_crt(wiki_domain); - if (ary == null) return; // default to no sort if bad input - Xow_domain_sorter__manual sorter = new Xow_domain_sorter__manual(wiki_domain, ary); - Xow_domain_sorter__manual.Sort(sorter, search_domain_ary); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Xoapi_search.Evt_multi_wikis_changed)) Multi_wikis_changed(); - else if (ctx.Match(k, Xoapi_search.Evt_multi_sorts_changed)) Multi_sorts_changed(); - else return Gfo_invk_.Rv_unhandled; - return this; - } public static final byte Match_tid_all = 0, Match_tid_bgn = 1; public static final byte Version_null = 0, Version_1 = 1, Version_2 = 2; private static final byte[] Qarg__fulltext = Bry_.new_a7("fulltext"), Qarg__fulltext__y = Bry_.new_a7("y"); @@ -123,6 +95,17 @@ public class Srch_special_page implements Xow_special_page, Gfo_invk, Gfo_evt_it } return (Xow_domain_itm[])rv.To_ary_and_clear(Xow_domain_itm.class); } + private static Xow_domain_itm[] Get_domains(Xoae_app app, Srch_special_cfg cfg, Xow_domain_itm wiki_domain) { + Xow_domain_crt_itm crt = cfg.Multi_wikis_crt(wiki_domain); + Xow_domain_itm[] rv = Get_by_crt(app.Usere().Wiki().Xwiki_mgr(), wiki_domain, crt); + if (rv.length == 0) rv = new Xow_domain_itm[] {wiki_domain}; // default to current if bad input + + Xow_domain_crt_itm[] ary = cfg.Multi_sorts_crt(wiki_domain); + if (ary == null) return Xow_domain_itm_.Ary_empty; // default to no sort if bad input + Xow_domain_sorter__manual sorter = new Xow_domain_sorter__manual(wiki_domain, ary); + Xow_domain_sorter__manual.Sort(sorter, rv); + return rv; + } public Xow_special_page Special__clone() {return this;} } diff --git a/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr_tst.java b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr_tst.java index b7e4ccb03..6685723ba 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/searchs/specials/htmls/Srch_html_page_bldr_tst.java @@ -60,7 +60,7 @@ class Srch_html_page_bldr_fxt { } public void Test_paging(boolean fwd, int slab_idx, String expd) { byte[] search_orig = Bry_.new_a7("A"); - Srch_search_qry qry = Srch_search_qry.New__search_page(Xow_domain_itm_.Ary_empty, wiki, app.Gui_mgr().Search_cfg(), Bool_.N, search_orig, slab_idx, 100); + Srch_search_qry qry = Srch_search_qry.New__search_page(Xow_domain_itm_.Ary_empty, wiki, app.Addon_mgr().Itms__search__special().Ns_mgr(), Bool_.N, search_orig, slab_idx, 100); html_mgr.Init_by_wiki(wiki, wiki.Lang().Num_mgr(), qry); byte[] paging_link = html_mgr.Bld_paging_link(fwd); Tfds.Eq(expd, String_.new_a7(paging_link)); diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java b/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java index 281c09453..1ac8088b1 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java @@ -30,6 +30,11 @@ public class Xoa_sys_cfg implements Gfo_invk { } return this; } private byte[] lang_key = Xol_lang_itm_.Key_en; + public void Init_by_app(Xoa_app app) { + app.Cfg().Type_mgr().Lists__add("list:" + Cfg__lang, Options_list_lang_.new_()); + app.Cfg().Bind_many_app(this, Cfg__lang); + } + private static final String Cfg__lang = "xowa.gui.lang.name"; public int Options_version() {return options_version;} public Xoa_sys_cfg Options_version_(int v) {options_version = v; return this;} private int options_version = 1; public Keyval[] Options_lang_list() {if (options_lang_list == null) options_lang_list = Options_list_lang_.new_(); return options_lang_list;} private Keyval[] options_lang_list; public long Free_mem_when() {return free_mem_when;} long free_mem_when; @@ -42,6 +47,7 @@ public class Xoa_sys_cfg implements Gfo_invk { else if (ctx.Match(k, Invk_lang_list)) return Options_lang_list(); else if (ctx.Match(k, Invk_options_version)) return options_version; else if (ctx.Match(k, Invk_options_version_)) options_version = m.ReadInt("v"); + else if (ctx.Match(k, Cfg__lang)) Lang_(m.ReadBry("v")); else return Gfo_invk_.Rv_unhandled; return this; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java index b0f967f91..6576c1d17 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java +++ b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java @@ -46,7 +46,6 @@ public class Xoapi_root implements Gfo_invk { public Xoapi_html Html() {return html_api;} private final Xoapi_html html_api = new Xoapi_html(); public Xoapi_bldr Bldr() {return bldr_api;} private final Xoapi_bldr bldr_api = new Xoapi_bldr(); public Xoapi_usr Usr() {return usr_api;} private final Xoapi_usr usr_api = new Xoapi_usr(); - public Xoapi_special Special() {return special_api;} private final Xoapi_special special_api = new Xoapi_special(); public Xoapi_xtns Xtns() {return xtns_api;} private final Xoapi_xtns xtns_api = new Xoapi_xtns(); public Xoapi_app_wikis Wikis() {return app_wikis;} private final Xoapi_app_wikis app_wikis = new Xoapi_app_wikis(); public String Test_str() {return test_str;} public void Test_str_(String v) {test_str = v;} private String test_str; // TEST @@ -63,7 +62,6 @@ public class Xoapi_root implements Gfo_invk { else if (ctx.Match(k, Invk_gui)) return gui_api; else if (ctx.Match(k, Invk_html)) return html_api; else if (ctx.Match(k, Invk_usr)) return usr_api; - else if (ctx.Match(k, Invk_special)) return special_api; else if (ctx.Match(k, Invk_xtns)) return xtns_api; else if (ctx.Match(k, Invk_exec)) Exec(m.ReadStr("v")); else if (ctx.Match(k, Invk_wikis)) return app_wikis; @@ -74,7 +72,7 @@ public class Xoapi_root implements Gfo_invk { private static final String Invk_exec = "exec" , Invk_app = "app", Invk_addon = "addon" - , Invk_bldr = "bldr", Invk_nav = "nav", Invk_gui = "gui", Invk_html = "html", Invk_usr = "usr", Invk_special = "special", Invk_xtns = "xtns" + , Invk_bldr = "bldr", Invk_nav = "nav", Invk_gui = "gui", Invk_html = "html", Invk_usr = "usr", Invk_xtns = "xtns" , Invk_test_str = "test_str", Invk_test_str_ = "test_str_" , Invk_wikis = "wikis" ; diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_addon.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_addon.java index 036d98113..e38037ea9 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_addon.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_addon.java @@ -21,17 +21,11 @@ public class Xoapi_addon implements Gfo_invk { public void Ctor_by_app(Xoa_app app) {} public Xoapi_addon_search Search() {return search;} private final Xoapi_addon_search search = new Xoapi_addon_search(); public Xoapi_addon_bldr Bldr() {return bldr;} private final Xoapi_addon_bldr bldr = new Xoapi_addon_bldr(); - public boolean Wikis__ctgs__hidden_enabled() {return wikis__ctgs__hidden_enabled;} private boolean wikis__ctgs__hidden_enabled = false; - public boolean App__scripting__enabled() {return app__scripting__enabled;} private boolean app__scripting__enabled = false; public String App__update__restart_cmd() {return app__update__restart_cmd;} private String app__update__restart_cmd = ""; public String App__update__update_db_src() {return app__update__update_db_src;} private String app__update__update_db_src = "http://xowa.org"; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__search)) return search; else if (ctx.Match(k, Invk__bldr)) return bldr; - else if (ctx.Match(k, Invk__wikis__ctgs__hidden_enabled)) return Yn.To_str(wikis__ctgs__hidden_enabled); - else if (ctx.Match(k, Invk__wikis__ctgs__hidden_enabled_)) wikis__ctgs__hidden_enabled = m.ReadYn("v"); - else if (ctx.Match(k, Invk__app__scripting__enabled)) return Yn.To_str(app__scripting__enabled); - else if (ctx.Match(k, Invk__app__scripting__enabled_)) app__scripting__enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk__app__update__restart_cmd)) return app__update__restart_cmd; else if (ctx.Match(k, Invk__app__update__restart_cmd_)) app__update__restart_cmd = m.ReadStr("v"); else if (ctx.Match(k, Invk__app__update__update_db_src)) return app__update__update_db_src; @@ -40,10 +34,6 @@ public class Xoapi_addon implements Gfo_invk { return this; } private static final String Invk__search = "search", Invk__bldr = "bldr" - , Invk__wikis__ctgs__hidden_enabled = "wikis__ctgs__hidden_enabled" - , Invk__wikis__ctgs__hidden_enabled_ = "wikis__ctgs__hidden_enabled_" - , Invk__app__scripting__enabled = "app__scripting__enabled" - , Invk__app__scripting__enabled_ = "app__scripting__enabled_" , Invk__app__update__restart_cmd = "app__update__restart_cmd" , Invk__app__update__restart_cmd_ = "app__update__restart_cmd_" , Invk__app__update__update_db_src = "app__update__update_db_src" diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java index db10ebe19..180e47e0f 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java @@ -22,19 +22,14 @@ public class Xoapi_html implements Gfo_invk { page.Ctor_by_app(app); } public void Init_by_kit(Xoae_app app) { - tidy.Init_by_kit(app); modules.Init_by_kit(app); } - public Xoapi_tidy Tidy() {return tidy;} private final Xoapi_tidy tidy = new Xoapi_tidy(); public Xoapi_modules Modules() {return modules;} private final Xoapi_modules modules = new Xoapi_modules(); - public Xoapi_skins Skins() {return skins;} private final Xoapi_skins skins = new Xoapi_skins(); public Xoapi_page Page() {return page;} private final Xoapi_page page = new Xoapi_page(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_tidy)) return tidy; - else if (ctx.Match(k, Invk_modules)) return modules; - else if (ctx.Match(k, Invk_skins)) return skins; + if (ctx.Match(k, Invk_modules)) return modules; else if (ctx.Match(k, Invk_page)) return page; else return Gfo_invk_.Rv_unhandled; } - private static final String Invk_tidy = "tidy", Invk_modules = "modules", Invk_skins = "skins", Invk_page = "page"; + private static final String Invk_modules = "modules", Invk_page = "page"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java deleted file mode 100644 index 5e652bd41..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; -import gplx.xowa.apps.apis.xowa.specials.*; -public class Xoapi_special implements Gfo_invk { - public void Ctor_by_app(Xoae_app app) { - } - public void Init_by_kit(Xoae_app app) { - } - public Xoapi_search Search() {return search;} private Xoapi_search search = new Xoapi_search(); - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_search)) return search; - else return Gfo_invk_.Rv_unhandled; - } - private static final String Invk_search = "search"; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java index 139fd3828..2feb14d1c 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java @@ -20,6 +20,7 @@ import gplx.xowa.apps.apis.xowa.xtns.*; public class Xoapi_xtns implements Gfo_invk { public void Init_by_kit(Xoae_app app) { scribunto.Init_by_kit(app); + wikibase.Init_by_app(app); } public Xoapi_scribunto Scribunto() {return scribunto;} private final Xoapi_scribunto scribunto = new Xoapi_scribunto(); public Xoapi_wikibase Wikibase() {return wikibase;} private final Xoapi_wikibase wikibase = new Xoapi_wikibase(); diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_addon_bldr.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_addon_bldr.java index f8d141d08..5a2a240f3 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_addon_bldr.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_addon_bldr.java @@ -19,15 +19,9 @@ package gplx.xowa.apps.apis.xowa.addons; import gplx.*; import gplx.xowa.*; impo import gplx.xowa.apps.apis.xowa.addons.bldrs.*; public class Xoapi_addon_bldr implements Gfo_invk { public Xoapi_central_api Central() {return central;} private final Xoapi_central_api central = new Xoapi_central_api(); - public Xoapi_sync_api Sync() {return sync;} private final Xoapi_sync_api sync = new Xoapi_sync_api(); - public boolean Wikis__ctgs__hidden_enabled() {return wikis__ctgs__hidden_enabled;} private boolean wikis__ctgs__hidden_enabled = false; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk__central)) return central; - else if (ctx.Match(k, Invk__sync)) return sync; else return Gfo_invk_.Rv_unhandled; } - private static final String - Invk__central = "central" - , Invk__sync = "sync" - ; + private static final String Invk__central = "central"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_addon_search.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_addon_search.java index ddd992e14..f18216490 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_addon_search.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/Xoapi_addon_search.java @@ -19,18 +19,12 @@ package gplx.xowa.apps.apis.xowa.addons; import gplx.*; import gplx.xowa.*; impo import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; import gplx.xowa.apps.apis.xowa.addons.searchs.*; public class Xoapi_addon_search implements Gfo_invk { - public Xoapi_addon_search() {} - public Xoapi_url_bar Url_bar() {return url_bar;} private final Xoapi_url_bar url_bar = new Xoapi_url_bar(); @gplx.Internal protected Xoapi_search_box Search_box() {return search_box;} private final Xoapi_search_box search_box = new Xoapi_search_box(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk__url_bar)) return url_bar; - else if (ctx.Match(k, Invk__search_box)) return search_box; + if (ctx.Match(k, Invk__search_box)) return search_box; else return Gfo_invk_.Rv_unhandled; } - private static final String - Invk__url_bar = "url_bar" - , Invk__search_box = "search_box" - ; + private static final String Invk__search_box = "search_box"; } class Xoapi_search_box implements Gfo_invk { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/bldrs/Xoapi_sync_api.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/bldrs/Xoapi_sync_api.java deleted file mode 100644 index 64327fdc3..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/bldrs/Xoapi_sync_api.java +++ /dev/null @@ -1,51 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.addons.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.addons.*; -public class Xoapi_sync_api implements Gfo_invk { - private final Xopg_match_mgr auto_page_matcher = new Xopg_match_mgr(); - public Xoapi_sync_api() { - this.Auto_scope_("*:Main_Page"); - } - public boolean Manual_enabled() {return manual_enabled;} private boolean manual_enabled = false; - public boolean Auto_enabled() {return auto_enabled;} private boolean auto_enabled = false; - public int Auto_interval() {return auto_interval;} private int auto_interval = 60 * 24; // in minutes - public String Auto_scope() {return auto_scope;} private String auto_scope; - private void Auto_scope_(String v) { - this.auto_scope = v; - auto_page_matcher.Set(v); - } - public Xopg_match_mgr Auto_page_matcher() {return auto_page_matcher;} - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk__manual_enabled)) return Yn.To_str(manual_enabled); - else if (ctx.Match(k, Invk__manual_enabled_)) manual_enabled = m.ReadBool("v"); - else if (ctx.Match(k, Invk__auto_enabled)) return Yn.To_str(auto_enabled); - else if (ctx.Match(k, Invk__auto_enabled_)) auto_enabled = m.ReadBool("v"); - else if (ctx.Match(k, Invk__auto_interval)) return Int_.To_str(auto_interval); - else if (ctx.Match(k, Invk__auto_interval_)) auto_interval = m.ReadInt("v"); - else if (ctx.Match(k, Invk__auto_scope)) return auto_scope; - else if (ctx.Match(k, Invk__auto_scope_)) Auto_scope_(m.ReadStr("v")); - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String - Invk__manual_enabled = "manual_enabled" , Invk__manual_enabled_ = "manual_enabled_" - , Invk__auto_enabled = "auto_enabled" , Invk__auto_enabled_ = "auto_enabled_" - , Invk__auto_interval = "auto_interval" , Invk__auto_interval_ = "auto_interval_" - , Invk__auto_scope = "auto_scope" , Invk__auto_scope_ = "auto_scope_" - ; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/searchs/Xoapi_url_bar.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/searchs/Xoapi_url_bar.java deleted file mode 100644 index 6185d8d1b..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/addons/searchs/Xoapi_url_bar.java +++ /dev/null @@ -1,78 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.addons.searchs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.addons.*; -import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.crts.*; -public class Xoapi_url_bar implements Gfo_invk, Gfo_evt_mgr_owner { - public Xoapi_url_bar() { - this.evt_mgr = new Gfo_evt_mgr(this); - } - public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr; - public boolean Enabled() {return enabled;} private boolean enabled = true; - public int Search_mode() {return search_mode;} private int search_mode = Xoapi_search_mode_.Tid__title_word; - public int Max_results() {return max_results;} private int max_results = 10; - public boolean Auto_wildcard() {return auto_wildcard;} private boolean auto_wildcard = true; - public Srch_ns_mgr Ns_mgr() {return ns_mgr;} private final Srch_ns_mgr ns_mgr = new Srch_ns_mgr().Add_main_if_empty(); - public Srch_crt_scanner_syms Syms() {return syms;} private Srch_crt_scanner_syms syms = Srch_search_mgr.Scanner_syms; - public Keyval[] Operators() {return symbols;} private Keyval[] symbols = Keyval_.Ary_empty; - public int Visible_rows() {return visible_rows;} private int visible_rows = 10; - public int Jump_len() {return jump_len;} private int jump_len = 5; - private void Ns_ids_(String s) { - int[] ns_ids = Int_.Ary_empty; - if (String_.Eq(s, "*")) {} // leave as int[0]; ns_mgr will interpret as wildcard - else { - ns_ids = Int_.Ary_parse(s, ","); - } - ns_mgr.Add_by_int_ids(ns_ids); - Gfo_evt_mgr_.Pub(this, Evt__ns_ids_changed); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk__enabled)) return Yn.To_str(enabled); - else if (ctx.Match(k, Invk__enabled_)) enabled = m.ReadBool("v"); - else if (ctx.Match(k, Invk__search_mode)) return Xoapi_search_mode_.To_str(search_mode); - else if (ctx.Match(k, Invk__search_mode_)) search_mode = Xoapi_search_mode_.To_int(m.ReadStr("v")); - else if (ctx.Match(k, Invk__max_results)) return Int_.To_str(max_results); - else if (ctx.Match(k, Invk__max_results_)) max_results = m.ReadInt("v"); - else if (ctx.Match(k, Invk__auto_wildcard)) return Yn.To_str(auto_wildcard); - else if (ctx.Match(k, Invk__auto_wildcard_)) auto_wildcard = m.ReadBool("v"); - else if (ctx.Match(k, Invk__ns_ids)) return Int_.To_str(ns_mgr.To_int_ary(), "|"); - else if (ctx.Match(k, Invk__ns_ids_)) Ns_ids_(m.ReadStr("v")); - else if (ctx.Match(k, Invk__symbols)) return String_.new_u8(syms.To_bry()); - else if (ctx.Match(k, Invk__symbols_)) syms.Parse(m.ReadBry("v")); - else if (ctx.Match(k, Invk__visible_rows)) return Int_.To_str(visible_rows); - else if (ctx.Match(k, Invk__visible_rows_)) {visible_rows = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt__visible_rows_changed, visible_rows);} - else if (ctx.Match(k, Invk__jump_len)) return Int_.To_str(jump_len); - else if (ctx.Match(k, Invk__jump_len_)) {jump_len = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt__jump_len_changed, jump_len);} - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String - Invk__enabled = "enabled" , Invk__enabled_ = "enabled_" - , Invk__search_mode = "search_mode" , Invk__search_mode_ = "search_mode_" - , Invk__max_results = "max_results" , Invk__max_results_ = "max_results_" - , Invk__auto_wildcard = "auto_wildcard" , Invk__auto_wildcard_ = "auto_wildcard_" - , Invk__ns_ids = "ns_ids" , Invk__ns_ids_ = "ns_ids_" - , Invk__symbols = "symbols" , Invk__symbols_ = "symbols_" - , Invk__visible_rows = "visible_rows" , Invk__visible_rows_ = "visible_rows_" - , Invk__jump_len = "jump_len" , Invk__jump_len_ = "jump_len_" - ; - public static final String - Evt__visible_rows_changed = "visible_rows_changed" - , Evt__jump_len_changed = "jump_len_changed" - , Evt__ns_ids_changed = "ns_ids_changed" - ; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java index c99348617..5998b7989 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java @@ -17,92 +17,20 @@ along with this program. If not, see . */ package gplx.xowa.apps.apis.xowa.bldrs.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; import gplx.core.ios.*; import gplx.core.ios.streams.*; -import gplx.xowa.wikis.data.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.page_ranks.*; +import gplx.xowa.wikis.data.*; public class Xoapi_import implements Gfo_invk { - public Xoapi_page_rank Page_rank() {return page_rank;} private final Xoapi_page_rank page_rank = new Xoapi_page_rank(); - public long Layout_all_max() {return layout_all_max;} private long layout_all_max = 0; // disable by default; may set to 200 MB in future - public long Layout_text_max() {return layout_text_max;} private long layout_text_max = Io_size_.To_long_by_int_mb(1500); // 1.0 GB - public long Layout_html_max() {return layout_html_max;} private long layout_html_max = Io_size_.To_long_by_int_mb(1500); // 1.0 GB - public long Layout_file_max() {return layout_file_max;} private long layout_file_max = Io_size_.To_long_by_int_mb(1500); // 1.0 GB public long Cat_link_db_max() {return cat_link_db_max;} private long cat_link_db_max = Io_size_.To_long_by_int_mb(1500); // 3.6 GB; v1 - public long Text_db_max() {return text_db_max;} private long text_db_max = Io_size_.To_long_by_int_mb(1500); // 3.0 GB; v1 - public long Html_db_max() {return html_db_max;} private long html_db_max = Io_size_.To_long_by_int_mb(1500); // 3.0 GB; v2; use same as text - public long File_db_max() {return file_db_max;} private long file_db_max = Io_size_.To_long_by_int_mb(1500); // 3.2 GB; v2 - public byte[] Ns_file_map() {return ns_file_map;} private byte[] ns_file_map = Ns_file_map__each; - public byte Zip_tid_text() {return zip_tid_text;} private byte zip_tid_text = Io_stream_tid_.Tid__gzip; - public byte Zip_tid_html() {return zip_tid_html;} private byte zip_tid_html = Io_stream_tid_.Tid__gzip; - public boolean Hzip_enabled() {return hzip_enabled;} private boolean hzip_enabled = Bool_.Y; - public boolean Hzip_mode_is_b256() {return hzip_mode_is_b256;} private boolean hzip_mode_is_b256 = Bool_.Y; public String User_name() {return user_name;} private String user_name = "anonymous"; - public Xowd_core_db_props New_props(String domain_str, long dump_file_size) { - Xow_db_layout layout_text, layout_html, layout_file; - if (dump_file_size < layout_all_max) - layout_text = layout_html = layout_file = Xow_db_layout.Itm_all; - else { - layout_text = dump_file_size < layout_text_max ? Xow_db_layout.Itm_few : Xow_db_layout.Itm_lot; - layout_html = dump_file_size < layout_html_max ? Xow_db_layout.Itm_few : Xow_db_layout.Itm_lot; - layout_file = dump_file_size < layout_file_max ? Xow_db_layout.Itm_few : Xow_db_layout.Itm_lot; - } - return new Xowd_core_db_props(2, layout_text, layout_html, layout_file, zip_tid_text, zip_tid_html, hzip_enabled, hzip_mode_is_b256); - } - public byte[] New_ns_file_map(long dump_file_size) { - return dump_file_size < layout_text_max - ? gplx.xowa.bldrs.cmds.Xob_ns_file_itm_parser.Ns_file_map__few - : gplx.xowa.bldrs.cmds.Xob_ns_file_itm_parser.Ns_file_map__each; // DB.FEW: DATE:2016-06-07 - // return dump_file_size < layout_text_max ? Bry_.Empty : Ns_file_map__each; - } - public void Zip_tid_text_raw_() {zip_tid_text = Io_stream_tid_.Tid__raw;} // TEST: public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_layout_all_max)) return Io_size_.To_str_mb(layout_all_max); - else if (ctx.Match(k, Invk_layout_all_max_)) layout_all_max = Io_size_.To_long_by_msg_mb(m, layout_all_max); - else if (ctx.Match(k, Invk_layout_text_max)) return Io_size_.To_str_mb(layout_text_max); - else if (ctx.Match(k, Invk_layout_text_max_)) layout_text_max = Io_size_.To_long_by_msg_mb(m, layout_text_max); - else if (ctx.Match(k, Invk_layout_html_max)) return Io_size_.To_str_mb(layout_html_max); - else if (ctx.Match(k, Invk_layout_html_max_)) layout_html_max = Io_size_.To_long_by_msg_mb(m, layout_html_max); - else if (ctx.Match(k, Invk_layout_file_max)) return Io_size_.To_str_mb(layout_file_max); - else if (ctx.Match(k, Invk_layout_file_max_)) layout_file_max = Io_size_.To_long_by_msg_mb(m, layout_file_max); - else if (ctx.Match(k, Invk_cat_link_db_max)) return Io_size_.To_str_mb(cat_link_db_max); + if (ctx.Match(k, Invk_cat_link_db_max)) return Io_size_.To_str_mb(cat_link_db_max); else if (ctx.Match(k, Invk_cat_link_db_max_)) cat_link_db_max = Io_size_.To_long_by_msg_mb(m, cat_link_db_max); - else if (ctx.Match(k, Invk_text_db_max)) return Io_size_.To_str_mb(text_db_max); - else if (ctx.Match(k, Invk_text_db_max_)) text_db_max = Io_size_.To_long_by_msg_mb(m, text_db_max); - else if (ctx.Match(k, Invk_html_db_max)) return Io_size_.To_str_mb(html_db_max); - else if (ctx.Match(k, Invk_html_db_max_)) html_db_max = Io_size_.To_long_by_msg_mb(m, html_db_max); - else if (ctx.Match(k, Invk_file_db_max)) return Io_size_.To_str_mb(file_db_max); - else if (ctx.Match(k, Invk_file_db_max_)) file_db_max = Io_size_.To_long_by_msg_mb(m, file_db_max); - else if (ctx.Match(k, Invk_ns_file_map)) return String_.new_u8(ns_file_map); - else if (ctx.Match(k, Invk_ns_file_map_)) ns_file_map = m.ReadBry("v"); - else if (ctx.Match(k, Invk_zip_tid_text)) return Io_stream_tid_.To_key(zip_tid_text); - else if (ctx.Match(k, Invk_zip_tid_text_)) zip_tid_text = Io_stream_tid_.To_tid(m.ReadStr("v")); - else if (ctx.Match(k, Invk_zip_tid_list)) return Options_zip_tid__list; - else if (ctx.Match(k, Invk_zip_tid_html)) return Io_stream_tid_.To_key(zip_tid_html); - else if (ctx.Match(k, Invk_zip_tid_html_)) zip_tid_html = Io_stream_tid_.To_tid(m.ReadStr("v")); - else if (ctx.Match(k, Invk_hzip_enabled)) return Yn.To_str(hzip_enabled); - else if (ctx.Match(k, Invk_hzip_enabled_)) hzip_enabled = m.ReadYn("v"); - else if (ctx.Match(k, Invk_hzip_mode_is_b256)) return Yn.To_str(hzip_mode_is_b256); - else if (ctx.Match(k, Invk_hzip_mode_is_b256_)) hzip_mode_is_b256 = m.ReadYn("v"); else if (ctx.Match(k, Invk_user_name)) return user_name; else if (ctx.Match(k, Invk_user_name_)) user_name = m.ReadStr("v"); - else if (ctx.Match(k, Invk_page_rank)) return page_rank; else return Gfo_invk_.Rv_unhandled; return this; } - private static final Keyval[] Options_zip_tid__list = Keyval_.Ary(Keyval_.new_("raw", "text"), Keyval_.new_("gzip"), Keyval_.new_("bzip2"), Keyval_.new_("xz")); private static final String - Invk_layout_all_max = "layout_all_max" , Invk_layout_all_max_ = "layout_all_max_" - , Invk_layout_text_max = "layout_text_max" , Invk_layout_text_max_ = "layout_text_max_" - , Invk_layout_html_max = "layout_html_max" , Invk_layout_html_max_ = "layout_html_max_" - , Invk_layout_file_max = "layout_file_max" , Invk_layout_file_max_ = "layout_file_max_" - , Invk_cat_link_db_max = "cat_link_db_max" , Invk_cat_link_db_max_ = "cat_link_db_max_" - , Invk_text_db_max = "text_db_max" , Invk_text_db_max_ = "text_db_max_" - , Invk_html_db_max = "html_db_max" , Invk_html_db_max_ = "html_db_max_" - , Invk_file_db_max = "file_db_max" , Invk_file_db_max_ = "file_db_max_" - , Invk_ns_file_map = "ns_file_map" , Invk_ns_file_map_ = "ns_file_map_" - , Invk_zip_tid_text = "zip_tid_text" , Invk_zip_tid_text_ = "zip_tid_text_", Invk_zip_tid_list = "zip_tid_list" - , Invk_zip_tid_html = "zip_tid_html" , Invk_zip_tid_html_ = "zip_tid_html_" + Invk_cat_link_db_max = "cat_link_db_max" , Invk_cat_link_db_max_ = "cat_link_db_max_" , Invk_user_name = "user_name" , Invk_user_name_ = "user_name_" - , Invk_hzip_enabled = "hzip_enabled" , Invk_hzip_enabled_ = "hzip_enabled_" - , Invk_hzip_mode_is_b256 = "hzip_mode_is_b256" , Invk_hzip_mode_is_b256_ = "hzip_mode_is_b256_" - , Invk_page_rank = "page_rank" ; - public static final byte[] Ns_file_map__each = Bry_.new_a7(""); } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/page_ranks/Xoapi_page_rank.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/page_ranks/Xoapi_page_rank.java deleted file mode 100644 index c0f773bc4..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/page_ranks/Xoapi_page_rank.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.bldrs.imports.page_ranks; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*; -public class Xoapi_page_rank implements Gfo_invk { - public int Iteration_max() {return iteration_max;} private int iteration_max = 0; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_iteration_max)) return Int_.To_str(iteration_max); - else if (ctx.Match(k, Invk_iteration_max_)) iteration_max = m.ReadInt("v"); - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String - Invk_iteration_max = "iteration_max" , Invk_iteration_max_ = "iteration_max_" - ; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java index 7123acded..b9f034446 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java @@ -20,27 +20,27 @@ import gplx.xowa.apps.apis.xowa.gui.browsers.*; public class Xoapi_browser implements Gfo_invk { public void Init_by_kit(Xoae_app app) { url.Init_by_kit(app); - search.Init_by_kit(app); tabs.Init_by_kit(app); html.Init_by_kit(app); + search.Init_by_kit(app); find.Init_by_kit(app); prog.Init_by_kit(app); info.Init_by_kit(app); prog_log.Init_by_kit(app); } public Xoapi_url Url() {return url;} private Xoapi_url url = new Xoapi_url(); - public Xoapi_search Search() {return search;} private Xoapi_search search = new Xoapi_search(); public Xoapi_tabs Tabs() {return tabs;} private Xoapi_tabs tabs = new Xoapi_tabs(); public Xoapi_html_box Html() {return html;} private Xoapi_html_box html = new Xoapi_html_box(); + public Xoapi_search Search() {return search;} private Xoapi_search search = new Xoapi_search(); public Xoapi_find Find() {return find;} private Xoapi_find find = new Xoapi_find(); public Xoapi_prog Prog() {return prog;} private Xoapi_prog prog = new Xoapi_prog(); public Xoapi_info Info() {return info;} private Xoapi_info info = new Xoapi_info(); public Xoapi_prog_log Prog_log() {return prog_log;} private Xoapi_prog_log prog_log = new Xoapi_prog_log(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_url)) return url; - else if (ctx.Match(k, Invk_search)) return search; else if (ctx.Match(k, Invk_tabs)) return tabs; else if (ctx.Match(k, Invk_html)) return html; + else if (ctx.Match(k, Invk_search)) return search; else if (ctx.Match(k, Invk_find)) return find; else if (ctx.Match(k, Invk_prog)) return prog; else if (ctx.Match(k, Invk_info)) return info; @@ -48,6 +48,6 @@ public class Xoapi_browser implements Gfo_invk { else return Gfo_invk_.Rv_unhandled; } private static final String - Invk_url = "url", Invk_search = "search", Invk_tabs = "tabs", Invk_html = "html" + Invk_url = "url", Invk_tabs = "tabs", Invk_html = "html", Invk_search = "search" , Invk_find = "find", Invk_prog = "prog", Invk_info = "info", Invk_prog_log = "prog_log"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java index 7e49793ed..a86a097f0 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java @@ -20,10 +20,8 @@ import gplx.gfui.*; import gplx.gfui.envs.*; import gplx.gfui.controls.standards import gplx.xowa.guis.views.*; import gplx.core.envs.*; public class Xoapi_url implements Gfo_invk { private Xoae_app app; - private Xoapi_url_searcher url_searcher; public void Init_by_kit(Xoae_app app) { this.app = app; - this.url_searcher = new Xoapi_url_searcher(app); } private GfuiComboBox Url_box() {return app.Gui_mgr().Browser_win().Url_box();} public void Focus() {this.Url_box().Focus(); this.Url_box().Sel_(0, String_.Len(this.Url_box().Text()));} @@ -34,8 +32,8 @@ public class Xoapi_url implements Gfo_invk { Xog_tab_itm tab = app.Gui_mgr().Browser_win().Active_tab(); if (tab == Xog_tab_itm_.Null) return; this.Url_box().Text_(tab.Page().Url().To_str()); } - public void Type() { - url_searcher.Search(); + void Type() { + app.Addon_mgr().Itms__search__urlbar().Search(); } private void Exec_wkr(boolean new_tab, String urls_text) { if (Op_sys.Cur().Tid_is_wnt()) diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url_searcher.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url_searcher.java deleted file mode 100644 index 2c54be3d3..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url_searcher.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.gfui.controls.standards.*; -import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.searchers.*; import gplx.xowa.addons.wikis.searchs.searchers.cbks.*; -import gplx.xowa.apps.apis.xowa.addons.searchs.*; -import gplx.xowa.guis.views.*; -class Xoapi_url_searcher implements Gfo_evt_itm { - private final Xoae_app app; - private final Xoapi_url_bar url_bar_api; private Srch_search_addon addon; - private final GfuiComboBox url_bar; - public Xoapi_url_searcher(Xoae_app app) { // called by Init_by_kit - this.app = app; - this.evt_mgr = new Gfo_evt_mgr(this); - this.url_bar = app.Gui_mgr().Browser_win().Url_box(); - this.url_bar_api = app.Api_root().Addon().Search().Url_bar(); - Gfo_evt_mgr_.Sub_same_many(url_bar_api, this, Xoapi_url_bar.Evt__jump_len_changed, Xoapi_url_bar.Evt__visible_rows_changed, Xoapi_url_bar.Evt__ns_ids_changed); - url_bar.Items__jump_len_(url_bar_api.Jump_len()); - url_bar.Items__visible_rows_(url_bar_api.Visible_rows()); - } - public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr; - public void Search() { - if (!url_bar_api.Enabled()) return; - Xog_tab_itm active_tab = app.Gui_mgr().Browser_win().Tab_mgr().Active_tab(); if (active_tab == null) return; - Xow_wiki wiki = active_tab.Wiki(); - - String search_str = url_bar.Text(); - url_bar.Text_fallback_(search_str); - // remove "en.wikipedia.org/wiki/" - // String url_bgn = wiki.Domain_str() + gplx.xowa.htmls.hrefs.Xoh_href_.Str__wiki; - // if (String_.Has_at_bgn(search_str, url_bgn)) - // search_str = String_.Mid(search_str, String_.Len(url_bgn)); - if (String_.Len_eq_0(search_str)) { - url_bar.Items__update(String_.Ary_empty); - return; - } - - if (addon == null) { - addon = Srch_search_addon.Get(wiki); - } - else { - if (!Bry_.Eq(wiki.Domain_bry(), addon.Wiki_domain())) // NOTE: url_bar_api caches addon at wiki level; need to check if wiki has changed - addon = Srch_search_addon.Get(wiki); - } - if (addon.Db_mgr().Cfg().Version_id__needs_upgrade()) return; // exit early, else will flash "searching" message below; note that url-bar should not trigger upgrade; - url_bar.List_sel_idx_(0); // clear selected list item; EX: search "a" -> page down; sel is row #5 -> search "b" -> sel should not be #5; DATE:2016-03-24 - if (!url_bar.List_visible()) url_bar.Items__size_to_fit(url_bar_api.Max_results()); // resize offscreen; handles 1st search when dropdown flashes briefly in middle of screen before being moved under bar; DATE:2016-03-24 - Srch_search_qry qry = Srch_search_qry.New__url_bar(wiki, url_bar_api, Bry_.new_u8(search_str)); - Srch_rslt_cbk__url_bar cbk = new Srch_rslt_cbk__url_bar(app, url_bar, url_bar_api); - Xoa_app_.Usr_dlg().Prog_one("", "", "searching (please wait): ~{0}", search_str); - addon.Search(qry, cbk); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Xoapi_url_bar.Evt__jump_len_changed)) {url_bar.Items__jump_len_(m.ReadInt("v"));} - else if (ctx.Match(k, Xoapi_url_bar.Evt__visible_rows_changed)) {url_bar.Items__visible_rows_(m.ReadInt("v"));} - else if (ctx.Match(k, Xoapi_url_bar.Evt__ns_ids_changed)) {if (addon != null) addon.Clear_rslts_cache();} // invalidate cache when ns changes; else ns_0 rslts will show up in ns_100; DATE:2016-03-24 - return this; - } -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java index 4d8b11d67..0117f6717 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java @@ -21,16 +21,10 @@ public class Xoapi_modules implements Gfo_invk { public void Init_by_kit(Xoae_app app) { popups.Init_by_app(app); } - public Xoapi_collapsible Collapsible() {return collapsible;} private Xoapi_collapsible collapsible = new Xoapi_collapsible(); - public Xoapi_navframe Navframe() {return navframe;} private Xoapi_navframe navframe = new Xoapi_navframe(); - public Xoapi_toc Toc() {return toc;} private Xoapi_toc toc = new Xoapi_toc(); public Xoapi_popups Popups() {return popups;} private Xoapi_popups popups = new Xoapi_popups(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_collapsible)) return collapsible; - else if (ctx.Match(k, Invk_navframe)) return navframe; - else if (ctx.Match(k, Invk_toc)) return toc; - else if (ctx.Match(k, Invk_popups)) return popups; + if (ctx.Match(k, Invk_popups)) return popups; else return Gfo_invk_.Rv_unhandled; } - private static final String Invk_collapsible = "collapsible", Invk_navframe = "navframe", Invk_toc = "toc", Invk_popups = "popups"; + private static final String Invk_popups = "popups"; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java deleted file mode 100644 index 7a90dc8a6..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -import gplx.xowa.apps.apis.xowa.html.skins.*; -public class Xoapi_skins implements Gfo_invk { - private Hash_adp hash = Hash_adp_.New(); - public Xoapi_skins() { - server.Sidebar_home_enabled_(true); - hash.Add("desktop", desktop); - hash.Add("server", server); - } - public Xoapi_skin_app_base Desktop() {return desktop;} private Xoapi_skin_app_base desktop = new Xoapi_skin_app_base(); - public Xoapi_skin_app_base Server () {return server ;} private Xoapi_skin_app_base server = new Xoapi_skin_app_base(); - private Gfo_invk Get(String key) {return (Gfo_invk)hash.Get_by(key);} - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_get)) return Get(m.ReadStr("v")); - return this; - } - private static final String Invk_get = "get"; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java deleted file mode 100644 index 618abefd1..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java +++ /dev/null @@ -1,40 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -import gplx.xowa.htmls.core.htmls.tidy.*; -public class Xoapi_tidy implements Gfo_invk { - private Xoae_app app; - public void Init_by_kit(Xoae_app app) { - this.app = app; - } - public void Toggle() { - app.Html_mgr().Tidy_mgr().Enabled_toggle(); - app.Gui_mgr().Browser_win().Page__refresh(); - } - public void Engine_(byte v) { - app.Html_mgr().Tidy_mgr().Wkr_tid_(v); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_toggle)) this.Toggle(); - else if (ctx.Match(k, Invk_engine_tidy_)) Engine_(Xoh_tidy_wkr_.Tid_tidy); - else if (ctx.Match(k, Invk_engine_jtidy_)) Engine_(Xoh_tidy_wkr_.Tid_jtidy); - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String Invk_toggle = "toggle", Invk_engine_tidy_ = "engine_tidy_", Invk_engine_jtidy_ = "engine_jtidy_"; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java deleted file mode 100644 index cf91907d5..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; -public class Xoapi_collapsible implements Gfo_invk { - public void Init_by_kit(Xoae_app app) { - } - public boolean Collapsed() {return collapsed;} private boolean collapsed; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_collapsed)) return Yn.To_str(collapsed); - else if (ctx.Match(k, Invk_collapsed_)) collapsed = m.ReadYn("v"); - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String - Invk_collapsed = "collapsed", Invk_collapsed_ = "collapsed_" - ; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java deleted file mode 100644 index 1cf210b87..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; -public class Xoapi_navframe implements Gfo_invk { - public void Init_by_kit(Xoae_app app) { - } - public boolean Collapsed() {return collapsed;} private boolean collapsed; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_collapsed)) return Yn.To_str(collapsed); - else if (ctx.Match(k, Invk_collapsed_)) collapsed = m.ReadYn("v"); - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String - Invk_collapsed = "collapsed", Invk_collapsed_ = "collapsed_" - ; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java deleted file mode 100644 index c7706bb8c..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; -public class Xoapi_toc implements Gfo_invk { - public void Init_by_kit(Xoae_app app) { - } - public boolean Collapsed() {return collapsed;} private boolean collapsed = false; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_collapsed)) return Yn.To_str(collapsed); - else if (ctx.Match(k, Invk_collapsed_)) collapsed = m.ReadYn("v"); - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String - Invk_collapsed = "collapsed", Invk_collapsed_ = "collapsed_" - ; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java deleted file mode 100644 index 0a7930013..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java +++ /dev/null @@ -1,29 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.html.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; -public class Xoapi_skin_app_base implements Gfo_invk { - public void Init_by_kit(Xoae_app app) { - } - public boolean Sidebar_home_enabled() {return sidebar_home_enabled;} public void Sidebar_home_enabled_(boolean v) {sidebar_home_enabled = v;} private boolean sidebar_home_enabled; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_sidebar_home_enabled)) return Yn.To_str(sidebar_home_enabled); - else if (ctx.Match(k, Invk_sidebar_home_enabled_)) sidebar_home_enabled = m.ReadYn("v"); - return this; - } - private static final String Invk_sidebar_home_enabled = "sidebar_home_enabled", Invk_sidebar_home_enabled_ = "sidebar_home_enabled_"; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java deleted file mode 100644 index c51a476e6..000000000 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java +++ /dev/null @@ -1,73 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.apps.apis.xowa.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; -import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; -public class Xoapi_search implements Gfo_invk, Gfo_evt_mgr_owner { - private final Xow_domain_crt_kv_itm_mgr multi_wikis_mgr = new Xow_domain_crt_kv_itm_mgr(); private byte[] multi_wikis_bry = Dflt_multi_wikis_bry; - private final Xow_domain_crt_kv_itm_mgr multi_sorts_mgr = new Xow_domain_crt_kv_itm_mgr(); private byte[] multi_sorts_bry = Dflt_multi_sorts_bry; - public Xoapi_search() { - this.evt_mgr = new Gfo_evt_mgr(this); - multi_wikis_mgr.Parse_as_itms(multi_wikis_bry); - multi_sorts_mgr.Parse_as_arys(multi_sorts_bry); - } - public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private Gfo_evt_mgr evt_mgr; - public int Results_per_page() {return results_per_page;} private int results_per_page = 100; - public boolean Async_db() {return async_db;} private boolean async_db = true; - public void Multi_wikis_bry_(byte[] v) { - if (!multi_wikis_mgr.Parse_as_itms(v)) return; - this.multi_wikis_bry = v; - Gfo_evt_mgr_.Pub_val(this, Evt_multi_wikis_changed, v); - } - public Xow_domain_crt_itm Multi_wikis_crt(Xow_domain_itm cur_domain) { - return multi_wikis_mgr.Find_itm(cur_domain, cur_domain); - } - public void Multi_sorts_bry_(byte[] v) { - if (!multi_sorts_mgr.Parse_as_arys(v)) return; - this.multi_sorts_bry = v; - Gfo_evt_mgr_.Pub_val(this, Evt_multi_sorts_changed, v); - } - public Xow_domain_crt_itm[] Multi_sorts_crt(Xow_domain_itm cur_domain) { - return multi_sorts_mgr.Find_ary(cur_domain, cur_domain); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_results_per_page)) return results_per_page; - else if (ctx.Match(k, Invk_results_per_page_)) results_per_page = m.ReadInt("v"); - else if (ctx.Match(k, Invk_async_db)) return Yn.To_str(async_db); - else if (ctx.Match(k, Invk_async_db_)) async_db = m.ReadYn("v"); - else if (ctx.Match(k, Invk_multi_wikis)) return String_.new_u8(multi_wikis_bry); - else if (ctx.Match(k, Invk_multi_wikis_)) Multi_wikis_bry_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_multi_sorts)) return String_.new_u8(multi_sorts_bry); - else if (ctx.Match(k, Invk_multi_sorts_)) Multi_sorts_bry_(m.ReadBry("v")); - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String - Invk_results_per_page = "results_per_page" , Invk_results_per_page_ = "results_per_page_" - , Invk_async_db = "async_db" , Invk_async_db_ = "async_db_" - , Invk_multi_wikis = "multi_wikis" , Invk_multi_wikis_ = "multi_wikis_" - , Invk_multi_sorts = "multi_sorts" , Invk_multi_sorts_ = "multi_sorts_" - ; - public static final String - Evt_multi_wikis_changed = "multi_wikis_changed" - , Evt_multi_sorts_changed = "multi_sorts_changed" - ; - public static final byte[] - Dflt_multi_wikis_bry = Bry_.new_a7("|") - , Dflt_multi_sorts_bry = Bry_.new_a7("|,*.wikipedia,*.wikivoyage,*.wiktionary,*.wikisource,*.wikiquote,*.wikibooks,*.wikiversity,*.wikinews") - ; -} diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java index 925651bdf..7dde79097 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java @@ -32,20 +32,14 @@ public class Xoapi_cache implements Gfo_invk { return bfr.To_str_and_clear(); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_fsys_size_min)) return cache_mgr.Fsys_size_min() / Io_mgr.Len_mb; - else if (ctx.Match(k, Invk_fsys_size_min_)) cache_mgr.Fsys_size_min_(Io_size_.To_long_by_msg_mb(m, cache_mgr.Fsys_size_min())); - else if (ctx.Match(k, Invk_fsys_size_max)) return cache_mgr.Fsys_size_max() / Io_mgr.Len_mb; - else if (ctx.Match(k, Invk_fsys_size_max_)) cache_mgr.Fsys_size_max_(Io_size_.To_long_by_msg_mb(m, cache_mgr.Fsys_size_max())); - else if (ctx.Match(k, Invk_info)) return Info(); + if (ctx.Match(k, Invk_info)) return Info(); else if (ctx.Match(k, Invk_reduce_to_min)) cache_mgr.Reduce(cache_mgr.Fsys_size_min()); else if (ctx.Match(k, Invk_reduce_to_zero)) cache_mgr.Reduce(0); else return Gfo_invk_.Rv_unhandled; return this; } private static final String - Invk_fsys_size_min = "fsys_size_min" , Invk_fsys_size_min_ = "fsys_size_min_" - , Invk_fsys_size_max = "fsys_size_max" , Invk_fsys_size_max_ = "fsys_size_max_" - , Invk_info = "info" + Invk_info = "info" , Invk_reduce_to_min = "reduce_to_min" , Invk_reduce_to_zero = "reduce_to_zero" ; } diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java index 6b09e88bb..5757b2f8a 100644 --- a/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java @@ -25,24 +25,24 @@ public class Xoapi_wikibase implements Gfo_invk, Gfo_evt_mgr_owner { public byte[][] Core_langs() {return core_langs;} private byte[][] core_langs = Bry_.Ary("en"); public byte[][] Sort_langs() {return sort_langs;} private byte[][] sort_langs = Bry_.Ary("en", "de", "es", "fr", "it", "nl", "pl", "ru", "sv"); public byte[] Link_wikis() {return link_wikis;} private byte[] link_wikis = Bry_.new_a7("enwiki"); + public void Init_by_app(Xoae_app app) { + app.Cfg().Bind_many_app(this, Cfg__core_langs, Cfg__link_wikis, Cfg__sort_langs); + } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_core_langs)) return Bry_.Add_w_dlm(Byte_ascii.Semic, core_langs); - else if (ctx.Match(k, Invk_core_langs_)) {core_langs = m.ReadBryAry(k, Byte_ascii.Semic); Gfo_evt_mgr_.Pub_val(this, Evt_core_langs_changed, core_langs);} - else if (ctx.Match(k, Invk_sort_langs)) return Bry_.Add_w_dlm(Byte_ascii.Semic, sort_langs); - else if (ctx.Match(k, Invk_sort_langs_)) {sort_langs = m.ReadBryAry(k, Byte_ascii.Semic); Gfo_evt_mgr_.Pub_val(this, Evt_sort_langs_changed, sort_langs);} - else if (ctx.Match(k, Invk_link_wikis)) return String_.new_u8(link_wikis); - else if (ctx.Match(k, Invk_link_wikis_)) {link_wikis = m.ReadBry(k); Gfo_evt_mgr_.Pub_val(this, Evt_link_wikis_changed, link_wikis);} + if (ctx.Match(k, Cfg__core_langs)) {core_langs = m.ReadBryAry(k, Byte_ascii.Semic); Gfo_evt_mgr_.Pub_val(this, Evt_core_langs_changed, core_langs);} + else if (ctx.Match(k, Cfg__sort_langs)) {sort_langs = m.ReadBryAry(k, Byte_ascii.Semic); Gfo_evt_mgr_.Pub_val(this, Evt_sort_langs_changed, sort_langs);} + else if (ctx.Match(k, Cfg__link_wikis)) {link_wikis = m.ReadBry(k); Gfo_evt_mgr_.Pub_val(this, Evt_link_wikis_changed, link_wikis);} else return Gfo_invk_.Rv_unhandled; return this; } - private static final String - Invk_core_langs = "core_langs", Invk_core_langs_ = "core_langs_" - , Invk_sort_langs = "sort_langs", Invk_sort_langs_ = "sort_langs_" - , Invk_link_wikis = "link_wikis", Invk_link_wikis_ = "link_wikis_" - ; public static final String Evt_core_langs_changed = "core_langs_changed" , Evt_link_wikis_changed = "link_wikis_changed" , Evt_sort_langs_changed = "sort_langs_changed" ; + private static final String + Cfg__core_langs = "xowa.addon.wikibase.pages.core_langs" + , Cfg__link_wikis = "xowa.addon.wikibase.pages.link_wikis" + , Cfg__sort_langs = "xowa.addon.wikibase.pages.sort_langs" + ; } diff --git a/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java b/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java index a9c247882..5dc7ce8b6 100644 --- a/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/progs/Xoa_prog_mgr.java @@ -37,14 +37,19 @@ public class Xoa_prog_mgr implements Gfo_invk { Process_adp.ini_(this, usr_dlg, app_lilypond , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}lilypond\\usr\\bin\\lilypond.exe", "\"-dsafe=#t\" -dbackend=ps --png --header=texidoc -dmidi-extension=midi \"~{file}\"", "file"); Process_adp.ini_(this, usr_dlg, app_abc2ly , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}lilypond\\usr\\bin\\python.exe", "abc2ly.py -s \"--output=~{target}\" \"~{source}\"", "source", "target"); Process_adp.ini_(this, usr_dlg, app_trim_img , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}imagemagick\\convert", "-trim \"~{source}\" \"~{target}\"", "source", "target"); - Process_adp.ini_(this, usr_dlg, app_convert_midi_to_ogg , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}timidity\\timidity", "-Ov \"--output-file=~{target}\" \"~{source}\"", "source", "target"); + Process_adp.ini_(this, usr_dlg, app_midi_to_ogg , cmd_eval, Process_adp.Run_mode_sync_timeout , 1 * 60, "~{<>bin_plat_dir<>}timidity\\timidity", "-Ov \"--output-file=~{target}\" \"~{source}\"", "source", "target"); Process_adp.ini_(this, usr_dlg, app_view_text , cmd_eval, Process_adp.Run_mode_async , 0 , "cmd", "/c start \"~{url}\"", "url"); for (int i = 0; i < apps_by_ext.length; i++) { apps_by_ext[i] = Process_adp.New(usr_dlg, cmd_eval, Process_adp.Run_mode_async, 0, "cmd", "/c start \"\" \"~{file}\"", "file"); } app_web = Process_adp.New(usr_dlg, cmd_eval, Process_adp.Run_mode_async, 0, "cmd", "/c start \"\" \"~{url}\"", "url"); - app.Cfg().Bind_many_app(this, Cfg__web, Cfg__media, Cfg__image, Cfg__svg, Cfg__pdf, Cfg__djvu); + app.Cfg().Bind_many_app(this + , Cfg__web, Cfg__media, Cfg__image, Cfg__svg, Cfg__pdf, Cfg__djvu + , Cfg__gz, Cfg__bz2, Cfg__bz2__stdout_cmd + , Cfg__lua + , Cfg__lilypond, Cfg__abc2ly, Cfg__trim_img, Cfg__midi_to_ogg + ); } private Process_adp App_by_ext_key(String ext) {return apps_by_ext[Xof_ext_.Get_id_by_ext_(Bry_.new_a7(ext))];} public Process_adp App_query_img_size() {return app_query_img_size;} private Process_adp app_query_img_size = new Process_adp(); @@ -62,25 +67,11 @@ public class Xoa_prog_mgr implements Gfo_invk { public Process_adp App_lilypond() {return app_lilypond;} private Process_adp app_lilypond = new Process_adp(); public Process_adp App_abc2ly() {return app_abc2ly;} private Process_adp app_abc2ly = new Process_adp(); public Process_adp App_trim_img() {return app_trim_img;} private Process_adp app_trim_img = new Process_adp(); - public Process_adp App_convert_midi_to_ogg() {return app_convert_midi_to_ogg;} private Process_adp app_convert_midi_to_ogg = new Process_adp(); + public Process_adp App_convert_midi_to_ogg() {return app_midi_to_ogg;} private Process_adp app_midi_to_ogg = new Process_adp(); public Process_adp App_by_ext(String ext) {return App_by_ext_key(String_.Mid(ext, 1));} // ignore 1st . in ext; EX: ".png" -> "png" public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_query_img_size)) return app_query_img_size; - else if (ctx.Match(k, Invk_resize_img)) return app_resize_img; - else if (ctx.Match(k, Invk_convert_svg_to_png)) return app_convert_svg_to_png; - else if (ctx.Match(k, Invk_convert_tex_to_dvi)) return app_convert_tex_to_dvi; + if (ctx.Match(k, Invk_convert_tex_to_dvi)) return app_convert_tex_to_dvi; else if (ctx.Match(k, Invk_convert_dvi_to_png)) return app_convert_dvi_to_png; - else if (ctx.Match(k, Invk_convert_djvu_to_tiff)) return app_convert_djvu_to_tiff; - else if (ctx.Match(k, Invk_view_web)) return app_web; - else if (ctx.Match(k, Invk_decompress_bz2)) return app_decompress_bz2; - else if (ctx.Match(k, Invk_decompress_zip)) return app_decompress_zip; - else if (ctx.Match(k, Invk_decompress_gz)) return app_decompress_gz; - else if (ctx.Match(k, Invk_decompress_bz2_by_stdout)) return app_decompress_bz2_by_stdout; - else if (ctx.Match(k, Invk_lua)) return app_lua; - else if (ctx.Match(k, Invk_lilypond)) return app_lilypond; - else if (ctx.Match(k, Invk_abc2ly)) return app_abc2ly; - else if (ctx.Match(k, Invk_convert_midi_to_ogg)) return app_convert_midi_to_ogg; - else if (ctx.Match(k, Invk_trim_img)) return app_trim_img; else if (String_.Eq(k, Cfg__web)) {Init_cmd(m.ReadStr("v"), app_web);} else if (String_.Eq(k, Cfg__media)) {Init_cmd(m.ReadStr("v"), Xof_ext_.Id_ogv, Xof_ext_.Id_webm, Xof_ext_.Id_flac, Xof_ext_.Id_ogg, Xof_ext_.Id_oga, Xof_ext_.Id_mid, Xof_ext_.Id_wav);} @@ -88,10 +79,22 @@ public class Xoa_prog_mgr implements Gfo_invk { else if (String_.Eq(k, Cfg__svg)) {Init_cmd(m.ReadStr("v"), Xof_ext_.Id_svg);} else if (String_.Eq(k, Cfg__pdf)) {Init_cmd(m.ReadStr("v"), Xof_ext_.Id_pdf);} else if (String_.Eq(k, Cfg__djvu)) {Init_cmd(m.ReadStr("v"), Xof_ext_.Id_djvu);} + else if (String_.Eq(k, Cfg__gz)) {Init_cmd(m.ReadStr("v"), app_decompress_gz);} + else if (String_.Eq(k, Cfg__bz2)) {Init_cmd(m.ReadStr("v"), app_decompress_bz2);} + else if (String_.Eq(k, Cfg__bz2__stdout_cmd)) {Init_cmd(m.ReadStr("v"), app_decompress_bz2_by_stdout);} + else if (String_.Eq(k, Cfg__query_size)) {Init_cmd(m.ReadStr("v"), app_query_img_size);} + else if (String_.Eq(k, Cfg__resize_img)) {Init_cmd(m.ReadStr("v"), app_resize_img);} + else if (String_.Eq(k, Cfg__convert_svg_to_png)) {Init_cmd(m.ReadStr("v"), app_convert_svg_to_png);} + else if (String_.Eq(k, Cfg__convert_djvu_to_tiff)) {Init_cmd(m.ReadStr("v"), app_convert_djvu_to_tiff);} + else if (String_.Eq(k, Cfg__lua)) {Init_cmd(m.ReadStr("v"), app_lua);} + else if (String_.Eq(k, Cfg__lilypond)) {Init_cmd(m.ReadStr("v"), app_lilypond);} + else if (String_.Eq(k, Cfg__abc2ly)) {Init_cmd(m.ReadStr("v"), app_abc2ly);} + else if (String_.Eq(k, Cfg__trim_img)) {Init_cmd(m.ReadStr("v"), app_trim_img);} + else if (String_.Eq(k, Cfg__midi_to_ogg)) {Init_cmd(m.ReadStr("v"), app_midi_to_ogg);} else return Gfo_invk_.Rv_unhandled; return this; } - private void Init_cmd(String exe_and_args, Process_adp proc) { + public static void Init_cmd(String exe_and_args, Process_adp proc) { String[] lines = gplx.xowa.addons.apps.cfgs.Xocfg_mgr.Parse_io_cmd(exe_and_args); proc.Exe_and_args_(lines[0], lines[1]); } @@ -107,17 +110,26 @@ public class Xoa_prog_mgr implements Gfo_invk { url_str = Process_adp.Escape_ampersands_if_process_is_cmd(Op_sys.Cur().Tid_is_wnt(), app_web.Exe_url().Raw(), url_str); // escape ampersands; DATE:2014-05-20 app_web.Run(url_str); } - private static final String Invk_query_img_size = "query_img_size", Invk_resize_img = "resize_img", Invk_convert_svg_to_png = "convert_svg_to_png", Invk_convert_tex_to_dvi = "convert_tex_to_dvi", Invk_convert_dvi_to_png = "convert_dvi_to_png" - , Invk_convert_djvu_to_tiff = "convert_djvu_to_tiff", Invk_view_web = "view_web" - , Invk_decompress_bz2 = "decompress_bz2", Invk_decompress_zip = "decompress_zip", Invk_decompress_gz = "decompress_gz", Invk_decompress_bz2_by_stdout = "decompress_bz2_by_stdout" - , Invk_lua = "lua", Invk_lilypond = "lilypond", Invk_abc2ly = "abc2ly", Invk_trim_img = "trim_img", Invk_convert_midi_to_ogg = "convert_midi_to_ogg" - ; + private static final String Invk_convert_tex_to_dvi = "convert_tex_to_dvi", Invk_convert_dvi_to_png = "convert_dvi_to_png"; private static final String - Cfg__web = "xowa.app.content_apps.web" - , Cfg__media = "xowa.app.content_apps.media" - , Cfg__image = "xowa.app.content_apps.image" - , Cfg__svg = "xowa.app.content_apps.svg" - , Cfg__pdf = "xowa.app.content_apps.pdf" - , Cfg__djvu = "xowa.app.content_apps.djvu" + Cfg__web = "xowa.app.content_apps.web" + , Cfg__media = "xowa.app.content_apps.media" + , Cfg__image = "xowa.app.content_apps.image" + , Cfg__svg = "xowa.app.content_apps.svg" + , Cfg__pdf = "xowa.app.content_apps.pdf" + , Cfg__djvu = "xowa.app.content_apps.djvu" + , Cfg__bz2__stdout_cmd = "xowa.wiki.import.bz2.stdout_cmd" + , Cfg__bz2 = "xowa.wiki.import.apps.bz2" + , Cfg__gz = "xowa.wiki.import.apps.gz" + , Cfg__query_size = "xowa.wiki.files.apps.query_size" + , Cfg__resize_img = "xowa.wiki.files.apps.resize_img" + , Cfg__convert_svg_to_png = "xowa.wiki.files.apps.convert_svg_to_png" + , Cfg__convert_djvu_to_tiff = "xowa.wiki.files.apps.convert_djvu_to_tiff" + , Cfg__lua = "xowa.addon.scribunto.lua.cmd" + , Cfg__lilypond = "xowa.addon.score.apps.lilypond" + , Cfg__abc2ly = "xowa.addon.score.apps.abc2ly" + , Cfg__trim_img = "xowa.addon.score.apps.trim_img" + , Cfg__midi_to_ogg = "xowa.addon.score.apps.midi_to_ogg" ; } + diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java index 8e9034efa..84b609c6d 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java @@ -75,6 +75,7 @@ public class Http_server_mgr implements Gfo_invk { running = val; } public void Run() { + app.Cfg().Bind_many_app(this, Cfg__port, Cfg__file_retrieve_mode); if (wkr == null) wkr = new Http_server_socket(this); Thread_adp_.Start_by_key("thread:xowa.http_server.server", wkr, Http_server_socket.Invk_run); Note("HTTP Server started: Navigate to http://localhost:" + Int_.To_str(port)); @@ -136,19 +137,15 @@ public class Http_server_mgr implements Gfo_invk { usr_dlg.Note_many("", "", s); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_port)) return port; - else if (ctx.Match(k, Invk_port_)) Port_(m.ReadInt("v")); - else if (ctx.Match(k, Invk_running)) return Yn.To_str(running); + if (ctx.Match(k, Cfg__port)) Port_(m.ReadInt("v")); + else if (ctx.Match(k, Cfg__file_retrieve_mode)) retrieve_mode = File_retrieve_mode.Xto_byte(m.ReadStr("v")); else if (ctx.Match(k, Invk_running_)) Running_(m.ReadYn("v")); - else if (ctx.Match(k, Invk_retrieve_mode)) return File_retrieve_mode.Xto_str(retrieve_mode); - else if (ctx.Match(k, Invk_retrieve_mode_)) retrieve_mode = File_retrieve_mode.Xto_byte(m.ReadStr("v")); - else if (ctx.Match(k, Invk_retrieve_mode_list)) return File_retrieve_mode.Options__list; else return Gfo_invk_.Rv_unhandled; return this; } - private static final String - Invk_port = "port", Invk_port_ = "port_" - , Invk_running = "running", Invk_running_ = "running_" - , Invk_retrieve_mode = "retrieve_mode", Invk_retrieve_mode_ = "retrieve_mode_", Invk_retrieve_mode_list = "retrieve_mode_list" - ; + private static final String Invk_running_ = "running_"; + private static final String + Cfg__port = "xowa.addon.http_server.port" + , Cfg__file_retrieve_mode = "xowa.addon.http_server.file_retrieve_mode"; + } diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobldr_cfg.java b/400_xowa/src/gplx/xowa/bldrs/Xobldr_cfg.java new file mode 100644 index 000000000..93528a78f --- /dev/null +++ b/400_xowa/src/gplx/xowa/bldrs/Xobldr_cfg.java @@ -0,0 +1,65 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*; +import gplx.core.ios.*; +import gplx.xowa.wikis.data.*; +public class Xobldr_cfg { + private static long layout_all_max = 0; // disable by default; may set to 200 MB in future + private static long layout_text_max = Io_size_.To_long_by_int_mb(1500); // 1.0 GB + private static long layout_html_max = Io_size_.To_long_by_int_mb(1500); // 1.0 GB + private static long layout_file_max = Io_size_.To_long_by_int_mb(1500); // 1.0 GB + private static boolean hzip_enabled = Bool_.Y; + private static boolean hzip_mode_is_b256 = Bool_.Y; + + public static byte Zip_mode__text(Xoa_app app) {return Zip_mode(app, Cfg__zip_mode__text);} + public static byte Zip_mode__html(Xoa_app app) {return Zip_mode(app, Cfg__zip_mode__html);} + private static byte Zip_mode(Xoa_app app, String key) { + String val = app.Cfg().Get_str_app_or(key, "gzip"); + return gplx.core.ios.streams.Io_stream_tid_.To_tid(val); + } + public static long Max_size__text(Xoa_app app) {return Max_size(app, Cfg__max_size__text);} + public static long Max_size__html(Xoa_app app) {return Max_size(app, Cfg__max_size__html);} + public static long Max_size__file(Xoa_app app) {return Max_size(app, Cfg__max_size__file);} + private static long Max_size(Xoa_app app, String key) { + return app.Cfg().Get_long_app_or(key, Io_size_.To_long_by_int_mb(1500)); + } + public static byte[] New_ns_file_map(long dump_file_size) { + return dump_file_size < layout_text_max + ? gplx.xowa.bldrs.cmds.Xob_ns_file_itm_parser.Ns_file_map__few + : gplx.xowa.bldrs.cmds.Xob_ns_file_itm_parser.Ns_file_map__each; // DB.FEW: DATE:2016-06-07 + } + public static Xowd_core_db_props New_props(Xoa_app app, String domain_str, long dump_file_size) { + Xow_db_layout layout_text, layout_html, layout_file; + if (dump_file_size < layout_all_max) + layout_text = layout_html = layout_file = Xow_db_layout.Itm_all; + else { + layout_text = dump_file_size < layout_text_max ? Xow_db_layout.Itm_few : Xow_db_layout.Itm_lot; + layout_html = dump_file_size < layout_html_max ? Xow_db_layout.Itm_few : Xow_db_layout.Itm_lot; + layout_file = dump_file_size < layout_file_max ? Xow_db_layout.Itm_few : Xow_db_layout.Itm_lot; + } + return new Xowd_core_db_props(2, layout_text, layout_html, layout_file, Zip_mode__text(app), Zip_mode__html(app), hzip_enabled, hzip_mode_is_b256); + } + private static final String + Cfg__zip_mode__text = "xowa.wiki.database.zip_mode.text" + , Cfg__zip_mode__html = "xowa.wiki.database.zip_mode.html" + , Cfg__max_size__text = "xowa.wiki.database.max_size.text" + , Cfg__max_size__html = "xowa.wiki.database.max_size.html" + , Cfg__max_size__file = "xowa.wiki.database.max_size.file" + ; + public static final byte[] Ns_file_map__each = Bry_.new_a7(""); +} diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java index 7b5d3cabb..bbf1bc28e 100644 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java +++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java @@ -31,12 +31,12 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, Gf public String Page_wkr__key() {return Xob_cmd_keys.Key_text_page;} public void Page_wkr__bgn() { Xoae_app app = wiki.Appe(); - Xoapi_import import_cfg = app.Api_root().Bldr().Wiki().Import(); this.redirect_mgr = wiki.Redirect_mgr(); this.db_mgr = wiki.Db_mgr_as_sql().Core_data_mgr(); this.page_core_tbl = db_mgr.Tbl__page(); - this.text_zip_mgr = wiki.Utl__zip_mgr(); text_zip_tid = import_cfg.Zip_tid_text(); - this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__text(), db_mgr, import_cfg.Text_db_max()); + this.text_zip_mgr = wiki.Utl__zip_mgr(); + text_zip_tid = Xobldr_cfg.Zip_mode__text(app); + this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__text(), db_mgr, Xobldr_cfg.Max_size__text(app)); this.dg_match_mgr = Dg_match_mgr.New_mgr(app, wiki); if (dg_match_mgr != null) redirect_id_enabled = true; // always enable redirect_id if dg_match_mgr enabled; DATE:2016-01-04 if (redirect_id_enabled) { @@ -44,7 +44,7 @@ public class Xob_page_cmd extends Xob_itm_basic_base implements Xob_page_wkr, Gf redirect_tbl.Conn().Txn_bgn("bldr__page__redirect"); } app.Bldr().Dump_parser().Trie_tab_del_(); // disable swapping for \t - byte[] ns_file_map = import_cfg.New_ns_file_map(wiki.Import_cfg().Src_rdr_len()); + byte[] ns_file_map = Xobldr_cfg.New_ns_file_map(wiki.Import_cfg().Src_rdr_len()); Xob_ns_file_itm.Init_ns_bldr_data(Xow_db_file_.Tid__text, wiki.Ns_mgr(), ns_file_map); if (idx_mode.Tid_is_bgn()) page_core_tbl.Create_idx(); page_core_tbl.Insert_bgn(); diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd_tst.java deleted file mode 100644 index 11df6de9d..000000000 --- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd_tst.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*; -import org.junit.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.addons.wikis.ctgs.bldrs.*; import gplx.xowa.wikis.nss.*; -public class Xob_page_cmd_tst { - @Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Ctor_fsys();} Db_mgr_fxt fxt = new Db_mgr_fxt(); - @After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();} - @Test public void Basic() { - if (Xoa_test_.Db_skip()) return; - fxt.Init_db_sqlite(); - fxt.Bldr().App().Api_root().Bldr().Wiki().Import().Zip_tid_text_raw_(); - fxt.doc_ary_ - ( fxt.doc_(2, "2013-06-03 01:23", "A", "text_a") - , fxt.doc_(1, "2013-06-03 12:34", "B", "#REDIRECT [[A]]") - ) - .Exec_run(new Xob_page_cmd(fxt.Bldr(), fxt.Wiki())) - ; - fxt.Test_load_ttl(Xow_ns_.Tid__main, "A", fxt.page_(2, "2013-06-03 01:23", false, 6)); - fxt.Test_load_page(Xow_ns_.Tid__main, 2, "text_a"); - fxt.Test_load_ttl(Xow_ns_.Tid__main, "B", fxt.page_(1, "2013-06-03 12:34", true, 15)); - } -} diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java index 10e334296..56aa48359 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java @@ -93,10 +93,8 @@ class Xoi_cmd_search2_build extends Xoi_cmd_base { public Xoi_cmd_search2_build(Xoi_setup_mgr install_mgr, String wiki_key) {this.Ctor(install_mgr, wiki_key);} @Override public String Async_key() {return KEY;} public static final String KEY = "wiki.search2.build"; @Override public void Process_async_init(Xoae_app app, Xowe_wiki wiki, Xob_bldr bldr) { - if (app.Setup_mgr().Dump_mgr().Wiki_storage_type_is_sql()) { - wiki.Db_mgr_as_sql().Category_version_update(false); - gplx.xowa.addons.wikis.searchs.bldrs.Srch_bldr_mgr_.Setup(wiki); - } + wiki.Db_mgr_as_sql().Category_version_update(false); + gplx.xowa.addons.wikis.searchs.bldrs.Srch_bldr_mgr_.Setup(wiki); } @Override public void Process_async_done(Xoae_app app, Xowe_wiki wiki, Xob_bldr bldr) { app.Usr_dlg().Prog_many("", "", "search2 setup done"); diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java index 9d4376002..aa06e5700 100644 --- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java @@ -20,24 +20,34 @@ import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.xowa.bldrs.wms.dumps.*; public class Xoi_dump_mgr implements Gfo_invk { public String[] Server_urls() {return server_urls;} private String[] server_urls = String_.Ary(Xowm_dump_file_.Server_your_org, Xowm_dump_file_.Server_wmf_https, Xowm_dump_file_.Server_c3sl, Xowm_dump_file_.Server_masaryk); // promote your.org to primary url; DATE:2016-08-07 + public boolean Import_bz2_by_stdout() {return import_bz2_by_stdout;} private boolean import_bz2_by_stdout = true; + public String[] Custom_cmds() {return custom_cmds;} private String[] custom_cmds = String_.Ary(Xoi_cmd_wiki_download.Key_wiki_download, Xoi_cmd_wiki_import.KEY); public byte Data_storage_format() {return data_storage_format;} public Xoi_dump_mgr Data_storage_format_(byte v) {data_storage_format = v; return this;} private byte data_storage_format = gplx.core.ios.streams.Io_stream_tid_.Tid__gzip; public long Db_text_max() {return db_text_max;} private long db_text_max = (long)3000 * Io_mgr.Len_mb; public long Db_categorylinks_max() {return db_categorylinks_max;} private long db_categorylinks_max = (long)3600 * Io_mgr.Len_mb; public long Db_wikidata_max() {return db_wikidata_max;} private long db_wikidata_max = (long)3600 * Io_mgr.Len_mb; - public byte Wiki_storage_type() {return wiki_storage_type;} private byte wiki_storage_type = Wiki_storage_type_sqlite; - public boolean Wiki_storage_type_is_sql() {return wiki_storage_type == Wiki_storage_type_sqlite;} public String Db_ns_map() {return db_ns_map;} private String db_ns_map = "Template~Module"; public boolean Css_wiki_update() {return css_wiki_update;} private boolean css_wiki_update = true; public boolean Css_commons_download() {return css_commons_download;} private boolean css_commons_download = true; // changed from false to true; DATE:2014-10-19 public boolean Delete_xml_file() {return delete_xml_file;} private boolean delete_xml_file = true; public byte Search_version() {return search_version;} private byte search_version = gplx.xowa.addons.wikis.searchs.specials.Srch_special_page.Version_2; - public boolean Import_bz2_by_stdout() {return import_bz2_by_stdout;} private boolean import_bz2_by_stdout = true; + public int Page_rank_iterations() {return page_rank_iteration_max;} private int page_rank_iteration_max = 0; + public void Init_by_wiki(Xow_wiki wiki) { + wiki.App().Cfg().Bind_many_app(this + , Cfg__server_urls, Cfg__download_xowa_commons, Cfg__delete_xml_file + , Cfg__custom_wiki_commands, Cfg__bz2__stdout_enabled + , Cfg__page_rank__iteration_max + ); + } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_server_urls)) return String_.Concat_with_str(",\n", server_urls); - else if (ctx.Match(k, Invk_server_urls_)) server_urls = m.ReadStrAryIgnore("v", ",", "\n"); - else if (ctx.Match(k, Invk_custom_cmds)) return String_.Concat_with_str(",", custom_cmds); - else if (ctx.Match(k, Invk_custom_cmds_)) custom_cmds = String_.Ary_filter(m.ReadStrAry("v", ","), Xoi_cmd_mgr.Wiki_cmds_valid); + if (ctx.Match(k, Cfg__server_urls)) server_urls = m.ReadStrAryIgnore("v", ",", "\n"); + else if (ctx.Match(k, Cfg__download_xowa_commons)) css_commons_download = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__delete_xml_file)) delete_xml_file = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__custom_wiki_commands)) custom_cmds = String_.Ary_filter(m.ReadStrAry("v", ","), Xoi_cmd_mgr.Wiki_cmds_valid); + else if (ctx.Match(k, Cfg__bz2__stdout_enabled)) import_bz2_by_stdout = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__page_rank__iteration_max)) page_rank_iteration_max = m.ReadInt("v"); + else if (ctx.Match(k, Invk_data_storage_format)) return Io_stream_tid_.Obsolete_to_str(data_storage_format); else if (ctx.Match(k, Invk_data_storage_format_)) data_storage_format = Io_stream_tid_.Obsolete_to_tid(m.ReadStr("v")); else if (ctx.Match(k, Invk_data_storage_format_list)) return Options_data_storage_format_list; @@ -49,50 +59,32 @@ public class Xoi_dump_mgr implements Gfo_invk { else if (ctx.Match(k, Invk_db_wikidata_max_)) db_wikidata_max = m.ReadLong("v") * Io_mgr.Len_mb; else if (ctx.Match(k, Invk_db_ns_map)) return db_ns_map; else if (ctx.Match(k, Invk_db_ns_map_)) db_ns_map = m.ReadStr("v"); - else if (ctx.Match(k, Invk_wiki_storage_type)) return Wiki_storage_type_str(wiki_storage_type); - else if (ctx.Match(k, Invk_wiki_storage_type_)) wiki_storage_type = Wiki_storage_type_parse(m.ReadStr("v")); - else if (ctx.Match(k, Invk_wiki_storage_type_list)) return Options_storage_type_list; else if (ctx.Match(k, Invk_css_wiki_update)) return Yn.To_str(css_wiki_update); else if (ctx.Match(k, Invk_css_wiki_update_)) css_wiki_update = m.ReadYn("v"); - else if (ctx.Match(k, Invk_css_commons_download)) return Yn.To_str(css_commons_download); - else if (ctx.Match(k, Invk_css_commons_download_)) css_commons_download = m.ReadYn("v"); - else if (ctx.Match(k, Invk_delete_xml_file)) return Yn.To_str(delete_xml_file); - else if (ctx.Match(k, Invk_delete_xml_file_)) delete_xml_file = m.ReadYn("v"); else if (ctx.Match(k, Invk_search_version)) return Options_search_version_str(search_version); else if (ctx.Match(k, Invk_search_version_)) search_version = Options_search_version_parse(m.ReadStr("v")); else if (ctx.Match(k, Invk_search_version_list)) return Options_search_version_list; - else if (ctx.Match(k, Invk_import_bz2_by_stdout)) return Yn.To_str(import_bz2_by_stdout); - else if (ctx.Match(k, Invk_import_bz2_by_stdout_)) import_bz2_by_stdout = m.ReadYn("v"); else return Gfo_invk_.Rv_unhandled; return this; } - private static final String Invk_server_urls = "server_urls", Invk_server_urls_ = "server_urls_", Invk_custom_cmds = "custom_cmds", Invk_custom_cmds_ = "custom_cmds_" - , Invk_data_storage_format = "data_storage_format", Invk_data_storage_format_ = "data_storage_format_", Invk_data_storage_format_list = "data_storage_format_list" + private static final String Invk_data_storage_format = "data_storage_format", Invk_data_storage_format_ = "data_storage_format_", Invk_data_storage_format_list = "data_storage_format_list" , Invk_db_text_max = "db_text_max", Invk_db_text_max_ = "db_text_max_", Invk_db_categorylinks_max = "db_categorylinks_max", Invk_db_categorylinks_max_ = "db_categorylinks_max_", Invk_db_wikidata_max = "db_wikidata_max", Invk_db_wikidata_max_ = "db_wikidata_max_" , Invk_db_ns_map = "db_ns_map", Invk_db_ns_map_ = "db_ns_map_" - , Invk_wiki_storage_type = "wiki_storage_type", Invk_wiki_storage_type_ = "wiki_storage_type_", Invk_wiki_storage_type_list = "wiki_storage_type_list" , Invk_css_wiki_update = "css_wiki_update", Invk_css_wiki_update_ = "css_wiki_update_" - , Invk_css_commons_download = "css_commons_download", Invk_css_commons_download_ = "css_commons_download_" - , Invk_delete_xml_file = "delete_xml_file", Invk_delete_xml_file_ = "delete_xml_file_" - , Invk_search_version = "search_version", Invk_search_version_ = "search_version_", Invk_search_version_list = "search_version_list" - , Invk_import_bz2_by_stdout = "import_bz2_by_stdout", Invk_import_bz2_by_stdout_ = "import_bz2_by_stdout_" + , Invk_search_version = "search_version", Invk_search_version_ = "search_version_", Invk_search_version_list = "search_version_list" ; private static Keyval[] Options_data_storage_format_list = Keyval_.Ary(Keyval_.new_(".xdat", "text"), Keyval_.new_(".gz", "gzip"), Keyval_.new_(".bz2", "bzip2")); // removed .zip; DATE:2014-05-13; updated aliases; DATE:2014-06-20 - static final byte Wiki_storage_type_xdat = 1, Wiki_storage_type_sqlite = 2; - private static final Keyval[] Options_storage_type_list = Keyval_.Ary(Keyval_.new_("sqlite"), Keyval_.new_("xdat")); // DEPRECATED: Keyval_.new_("xdat"); DATE:2015-03-30 - public static String Wiki_storage_type_str(byte v) { - switch (v) { - case Xoi_dump_mgr.Wiki_storage_type_xdat : return "xdat"; - case Xoi_dump_mgr.Wiki_storage_type_sqlite : return "sqlite"; - default : throw Err_.new_unhandled(v); - } - } - public static byte Wiki_storage_type_parse(String v) { - if (String_.Eq(v, "xdat")) return Xoi_dump_mgr.Wiki_storage_type_xdat; - else if (String_.Eq(v, "sqlite")) return Xoi_dump_mgr.Wiki_storage_type_sqlite; - else throw Err_.new_unhandled(v); - } + private static final Keyval[] Options_search_version_list = Keyval_.Ary(Keyval_.new_("1"), Keyval_.new_("2")); public static String Options_search_version_str(byte v) {return Byte_.To_str(v);} public static byte Options_search_version_parse(String v) {return Byte_.parse(v);} + + private static final String + Cfg__server_urls = "xowa.wiki.import.general.dump_servers" + , Cfg__download_xowa_commons = "xowa.wiki.import.general.download_xowa_common" + , Cfg__delete_xml_file = "xowa.wiki.import.general.delete_xml_file" + , Cfg__custom_wiki_commands = "xowa.wiki.import.general.custom_wiki_commands" + , Cfg__bz2__stdout_enabled = "xowa.wiki.import.bz2.stdout_enabled" + , Cfg__page_rank__iteration_max = "xowa.wiki.import.page_rank.iteration_max" + ; } diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java index 3c0f2df4b..8633411ea 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.bldrs.setups.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*; public class Xoi_addon_mgr implements Gfo_invk { - public Xoi_firefox_installer Firefox() {return firefox;} private Xoi_firefox_installer firefox = new Xoi_firefox_installer(); + Xoi_firefox_installer Firefox() {return firefox;} private Xoi_firefox_installer firefox = new Xoi_firefox_installer(); public void Init_by_app(Xoae_app app) { firefox.Init_by_app(app); } diff --git a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java index 72c638383..331612512 100644 --- a/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java +++ b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java @@ -28,6 +28,7 @@ public class Xoi_firefox_installer implements Gfo_invk { trg_xpi_package = trg_xpi.OwnerDir().GenSubDir("package"); Xoa_fsys_eval cmd_eval = app.Url_cmd_eval(); Process_adp.ini_(this, app.Usr_dlg(), program, cmd_eval, Process_adp.Run_mode_async, 0, "firefox", "\"~{url}\"", "url"); + app.Cfg().Bind_many_app(this, Cfg__firefox_cmd); } public void Install_via_process() { Generate(); @@ -57,9 +58,11 @@ public class Xoi_firefox_installer implements Gfo_invk { + String_.Mid(src, end); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_program)) return program; if (ctx.Match(k, Invk_install)) Install_via_process(); + else if (ctx.Match(k, Cfg__firefox_cmd)) gplx.xowa.apps.progs.Xoa_prog_mgr.Init_cmd(m.ReadStr("v"), program); else return Gfo_invk_.Rv_unhandled; return this; - } private static final String Invk_program = "program", Invk_install = "install"; + } private static final String Invk_install = "install"; + private static final String Cfg__firefox_cmd = "xowa.addon.xowa_viewer.firefox"; + } diff --git a/400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java b/400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java deleted file mode 100644 index 8864443b8..000000000 --- a/400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java +++ /dev/null @@ -1,40 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.bldrs.wms; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.xowa.apps.wms.apis.*; import gplx.xowa.wikis.*; -public class Xoa_wmf_mgr implements Gfo_invk { - private final Xoae_wiki_mgr wiki_mgr; - public Xoa_wmf_mgr(Gfo_usr_dlg usr_dlg, Xoae_wiki_mgr wiki_mgr) { - this.wiki_mgr = wiki_mgr; - } - public boolean Enabled() {return enabled;} private boolean enabled = true; // default to true; DATE:2015-01-05 - public void Enabled_(boolean v) { - enabled = v; - int len = wiki_mgr.Count(); - for (int i = 0; i < len; i++) { - Xowe_wiki wiki = wiki_mgr.Get_at_or_null(i); - wiki.File_mgr().Cfg_download().Enabled_(v); - } - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); - else if (ctx.Match(k, Invk_enabled_)) Enabled_(m.ReadYn("v")); - else return Gfo_invk_.Rv_unhandled; - return this; - } private static final String Invk_enabled = "enabled", Invk_enabled_ = "enabled_"; -} diff --git a/400_xowa/src/gplx/xowa/files/Xof_cfg_download.java b/400_xowa/src/gplx/xowa/files/Xof_cfg_download.java index 29ea1d348..359cb0817 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_cfg_download.java +++ b/400_xowa/src/gplx/xowa/files/Xof_cfg_download.java @@ -18,20 +18,24 @@ along with this program. If not, see . package gplx.xowa.files; import gplx.*; import gplx.xowa.*; public class Xof_cfg_download implements Gfo_invk { public Xof_cfg_download() { - this.enabled = true; // CFG: set to false b/c some tests only do parsing [[File:A.png]] and repos are not set up + this.enabled = true; // changed to true; DATE:2016-12-19; OLD: CFG: set to false b/c some tests only do parsing [[File:A.png]] and repos are not set up this.redownload = Redownload_none; // CFG: set to none to be as conservative as possible } public boolean Enabled() {return enabled;} public Xof_cfg_download Enabled_(boolean v) {enabled = v; return this;} private boolean enabled; public byte Redownload() {return redownload;} public Xof_cfg_download Redownload_(byte v) {redownload = v; return this;} private byte redownload; + public void Init_by_wiki(Xow_wiki wiki) { + wiki.App().Cfg().Bind_many_app(this, Cfg__retrieval_enabled); + } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); + if (ctx.Match(k, Cfg__retrieval_enabled)) enabled = m.ReadYn("v"); + else if (ctx.Match(k, Invk_redownload)) return Redownload_to_str_(redownload); else if (ctx.Match(k, Invk_redownload_)) redownload = Redownload_parse_(m.ReadStr("v")); else if (ctx.Match(k, Invk_redownload_toggle)) redownload = redownload == Redownload_none ? Redownload_missing : Redownload_none; else return Gfo_invk_.Rv_unhandled; return this; - } private static final String Invk_enabled_ = "enabled_", Invk_redownload = "redownload", Invk_redownload_ = "redownload_", Invk_redownload_toggle = "redownload_toggle"; + } private static final String Invk_redownload = "redownload", Invk_redownload_ = "redownload_", Invk_redownload_toggle = "redownload_toggle"; byte Redownload_parse_(String s) { if (String_.Eq(s, "none")) return Redownload_none; else if (String_.Eq(s, "missing")) return Redownload_missing; @@ -47,4 +51,5 @@ public class Xof_cfg_download implements Gfo_invk { default: throw Err_.new_unhandled(v); } } + private static final String Cfg__retrieval_enabled = "xowa.wiki.files.retrieval_enabled"; } diff --git a/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java index ef18026ac..9b928184b 100644 --- a/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java @@ -26,13 +26,13 @@ public class Xof_file_mgr implements Gfo_invk { public Xof_cache_mgr Cache_mgr() {return cache_mgr;} private Xof_cache_mgr cache_mgr; public Xof_math_mgr Math_mgr() {return math_mgr;} private final Xof_math_mgr math_mgr = new Xof_math_mgr(); public Xof_rule_mgr Ext_rules() {return ext_rules;} private final Xof_rule_mgr ext_rules = new Xof_rule_mgr(); - public Xoa_wmf_mgr Wmf_mgr() {return wmf_mgr;} private Xoa_wmf_mgr wmf_mgr; public void Ctor_by_app(Xoae_app app) { Gfo_usr_dlg usr_dlg = app.Usr_dlg(); this.cache_mgr = new Xof_cache_mgr(usr_dlg, app.Wiki_mgr(), repo_mgr); this.repo_mgr = new Xoa_repo_mgr(app.Fsys_mgr(), ext_rules); - this.wmf_mgr = new Xoa_wmf_mgr(usr_dlg, app.Wiki_mgr()); img_mgr.Init_by_app(app.Wmf_mgr(), app.Prog_mgr()); + } + public void Init_by_app(Xoae_app app) { math_mgr.Init_by_app(app); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { @@ -40,8 +40,7 @@ public class Xof_file_mgr implements Gfo_invk { else if (ctx.Match(k, Invk_img_mgr)) return img_mgr; else if (ctx.Match(k, Invk_ext_rules)) return ext_rules; else if (ctx.Match(k, Invk_math)) return math_mgr; - else if (ctx.Match(k, Invk_download)) return wmf_mgr; // NOTE: do not rename "download" to wmf_mgr else if (ctx.Match(k, Invk_cache_mgr)) return cache_mgr; else return Gfo_invk_.Rv_unhandled; - } private static final String Invk_repos = "repos", Invk_img_mgr= "img_mgr", Invk_ext_rules = "ext_rules", Invk_math = "math", Invk_download = "download", Invk_cache_mgr = "cache_mgr"; + } private static final String Invk_repos = "repos", Invk_img_mgr= "img_mgr", Invk_ext_rules = "ext_rules", Invk_math = "math", Invk_cache_mgr = "cache_mgr"; } diff --git a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java index 9377f1576..ccd9af9e3 100644 --- a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java +++ b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java @@ -70,6 +70,9 @@ public class Xow_file_mgr implements Gfo_invk { public Xowe_repo_mgr Repo_mgr() {return repo_mgr;} private Xowe_repo_mgr repo_mgr; public Xof_meta_mgr Dbmeta_mgr() {return meta_mgr;} private Xof_meta_mgr meta_mgr; public Xof_cfg_download Cfg_download() {return cfg_download;} private Xof_cfg_download cfg_download = new Xof_cfg_download(); + public void Init_by_wiki(Xow_wiki wiki) { + cfg_download.Init_by_wiki(wiki); + } public void Cfg_set(String grp, String key, String val) { // TEST: should only be called by tests if (test_grps == null) test_grps = Hash_adp_.New(); Db_cfg_hash grp_itm = (Db_cfg_hash)test_grps.Get_by(grp); diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java index 5406ed044..34258a2a6 100644 --- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.primitives.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.imgs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.users.data.*; -public class Xou_cache_mgr { +public class Xou_cache_mgr implements Gfo_invk { private final Xoa_wiki_mgr wiki_mgr; private final Xou_cache_tbl cache_tbl; private final Db_cfg_tbl cfg_tbl; private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(512); private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Object thread_lock = new Object(); private final Io_url cache_dir; private boolean db_load_needed = true; @@ -49,6 +49,10 @@ public class Xou_cache_mgr { , Keyval_.new_("oldest file", view_date == Long_.Max_value ? "" : DateAdp_.unixtime_utc_seconds_(view_date).XtoStr_fmt_iso_8561()) ); } + public void Init_by_app(Xoa_app app) { + app.Cfg().Bind_many_app(this, Cfg__fsys_size_min, Cfg__fsys_size_max, Run__fsys_clear); +// app.Cfg().Exec_mgr().Add(this, Run__fsys_clear); + } public Xou_cache_itm Get_or_null(Xof_fsdb_itm fsdb) {return Get_or_null(fsdb.Lnki_wiki_abrv(), fsdb.Lnki_ttl(), fsdb.Lnki_type(), fsdb.Lnki_upright(), fsdb.Lnki_w(), fsdb.Lnki_h(), fsdb.Lnki_time(), fsdb.Lnki_page(), fsdb.User_thumb_w());} public Xou_cache_itm Get_or_null(byte[] wiki, byte[] ttl, int type, double upright, int w, int h, double time, int page, int user_thumb_w) { if (!enabled) return null; @@ -175,6 +179,19 @@ public class Xou_cache_mgr { , Xof_lnki_time.Convert_to_xowa_page (orig_ext.Id(), cache.File_page()) ).Xto_url(); } + + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Cfg__fsys_size_min)) this.fsys_size_min = m.ReadLong("v"); + else if (ctx.Match(k, Cfg__fsys_size_max)) this.fsys_size_max = m.ReadLong("v"); + // else if (ctx.Match(k, Run__fsys_clear)) this.Reduce(0); + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String + Cfg__fsys_size_min = "xowa.wiki.files.cache.fsys_size_min" + , Cfg__fsys_size_max = "xowa.wiki.files.cache.fsys_size_max" + , Run__fsys_clear = "xowa.wiki.files.cache.clear" + ; } class Xou_cache_grp { private final List_adp list = List_adp_.New(); diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java index 5b3fe8022..1ff298206 100644 --- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java +++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java @@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.dbs.*; import gplx.core.ios.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.files.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; public class Xof_xfer_queue_html_fxt extends Xof_xfer_queue_base_fxt { - private final Xof_xfer_queue queue = new Xof_xfer_queue(); + private final Xof_xfer_queue queue = new Xof_xfer_queue(); @Override public void Clear(boolean src_repo_is_wmf) { Db_conn_bldr.Instance.Reg_default_mem(); super.Clear(src_repo_is_wmf); @@ -50,7 +50,6 @@ public class Xof_xfer_queue_html_fxt extends Xof_xfer_queue_base_fxt { @gplx.Virtual public void tst() { Xowe_wiki wiki = this.En_wiki(); ini_src_fils(); - wiki.Appe().File_mgr().Wmf_mgr().Enabled_(true); wiki.File_mgr().Cfg_download().Enabled_(true); queue.Exec(wiki, Xoae_page.New(wiki, wiki.Ttl_parse(Bry_.new_a7("A")))); tst_trg_fils(); diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_wmf_api_tst.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_wmf_api_tst.java index 2486f2032..b76cd5413 100644 --- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_wmf_api_tst.java +++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_wmf_api_tst.java @@ -18,8 +18,11 @@ along with this program. If not, see . package gplx.xowa.files.xfers; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import org.junit.*; import gplx.xowa.parsers.lnkis.*; public class Xof_xfer_queue_html_wmf_api_tst { - private final Xof_xfer_queue_html_fxt fxt = new Xof_xfer_queue_html_fxt(); - @Before public void init() {fxt.Clear(true); fxt.Src_commons_repo().Wmf_api_(true); fxt.Src_en_wiki_repo().Wmf_api_(true);} + private final Xof_xfer_queue_html_fxt fxt = new Xof_xfer_queue_html_fxt(); + @Before public void init() { + gplx.core.ios.IoEngine_system.Web_access_enabled = true; // NOTE: must set to true, else Wmf_api calls below will always return false + fxt.Clear(true); fxt.Src_commons_repo().Wmf_api_(true); fxt.Src_en_wiki_repo().Wmf_api_(true); + } @Test public void Thumb() { fxt .ini_page_api("en_wiki", "A.png", "", 2200, 2000); fxt .Lnki_thumb_("A.png", 220) diff --git a/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java b/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java index 8ba125543..d6e0df9a8 100644 --- a/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java +++ b/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java @@ -20,8 +20,8 @@ import gplx.core.brys.fmtrs.*; import gplx.core.envs.*; import gplx.gfui.*; import gplx.gfui.ipts.*; import gplx.gfui.kits.core.*; import gplx.gfui.controls.windows.*; import gplx.gfui.controls.standards.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.guis.menus.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.users.*; import gplx.xowa.langs.*; -import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.views.*; import gplx.xowa.guis.urls.url_macros.*; -import gplx.xowa.guis.views.boots.*; +import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.views.*; import gplx.xowa.guis.urls.url_macros.*; import gplx.xowa.addons.wikis.searchs.gui.htmlbars.*; +import gplx.xowa.guis.views.boots.*; public class Xoa_gui_mgr implements Gfo_evt_itm, Gfo_invk { public Xoa_gui_mgr(Xoae_app app) { this.ev_mgr = new Gfo_evt_mgr(this); @@ -30,7 +30,6 @@ public class Xoa_gui_mgr implements Gfo_evt_itm, Gfo_invk { bnd_mgr = new Xog_bnd_mgr(browser_win); html_mgr = new Xog_html_mgr(app); menu_mgr = new Xog_menu_mgr(this); - search_cfg = new Srch_search_cfg(app); } public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr; public Xoae_app App() {return app;} private Xoae_app app; @@ -42,7 +41,6 @@ public class Xoa_gui_mgr implements Gfo_evt_itm, Gfo_invk { public Xocfg_win Win_cfg() {return win_cfg;} private Xocfg_win win_cfg = new Xocfg_win(); public Xog_layout Layout() {return layout;} private Xog_layout layout = new Xog_layout(); public Xog_html_mgr Html_mgr() {return html_mgr;} private Xog_html_mgr html_mgr; - public Srch_search_cfg Search_cfg() {return search_cfg;} private Srch_search_cfg search_cfg; public Xog_menu_mgr Menu_mgr() {return menu_mgr;} private Xog_menu_mgr menu_mgr; public Xog_url_macro_mgr Url_macro_mgr() {return url_macro_mgr;} private Xog_url_macro_mgr url_macro_mgr = new Xog_url_macro_mgr(); public void Show_prog() { @@ -75,6 +73,7 @@ public class Xoa_gui_mgr implements Gfo_evt_itm, Gfo_invk { layout.Init(browser_win); cmd_mgr.Init_by_kit(app); app.Api_root().Init_by_kit(app); + app.Addon_mgr().Init_by_kit(app, kit); menu_mgr.Menu_bldr().Init_by_kit(app, kit, app.Fsys_mgr().Bin_xowa_file_dir().GenSubDir_nest("app.menu")); menu_mgr.Init_by_kit(); bnd_mgr.Init_by_kit(app); @@ -97,7 +96,6 @@ public class Xoa_gui_mgr implements Gfo_evt_itm, Gfo_invk { else if (ctx.Match(k, Invk_win_opts)) return win_cfg; else if (ctx.Match(k, Invk_layout)) return layout; else if (ctx.Match(k, Invk_html)) return html_mgr; - else if (ctx.Match(k, Invk_search_suggest)) return search_cfg; else if (ctx.Match(k, Invk_menus)) return menu_mgr; else if (ctx.Match(k, Invk_cmds)) return cmd_mgr; else if (ctx.Match(k, Invk_url_macros)) return url_macro_mgr; @@ -109,7 +107,7 @@ public class Xoa_gui_mgr implements Gfo_evt_itm, Gfo_invk { Invk_kit = "kit", Invk_kit_ = "kit_", Invk_browser_type = "browser_type_", Invk_xul_runner_path_ = "xul_runner_path_", Invk_run = "run" , Invk_main_win = "main_win", Invk_browser_win = "browser_win", Invk_bnds = "bnds" , Invk_bindings = "bindings", Invk_win_opts = "win_opts", Invk_layout = "layout", Invk_html = "html" - , Invk_search_suggest = "search_suggest", Invk_menus = "menus", Invk_cmds = "cmds", Invk_url_macros = "url_macros"; + , Invk_menus = "menus", Invk_cmds = "cmds", Invk_url_macros = "url_macros"; public void Run(Rls_able splash_win) { Gfo_log_bfr log_bfr = app.Log_bfr(); try { diff --git a/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_temp.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_temp.java new file mode 100644 index 000000000..1ab4b1402 --- /dev/null +++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_temp.java @@ -0,0 +1,67 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; +import gplx.gfui.ipts.*; import gplx.xowa.guis.cmds.*; +interface Xog_bnd_wkr { + void Bind_ipt_to_box(String box, String ipt); +} +class Xog_bnd_wkr__null implements Xog_bnd_wkr { + public void Bind_ipt_to_box(String box, String ipt) {} +} +class Xog_bnd_temp implements Gfo_invk { + private Xoae_app app; + private final Ordered_hash regy = Ordered_hash_.New(); + private final Xog_bnd_wkr bnd_wkr = new Xog_bnd_wkr__null(); + private Xog_bnd_box[] boxs = Xog_bnd_box_.Ary(); + public void Init_by_app(Xoae_app app) { + this.app = app; + Init_itm(Xog_cmd_itm_.Key_gui_browser_tabs_new_dflt__at_dflt__focus_y , Xog_bnd_box_.Tid_browser , "mod.c+key.t"); + } + private void Init_itm(String cmd, int box, String... ipts) { + int ipts_len = ipts.length; + for (int i = 0; i < ipts_len; i++) { + String ipt_str = ipts[i]; + Init_itm(cmd, i, box, IptArg_.parse_or_none_(ipt_str)); + } + } + // private void Init_itm(String cmd, int idx, int box, String ipt) {Init_itm(cmd, idx, box, IptArg_.parse_or_none_(ipt));} + private void Init_itm(String cmd, int idx, int box, IptArg ipt) { + String key = cmd + "-" + Int_.To_str(idx + List_adp_.Base1); // EX: xowa.widgets.url.focus-1 xowa.widgets.url.focus-2 + Xog_bnd_itm itm = new Xog_bnd_itm(key, Bool_.Y, cmd, box, ipt); + boxs[box].Add(itm); + regy.Add(itm.Key(), itm); + app.Cfg().Bind_many_app(this, cmd); + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + Xog_bnd_cfg_itm itm = Xog_bnd_cfg_itm.Parse(m.ReadStr("v")); + bnd_wkr.Bind_ipt_to_box(itm.Box(), itm.Ipt()); + return this; + } +} +class Xog_bnd_cfg_itm { + public Xog_bnd_cfg_itm(String box, String ipt) { + this.box = box; + this.ipt = ipt; + } + public String Box() {return box;} private final String box; + public String Ipt() {return ipt;} private final String ipt; + public static Xog_bnd_cfg_itm Parse(String s) { + String[] parts = String_.Split(s, "|"); + return new Xog_bnd_cfg_itm(parts[0], parts[1]); + } +} diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java index 7c91cef05..1ad808a46 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java @@ -21,16 +21,13 @@ import gplx.xowa.parsers.xndes.*; public class Xoh_html_mgr implements Gfo_invk { public Xoh_html_mgr(Xoae_app app) {} public void Init_by_app(Xoae_app app) { - tidy_mgr.Init_by_app(app); page_mgr.Init_by_app(app); } public Xoh_page_mgr Page_mgr() {return page_mgr;} private final Xoh_page_mgr page_mgr = new Xoh_page_mgr(); - public Xoa_tidy_mgr Tidy_mgr() {return tidy_mgr;} private final Xoa_tidy_mgr tidy_mgr = new Xoa_tidy_mgr(); public Xoh_skin_mgr Skin_mgr() {return skin_mgr;} private final Xoh_skin_mgr skin_mgr = new Xoh_skin_mgr(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_page)) return page_mgr; - else if (ctx.Match(k, Invk_tidy)) return tidy_mgr; else if (ctx.Match(k, Invk_skins)) return skin_mgr; else return Gfo_invk_.Rv_unhandled; - } private static final String Invk_page = "page", Invk_tidy = "tidy", Invk_skins = "skins"; + } private static final String Invk_page = "page", Invk_skins = "skins"; } diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java deleted file mode 100644 index 5ad0072cb..000000000 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java +++ /dev/null @@ -1,36 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; -import gplx.core.primitives.*; -import gplx.xowa.wikis.domains.*; -public class Xoh_imgs_mgr implements Gfo_invk { - public Xoh_imgs_mgr(Xow_html_mgr html_mgr) {wiki_is_default = html_mgr.Wiki().Domain_tid() == Xow_domain_tid_.Tid__home;} private boolean wiki_is_default; - public Bool_obj_ref Alt_in_caption() {return alt_in_caption;} Bool_obj_ref alt_in_caption = Bool_obj_ref.y_(); - public Bool_obj_ref Alt_defaults_to_caption() {return alt_defaults_to_caption;} Bool_obj_ref alt_defaults_to_caption = Bool_obj_ref.y_(); - public void Copy_cfg(Xoh_imgs_mgr copy) {this.alt_in_caption = copy.alt_in_caption;} - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_alt_in_caption)) return Yn.To_str(alt_in_caption.Val()); - else if (ctx.Match(k, Invk_alt_in_caption_)) alt_in_caption = Modify(wiki_is_default, alt_in_caption, m.ReadYn("v")); - else if (ctx.Match(k, Invk_alt_defaults_to_caption)) return Yn.To_str(alt_defaults_to_caption.Val()); - else if (ctx.Match(k, Invk_alt_defaults_to_caption_)) alt_defaults_to_caption = Modify(wiki_is_default, alt_defaults_to_caption, m.ReadYn("v")); - else return Gfo_invk_.Rv_unhandled; - return this; - } - public static final String Invk_alt_in_caption = "alt_in_caption", Invk_alt_in_caption_ = "alt_in_caption_", Invk_alt_defaults_to_caption = "alt_defaults_to_caption", Invk_alt_defaults_to_caption_ = "alt_defaults_to_caption_"; - private static Bool_obj_ref Modify(boolean orig, Bool_obj_ref cur, boolean v) {return orig ? cur.Val_(v) : Bool_obj_ref.new_(v);} -} diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java index be4e4d716..154aac8ad 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java @@ -36,21 +36,18 @@ public class Xoh_page_mgr implements Gfo_invk { public Bry_fmt Content_code_fmt() {return content_code_fmt;} private final Bry_fmt content_code_fmt = Bry_fmt.Auto("
~{page_text}
"); public Xoh_subpages_bldr Subpages_bldr() {return subpages_bldr;} private final Xoh_subpages_bldr subpages_bldr = new Xoh_subpages_bldr(); public void Init_by_app(Xoa_app app) { - app.Cfg().Bind_many_app(this, Cfg__font_enabled, Cfg__font_name, Cfg__font_size, Cfg__font_format, Cfg__custom_script); + app.Cfg().Bind_many_app(this, Cfg__font_enabled, Cfg__font_name, Cfg__font_size, Cfg__font_format, Cfg__custom_script, Cfg__content_code_fmt); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_content_code_fmt)) return String_.new_u8(content_code_fmt.Fmt()); - else if (ctx.Match(k, Invk_content_code_fmt_)) content_code_fmt.Fmt_(m.ReadBry("v")); - - else if (ctx.Match(k, Cfg__font_enabled)) font_enabled = m.ReadYn("v"); + if (ctx.Match(k, Cfg__font_enabled)) font_enabled = m.ReadYn("v"); else if (ctx.Match(k, Cfg__font_name)) {font_name = m.ReadStr("v"); Font_css_bry_();} else if (ctx.Match(k, Cfg__font_size)) {font_size = m.ReadFloat("v"); Font_css_bry_();} else if (ctx.Match(k, Cfg__font_format)) {font_css_fmt.Fmt_(m.ReadBry("v")); Font_css_bry_();} else if (ctx.Match(k, Cfg__custom_script)) custom_script = m.ReadBry("v"); + else if (ctx.Match(k, Cfg__content_code_fmt)) content_code_fmt.Fmt_(m.ReadBry("v")); else return Gfo_invk_.Rv_unhandled; return this; } - private static final String Invk_content_code_fmt = "content_code_fmt", Invk_content_code_fmt_ = "content_code_fmt_"; public static final String Cfg__font_enabled = "xowa.html.css.font.enabled" @@ -60,6 +57,7 @@ public class Xoh_page_mgr implements Gfo_invk { Cfg__font_name = "xowa.html.css.font.name" , Cfg__font_format = "xowa.html.css.font.format" , Cfg__custom_script = "xowa.html.css.custom.script" + , Cfg__content_code_fmt = "xowa.html.wiki.content_code_fmt" ; public static final float Font_size_default = 16; } diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java index 0ed990ad3..e36e2de97 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java @@ -30,6 +30,7 @@ public class Xoh_page_wtr_mgr implements Gfo_invk { public boolean Html_capable() {return html_capable;} public Xoh_page_wtr_mgr Html_capable_(boolean v) {html_capable = v; return this;} private boolean html_capable; public byte[] Css_common_bry() {return css_common_bry;} private byte[] css_common_bry; public byte[] Css_wiki_bry() {return css_wiki_bry;} private byte[] css_wiki_bry; + public boolean Scripting_enabled() {return scripting_enabled;} private boolean scripting_enabled; public Bry_fmtr Page_read_fmtr() {return page_read_fmtr;} private Bry_fmtr page_read_fmtr = Bry_fmtr.new_("", Fmtr_keys); public Bry_fmtr Page_edit_fmtr() {return page_edit_fmtr;} private Bry_fmtr page_edit_fmtr = Bry_fmtr.new_("", Fmtr_keys); public Bry_fmtr Page_html_fmtr() {return page_html_fmtr;} private Bry_fmtr page_html_fmtr = Bry_fmtr.new_("", Fmtr_keys); @@ -39,6 +40,9 @@ public class Xoh_page_wtr_mgr implements Gfo_invk { this.css_wiki_bry = css_wiki_url.To_http_file_bry(); } public void Init_(boolean v) {init = v;} private boolean init = true; + 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) { Xoh_page_wtr_wkr wtr = Wkr(output_tid); Xowe_wiki wiki = page.Wikie(); @@ -64,6 +68,7 @@ public class Xoh_page_wtr_mgr implements Gfo_invk { else if (ctx.Match(k, Invk_page_edit_)) page_edit_fmtr.Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Invk_page_html_)) page_html_fmtr.Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Invk_xowa_div_edit_rename_)) div_edit_rename_fmtr.Fmt_(m.ReadBry("v")); + else if (ctx.Match(k, Cfg__scripting_enabled)) scripting_enabled = m.ReadYn("v"); else return Gfo_invk_.Rv_unhandled; return this; } @@ -88,6 +93,7 @@ public class Xoh_page_wtr_mgr implements Gfo_invk { , "portal_div_admin", "portal_div_wikis", "portal_sidebar" , "edit_div_rename", "edit_div_preview", "js_edit_toolbar" }; + private static final String Cfg__scripting_enabled = "xowa.addon.scripting.enabled"; } /* NOTE_1:xowa_anchor_button diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java index 1a076d66b..1b6d2c100 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java @@ -28,6 +28,7 @@ public class Xoh_page_wtr_wkr { private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private final Xoh_page_wtr_mgr mgr; private final byte page_mode; private final Wdata_xwiki_link_wtr wdata_lang_wtr = new Wdata_xwiki_link_wtr(); // In other languages + private final gplx.xowa.addons.apps.scripts.Xoscript_mgr scripting_mgr = new gplx.xowa.addons.apps.scripts.Xoscript_mgr(); 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; @@ -57,7 +58,7 @@ public class Xoh_page_wtr_wkr { hctx = Xoh_wtr_ctx.Basic; Write_body(page_bfr, ctx, hctx, page); Write_page_by_tid(ctx, hctx, view_mode, rv, fmtr, page_bfr.To_bry_and_rls()); - new gplx.xowa.addons.apps.scripts.Xoscript_mgr().Write(rv, wiki, page); + scripting_mgr.Write(rv, wiki, page); if (page_mode == Xopg_page_.Tid_html) // if html, write page again, but wrap it in html skin this time Write_page_by_tid(ctx, hctx, page_mode, rv, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(rv.To_bry_and_clear())); wdata_lang_wtr.Page_(null); @@ -107,7 +108,7 @@ public class Xoh_page_wtr_wkr { , portal_mgr.Div_ns_bry(wiki.Utl__bfr_mkr(), page_ttl, wiki.Ns_mgr()) , portal_mgr.Div_view_bry(wiki.Utl__bfr_mkr(), html_gen_tid, page.Html_data().Xtn_search_text()) , portal_mgr.Div_logo_bry(), portal_mgr.Div_home_bry(), new Xopg_xtn_skin_fmtr_arg(page, Xopg_xtn_skin_itm_tid.Tid_sidebar) - , portal_mgr.Div_sync_bry(tmp_bfr, app.Api_root().Addon().Bldr().Sync().Manual_enabled(), wiki, page) + , portal_mgr.Div_sync_bry(tmp_bfr, wiki.Page_mgr().Sync_mgr().Manual_enabled(), wiki, page) , portal_mgr.Div_wikis_bry(wiki.Utl__bfr_mkr()) , portal_mgr.Sidebar_mgr().Html_bry() , mgr.Edit_rename_div_bry(page_ttl), page.Html_data().Edit_preview_w_dbg(), js_edit_toolbar_bry @@ -200,8 +201,7 @@ public class Xoh_page_wtr_wkr { ) { if (app.Mode().Tid_is_gui()) app.Usr_dlg().Prog_many("", "", "loading categories: count=~{0}", ctgs_len); Xoctg_pagebox_itm[] pagebox_itms = wiki.Ctg__pagebox_wtr().Get_catlinks_by_page(wiki, page); - boolean hidden_enabled = wiki.App().Api_root().Addon().Wikis__ctgs__hidden_enabled(); - wiki.Ctg__pagebox_wtr().Write_pagebox(hidden_enabled, bfr, wiki, page, pagebox_itms); + wiki.Ctg__pagebox_wtr().Write_pagebox(bfr, wiki, page, pagebox_itms); } // translate if variants are enabled diff --git a/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java index 0a1f745ea..edbbb1a5a 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java @@ -32,7 +32,6 @@ public class Xow_html_mgr implements Gfo_invk { page_wtr_mgr = new Xoh_page_wtr_mgr(app.Gui_mgr().Kit().Tid() != Gfui_kit_.Swing_tid); // reverse logic to handle swt,drd but not mem img_xowa_protocol = fsys_lnx_encoder.Encode_to_file_protocol(app.Fsys_mgr().Bin_xowa_file_dir().GenSubFil_nest("app.general", "xowa_exec.png")); portal_mgr = new Xow_portal_mgr(wiki); - imgs_mgr = new Xoh_imgs_mgr(this); module_mgr = new Xow_module_mgr(wiki); this.js_cleaner = new Xoh_js_cleaner(app); } @@ -40,6 +39,8 @@ public class Xow_html_mgr implements Gfo_invk { html_wtr.Init_by_wiki(wiki); module_mgr.Init_by_wiki(wiki); tidy_mgr.Init_by_wiki(wiki.Appe()); + portal_mgr.Init_by_wiki(wiki); + page_wtr_mgr.Init_by_wiki(wiki); } public void Init_by_lang(Xol_lang_itm lang) { portal_mgr.Init_by_lang(lang); @@ -56,14 +57,11 @@ public class Xow_html_mgr implements Gfo_invk { public int Img_thumb_width() {return img_thumb_width;} private int img_thumb_width = 220; public byte[] Img_xowa_protocol() {return img_xowa_protocol;} private byte[] img_xowa_protocol; public boolean Img_suppress_missing_src() {return img_suppress_missing_src;} public Xow_html_mgr Img_suppress_missing_src_(boolean v) {img_suppress_missing_src = v; return this;} private boolean img_suppress_missing_src = true; - public Xoh_imgs_mgr Imgs_mgr() {return imgs_mgr;} private Xoh_imgs_mgr imgs_mgr; - public void Copy_cfg(Xow_html_mgr html_mgr) {imgs_mgr.Copy_cfg(html_mgr.Imgs_mgr());} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_article)) return page_wtr_mgr; else if (ctx.Match(k, Invk_portal)) return portal_mgr; - else if (ctx.Match(k, Invk_imgs)) return imgs_mgr; else if (ctx.Match(k, Invk_modules)) return module_mgr; else return Gfo_invk_.Rv_unhandled; } - public static final String Invk_article = "article", Invk_portal = "portal", Invk_imgs = "imgs", Invk_modules = "modules"; + public static final String Invk_article = "article", Invk_portal = "portal", Invk_modules = "modules"; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java index d0972762f..d3fea8d25 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java +++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java @@ -67,8 +67,7 @@ public class Xow_hdump_mgr__load implements Gfo_invk { Xoctg_pagebox_itm[] pagebox_itms = wiki.Ctg__pagebox_wtr().Get_catlinks_by_page(wiki, hpg); if (pagebox_itms.length > 0) { tmp_bfr.Add(src); - boolean hidden_enabled = wiki.App().Api_root() == null ? false : wiki.App().Api_root().Addon().Wikis__ctgs__hidden_enabled(); // HACK: handle drd which doesn't have api - wiki.Ctg__pagebox_wtr().Write_pagebox(hidden_enabled, tmp_bfr, wiki, hpg, pagebox_itms); + wiki.Ctg__pagebox_wtr().Write_pagebox(tmp_bfr, wiki, hpg, pagebox_itms); src = tmp_bfr.To_bry_and_clear(); } diff --git a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java index 19d3e775f..df95a9301 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/bldrs/Xob_hdump_bldr.java @@ -41,8 +41,7 @@ public class Xob_hdump_bldr implements Gfo_invk { this.stat_tbl = new Xoh_stat_tbl(make_conn); this.stat_itm = hdump_mgr.Hzip_mgr().Hctx().Hzip__stat(); this.toc_label = wiki.Msg_mgr().Val_by_id(gplx.xowa.langs.msgs.Xol_msg_itm_.Id_toc); - Xoapi_import import_cfg = wiki.Appe().Api_root().Bldr().Wiki().Import(); - if (zip_tid == Byte_.Max_value_127) zip_tid = import_cfg.Zip_tid_html(); + if (zip_tid == Byte_.Max_value_127) zip_tid = Xobldr_cfg.Zip_mode__html(wiki.App()); hdump_mgr.Init_by_db(zip_tid, hzip_enabled, hzip_b256); return true; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java index c2c71efac..25c619085 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java @@ -42,6 +42,7 @@ public class Xoh_html_wtr { public void Init_by_wiki(Xowe_wiki wiki) { cfg.Toc__show_(Bool_.Y).Lnki__title_(true).Lnki__visited_y_().Lnki__id_(Bool_.Y); // NOTE: set during Init_by_wiki, b/c all tests assume these are false ref_wtr.Init_by_wiki(wiki); + lnki_wtr.Init_by_wiki(wiki); } public void Init_by_page(Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xoae_page page) { this.page = page; diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoa_tidy_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoa_tidy_mgr.java deleted file mode 100644 index 79de6a966..000000000 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoa_tidy_mgr.java +++ /dev/null @@ -1,58 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*; -import gplx.core.envs.*; -import gplx.langs.htmls.*; -import gplx.xowa.apps.fsys.*; -public class Xoa_tidy_mgr implements Gfo_evt_itm { - public Xoa_tidy_mgr() {this.evt_mgr = new Gfo_evt_mgr(this);} - public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr; - public Xoh_tidy_wkr_tidy Wkr_tidy() {return wkr_tidy;} private Xoh_tidy_wkr_tidy wkr_tidy = new Xoh_tidy_wkr_tidy(); // NOTE: app-level; not thread-safe; needed b/c of Options and exe/args DATE:2016-07-12 - public void Init_by_app(Xoae_app app) { - wkr_tidy.Init_by_app(app); - Xoa_fsys_eval cmd_eval = app.Url_cmd_eval(); - Process_adp.ini_(this, app.Usr_dlg(), wkr_tidy, cmd_eval, Process_adp.Run_mode_sync_timeout, 1 * 60, "~{<>bin_plat_dir<>}tidy" + Op_sys.Cur().Fsys_dir_spr_str() + "tidy", Xoh_tidy_wkr_tidy.Args_fmt, "source", "target"); - } - public boolean Enabled() {return enabled;} private boolean enabled = true; - public void Enabled_toggle() {Enabled_(!enabled);} - public byte Wkr_tid() {return wkr_tid;} private byte wkr_tid = Xoh_tidy_wkr_.Tid_jtidy; - private void Enabled_(boolean v) { - this.enabled = v; - Gfo_evt_mgr_.Pub_val(this, Evt__enabled_changed, v); - } - public void Wkr_tid_(byte v) { - this.wkr_tid = v; - Gfo_evt_mgr_.Pub_val(this, Evt__engine_changed, v); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); - else if (ctx.Match(k, Invk_enabled_)) Enabled_(m.ReadYn("v")); - else if (ctx.Match(k, Invk_enabled_toggle)) Enabled_(!enabled); - else if (ctx.Match(k, Invk_engine_type)) return Xoh_tidy_wkr_.Xto_key(wkr_tid); - else if (ctx.Match(k, Invk_engine_type_)) Wkr_tid_(Xoh_tidy_wkr_.Xto_tid(m.ReadStr("v"))); - else if (ctx.Match(k, Invk_engine_type_list)) return Xoh_tidy_wkr_.Options__list; - else if (ctx.Match(k, Invk_lib)) return wkr_tidy; - else return Gfo_invk_.Rv_unhandled; - return this; - } - private static final String - Invk_enabled = "enabled", Invk_enabled_ = "enabled_", Invk_enabled_toggle = "enabled_toggle", Invk_lib = "lib" - , Invk_engine_type = "engine_type", Invk_engine_type_ = "engine_type_", Invk_engine_type_list = "engine_type_list" - ; - public static final String Evt__enabled_changed = "enabled_changed", Evt__engine_changed = "engine_changed"; -} diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_.java index 2ffe02a3c..68552b5ba 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xoh_tidy_wkr_.java @@ -18,23 +18,7 @@ along with this program. If not, see . package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*; public class Xoh_tidy_wkr_ { public static final byte Tid_null = 0, Tid_tidy = 1, Tid_jtidy = 2; - public static final String Key_null = "null", Key_tidy = "tidy", Key_jtidy = "jtidy"; public static final Xoh_tidy_wkr Wkr_null = new Xoh_tidy_wkr_null(); - public static String Xto_key(byte v) { - switch (v) { - case Tid_null: return Key_null; - case Tid_tidy: return Key_tidy; - case Tid_jtidy: return Key_jtidy; - default: throw Err_.new_unimplemented(); - } - } - public static byte Xto_tid(String s) { - if (String_.Eq(s, Key_tidy)) return Tid_tidy; - else if (String_.Eq(s, Key_jtidy)) return Tid_jtidy; - else if (String_.Eq(s, Key_null)) return Tid_null; - else throw Err_.new_unimplemented(); - } - public static Keyval[] Options__list = Keyval_.Ary(Keyval_.new_(Key_tidy), Keyval_.new_(Key_jtidy)); } class Xoh_tidy_wkr_null implements Xoh_tidy_wkr { public byte Tid() {return Xoh_tidy_wkr_.Tid_null;} diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xow_tidy_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xow_tidy_mgr.java index 628f501fb..a2e14402c 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xow_tidy_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xow_tidy_mgr.java @@ -16,27 +16,24 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*; +import gplx.core.envs.*; import gplx.langs.htmls.*; public class Xow_tidy_mgr implements Gfo_evt_itm, Xow_tidy_mgr_interface { - private Xoae_app app; private Xoa_tidy_mgr tidy_mgr; + private Xoae_app app; private Xoh_tidy_wkr_tidy tidy_cmd = new Xoh_tidy_wkr_tidy(); // NOTE: app-level; not thread-safe; needed b/c of Options and exe/args DATE:2016-07-12 private boolean enabled = true; private Xoh_tidy_wkr wkr = Xoh_tidy_wkr_.Wkr_null; // TEST: set default wkr to null public Xow_tidy_mgr() {this.evt_mgr = new Gfo_evt_mgr(this);} public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr; - private void Wkr_(byte tid) { - switch (tid) { - case Xoh_tidy_wkr_.Tid_tidy: wkr = tidy_mgr.Wkr_tidy(); break; - case Xoh_tidy_wkr_.Tid_jtidy: wkr = new Xoh_tidy_wkr_jtidy(); break; - case Xoh_tidy_wkr_.Tid_null: wkr = Xoh_tidy_wkr_.Wkr_null; break; - default: throw Err_.new_unhandled_default(tid); - } + private void Engine_(String v) { + if (String_.Eq(v, "tidy")) wkr = new Xoh_tidy_wkr_tidy(); // NOTE: app-level; not thread-safe; needed b/c of Options and exe/args DATE:2016-07-12 + else if (String_.Eq(v, "jtidy")) wkr = new Xoh_tidy_wkr_jtidy(); + else throw Err_.new_unhandled_default(v); wkr.Init_by_app(app); } public void Init_by_wiki(Xoae_app app) { this.app = app; - this.tidy_mgr = app.Html_mgr().Tidy_mgr(); - Gfo_evt_mgr_.Sub_same_many(tidy_mgr, this, Xoa_tidy_mgr.Evt__enabled_changed, Xoa_tidy_mgr.Evt__engine_changed); - this.enabled = tidy_mgr.Enabled(); - this.Wkr_(tidy_mgr.Wkr_tid()); + tidy_cmd.Init_by_app(app); + Process_adp.ini_(this, app.Usr_dlg(), tidy_cmd, app.Url_cmd_eval(), Process_adp.Run_mode_sync_timeout, 1 * 60, "~{<>bin_plat_dir<>}tidy" + Op_sys.Cur().Fsys_dir_spr_str() + "tidy", Xoh_tidy_wkr_tidy.Args_fmt, "source", "target"); + app.Cfg().Bind_many_app(this, Cfg__enabled, Cfg__engine, Cfg__cmd); } public void Exec_tidy(Bry_bfr bfr, boolean indent, byte[] page_url) { if (!enabled) return; @@ -47,8 +44,9 @@ public class Xow_tidy_mgr implements Gfo_evt_itm, Xow_tidy_mgr_interface { Tidy_unwrap(bfr); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Xoa_tidy_mgr.Evt__enabled_changed)) this.enabled = m.ReadBool("v"); - else if (ctx.Match(k, Xoa_tidy_mgr.Evt__engine_changed)) this.Wkr_(m.ReadByte("v")); + if (ctx.Match(k, Cfg__enabled)) this.enabled = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__engine)) Engine_(m.ReadStr("v")); + else if (ctx.Match(k, Cfg__cmd)) gplx.xowa.apps.progs.Xoa_prog_mgr.Init_cmd(m.ReadStr("v"), tidy_cmd); else return Gfo_invk_.Rv_unhandled; return this; } @@ -77,4 +75,9 @@ public class Xow_tidy_mgr implements Gfo_evt_itm, Xow_tidy_mgr_interface { ( "" + "" ); + private static final String + Cfg__enabled = "xowa.html.tidy.enabled" + , Cfg__engine = "xowa.html.tidy.engine" + , Cfg__cmd = "xowa.html.tidy.cmd" + ; } diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_section_editable_.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_section_editable_.java deleted file mode 100644 index bc2e801c2..000000000 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_section_editable_.java +++ /dev/null @@ -1,22 +0,0 @@ -/* -XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012 gnosygnu@gmail.com - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . -*/ -package gplx.xowa.htmls.core.wkrs.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.hdrs.*; -public class Xoh_section_editable_ { - public static final String Cfg__section_editing__enabled = "xowa.edit.section_edit.enabled"; -} diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java index 31cf4d0c5..f52f3b3bf 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java @@ -29,6 +29,9 @@ public class Xoh_file_mgr { this.wiki = wiki; this.file_wtr = new Xoh_file_wtr__basic(wiki, html_mgr, html_wtr); } public Xoh_file_wtr__basic File_wtr() {return file_wtr;} private final Xoh_file_wtr__basic file_wtr; + public void Init_by_wiki(Xowe_wiki wiki) { + file_wtr.Init_by_wiki(wiki); + } public void Init_by_page(Xoh_wtr_ctx hctx, Xoae_page page) {file_wtr.Init_by_page(hctx, page);} public void Write_or_queue(Bry_bfr bfr, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki) {Write_or_queue(bfr, page, ctx, hctx, src, lnki, file_wtr.Bld_alt(Bool_.N, ctx, Xoh_wtr_ctx.Alt, src, lnki));} public void Write_or_queue(Bry_bfr bfr, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki, byte[] alt_text) { diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java index bf49608a1..28c13c10f 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java @@ -21,23 +21,26 @@ import gplx.langs.htmls.*; import gplx.langs.htmls.encoders.*; import gplx.xowa. import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.files.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; -public class Xoh_file_wtr__basic { +public class Xoh_file_wtr__basic implements Gfo_invk { private final Xowe_wiki wiki; private final Xow_html_mgr html_mgr; private final Xoh_html_wtr html_wtr; private final Xoh_file_fmtr__basic fmtr__basic = new Xoh_file_fmtr__basic(), fmtr__hdump = new Xoh_file_fmtr__hdump(); private final Xoh_lnki_text_fmtr alt_fmtr, caption_fmtr; private final Xop_link_parser tmp_link_parser = new Xop_link_parser(); private Xoa_url tmp_url = Xoa_url.blank(); private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(32); - private Xoae_page page; private boolean cfg_alt_defaults_to_caption; private byte[] msg_file_enlarge; + private Xoae_page page; private byte[] msg_file_enlarge; private Xoh_file_fmtr__basic html_fmtr; + private boolean alt_in_caption = true, alt_defaults_to_caption = true; public Xoh_file_wtr__basic(Xowe_wiki wiki, Xow_html_mgr html_mgr, Xoh_html_wtr html_wtr) { this.wiki = wiki; this.html_mgr = html_mgr; this.html_wtr = html_wtr; this.alt_fmtr = new Xoh_lnki_text_fmtr(wiki.Utl__bfr_mkr(), html_wtr); this.caption_fmtr = new Xoh_lnki_text_fmtr(wiki.Utl__bfr_mkr(), html_wtr); this.html_fmtr = fmtr__basic; } + public void Init_by_wiki(Xowe_wiki wiki) { + wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__alt_in_caption, Cfg__alt_defaults_to_caption); + } public void Init_by_page(Xoh_wtr_ctx hctx, Xoae_page page) { this.page = page; - this.cfg_alt_defaults_to_caption = wiki.Appe().Usere().Wiki().Html_mgr().Imgs_mgr().Alt_defaults_to_caption().Val(); this.html_fmtr = hctx.Mode_is_hdump() ? fmtr__hdump : fmtr__basic; if (msg_file_enlarge == null) this.msg_file_enlarge = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_file_enlarge); } @@ -169,7 +172,7 @@ public class Xoh_file_wtr__basic { if (bfr.Len() > 0) bfr.Add_byte_nl(); // write image_div - byte[] alt_html = wiki.Html_mgr().Imgs_mgr().Alt_in_caption().Val() ? Bld_alt(Bool_.Y, ctx, hctx, src, lnki) : Bry_.Empty; + byte[] alt_html = alt_in_caption ? Bld_alt(Bool_.Y, ctx, hctx, src, lnki) : Bry_.Empty; img_fmtr.Add_full_img(tmp_bfr, hctx, page, src, xfer_itm, uid, lnki_href, Bool_.N, Xoh_lnki_consts.Tid_a_cls_image, Xoh_lnki_consts.Tid_a_rel_none, anch_ttl , Xoh_file_fmtr__basic.Escape_xowa_title(lnki_ttl), xfer_itm.Html_w(), xfer_itm.Html_h(), img_view_src, alt , xfer_itm.File_exists() ? Xoh_img_cls_.Tid__thumbimage : Xoh_img_cls_.Tid__none @@ -180,7 +183,7 @@ public class Xoh_file_wtr__basic { ); } else { // is full - if ( cfg_alt_defaults_to_caption + if ( alt_defaults_to_caption && Bry_.Len_eq_0(alt) // NOTE: if no alt, always use caption for alt; DATE:2013-07-22 && !lnki.Alt_exists() // unless blank alt exists; EX: [[File:A.png|a|alt=]] should have alt of "", not "a" ) { @@ -261,6 +264,15 @@ public class Xoh_file_wtr__basic { , width - 2, max_width); // NOTE: -2 is fudge factor else play btn will jut out over video thumb; see Earth and ISS video } private int Get_play_btn_width(int w) {return w > 0 ? w : html_mgr.Img_thumb_width();} // if no width set width to default img width + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Cfg__alt_in_caption)) alt_in_caption = m.ReadYn("v"); + else if (ctx.Match(k, Cfg__alt_defaults_to_caption)) alt_defaults_to_caption = m.ReadYn("v"); + else return Gfo_invk_.Rv_unhandled; + return this; + } + private static final String + Cfg__alt_in_caption = "xowa.html.wiki.alt_in_caption" + , Cfg__alt_defaults_to_caption = "xowa.html.wiki.alt_defaults_to_caption"; private static final byte[] Div_center_bgn = Bry_.new_a7("
") diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java index 8f07357ff..8be630328 100644 --- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java @@ -35,6 +35,9 @@ public class Xoh_lnki_wtr { file_wtr = new Xoh_file_mgr(wiki, html_mgr, html_wtr); } public Xoh_file_mgr File_wtr() {return file_wtr;} private Xoh_file_mgr file_wtr; + public void Init_by_wiki(Xowe_wiki wiki) { + file_wtr.Init_by_wiki(wiki); + } public void Init_by_page(Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xoae_page page) { this.ctx = ctx; this.page = page; // NOTE: must set ctx for file.v2; DATE:2014-06-22 this.wiki = ctx.Wiki(); diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__collapsible.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__collapsible.java index 202680486..741dafa57 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__collapsible.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__collapsible.java @@ -21,11 +21,11 @@ public class Xoh_head_itm__collapsible extends Xoh_head_itm__base { @Override public int Flags() {return Flag__js_head_global;} @Override public void Write_js_head_global(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) { wtr.Write_js_global_ini_atr_val(Key_enabled , true); - wtr.Write_js_global_ini_atr_val(Key_collapsed , app.Api_root().Html().Modules().Collapsible().Collapsed()); + wtr.Write_js_global_ini_atr_val(Key_collapsed , wiki.Html_mgr().Head_mgr().Collapsible__collapsible()); wtr.Write_js_global_ini_atr_msg(wiki , Key_collapse); wtr.Write_js_global_ini_atr_msg(wiki , Key_expand); } - private static final byte[] + private static final byte[] Key_enabled = Bry_.new_a7("collapsible-enabled") , Key_collapsed = Bry_.new_a7("collapsible-collapsed") , Key_collapse = Bry_.new_a7("collapsible-collapse") diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__css.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__css.java index ba80af596..c14acf432 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__css.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__css.java @@ -21,7 +21,7 @@ public class Xoh_head_itm__css extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__css;} @Override public int Flags() {return Flag__css_text;} @Override public void Write_css_text(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) { - wtr.Write_css_style_itm(app.Ctg_mgr().Missing_ctg_cls_css()); + wtr.Write_css_style_itm(wiki.Ctg__catpage_mgr().Missing_ctg_cls_css()); app.Html_mgr().Page_mgr().Write_css(wtr); } } diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__navframe.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__navframe.java index ebca19fcf..f5145ffdc 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__navframe.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__navframe.java @@ -21,11 +21,11 @@ public class Xoh_head_itm__navframe extends Xoh_head_itm__base { @Override public int Flags() {return Flag__js_head_global;} @Override public void Write_js_head_global(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) { wtr.Write_js_global_ini_atr_val(Key_enabled , true); - wtr.Write_js_global_ini_atr_val(Key_collapsed , app.Api_root().Html().Modules().Navframe().Collapsed() || wiki.Html_mgr().Head_mgr().Itm__navframe().Enabled_n()); + wtr.Write_js_global_ini_atr_val(Key_collapsed , wiki.Html_mgr().Head_mgr().Collapsible__navframe() || wiki.Html_mgr().Head_mgr().Itm__navframe().Enabled_n()); wtr.Write_js_global_ini_atr_msg(wiki , Key_show); wtr.Write_js_global_ini_atr_msg(wiki , Key_hide); } - private static final byte[] + private static final byte[] Key_enabled = Bry_.new_a7("navframe-enabled") , Key_collapsed = Bry_.new_a7("navframe-collapsed") , Key_show = Bry_.new_a7("show") diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__toc.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__toc.java index d5444b804..835c1dffe 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__toc.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__toc.java @@ -22,7 +22,7 @@ public class Xoh_head_itm__toc extends Xoh_head_itm__base { @Override public int Flags() {return Flag__js_head_global | Flag__js_tail_script;} @Override public void Write_js_head_global(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) { wtr.Write_js_global_ini_atr_val(Key_exists , true); - wtr.Write_js_global_ini_atr_val(Key_collapsed , app.Api_root().Html().Modules().Collapsible().Collapsed() ? Val_collapsed_y : Val_collapsed_n); + wtr.Write_js_global_ini_atr_val(Key_collapsed , wiki.Html_mgr().Head_mgr().Collapsible__toc() ? Val_collapsed_y : Val_collapsed_n); wtr.Write_js_global_ini_atr_msg(wiki , Key_showtoc); wtr.Write_js_global_ini_atr_msg(wiki , Key_hidetoc); } @@ -31,13 +31,13 @@ public class Xoh_head_itm__toc extends Xoh_head_itm__base { // wtr.Write_js_line(Xoh_head_itm__popups.Mw_init); // wtr.Write_js_tail_load_lib(app.Fsys_mgr().Bin_any_dir().GenSubFil_nest("xowa", "html", "modules", "mw.toc", "mw.toc.js")); } - private static final byte[] + private static final byte[] Key_exists = Bry_.new_a7("toc-enabled") , Key_collapsed = Bry_.new_a7("mw_hidetoc") , Val_collapsed_y = Bry_.new_a7("1") , Val_collapsed_n = Bry_.new_a7("0") ; - public static final byte[] + public static final byte[] Key_showtoc = Bry_.new_a7("showtoc") , Key_hidetoc = Bry_.new_a7("hidetoc") ; diff --git a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java index f9855f82a..6ded440cf 100644 --- a/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java @@ -63,7 +63,7 @@ public class Xoh_head_mgr implements gplx.core.brys.Bfr_arg { if (page.Wtxt().Toc().Enabled()) itm__toc.Enabled_y_(); if (wiki.Html_mgr().Head_mgr().Itm__top_icon().Enabled_y()) itm__top_icon.Enabled_y_(); if (wiki.Html_mgr().Head_mgr().Itm__title_rewrite().Enabled_y()) itm__title_rewrite.Enabled_y_(); - if (app.Gui_mgr().Search_cfg().Enabled()) itm__search_suggest.Enabled_y_(); + if (app.Addon_mgr().Itms__search__htmlbar().Enabled()) itm__search_suggest.Enabled_y_(); itm__css.Enabled_y_(); itm__globals.Enabled_y_(); // for now, always mark this and rest as exists; DATE:2014-06-09 itm__collapsible.Enabled_y_(); diff --git a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java index ad9d05ffb..7d25463e8 100644 --- a/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java @@ -125,7 +125,7 @@ public class Xoh_js_cbk implements Gfo_invk { Xowe_wiki wiki = html_itm.Owner_tab().Wiki(); byte[] search_str = Bry_.new_u8((String)m.ReadValAt(0)); byte[] cbk_func = Bry_.new_u8((String)m.ReadValAt(1)); - app.Gui_mgr().Search_cfg().Search(wiki, search_str, cbk_func); + app.Addon_mgr().Itms__search__htmlbar().Search(wiki, search_str, cbk_func); return ""; } private String[] Wikidata_get_label(GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java index 99d86e746..66b1e3515 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java @@ -22,31 +22,45 @@ import gplx.xowa.guis.*; import gplx.xowa.addons.htmls.sidebars.*; import gplx.x import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.domains.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.htmls.hrefs.*; -import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.apps.apis.xowa.html.skins.*; +import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.htmls.portal.vnts.*; public class Xow_portal_mgr implements Gfo_invk { private Xowe_wiki wiki; private boolean lang_is_rtl; private Xoapi_toggle_itm toggle_itm; private final Vnt_mnu_grp_fmtr vnt_menu_fmtr = new Vnt_mnu_grp_fmtr(); private final Gfo_url_encoder fsys_lnx_encoder = Gfo_url_encoder_.New__fsys_lnx().Make(); + private boolean sidebar_enabled; public Xow_portal_mgr(Xowe_wiki wiki) { this.wiki = wiki; this.sidebar_mgr = new Xoh_sidebar_mgr(wiki); this.missing_ns_cls = Bry_.Eq(wiki.Domain_bry(), Xow_domain_tid_.Bry__home) ? Missing_ns_cls_hide : null; // if home wiki, set missing_ns to application default; if any other wiki, set to null; will be overriden during init } - public void Init_by_lang(Xol_lang_itm lang) { - lang_is_rtl = !lang.Dir_ltr(); - } - private Xoapi_skin_app_base api_skin; + public byte[] Missing_ns_cls() {return missing_ns_cls;} public Xow_portal_mgr Missing_ns_cls_(byte[] v) {missing_ns_cls = v; return this;} private byte[] missing_ns_cls; // NOTE: must be null due to Init check above public Xoh_sidebar_mgr Sidebar_mgr() {return sidebar_mgr;} private Xoh_sidebar_mgr sidebar_mgr; public Bry_fmtr Div_home_fmtr() {return div_home_fmtr;} private Bry_fmtr div_home_fmtr = Bry_fmtr.new_(""); public Xow_portal_mgr Init_assert() {if (init_needed) Init(); return this;} public byte[] Div_jump_to() {return div_jump_to;} private byte[] div_jump_to = Bry_.Empty; + public void Init_by_lang(Xol_lang_itm lang) { + lang_is_rtl = !lang.Dir_ltr(); + } + public void Init_by_wiki(Xowe_wiki wiki) { + wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__missing_class, Cfg__sidebar_enabled__desktop, Cfg__sidebar_enabled__server); + } + private void Sidebar_enabled_(boolean is_desktop, boolean val) { + // set sidebar_enabled if (a) is_gui and is_desktop; or (b) is_server and !is_desktop + if (wiki.App().Mode().Tid_is_gui()) { + if (is_desktop) + this.sidebar_enabled = val; + } + else { + if (!is_desktop) + this.sidebar_enabled = val; + } + } public void Init() { init_needed = false; - if (missing_ns_cls == null) // if missing_ns_cls not set for wiki, use the home wiki's + if (missing_ns_cls == null) {// if missing_ns_cls not set for wiki, use the home wiki's Missing_ns_cls_(wiki.Appe().Usere().Wiki().Html_mgr().Portal_mgr().Missing_ns_cls()); - Xoapi_skins skins = wiki.Appe().Api_root().Html().Skins(); - api_skin = wiki.App().Mode().Tid_is_gui() ? skins.Desktop() : skins.Server(); + } Bry_fmtr_eval_mgr eval_mgr = wiki.Eval_mgr(); Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); Init_fmtr(tmp_bfr, eval_mgr, div_view_fmtr); @@ -105,7 +119,7 @@ public class Xow_portal_mgr implements Gfo_invk { return tmp_bfr.To_bry_and_rls(); } public static final byte[] Cls_selected_y = Bry_.new_a7("selected"), Cls_new = Bry_.new_a7("new"), Cls_display_none = Bry_.new_a7("xowa_display_none"); public byte[] Div_logo_bry() {return div_logo_bry;} private byte[] div_logo_bry = Bry_.Empty; - public byte[] Div_home_bry() {return api_skin != null && api_skin.Sidebar_home_enabled() ? div_home_bry : Bry_.Empty;} private byte[] div_home_bry = Bry_.Empty; + public byte[] Div_home_bry() {return sidebar_enabled ? div_home_bry : Bry_.Empty;} private byte[] div_home_bry = Bry_.Empty; public byte[] Div_sync_bry(Bry_bfr tmp_bfr, boolean manual_enabled, Xow_wiki wiki, Xoa_page page) { // only show update_html if wmf; DATE:2016-08-31 if ( wiki.Domain_itm().Domain_type().Src() == Xow_domain_tid.Src__wmf @@ -122,7 +136,6 @@ public class Xow_portal_mgr implements Gfo_invk { div_wikis_fmtr.Bld_bfr_many(tmp_bfr, toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr()); return tmp_bfr.To_bry_and_rls(); } - public byte[] Missing_ns_cls() {return missing_ns_cls;} public Xow_portal_mgr Missing_ns_cls_(byte[] v) {missing_ns_cls = v; return this;} private byte[] missing_ns_cls; // NOTE: must be null due to Init check above private final Bry_fmtr div_personal_fmtr = Bry_fmtr.new_("~{portal_personal_subj_href};~{portal_personal_subj_text};~{portal_personal_talk_cls};~{portal_personal_talk_href};~{portal_personal_talk_cls};", "portal_personal_subj_href", "portal_personal_subj_text", "portal_personal_subj_cls", "portal_personal_talk_href", "portal_personal_talk_cls") , div_ns_fmtr = Bry_fmtr.new_("~{portal_ns_subj_href};~{portal_ns_subj_cls};~{portal_ns_talk_href};~{portal_ns_talk_cls};~{portal_div_vnts}", "portal_ns_subj_href", "portal_ns_subj_cls", "portal_ns_talk_href", "portal_ns_talk_cls", "portal_div_vnts") @@ -142,21 +155,24 @@ public class Xow_portal_mgr implements Gfo_invk { else if (ctx.Match(k, Invk_div_home_)) div_home_fmtr.Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Invk_div_sync_)) div_sync_fmtr.Fmt_(m.ReadBry("v")); else if (ctx.Match(k, Invk_div_wikis_)) div_wikis_fmtr.Fmt_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_missing_ns_cls)) return String_.new_u8(missing_ns_cls); - else if (ctx.Match(k, Invk_missing_ns_cls_)) missing_ns_cls = m.ReadBry("v"); - else if (ctx.Match(k, Invk_missing_ns_cls_list)) return Options_missing_ns_cls_list; + + else if (ctx.Match(k, Cfg__missing_class)) missing_ns_cls = m.ReadBry("v"); + else if (ctx.Match(k, Cfg__sidebar_enabled__desktop)) Sidebar_enabled_(Bool_.Y, m.ReadYn("v")); + else if (ctx.Match(k, Cfg__sidebar_enabled__server)) Sidebar_enabled_(Bool_.N, m.ReadYn("v")); else return Gfo_invk_.Rv_unhandled; return this; } private static final String Invk_div_personal_ = "div_personal_", Invk_div_view_ = "div_view_", Invk_div_ns_ = "div_ns_", Invk_div_home_ = "div_home_" - , Invk_div_sync_ = "div_sync_" - , Invk_div_wikis_ = "div_wikis_" - , Invk_missing_ns_cls = "missing_ns_cls", Invk_missing_ns_cls_ = "missing_ns_cls_", Invk_missing_ns_cls_list = "missing_ns_cls_list" - ; + , Invk_div_sync_ = "div_sync_", Invk_div_wikis_ = "div_wikis_"; public static final String Invk_div_logo_ = "div_logo_"; - private static Keyval[] Options_missing_ns_cls_list = Keyval_.Ary(Keyval_.new_("", "Show as blue link"), Keyval_.new_("new", "Show as red link"), Keyval_.new_("xowa_display_none", "Hide")); private static final byte[] Missing_ns_cls_hide = Bry_.new_a7("xowa_display_none"); private static final Bry_fmtr Div_jump_to_fmtr = Bry_fmtr.new_ ( "\n
~{jumpto}~{jumptonavigation}~{comma-separator}~{jumptosearch}
" , "jumpto", "jumptonavigation", "comma-separator", "jumptosearch"); + + private static final String + Cfg__missing_class = "xowa.html.wiki.portal.missing_class" + , Cfg__sidebar_enabled__desktop = "xowa.html.wiki.portal.sidebar_enabled_desktop" + , Cfg__sidebar_enabled__server = "xowa.html.wiki.portal.sidebar_enabled_server" + ; } diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr_tst.java index ee703d93e..b3bd27e7d 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr_tst.java @@ -37,6 +37,7 @@ class Xowh_portal_mgr_fxt { wiki = Xoa_app_fxt.Make__wiki__edit(app); wiki.Ns_mgr().Ns_main().Exists_(true); // needed for ns wiki.Html_mgr().Portal_mgr().Init_assert(); // needed for personal + wiki.Html_mgr().Portal_mgr().Missing_ns_cls_(Bry_.new_a7("xowa_display_none")); } } private Xoae_app app; Xowe_wiki wiki; public void Test_div_ns_bry(String ttl, String expd) { diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java index 0fc911ae6..1f5bd4e7e 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java @@ -32,7 +32,7 @@ public class Xop_section_mgr implements Gfo_invk { public void Init_by_wiki(Xowe_wiki wiki) { this.app = wiki.Appe(); this.wiki = wiki; - this.enabled = wiki.App().Cfg().Bind_bool(wiki, gplx.xowa.htmls.core.wkrs.hdrs.Xoh_section_editable_.Cfg__section_editing__enabled, this); + this.enabled = wiki.App().Cfg().Bind_bool(wiki, Cfg__section_editing__enabled, this); this.tidy_mgr = wiki.Html_mgr().Tidy_mgr(); } public byte[] Slice_section(Xoa_url url, Xoa_ttl ttl, byte[] src) { @@ -78,7 +78,7 @@ public class Xop_section_mgr implements Gfo_invk { fmt__section_editable.Bld_many(bfr, page_ttl, section_key, edit_hint, bry__edit_text); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, gplx.xowa.htmls.core.wkrs.hdrs.Xoh_section_editable_.Cfg__section_editing__enabled)) enabled = m.ReadBool("v"); + if (ctx.Match(k, Cfg__section_editing__enabled)) enabled = m.ReadBool("v"); else return Gfo_invk_.Rv_unhandled; return this; } @@ -86,4 +86,5 @@ public class Xop_section_mgr implements Gfo_invk { public static final byte[] Bry__meta = Bry_.new_a7("