|
@@ -4,99 +4,39 @@ IMPORT G := Graph, S := SimpleGui, Out, Int, Strings;
|
|
|
CONST window = FALSE;
|
|
|
VAR
|
|
|
frmMain: S.Form;
|
|
|
- pnlSide: S.Panel;
|
|
|
+
|
|
|
+ pnlTop: S.Panel;
|
|
|
+ lblMapName: S.Label;
|
|
|
+ edtMapName: S.Edit;
|
|
|
+ btnOpen: S.Button;
|
|
|
btnSave: S.Button;
|
|
|
btnExit: S.Button;
|
|
|
- pnlMap: S.Panel;
|
|
|
- btn2: S.Button;
|
|
|
- btnMove: S.Button;
|
|
|
- edtText: S.Edit;
|
|
|
- scbHoriz, scbHoriz2: S.ScrollBar;
|
|
|
- scbVert: S.ScrollBar;
|
|
|
- sbxMap: S.ScrollBox;
|
|
|
- btnFile: S.Button;
|
|
|
- btnEdit: S.Button;
|
|
|
- edtMsg: S.Edit;
|
|
|
- custom: S.Widget;
|
|
|
- cnvSign: S.Canvas;
|
|
|
|
|
|
- XX, YY: INTEGER;
|
|
|
- moving: BOOLEAN;
|
|
|
+ pnlSide: S.Panel;
|
|
|
+
|
|
|
+ sbxMap: S.ScrollBox;
|
|
|
+ map: S.Widget;
|
|
|
|
|
|
PROCEDURE BtnExitOnClick(c: S.Widget);
|
|
|
BEGIN
|
|
|
S.Quit
|
|
|
END BtnExitOnClick;
|
|
|
|
|
|
-PROCEDURE Btn2OnClick(c: S.Widget);
|
|
|
-BEGIN
|
|
|
- c(S.Button).caption[1] := CHR((ORD(c(S.Button).caption[1]) + 1) MOD 1256)
|
|
|
-END Btn2OnClick;
|
|
|
-
|
|
|
-PROCEDURE BtnExitOnMouseMove(c: S.Widget; x, y: INTEGER; btns: SET);
|
|
|
-BEGIN
|
|
|
- c(S.Button).caption[5] := CHR((ORD(c(S.Button).caption[5]) + 1) MOD 256);
|
|
|
- c(S.Button).caption[6] := CHR(ORD(c(S.Button).caption[5]) + 1);
|
|
|
- c(S.Button).caption[7] := 0X
|
|
|
-END BtnExitOnMouseMove;
|
|
|
-
|
|
|
-PROCEDURE BtnMoveOnMouseDown(c: S.Widget; x, y, btn: INTEGER);
|
|
|
-BEGIN
|
|
|
- IF btn = 1 THEN moving := TRUE; XX := x; YY := y END
|
|
|
-END BtnMoveOnMouseDown;
|
|
|
-
|
|
|
-PROCEDURE BtnMoveOnMouseUp(c: S.Widget; x, y, btn: INTEGER);
|
|
|
-BEGIN moving := FALSE
|
|
|
-END BtnMoveOnMouseUp;
|
|
|
-
|
|
|
-PROCEDURE BtnMoveOnMouseMove(c: S.Widget; x, y: INTEGER; btns: SET);
|
|
|
-BEGIN
|
|
|
- IF moving THEN
|
|
|
- c.x := c.x + x - XX;
|
|
|
- c.y := c.y + y - YY;
|
|
|
- XX := x; YY := y;
|
|
|
- IF c.x < 0 THEN c.x := 0 END
|
|
|
- END;
|
|
|
-END BtnMoveOnMouseMove;
|
|
|
-
|
|
|
-PROCEDURE OnScroll(c: S.ScrollBar; value: INTEGER);
|
|
|
-VAR s: ARRAY 32 OF CHAR;
|
|
|
-BEGIN
|
|
|
- S.ScrollBarSetValue(scbHoriz2, value);
|
|
|
-
|
|
|
- Int.Str(scbHoriz.value, s);
|
|
|
- Strings.Append(':', s);
|
|
|
- Int.Append(scbVert.value, s);
|
|
|
- S.EditSetText(edtText, s)
|
|
|
-END OnScroll;
|
|
|
-
|
|
|
-PROCEDURE ScbHoriz2OnScroll(c: S.ScrollBar; value: INTEGER);
|
|
|
-BEGIN
|
|
|
- S.ScrollBarSetValue(scbVert, value)
|
|
|
-END ScbHoriz2OnScroll;
|
|
|
-
|
|
|
-PROCEDURE CustomOnPaint(c: S.Widget; x, y, w, h: INTEGER);
|
|
|
+PROCEDURE MapOnPaint(c: S.Widget; x, y, w, h: INTEGER);
|
|
|
VAR color: G.Color;
|
|
|
BEGIN
|
|
|
G.MakeCol(color, 255, 255, 0);
|
|
|
G.Line(x, y, x + w - 1, y + h - 1, color);
|
|
|
G.Line(x + w - 1, y, x, y + h - 1, color);
|
|
|
-END CustomOnPaint;
|
|
|
+END MapOnPaint;
|
|
|
|
|
|
-PROCEDURE CustomOnMouseMove(c: S.Widget; x, y: INTEGER; btns: SET);
|
|
|
-VAR color: G.Color;
|
|
|
-BEGIN
|
|
|
- G.MakeCol(color, 0, x * 7 MOD 256, y * 7 MOD 256);
|
|
|
- btnFile.bgColor := color
|
|
|
-END CustomOnMouseMove;
|
|
|
-
|
|
|
-PROCEDURE CnvSignOnMouseMove(c: S.Widget; x, y: INTEGER; btns: SET);
|
|
|
+PROCEDURE SbxMapOnMouseMove(c: S.Widget; x, y: INTEGER; btns: SET);
|
|
|
VAR color: G.Color;
|
|
|
draw: BOOLEAN;
|
|
|
BEGIN
|
|
|
draw := TRUE;
|
|
|
IF btns = {1} THEN
|
|
|
- color := btnFile.bgColor
|
|
|
+ G.MakeCol(color, 0, 0, 0)
|
|
|
ELSIF btns = {2} THEN
|
|
|
G.MakeCol(color, 0, 255, 255)
|
|
|
ELSE
|
|
@@ -106,7 +46,7 @@ BEGIN
|
|
|
G.Target(c(S.Canvas).bmp);
|
|
|
G.PutPixel(x, y, color)
|
|
|
END
|
|
|
-END CnvSignOnMouseMove;
|
|
|
+END SbxMapOnMouseMove;
|
|
|
|
|
|
PROCEDURE InitInterface(): BOOLEAN;
|
|
|
VAR W, H: INTEGER;
|
|
@@ -115,49 +55,35 @@ BEGIN
|
|
|
G.GetScreenSize(W, H);
|
|
|
frmMain := S.NewForm(0, 0, W, H);
|
|
|
|
|
|
- pnlSide := S.NewPanel(frmMain, 4, 4, 104, H - 8);
|
|
|
- G.MakeCol(color, 40, 150, 40);
|
|
|
- S.SetBgColor(pnlSide, color);
|
|
|
- btnSave := S.NewButton(pnlSide, 4, 4, 96, 24, 'Сохранить');
|
|
|
- btnExit := S.NewButton(pnlSide, 4, 32, 96, 24, 'Выйти');
|
|
|
+ pnlTop := S.NewPanel(frmMain, 0, 0, W, 40);
|
|
|
+
|
|
|
+ lblMapName := S.NewLabel(pnlTop, 8, 9, 120, 22, 'Имя файла:');
|
|
|
+ S.LabelSetAlign(lblMapName, S.alRight);
|
|
|
+
|
|
|
+ edtMapName := S.NewEdit(pnlTop, lblMapName.x + lblMapName.w + 8,
|
|
|
+ 9, 120, 22);
|
|
|
+
|
|
|
+ btnOpen := S.NewButton(pnlTop, edtMapName.x + edtMapName.w + 8,
|
|
|
+ 8, 96, 24, 'Открыть');
|
|
|
+
|
|
|
+ btnSave := S.NewButton(pnlTop, btnOpen.x + btnOpen.w + 8,
|
|
|
+ 8, 96, 24, 'Сохранить');
|
|
|
+
|
|
|
+ btnExit := S.NewButton(pnlTop, W - 68, 8, 60, 24, 'Выход');
|
|
|
S.SetOnClick(btnExit, BtnExitOnClick);
|
|
|
- S.SetOnMouseMove(btnExit, BtnExitOnMouseMove);
|
|
|
- edtText := S.NewEdit(pnlSide, 4, 60, 96, 20);
|
|
|
- scbHoriz := S.NewScrollBar(pnlSide, 4, 84, 96, 16);
|
|
|
- S.ScrollBarSetOnScroll(scbHoriz, OnScroll);
|
|
|
- scbHoriz2 := S.NewScrollBar(pnlSide, 24, 104, 76, 50);
|
|
|
- S.ScrollBarSetOnScroll(scbHoriz2, ScbHoriz2OnScroll);
|
|
|
- scbVert := S.NewScrollBar(pnlSide, 4, 104, 16, 140);
|
|
|
- S.ScrollBarSetVertical(scbVert, TRUE);
|
|
|
- S.ScrollBarSetOnScroll(scbVert, OnScroll);
|
|
|
-
|
|
|
- pnlMap := S.NewPanel(frmMain, 112, 4, W - 116, H - 8);
|
|
|
- G.MakeCol(color, 150, 90, 40);
|
|
|
- S.SetBgColor(pnlMap, color);
|
|
|
- btn2 := S.NewButton(pnlMap, 64, 4, 96, 96, 'ОГО!');
|
|
|
- S.SetOnClick(btn2, Btn2OnClick);
|
|
|
- btnMove := S.NewButton(pnlMap, 168, 4, 96, 96, 'ДВИГАЙ');
|
|
|
- S.SetOnMouseDown(btnMove, BtnMoveOnMouseDown);
|
|
|
- S.SetOnMouseUp(btnMove, BtnMoveOnMouseUp);
|
|
|
- S.SetOnMouseMove(btnMove, BtnMoveOnMouseMove);
|
|
|
-
|
|
|
- sbxMap := S.NewScrollBox(pnlMap, 4, 104, 300, 200);
|
|
|
- S.ScrollBoxSetNoBg(sbxMap, ~TRUE);
|
|
|
- S.ScrollBoxSetInnerSize(sbxMap, 700, 800);
|
|
|
- G.MakeCol(color, 0, 90, 255);
|
|
|
- S.SetBgColor(sbxMap, color);
|
|
|
- btnFile := S.NewButton(sbxMap, 20, 40, 80, 24, 'Файл');
|
|
|
- btnEdit := S.NewButton(sbxMap, 260, 40, 80, 24, 'Правка');
|
|
|
- edtMsg := S.NewEdit(sbxMap, 60, 170, 120, 35);
|
|
|
|
|
|
- custom := S.NewWidget(sbxMap, 50, 70, 100, 70);
|
|
|
- S.SetOnPaint(custom, CustomOnPaint);
|
|
|
- S.SetOnMouseMove(custom, CustomOnMouseMove);
|
|
|
+ pnlSide := S.NewPanel(frmMain, 0, pnlTop.h, 180, H - pnlTop.h);
|
|
|
+ G.MakeCol(color, 40, 150, 40);
|
|
|
+ S.SetBgColor(pnlSide, color);
|
|
|
|
|
|
- cnvSign := S.NewCanvas(sbxMap, 210, 80, 150, 250);
|
|
|
- S.SetOnMouseMove(cnvSign, CnvSignOnMouseMove);
|
|
|
+ sbxMap := S.NewScrollBox(frmMain, pnlSide.w, pnlTop.h,
|
|
|
+ W - pnlSide.w, H - pnlTop.h);
|
|
|
+ S.ScrollBoxSetInnerSize(sbxMap, 1024, 1024);
|
|
|
+ G.MakeCol(color, 0, 0, 0);
|
|
|
+ S.SetBgColor(sbxMap, color);
|
|
|
+ (*S.ScrollBoxSetNoBg(sbxMap, TRUE);*)
|
|
|
+ (*S.SetOnMouseMove(sbxMap, SbxMapOnMouseMove);*)
|
|
|
|
|
|
- moving := FALSE
|
|
|
RETURN TRUE END InitInterface;
|
|
|
|
|
|
PROCEDURE Init(): BOOLEAN;
|