X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fzoneproperties.cpp;h=5f971b920a1596c37a41e854b29cb1859e3969bf;hb=c0e076401ee76fd9a5a96ff919a8e7b4d058c51b;hp=38d9cc792bc9e7f37da6943dc808b3e8a7ee10bd;hpb=1c15570729bbce44f0518373ca5bf8bf41cfa3b3;p=r2c2.git diff --git a/source/designer/zoneproperties.cpp b/source/designer/zoneproperties.cpp index 38d9cc7..5f971b9 100644 --- a/source/designer/zoneproperties.cpp +++ b/source/designer/zoneproperties.cpp @@ -44,20 +44,24 @@ ZoneProperties::ZoneProperties(Zone &z): add(*(drp_qualifier = new GLtk::Dropdown)); GLtk::ListDataStore &data = dynamic_cast &>(drp_qualifier->get_data()); - const char *qualifiers[] = { "track", "platform", "siding", 0 }; + const char *qualifiers[] = { "(none)", "track", "platform", "siding", 0 }; for(unsigned i=0; qualifiers[i]; ++i) { data.append(qualifiers[i]); if(zone.get_qualifier()==qualifiers[i]) drp_qualifier->set_selected_index(i); } + + if(zone.get_qualifier().empty()) + drp_qualifier->set_selected_index(0); } { GLtk::Row row(*layout); add(*(lbl1 = new GLtk::Label("Number"))); layout->add_constraint(*lbl1, GLtk::Layout::COPY_WIDTH, *lbl2); - add(*(ent_number = new GLtk::Entry(lexical_cast(zone.get_number())))); + unsigned n = zone.get_number(); + add(*(ent_number = new GLtk::Entry(n ? lexical_cast(zone.get_number()) : string()))); ent_number->set_edit_size(4, 1); } @@ -82,6 +86,22 @@ ZoneProperties::ZoneProperties(Zone &z): } } + { + GLtk::Row row(*layout); + add(*(lbl1 = new GLtk::Label("Direction"))); + layout->add_constraint(*lbl1, GLtk::Layout::COPY_WIDTH, *lbl2); + + add(*(drp_preferred_dir = new GLtk::Dropdown)); + GLtk::ListDataStore &data = dynamic_cast &>(drp_preferred_dir->get_data()); + const char *directions[] = { "either", "up", "down", 0 }; + for(unsigned i=0; directions[i]; ++i) + { + data.append(directions[i]); + if(zone.get_preferred_direction()==i) + drp_preferred_dir->set_selected_index(i); + } + } + GLtk::Button *btn; { @@ -101,9 +121,14 @@ void ZoneProperties::on_response(int code) { string qualifier; int sel = drp_qualifier->get_selected_index(); - if(sel>=0) + if(sel>0) qualifier = drp_qualifier->get_data().get_string(sel); - unsigned number = lexical_cast(ent_number->get_text()); + + unsigned number = 0; + string num_str = ent_number->get_text(); + if(!num_str.empty()) + number = lexical_cast(ent_number->get_text()); + zone.set_name(ent_group->get_text(), qualifier, number); sel = drp_up_direction->get_selected_index(); @@ -111,5 +136,11 @@ void ZoneProperties::on_response(int code) zone.clear_direction(); else zone.set_direction_towards(*up_directions.get(sel), TrackChain::UP); + + if(zone.has_direction()) + { + sel = drp_preferred_dir->get_selected_index(); + zone.set_preferred_direction(static_cast(sel)); + } } }