1 /** DGui project file.
2
3 Copyright: Trogu Antonio Davide 2011-2013
4
5 License: $(HTTP boost.org/LICENSE_1_0.txt, Boost License 1.0).
6
7 Authors: Trogu Antonio Davide
8 */
9 module dgui.progressbar;
10
11 import dgui.core.controls.subclassedcontrol;
12
13 class ProgressBar: SubclassedControl
14 {
15 private uint _minRange = 0;
16 private uint _maxRange = 100;
17 private uint _step = 10;
18 private uint _value = 0;
19
20 @property public uint minRange()
21 {
22 return this._minRange;
23 }
24
25 @property public void minRange(uint mr)
26 {
27 this._minRange = mr;
28
29 if(this.created)
30 {
31 this.sendMessage(PBM_SETRANGE32, this._minRange, this._maxRange);
32 }
33 }
34
35 @property public uint maxRange()
36 {
37 return this._maxRange;
38 }
39
40 @property public void maxRange(uint mr)
41 {
42 this._maxRange = mr;
43
44 if(this.created)
45 {
46 this.sendMessage(PBM_SETRANGE32, this._minRange, this._maxRange);
47 }
48 }
49
50 @property public uint step()
51 {
52 return this._minRange;
53 }
54
55 @property public void step(uint s)
56 {
57 this._step = s;
58
59 if(this.created)
60 {
61 this.sendMessage(PBM_SETSTEP, this._step, 0);
62 }
63 }
64
65 @property public uint value()
66 {
67 if(this.created)
68 {
69 return this.sendMessage(PBM_GETPOS, 0, 0);
70 }
71
72 return this._value;
73 }
74
75 @property public void value(uint p)
76 {
77 this._value = p;
78
79 if(this.created)
80 {
81 this.sendMessage(PBM_SETPOS, p, 0);
82 }
83 }
84
85 public void increment()
86 {
87 if(this.created)
88 {
89 this.sendMessage(PBM_STEPIT, 0, 0);
90 }
91 else
92 {
93 throwException!(DGuiException)("Cannot increment the progress bar");
94 }
95 }
96
97 protected override void createControlParams(ref CreateControlParams ccp)
98 {
99 ccp.superclassName = WC_PROGRESSBAR;
100 ccp.className = WC_DPROGRESSBAR;
101
102 assert(this._dock !is DockStyle.fill, "ProgressBar: Invalid Dock Style");
103
104 if(this._dock is DockStyle.left || this._dock is DockStyle.right)
105 {
106 this.setStyle(PBS_VERTICAL, true);
107 }
108
109 super.createControlParams(ccp);
110 }
111
112 protected override void onHandleCreated(EventArgs e)
113 {
114 this.sendMessage(PBM_SETRANGE32, this._minRange, this._maxRange);
115 this.sendMessage(PBM_SETSTEP, this._step, 0);
116 this.sendMessage(PBM_SETPOS, this._value, 0);
117
118 super.onHandleCreated(e);
119 }
120 }