public FigmaDesignerOutlinePad() { outlinePanel = new OutlinePanel(); outlinePanel.RaiseFirstResponder += (s, e) => { RaiseFirstResponder?.Invoke(s, e); }; outlinePanel.RaiseDeleteItem += (s, e) => { RaiseDeleteItem?.Invoke(s, e); }; var widget = GtkMacInterop.NSViewToGtkWidget(outlinePanel.EnclosingScrollView); CanFocus = widget.CanFocus = true; Sensitive = widget.Sensitive = true; widget.Focused += FigmaDesignerOutlinePad_Focused; PackStart(widget, true, true, 0); ShowAll(); Focused += FigmaDesignerOutlinePad_Focused; }
public void RemoveItem() { if (outlineView.SelectedNode is NodeView nodeView) { RaiseDeleteItem?.Invoke(this, nodeView.Wrapper); } }
public OutlinePanel() { View = new OutlineView(); EnclosingScrollView = new ScrollContainerView(View); View.SelectionNodeChanged += (s, e) => { if (View.SelectedNode is WidgetNodeView nodeView) { RaiseFirstResponder?.Invoke(this, nodeView.Wrapper); } }; View.KeyPress += (sender, e) => { if (e == DeleteKey) { if (View.SelectedNode is WidgetNodeView nodeView) { RaiseDeleteItem?.Invoke(this, nodeView.Wrapper); } } }; View.DoubleClick += (sender, e) => { DoubleClick?.Invoke(this, (View.SelectedNode as WidgetNodeView)?.Wrapper); }; View.StartDrag += (sender, e) => { StartDrag?.Invoke(this, (e as WidgetNodeView)?.Wrapper); }; }
public InspectorWindow(IInspectDelegate inspectorDelegate, CGRect frame) : base(frame, NSWindowStyle.Titled | NSWindowStyle.Resizable, NSBackingStore.Buffered, false) { this.inspectorDelegate = inspectorDelegate; ShowsToolbarButton = false; MovableByWindowBackground = false; propertyEditorPanel = new PropertyEditorPanel(); editorProvider = new PropertyEditorProvider(); propertyEditorPanel.TargetPlatform = new TargetPlatform(editorProvider) { SupportsCustomExpressions = true, SupportsMaterialDesign = true, }; var currentThemeStyle = NSUserDefaults.StandardUserDefaults.StringForKey("AppleInterfaceStyle") ?? "Light"; PropertyEditorPanel.ThemeManager.Theme = currentThemeStyle == "Dark" ? PropertyEditorTheme.Dark : PropertyEditorTheme.Light; contentView = ContentView; var stackView = NativeViewHelper.CreateVerticalStackView(margin); contentView.AddSubview(stackView); stackView.LeftAnchor.ConstraintEqualToAnchor(contentView.LeftAnchor, margin).Active = true; stackView.RightAnchor.ConstraintEqualToAnchor(contentView.RightAnchor, -margin).Active = true; stackView.TopAnchor.ConstraintEqualToAnchor(contentView.TopAnchor, margin).Active = true; constraint = stackView.HeightAnchor.ConstraintEqualToConstant(contentView.Frame.Height - margin * 2); constraint.Active = true; outlineView = new OutlineView(); var outlineViewScrollView = new ScrollContainerView(outlineView); outlineView.SelectionNodeChanged += (s, e) => { if (outlineView.SelectedNode is NodeView nodeView) { RaiseFirstResponder?.Invoke(this, nodeView.Wrapper); } }; outlineView.KeyPress += (sender, e) => { if (e == DeleteKey) { if (outlineView.SelectedNode is NodeView nodeView) { RaiseDeleteItem?.Invoke(this, nodeView.Wrapper); } } }; //TOOLBAR var toolbarTab = new NSTabView() { TranslatesAutoresizingMaskIntoConstraints = false }; var toolbarTabViewWrapper = new MacTabWrapper(toolbarTab); toolbarTab.WantsLayer = true; toolbarTab.Layer.BackgroundColor = NSColor.Red.CGColor; stackView.AddArrangedSubview(toolbarTab); toolbarTab.LeftAnchor.ConstraintEqualToAnchor(contentView.LeftAnchor, margin).Active = true; toolbarTab.RightAnchor.ConstraintEqualToAnchor(contentView.RightAnchor, -margin).Active = true; toolbarTab.TopAnchor.ConstraintEqualToAnchor(contentView.TopAnchor, margin).Active = true; toolbarTab.HeightAnchor.ConstraintEqualToConstant(ScrollViewSize).Active = true; ///////////////// var toolbarTabItem = new NSTabViewItem(); toolbarTabItem.Label = "Toolbar"; var toolbarStackView = NativeViewHelper.CreateVerticalStackView(); toolbarStackView.TranslatesAutoresizingMaskIntoConstraints = true; var toolbarHorizontalStackView = NativeViewHelper.CreateHorizontalStackView(); toolbarHorizontalStackView.TranslatesAutoresizingMaskIntoConstraints = true; toolbarSearchTextField = new NSSearchField(); toolbarSearchTextField.Changed += (object sender, EventArgs e) => { Search(); }; toolbarHorizontalStackView.AddArrangedSubview(toolbarSearchTextField); var compactModeToggleButton = new ToggleButton(); compactModeToggleButton.TranslatesAutoresizingMaskIntoConstraints = true; compactModeToggleButton.Image = inspectorDelegate.GetImageResource("compact-display-16.png").NativeObject as NSImage; compactModeToggleButton.ToolTip = "Use compact display"; toolbarHorizontalStackView.AddArrangedSubview(compactModeToggleButton); toolbarStackView.AddArrangedSubview(toolbarHorizontalStackView); toolbarView = new MacInspectorToolbarView(); var toolbarViewScrollView = new ScrollContainerView(toolbarView); toolbarStackView.AddArrangedSubview(toolbarViewScrollView); toolbarTabItem.View = toolbarStackView; toolbarView.ActivateSelectedItem += (sender, e) => { RaiseInsertItem?.Invoke(this, toolbarView.SelectedItem.TypeOfView); }; var outlineTabItem = new NSTabViewItem(); outlineTabItem.Label = "View Hierarchy"; outlineTabItem.View = outlineViewScrollView; toolbarTab.Add(outlineTabItem); toolbarTab.Add(toolbarTabItem); foreach (var module in InspectorContext.Current.Modules) { if (!module.IsEnabled) { continue; } module.Load(this, toolbarTabViewWrapper); } //=================== //Method list view methodListView = new MethodListView(); methodListView.AddColumn(new NSTableColumn("col") { Title = "Methods" }); methodListView.DoubleClick += MethodListView_DoubleClick; scrollView = new ScrollContainerView(methodListView); var titleContainter = NativeViewHelper.CreateHorizontalStackView(); //titleContainter.WantsLayer = true; //titleContainter.Layer.BackgroundColor = NSColor.Gray.CGColor; methodSearchView = new NSSearchField() { TranslatesAutoresizingMaskIntoConstraints = false }; titleContainter.AddArrangedSubview(methodSearchView); methodSearchView.WidthAnchor.ConstraintEqualToConstant(180).Active = true; IImageWrapper invokeImage = inspectorDelegate.GetImageResource("execute-16.png"); IButtonWrapper invokeButton = inspectorDelegate.GetImageButton(invokeImage); invokeButton.SetTooltip("Invoke Method!"); invokeButton.SetWidth(ButtonWidth); titleContainter.AddArrangedSubview((NSView)invokeButton.NativeObject); invokeButton.Pressed += (s, e) => InvokeSelectedView(); titleContainter.AddArrangedSubview(NativeViewHelper.CreateLabel("Result: ")); resultMessage = NativeViewHelper.CreateLabel(""); resultMessage.LineBreakMode = NSLineBreakMode.ByWordWrapping; titleContainter.AddArrangedSubview(resultMessage); var methodStackPanel = NativeViewHelper.CreateVerticalStackView(); methodStackPanel.AddArrangedSubview(titleContainter); titleContainter.LeftAnchor.ConstraintEqualToAnchor(methodStackPanel.LeftAnchor, 0).Active = true; titleContainter.RightAnchor.ConstraintEqualToAnchor(methodStackPanel.RightAnchor, 0).Active = true; methodStackPanel.AddArrangedSubview(scrollView); ///// var tabPropertyPanel = new NSTabViewItem(); tabPropertyPanel.View = propertyEditorPanel; tabPropertyPanel.Label = "Properties"; var tabMethod = new NSTabViewItem(); tabMethod.View.AddSubview(methodStackPanel); methodStackPanel.LeftAnchor.ConstraintEqualToAnchor(tabMethod.View.LeftAnchor, 0).Active = true; methodStackPanel.RightAnchor.ConstraintEqualToAnchor(tabMethod.View.RightAnchor, 0).Active = true; methodStackPanel.TopAnchor.ConstraintEqualToAnchor(tabMethod.View.TopAnchor, 0).Active = true; methodStackPanel.BottomAnchor.ConstraintEqualToAnchor(tabMethod.View.BottomAnchor, 0).Active = true; tabMethod.Label = "Methods"; tabView = new NSTabView() { TranslatesAutoresizingMaskIntoConstraints = false }; tabView.Add(tabPropertyPanel); tabView.Add(tabMethod); stackView.AddArrangedSubview(tabView as NSView); tabView.LeftAnchor.ConstraintEqualToAnchor(stackView.LeftAnchor, 0).Active = true; tabView.RightAnchor.ConstraintEqualToAnchor(stackView.RightAnchor, 0).Active = true; methodSearchView.Activated += (sender, e) => { if (viewSelected != null) { methodListView.SetObject(viewSelected.NativeObject, methodSearchView.StringValue); } }; compactModeToggleButton.Activated += (sender, e) => { toolbarView.ShowOnlyImages(!toolbarView.IsImageMode); }; }