Cfg: Convert 'CSS - General'

v3.3.4
gnosygnu 8 years ago
parent 66e1c3ecc2
commit 7f97487721

@ -30,7 +30,8 @@ public class Bry_fmt {
this.src = src; this.keys = keys; this.args = args;
}
public byte[] Fmt() {return src;}
public Bry_fmt Fmt_(String v) {dirty = true; src = Bry_.new_u8(v); return this;}
public Bry_fmt Fmt_(String v) {return Fmt_(Bry_.new_u8(v));}
public Bry_fmt Fmt_(byte[] v) {dirty = true; src = v; return this;}
public Bry_fmt Args_(Bfr_fmt_arg... v) {dirty = true; args = v; return this;}
public Bry_fmt Keys_(String... v) {return Keys_(Bry_.Ary(v));}
public Bry_fmt Keys_(byte[]... v) {dirty = true; keys = v; return this;}

@ -102,8 +102,10 @@ public class Xocfg_mgr {
}
public String To_ctx(Xow_wiki wiki) {return wiki.Domain_itm().Abrv_xo_str();}
public String Get_str(String ctx, String key) {return cache_mgr.Get(ctx, key);}
public void Set_str_app(String key, String val) {Set_str(Xocfg_mgr.Ctx__app, key, val);}
public void Set_int_app(String key, int val) {Set_str(Xocfg_mgr.Ctx__app, key, Int_.To_str(val));}
public void Set_bool_app(String key, boolean val) {Set_str(Xocfg_mgr.Ctx__app, key, Yn.To_str(val));}
public void Set_float_app(String key, float val) {Set_str(Xocfg_mgr.Ctx__app, key, Float_.To_str(val));}
public void Set_str_app(String key, String val) {Set_str(Xocfg_mgr.Ctx__app, key, val);}
public void Set_int_app(String key, int val) {Set_str(Xocfg_mgr.Ctx__app, key, Int_.To_str(val));}
public void Set_str(String ctx, String key, String val) {
cache_mgr.Set(ctx, key, val);
}

@ -33,10 +33,8 @@ public class Xoapi_font implements Gfo_invk {
}
private void Set(boolean enabled, float html_font_size, float gui_font_size) {
if (html_font_size <= 0) return; // font must be positive
app.Html_mgr().Page_mgr().Font_enabled_(enabled);
app.Html_mgr().Page_mgr().Font_size_(html_font_size);
app.Cfg_mgr().Set_by_app("app.html.page.font_enabled", "y");
app.Cfg_mgr().Set_by_app("app.html.page.font_size", Float_.To_str(app.Html_mgr().Page_mgr().Font_size()));
app.Cfg().Set_bool_app(gplx.xowa.htmls.Xoh_page_mgr.Cfg__font_enabled, enabled);
app.Cfg().Set_float_app(gplx.xowa.htmls.Xoh_page_mgr.Cfg__font_size, html_font_size);
app.Gui_mgr().Win_cfg().Font().Size_(gui_font_size);
app.Cfg_mgr().Set_by_app("app.gui.win_opts.font.size", Float_.To_str(gui_font_size));
app.Cfg_mgr().Db_save_txt();

@ -30,11 +30,11 @@ public class Xoa_cfg_mgr_tst {
fxt.Test_cfg_itm("simple.wikipedia.org", "import.db_text_max", true, true);
fxt.Test_save("app.cfgs.get('import.db_text_max', 'simple.wikipedia.org').val = '2000';\n");
}
@Test public void Notify_quote() {
fxt.Test_cfg_set("app.cfgs.get('app.gui.html.css_xtn', 'app').val = 'a''b';", "*", "app.gui.html.css_xtn", "a'b");
fxt.Test_cfg_itm("app", "app.gui.html.css_xtn", true, true);
fxt.Test_save("app.cfgs.get('app.gui.html.css_xtn', 'app').val = 'a''b';\n");
}
// @Test public void Notify_quote() {
// fxt.Test_cfg_set("app.cfgs.get('app.gui.html.css_xtn', 'app').val = 'a''b';", "*", "app.gui.html.css_xtn", "a'b");
// fxt.Test_cfg_itm("app", "app.gui.html.css_xtn", true, true);
// fxt.Test_save("app.cfgs.get('app.gui.html.css_xtn', 'app').val = 'a''b';\n");
// }
@Test public void Init_should_not_notify_if_app() {
fxt.Init_cfg_app("import.db_text_max", "1000");
fxt.Test_init_wiki("simple.wikipedia.org", "import.db_text_max", "3000"); // 3000 is default; itm shouldn't change b/c cfg is app level; DATE:2013-07-14

@ -21,13 +21,10 @@ public class Xog_html_mgr implements Gfo_invk {
public Xog_html_mgr(Xoae_app app) {portal_mgr = new Xoa_portal_mgr(app);}
public Xoa_portal_mgr Portal_mgr() {return portal_mgr;} private Xoa_portal_mgr portal_mgr;
public String Auto_focus_id() {return auto_focus_id;} private String auto_focus_id = "";
public byte[] Css_xtn() {return css_xtn;} public void Css_xtn_(byte[] v) {css_xtn = v;} private byte[] css_xtn = Bry_.Empty;
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_auto_focus_id_)) auto_focus_id = m.ReadStr("v");
else if (ctx.Match(k, Invk_css_xtn)) return css_xtn;
else if (ctx.Match(k, Invk_css_xtn_)) css_xtn = m.ReadBry("v");
else if (ctx.Match(k, Invk_portal)) return portal_mgr;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_auto_focus_id_ = "auto_focus_id_", Invk_css_xtn = "css_xtn", Invk_css_xtn_ = "css_xtn_", Invk_portal = "portal";
} private static final String Invk_auto_focus_id_ = "auto_focus_id_", Invk_portal = "portal";
}

