1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00
This commit is contained in:
gnosygnu
2014-07-20 23:42:54 -04:00
parent bc10cd76b6
commit e882217c62
408 changed files with 3648 additions and 2687 deletions

View File

@@ -143,7 +143,7 @@ public class Xog_html_itm implements GfoInvkAble, GfoEvObj {
private boolean Scroll_page_by_id(String id) {
return (id == null)
? false
: html_box.Html_elem_scroll_into_view(app.Url_converter_id().Encode_str(id));
: html_box.Html_elem_scroll_into_view(app.Encoder_mgr().Id().Encode_str(id));
}
public void Js_enabled_(boolean v) {
html_box.Html_js_enabled_(v);
@@ -197,7 +197,7 @@ class Xog_html_itm__href_extractor {
;
public static String Html_extract_text(String site, String page, String text_str) {
byte[] text_bry = Bry_.new_utf8_(text_str);
int text_tid = Byte_ascii.X_to_digit(text_bry[0]);
int text_tid = Byte_ascii.Xto_digit(text_bry[0]);
int text_len = text_bry.length;
switch (text_tid) {
case Text_tid_none: return "";

View File

@@ -37,7 +37,7 @@ public class Xog_html_js_cbk implements GfoInvkAble {
String[] rv = new String[len + 1];
rv[0] = Invk_xowa_exec_test_as_array;
for (int i = 0; i < len; i++)
rv[i + 1] = Object_.XtoStr_OrEmpty(m.ReadValAt(i));
rv[i + 1] = Object_.Xto_str_strict_or_empty(m.ReadValAt(i));
return rv;
}
private String Parse_to_html(GfoMsg m) {
@@ -75,7 +75,7 @@ public class Xog_html_js_cbk implements GfoInvkAble {
}
private String Popups_get_html(GfoMsg m) {
try {
int popups_id = Int_.X_by_double_(Double_.cast_(m.Args_getAt(0).Val()));
int popups_id = Int_.Xby_double_(Double_.cast_(m.Args_getAt(0).Val()));
byte[] href_bry = m.Args_getAt(1).Val_to_bry();
return html_itm.Owner_tab().Page().Wiki().Html_mgr().Module_mgr().Popup_mgr().Show_init(href_bry, popups_id);
} catch (Exception e) {Err_.Noop(e); return null;}
@@ -164,7 +164,7 @@ public class Xog_html_js_cbk implements GfoInvkAble {
rv = app.Gfs_mgr().Run_str(m.Args_getAt(0).Val_to_str_or_empty());
}
catch (Exception e) {Err_.Noop(e); return null;}
return Object_.XtoStr_OrEmpty(rv);
return Object_.Xto_str_strict_or_empty(rv);
}
private static final byte[] Wikidata_get_label_xowa_ui_lang = Bry_.new_ascii_("xowa_ui_lang"), Wikidata_get_label_xowa_title = Bry_.new_ascii_("xowa_title");
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {

View File

@@ -0,0 +1,106 @@
/*
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 <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
class Xog_launcher_tabs {
public void Launch(Xog_win_itm win) {
Xoa_app app = win.App(); Gfo_log_bfr log_bfr = app.Log_bfr();
log_bfr.Add("app.launch.page.bgn");
Io_fil_marker fil_marker = new Io_fil_marker().Usr_dlg_(app.Usr_dlg()).Url_(app.User().Fsys_mgr().App_temp_dir().GenSubFil_nest("session", "launch.tabs.marker"));
boolean tabs_restored = false;
Xow_wiki home_wiki = app.User().Wiki();
if (fil_marker.Bgn())
tabs_restored = Restore_tabs(app, home_wiki, win, fil_marker);
if (!tabs_restored)
Restore_tab_failover(app, home_wiki, win);
// tab.Html_itm().Html_box().Focus(); // focus the html_box so wheel scroll works; DATE:2013-02-08
app.Gui_wtr().Prog_none("", "", "");
log_bfr.Add("app.launch.page.end");
app.Gui_wtr().Log_wtr().Log_msg_to_session_direct(log_bfr.Xto_str());
}
private boolean Restore_tabs(Xoa_app app, Xow_wiki home_wiki, Xog_win_itm win, Io_fil_marker fil_marker) {
Xog_tab_itm tab = win.Active_tab();
String[] launch_urls = app.Api_root().App().Startup().Tabs().Calc_startup_strs();
try {
int launch_urls_len = launch_urls.length;
for (int i = 0; i < launch_urls_len; ++i) {
String launch_url = launch_urls[i];
tab = i == 0 ? win.Active_tab() : win.Tab_mgr().Tabs_new_init();
Launch_tab(tab, win, home_wiki, launch_url);
}
fil_marker.End();
return true;
}
catch (Exception e) {
app.Usr_dlg().Warn_many("", "", "failed to launch urls: urls=~{0} err=~{1}", String_.AryXtoStr(launch_urls), Err_.Message_gplx(e));
Restore_tab_failover(app, home_wiki, win);
return false;
}
}
private void Restore_tab_failover(Xoa_app app, Xow_wiki home_wiki, Xog_win_itm win) {
Launch_tab(win.Active_tab(), win, home_wiki, gplx.xowa.users.Xouc_pages_mgr.Page_xowa);
}
private void Launch_tab(Xog_tab_itm tab, Xog_win_itm win, Xow_wiki home_wiki, String launch_str) {
Xoa_page launch_page = Launch_page(win, home_wiki, launch_str);
if (launch_page.Missing()) return;
Xog_tab_itm_read_mgr.Show_page(tab, launch_page, false);
tab.History_mgr().Add(launch_page);
}
private Xoa_page Launch_page(Xog_win_itm win, Xow_wiki home_wiki, String launch_str) {
Xoa_url launch_url = Xoa_url_parser.Parse_from_url_bar(win.App(), home_wiki, launch_str);
Xow_wiki launch_wiki = launch_url.Wiki();
Xoa_ttl launch_ttl = Xoa_ttl.parse_(launch_wiki, launch_url.Page_bry());
Xoa_page rv = launch_wiki.GetPageByTtl(launch_url, launch_ttl).Url_(launch_url); // FUTURE: .Url_() should not be called (needed for anchor); EX: en.wikipedia.org/Earth#Biosphere
win.Active_page_(rv); // set to blank page
return rv;
}
public static final Xog_launcher_tabs _ = new Xog_launcher_tabs(); Xog_launcher_tabs() {}
}
class Io_fil_marker {
private Io_url url;
private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_._;
public Io_fil_marker Usr_dlg_(Gfo_usr_dlg v) {this.usr_dlg = v; return this;}
public Io_fil_marker Url_(Io_url url) {this.url = url; return this;}
public boolean Bgn() {
boolean rv = false;
synchronized (this) {
try {
rv = !Io_mgr._.ExistsFil(url); // exists = fail; !exists = pass;
if (rv) // pass: file does not exist;
Io_mgr._.SaveFilStr(url, ""); // create
else // file exists from previous run
Io_mgr._.DeleteFil(url); // delete
}
catch (Exception exc) { // something unexpected happened
usr_dlg.Warn_many("", "", "marker.bgn failed: url=~{0} err=~{1}", url.Raw(), Err_.Message_gplx(exc));
Io_mgr._.DeleteFil(url); // try to delete it again
}
}
return rv;
}
public void End() {
synchronized (this) {
try {
Io_mgr._.DeleteFil(url); // delete
}
catch (Exception exc) {
usr_dlg.Warn_many("", "", "marker.end failed: url=~{0} err=~{1}", url.Raw(), Err_.Message_gplx(exc));
Io_mgr._.DeleteFil(url); // try to delete it again
}
}
}
}

View File

@@ -199,9 +199,11 @@ public class Xog_tab_itm implements GfoInvkAble {
catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.cmds: page=~{0} err=~{1}", page_ttl_str, Err_.Message_gplx_brief(e));}
}
try {
Xop_lnki_logger_redlinks_wkr redlinks_wkr = new Xop_lnki_logger_redlinks_wkr(win_itm, page);
ThreadAdp_.invk_(redlinks_wkr, gplx.xowa.parsers.lnkis.redlinks.Xop_lnki_logger_redlinks_wkr.Invk_run).Start();
usr_dlg.Prog_none("", "imgs.done", "");
if (page.Tab() != null) { // needed b/c Preview has page.Tab of null which causes null_ref error in redlinks
Xop_lnki_logger_redlinks_wkr redlinks_wkr = new Xop_lnki_logger_redlinks_wkr(win_itm, page);
ThreadAdp_.invk_(redlinks_wkr, gplx.xowa.parsers.lnkis.redlinks.Xop_lnki_logger_redlinks_wkr.Invk_run).Start();
usr_dlg.Prog_none("", "imgs.done", "");
}
} catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.redlinks: page=~{0} err=~{1}", page_ttl_str, Err_.Message_gplx_brief(e));}
try {app.File_mgr().Cache_mgr().Compress_check();}
catch (Exception e) {usr_dlg.Warn_many("", "", "page.thread.cache: page=~{0} err=~{1}", page_ttl_str, Err_.Message_gplx_brief(e));}

View File

@@ -84,28 +84,6 @@ public class Xog_tab_itm_read_mgr {
win.Win_box().Text_(err_msg);
}
public static void Launch(Xog_win_itm win) {
Xoa_app app = win.App();
Gfo_log_bfr log_bfr = app.Log_bfr();
log_bfr.Add("app.launch.page.bgn");
Xow_wiki home_wiki = app.User().Wiki();
Xoa_page launch_page = Xog_tab_itm_read_mgr.Launch_page(win, home_wiki, app.Sys_cfg().Launch_url());
if (launch_page.Missing())
launch_page = Xog_tab_itm_read_mgr.Launch_page(win, home_wiki, Xoa_sys_cfg.Launch_url_dflt);
log_bfr.Add("app.launch.page.show");
Xog_tab_itm tab = win.Active_tab();
Xog_tab_itm_read_mgr.Show_page(tab, launch_page, false);
tab.History_mgr().Add(launch_page);
tab.Html_itm().Html_box().Focus(); //this.Html_box().Html_doc_body_focus(); // focus the html_box so wheel scroll works; DATE:2013-02-08
app.Gui_wtr().Prog_none("", "", "");
log_bfr.Add("app.launch.page.end");
app.Gui_wtr().Log_wtr().Log_msg_to_session_direct(log_bfr.Xto_str());
}
private static Xoa_page Launch_page(Xog_win_itm win, Xow_wiki home_wiki, String launch_str) {
Xoa_url launch_url = Xoa_url_parser.Parse_url(win.App(), home_wiki, launch_str);
Xow_wiki launch_wiki = launch_url.Wiki();
Xoa_ttl launch_ttl = Xoa_ttl.parse_(launch_wiki, launch_url.Page_bry());
Xoa_page rv = launch_wiki.GetPageByTtl(launch_url, launch_ttl).Url_(launch_url); // FUTURE: .Url_() should not be called (needed for anchor); EX: en.wikipedia.org/Earth#Biosphere
win.Active_page_(rv); // set to blank page
return rv;
Xog_launcher_tabs._.Launch(win);
}
}

View File

@@ -70,9 +70,7 @@ public class Xog_tab_mgr implements GfoEvObj {
}
}
public int Tabs_len() {return tab_regy.Count();}
public void Tabs_new_init() {
this.Tabs_new(true, true);
}
public Xog_tab_itm Tabs_new_init() {return this.Tabs_new(true, true);}
public Xog_tab_itm Tabs_get_at(int i) {return (Xog_tab_itm)tab_regy.FetchAt(i);}
public Xog_tab_itm Tabs_new_dflt() {return Tabs_new_dflt(false);}
public Xog_tab_itm Tabs_new_dflt(boolean focus) {return Tabs_new_dflt(false, focus);}

View File

@@ -301,6 +301,6 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj {
if ( !Env_.Mode_testing()
&& app.Mode() == Xoa_app_.Mode_gui) // only run for gui; do not run for tcp/http server; DATE:2014-05-03
app.Usr_dlg().Ui_wkr_(new Gfo_usr_dlg_ui_swt(kit, prog_box, info_box, info_box, app.Gui_mgr().Win_cfg()));
app.Usr_dlg().Ui_wkr_(new Gfo_usr_dlg_ui_swt(kit, prog_box, info_box, info_box, app.Api_root().Gui().Browser().Info()));
}
}

View File

@@ -22,7 +22,7 @@ public class Xog_win_itm__prog_href_mgr {
private static Bry_bfr tmp_bfr = Bry_bfr.reset_(512);
public static void Print(Xog_win_itm win) { // PURPOSE: print href in prog box when in content editable mode
String href = win.Active_html_box().Html_active_atr_get_str(Gfui_html.Atr_href, "");// get selected href from html_box
href = win.App().Url_converter_href().Decode_str(href); // remove url encodings
href = win.App().Encoder_mgr().Href().Decode_str(href); // remove url encodings
if (!String_.Eq(href, win.Prog_box().Text()))
win.Usr_dlg().Prog_direct(href);
}