Make the length of the slide area configurable for WML.

Converted the sliders in the new editor to use this feature.
This commit is contained in:
Mark de Wever 2008-08-08 15:57:19 +00:00
parent 0c918613e2
commit d53d754e32
5 changed files with 44 additions and 10 deletions

View file

@ -51,11 +51,12 @@
border_size = 5
horizontal_alignment = "left"
[slider]
id = "width"
definition = "default"
minimum_value = 1
maximum_value = 200
step_size = 1
id = "width"
definition = "default"
best_slider_length = 200
minimum_value = 1
maximum_value = 200
step_size = 1
[/slider]
[/column]
[/row]
@ -77,11 +78,12 @@
border_size = 5
horizontal_alignment = "left"
[slider]
id = "height"
definition = "default"
minimum_value = 1
maximum_value = 200
step_size = 1
id = "height"
definition = "default"
best_slider_length = 200
minimum_value = 1
maximum_value = 200
step_size = 1
[/slider]
[/column]
[/row]

View file

@ -114,6 +114,23 @@ void tslider::set_maximum_value(const int maximum_value)
}
}
tpoint tslider::get_best_size() const
{
// Inherited.
tpoint size = tcontrol::get_best_size();
if(best_slider_length_ == 0) {
return size;
}
// Override length.
const tslider_definition::tresolution* conf =
dynamic_cast<const tslider_definition::tresolution*>(config());
assert(conf);
size.x = conf->left_offset + best_slider_length_ + conf->right_offset;
return size;
}
t_string tslider::get_value_label() const
{
if(!value_labels_.empty()) {

View file

@ -26,6 +26,7 @@ public:
tslider() :
tscrollbar_(),
best_slider_length_(0),
minimum_value_(0)
{
}
@ -53,8 +54,14 @@ public:
// The number of items needs to include the begin and end so count - 1.
{ return minimum_value_ + get_item_count() - 1; }
/** Inherited from tcontrol. */
tpoint get_best_size() const;
/***** ***** ***** setters / getters for members ***** ****** *****/
void set_best_slider_length(const unsigned length)
{ best_slider_length_ = length; set_dirty(); }
void set_minimum_value_label(const t_string& minimum_value_label)
{ minimum_value_label_ = minimum_value_label; }
@ -75,6 +82,9 @@ public:
private:
/** The best size for the slider part itself, if 0 ignored. */
unsigned best_slider_length_;
/**
* The minimum value the slider holds.
*

View file

@ -929,6 +929,7 @@ twidget* tbuilder_panel::build() const
tbuilder_slider::tbuilder_slider(const config& cfg) :
tbuilder_control(cfg),
best_slider_length_(lexical_cast_default<unsigned>(cfg["best_slider_length"])),
minimum_value_(lexical_cast_default<unsigned>(cfg["minimum_value"])),
maximum_value_(lexical_cast_default<unsigned>(cfg["maximum_value"])),
step_size_(lexical_cast_default<unsigned>(cfg["step_size"])),
@ -944,6 +945,8 @@ tbuilder_slider::tbuilder_slider(const config& cfg) :
* == Slider ==
*
* @start_table = config
* best_slider_length (unsigned = 0)
* The best length for the sliding part.
* minimum_value (unsigned = 0) The width of the slider.
* maximum_value (unsigned = 0) The height of the slider.
*
@ -988,6 +991,7 @@ twidget* tbuilder_slider::build() const
init_control(slider);
slider->set_best_slider_length(best_slider_length_);
slider->set_maximum_value(maximum_value_);
slider->set_minimum_value(minimum_value_);
slider->set_step_size(step_size_);

View file

@ -190,6 +190,7 @@ public:
twidget* build () const;
private:
unsigned best_slider_length_;
int minimum_value_;
int maximum_value_;
int step_size_;