comparison FrmExportXml.cs @ 126:d4e6bfeb1c61

Re #361: Add XML export UI to GTK# * Separate out the "transform" section so we can add it as an ExtraWidget on the file chooser
author IBBoard <dev@ibboard.co.uk>
date Sat, 01 Oct 2011 16:19:48 +0100
parents 42d2aa87dfa7
children d5a631a8d288
comparison
equal deleted inserted replaced
125:42d2aa87dfa7 126:d4e6bfeb1c61
14 namespace IBBoard.WarFoundry.GUI.GTK 14 namespace IBBoard.WarFoundry.GUI.GTK
15 { 15 {
16 public partial class FrmExportXml : Gtk.Dialog 16 public partial class FrmExportXml : Gtk.Dialog
17 { 17 {
18 private Army army; 18 private Army army;
19 private TransformXmlWidget transformWidget;
19 20
20 public FrmExportXml(Army army) 21 public FrmExportXml(Army army)
21 { 22 {
22 this.army = army; 23 this.army = army;
23 this.Build(); 24 this.Build();
24 FillXsltList(); 25 transformWidget = new TransformXmlWidget();
26 transformWidget.TransformChanged += HandleTransformWidgetTransformChanged;
27 saveAsPath.ExtraWidget = transformWidget;
25 saveAsPath.SetCurrentFolder(Environment.GetFolderPath(Environment.SpecialFolder.Personal)); 28 saveAsPath.SetCurrentFolder(Environment.GetFolderPath(Environment.SpecialFolder.Personal));
26 } 29 }
27 30
28 private void FillXsltList() 31 private void HandleTransformWidgetTransformChanged (object sender, EventArgs e)
29 { 32 {
30 DirectoryInfo dir = new DirectoryInfo(System.IO.Path.Combine(Constants.ExecutablePath, "xsl"));
31 List<FileInfo> files = new List<FileInfo>(dir.GetFiles("*.xsl"));
32 ComboBoxUtils.FillCombo(transformList, files, delegate(FileInfo file) { return file.Name; });
33 }
34
35 protected void OnDoTransformWidgetToggled(object sender, System.EventArgs e)
36 {
37 bool enabled = doTransformWidget.Active;
38 lblTransform.Sensitive = enabled;
39 transformList.Sensitive = enabled;
40 SetOkayButtonSensitive(); 33 SetOkayButtonSensitive();
41 } 34 }
42 35
43 private void SetOkayButtonSensitive() 36 private void SetOkayButtonSensitive()
44 { 37 {
45 buttonOk.Sensitive = saveAsName.Text != "" && saveAsPath.Filename != null && saveAsPath.Filename != "" && (!doTransformWidget.Active || ComboBoxUtils.GetSelectedItem<FileInfo>(transformList) != null); 38 buttonOk.Sensitive = saveAsPath.Filename != null && saveAsPath.Filename != "" && transformWidget.IsValid;
46 }
47
48 protected void OnTransformListChanged(object sender, System.EventArgs e)
49 {
50 SetOkayButtonSensitive();
51 } 39 }
52 40
53 protected void OnSaveAsPathSelectionChanged(object sender, System.EventArgs e) 41 protected void OnSaveAsPathSelectionChanged(object sender, System.EventArgs e)
54 { 42 {
55 SetOkayButtonSensitive(); 43 SetOkayButtonSensitive();
59 { 47 {
60 string errorMessage = ""; 48 string errorMessage = "";
61 // Catch potential errors with the file export or XSL compiliation 49 // Catch potential errors with the file export or XSL compiliation
62 try 50 try
63 { 51 {
64 string fileName = System.IO.Path.Combine(saveAsPath.Filename, saveAsName.Text); 52 string fileName = saveAsPath.Filename;
65 53
66 if (doTransformWidget.Active) 54 if (transformWidget.TransformEnabled)
67 { 55 {
68 WarFoundryXmlWithXslExporter.GetDefault().ExportArmyWithTransform(army, fileName, ComboBoxUtils.GetSelectedItem<FileInfo>(transformList).FullName); 56 WarFoundryXmlWithXslExporter.GetDefault().ExportArmyWithTransform(army, fileName, transformWidget.GetXsltPath());
69 } 57 }
70 else 58 else
71 { 59 {
72 WarFoundryXmlWithXslExporter.GetDefault().ExportArmy(army, fileName); 60 WarFoundryXmlWithXslExporter.GetDefault().ExportArmy(army, fileName);
73 } 61 }
111 protected void OnButtonCancelClicked (object sender, System.EventArgs e) 99 protected void OnButtonCancelClicked (object sender, System.EventArgs e)
112 { 100 {
113 Respond(ResponseType.Cancel); 101 Respond(ResponseType.Cancel);
114 } 102 }
115 103
116 protected void OnSaveAsNameChanged (object sender, System.EventArgs e) 104 protected void OnSizeAllocated (object o, Gtk.SizeAllocatedArgs args)
117 { 105 {
118 SetOkayButtonSensitive(); 106 Console.WriteLine(args.Allocation.Height + "," + args.Allocation.Width);
107 //this.
119 } 108 }
120 } 109 }
121 } 110 }
122 111