diff --git a/100_core/src_110_primitive/gplx/Bry_bfr.java b/100_core/src_110_primitive/gplx/Bry_bfr.java
index 5d2c8489f..90ecc6471 100644
--- a/100_core/src_110_primitive/gplx/Bry_bfr.java
+++ b/100_core/src_110_primitive/gplx/Bry_bfr.java
@@ -120,10 +120,12 @@ public class Bry_bfr {
return this;
}
public Bry_bfr Add_byte_eq() {return Add_byte(Byte_ascii.Eq);}
- public Bry_bfr Add_byte_pipe() {return Add_byte(Byte_ascii.Pipe);}
- public Bry_bfr Add_byte_apos() {return Add_byte(Byte_ascii.Apos);}
- public Bry_bfr Add_byte_quote() {return Add_byte(Byte_ascii.Quote);}
- public Bry_bfr Add_byte_space() {return Add_byte(Byte_ascii.Space);}
+ public Bry_bfr Add_byte_pipe() {return Add_byte(Byte_ascii.Pipe);}
+ public Bry_bfr Add_byte_comma() {return Add_byte(Byte_ascii.Comma);}
+ public Bry_bfr Add_byte_apos() {return Add_byte(Byte_ascii.Apos);}
+ public Bry_bfr Add_byte_backslash() {return Add_byte(Byte_ascii.Backslash);}
+ public Bry_bfr Add_byte_quote() {return Add_byte(Byte_ascii.Quote);}
+ public Bry_bfr Add_byte_space() {return Add_byte(Byte_ascii.Space);}
public Bry_bfr Add_byte_nl() {return Add_byte(Byte_ascii.NewLine);}
public Bry_bfr Add_byte(byte val) {
int newPos = bfr_len + 1;
diff --git a/100_core/src_110_primitive/gplx/Bry_finder.java b/100_core/src_110_primitive/gplx/Bry_finder.java
index 765f8f776..bc9237182 100644
--- a/100_core/src_110_primitive/gplx/Bry_finder.java
+++ b/100_core/src_110_primitive/gplx/Bry_finder.java
@@ -100,6 +100,16 @@ public class Bry_finder {
}
return rv;
}
+ public static int Find_bwd_ws(byte[] src, int cur, int end) {
+ for (int i = cur; i > -1; --i) {
+ byte b = src[i];
+ switch (b) {
+ case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.NewLine: case Byte_ascii.CarriageReturn:
+ return i;
+ }
+ }
+ return Bry_finder.Not_found;
+ }
public static int Find_fwd_last_ws(byte[] src, int cur) {
int end = src.length;
if (cur >= end) return Bry_finder.Not_found;
@@ -165,6 +175,18 @@ public class Bry_finder {
cur++;
}
}
+ public static int Find_fwd_until_space_or_tab(byte[] src, int cur, int end) {
+ while (true) {
+ if (cur == end) return Bry_finder.Not_found;
+ switch (src[cur]) {
+ case Byte_ascii.Space: case Byte_ascii.Tab:
+ return cur;
+ default:
+ ++cur;
+ break;
+ }
+ }
+ }
public static int Find_fwd_while_space_or_tab(byte[] src, int cur, int end) {
while (true) {
if (cur == end) return cur;
diff --git a/100_core/src_110_primitive/gplx/Byte_ascii.java b/100_core/src_110_primitive/gplx/Byte_ascii.java
index de567314e..052ccf085 100644
--- a/100_core/src_110_primitive/gplx/Byte_ascii.java
+++ b/100_core/src_110_primitive/gplx/Byte_ascii.java
@@ -76,7 +76,9 @@ public class Byte_ascii {
, Lt_bry = new byte[] {Byte_ascii.Lt}
, Gt_bry = new byte[] {Byte_ascii.Gt}
, Brack_bgn_bry = new byte[] {Byte_ascii.Brack_bgn}
+ , Brack_end_bry = new byte[] {Byte_ascii.Brack_end}
, Apos_bry = new byte[] {Byte_ascii.Apos}
+ , Quote_bry = new byte[] {Byte_ascii.Quote}
, Pipe_bry = new byte[] {Byte_ascii.Pipe}
, Underline_bry = new byte[] {Byte_ascii.Underline}
, Asterisk_bry = new byte[] {Byte_ascii.Asterisk}
diff --git a/100_core/src_110_primitive/gplx/Int_.java b/100_core/src_110_primitive/gplx/Int_.java
index 34b1260a4..fe54fc711 100644
--- a/100_core/src_110_primitive/gplx/Int_.java
+++ b/100_core/src_110_primitive/gplx/Int_.java
@@ -43,6 +43,7 @@ public class Int_ implements GfoInvkAble {
rv[i] = bgn + i;
return rv;
}
+ public static boolean Bounds_chk(int bgn, int end, int len) {return bgn > -1 && end < len;}
public static final int
MinValue = Integer.MIN_VALUE
, MaxValue = Integer.MAX_VALUE
diff --git a/100_core/src_110_primitive/gplx/String_.java b/100_core/src_110_primitive/gplx/String_.java
index 5666e73f0..3632c28f4 100644
--- a/100_core/src_110_primitive/gplx/String_.java
+++ b/100_core/src_110_primitive/gplx/String_.java
@@ -152,7 +152,7 @@ public class String_ implements GfoInvkAble {
rv[i] = (int)s.charAt(i);
return rv;
}
- public static String Coalesce(String s, String alt) {return Len(s) == 0 ? alt : s;}
+ public static String Coalesce(String s, String alt) {return Len_eq_0(s) ? alt : s;}
public static boolean In(String s, String... ary) {
for (String itm : ary)
if (String_.Eq(s, itm)) return true;
diff --git a/150_gfui/src_700_env/gplx/gfui/Swt_kit.java b/150_gfui/src_700_env/gplx/gfui/Swt_kit.java
index 5d85976ae..b3b4bcccd 100644
--- a/150_gfui/src_700_env/gplx/gfui/Swt_kit.java
+++ b/150_gfui/src_700_env/gplx/gfui/Swt_kit.java
@@ -186,11 +186,17 @@ public class Swt_kit implements Gfui_kit {
public Gfui_mnu_grp New_mnu_bar(String key, GfuiWin owner) {return Swt_popup_grp.new_bar(key, owner);}
public float Calc_font_height(GfuiElem elem, String s) {
if (String_.Len_eq_0(s)) return 8;
- String old_text = elem.Text();
- elem.Text_(s);
- float rv = ((Swt_text_w_border)(elem.UnderElem())).Under_text().getFont().getFontData()[0].height;
- shell.setText(old_text);
- return rv;
+ try {
+ String old_text = elem.Text();
+ elem.Text_(s);
+ float rv = ((Swt_text_w_border)(elem.UnderElem())).Under_text().getFont().getFontData()[0].height;
+ elem.Text_(old_text); // was shell.setText(old_text); DATE:2014-07-25
+ return rv;
+ }
+ catch (Exception e) {
+ Gfo_usr_dlg_._.Warn_many("", "", "error while calculating font height; err=~{0}", Err_.Message_gplx_brief(e));
+ return 8;
+ }
}
public void Set_mnu_popup(GfuiElem owner, Gfui_mnu_grp grp) {
Control control = Swt_control_.cast_or_fail(owner).Under_menu_control();
diff --git a/400_xowa/.classpath b/400_xowa/.classpath
index a16e8f691..5395ffd93 100644
--- a/400_xowa/.classpath
+++ b/400_xowa/.classpath
@@ -19,16 +19,11 @@
") , P_rhs = Bry_.new_ascii_("
") , Html_rhs = Bry_.new_ascii_("