public void Init(ToolTab tab, Context context) { this.context = context; openFileDialog.InitialDirectory = Directory.GetCurrentDirectory(); openFileDialog.Filter = "obj files (*.obj)|*.obj"; openFileDialog.RestoreDirectory = true; Item.AddButton(tab.AddButton(Properties.Resources.Point, true), GeneratePoint, context); Item.AddButton(tab.AddButton(Properties.Resources.Cube, true), GenerateCube, context); Item.AddButton(tab.AddButton(Properties.Resources.Octahedron, true), GenerateOcta, context); Item.AddButton(tab.AddButton(Properties.Resources.Tetrahedron, true), GenerateTetra, context); Item.AddButton(tab.AddButton(Properties.Resources.Icosahedron, true), GenerateIcosa, context); Item.AddButton(tab.AddButton(Properties.Resources.Dodecahedron, true), GenerateDodeca, context); tab.AddButton(Properties.Resources.SplineBezier, false).ButtonClick += (a) => GenerateBezier(); MultiItem <Spline, Spline> .AddButton(tab.AddButton(Properties.Resources.Spline), () => new Spline(), (total, partial) => total.Add(partial.points.First()), GeneratePoint, context ); var load = tab.AddButton(Properties.Resources.Load, true); load.ButtonClick += b => ChangeFile(); Item.AddButton(load, GenerateObj, context); Polytope sun = Primitives.Octahedron(1); sun.Matreial = new SolidMaterial(Color.Yellow); sun.Apply(Matrix.Move(context.world.Sun)); var lastPos = context.world.Sun; var sunSettings = SunControl.Settings(point => { var newPos = point * (context.camera.location.Length() / 3); sun.Apply(Matrix.Move(newPos - lastPos)); lastPos = newPos; context.world.Sun = point; context.Redraw(); }); tab.Settings.Controls.Add(sunSettings); var sunButton = tab.AddButton(Properties.Resources.Sun); sunButton.ButtonClick += button => { sunSettings.Visible = true; context.world.entities.Add(sun); context.Redraw(); }; sunButton.ButtonDisable += button => { sunSettings.Visible = false; context.world.entities.Remove(sun); context.Redraw(); }; }
public HelpPage(string guideKey = null) : base("Close".Localize()) { WindowSize = new Vector2(940, 700); this.guideKey = guideKey; this.WindowTitle = "MatterControl " + "Help".Localize(); this.HeaderText = "How to succeed with MatterControl".Localize(); this.ChildBorderColor = theme.GetBorderColor(75); var tabControl = new SimpleTabs(theme, new GuiWidget()) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch }; tabControl.TabBar.BackgroundColor = theme.TabBarBackground; contentRow.AddChild(tabControl); contentRow.Padding = 0; // add the mouse commands var mouseControls = new FlowLayoutWidget() { HAnchor = HAnchor.Fit | HAnchor.Center, Padding = theme.DefaultContainerPadding }; var mouseTab = new ToolTab("Mouse".Localize(), tabControl, mouseControls, theme, hasClose: false) { // this can be used to navigate to this tab on construction Name = "Mouse Tab" }; tabControl.AddTab(mouseTab); var mouseKeys = new FlowLayoutWidget(FlowDirection.TopToBottom); mouseControls.AddChild(mouseKeys); var mouseActions = new FlowLayoutWidget(FlowDirection.TopToBottom) { Border = new BorderDouble(1, 0, 0, 0), BorderColor = this.ChildBorderColor }; mouseControls.AddChild(mouseActions); var mouseKeyActions = new List <(string key, string action)>(new(string, string)[]
public void Init(ToolTab tab, Context context) { this.context = context; var cursorButton = tab.AddButton(Properties.Resources.Mouse); cursorButton.ButtonClick += b => cursorActive = true; cursorButton.ButtonDisable += b => cursorActive = false; var rectButton = tab.AddButton(Properties.Resources.Rectangle); rectButton.ButtonClick += b => rectActive = true; rectButton.ButtonDisable += b => rectActive = false; context.pictureBox.MouseDown += MouseDown; context.pictureBox.MouseMove += MouseMove; context.pictureBox.MouseUp += MouseUp; tab.AddButton(Properties.Resources.SelectAll, false).ButtonClick += b => { if (context.world.entities.Count != context.world.selected.Count) { context.world.selected.UnionWith(context.world.entities); } else { context.world.selected.Clear(); } context.Redraw(); }; tab.AddButton(Properties.Resources.Trash, false).ButtonClick += b => { context.world.entities.ExceptWith(context.world.selected); context.world.selected.Clear(); context.Redraw(); }; tab.AddButton(Properties.Resources.Save).ButtonClick += b => { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "txt files (*.obj)|*.obj"; saveFileDialog1.RestoreDirectory = true; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { File.WriteAllLines(saveFileDialog1.FileName, Obj.Store(context.world.selected).ToArray()); } }; }
public void Init(ToolTab tab, Context context) { Parser p = new Parser(); tab.AddButton(Properties.Resources.Graph, false).ButtonClick += b => { try { context.world.entities.Add(MakeGraph(p.Parse(" ( x * x + sin ( y ) * y) / 5.5 "), -5, 5, 1, -5, 5, 1)); context.Redraw(); } catch (Exception e) { MessageBox.Show($"Ошибка парсера: \"{e.Message}\"", "Окошко-всплывашка", MessageBoxButtons.OK, MessageBoxIcon.Information); } }; }
private void CreateTab(string id, string iconREsource, string label, UIElement content, TabSettings settings) { var tabModel = new ToolTabModel(iconREsource, label); var tab = new ToolTab(id, tabModel, content, Tabs, settings); Tabs.Items.Add(tab); if (settings.IsWindowed == true) { tab.ToExtraWindow(); } else { var focusedTab = IsaacDashSerializer.Settings.GeneralSettings.TabWithFocus; if (!string.IsNullOrEmpty(focusedTab) && id.Equals(focusedTab)) { tab.Focus(); } } }
public void Init(ToolTab tab, Context context) { this.context = context; tab.Settings.Controls.AddRange(new List <(string Name, double DownAngle, double LeftAngle)> { ("XY", Math.PI / 2, 0), ("XZ", 0, Math.PI / 2), ("YZ", 0, 0), ("Isometric", 0.6154797087, Math.PI + Math.PI / 4), }.Select(tuple => { var(name, downAngle, leftAngle) = tuple; var button = new Button { Text = name, AutoSize = true, Dock = DockStyle.Bottom, ForeColor = Constants.textColore, Font = Constants.font, }; button.Click += (sender, args) => { context.camera.downAngle = downAngle; context.camera.leftAngle = leftAngle; context.Redraw(); }; return((Control)button); }).ToArray()); tab.AddButton(Properties.Resources.Parallel, false).Click += (o, s) => { context.camera.interval = 1e10; context.Redraw(); }; tab.AddButton(Properties.Resources.Projection, false).Click += (o, s) => { context.camera.interval = 10; context.Redraw(); }; }
public SurfacedEditorPage(IObject3D selectedItem) { this.WindowTitle = "MatterControl - " + "Editor Selector".Localize(); this.HeaderText = "Surfaced Editor".Localize(); var tabControl = new SimpleTabs(theme, new GuiWidget()) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }; tabControl.TabBar.BackgroundColor = theme.TabBarBackground; tabControl.TabBar.Padding = 0; contentRow.AddChild(tabControl); contentRow.Padding = 0; var editContainer = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Padding = theme.DefaultContainerPadding, BackgroundColor = theme.ActiveTabColor }; editWidget = new MHTextEditWidget("", multiLine: true) { HAnchor = HAnchor.Stretch, Name = this.Name }; editWidget.DrawFromHintedCache(); editContainer.AddChild(editWidget); // add the tree view var treeView = new TreeView(theme) { Margin = new BorderDouble(left: 18), }; treeView.AfterSelect += (s, e) => { if (treeView.SelectedNode.Tag is IObject3D contextNode) { editWidget.Text = "$." + string.Join(".", contextNode.AncestorsAndSelf().TakeWhile(o => !(o is ComponentObject3D)).Select(o => $"Children<{o.GetType().Name.ToString()}>").Reverse().ToArray()); } }; treeView.ScrollArea.ChildAdded += (s, e) => { if (e is GuiWidgetEventArgs childEventArgs && childEventArgs.Child is TreeNode treeNode) { treeNode.AlwaysExpandable = true; } }; treeView.Click += (s, e) => { if (treeView.IsDoubleClick(e)) { Console.WriteLine(); } }; treeView.ScrollArea.CloseAllChildren(); var rootNode = Object3DTreeBuilder.BuildTree(selectedItem, theme); treeView.AddChild(rootNode); rootNode.TreeView = treeView; editContainer.AddChild(treeView); var dummyWidget = new GuiWidget() { BackgroundColor = Color.Red }; var editTab = new ToolTab("Edit".Localize(), tabControl, editContainer, theme, hasClose: false) { Name = "Edit Tab" }; tabControl.AddTab(editTab); var previewTab = new ToolTab("Preview".Localize(), tabControl, dummyWidget, theme, hasClose: false) { Name = "Preview Tab" }; tabControl.AddTab(previewTab); tabControl.ActiveTabChanged += (s, e) => { if (tabControl.SelectedTabIndex == 1) { // dummyWidget.Markdown = editWidget.Text; } }; tabControl.SelectedTabIndex = 0; var saveButton = theme.CreateDialogButton("Save".Localize()); saveButton.Click += (s, e) => { this.ValueChanged?.Invoke(this, null); this.DialogWindow.CloseOnIdle(); }; this.AddPageAction(saveButton); }
public void Init(ToolTab tab, Context context) { gizmo = new Gizmo(context); foreach (var(icon, state) in new[]
public MarkdownEditPage(UIField uiField) { this.WindowTitle = "MatterControl - " + "Markdown Edit".Localize(); this.HeaderText = "Edit Page".Localize() + ":"; var tabControl = new SimpleTabs(theme, new GuiWidget()) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }; tabControl.TabBar.BackgroundColor = theme.TabBarBackground; tabControl.TabBar.Padding = 0; contentRow.AddChild(tabControl); contentRow.Padding = 0; var editContainer = new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Padding = theme.DefaultContainerPadding, BackgroundColor = theme.BackgroundColor }; editWidget = new MHTextEditWidget("", theme, multiLine: true, typeFace: ApplicationController.GetTypeFace(NamedTypeFace.Liberation_Mono)) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Name = this.Name }; editWidget.DrawFromHintedCache(); editWidget.ActualTextEditWidget.VAnchor = VAnchor.Stretch; editContainer.AddChild(editWidget); markdownWidget = new MarkdownWidget(theme, true) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Margin = 0, Padding = 0, }; var previewTab = new ToolTab("Preview", "Preview".Localize(), tabControl, markdownWidget, theme, hasClose: false) { Name = "Preview Tab" }; tabControl.AddTab(previewTab); var editTab = new ToolTab("Edit", "Edit".Localize(), tabControl, editContainer, theme, hasClose: false) { Name = "Edit Tab" }; tabControl.AddTab(editTab); tabControl.ActiveTabChanged += (s, e) => { if (tabControl.SelectedTabIndex == 1) { markdownWidget.Markdown = editWidget.Text; } }; tabControl.SelectedTabIndex = 0; var saveButton = theme.CreateDialogButton("Save".Localize()); saveButton.Click += (s, e) => { uiField.SetValue( editWidget.Text.Replace("\n", "\\n"), userInitiated: true); this.DialogWindow.CloseOnIdle(); }; this.AddPageAction(saveButton); var link = new LinkLabel("Markdown Help", theme) { Margin = new BorderDouble(right: 20), VAnchor = VAnchor.Center }; link.Click += (s, e) => { ApplicationController.Instance.LaunchBrowser("https://guides.github.com/features/mastering-markdown/"); }; footerRow.AddChild(link, 0); }
public void Init(ToolTab tab, Context context) { Parser p = new Parser(); var panel = new TableLayoutPanel { ColumnCount = 2, RowCount = 7, Dock = DockStyle.Top, ForeColor = Constants.borderColore, AutoSize = true, CellBorderStyle = TableLayoutPanelCellBorderStyle.Single, Font = new Font("Consalas", 12) }; var funcText = new TextBox { Dock = DockStyle.Fill, Text = "(x * x + sin(y) * y) / 5" }; panel.Controls.AddRange(new Control[] { new Label { Text = "Z = " }, funcText }); var XStart = new TextBox { Dock = DockStyle.Fill, Text = "-5" }; panel.Controls.AddRange(new Control[] { new Label { Text = "X от" }, XStart }); var XEnd = new TextBox { Dock = DockStyle.Fill, Text = "5" }; panel.Controls.AddRange(new Control[] { new Label { Text = "X до" }, XEnd }); var XStep = new TextBox { Dock = DockStyle.Fill, Text = "1" }; panel.Controls.AddRange(new Control[] { new Label { Text = "X Шаг" }, XStep }); var YStart = new TextBox { Dock = DockStyle.Fill, Text = "-5" }; panel.Controls.AddRange(new Control[] { new Label { Text = "Y от" }, YStart }); var YEnd = new TextBox { Dock = DockStyle.Fill, Text = "5" }; panel.Controls.AddRange(new Control[] { new Label { Text = "Y до" }, YEnd }); var YStep = new TextBox { Dock = DockStyle.Fill, Text = "1" }; panel.Controls.AddRange(new Control[] { new Label { Text = "Y Шаг" }, YStep }); tab.Settings.Controls.Add(panel); tab.AddButton(Properties.Resources.Graph, false).ButtonClick += b => { try { context.world.entities.Add(MakeGraph(p.Parse(funcText.Text), double.Parse(XStart.Text), double.Parse(XEnd.Text), double.Parse(XStep.Text), double.Parse(YStart.Text), double.Parse(YEnd.Text), double.Parse(YStep.Text))); context.Redraw(); } catch (Exception e) { MessageBox.Show($"Ошибка: \"{e.Message}\"", "Окошко-всплывашка", MessageBoxButtons.OK, MessageBoxIcon.Information); } }; }
public void ToolTab_Ctor() { var actual = new ToolTab(); Assert.NotNull(actual); }
private void Connection_ConnectionEstablished(object sender, EventArgs e) { LoginTab.IsEnabled = false; ToolTab.IsEnabled = true; ToolTab.Focus(); }
public void Init(ToolTab tab, Context context) { this.context = context; Parser p = new Parser(); var panelGraph = new Panel { Dock = DockStyle.Fill, Visible = false }; var panelTable = new TableLayoutPanel { ColumnCount = 2, RowCount = 7, Dock = DockStyle.Top, ForeColor = Constants.borderColore, AutoSize = true, CellBorderStyle = TableLayoutPanelCellBorderStyle.Single, Font = new Font("Consalas", 12), Visible = false }; var floatinHor = new CheckBox { Text = "Floating horizon method", ForeColor = Constants.textColore, Font = Constants.font, Dock = DockStyle.Top, AutoSize = true }; var funcText = new TextBox { Dock = DockStyle.Fill, Text = "(x * x + sin(y) * y) / 5" }; panelTable.Controls.AddRange(new Control[] { new Label { Text = "Z = " }, funcText }); var XStart = new TextBox { Dock = DockStyle.Fill, Text = "-5" }; panelTable.Controls.AddRange(new Control[] { new Label { Text = "X от" }, XStart }); var XEnd = new TextBox { Dock = DockStyle.Fill, Text = "5" }; panelTable.Controls.AddRange(new Control[] { new Label { Text = "X до" }, XEnd }); var XStep = new TextBox { Dock = DockStyle.Fill, Text = "0.5" }; panelTable.Controls.AddRange(new Control[] { new Label { Text = "X Шаг" }, XStep }); var YStart = new TextBox { Dock = DockStyle.Fill, Text = "-5" }; panelTable.Controls.AddRange(new Control[] { new Label { Text = "Y от" }, YStart }); var YEnd = new TextBox { Dock = DockStyle.Fill, Text = "5" }; panelTable.Controls.AddRange(new Control[] { new Label { Text = "Y до" }, YEnd }); var apply = new Button { Text = "Apply", ForeColor = Constants.textColore, Font = Constants.font, Dock = DockStyle.Bottom, AutoSize = true, Visible = false }; apply.Click += (s, b) => { try { context.drawing = new FloatingHorizont { node = p.Parse(funcText.Text), xStart = double.Parse(XStart.Text), xEnd = double.Parse(XEnd.Text), xStep = double.Parse(XStep.Text), yStart = double.Parse(YStart.Text), yEnd = double.Parse(YEnd.Text), context = context }; context.Redraw(); } catch (Exception e) { MessageBox.Show($"Ошибка: \"{e.Message}\"", "Окошко-всплывашка", MessageBoxButtons.OK, MessageBoxIcon.Information); } }; floatinHor.CheckStateChanged += (sender, args) => { panelTable.Visible = floatinHor.Checked; apply.Visible = floatinHor.Checked; }; tab.Settings.Controls.Add(panelGraph); panelGraph.Controls.Add(panelTable); panelGraph.Controls.Add(floatinHor); panelGraph.Controls.Add(apply); tab.AddButton(Properties.Resources.Skeleton, false).ButtonClick += b => { panelGraph.Visible = false; context.drawing = new Skeleton(context, false); context.Redraw(); }; var skeleton = tab.AddButton(Properties.Resources.Cube, false); skeleton.ButtonClick += b => { context.drawing = new Skeleton(context, true); context.Redraw(); panelGraph.Visible = true; floatinHor.Checked = false; }; var panel = new Panel { Dock = DockStyle.Fill, Visible = false }; tab.Settings.Controls.Add(panel); var textPanel = new TableLayoutPanel { ColumnCount = 2, RowCount = 4, Dock = DockStyle.Top, ForeColor = Constants.borderColore, AutoSize = true, CellBorderStyle = TableLayoutPanelCellBorderStyle.Single, Font = new Font("Consalas", 12) }; smoothing = new CheckBox { Text = "smoothing", Dock = DockStyle.Top, ForeColor = Constants.borderColore, Font = new Font("Consalas", 12), Checked = true }; panel.Controls.Add(smoothing); ambient = new TextBox { Dock = DockStyle.Fill, Text = "10" }; textPanel.Controls.AddRange(new Control[] { new Label { Text = "Ambient(%)" }, ambient }); diffuse = new TextBox { Dock = DockStyle.Fill, Text = "100" }; textPanel.Controls.AddRange(new Control[] { new Label { Text = "Diffuse(%)" }, diffuse }); specular = new TextBox { Dock = DockStyle.Fill, Text = "100" }; textPanel.Controls.AddRange(new Control[] { new Label { Text = "Specular(%)" }, specular }); power = new TextBox { Dock = DockStyle.Fill, Text = "1000" }; textPanel.Controls.AddRange(new Control[] { new Label { Text = "Power" }, power }); panel.Controls.Add(textPanel); //var changeRender = new Button //{ // Text = "Apply", // ForeColor = Constants.textColore, // Font = Constants.font, // Dock = DockStyle.Top, // AutoSize = true //}; //panel.Controls.Add(changeRender); //changeRender.Click += (s, b) => SetBlinnDrawing(); var phongButton = tab.AddButton(Properties.Resources.Phong, true); phongButton.ButtonClick += b => { panel.Visible = true; context.drawing = new ZBuffer(context); SetPhongDrawing(); }; phongButton.ButtonDisable += b => { panel.Visible = false; }; var blinnButton = tab.AddButton(Properties.Resources.Blinn, true); blinnButton.ButtonClick += b => { panel.Visible = true; context.drawing = new ZBuffer(context); SetBlinnDrawing(); }; blinnButton.ButtonDisable += b => { panel.Visible = false; }; var wardButton = tab.AddButton(Properties.Resources.Ward, true); wardButton.ButtonClick += b => { panel.Visible = true; context.drawing = new ZBuffer(context); SetWardDrawing(); }; wardButton.ButtonDisable += b => { panel.Visible = false; }; var orenNayarButton = tab.AddButton(Properties.Resources.OrenNayar, true); orenNayarButton.ButtonClick += b => { panel.Visible = true; context.drawing = new ZBuffer(context); SetOrenNayarDrawing(); }; orenNayarButton.ButtonDisable += b => { panel.Visible = false; }; var cookTorranceButton = tab.AddButton(Properties.Resources.CookTorrance, true); cookTorranceButton.ButtonClick += b => { panelGraph.Visible = false; floatinHor.Checked = false; panel.Visible = true; context.drawing = new ZBuffer(context); SetCookTorranceDrawing(); }; cookTorranceButton.ButtonDisable += b => { panel.Visible = false; }; }
public void Init(ToolTab tab, Context context) { }