private void RefreshWindow(WindowPlacement root) { if (root.WindowWidget == null) { return; } var windowWidget = root.WindowWidget; windowWidget.Nodes.Clear(); if (!root.Root.AnyVisiblePanel()) { CloseWindow(root.WindowWidget.Window); return; } if (MainWindowWidget == windowWidget) { ToolbarArea.Unlink(); MainWindowWidget.Nodes.Add(ToolbarArea); } Splitter currentContainer = new ThemedHSplitter { Anchors = Anchors.LeftRightTopBottom }; windowWidget.Window.ClientPosition = root.Position; windowWidget.Window.ClientSize = root.Size; windowWidget.Window.State = root.State; windowWidget.Nodes.Add(currentContainer); CreateWidgetForPlacement(currentContainer, root.Root); }
void InitializeWidgets() { RootWidget.AddChangeWatcher(() => selection.Version, Selection_Changed); ScrollView.Content.Layout = new FlowLayout(LayoutDirection.TopToBottom) { Spacing = 1.0f }; ScrollView.Content.Padding = new Thickness(5.0f); ScrollView.Content.CompoundPostPresenter.Insert(0, new SyncDelegatePresenter <Widget>(RenderFilesWidgetRectSelection)); ScrollView.Updated += ScrollViewUpdated; ScrollView.Content.Presenter = new SyncDelegatePresenter <Widget>((w) => { w.PrepareRendererState(); var wp = w.ParentWidget; var p = wp.Padding; Renderer.DrawRect(-w.Position + Vector2.Zero - new Vector2(p.Left, p.Top), -w.Position + wp.Size + new Vector2(p.Right, p.Bottom), Theme.Colors.WhiteBackground); }); RootWidget.AddChangeWatcher(() => dragState, (ds) => Window.Current.Invalidate()); RootWidget.AddChangeWatcher(() => dragEndPosition, WhenSelectionRectChanged); RootWidget.AddChangeWatcher(() => WidgetContext.Current.NodeUnderMouse, (value) => { if (value != null && ScrollView.Content == value.Parent) { Window.Current.Invalidate(); } }); RootWidget.AddChangeWatcher(() => model.CurrentPath, (p) => { var up = RootWidget.Components.Get <ViewNodeComponent>().ViewNode as FSViewNode; up.Path = p; AddToNavHystory(p); selection.Clear(); InvalidateView(p); InvalidateFSWatcher(p); preview.ClearTextureCache(); lastKeyboardSelectedFilesystemItem = ScrollView.Content.FirstChild as FilesystemItem; }); RootWidget.Layout = new VBoxLayout(); RootWidget.AddNode((cookingRulesSplitter = new ThemedHSplitter { Nodes = { (new Widget { Layout = new VBoxLayout(), Nodes = { toolbar, (selectionPreviewSplitter = new ThemedVSplitter{ Nodes = { ScrollView, preview.RootWidget, } }) } }), crEditor.RootWidget, } })); }
void RefreshDockedPanels() { MainWindowWidget.Nodes.Clear(); ToolbarArea.Unlink(); DocumentArea.Unlink(); MainWindowWidget.Nodes.Add(ToolbarArea); Splitter currentContainer = new ThemedHSplitter(); MainWindowWidget.Nodes.Add(currentContainer); int insertAt = 0; float stretch = 0; foreach (var p in panels.Where(p => p.Placement.Docked)) { ClosePanelWindow(p); if (!p.Placement.Hidden) { p.RootWidget.Unlink(); Splitter splitter; if (p.Placement.Site == DockSite.Left || p.Placement.Site == DockSite.Right) { splitter = new ThemedHSplitter(); splitter.Stretches.Add(p.Placement.DockedSize.X); } else { splitter = new ThemedVSplitter(); splitter.Stretches.Add(p.Placement.DockedSize.Y); } splitter.DragEnded += p.RefreshDockedSize; splitter.AddNode(p.RootWidget); currentContainer.Stretches.Insert(insertAt, 1 - stretch); currentContainer.Nodes.Insert(insertAt, splitter); currentContainer = splitter; insertAt = (p.Placement.Site == DockSite.Left || p.Placement.Site == DockSite.Top) ? 1 : 0; stretch = splitter.Stretches[0]; } else { p.RootWidget.Unlink(); } } currentContainer.Stretches.Insert(insertAt, 1 - stretch); currentContainer.Nodes.Insert(insertAt, DocumentArea); }