LVApp.bf 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using Beefy;
  2. using Beefy.widgets;
  3. using Beefy.theme.dark;
  4. using Beefy.theme;
  5. using Beefy.gfx;
  6. using System;
  7. using Beefy.utils;
  8. using System.IO;
  9. using System.Diagnostics;
  10. using System.Threading;
  11. using Beefy.sys;
  12. namespace LogViewer
  13. {
  14. class LVApp : BFApp
  15. {
  16. public WidgetWindow mMainWindow;
  17. public Board mBoard;
  18. public Font mFont ~ delete _;
  19. public this()
  20. {
  21. gApp = this;
  22. }
  23. public override void Init()
  24. {
  25. base.Init();
  26. /*var dialog = scope OpenFileDialog();
  27. dialog.SetFilter("All files (*.*)|*.*");
  28. dialog.InitialDirectory = mInstallDir;
  29. dialog.Title = "Open Log";
  30. let result = dialog.ShowDialog();
  31. if ((result case .Err) || (dialog.FileNames.Count == 0))
  32. {
  33. Stop();
  34. return;
  35. }*/
  36. BeefPerf.Init("127.0.0.1", "LogViewer");
  37. DarkTheme darkTheme = new DarkTheme();
  38. darkTheme.Init();
  39. ThemeFactory.mDefault = darkTheme;
  40. BFWindow.Flags windowFlags = BFWindow.Flags.Border | //BFWindow.Flags.SysMenu | //| BFWindow.Flags.CaptureMediaKeys |
  41. BFWindow.Flags.Caption | BFWindow.Flags.Minimize | BFWindow.Flags.QuitOnClose | BFWindowBase.Flags.Resizable |
  42. BFWindow.Flags.SysMenu | .Menu;
  43. mFont = new Font();
  44. float fontSize = 12;
  45. mFont.Load(scope String(BFApp.sApp.mInstallDir, "fonts/SourceCodePro-Regular.ttf"), fontSize);
  46. mFont.AddAlternate("Segoe UI Symbol", fontSize);
  47. mFont.AddAlternate("Segoe UI Historic", fontSize);
  48. mFont.AddAlternate("Segoe UI Emoji", fontSize);
  49. mBoard = new Board();
  50. //mBoard.Load(dialog.FileNames[0]);
  51. mMainWindow = new WidgetWindow(null, "LogViewer", 20, 20, 1600, 1200, windowFlags, mBoard);
  52. //mMainWindow.mWindowKeyDownDelegate.Add(new => SysKeyDown);
  53. mMainWindow.SetMinimumSize(480, 360);
  54. mMainWindow.mIsMainWindow = true;
  55. SysMenu root = mMainWindow.mSysMenu;
  56. var subMenu = root.AddMenuItem("&File");
  57. subMenu.AddMenuItem("&Open", "Ctrl+O", new (menu) =>
  58. {
  59. var dialog = scope OpenFileDialog();
  60. dialog.SetFilter("All files (*.*)|*.*");
  61. dialog.InitialDirectory = mInstallDir;
  62. dialog.Title = "Open Log";
  63. let result = dialog.ShowDialog();
  64. if ((result case .Err) || (dialog.FileNames.Count == 0))
  65. {
  66. Stop();
  67. return;
  68. }
  69. mBoard.Load(dialog.FileNames[0]);
  70. });
  71. subMenu.AddMenuItem("Read &MemLog", "Ctrl+M", new (menu) =>
  72. {
  73. var dialog = new MemLogDialog();
  74. dialog.PopupWindow(mMainWindow);
  75. });
  76. subMenu.AddMenuItem("&Reload", "Ctrl+R", new (menu) =>
  77. {
  78. mBoard.Reload();
  79. });
  80. }
  81. public void Fail(String str, params Object[] paramVals)
  82. {
  83. var errStr = scope String();
  84. errStr.AppendF(str, params paramVals);
  85. Fail(errStr);
  86. }
  87. public void Fail(String text)
  88. {
  89. #if CLI
  90. Console.WriteLine("ERROR: {0}", text);
  91. return;
  92. #endif
  93. #unwarn
  94. //Debug.Assert(Thread.CurrentThread == mMainThread);
  95. if (mMainWindow == null)
  96. {
  97. //Internal.FatalError(StackStringFormat!("FAILED: {0}", text));
  98. Windows.MessageBoxA(0, text, "FATAL ERROR", 0);
  99. return;
  100. }
  101. //Beep(MessageBeepType.Error);
  102. Dialog dialog = ThemeFactory.mDefault.CreateDialog("ERROR", text, DarkTheme.sDarkTheme.mIconError);
  103. dialog.mDefaultButton = dialog.AddButton("OK");
  104. dialog.mEscButton = dialog.mDefaultButton;
  105. dialog.PopupWindow(mMainWindow);
  106. /*if (addWidget != null)
  107. {
  108. dialog.AddWidget(addWidget);
  109. addWidget.mY = dialog.mHeight - 60;
  110. addWidget.mX = 90;
  111. }*/
  112. }
  113. }
  114. static
  115. {
  116. public static LVApp gApp;
  117. }
  118. }