1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-19 00:20:25 +02:00
Beef/BeefTools/LogViewer/src/LVApp.bf
2020-12-01 14:23:54 -08:00

109 lines
2.7 KiB
Beef

using Beefy;
using Beefy.widgets;
using Beefy.theme.dark;
using Beefy.theme;
using Beefy.gfx;
using System;
using Beefy.utils;
using System.IO;
using System.Diagnostics;
using System.Threading;
namespace LogViewer
{
class LVApp : BFApp
{
public WidgetWindow mMainWindow;
public Board mBoard;
public Font mFont ~ delete _;
public this()
{
gApp = this;
}
public override void Init()
{
base.Init();
var dialog = scope OpenFileDialog();
dialog.SetFilter("All files (*.*)|*.*");
dialog.InitialDirectory = mInstallDir;
dialog.Title = "Open Log";
let result = dialog.ShowDialog();
if ((result case .Err) || (dialog.FileNames.Count == 0))
{
Stop();
return;
}
BeefPerf.Init("127.0.0.1", "LogViewer");
DarkTheme darkTheme = new DarkTheme();
darkTheme.Init();
ThemeFactory.mDefault = darkTheme;
BFWindow.Flags windowFlags = BFWindow.Flags.Border | //BFWindow.Flags.SysMenu | //| BFWindow.Flags.CaptureMediaKeys |
BFWindow.Flags.Caption | BFWindow.Flags.Minimize | BFWindow.Flags.QuitOnClose | BFWindowBase.Flags.Resizable |
BFWindow.Flags.SysMenu;
mFont = new Font();
float fontSize = 12;
mFont.Load(scope String(BFApp.sApp.mInstallDir, "fonts/SourceCodePro-Regular.ttf"), fontSize);
mFont.AddAlternate("Segoe UI Symbol", fontSize);
mFont.AddAlternate("Segoe UI Historic", fontSize);
mFont.AddAlternate("Segoe UI Emoji", fontSize);
mBoard = new Board();
mBoard.Load(dialog.FileNames[0]);
mMainWindow = new WidgetWindow(null, "LogViewer", 0, 0, 1600, 1200, windowFlags, mBoard);
//mMainWindow.mWindowKeyDownDelegate.Add(new => SysKeyDown);
mMainWindow.SetMinimumSize(480, 360);
mMainWindow.mIsMainWindow = true;
}
public void Fail(String str, params Object[] paramVals)
{
var errStr = scope String();
errStr.AppendF(str, paramVals);
Fail(errStr);
}
public void Fail(String text)
{
#if CLI
Console.WriteLine("ERROR: {0}", text);
return;
#endif
#unwarn
//Debug.Assert(Thread.CurrentThread == mMainThread);
if (mMainWindow == null)
{
//Internal.FatalError(StackStringFormat!("FAILED: {0}", text));
Windows.MessageBoxA(0, text, "FATAL ERROR", 0);
return;
}
//Beep(MessageBeepType.Error);
Dialog dialog = ThemeFactory.mDefault.CreateDialog("ERROR", text, DarkTheme.sDarkTheme.mIconError);
dialog.mDefaultButton = dialog.AddButton("OK");
dialog.mEscButton = dialog.mDefaultButton;
dialog.PopupWindow(mMainWindow);
/*if (addWidget != null)
{
dialog.AddWidget(addWidget);
addWidget.mY = dialog.mHeight - 60;
addWidget.mX = 90;
}*/
}
}
static
{
public static LVApp gApp;
}
}