1 module newLayerDialog;
2 
3 import PixelPerfectEngine.concrete.window;
4 import PixelPerfectEngine.graphics.common;
5 
6 import std.conv;
7 
8 public class NewLayerDialog : Window{
9 	RadioButtonGroup radioButtonGroup1;
10 	Label label1;
11 	Label label2;
12 	Label label3;
13 	Label label4;
14 	TextBox tileX;
15 	TextBox tileY;
16 	TextBox mapX;
17 	TextBox mapY;
18 	Label label5;
19 	TextBox layerName;
20 	Button button_File;
21 	Label label6;
22 	TextBox fileName;
23 	CheckBox checkBox_ef;
24 	CheckBox checkBox_ed;
25 	Button button_Import;
26 	Button button_Ok;
27 	NewLayerDialogListener nldl;
28 	this(NewLayerDialogListener nldl){
29 		super(Coordinate(0, 0, 305, 210), "New Layer");
30 		radioButtonGroup1 = new RadioButtonGroup("Layer Type:", "radioButtonGroup1", Coordinate(5, 20, 150, 100),[ "SpriteLayer", "TileLayer", ], 16, 0);
31 		addElement(radioButtonGroup1, EventProperties.MOUSE);
32 		label1 = new Label("tileX:", "label1", Coordinate(5, 112, 79, 130));
33 		addElement(label1, EventProperties.MOUSE);
34 		label2 = new Label("tileY:", "label2", Coordinate(5, 137, 60, 155));
35 		addElement(label2, EventProperties.MOUSE);
36 		label3 = new Label("mapX:", "label3", Coordinate(5, 162, 70, 180));
37 		addElement(label3, EventProperties.MOUSE);
38 		label4 = new Label("mapY:", "label4", Coordinate(5, 187, 56, 205));
39 		addElement(label4, EventProperties.MOUSE);
40 		tileX = new TextBox("8", "tileX", Coordinate(55, 110, 150, 130));
41 		addElement(tileX, EventProperties.MOUSE);
42 		tileY = new TextBox("8", "tileY", Coordinate(55, 135, 150, 155));
43 		addElement(tileY, EventProperties.MOUSE);
44 		mapX = new TextBox("256", "mapX", Coordinate(55, 160, 150, 180));
45 		addElement(mapX, EventProperties.MOUSE);
46 		mapY = new TextBox("256", "mapY", Coordinate(55, 185, 150, 205));
47 		addElement(mapY, EventProperties.MOUSE);
48 		label5 = new Label("name:", "label5", Coordinate(155, 20, 210, 40));
49 		addElement(label5, EventProperties.MOUSE);
50 		layerName = new TextBox("textBox1", "layerName", Coordinate(155, 35, 300, 55));
51 		addElement(layerName, EventProperties.MOUSE);
52 		button_File = new Button("File...", "button_File", Coordinate(210, 60, 300, 80));
53 		addElement(button_File, EventProperties.MOUSE);
54 		button_File.onMouseLClickRel = &button_File_onMouseLClickRel;
55 		label6 = new Label("file:", "label6", Coordinate(155, 64, 203, 80));
56 		addElement(label6, EventProperties.MOUSE);
57 		fileName = new TextBox("", "fileName", Coordinate(155, 85, 300, 105));
58 		addElement(fileName, EventProperties.MOUSE);
59 		checkBox_ef = new CheckBox("Use exiting file", "checkBox_ef", Coordinate(155, 112, 300, 130));
60 		addElement(checkBox_ef, EventProperties.MOUSE);
61 		checkBox_ed = new CheckBox("Embed data", "checkBox_ed", Coordinate(155, 137, 300, 155));
62 		addElement(checkBox_ed, EventProperties.MOUSE);
63 		button_Import = new Button("Import symbol data", "button_Import", Coordinate(155, 160, 300, 180));
64 		addElement(button_Import, EventProperties.MOUSE);
65 		button_Import.onMouseLClickRel = &button_Import_onMouseLClickRel;
66 		button_Ok = new Button("Ok", "button_Ok", Coordinate(228, 185, 300, 205));
67 		addElement(button_Ok, EventProperties.MOUSE);
68 		button_Ok.onMouseLClickRel = &button_Ok_onMouseLClickRel;
69 		this.nldl = nldl;
70 	}
71 	/+public deprecated void actionEvent(Event event){
72 		switch(event.source){
73 			case "button_File":
74 				parent.addWindow(new FileDialog("Specify map file", "mapFile", this, [FileDialog.FileAssociationDescriptor("PPE map binary",["*.mbf"]),
75 													FileDialog.FileAssociationDescriptor("PPE extendible map file",["*.xmf"])], ".\\", !checkBox_ef.value));
76 				break;
77 			case "mapFile":
78 				fileName.setText(to!wstring(event.path ~ '\\' ~ event.filename));
79 				break;
80 			case "button_Ok":
81 				switch(radioButtonGroup1.value){
82 					case 0:
83 						try{
84 							nldl.newSpriteLayerEvent(to!string(layerName.getText));
85 							close();
86 						}catch(Exception e){
87 							parent.messageWindow("Error",to!wstring(e.message));
88 						}
89 						break;
90 					case 1:
91 						try{
92 							nldl.newTileLayerEvent(to!string(layerName.getText),to!string(fileName.getText),checkBox_ed.value,checkBox_ef.value,to!int(tileX.getText),
93 													to!int(tileY.getText),to!int(mapX.getText),to!int(mapY.getText));
94 							close();
95 						}catch(Exception e){
96 							parent.messageWindow("Error",to!wstring(e.message));
97 						}
98 						break;
99 					default: break;
100 				}
101 				break;
102 			case "button_Import":
103 
104 				break;
105 			default: break;
106 		}
107 	}+/
108 	private void button_File_onMouseLClickRel(Event ev){
109 		parent.addWindow(new FileDialog("Specify map file", "mapFile", &onFileDialog, [FileDialog.FileAssociationDescriptor("PPE map binary",["*.mbf"]),
110 							FileDialog.FileAssociationDescriptor("PPE extendible map file",["*.xmf"])], ".\\", !checkBox_ef.value));
111 	}
112 	private void onFileDialog(Event ev){
113 		fileName.setText(to!dstring(ev.path ~ '\\' ~ ev.filename));
114 	}
115 	private void button_Ok_onMouseLClickRel(Event ev){
116 		switch(radioButtonGroup1.value){
117 			case 0:
118 				try{
119 					nldl.newSpriteLayerEvent(to!string(layerName.getText));
120 					close();
121 				}catch(Exception e){
122 					parent.messageWindow("Error",to!dstring(e.message));
123 				}
124 				break;
125 			case 1:
126 				try{
127 					nldl.newTileLayerEvent(to!string(layerName.getText),to!string(fileName.getText),checkBox_ed.value,checkBox_ef.value,to!int(tileX.getText),
128 											to!int(tileY.getText),to!int(mapX.getText),to!int(mapY.getText));
129 					close();
130 				}catch(Exception e){
131 					parent.messageWindow("Error",to!dstring(e.message));
132 				}
133 				break;
134 			default: break;
135 		}
136 	}
137 	private void button_Import_onMouseLClickRel(Event ev){
138 
139 	}
140 }
141 
142 public interface NewLayerDialogListener{
143 	public void newTileLayerEvent(string name, string file, bool embed, bool preexisting, int tX, int tY, int mX, int mY);
144 	public void newSpriteLayerEvent(string name);
145 	public void importTileLayerSymbolData(string file);
146 }