summaryrefslogtreecommitdiff
path: root/tests/examplefiles/test.ec
diff options
context:
space:
mode:
Diffstat (limited to 'tests/examplefiles/test.ec')
-rw-r--r--tests/examplefiles/test.ec605
1 files changed, 0 insertions, 605 deletions
diff --git a/tests/examplefiles/test.ec b/tests/examplefiles/test.ec
deleted file mode 100644
index 37868b52..00000000
--- a/tests/examplefiles/test.ec
+++ /dev/null
@@ -1,605 +0,0 @@
-namespace gui;
-
-import "Window"
-
-public struct AnchorValue
-{
- AnchorValueType type;
-
- union
- {
- int distance;
- float percent;
- };
- property int
- {
- set { distance = value; type = offset; }
- get { return distance; }
- }
- property double
- {
- set { percent = (float) value; type = relative; }
- get { return (double) percent; }
- }
-
- char * OnGetString(char * stringOutput, void * fieldData, bool * needClass)
- {
- if(type == offset)
- {
- sprintf(stringOutput, "%d", distance);
- }
- else if(type == relative)
- {
- int c;
- int last = 0;
- sprintf(stringOutput, "%f", percent);
- c = strlen(stringOutput)-1;
- for( ; c >= 0; c--)
- {
- if(stringOutput[c] != '0')
- last = Max(last, c);
- if(stringOutput[c] == '.')
- {
- if(last == c)
- {
- stringOutput[c+1] = '0';
- stringOutput[c+2] = 0;
- }
- else
- stringOutput[last+1] = 0;
- break;
- }
- }
- }
- if(needClass) *needClass = false;
- return stringOutput;
- }
-
- bool OnGetDataFromString(char * stringOutput)
- {
- char * end;
- if(strchr(stringOutput, '.'))
- {
- float percent = (float)strtod(stringOutput, &end);
-
- if(end != stringOutput)
- {
- this.percent = percent;
- type = relative;
- return true;
- }
- }
- else if(stringOutput[0])
- {
- int distance = strtol(stringOutput, &end, 0);
- if(end != stringOutput)
- {
- this.distance = distance;
- type = offset;
- return true;
- }
- }
- else
- {
- distance = 0;
- type = 0;
- }
- return false;
- }
-};
-
-public struct MiddleAnchorValue
-{
- AnchorValueType type;
-
- union
- {
- int distance;
- float percent;
- };
- property int
- {
- set { distance = value; type = none; }
- get { return distance; }
- }
- property double
- {
- set { percent = (float) value; type = middleRelative; }
- get { return (double) percent; }
- }
-
- char * OnGetString(char * stringOutput, void * fieldData, bool * needClass)
- {
- if(type == middleRelative)
- {
- int c;
- int last = 0;
- sprintf(stringOutput, "%f", percent);
- c = strlen(stringOutput)-1;
- for( ; c >= 0; c--)
- {
- if(stringOutput[c] != '0')
- last = Max(last, c);
- if(stringOutput[c] == '.')
- {
- if(last == c)
- {
- stringOutput[c+1] = '0';
- stringOutput[c+2] = 0;
- }
- else
- stringOutput[last+1] = 0;
- break;
- }
- }
- }
- else if(type == none && distance)
- {
- sprintf(stringOutput, "%d", distance);
- }
- if(needClass) *needClass = false;
- return stringOutput;
- }
-
- bool OnGetDataFromString(char * stringOutput)
- {
- if(strchr(stringOutput, '.'))
- {
- percent = (float)strtod(stringOutput, null);
- type = middleRelative;
- }
- else
- {
- distance = strtol(stringOutput, null, 0);
- type = none;
- }
- return true;
- }
-};
-
-public enum AnchorValueType { none, offset, relative, middleRelative, cascade, vTiled, hTiled };
-
-public struct Anchor
-{
- union { AnchorValue left; MiddleAnchorValue horz; };
- union { AnchorValue top; MiddleAnchorValue vert; };
- AnchorValue right, bottom;
-
- char * OnGetString(char * stringOutput, void * fieldData, bool * needClass)
- {
- char tempString[256];
- char * anchorValue;
- bool subNeedClass;
-
- tempString[0] = '\0';
- anchorValue = left.OnGetString(tempString, null, &subNeedClass);
- if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "left = "); strcat(stringOutput, anchorValue); }
-
- //if(((!left.type && !right.type) && horz.distance) || horz.type == middleRelative)
- if(!right.type && ((!left.type && horz.distance) || horz.type == middleRelative))
- {
- tempString[0] = '\0';
- anchorValue = horz.OnGetString(tempString, null, &subNeedClass);
- if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "horz = "); strcat(stringOutput, anchorValue); }
- }
-
- tempString[0] = '\0';
- anchorValue = top.OnGetString(tempString, null, &subNeedClass);
- if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "top = "); strcat(stringOutput, anchorValue); }
-
- tempString[0] = '\0';
- anchorValue = right.OnGetString(tempString, null, &subNeedClass);
- if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "right = "); strcat(stringOutput, anchorValue); }
-
- // if(((!top.type && !bottom.type) && vert.distance) || vert.type == middleRelative)
- if(!bottom.type && ((!top.type && vert.distance) || vert.type == middleRelative))
- {
- tempString[0] = '\0';
- anchorValue = vert.OnGetString(tempString, null, &subNeedClass);
- if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "vert = "); strcat(stringOutput, anchorValue); }
- }
-
- tempString[0] = '\0';
- anchorValue = bottom.OnGetString(tempString, null, &subNeedClass);
- if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "bottom = "); strcat(stringOutput, anchorValue); }
-
- return stringOutput;
- }
-
- bool OnGetDataFromString(char * string)
- {
- this = Anchor {};
- return class::OnGetDataFromString(string);
- }
-
- bool OnSaveEdit(DropBox dropBox, void * object)
- {
- return dropBox.Save();
- }
-
- Window OnEdit(Window listBox, Window master, int x, int y, int w, int h, Window control)
- {
- char * string = "";
- AnchorDropBox comboBox
- {
- editText = true;
- parent = listBox;
- master = master;
- position = Point { x, y };
- //clientSize = Size { h = h };
- //size.w = w;
- size = { w, h };
- anchorValue = this;
- control = control;
- borderStyle = 0;
- };
-
- comboBox.Create();
-
- {
- char tempString[MAX_F_STRING] = "";
- bool needClass = false;
- char * result = OnGetString(tempString, null, &needClass);
- if(result) string = result;
- }
- comboBox.contents = string;
- return comboBox;
- }
-};
-
-private class AnchorButton : Button
-{
- toggle = true, bevel = false;
-
- void OnRedraw(Surface surface)
- {
- int cw = clientSize.w;
- int ch = clientSize.h;
-
- surface.SetForeground(black);
- if(checked)
- {
- surface.SetBackground(Color { 85,85,85 });
- surface.Area(0,0, cw-1, ch-1);
- }
- else
- surface.LineStipple(0xAAAA);
-
- surface.Rectangle(0,0,cw-1,ch-1);
-
- if(active)
- {
- surface.LineStipple(0xAAAA);
- surface.Rectangle(2,2,cw-3,ch-3);
- }
- }
-
- bool AnchorEditor::NotifyClicked(Button button, int x, int y, Modifiers mods)
- {
- AnchorDropBox anchorDropBox = (AnchorDropBox)master;
- Anchor anchor = anchorDropBox.anchorValue;
- Window control = anchorDropBox.control;
- DataBox dropMaster = (DataBox)anchorDropBox.master;
- int id = button.id;
-
- switch(id)
- {
- case 0: anchor.left.type = button.checked ? offset : none; break;
- case 1: anchor.top.type = button.checked ? offset : none; break;
- case 2: anchor.right.type = button.checked ? offset : none; break;
- case 3: anchor.bottom.type = button.checked ? offset : none; break;
- }
-
- if(anchor.horz.type == middleRelative && (id == 0 || id == 2))
- {
- anchorDropBox.relButtons[0].checked = false;
- anchorDropBox.relButtons[2].checked = false;
- }
- if(anchor.vert.type == middleRelative && (id == 1 || id == 3))
- {
- anchorDropBox.relButtons[1].checked = false;
- anchorDropBox.relButtons[3].checked = false;
- }
- anchorDropBox.relButtons[id].checked = false;
-
- //anchor.horz.type = none;
- //anchor.vert.type = none;
-
- {
- int vpw, vph;
- int x,y,w,h;
- Window parent = control.parent;
-
- // Fix Anchor
- x = control.position.x;
- y = control.position.y;
- w = control.size.w;
- h = control.size.h;
-
- vpw = parent.clientSize.w;
- vph = parent.clientSize.h;
- if(control.nonClient)
- {
- vpw = parent.size.w;
- vph = parent.size.h;
- }
- else if(((BorderBits)control.borderStyle).fixed)
- {
- if(!control.dontScrollHorz && parent.scrollArea.w) vpw = parent.scrollArea.w;
- if(!control.dontScrollVert && parent.scrollArea.h) vph = parent.scrollArea.h;
- }
-
- if(anchor.left.type == offset) anchor.left.distance = x;
- else if(anchor.left.type == relative) anchor.left.percent = (float)x / vpw;
- if(anchor.top.type == offset) anchor.top.distance = y;
- else if(anchor.top.type == relative) anchor.top.percent = (float)y / vph;
- if(anchor.right.type == offset) anchor.right.distance = vpw - (x + w);
- //else if(anchor.right.type == relative) anchor.right.percent = (float) (x + w) / vpw;
- else if(anchor.right.type == relative) anchor.right.percent = (float) (vpw - (x + w)) / vpw;
- if(anchor.bottom.type == offset) anchor.bottom.distance = vph - (y + h);
- //else if(anchor.bottom.type == relative) anchor.bottom.percent = (float) (y + h) / vph;
- else if(anchor.bottom.type == relative) anchor.bottom.percent = (float) (vph - (y + h)) / vph;
-
- if(!anchor.left.type && !anchor.right.type)
- {
- anchor.horz.distance = (x + w / 2) - (vpw / 2);
- //anchor.horz.type = anchor.horz.distance ? offset : 0;
- }
- else if(anchor.horz.type == middleRelative) anchor.horz.percent = (float) ((x + w / 2) - (vpw / 2)) / vpw;
- if(!anchor.top.type && !anchor.bottom.type)
- {
- anchor.vert.distance = (y + h / 2) - (vph / 2);
- //anchor.vert.type = anchor.vert.distance ? offset : 0;
- }
- else if(anchor.vert.type == middleRelative) anchor.vert.percent = (float)((y + h / 2) - (vph / 2)) / vph;
- }
-
- {
- char tempString[1024] = "";
- bool needClass = false;
- char * string = anchor.OnGetString(tempString, null, &needClass);
- anchorDropBox.contents = string;
- }
-
- dropMaster.SetData(&anchor, false);
- anchorDropBox.anchorValue = anchor;
- return true;
- }
-}
-
-private class AnchorRelButton : Button
-{
- toggle = true;
- bevel = false;
- text = "%";
- //bevelOver = true;
-
- void OnRedraw(Surface surface)
- {
- int cw = clientSize.w;
- int ch = clientSize.h;
-
- if(checked)
- {
- surface.SetForeground(black);
- }
- else
- {
- surface.SetForeground(Color{170,170,170});
- }
- surface.WriteText(5,2, "%", 1);
-
- if(active)
- {
- surface.LineStipple(0xAAAA);
- surface.Rectangle(3,3,cw-4,ch-4);
- }
- }
-
- bool AnchorEditor::NotifyClicked(Button button, int x, int y, Modifiers mods)
- {
- AnchorDropBox anchorDropBox = (AnchorDropBox)master;
- Anchor anchor = anchorDropBox.anchorValue;
- Window control = anchorDropBox.control;
- DataBox dropMaster = (DataBox)anchorDropBox.master;
- int id = button.id;
-
- if((id == 0 || id == 2) && ((!anchor.left.type && !anchor.right.type) || anchor.left.type == middleRelative))
- {
- if(button.checked) anchor.horz.type = middleRelative; else anchor.horz.type = none;
- anchorDropBox.relButtons[(id + 2)%4].checked = button.checked;
- }
- else if((id == 1 || id == 3) && ((!anchor.top.type && !anchor.bottom.type) || anchor.top.type == middleRelative))
- {
- if(button.checked) anchor.vert.type = middleRelative; else anchor.vert.type = none;
- anchorDropBox.relButtons[(id + 2)%4].checked = button.checked;
- }
- else
- {
- switch(id)
- {
- case 0: anchor.left.type = button.checked ? relative : (anchor.left.type ? offset : none); break;
- case 1: anchor.top.type = button.checked ? relative : (anchor.top.type ? offset : none); break;
- case 2: anchor.right.type = button.checked ? relative : (anchor.right.type ? offset : none); break;
- case 3: anchor.bottom.type = button.checked ? relative : (anchor.bottom.type ? offset : none); break;
- }
- anchorDropBox.buttons[id].checked = true;
- if(anchor.horz.type == middleRelative) anchor.horz.type = none;
- if(anchor.vert.type == middleRelative) anchor.vert.type = none;
- }
-
- {
- int vpw, vph;
- int x,y,w,h;
- Window parent = control.parent;
-
- // Fix Anchor
- x = control.position.x;
- y = control.position.y;
- w = control.size.w;
- h = control.size.h;
-
- vpw = parent.clientSize.w;
- vph = parent.clientSize.h;
- if(control.nonClient)
- {
- vpw = parent.size.w;
- vph = parent.size.h;
- }
- else if(((BorderBits)control.borderStyle).fixed)
- {
- if(!control.dontScrollHorz && parent.scrollArea.w) vpw = parent.scrollArea.w;
- if(!control.dontScrollVert && parent.scrollArea.h) vph = parent.scrollArea.h;
- }
-
- if(anchor.left.type == offset) anchor.left.distance = x;
- else if(anchor.left.type == relative) anchor.left.percent = (float)x / vpw;
- if(anchor.top.type == offset) anchor.top.distance = y;
- else if(anchor.top.type == relative) anchor.top.percent = (float)y / vph;
- if(anchor.right.type == offset) anchor.right.distance = vpw - (x + w);
- //else if(anchor.right.type == relative) anchor.right.percent = (float) (x + w) / vpw;
- else if(anchor.right.type == relative) anchor.right.percent = (float) (vpw - (x + w)) / vpw;
- if(anchor.bottom.type == offset) anchor.bottom.distance = vph - (y + h);
- //else if(anchor.bottom.type == relative) anchor.bottom.percent = (float) (y + h) / vph;
- else if(anchor.bottom.type == relative) anchor.bottom.percent = (float) (vph - (y + h)) / vph;
-
- if(!anchor.left.type && !anchor.right.type)
- {
- anchor.horz.distance = (x + w / 2) - (vpw / 2);
- //anchor.horz.type = anchor.horz.distance ? offset : none;
- }
- else if(anchor.horz.type == middleRelative) anchor.horz.percent = (float) ((x + w / 2) - (vpw / 2)) / vpw;
- if(!anchor.top.type && !anchor.bottom.type)
- {
- anchor.vert.distance = (y + h / 2) - (vph / 2);
- //anchor.vert.type = anchor.vert.distance ? offset : none;
- }
- else if(anchor.vert.type == middleRelative) anchor.vert.percent = (float)((y + h / 2) - (vph / 2)) / vph;
- }
-
- {
- char tempString[1024] = "";
- bool needClass = false;
- char * string = anchor.OnGetString(tempString, null, &needClass);
- anchorDropBox.contents = string;
- }
-
- dropMaster.SetData(&anchor, false);
- anchorDropBox.anchorValue = anchor;
- return true;
- }
-}
-
-private class AnchorEditor : Window
-{
- interim = true;
- borderStyle = deepContour;
- size.h = 92;
-
- bool OnKeyDown(Key key, unichar ch)
- {
- if(key == escape)
- return master.OnKeyDown(key, ch);
- return true;
- }
-}
-
-private class AnchorDropBox : DropBox
-{
- Anchor anchorValue;
- Window control;
- Button relButtons[4], buttons[4];
-
- AnchorEditor anchorEditor
- {
- master = this;
- autoCreate = false;
- };
-
- Window OnDropDown()
- {
- int c;
- Button
- {
- anchorEditor,
- anchor = Anchor { left = 28, top = 28, right = 28, bottom = 28 },
- inactive = true, disabled = true
- };
- for(c = 0; c<4; c++)
- {
- Button button = buttons[c] = AnchorButton
- {
- anchorEditor, id = c,
- size = Size { (c%2)?10:28, (c%2)?28:10 }
- };
- Button relButton = relButtons[c] = AnchorRelButton
- {
- anchorEditor, id = c;
- };
-
- switch(c)
- {
- case 0:
- if(anchorValue.left.type && anchorValue.left.type != middleRelative) button.checked = true;
- if(anchorValue.left.type == relative || anchorValue.horz.type == middleRelative) relButton.checked = true;
-
- button.anchor = Anchor { left = 0 };
- relButton.anchor = Anchor { left = 5, vert = 16 };
- break;
- case 1:
- if(anchorValue.top.type && anchorValue.top.type != middleRelative) button.checked = true;
- if(anchorValue.top.type == relative || anchorValue.vert.type == middleRelative) relButton.checked = true;
-
- button.anchor = Anchor { top = 0 };
- relButton.anchor = Anchor { top = 5, horz = 16 };
- break;
- case 2:
- if(anchorValue.right.type && anchorValue.right.type != middleRelative) button.checked = true;
- if(anchorValue.right.type == relative || anchorValue.horz.type == middleRelative) relButton.checked = true;
-
- button.anchor = Anchor { right = 0 };
- relButton.anchor = Anchor { right = 5, vert = 16 };
- break;
- case 3:
- if(anchorValue.bottom.type && anchorValue.bottom.type != middleRelative) button.checked = true;
- if(anchorValue.bottom.type == relative || anchorValue.vert.type == middleRelative) relButton.checked = true;
-
- button.anchor = Anchor { bottom = 0 };
- relButton.anchor = Anchor { bottom = 5, horz = 16 };
- break;
- }
- }
- anchorEditor.Create();
- return anchorEditor;
- }
-
- void OnCloseDropDown(Window anchorEditor)
- {
- // TOFIX: Patch for update bug
- master.Update(null);
- anchorEditor.Destroy(0);
- }
-
- bool DataBox::NotifyTextEntry(AnchorDropBox dropBox, char * string, bool save)
- {
- Anchor anchor = dropBox.anchorValue;
- Window control = dropBox.control;
-
- if(save)
- {
- if(anchor.OnGetDataFromString(string))
- {
- SetData(&anchor, false);
- dropBox.anchorValue = anchor;
- }
- }
- else
- {
- char tempString[1024] = "";
- bool needClass = false;
- char * string = anchor.OnGetString(tempString, null, &needClass);
- dropBox.contents = string;
- }
- return true;
- }
-}