void ModelStateDialog::OnStateTypeChoicePageChanged(wxChoicebookEvent& event) { std::string name = NameChoice->GetString(NameChoice->GetSelection()).ToStdString(); stateData[name].clear(); switch (StateTypeChoice->GetSelection()) { case SINGLE_NODE_STATE: stateData[name]["Type"] = "SingleNode"; break; case NODE_RANGE_STATE: stateData[name]["Type"] = "NodeRange"; break; } SelectStateModel(name); }
void ModelStateDialog::OnButtonMatrixAddClicked(wxCommandEvent& event) { wxTextEntryDialog dlg(this, "New State Model", "Enter name for new state model definition"); if (dlg.ShowModal() == wxID_OK) { std::string n = dlg.GetValue().ToStdString(); if (NameChoice->FindString(n) == wxNOT_FOUND) { NameChoice->Append(n); NameChoice->SetStringSelection(n); SelectStateModel(n); NameChoice->Enable(); StateTypeChoice->Enable(); DeleteButton->Enable(); } } }
void ModelStateDialog::OnButtonMatrixDeleteClick(wxCommandEvent& event) { std::string name = NameChoice->GetString(NameChoice->GetSelection()).ToStdString(); int i = wxMessageBox("Delete state model definion?", "Are you sure you want to delete " + name + "?", wxICON_WARNING | wxOK , this); if (i == wxID_OK || i == wxOK) { stateData[name].clear(); NameChoice->Delete(NameChoice->GetSelection()); if (NameChoice->GetCount() > 0) { NameChoice->SetSelection(0); SelectStateModel(NameChoice->GetString(0).ToStdString()); } else { NameChoice->SetSelection(wxNOT_FOUND); NameChoice->Disable(); StateTypeChoice->Disable(); DeleteButton->Disable(); } } }
void ModelStateDialog::OnMatrixNameChoiceSelect(wxCommandEvent& event) { SelectStateModel(NameChoice->GetString(NameChoice->GetSelection()).ToStdString()); ValidateWindow(); }
void ModelStateDialog::SetStateInfo(Model *cls, std::map< std::string, std::map<std::string, std::string> > &finfo) { NodeRangeGrid->SetColSize(COLOUR_COL, 50); SingleNodeGrid->SetColSize(COLOUR_COL, 50); NameChoice->Clear(); model = cls; modelPreview->SetModel(cls); for (std::map< std::string, std::map<std::string, std::string> >::iterator it = finfo.begin(); it != finfo.end(); it++) { std::string name = it->first; std::map<std::string, std::string> &info = it->second; NameChoice->Append(name); std::string type2 = info["Type"]; if (type2 == "") { //old style, map if (name == "Coro" || name == "SingleNode") { info["Type"] = "SingleNode"; } else if (name == "NodeRange") { info["Type"] = "NodeRange"; } } stateData[name] = info; } if (NameChoice->GetCount() > 0) { DeleteButton->Enable(); StateTypeChoice->Enable(); NameChoice->SetSelection(0); SelectStateModel(NameChoice->GetString(NameChoice->GetSelection()).ToStdString()); } else { DeleteButton->Disable(); StateTypeChoice->Disable(); } wxArrayString names; names.push_back(""); for (size_t x = 0; x < cls->GetNodeCount(); x++) { wxString nn = cls->GetNodeName(x, true); names.push_back(nn); } for (int x = 0; x < SingleNodeGrid->GetNumberRows(); x++) { wxGridCellTextEditor *neditor = new wxGridCellTextEditor(); wxString nfilter("abcdefghijklmnopqrstuvwxyz0123456789-_/\\|"); wxTextValidator nvalidator(wxFILTER_INCLUDE_CHAR_LIST); nvalidator.SetCharIncludes(nfilter); neditor->SetValidator(nvalidator); NodesGridCellEditor *editor = new NodesGridCellEditor(); editor->names = names; SingleNodeGrid->SetCellEditor(x, NAME_COL, neditor); SingleNodeGrid->SetCellEditor(x, CHANNEL_COL, editor); SingleNodeGrid->SetReadOnly(x, COLOUR_COL); } for (int x = 0; x < NodeRangeGrid->GetNumberRows(); x++) { wxGridCellTextEditor *reditor = new wxGridCellTextEditor(); wxString filter("0123456789,-"); wxTextValidator validator(wxFILTER_INCLUDE_CHAR_LIST); validator.SetCharIncludes(filter); reditor->SetValidator(validator); wxGridCellTextEditor *neditor2 = new wxGridCellTextEditor(); wxString nfilter2("abcdefghijklmnopqrstuvwxyz0123456789-_/\\|"); wxTextValidator nvalidator2(wxFILTER_INCLUDE_CHAR_LIST); nvalidator2.SetCharIncludes(nfilter2); neditor2->SetValidator(nvalidator2); NodeRangeGrid->SetCellEditor(x, NAME_COL, neditor2); NodeRangeGrid->SetCellEditor(x, CHANNEL_COL, reditor); NodeRangeGrid->SetReadOnly(x, COLOUR_COL); } ValidateWindow(); }