@ -19,20 +19,19 @@ package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xow
import gplx.gfui.*; import gplx.gfui.draws.*; import gplx.gfui.controls.elems.*;
public class Xog_layout_box implements Gfo_invk {
public Gfo_invk Owner() {return owner;} public Xog_layout_box Owner_(Gfo_invk v) {owner = v; return this;} Gfo_invk owner;
public int X_abs() {return x_abs;} public Xog_layout_box X_abs_(int v) {x_abs = v; return this;} private int x_abs = Int_.Min_value;
public int Y_abs() {return y_abs;} public Xog_layout_box Y_abs_(int v) {y_abs = v; return this;} private int y_abs = Int_.Min_value;
public int W_abs() {return w_abs;} public Xog_layout_box W_abs_(int v) {w_abs = v; return this;} private int w_abs = Int_.Min_value;
public int H_abs() {return h_abs;} public Xog_layout_box H_abs_(int v) {h_abs = v; return this;} private int h_abs = Int_.Min_value;
public int X_rel() {return x_rel;} public Xog_layout_box X_rel_(int v) {x_rel = v; return this;} private int x_rel = Int_.Min_value;
public int Y_rel() {return y_rel;} public Xog_layout_box Y_rel_(int v) {y_rel = v; return this;} private int y_rel = Int_.Min_value;
public int W_rel() {return w_rel;} public Xog_layout_box W_rel_(int v) {w_rel = v; return this;} private int w_rel = Int_.Min_value;
public int H_rel() {return h_rel;} public Xog_layout_box H_rel_(int v) {h_rel = v; return this;} private int h_rel = Int_.Min_value;
public String Text() {return text;} public Xog_layout_box Text_(String v) {text = v; return this;} private String text;
public String Font_name() {return font_name;} public Xog_layout_box Font_name_(String v) {font_name = v; return this;} private String font_name;
public float Font_size() {return font_size;} public Xog_layout_box Font_size_(float v) {font_size = v; return this;} float font_size = Float_.NaN;
public FontStyleAdp Font_style() {return font_style;} public Xog_layout_box Font_style_(FontStyleAdp v) {font_style = v; return this;} FontStyleAdp font_style;
public byte Mode() {return mode;} public Xog_layout_box Mode_(byte v) {mode = v; return this;} private byte mode = Mode_rel;
public FontAdp To_font() {return Font_make(font_name, font_size, font_style);}
public int X_abs() {return x_abs;} private int x_abs = Int_.Min_value;
public int Y_abs() {return y_abs;} private int y_abs = Int_.Min_value;
public int W_abs() {return w_abs;} private int w_abs = Int_.Min_value;
public int H_abs() {return h_abs;} private int h_abs = Int_.Min_value;
private int x_rel = Int_.Min_value;
private int y_rel = Int_.Min_value;
public Xog_layout_box W_rel_(int v) {w_rel = v; return this;} private int w_rel = Int_.Min_value;
public Xog_layout_box H_rel_(int v) {h_rel = v; return this;} private int h_rel = Int_.Min_value;
private String text;
private String font_name;
private float font_size = Float_.NaN;
private FontStyleAdp font_style;
public byte Mode() {return mode;} private byte mode = Mode_rel;
public void Adj_size(Rect_ref rect) {
if (w_abs > -1) rect.W_(w_abs); if (w_rel != Int_.Min_value) rect.W_(w_rel + rect.W());
if (h_abs > -1) rect.H_(h_abs); if (h_rel != Int_.Min_value) rect.H_(h_rel + rect.H());
@ -71,10 +70,10 @@ public class Xog_layout_box implements Gfo_invk {
return this;
}
public static final byte Mode_abs = 0, Mode_rel = 1;
static final String Invk_x_abs_ = "x_abs_", Invk_y_abs_ = "y_abs_", Invk_w_abs_ = "w_abs_", Invk_h_abs_ = "h_abs_", Invk_x_rel_ = "x_rel_", Invk_y_rel_ = "y_rel_", Invk_w_rel_ = "w_rel_", Invk_h_rel_ = "h_rel_"
, Invk_size_abs_ = "size_abs_", Invk_pos_abs_ = "pos_abs_", Invk_rect_abs_ = "rect_abs_", Invk_size_rel_ = "size_rel_", Invk_pos_rel_ = "pos_rel_", Invk_rect_rel_ = "rect_rel_"
, Invk_text_ = "text_"
, Invk_font_name_ = "font_name_", Invk_font_size_ = "font_size_", Invk_font_style_ = "font_style_", Invk_mode_ = "mode_", Invk_owner = "owner";
private static final String Invk_x_abs_ = "x_abs_", Invk_y_abs_ = "y_abs_", Invk_w_abs_ = "w_abs_", Invk_h_abs_ = "h_abs_", Invk_x_rel_ = "x_rel_", Invk_y_rel_ = "y_rel_", Invk_w_rel_ = "w_rel_", Invk_h_rel_ = "h_rel_"
, Invk_size_abs_ = "size_abs_", Invk_pos_abs_ = "pos_abs_", Invk_rect_abs_ = "rect_abs_", Invk_size_rel_ = "size_rel_", Invk_pos_rel_ = "pos_rel_", Invk_rect_rel_ = "rect_rel_"
, Invk_text_ = "text_"
, Invk_font_name_ = "font_name_", Invk_font_size_ = "font_size_", Invk_font_style_ = "font_style_", Invk_mode_ = "mode_", Invk_owner = "owner";
private static FontAdp Font_make(String font_name, float font_size, FontStyleAdp font_style) {
String new_font_name = font_name == null ? "Arial" : font_name;
float new_font_size = Float_.IsNaN(font_size) ? 8 : font_size;

@ -22,6 +22,7 @@ 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();

@ -16,45 +16,50 @@ 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.htmls; import gplx.*; import gplx.xowa.*;
import gplx.core.brys.fmtrs.*;
import gplx.xowa.htmls.portal.*;
public class Xoh_page_mgr implements Gfo_invk {
public Xoh_subpages_bldr Subpages_bldr() {return subpages_bldr;} private final Xoh_subpages_bldr subpages_bldr = new Xoh_subpages_bldr();
public boolean Font_enabled() {return font_enabled;} private boolean font_enabled = false;
public void Font_enabled_(boolean v) {font_enabled = v;}
public String Font_name() {return font_name;} private String font_name = "Arial";
private boolean font_enabled = false;
private String font_name = "Arial";
private byte[] font_css_bry = Bry_.Empty, custom_script = Bry_.Empty;
private final Bry_fmt font_css_fmt = Bry_fmt.Auto("body {font-family: ~{font_name}; font-size: ~{font_size}px;}");
public float Font_size() {return font_size;} private float font_size = Font_size_default;
public void Font_size_(float v) {
font_size = v;
this.Font_css_bry_update();
private void Font_css_bry_() {
font_css_bry = font_css_fmt.Bld_many_to_bry(Bry_bfr_.New(), font_name, font_size);
}
public void Write_css(gplx.xowa.htmls.heads.Xoh_head_wtr wtr) {
if (font_enabled)
wtr.Write_css_style_itm(font_css_bry);
if (Bry_.Len_gt_0(custom_script))
wtr.Write_css_style_itm(custom_script);
}
public Bry_fmtr Font_css_fmtr() {return font_css_fmtr;} private final Bry_fmtr font_css_fmtr = Bry_fmtr.new_("body {font-family: ~{font_name}; font-size: ~{font_size}px;}", "font_name", "font_size");
public Bry_fmtr Content_code_fmtr() {return content_code_fmtr;} private final Bry_fmtr content_code_fmtr = Bry_fmtr.new_("<pre>~{page_text}</pre>", "page_text");
private void Font_css_fmtr_(byte[] bry) {
font_css_fmtr.Fmt_(bry);
Font_css_bry_update();
public Bry_fmt Content_code_fmt() {return content_code_fmt;} private final Bry_fmt content_code_fmt = Bry_fmt.Auto("<pre>~{page_text}</pre>");
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);
}
public byte[] Font_css_bry() {return font_css_bry;}
public void Font_css_bry_update() {
font_css_bry = font_css_fmtr.Bld_bry_many(Bry_bfr_.New(), font_name, font_size);
} private byte[] font_css_bry = Bry_.Empty;
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_font_name)) return font_name;
else if (ctx.Match(k, Invk_font_name_)) {font_name = m.ReadStr("v"); this.Font_css_bry_update();}
else if (ctx.Match(k, Invk_font_size)) return font_size;
else if (ctx.Match(k, Invk_font_size_)) {font_size = m.ReadFloat("v"); this.Font_css_bry_update();}
else if (ctx.Match(k, Invk_font_css_fmt)) return String_.new_u8(font_css_fmtr.Fmt());
else if (ctx.Match(k, Invk_font_css_fmt_)) Font_css_fmtr_(m.ReadBry("v"));
else if (ctx.Match(k, Invk_font_enabled)) return Yn.To_str(font_enabled);
else if (ctx.Match(k, Invk_font_enabled_)) font_enabled = m.ReadYn("v");
else if (ctx.Match(k, Invk_content_code_fmt)) return String_.new_u8(content_code_fmtr.Fmt());
else if (ctx.Match(k, Invk_content_code_fmt_)) content_code_fmtr.Fmt_(m.ReadBry("v"));
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");
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 return Gfo_invk_.Rv_unhandled;
return this;
}
private static final String Invk_font_name = "font_name", Invk_font_name_ = "font_name_", Invk_font_size = "font_size", Invk_font_size_ = "font_size_"
, Invk_font_css_fmt = "font_css_fmt", Invk_font_css_fmt_ = "font_css_fmt_", Invk_font_enabled = "font_enabled", Invk_font_enabled_ = "font_enabled_"
, Invk_content_code_fmt = "content_code_fmt", Invk_content_code_fmt_ = "content_code_fmt_"
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"
, Cfg__font_size = "xowa.html.css.font.size"
;
private static final String
Cfg__font_name = "xowa.html.css.font.name"
, Cfg__font_format = "xowa.html.css.font.format"
, Cfg__custom_script = "xowa.html.css.custom.script"
;
public static final float Font_size_default = 16;
}

