WebStyleGrid.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. using InABox.DynamicGrid;
  7. using InABox.WPF;
  8. using ScriptEditor = InABox.DynamicGrid.ScriptEditorWindow;
  9. namespace PRSServer.Forms.WebStyles
  10. {
  11. public class WebStyleGrid : DynamicDataGrid<WebStyle>
  12. {
  13. public WebStyleGrid()
  14. {
  15. Options.AddRange(DynamicGridOption.AddRows, DynamicGridOption.EditRows, DynamicGridOption.DeleteRows);
  16. ActionColumns.Add(new DynamicImageColumn(Properties.Resources.css.AsBitmapImage(), EditStyleAction));
  17. OnAfterSave += (sender, items) =>
  18. {
  19. foreach (var style in items.Cast<WebStyle>()) SaveToLocalFolder(style);
  20. };
  21. OnDoubleClick += (sender, args) =>
  22. {
  23. if (SelectedRows.Length == 1) EditWebStyle(SelectedRows[0]);
  24. args.Handled = true;
  25. };
  26. }
  27. private bool EditStyleAction(CoreRow arg)
  28. {
  29. if (arg != null) EditWebStyle(arg);
  30. return false;
  31. }
  32. private static void SaveToLocalFolder(WebStyle style)
  33. {
  34. if (CoreUtils.GetVersion() == "???")
  35. File.WriteAllText(
  36. string.Format("{0}/WebBackup/Styles/{1}_{2}.css",
  37. Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
  38. style.Code,
  39. style.ID
  40. ),
  41. style.Style
  42. );
  43. }
  44. private void EditWebStyle(CoreRow arg)
  45. {
  46. var style = LoadItem(arg);
  47. var editor = new ScriptEditor(style.Style, SyntaxLanguage.CSS, $"Style: {style}");
  48. editor.OnSave += (e, args) =>
  49. {
  50. style.Style = editor.Script;
  51. SaveToLocalFolder(style);
  52. SaveItem(style);
  53. };
  54. editor.Show();
  55. }
  56. }
  57. }