]> 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 878de865835aa8a44cf48b5619ad4354a3540675..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());
@@ -110,8 +112,10 @@ void TimetablePanel::row_selected(unsigned i)
        if(row)
        {
                drp_type->set_selected_index(row->type-1);
-               if(row->target)
-                       lbl_target->set_text(row->target->get_name());
+               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));
        }
 }
@@ -230,8 +234,18 @@ TimetableRowItem::TimetableRowItem(ValueType row)
                        {
                        case Timetable::ARRIVE: type = "Arrive at "; break;
                        case Timetable::DEPART: type = "Depart from "; break;
+                       case Timetable::THROUGH: type = "Go through "; break;
+                       }
+
+                       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()));
+
+                       add(*new GLtk::Label(type+row->target->get_name()+dir));
                }
                else
                        add(*new GLtk::Label);