-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathCalculationDisplay.cs
128 lines (118 loc) · 3.89 KB
/
CalculationDisplay.cs
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using Rawr.CustomControls;
namespace Rawr
{
public partial class CalculationDisplay : UserControl
{
public CalculationDisplay()
{
InitializeComponent();
BuildControls();
Calculations.ModelChanged += new EventHandler(Calculations_ModelChanged);
}
void Calculations_ModelChanged(object sender, EventArgs e)
{
BuildControls();
ScrollHook.hookRec(this);
}
Dictionary<string, GroupBox> GroupBoxes = new Dictionary<string, GroupBox>();
Dictionary<string, ExtendedToolTipLabel> LabelLabels = new Dictionary<string, ExtendedToolTipLabel>();
Dictionary<string, ExtendedToolTipLabel> ValueLabels = new Dictionary<string, ExtendedToolTipLabel>();
private void BuildControls()
{
this.Controls.Clear();
GroupBoxes.Clear();
LabelLabels.Clear();
ValueLabels.Clear();
string[] displayLabelConfigurationStrings = null;
if (Calculations.Instance != null)
{
displayLabelConfigurationStrings = Calculations.CharacterDisplayCalculationLabels;
}
else
{
displayLabelConfigurationStrings = new string[0];
}
this.SuspendLayout();
foreach (string displayLabelConfigurationString in displayLabelConfigurationStrings)
{
string[] displayLabelConfigurationSplit = displayLabelConfigurationString.Split(':');
string group = displayLabelConfigurationSplit[0];
if (!GroupBoxes.ContainsKey(group))
{
GroupBox groupBox = new GroupBox();
groupBox.Text = group;
groupBox.Tag = group;
groupBox.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right;
groupBox.Dock = DockStyle.Top;
GroupBoxes.Add(group, groupBox);
this.Controls.Add(groupBox);
groupBox.BringToFront();
}
string name = displayLabelConfigurationSplit[1];
string[] nameSplit = name.Split('*');
name = nameSplit[0];
ExtendedToolTipLabel labelLabel = new ExtendedToolTipLabel();
labelLabel.Left = 4;
labelLabel.Text = name + (nameSplit.Length > 1 ? ": *" : ":");
labelLabel.AutoSize = true;
GroupBoxes[group].Controls.Add(labelLabel);
LabelLabels.Add(name, labelLabel);
if (nameSplit.Length > 1)
{
labelLabel.ToolTipText = nameSplit[1];
}
ExtendedToolTipLabel labelValue = new ExtendedToolTipLabel();
labelValue.Left = this.Width / 2;
labelValue.AutoSize = true;
GroupBoxes[group].Controls.Add(labelValue);
ValueLabels.Add(name, labelValue);
}
int groupY = 3;
foreach (GroupBox groupBox in GroupBoxes.Values)
{
int labelY = 19;
foreach (ExtendedToolTipLabel label in groupBox.Controls)
{
label.Top = labelY;
if (ValueLabels.ContainsValue(label))
{
labelY += 18;
}
}
groupBox.Bounds = new Rectangle(6, groupY, 202, labelY);
groupY += labelY + 6;
}
ScrollHook.hookRec(this);
this.ResumeLayout();
}
public void SetCalculations(Dictionary<string, string> displayCalculationValues)
{
foreach (KeyValuePair<string, string> kvp in displayCalculationValues)
{
string[] valueSplit = kvp.Value.Split('*');
string value = valueSplit[0];
ExtendedToolTipLabel label;
if (ValueLabels.TryGetValue(kvp.Key, out label))
{
if (valueSplit.Length > 1)
{
label.Text = value + " *";
label.ToolTipText = valueSplit[1];
}
else
{
label.Text = value;
label.ToolTipText = "";
}
}
}
}
}
}