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 }