1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

Gui: Add options for nightmode; switch window icons; switch wiki css

This commit is contained in:
gnosygnu
2017-03-05 07:16:35 -05:00
parent 3e39b2fe77
commit 98fb49687b
11 changed files with 99 additions and 34 deletions

View File

@@ -38,8 +38,18 @@ public class Xog_tab_itm implements Gfo_invk {
html_box.Html_js_enabled_(tab_mgr.Javascript_enabled());
html_box.Html_invk_src_(win);
html_itm.Html_box_(html_box);
if (app.Mode().Tid_is_gui()) { // NOTE: only run for gui; will cause firefox_addon to fail; DATE:2014-05-03
html_box.Html_doc_html_load_by_mem(""); // NOTE: must set source, else control will be empty, and key events will not be raised; DATE:2014-04-30
if (app.Mode().Tid_is_gui()) { // NOTE: only run for gui; will cause firefox_addon to fail; DATE:2014-05-03
// NOTE: must set source, else control will be empty, and key events will not be raised; DATE:2014-04-30
// NOTE: use load_by_url for nightmode else load_by_mem causes "white flashing" DATE:2017-03-04
if (app.Gui_mgr().Nightmode_mgr().Enabled()) {
html_box.Html_doc_html_load_by_url
( app.Usere().Fsys_mgr().App_temp_html_dir().GenSubFil("tab_new.html")
, String_.new_u8(gplx.xowa.specials.xowa.default_tab.Default_tab_page.DEFAULT_HTML_NIGHT)
);
}
else {
html_box.Html_doc_html_load_by_mem("");
}
IptBnd_.ipt_to_(IptCfg_.Null, html_box, this, "popup", IptEventType_.MouseDown, IptMouseBtn_.Right);
IptBnd_.cmd_to_(IptCfg_.Null, html_box, win, Xog_win_itm.Invk_exit, IptKey_.add_(IptKey_.Alt, IptKey_.F4)); // WORKAROUND:SWT: xulrunner_v24 no longer sends Alt+F4 to SwtShell; must manually subscribe it to quit; DATE:2015-07-31
Gfo_evt_mgr_.Sub_same(html_box, GfuiElemKeys.Evt_menu_detected, html_itm);

View File

@@ -217,7 +217,10 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
Page__refresh();
}
public void Page__refresh() {
Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xog_html_itm html_itm = tab.Html_itm();
Page__refresh(tab_mgr.Active_tab());
}
public void Page__refresh(Xog_tab_itm tab) {
Xoae_page page = tab.Page(); Xog_html_itm html_itm = tab.Html_itm();
page = page.Wikie().Page_mgr().Load_page(page.Url(), page.Ttl(), tab); // NOTE: refresh should always reload and regen page; DATE:2017-02-15
page.Html_data().Bmk_pos_(html_itm.Html_box().Html_js_eval_proc_as_str(Xog_js_procs.Win__vpos_get));
html_itm.Show(page);
@@ -308,19 +311,18 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
this.kit = kit;
this.win_box = kit.New_win_app("win");
this.sync_cmd = win_box.Kit().New_cmd_sync(this);
Io_url img_dir = app.Fsys_mgr().Bin_xowa_file_dir().GenSubDir_nest("app.window");
FontAdp ui_font = app.Gui_mgr().Win_cfg().Font().To_font();
win_box.Layout_mgr_(new Swt_layout_mgr__grid().Cols_(1).Margin_w_(0).Margin_h_(0).Spacing_h_(0));
// toolbar
this.toolbar_grp = Xog_win_itm_.new_grp(app, kit, win_box, "toolbar_grp");
go_bwd_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, img_dir, "go_bwd_btn", "go_bwd.png" );
go_fwd_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, img_dir, "go_fwd_btn", "go_fwd.png" );
go_bwd_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, "go_bwd_btn");
go_fwd_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, "go_fwd_btn");
url_box = Xog_win_itm_.new_cbo(app, kit, toolbar_grp, ui_font, "url_box" , true);
url_exec_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, img_dir, "url_exec_btn", "url_exec.png" );
url_exec_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, "url_exec_btn");
search_box = Xog_win_itm_.new_txt(app, kit, toolbar_grp, ui_font, "search_box" , true);
search_exec_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, img_dir, "search_exec_btn", "search_exec.png" );
search_exec_btn = Xog_win_itm_.new_btn(app, kit, toolbar_grp, "search_exec_btn");
toolbar_grp.Layout_data_(new Swt_layout_data__grid().Grab_excess_w_(true).Align_w__fill_().Hint_h_(28));
toolbar_grp.Layout_mgr_(new Swt_layout_mgr__grid().Cols_(6)
@@ -339,10 +341,10 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
// statusbar
this.statusbar_grp = Xog_win_itm_.new_grp(app, kit, win_box, "statusbar_grp");
find_close_btn = Xog_win_itm_.new_btn(app, kit, statusbar_grp, img_dir, "find_close_btn", "find_close.png" );
find_close_btn = Xog_win_itm_.new_btn(app, kit, statusbar_grp, "find_close_btn");
find_box = Xog_win_itm_.new_txt(app, kit, statusbar_grp, ui_font, "find_box" , true);
find_fwd_btn = Xog_win_itm_.new_btn(app, kit, statusbar_grp, img_dir, "find_fwd_btn", "find_fwd.png" );
find_bwd_btn = Xog_win_itm_.new_btn(app, kit, statusbar_grp, img_dir, "find_bwd_btn", "find_bwd.png" );
find_fwd_btn = Xog_win_itm_.new_btn(app, kit, statusbar_grp, "find_fwd_btn");
find_bwd_btn = Xog_win_itm_.new_btn(app, kit, statusbar_grp, "find_bwd_btn");
prog_box = Xog_win_itm_.new_txt(app, kit, statusbar_grp, ui_font, "prog_box" , false);
info_box = Xog_win_itm_.new_txt(app, kit, statusbar_grp, ui_font, "note_box" , false);

View File

@@ -21,7 +21,7 @@ public class Xog_win_itm_ {
public static void Show_win(Xog_win_itm win) {
Xoae_app app = win.App(); GfuiWin win_box = win.Win_box();
win_box.Focus_able_(false);
app.Gui_mgr().Nightmode_mgr().Enabled_dflt_();
app.Gui_mgr().Nightmode_mgr().Enabled_by_cfg();
Xog_startup_win_.Startup(app, win_box);
win_box.Icon_(IconAdp.file_or_blank(app.Fsys_mgr().Bin_xowa_dir().GenSubFil_nest("file", "app.window", "app_icon.png")));
@@ -29,10 +29,8 @@ public class Xog_win_itm_ {
public static Gfui_grp new_grp(Xoae_app app, Gfui_kit kit, GfuiElem win, String id) {
return kit.New_grp(id, win);
}
public static GfuiBtn new_btn(Xoae_app app, Gfui_kit kit, GfuiElem win, Io_url img_dir, String id, String file) {
GfuiBtn rv = kit.New_btn(id, win);
rv.Btn_img_(kit.New_img_load(img_dir.GenSubFil(file)));
return rv;
public static GfuiBtn new_btn(Xoae_app app, Gfui_kit kit, GfuiElem win, String id) {
return kit.New_btn(id, win);
}
public static GfuiComboBox new_cbo(Xoae_app app, Gfui_kit kit, GfuiElem win, FontAdp ui_font, String id, boolean border_on) {
GfuiComboBox rv = kit.New_combo(id, win, Keyval_.new_(GfuiTextBox.CFG_border_on_, border_on));

View File

@@ -15,18 +15,23 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.guis.views.nightmodes; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*;
import gplx.gfui.controls.elems.*; import gplx.gfui.draws.*;
import gplx.xowa.specials.xowa.default_tab.*;
public class Xog_nightmode_mgr {
private Xoae_app app;
private boolean enabled;
private Xog_win_itm win;
public void Init_by_app(Xoae_app app) {
this.app = app;
this.win = app.Gui_mgr().Browser_win();
}
public boolean Enabled() {return enabled;}
public void Enabled_dflt_() {
Enabled_(false);
public void Enabled_by_cfg() {
Enabled_(app.Cfg().Get_bool_app_or(Cfg__nightmode_enabled, false));
}
public void Enabled_toggle_() {
Enabled_(!enabled);
public void Enabled_toggle() {
boolean val = !enabled;
Enabled_(val);
app.Cfg().Set_bool_app(Cfg__nightmode_enabled, val);
}
private void Enabled_(boolean v) {
this.enabled = v;
@@ -34,14 +39,14 @@ public class Xog_nightmode_mgr {
// get colors
ColorAdp backcolor, forecolor, edgecolor;
if (enabled) {
backcolor = ColorAdp_.Black;
forecolor = ColorAdp_.White;
edgecolor = ColorAdp_.Black;
backcolor = Parse_from_cfg(app, "xowa.gui.nightmode.nightcolors.backcolor", ColorAdp_.White);
forecolor = Parse_from_cfg(app, "xowa.gui.nightmode.nightcolors.forecolor", ColorAdp_.Black);
edgecolor = Parse_from_cfg(app, "xowa.gui.nightmode.nightcolors.edgecolor", ColorAdp_.LightGray);
}
else {
backcolor = ColorAdp_.White;
forecolor = ColorAdp_.Black;
edgecolor = ColorAdp_.LightGray;
backcolor = Parse_from_cfg(app, "xowa.gui.nightmode.daycolors.backcolor", ColorAdp_.Black);
forecolor = Parse_from_cfg(app, "xowa.gui.nightmode.daycolors.forecolor", ColorAdp_.White);
edgecolor = Parse_from_cfg(app, "xowa.gui.nightmode.daycolors.edgecolor", ColorAdp_.Black);
}
// set back / fore for window and tab
@@ -76,5 +81,27 @@ public class Xog_nightmode_mgr {
win.Search_box().Border_color_(edgecolor);
win.Find_box().Border_color_(edgecolor);
win.Prog_box().Border_color_(backcolor);
// change button icons
// note that nightmode needs 16px and unresized b/c swt interpolates white pixels when resizing images (even when downsizing?)
// note that daymode needs 32px and resized b/c resizing "blurs" image which looks better
Io_url img_dir = app.Fsys_mgr().Bin_xowa_file_dir().GenSubDir_nest("app.window", enabled ? "16px" : "32px");
win.Go_bwd_btn().Btn_img_(app.Gui_mgr().Kit().New_img_load(img_dir.GenSubFil("go_bwd.png")));
win.Go_fwd_btn().Btn_img_(app.Gui_mgr().Kit().New_img_load(img_dir.GenSubFil("go_fwd.png")));
win.Url_exec_btn().Btn_img_(app.Gui_mgr().Kit().New_img_load(img_dir.GenSubFil("url_exec.png")));
win.Search_exec_btn().Btn_img_(app.Gui_mgr().Kit().New_img_load(img_dir.GenSubFil("search_exec.png")));
win.Find_close_btn().Btn_img_(app.Gui_mgr().Kit().New_img_load(img_dir.GenSubFil("find_close.png")));
win.Find_bwd_btn().Btn_img_(app.Gui_mgr().Kit().New_img_load(img_dir.GenSubFil("find_bwd.png")));
win.Find_fwd_btn().Btn_img_(app.Gui_mgr().Kit().New_img_load(img_dir.GenSubFil("find_fwd.png")));
}
private static ColorAdp Parse_from_cfg(Xoa_app app, String key, ColorAdp or) {
String val = app.Cfg().Get_str_app_or(key, null);
try {
return val == null ? or : ColorAdp_.parse_hex_("#00" + val); // parse_hex requires leading "#00"
} catch (Exception e) {
Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to parse color; key=~{0} val=~{1} err=~{2}", key, val, Err_.Message_gplx_log(e));
return or;
}
}
private static final String Cfg__nightmode_enabled = "xowa.gui.nightmode.enabled";
}