Exemple #1
0
        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);
        }
Exemple #2
0
 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,
         }
     }));
 }
Exemple #3
0
        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);
        }