aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechnicianModule.cs
blob: 42e077652a810ac25dd110659bf4429907532d36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media.Imaging;
using Tango.BL.Entities;
using Tango.BL.Enumerations;
using Tango.MachineStudio.Common;
using Tango.MachineStudio.Technician.Views;
using Tango.SharedUI.Helpers;

namespace Tango.MachineStudio.Technician
{
    /// <summary>
    /// Represents a machine studio technician module.
    /// </summary>
    /// <seealso cref="Tango.MachineStudio.Common.IStudioModule" />
    [StudioModule(1)]
    public class TechnicianModule : StudioModuleBase
    {
        /// <summary>
        /// Gets the module name.
        /// </summary>
        public override string Name => "Tech Board";

        /// <summary>
        /// Gets the module description.
        /// </summary>
        public override string Description => "Provides access to low level machine components by exposing diagnostics and profiling tools.";

        /// <summary>
        /// Gets the module cover image.
        /// </summary>
        public override BitmapSource Image => ResourceHelper.GetImageFromResources("Images/technician.jpg");

        /// <summary>
        /// Gets the module entry point view type.
        /// </summary>
        public override Type MainViewType
        {
            get
            {
                return typeof(MachineTechView);
            }
        }

        /// <summary>
        /// Gets the permission required to see and load this module.
        /// </summary>
        public override Permissions Permission => Permissions.RunTechBoardModule;

        /// <summary>
        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
        /// </summary>
        public override void Dispose()
        {
            
        }
    }
}
CreateTextRun(int startVisualColumn, ITextRunConstructionContext context) { if (context == null) throw new ArgumentNullException("context"); return new InlineObjectRun(1, this.TextRunProperties, this.Element); } } /// <summary> /// A text run with an embedded UIElement. /// </summary> public class InlineObjectRun : TextEmbeddedObject { UIElement element; int length; TextRunProperties properties; internal Size desiredSize; /// <summary> /// Creates a new InlineObjectRun instance. /// </summary> /// <param name="length">The length of the TextRun.</param> /// <param name="properties">The <see cref="TextRunProperties"/> to use.</param> /// <param name="element">The <see cref="UIElement"/> to display.</param> public InlineObjectRun(int length, TextRunProperties properties, UIElement element) { if (length <= 0) throw new ArgumentOutOfRangeException("length", length, "Value must be positive"); if (properties == null) throw new ArgumentNullException("properties"); if (element == null) throw new ArgumentNullException("element"); this.length = length; this.properties = properties; this.element = element; } /// <summary> /// Gets the element displayed by the InlineObjectRun. /// </summary> public UIElement Element { get { return element; } } /// <summary> /// Gets the VisualLine that contains this object. This property is only available after the object /// was added to the text view. /// </summary> public VisualLine VisualLine { get; internal set; } /// <inheritdoc/> public override LineBreakCondition BreakBefore { get { return LineBreakCondition.BreakDesired; } } /// <inheritdoc/> public override LineBreakCondition BreakAfter { get { return LineBreakCondition.BreakDesired; } } /// <inheritdoc/> public override bool HasFixedSize { get { return true; } } /// <inheritdoc/> public override CharacterBufferReference CharacterBufferReference { get { return new CharacterBufferReference(); } } /// <inheritdoc/> public override int Length { get { return length; } } /// <inheritdoc/> public override TextRunProperties Properties { get { return properties; } } /// <inheritdoc/> public override TextEmbeddedObjectMetrics Format(double remainingParagraphWidth) { double baseline = TextBlock.GetBaselineOffset(element); if (double.IsNaN(baseline)) baseline = desiredSize.Height; return new TextEmbeddedObjectMetrics(desiredSize.Width, desiredSize.Height, baseline); } /// <inheritdoc/> public override Rect ComputeBoundingBox(bool rightToLeft, bool sideways) { if (this.element.IsArrangeValid) { double baseline = TextBlock.GetBaselineOffset(element); if (double.IsNaN(baseline)) baseline = desiredSize.Height; return new Rect(new Point(0, -baseline), desiredSize); } else { return Rect.Empty; } } /// <inheritdoc/> public override void Draw(DrawingContext drawingContext, Point origin, bool rightToLeft, bool sideways) { } } }