Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.ComponentModel
- Imports System.Drawing.Drawing2D
- Imports System.Drawing.Text
- Imports DataservComponents.HMI
- Public Class DataservProgressCircle
- Inherits ReadDisplayObject
- Private Const DrawLock As String = "DrawLock"
- # Region "columnNames"
- private const TextFontStr as String = "TextFont"
- Private const TextColorStr as String = "TextColor"
- Private const TextValueStr as String = "TextValue"
- Private const ArcColorStr as String = "ArcColor"
- Private const DisplaymodeStr as String = "DisplayMode"
- Private const InFrontStr as String = "InFront"
- Private const HeightStr as String = "height"
- Private const WidthStr as String = "width"
- Private const ZOrderStr as String = "zorder"
- Private const YStr as String = "y"
- Private const XStr as String = "x"
- Private const ParentStr as String = "parent"
- Private const NameStr as String = "name"
- Private const ForegroundColorStr as String = "ForegroundColor"
- Private const BackgroundColorStr as String = "BackgroundColor"
- Private const BorderStyleStr as String = "BorderStyle"
- Private const TagforTagcurrentvalueStr as String = "tagfor_TagCurrentValue"
- Private const TagforTagminvalueStr as String = "tagfor_TagMinValue"
- Private const TagforTagmaxvalueStr as String = "tagfor_TagMaxValue"
- #End Region
- Private tagMaxValue As String = ""
- Private tagMinValue As String = ""
- Private tagCurrentValue as String = ""
- Protected dlgFont As New FontDialog
- Private Rendering as Bitmap
- Private TextValue as String = "Progress"
- private ArcColor as Color = ProgressCircle.DefaultOuter.Color
- Public Property MaxTag As String
- Get
- Return tagMaxValue
- End Get
- Set(value As String)
- dTagMap.Remove(tagMaxValue)
- tagMaxValue = value
- AddTag(tagMaxValue)
- End Set
- End Property
- Public Property MinTag As String
- Get
- Return tagMinValue
- End Get
- Set(value As String)
- dTagMap.Remove(tagMinValue)
- tagMinValue = value
- AddTag(tagMinValue)
- End Set
- End Property
- Public Property ValueTag As String
- Get
- Return tagCurrentValue
- End Get
- Set(value As String)
- dTagMap.Remove(tagCurrentValue)
- tagCurrentValue = value
- AddTag(tagCurrentValue)
- End Set
- End Property
- Private TextColor as Color = Color.Black
- Private DisplayMode As ProgressCircleDisplayMode = ProgressCircleDisplayMode.Percent
- Dim min = 0
- Dim max = 100
- Dim val = 50
- Public Sub New()
- MyBase.New
- Pastable = false
- DisplayPanel.BackgroundImageLayout = ImageLayout.Center
- TextFont = new Font("Arial", 12f, FontStyle.Regular)
- End Sub
- Protected Overrides Sub UpdateDisplay()
- UpdateTagValues()
- Threading.Monitor.Enter(drawLock)
- 'Subtracting 30 to account for padding
- Dim imageWidth As Integer = DisplayPanel.ClientRectangle.Width
- Dim imageHeight As Integer = DisplayPanel.ClientRectangle.Height
- If imagewidth <= 0 Or imageheight <= 0 Then
- imagewidth = 1
- imageheight = 1
- End If
- 'Circle must be same l&w
- If imageWidth < imageHeight then
- imageHeight = imageWidth
- Else
- imageWidth = imageHeight
- End If
- Dim rectangle = new Rectangle(0, 0, imageWidth, imageHeight)
- Rendering = ProgressCircle.GetRender(rectangle, new SolidBrush(DisplayPanel.ForeColor), new SolidBrush(TextColor), TextValue, val, max, DisplayMode, ArcColor)
- DisplayPanel.BackgroundImage = Rendering
- Threading.Monitor.Pulse(drawLock)
- Threading.Monitor.Exit(drawLock)
- End Sub
- Private Sub UpdateTagValues()
- Try
- If Not ValueTag Is Nothing AndAlso ValueTag.StartsWith("LIT") Or (dTagMap.Keys.Contains(ValueTag) AndAlso IsNumeric(dTagMap(ValueTag))) Then
- val = dTagMap(ValueTag)
- End If
- If Not MaxTag Is Nothing AndAlso MaxTag.StartsWith("LIT") Or (dTagMap.Keys.Contains(MaxTag) AndAlso IsNumeric(dTagMap(MaxTag))) Then
- max = dTagMap(MaxTag)
- End If
- If Not MinTag Is Nothing AndAlso MinTag.StartsWith("LIT") Or (dTagMap.Keys.Contains(MinTag) AndAlso IsNumeric(dTagMap(MinTag))) Then
- min = dTagMap(MinTag)
- End If
- Catch ex As Exception
- End Try
- End Sub
- Public Overrides Sub UpdateTagFields(values As DataTable)
- dTagMap.Remove(MaxTag)
- MaxTag = values.Rows(0).Item(tagforTagMaxValueStr)
- AddTag(MaxTag)
- dTagMap.Remove(MinTag)
- MinTag = values.Rows(0).Item(tagforTagMinValueStr)
- AddTag(MinTag)
- dTagMap.Remove(ValueTag)
- ValueTag = values.Rows(0).Item(TagforTagcurrentvalueStr)
- AddTag(ValueTag)
- UpdateDisplay()
- End Sub
- 'Saves this instance of display object
- Public Overrides Function Save() As DataTable
- Dim ret As DataTable = DataservProgressCircle.CreationFields()
- ret.Rows(0).SetField("controltype", "DataservProgressCircle")
- ret.Rows(0).SetField(NameStr, Name)
- ret.Rows(0).SetField(ParentStr, ParentDisplayObject.Name)
- ret.Rows(0).SetField(XStr, Location.X)
- ret.Rows(0).SetField(YStr, Location.Y)
- ret.Rows(0).SetField(ZOrderStr, ZOrder)
- ret.Rows(0).SetField(WidthStr, Width)
- ret.Rows(0).SetField(HeightStr, Height)
- ret.Rows(0).SetField(InFrontStr, InFront)
- ret.Rows(0).SetField(BorderStyleStr, CInt(DisplayBorderStyle))
- ret.Rows(0).SetField(TagforTagmaxvalueStr, MaxTag)
- ret.Rows(0).SetField(TagforTagminvalueStr, MinTag)
- ret.Rows(0).SetField(TagforTagcurrentvalueStr, ValueTag)
- ret.Rows(0).SetField(BackgroundColorStr, BackgroundColor.ToArgb)
- ret.Rows(0).SetField(ForegroundColorStr, ForegroundColor.ToArgb)
- ret.Rows(0).SetField("TakeParentColors", TakeParentColors)
- ret.Rows(0).SetField(DisplaymodeStr, CInt(DisplayMode))
- ret.Rows(0).SetField(ArcColorStr, ArcColor.ToArgb())
- ret.Rows(0).SetField(TextValueStr, TextValue)
- ret.Rows(0).SetField(TextFontStr, If(TextFont Is Nothing, "Arial", TextFont.Name))
- ret.Rows(0).SetField(TextColorStr, TextColor.toArgb)
- Return (ret)
- End Function
- 'creates an instance of display object given what we're saving
- Public Shared Shadows Function Create(values As DataTable) As DisplayObject
- Dim ret As DataservProgressCircle = New DataservProgressCircle()
- For Each c As DataColumn In values.Columns
- Try
- Select Case c.ColumnName
- Case NameStr
- ret.Name = values.Rows(0).Item(c.ColumnName)
- Case ParentStr
- ret.ParentDisplayObject = ControlHandler.GetInstance().GetDisplayObject(values.Rows(0).Item(c.ColumnName))
- Case XStr
- ret.Location = New Point(values.Rows(0).Item(c.ColumnName), ret.Location.Y)
- Case YStr
- ret.Location = New Point(ret.Location.X, values.Rows(0).Item(c.ColumnName))
- Case ZOrderStr
- ret.ZOrder = values.Rows(0).Item(c.ColumnName)
- Case WidthStr
- ret.Width = values.Rows(0).Item(c.ColumnName)
- Case HeightStr
- ret.Height = values.Rows(0).Item(c.ColumnName)
- Case InFrontStr
- ret.InFront = values.Rows(0).Item(c.ColumnName)
- Case ArcColorStr
- ret.ArcColor = Color.FromArgb(values.Rows(0).Item(c.ColumnName))
- Case DisplaymodeStr
- ret.DisplayMode = CInt(values.Rows(0).Item(c.ColumnName))
- Case TagforTagmaxvalueStr
- ret.MaxTag = values.Rows(0).Item(c.ColumnName)
- Case TagforTagminvalueStr
- ret.MinTag = values.Rows(0).Item(c.ColumnName)
- Case TagforTagcurrentvalueStr
- ret.ValueTag = values.Rows(0).Item(c.ColumnName)
- Case BorderStyleStr
- ret.DisplayBorderStyle = CInt(values.Rows(0).Item(c.ColumnName))
- Case BackgroundColorStr
- ret.BackgroundColor = Color.FromArgb(values.Rows(0).Item(c.ColumnName))
- Case ForegroundColorStr
- ret.ForegroundColor = Color.FromArgb(values.Rows(0).Item(c.ColumnName))
- Case TextValueStr
- ret.TextValue = values.Rows(0).Item(c.ColumnName)
- Case TextFontStr
- ret.TextFont = New Font(CType(values.Rows(0).Item(c.ColumnName), String), FontStyle.Regular)
- ProgressCircle.TextFont = ret.TextFont
- Case TextColorStr
- ret.TextColor = Color.FromArgb(values.Rows(0).Item(c.ColumnName))
- End Select
- Catch ex As Exception
- End Try
- Next
- Return (ret)
- End Function
- 'What do we need to know to create an instance of this
- Public Shared Shadows Function CreationFields() As DataTable
- Dim ret As DataTable = New DataTable("DisplayObject")
- ret.Columns.Add("controltype")
- ret.Columns.Add(NameStr)
- ret.Columns.Add(ParentStr)
- ret.Columns.Add(XStr)
- ret.Columns.Add(YStr)
- ret.Columns.Add(ZOrderStr)
- ret.Columns.Add(WidthStr)
- ret.Columns.Add(HeightStr)
- ret.Columns.Add(InFrontStr)
- ret.Columns.Add(BorderStyleStr)
- ret.Columns.Add(BackgroundColorStr)
- ret.Columns.Add(ForegroundColorStr)
- ret.Columns.Add("TakeParentColors")
- ret.Columns.Add(TagforTagmaxvalueStr)
- ret.Columns.Add(TagforTagminvalueStr)
- ret.Columns.Add(TagforTagcurrentvalueStr)
- ret.Columns.Add(DisplaymodeStr)
- ret.Columns.Add(ArcColorStr)
- ret.Columns.Add(TextValueStr)
- ret.Columns.Add(TextFontStr)
- ret.Columns.Add(TextColorStr)
- ret.Rows.Add("DataservProgressCircle", "shouldhavethis", "needthistoo", 1, 1, 0, 300, 300, True, CInt(BorderStyle.FixedSingle), DefaultBackColor.ToArgb(),
- Color.Black.ToArgb(), False, "100", "0", "50", 1, Color.Blue.ToArgb(), "Progress", "Arial", - 1)
- Return ret
- End Function
- Private Sub UpdateOnClientRectangleChange() Handles DisplayPanel.ClientSizeChanged
- UpdateDisplay()
- End Sub
- Public WithEvents DisplayStyle As ToolStripMenuItem
- Public WithEvents Percentage As ToolStripMenuItem
- Public WithEvents Fraction As ToolStripMenuItem
- Public WithEvents Raw As ToolStripMenuItem
- Public WithEvents Arc As ToolStripMenuItem
- Public WithEvents ColorMenu As ToolStripMenuItem
- Public WithEvents FontMenu As ToolStripMenuItem
- Public WithEvents TextChange As ToolStripMenuItem
- Protected Overrides Sub SetupContextMenu()
- MyBase.SetupContextMenu()
- DisplayStyle = New ToolStripMenuItem("Display Style")
- TextChange = New ToolStripMenuItem("Change Text")
- Percentage = new ToolStripMenuItem("Percentage")
- Fraction = new ToolStripMenuItem("Fraction")
- Raw = new ToolStripMenuItem("Raw")
- Arc = new ToolStripMenuItem("Arc Fill Color")
- ColorMenu = new ToolStripMenuItem("Text Color")
- FontMenu = new ToolStripMenuItem("Text Font")
- DisplayStyle = new ToolStripMenuItem("Display Style")
- DisplayStyle.DropDownItems.AddRange({Percentage, Fraction, Raw})
- AddHandler Percentage.Click, AddressOf DisplayStyleChanged
- AddHandler Fraction.Click, AddressOf DisplayStyleChanged
- AddHandler Raw.Click, AddressOf DisplayStyleChanged
- AddHandler Arc.Click, AddressOf ArcColorChanged
- AddHandler ColorMenu.Click, AddressOf TextColorChanged
- AddHandler FontMenu.Click, AddressOf FontChangedEvent
- AddHandler TextChange.Click, AddressOf ChangeText
- mnuContext.Items.Add(Arc)
- mnuContext.Items.Add(TextChange)
- mnuContext.Items.Add(DisplayStyle)
- mnuContext.Items.Add(ColorMenu)
- mnuContext.Items.Add(FontMenu)
- RemoveHandler mnuTagPickerToolStripMenuItem.Click, AddressOf mnuTagPickerToolStripMenuItem_Clicked
- End Sub
- Private Sub FontChangedEvent(sender As Object, e As EventArgs)
- dlgFont.Font = TextFont
- Dim result As DialogResult = dlgFont.ShowDialog()
- If result = DialogResult.OK Then
- TextFont = dlgFont.Font
- ProgressCircle.TextFont = dlgFont.Font
- End If
- End Sub
- Private Sub ChangeText
- Dim str as String = InputBox("Enter new text")
- If str is Nothing then return
- TextValue = str
- End Sub
- Private Sub ArcColorChanged()
- Dim cd As New ColorDialog
- cd.Color = ArcColor
- Dim result As DialogResult = cd.ShowDialog()
- If result = DialogResult.OK Then
- ArcColor = cd.Color
- UpdateDisplay()
- End If
- End Sub
- Private Sub TextColorChanged()
- Dim cd As New ColorDialog
- cd.Color = TextColor
- Dim result As DialogResult = cd.ShowDialog()
- If result = DialogResult.OK Then
- TextColor = cd.Color
- UpdateDisplay()
- End If
- End Sub
- Private Sub DisplayStyleChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
- If sender.Equals(Percentage) then
- DisplayMode = ProgressCircleDisplayMode.Percent
- Else If sender.Equals(Fraction) then
- DisplayMode = ProgressCircleDisplayMode.Fraction
- Else If sender.Equals(Raw) then
- DisplayMode = ProgressCircleDisplayMode.RawValue
- End If
- UpdateDisplay()
- End Sub
- Protected Overrides Sub mnuTagPickerToolStripMenuItem_Clicked(sender As Object, e As System.EventArgs) Handles mnuTagPickerToolStripMenuItem.Click
- Dim result As DialogResult = FormHandler.getInstance.TagPickerForm.DisplayDialog(Me, frmTagPicker.FormMode.Specific)
- If result = DialogResult.OK Then
- Me.UpdateTagFields(FormHandler.getInstance.TagPickerForm.SpecificsResult)
- End If
- End Sub
- End Class
- Public Enum ProgressCircleDisplayMode
- Percent = 1
- Fraction = 2
- RawValue = 3
- End Enum
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement