1 #include <msp/gltk/column.h>
2 #include <msp/gltk/row.h>
4 #include "telemetrydialog.h"
10 TelemetryDialog::TelemetryDialog(Engineer &engineer):
11 DynamicDialog(engineer.get_user_interface()),
12 driver(engineer.get_layout().get_driver())
14 Loader::WidgetMap widgets;
15 DataFile::load(*this, "data/telemetrydialog.ui", widgets);
17 GLtk::Panel *pnl_content = dynamic_cast<GLtk::Panel *>(get_item(widgets, "pnl_content"));
19 GLtk::Column col(*pnl_content->get_layout());
20 GLtk::Widget *prev_value = 0;
21 for(unsigned i=0;; ++i)
23 TelemetryLabel tmlabel;
24 tmlabel.info = driver.enumerate_telemetry(i);
28 GLtk::Row row(*pnl_content->get_layout());
30 pnl_content->add(*(new GLtk::Label(tmlabel.info->label)));
31 pnl_content->add(*(tmlabel.label = new GLtk::Label));
32 values.push_back(tmlabel);
35 pnl_content->get_layout()->add_constraint(*tmlabel.label, GLtk::Layout::ALIGN_LEFT, *prev_value);
36 prev_value = tmlabel.label;
40 void TelemetryDialog::update()
42 for(list<TelemetryLabel>::iterator i=values.begin(); i!=values.end(); ++i)
44 float value = driver.get_telemetry_value(i->info->name);
45 string text = lexical_cast<string>(value, Fmt().fixed().precision(i->info->precision));
49 text += i->info->unit;
51 i->label->set_text(text);
55 bool TelemetryDialog::save_state(DataFile::Statement &st) const
57 st.keyword = "telemetrydialog";
58 save_position(st.sub);