private EditorWindow(Builder builder) : base(builder.GetObject(Common.ID_MainWindow).Handle) { builder.Autoconnect(this); _rightVBox = builder.GetObject(Common.ID_RightVBox) as Box; _packageChooser = builder.GetObject(Common.ID_PackageChooser) as FileChooserButton; _packageSaveButton = builder.GetObject(Common.ID_PackageSaveButton) as Button; _packageCookButton = builder.GetObject(Common.ID_PackageCookButton) as Button; _packageSaver = builder.GetObject(Common.ID_PackageSaver) as FileChooserDialog; _packageSavePopover = builder.GetObject(Common.ID_PackageSavePopover) as Popover; _drawingArea = builder.GetObject(Common.ID_DrawingArea) as DrawingArea; _hierarchyTree = builder.GetObject(Common.ID_HierarchyTree) as TreeView; _aboutDialog = builder.GetObject(Common.ID_AboutDialog) as AboutDialog; _aboutTrigger = builder.GetObject(Common.ID_AboutDialogTrigger) as MenuItem; _templatePopover = builder.GetObject(Common.ID_TemplatePopover) as Popover; _templatePopoverTrigger = builder.GetObject(Common.ID_TemplatePopoverTrigger) as Button; _renderStats = builder.GetObject(Common.ID_FrameRenderStats) as Label; _hierarchyModel = _hierarchyTree.Model as ListStore; DeleteEvent += Window_DeleteEvent; _packageChooser.FileSet += PackageChooser_LoadFile; _packageSaveButton.Clicked += PackageSaveButton_Clicked; _packageCookButton.Clicked += PackageCookButton_Clicked; _packageSaver.FileActivated += PackageSaver_SaveFile; _aboutTrigger.Activated += AboutTrigger_Activated; _templatePopoverTrigger.Clicked += TemplatePopoverTrigger_Clicked; _actorTree = DefaultActorListFactory.New(); _gtkRenderer = new GtkRenderer(_drawingArea); _hydra = new HotSwappableHydraEngine(_actorTree, _gtkRenderer); _gtkRenderer.LinkTo(_hydra); _rendererLayer = new EditorLayer(_drawingArea, _renderStats); _gtkRenderer.RegisterRenderLayer(_rendererLayer); UpdateHierarchy(); }
static void Main(string[] args) { var assembly = typeof(Program).Assembly; var fileVersion = assembly.GetCustomAttribute <AssemblyFileVersionAttribute>(); #if DEBUG var buildType = "Debug"; #else var buildType = "Release"; #endif Console.WriteLine($"OpenPackage (HydraEd {fileVersion.Version}/{buildType})"); if (args.Length == 0) { Console.WriteLine("Error: Run this tool again with the file path specified."); return; } var filename = string.Join(' ', args); using var file = File.OpenRead(filename); var package = new Package(file); Application.Init(); var app = new Application("com.alex.hydra.devtool", GLib.ApplicationFlags.None); app.Register(GLib.Cancellable.Current); var win = new Window(WindowType.Toplevel); var drawingArea = new DrawingArea(); win.SetSizeRequest(256, 256); drawingArea.SetSizeRequest(256, 256); var actorTree = new ActorTree(package); var gtkRenderer = new GtkRenderer(drawingArea); var hydra = new HydraEngine(actorTree, gtkRenderer); gtkRenderer.LinkTo(hydra); win.DeleteEvent += (object sender, DeleteEventArgs args) => { Application.Quit(); }; win.Child = drawingArea; app.AddWindow(win); win.ShowAll(); drawingArea.QueueDraw(); Application.Run(); }