]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/timetablepanel.cpp
Allow direction to be specified for routing waypoints
[r2c2.git] / source / engineer / timetablepanel.cpp
index 4232f2cb16db143397b97b8736ef7c057adf6d58..5932176b0536e55518fc9753e06fde28abd2f4a5 100644 (file)
@@ -50,6 +50,7 @@ TimetablePanel::TimetablePanel(Engineer &e, R2C2::Train &t):
        drp_type = dynamic_cast<GLtk::Dropdown *>(get_item(widgets, "drp_type"));
        lbl_target = dynamic_cast<GLtk::Label *>(get_item(widgets, "lbl_target"));
        ent_time = dynamic_cast<GLtk::Entry *>(get_item(widgets, "ent_time"));
+       drp_direction = dynamic_cast<GLtk::Dropdown *>(get_item(widgets, "drp_direction"));
 
        dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_pick"))->signal_clicked.connect(sigc::mem_fun(this, &TimetablePanel::pick_clicked));
        dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_insert"))->signal_clicked.connect(sigc::mem_fun(this, &TimetablePanel::insert_clicked));
@@ -90,6 +91,7 @@ Timetable::Row TimetablePanel::create_row()
 
        row.type = static_cast<Timetable::RowType>(drp_type->get_selected_index()+1);
        row.target = target;
+       row.direction = static_cast<TrackChain::Direction>(drp_direction->get_selected_index());
 
        Regex r_time("([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?");
        RegMatch m = r_time.match(ent_time->get_text());
@@ -113,6 +115,7 @@ void TimetablePanel::row_selected(unsigned i)
                target = row->target;
                if(target)
                        lbl_target->set_text(target->get_name());
+               drp_direction->set_selected_index(row->direction);
                ent_time->set_text(format_time(row->time));
        }
 }
@@ -233,7 +236,16 @@ TimetableRowItem::TimetableRowItem(ValueType row)
                        case Timetable::DEPART: type = "Depart from "; break;
                        case Timetable::THROUGH: type = "Go through "; break;
                        }
-                       add(*new GLtk::Label(type+row->target->get_name()));
+
+                       string dir;
+                       switch(row->direction)
+                       {
+                       case TrackChain::UP: dir = " up"; break;
+                       case TrackChain::DOWN: dir = " down"; break;
+                       default:;
+                       }
+
+                       add(*new GLtk::Label(type+row->target->get_name()+dir));
                }
                else
                        add(*new GLtk::Label);