1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
void ME::HTLoad(void) {
HWB = 0;
di = DB->GetSelection();
wxTreeItemId r, i;
HT->CollapseAndReset(rti);
//rti = HTRoot();
if (di.IsOk()) {
wxString s;
HTSet();
if (HTFT) {
rti = HTAdd(rti, wxT("(m)"), 3);
HTFT = false;
} i = rti;
if (i.IsOk()) {
s = htf.GetFirstLine();
HTLoad(i, s); MB(s);
HT->SelectItem(i);
}
}
}
wxString ME::HTLoad(wxTreeItemId& r, wxString s) {
wxTreeItemId i, p; u16 k = 0, n;
wxString s1, s2, s3, t;
int xl, m = 2;
HACK *d, *h = getIH(r), *ph; ph = h;
while (!htf.Eof()) {
switch (m) {
case 1:
ht1 = s.SubString(0, 3);
ht2 = s.SubString(4, 7);
ht3 = s.SubString(9, 12);
ht4 = s.SubString(13, 16);
n = (u16)getHEX(ht2);
k = (u16)getHEX(ht4);
d->hid = n;
if (t.Cmp(wxT("(m)")) == 0) { i = r; }
else if (k != h->hid) {
if (!p.IsOk() || k != ph->hid) {
p = HTFind(k);
ph = getIH(p);
} i = HTAdd(p, t, 3);
} else { i = HTAdd(r, t, 3); }
setIH(i, d);
m = 3;
break;
case 2: case 3:
s3 = s.SubString(0, 0);
if (s3.Cmp(wxT('"')) == 0) {
s1 = s.SubString(s.length() - 1, -1);
t = s.SubString(1, s.length() - 3);
m = 1; d = new HACK; d->use = (bool)getHEX(s1);
break;
}
default:
if (m > 2) {
if (s.length() > 16) {
xl = (int)getHEX(s.SubString(18, -1));
} else { xl = 0; }
s1 = s.SubString(0, 7);
s2 = s.SubString(9, 16);
d->cPart1.Add(s1);
d->cPart2.Add(s2);
d->cLines.Add(xl);
setIH(i, d);
}
} if (!htf.Eof()) { s = htf.GetNextLine(); }
} HTJ = HT->GetCount();
//delete d;
return s;
}
|