57 #include <wx/msgdlg.h>
58 #include <wx/stattext.h>
108 wxWindowID
id,
const wxString& caption,
const wxPoint& pos,
const wxSize&
size,
long style, wxString
label )
109 : m_TopSeqEntry(seh),
110 m_Converter (converter),
111 m_Workbench (workbench),
115 Create(parent,
id, caption, pos,
size, style);
123 bool CTblEditDlg::Create( wxWindow* parent, wxWindowID
id,
const wxString& caption,
const wxPoint& pos,
const wxSize&
size,
long style )
126 SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
132 GetSizer()->SetSizeHints(
this);
180 wxBoxSizer* itemBoxSizer2 =
new wxBoxSizer(wxVERTICAL);
181 itemCBulkCmdDlg1->SetSizer(itemBoxSizer2);
184 itemBoxSizer2->Add(
m_GridHolder, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
195 wxButton* itemButton7 =
new wxButton( itemCBulkCmdDlg1,
ID_CLEAR_TABLE,
_(
"Clear Table"), wxDefaultPosition, wxDefaultSize, 0 );
198 wxBoxSizer* itemBoxSizer8 =
new wxBoxSizer(wxHORIZONTAL);
199 itemBoxSizer2->Add(itemBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
201 wxButton* itemButton9 =
new wxButton( itemCBulkCmdDlg1, wxID_OK,
_(
"Accept"), wxDefaultPosition, wxDefaultSize, 0 );
202 itemBoxSizer8->Add(itemButton9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
204 wxButton* itemButton10 =
new wxButton( itemCBulkCmdDlg1, wxID_CANCEL,
_(
"Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
205 itemBoxSizer8->Add(itemButton10, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
210 wxStaticText* staticPrompt =
new wxStaticText(itemCBulkCmdDlg1, wxID_STATIC,
m_StaticLabel, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER);
211 m_GridHolder->Add(staticPrompt,0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
225 wxButton* problem_btn =
new wxButton( itemCBulkCmdDlg1,
ID_UPDATE_PROBLEMS,
_(
"Recheck Problems"), wxDefaultPosition, wxDefaultSize, 0 );
231 bool all_read_only =
true;
237 all_read_only =
false;
243 itemButton7->Show(
false);
333 for (
int j = 0; j < col->
GetData().GetString().
size(); j++) {
350 msg = column_name +
" differs for different sequences.";
382 objects::CBioseq_CI b_iter(seh, objects::CSeq_inst::eMol_na);
383 for ( ; b_iter ; ++b_iter ) {
384 objects::CSeqdesc_CI desc_ci( *b_iter, objects::CSeqdesc::e_User);
386 if (desc_ci->GetUser().IsSetType()
387 && desc_ci->GetUser().GetType().IsStr()
390 cmd->AddCommand(*cmdDelDesc);
412 return "Unknown error";
436 objects::CBioseq_CI b_iter(seh, objects::CSeq_inst::eMol_na);
437 for ( ; b_iter ; ++b_iter ) {
438 objects::CSeqdesc_CI desc_ci( *b_iter, objects::CSeqdesc::e_Comment);
441 cmd->AddCommand(*cmdDelDesc);
457 return "Unknown error";
469 return m_Label +
" differs for different sequences. This is unexpected.";
506 return "Unknown error";
517 }
else if (any_missing) {
518 return "Chimera program information is not provided for all sequences";
520 return "Chimera program information is provided but is not consistent for all sequences";
557 while (
table->GetColumns().size() <=
n) {
559 table->SetColumns().push_back(col);
561 return table->SetColumns()[
n];
575 for (
size_t i = 0;
i < mol_strings.size();
i++) {
576 col->
SetData().SetString().push_back(mol_strings[
i]);
581 col->
SetData().SetString().push_back(
"linear");
583 col->
SetData().SetString().push_back(
"circular");
608 return "Unknown error";
615 vector<string> qual_names;
616 qual_names.push_back(
"genome");
659 return "Unknown error";
671 return "Sequences contain a mixture of organelles. This is unusual.";
686 bool any_change =
false;
688 if (pos != string::npos) {
691 before = note.substr(0, pos);
693 string after = note.substr(pos +
value.length());
694 note = before + after;
703 vector<string> qual_names;
705 qual_names.push_back(
"fwd-primer-name");
706 qual_names.push_back(
"fwd-primer-seq");
707 qual_names.push_back(
"rev-primer-name");
708 qual_names.push_back(
"rev-primer-seq");
714 for (
int j = 0; j < note_col->
GetData().GetString().
size(); j++) {
720 note_col->
SetData().SetString()[j] =
"";
730 vector<string> qual_names;
738 for (
int j = 0; j < new_note_col->
GetData().GetString().
size(); j++) {
739 string orig_val =
"";
741 if (j < orig_note_col->GetData().GetString().
size()) {
753 new_note_col->
SetData().SetString()[j] = new_val + add_val;
766 return "fwd-primer-name";
768 return "rev-primer-name";
770 return "fwd-primer-seq";
772 return "rev-primer-seq";
781 return "Unknown error";
814 bool is_primertype =
false;
816 is_primertype =
true;
819 is_primertype =
true;
826 string mixed_msg =
"";
829 int num_universal = 0;
832 int num_rows = values_table->GetNum_rows();
834 for (
size_t i = 0;
i < col->GetData().GetSize();
i++) {
835 bool has_universal =
false;
838 has_universal =
true;
848 mixed_msg =
"Some sequences specify both universal and species-specific primers. This is unwanted.";
849 }
else if (num_universal > 0 && num_species > 0) {
850 if (num_universal + num_species < num_rows) {
851 mixed_msg =
"Primer type information is missing for some sequences.";
853 mixed_msg =
"Sequences are a mixture of universal and species-specific primers.";
855 }
else if (num_universal > 0 && num_universal < num_rows) {
856 mixed_msg =
"Universal primers are specifed for some but not all sequences. This is unexpected.";
857 }
else if (num_species > 0 && num_species < num_rows) {
858 mixed_msg =
"Species-specific primers are specifed for some but not all sequences. This is unexpected.";
864 mixed_msg = column_name +
" differs for different sequences.";
877 ITERATE (objects::CUser_object::TData, field_it, user.GetData()) {
878 if ((*field_it)->IsSetLabel()
879 && (*field_it)->GetLabel().IsStr()
880 &&
NStr::Equal((*field_it)->GetLabel().GetStr(),
"StructuredCommentPrefix")
881 && (*field_it)->IsSetData()
882 && (*field_it)->GetData().IsStr()) {
883 prefix = (*field_it)->GetData().GetStr();
895 id_col->SetHeader().SetField_id(objects::CSeqTable_column_info::eField_id_location_id);
897 table->SetColumns().push_back(id_col);
900 objects::CBioseq_CI b_iter(seh, objects::CSeq_inst::eMol_na);
901 for ( ; b_iter ; ++b_iter ) {
903 id->Assign (*(b_iter->GetSeqId()));
904 id_col->SetData().SetId().push_back(
id);
906 objects::CSeqdesc_CI it (*b_iter, objects::CSeqdesc::e_User);
908 if (it->GetUser().IsSetType()
909 && it->GetUser().GetType().IsStr()
912 ITERATE (objects::CUser_object::TData, field_it, it->GetUser().GetData()) {
913 if ((*field_it)->IsSetLabel()
914 && (*field_it)->GetLabel().IsStr()
915 && !
NStr::EqualNocase((*field_it)->GetLabel().GetStr(),
"StructuredCommentPrefix")
916 && !
NStr::EqualNocase((*field_it)->GetLabel().GetStr(),
"StructuredCommentSuffix")
917 && (*field_it)->IsSetData()) {
918 string existing_val =
"";
919 if ((*field_it)->GetData().IsStr()) {
920 existing_val = (*field_it)->GetData().GetStr();
921 }
else if ((*field_it)->GetData().IsStrs()) {
922 for (vector<CStringUTF8>::const_iterator str_it = (*field_it)->GetData().GetStrs().begin();
923 str_it != (*field_it)->GetData().GetStrs().end();
925 existing_val +=
", " + *str_it;
928 existing_val = existing_val.substr(2);
964 const objects::CSeq_table::TColumns &
columns = values_table->GetColumns();
965 size_t num_cols =
columns.size();
967 for (
size_t row = 0;
row < values_table->GetNum_rows() && row < id_col->GetData().GetSize();
row++) {
968 objects::CBioseq_Handle bsh = seh.GetBioseqHandle(*(id_col->GetData().GetId()[
row]));
971 objects::CSeqdesc_CI desc_ci( bsh, objects::CSeqdesc::e_User);
973 while (desc_ci && !found) {
974 if (desc_ci->GetUser().IsSetType()
975 && desc_ci->GetUser().GetType().IsStr()
979 new_desc->SetUser().Assign(desc_ci->GetUser());
985 bool any_change =
false;
988 new_desc->SetUser().SetType().SetStr(
"StructuredComment");
989 objects::CUser_field& field = new_desc->SetUser().SetField(
"StructuredCommentPrefix");
990 field.SetLabel().SetStr(
"StructuredCommentPrefix");
994 for (
size_t i = 1;
i < num_cols;
i++) {
995 string col_name = values_table->GetColumns()[
i]->GetHeader().GetTitle();
997 objects::CUser_field& field = new_desc->SetUser().SetField(col_name);
998 if (!field.IsSetLabel() || !field.GetLabel().IsStr() ||
NStr::IsBlank(field.GetLabel().GetStr())) {
999 field.SetLabel().SetStr(col_name);
1001 string new_val = values_table->GetColumns()[
i]->GetData().GetString()[
row];
1002 field.SetData().SetStr(new_val);
1008 objects::CUser_field& field = new_desc->SetUser().SetField(
"StructuredCommentSuffix");
1011 field.SetLabel().SetStr(
"StructuredCommentSuffix");
1012 field.SetData().SetStr(suffix);
1018 cmd->AddCommand (*ecmd);
1020 new_desc->SetUser().SetType().SetStr(
"StructuredComment");
1034 objects::CBioseq_CI b_iter(seh, objects::CSeq_inst::eMol_na);
1035 for ( ; b_iter ; ++b_iter ) {
1036 objects::CSeqdesc_CI desc_ci( *b_iter, objects::CSeqdesc::e_User);
1038 if (desc_ci->GetUser().IsSetType()
1039 && desc_ci->GetUser().GetType().IsStr()
1040 &&
NStr::EqualNocase(desc_ci->GetUser().GetType().GetStr(),
"StructuredComment")
1043 cmd->AddCommand(*cmdDelDesc);
1061 return "Unknown error";
1066 (
const objects::CSeq_feat& ftemplate,
1072 m_Reqs.assign(reqs.begin(), reqs.end());
1073 m_Opts.assign(opts.begin(), opts.end());
1080 vector<string>& problems)
1082 vector<string> add_values;
1083 for (
size_t j = 0; j < val_col->GetData().GetSize(); j++) {
1084 add_values.push_back(val_col->GetData().GetString()[j]);
1086 vector<string> add_problems = rule_col->
IsValid(add_values);
1093 vector<string> problems;
1097 if (values_table->GetColumns()[
i]->IsSetData()
1098 && (values_table->GetColumns()[
i]->GetData().IsString())) {
1106 problems_col->SetHeader().SetTitle(
kProblems);
1107 problems_col->SetData().SetString();
1108 ITERATE(vector<string>, it, problems) {
1109 problems_col->SetData().SetString().push_back(*it);
1111 return problems_col;
1118 int num_rows_to_check = 0;
1119 if (
table->IsSetColumns() &&
table->GetColumns().size() > 0 &&
table->GetColumns().front()->IsSetData()) {
1120 num_rows_to_check =
static_cast<int>(
table->GetColumns().front()->GetData().GetId().size());
1124 objects::CBioseq_CI bi(seh, objects::CSeq_inst::eMol_na);
1128 for (
int i = 0;
i < num_rows_to_check;
i++) {
1129 ITERATE(objects::CBioseq::TId, id_it, bi->GetCompleteBioseq()->GetId()) {
1130 if (
table->GetColumns()[0]->GetSeq_id(
i)->Compare(**id_it) == objects::CSeq_id::e_YES) {
1143 id->Assign(*(bi->GetSeqId()));
1144 f->SetLocation().SetInt().SetId().Assign(*
id);
1145 f->SetLocation().SetInt().SetFrom(0);
1146 f->SetLocation().SetInt().SetTo(bi->GetBioseqLength() - 1);
1155 col.
Reset(
new objects::CSeqTable_column());
1156 col->SetHeader().SetTitle((*it)->GetLabel());
1157 for (
size_t i = 0;
i <
table->GetNum_rows();
i++) {
1158 col->SetData().SetString().push_back(
"");
1160 table->SetColumns().push_back(col);
1175 bool do_something =
false;
1178 cmd->AddCommand(*delcmd);
1179 do_something =
true;
1183 cmd->AddCommand(*addcmd);
1184 do_something =
true;
1187 if (!do_something) {
1197 return "Unknown error";
1222 if (partial_start > 0) {
1224 for (
size_t i = 0;
i < tf_strings.size();
i++) {
1225 col->
SetData().SetString().push_back(tf_strings[
i]);
1228 if (partial_stop > 0) {
1230 for (
size_t i = 0;
i < tf_strings.size();
i++) {
1231 col->
SetData().SetString().push_back(tf_strings[
i]);
1241 vector<string> fields;
1243 fields.push_back(
"Assembly Method");
1244 fields.push_back(
"Assembly Name");
1245 fields.push_back(
"Sequencing Technology");
1246 fields.push_back(
"Coverage");
1260 vector<string> already_seen;
1263 if ((*cit)->IsSetData() && !(*cit)->GetData().IsId()) {
1264 string orig_name =
"";
1265 if ((*cit)->IsSetHeader()
1266 && (*cit)->GetHeader().IsSetTitle()) {
1267 orig_name = (*cit)->GetHeader().GetTitle();
1276 (*cit)->SetHeader().SetTitle(new_name);
1278 ITERATE (vector<string>, sit, already_seen) {
1282 +
" refer to the same field (" + new_name +
"); ";
1286 already_seen.push_back(new_name);
1307 vector<string> format_ids;
1308 format_ids.push_back(
"file_loader_table");
1309 fileManager->LoadFormats(format_ids);
1312 vector<CIRef<IOpenObjectsPanelClient> > loadManagers;
1316 dlg.SetSize(710, 480);
1321 if (dlg.ShowModal() == wxID_OK) {
1323 if (!object_loader) {
1324 wxMessageBox(
wxT(
"Failed to get object loader"),
wxT(
"Error"),
1325 wxOK | wxICON_ERROR);
1341 const CObject& ptr = obj_it->GetObject();
1342 const objects::CSeq_annot* annot =
dynamic_cast<const objects::CSeq_annot*
>(&ptr);
1343 if (annot && annot->IsSeq_table()) {
1345 input_table->Assign(annot->GetData().GetSeq_table());
1353 wxOK | wxICON_ERROR,
this);
1359 if (!values_table) {
1366 wxOK | wxICON_ERROR,
this);
1371 wxMessageBox(
wxT(
"New table conflicts with existing values"),
wxT(
"Error"),
1372 wxOK | wxICON_ERROR,
this);
1398 values_table->Assign(*grid_table);
1412 if ((*cit)->IsSetData() && !(*cit)->GetData().IsId()) {
1413 bool read_only =
false;
1414 if ((*cit)->IsSetHeader()
1415 && (*cit)->GetHeader().IsSetTitle()
1421 (*cit)->SetData().SetString().clear();
1441 table->SetColumns().push_back(problems);
bool GUI_AsyncExecUnit(IExecuteUnit &exec_unit, const wxString &msg)
bool Create(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE, const wxString &name=wxFrameNameStr)
virtual CRef< CCmdComposite > GetCommandFromValuesTable(CRef< objects::CSeq_table >, objects::CSeq_entry_Handle seh)
virtual CRef< CCmdComposite > ClearAllValues(objects::CSeq_entry_Handle seh)
vector< string > m_DBLinkFields
virtual string RemapColumnName(string column_name)
virtual CRef< objects::CSeq_table > GetValuesTableFromSeqEntry(objects::CSeq_entry_Handle seh)
virtual string GetErrorMessage(CRef< objects::CSeq_table > table)
virtual void SetRegistryPath(const string &path)
virtual vector< string > IsValid(const vector< string > &values)
CFeatureTableCommandConverter(const objects::CSeq_feat &ftemplate, const TFeatureSeqTableColumnList &reqs, const TFeatureSeqTableColumnList &opts)
virtual CRef< objects::CSeq_table > GetValuesTableFromSeqEntry(objects::CSeq_entry_Handle seh)
virtual CRef< objects::CSeq_table > GetChoices(CRef< objects::CSeq_table > values_table)
CRef< objects::CSeq_feat > m_Template
virtual CRef< CCmdComposite > ClearAllValues(objects::CSeq_entry_Handle seh)
virtual string RemapColumnName(string column_name)
TFeatureSeqTableColumnList m_Opts
virtual CRef< CCmdComposite > GetCommandFromValuesTable(CRef< objects::CSeq_table >, objects::CSeq_entry_Handle seh)
virtual CRef< objects::CSeqTable_column > MakeProblemsColumn(CRef< objects::CSeq_table > values_table)
TFeatureSeqTableColumnList m_Reqs
virtual string GetErrorMessage(CRef< objects::CSeq_table >)
virtual CRef< objects::CSeq_table > GetValuesTableFromSeqEntry(objects::CSeq_entry_Handle seh)
virtual CRef< CCmdComposite > ClearAllValues(objects::CSeq_entry_Handle seh)
virtual string RemapColumnName(string column_name)
CSourceRequirements::EWizardType m_WizardType
virtual CRef< objects::CSeq_table > GetChoices(CRef< objects::CSeq_table > values_table)
virtual string GetErrorMessage(CRef< objects::CSeq_table >)
virtual CRef< CCmdComposite > GetCommandFromValuesTable(CRef< objects::CSeq_table >, objects::CSeq_entry_Handle seh)
IObjectLoader * GetObjectLoader()
void SetManagers(vector< CIRef< IOpenObjectsPanelClient > > &managers)
virtual CRef< objects::CSeq_table > GetValuesTableFromSeqEntry(objects::CSeq_entry_Handle seh)
virtual string GetErrorMessage(CRef< objects::CSeq_table >)
virtual CRef< CCmdComposite > GetCommandFromValuesTable(CRef< objects::CSeq_table >, objects::CSeq_entry_Handle seh)
virtual CRef< CCmdComposite > ClearAllValues(objects::CSeq_entry_Handle seh)
virtual CRef< objects::CSeq_table > GetChoices(CRef< objects::CSeq_table > values_table)
virtual string RemapColumnName(string column_name)
string GetPrimerTypeColumnName()
virtual string CheckForMixedValues(CRef< objects::CSeq_table > values_table, string column_name="")
void MakeColumnReadOnly(int pos, bool val=true)
void UpdateColumnLabelHeight()
void SetValuesTable(CRef< objects::CSeq_table > table)
CRef< objects::CSeq_table > GetValuesTable()
@ eWizardType_microsatellite
virtual bool IsReadOnlyColumn(string column_name)
virtual CRef< objects::CSeq_table > GetValuesTableFromSeqEntry(objects::CSeq_entry_Handle seh)=0
virtual CRef< CCmdComposite > GetCommandFromValuesTable(CRef< objects::CSeq_table >, objects::CSeq_entry_Handle seh)=0
virtual string GetErrorMessage(CRef< objects::CSeq_table >)=0
virtual int GetCollapsible()
virtual CRef< objects::CSeq_table > GetChoices(CRef< objects::CSeq_table > values_table)
virtual string CheckForMixedValues(CRef< objects::CSeq_table > values_table, string column_name)
virtual string RemapColumnName(string column_name)=0
virtual CRef< CCmdComposite > GetCommand()
virtual string GetErrorMessage()
void CreateControls()
Creates the controls and sizers.
string x_FindBadImportColumns(CRef< objects::CSeq_table > table)
wxBoxSizer * m_TableControlsSizer
void OnExportTableClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_EXPORT_TABLE
CTblEditDlg()
Constructors.
void OnImportTableClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_IMPORT_TABLE
wxBoxSizer * m_GridHolder
wxIcon GetIconResource(const wxString &name)
Retrieves icon resources.
~CTblEditDlg()
Destructor.
void OnUpdateProblems(wxCommandEvent &event)
static bool ShowToolTips()
Should we show tooltips?
wxBitmap GetBitmapResource(const wxString &name)
Retrieves bitmap resources.
void OnClearTableClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CLEAR_TABLE
CSeqTableGridPanel * m_Grid
CTableCommandConverter * m_Converter
objects::CSeq_entry_Handle m_TopSeqEntry
void Init()
Initialises member variables.
bool Create(wxWindow *parent, wxWindowID id=10079, const wxString &caption=_("TblEditDlg"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(400, 300), long style=wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX|wxTAB_TRAVERSAL)
Creation.
virtual bool PreExecute()=0
virtual bool PostExecute()=0
vector< SObject > TObjects
IWorkbench is the central interface in the application framework.
vector< CRef< CFeatureSeqTableColumnBase > > TFeatureSeqTableColumnList
const string kPartialStart
const string kPartialStop
const char * kMoleculeType
const char * kSubSourceNote
const char * kSequenceIdColLabel
static const char *const strings[]
static const column_t columns[]
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the string.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
static bool Equal(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2, ECase use_case=eCase)
Test for equality of a substring with another string.
static string & ReplaceInPlace(string &src, const string &search, const string &replace, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
static const char label[]
const TColumns & GetColumns(void) const
Get the Columns member data.
bool IsSetTitle(void) const
user friendly column name, can be skipped Check if a value has been assigned to Title data member.
void SetHeader(THeader &value)
Assign a value to Header data member.
const TTitle & GetTitle(void) const
Get the Title member data.
bool IsString(void) const
Check if variant String is selected.
bool IsSetField_name(void) const
any column can be identified by ASN.1 text locator string with omitted object type.
vector< CRef< CSeqTable_column > > TColumns
const THeader & GetHeader(void) const
Get the Header member data.
const TField_name & GetField_name(void) const
Get the Field_name member data.
void SetData(TData &value)
Assign a value to Data data member.
bool IsSetHeader(void) const
column description or reference to previously defined info information about data Check if a value ha...
bool IsSetData(void) const
row data Check if a value has been assigned to Data data member.
TNum_rows GetNum_rows(void) const
Get the Num_rows member data.
const TString & GetString(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
<!DOCTYPE HTML >< html > n< header > n< title > PubSeq Gateway Help Page</title > n< style > n table
CRef< CCmdComposite > ApplyCommentValuesTableToSeqEntry(CRef< objects::CSeq_table >values_table, objects::CSeq_entry_Handle seh, const string &label)
CRef< objects::CSeq_table > BuildCommentDescriptorValuesTableFromSeqEntry(objects::CSeq_entry_Handle seh, const string &label)
vector< string > GetSrcGenomeOptions(CSourceRequirements::EWizardType wizard_type, CSourceRequirements::EWizardSrcType src_type)
vector< string > GetMoleculeTypeOptions(CSourceRequirements::EWizardType wizard_type)
CRef< objects::CSeq_table > BuildMolInfoValuesTableFromSeqEntry(objects::CSeq_entry_Handle seh, CSourceRequirements::EWizardType wizard_type)
CRef< objects::CSeq_table > BuildChimeraValuesTableFromSeqEntry(objects::CSeq_entry_Handle seh, const string &label, CSourceRequirements::EWizardSrcType src_type)
CRef< CCmdComposite > ApplyMolInfoValuesTableToSeqEntry(CRef< objects::CSeq_table >values_table, objects::CSeq_entry_Handle seh, bool add_confirmed=true)
CRef< CCmdComposite > ApplyDBLinkValuesTableToSeqEntry(CRef< objects::CSeq_table >values_table, objects::CSeq_entry_Handle seh)
CRef< CCmdComposite > ApplyChimeraValuesTableToSeqEntry(CRef< objects::CSeq_table >values_table, objects::CSeq_entry_Handle seh, const string &label)
CRef< objects::CSeq_table > BuildDBLinkValuesTableFromSeqEntry(objects::CSeq_entry_Handle seh)
const struct ncbi::grid::netcache::search::fields::SIZE size
const GenericPointer< typename T::ValueType > T2 value
static const int kSkipColumns
CRef< CSeqTable_column > FindSeqTableColumnByName(CRef< objects::CSeq_table > values_table, string column_name)
void FillShortColumns(CRef< objects::CSeq_table > values_table)
void AddValueToTable(CRef< CSeq_table > table, string subtype_name, string value, size_t row, edit::EExistingText existing_text=edit::eExistingText_replace_old)
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
CRef< CCmdComposite > ApplySrcTableToSeqEntry(CRef< objects::CSeq_table >values_table, objects::CSeq_entry_Handle seh)
bool IsFwdPrimerSeq(string name)
CRef< objects::CSeq_table > GetSeqTableForSrcQualFromSeqEntry(objects::CSeq_entry_Handle seh, vector< string > qual_names)
bool IsRevPrimerSeq(string name)
bool IsFwdPrimerName(string name)
bool IsRevPrimerName(string name)
#define row(bind, expected)
int CombineTables(CRef< objects::CSeq_table > dst, const objects::CSeq_table &src)
bool AreAnyColumnValuesMissing(CRef< objects::CSeqTable_column > col)
bool AreAllColumnValuesTheSame(CRef< objects::CSeqTable_column > col, string default_val="")
int AddFeatureToSeqTable(const objects::CSeq_feat &f, CRef< objects::CSeq_table > table)
bool SaveTableFile(wxWindow *parent, wxString &save_file_dir, wxString &save_file_name, CRef< objects::CSeq_table > values_table)
int CountTableColumnConflicts(CRef< objects::CSeq_table > dst, const objects::CSeq_table &src)
CRef< CCmdComposite > AddFeatureSeqTableToSeqEntry(CRef< objects::CSeq_table > table, objects::CSeq_entry_Handle entry, objects::CSeqFeatData::ESubtype subtype, const TFeatureSeqTableColumnList &reqs, const TFeatureSeqTableColumnList &opts)
CRef< CCmdComposite > RemoveMatchingFeaturesWithoutLocalIntFeatureIdsFromSeqEntry(objects::CSeq_entry_Handle entry, const objects::CSeq_feat &feat, const TFeatureSeqTableColumnList &reqs)
void AddProblemsColumnToFeatureSeqTable(CRef< objects::CSeq_table > table, const TFeatureSeqTableColumnList &reqs, const TFeatureSeqTableColumnList &opts)
CRef< CFeatureSeqTableColumnBase > GetColumnRuleForFeatureSeqTable(CRef< objects::CSeqTable_column > col, const TFeatureSeqTableColumnList &reqs, const TFeatureSeqTableColumnList &opts)
void RemoveProblemsColumn(CRef< objects::CSeq_table > values_table)
vector< string > GetTrueFalseList()
void FixTableAfterImport(CRef< objects::CSeq_table > input_table)
string FindBadRows(CRef< objects::CSeq_table > src, CRef< objects::CSeq_table > dst, objects::CSeq_entry_Handle seh)
CRef< objects::CSeq_table > GetFeaturesFromSeqEntry(objects::CSeq_entry_Handle entry, const objects::CSeq_feat &feat, const TFeatureSeqTableColumnList &reqs)
void MergeStringVectors(vector< string > &problems, vector< string > add)
static const string kPrimerType
static string s_GetPrefixForStructuredComment(const objects::CUser_object &user)
static const string kUniversalPrimersLabel
USING_SCOPE(ncbi::objects)
static void AddProblemsToColumn(CRef< objects::CSeqTable_column > val_col, CRef< CFeatureSeqTableColumnBase > rule_col, vector< string > &problems)
static const string kUniversalPrimers
static const string kSpeciesSpecificPrimersLabel
static int s_FindColumn(CRef< CSeq_table > table, const string &name)
static bool s_RemoveValueFromNote(string ¬e, string value)
static void x_SetAllTableStringValues(CRef< CSeq_table > table, const string &val)
static const string kSpeciesSpecificPrimers
vector< string > GetAssemblyDataFields()
CRef< CSeqTable_column > s_GetNthColumn(CRef< CSeq_table > table, int n)
#define ID_UPDATE_PROBLEMS
wxString ToWxString(const string &s)