-
-
Notifications
You must be signed in to change notification settings - Fork 89
/
WatchPanel.vb
175 lines (129 loc) · 7.94 KB
/
WatchPanel.vb
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
Imports DWSIM.Interfaces
Imports DWSIM.SharedClasses.Extras
<System.Serializable()> Public Class WatchPanel
Inherits WeifenLuo.WinFormsUI.Docking.DockContent
Private updating As Boolean = False
Private loaded As Boolean = False
Public Property Flowsheet As IFlowsheet
Private Sub frmWatch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ExtensionMethods.ChangeDefaultFont(Me)
End Sub
Private Sub frmWatch_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
loaded = True
FormMain.TranslateFormFunction?.Invoke(Me)
End Sub
Sub PopulateList()
updating = True
Me.dgv.Rows.Clear()
Dim i As Integer = 0
For Each newitem As IWatchItem In Flowsheet.WatchItems
If My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection.ContainsKey(newitem.ObjID) Then
Dim myobjname As String = My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection(newitem.ObjID).GraphicObject.Tag
Dim propname As String = DWSIM.App.GetPropertyName(newitem.PropID)
Dim propvalue As Object = My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection(newitem.ObjID).GetPropertyValue(newitem.PropID, My.Application.ActiveSimulation.Options.SelectedUnitSystem)
Dim propunit As String = My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection(newitem.ObjID).GetPropertyUnit(newitem.PropID, My.Application.ActiveSimulation.Options.SelectedUnitSystem)
Me.dgv.Rows.Add(New Object() {i, newitem.ObjID, newitem.PropID, newitem.IsReadOnly, myobjname, propname & " (" & propunit & ")", propvalue})
If newitem.IsReadOnly Then
Me.dgv.Rows(Me.dgv.Rows.Count - 1).ReadOnly = True
Me.dgv.Rows(Me.dgv.Rows.Count - 1).Cells(6).Style.BackColor = Color.LightGray
End If
End If
i += 1
Next
updating = False
End Sub
Public Sub UpdateList()
updating = True
Dim toremove As New ArrayList
For Each r As DataGridViewRow In dgv.Rows
Dim wi As WatchItem = Flowsheet.WatchItems(r.Cells(0).Value)
If My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection.ContainsKey(wi.ObjID) Then
Dim myobjname As String = My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection(wi.ObjID).GraphicObject.Tag
Dim propname As String = DWSIM.App.GetPropertyName(wi.PropID)
Dim propvalue As Object = My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection(wi.ObjID).GetPropertyValue(wi.PropID, My.Application.ActiveSimulation.Options.SelectedUnitSystem)
Dim propunit As String = My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection(wi.ObjID).GetPropertyUnit(wi.PropID, My.Application.ActiveSimulation.Options.SelectedUnitSystem)
With r
.Cells(4).Value = myobjname
.Cells(5).Value = propname & " (" & propunit & ")"
.Cells(6).Value = propvalue
End With
Else
toremove.Add(Me.dgv.Rows.IndexOf(r))
Flowsheet.WatchItems.RemoveAt(r.Cells(0).Value)
End If
Next
For Each r As Integer In toremove
Me.dgv.Rows.RemoveAt(r)
Next
updating = False
End Sub
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim frmprop As New FormPropSelection
frmprop.ssmode = False
frmprop.ShowDialog(Me)
Dim newitem As WatchItem = frmprop.wi
If Not newitem Is Nothing Then
Dim id As Integer = New Random().Next
Flowsheet.WatchItems.Add(newitem)
Me.PopulateList()
End If
End Sub
Private Sub dgv_CellValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellValueChanged
If updating = False And loaded Then
If e.ColumnIndex = 6 And e.RowIndex >= 0 Then
Dim wi As WatchItem = Flowsheet.WatchItems(Me.dgv.Rows(e.RowIndex).Cells(0).Value)
If My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection.ContainsKey(wi.ObjID) Then
Dim myobjname As String = My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection(wi.ObjID).GraphicObject.Tag
Dim propname As String = DWSIM.App.GetPropertyName(wi.PropID)
Dim propvalue As Object = Me.dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
My.Application.ActiveSimulation.Collections.FlowsheetObjectCollection(wi.ObjID).SetPropertyValue(wi.PropID, propvalue, My.Application.ActiveSimulation.Options.SelectedUnitSystem)
FlowsheetSolver.FlowsheetSolver.CalculateObject(My.Application.ActiveSimulation, wi.ObjID)
Me.dgv.Focus()
End If
End If
End If
End Sub
Private Sub btnRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemove.Click
For i As Integer = 0 To Me.dgv.SelectedRows.Count - 1
Flowsheet.WatchItems.RemoveAt(Me.dgv.SelectedRows(i).Cells(0).Value)
Me.dgv.Rows.Remove(Me.dgv.SelectedRows(i))
Next
End Sub
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
UpdateList()
End Sub
Private Sub FloatToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FloatToolStripMenuItem.Click, DocumentToolStripMenuItem.Click,
DockLeftToolStripMenuItem.Click, DockLeftAutoHideToolStripMenuItem.Click,
DockRightAutoHideToolStripMenuItem.Click, DockRightToolStripMenuItem.Click,
DockTopAutoHideToolStripMenuItem.Click, DockTopToolStripMenuItem.Click,
DockBottomAutoHideToolStripMenuItem.Click, DockBottomToolStripMenuItem.Click
For Each ts As ToolStripMenuItem In dckMenu.Items
ts.Checked = False
Next
sender.Checked = True
Select Case sender.Name
Case "FloatToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.Float
Case "DocumentToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.Document
Case "DockLeftToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.DockLeft
Case "DockLeftAutoHideToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.DockLeftAutoHide
Case "DockRightAutoHideToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.DockRightAutoHide
Case "DockRightToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.DockRight
Case "DockBottomAutoHideToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.DockBottomAutoHide
Case "DockBottomToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.DockBottom
Case "DockTopAutoHideToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.DockTopAutoHide
Case "DockTopToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.DockTop
Case "HiddenToolStripMenuItem"
Me.DockState = WeifenLuo.WinFormsUI.Docking.DockState.Hidden
End Select
End Sub
End Class