@ -216,7 +216,7 @@ public class Xoh_page_wtr_wkr {
if (hctx.Mode_is_hdump())
bfr.Add(data_raw);
else
app.Html_mgr().Page_mgr().Content_code_fmtr().Bld_bfr_many(bfr, tmp_bfr);
app.Html_mgr().Page_mgr().Content_code_fmt().Bld_many(bfr, tmp_bfr);
tmp_bfr.Clear();
}
private void Write_body_edit(Bry_bfr bfr, byte[] data_raw, int ns_id, byte page_tid) {

@ -32,9 +32,9 @@ public class Xoh_page_wtr_wkr_tst {
fxt.Test_edit("&#9;", "&amp;#9;\n"); // NOTE: cannot by &#9; or will show up in edit box as "\t" and save as "\t" instead of &#9;
}
@Test public void Css() {
fxt.App().Html_mgr().Page_mgr().Content_code_fmtr().Fmt_("<pre style='overflow:auto'>~{page_text}</pre>");
fxt.App().Html_mgr().Page_mgr().Content_code_fmt().Fmt_("<pre style='overflow:auto'>~{page_text}</pre>");
fxt.Test_read("MediaWiki:Common.css", ".xowa {}", "<pre style='overflow:auto'>.xowa {}</pre>");
fxt.App().Html_mgr().Page_mgr().Content_code_fmtr().Fmt_("<pre>~{page_text}</pre>");
fxt.App().Html_mgr().Page_mgr().Content_code_fmt().Fmt_("<pre>~{page_text}</pre>");
}
@Test public void Amp_disable() { // PURPOSE: in js documents; &quot; should be rendered as &quot;, not as "; DATE:2013-11-07
fxt.Test_read("MediaWiki:Gadget.js", "&quot;", "<pre>&amp;quot;</pre>");

@ -39,7 +39,7 @@ public class Xow_html_mgr implements Gfo_invk {
public void Init_by_wiki(Xowe_wiki wiki) {
html_wtr.Init_by_wiki(wiki);
module_mgr.Init_by_wiki(wiki);
tidy_mgr.Init_by_app(wiki.Appe());
tidy_mgr.Init_by_wiki(wiki.Appe());
}
public void Init_by_lang(Xol_lang_itm lang) {
portal_mgr.Init_by_lang(lang);

@ -31,7 +31,7 @@ public class Xow_tidy_mgr implements Gfo_evt_itm, Xow_tidy_mgr_interface {
}
wkr.Init_by_app(app);
}
public void Init_by_app(Xoae_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);

@ -22,10 +22,6 @@ public class Xoh_head_itm__css extends Xoh_head_itm__base {
@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());
if (app.Html_mgr().Page_mgr().Font_enabled())
wtr.Write_css_style_itm(app.Html_mgr().Page_mgr().Font_css_bry());
byte[] css_xtn = app.Gui_mgr().Html_mgr().Css_xtn();
if (Bry_.Len_gt_0(css_xtn))
wtr.Write_css_style_itm(css_xtn);
app.Html_mgr().Page_mgr().Write_css(wtr);
}
}

@ -24,11 +24,11 @@ public class Xoh_subpages_bldr implements gplx.core.brys.Bfr_arg {
private byte[][] segs;
public byte[] Bld(Xow_ns_mgr ns_mgr, Xoa_ttl ttl) {
Xow_ns ns = ttl.Ns();
if (! ( ns.Subpages_enabled() // ns has subpages
&& ttl.Leaf_bgn() != Bry_find_.Not_found // ttl has leaf text; EX: Help:A/B
&& ns.Id() != ns_mgr.Ns_page_id() // ns is not [[Page:]]; PAGE:en.s:Notes_on_Osteology_of_Baptanodon._With_a_Description_of_a_New_Species DATE:2014-09-06
if (! ( ns.Subpages_enabled() // ns has subpages
&& ttl.Leaf_bgn() != Bry_find_.Not_found // ttl has leaf text; EX: Help:A/B
&& ns.Id() != ns_mgr.Ns_page_id() // ns is not [[Page:]]; PAGE:en.s:Notes_on_Osteology_of_Baptanodon._With_a_Description_of_a_New_Species DATE:2014-09-06
)
) return Bry_.Empty; // doesn't match above; return empty;
) return Bry_.Empty; // doesn't match above; return empty;
byte[] raw = ttl.Raw();
this.segs = Bry_split_.Split(raw, Byte_ascii.Slash);
fmtr_grp.Bld_bfr(tmp_bfr, this);

Loading…
Cancel
Save