48 #include <wx/hyperlink.h>
50 #include <wx/button.h>
51 #include <wx/scrolwin.h>
52 #include <wx/stattext.h>
53 #include <wx/radiobox.h>
54 #include <wx/bitmap.h>
90 wxWindowID
id,
const wxPoint& pos,
const wxSize&
size,
long style )
91 : m_AllowNuc(allow_nuc), m_AllowProt(allow_prot),
m_Scope(scope), m_is_aa(is_aa)
105 wxPanel::Create( parent,
id, pos,
size, style );
110 GetSizer()->SetSizeHints(
this);
161 wxBoxSizer* itemBoxSizer2 =
new wxBoxSizer(wxVERTICAL);
162 itemPanel1->SetSizer(itemBoxSizer2);
164 wxStaticBox* itemStaticBoxSizer14Static =
new wxStaticBox(itemPanel1,
wxID_ANY,
_(
"Partialness"));
165 wxStaticBoxSizer* itemStaticBoxSizer14 =
new wxStaticBoxSizer(itemStaticBoxSizer14Static, wxHORIZONTAL);
166 itemBoxSizer2->Add(itemStaticBoxSizer14, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
168 wxString start_label =
_(
"5'");
170 start_label =
_(
"NH2");
171 m_Partial5 =
new wxCheckBox( itemPanel1,
ID_CHECKBOX1, start_label, wxDefaultPosition, wxDefaultSize, 0 );
173 itemStaticBoxSizer14->Add(
m_Partial5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
175 wxString stop_label =
_(
"3'");
177 stop_label =
_(
"CO2H");
180 itemStaticBoxSizer14->Add(
m_Partial3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
183 wxPanel* itemPanel3 =
new wxPanel( itemPanel1,
ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
184 itemBoxSizer2->Add(itemPanel3, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 0);
186 wxBoxSizer* itemBoxSizer4 =
new wxBoxSizer(wxVERTICAL);
187 itemPanel3->SetSizer(itemBoxSizer4);
189 wxBoxSizer* itemBoxSizer5 =
new wxBoxSizer(wxHORIZONTAL);
190 itemBoxSizer4->Add(itemBoxSizer5, 0, wxALIGN_LEFT|wxALL, 0);
192 wxStaticText* itemStaticText6 =
new wxStaticText( itemPanel3, wxID_STATIC,
_(
"From"), wxDefaultPosition, wxSize(itemPanel3->ConvertDialogToPixels(wxSize(45, -1)).x, -1), wxALIGN_CENTRE );
193 itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
195 wxStaticText* itemStaticText7 =
new wxStaticText( itemPanel3, wxID_STATIC,
_(
"To"), wxDefaultPosition, wxSize(itemPanel3->ConvertDialogToPixels(wxSize(45, -1)).x, -1), wxALIGN_CENTRE );
196 itemBoxSizer5->Add(itemStaticText7, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
200 wxStaticText* itemStaticText8 =
new wxStaticText( itemPanel3, wxID_STATIC,
_(
"Strand"), wxDefaultPosition, wxSize(itemPanel3->ConvertDialogToPixels(wxSize(45, -1)).x, -1), wxALIGN_CENTRE );
201 itemBoxSizer5->Add(itemStaticText8, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
204 wxStaticText* itemStaticText9 =
new wxStaticText( itemPanel3, wxID_STATIC,
_(
"SeqID"), wxDefaultPosition, wxSize(itemPanel3->ConvertDialogToPixels(wxSize(80, -1)).x, -1), wxALIGN_CENTRE );
205 itemBoxSizer5->Add(itemStaticText9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
207 itemBoxSizer5->Add(92, 8, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
209 wxStaticLine* itemStaticLine11 =
new wxStaticLine( itemPanel3, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
210 itemBoxSizer4->Add(itemStaticLine11, 0, wxGROW|wxALL, 1);
216 wxBoxSizer* itemBoxSizer13 =
new wxBoxSizer(wxHORIZONTAL);
217 itemBoxSizer2->Add(itemBoxSizer13, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 0);
219 wxArrayString itemRadioBox17Strings;
220 itemRadioBox17Strings.Add(
_(
"&join()"));
221 itemRadioBox17Strings.Add(
_(
"&order()"));
222 wxRadioBox* itemRadioBox17 =
new wxRadioBox( itemPanel1,
ID_RADIOBOX6,
_(
"Save As"), wxDefaultPosition, wxDefaultSize, itemRadioBox17Strings, 1, wxRA_SPECIFY_ROWS );
223 itemRadioBox17->SetSelection(0);
225 itemRadioBox17->SetToolTip(
_(
"If each interval is separate, and should not be joined with the others to describe the feature, choose order (for example, when annotating multiple primer binding sites)."));
226 itemBoxSizer13->Add(itemRadioBox17, 0, wxALIGN_CENTER_VERTICAL|wxALL, 0);
228 wxButton* itemButton18 =
new wxButton( itemPanel1,
ID_BUTTON1,
_(
"Sort"), wxDefaultPosition, wxDefaultSize, 0 );
229 itemBoxSizer13->Add(itemButton18, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
232 itemRadioBox17->SetValidator( wxGenericValidator(&
m_LocType) );
272 m_Data.push_back(intData);
285 m_Data.push_back(intData);
307 loc->CSeq_loc_Base::SetNull();
316 loc->CSeq_loc_Base::SetNull();
327 for (
size_t i = 0;
i <
m_Data.size(); ++
i) {
329 if (seq_int && seq_int->
IsInt()) {
332 packed->Set().push_back(new_int);
335 if (packed->Set().size() == 1) {
336 loc->
SetInt().Assign(*(packed->Set().front()));
337 }
else if (packed->Set().size() == 0) {
340 loc->CSeq_loc_Base::SetPacked_int(*packed);
346 for (
size_t i = 0;
i <
m_Data.size(); ++
i) {
349 mix->Set().push_back(seq_int);
351 null_loc->CSeq_loc_Base::SetNull();
352 mix->Set().push_back(null_loc);
355 if (mix->Set().back()->
IsNull()) {
356 mix->Set().pop_back();
358 if (mix->Set().size() == 0) {
360 }
else if (mix->Set().size() == 1) {
361 loc->
SetInt().Assign(*(mix->Set().front()));
363 loc->CSeq_loc_Base::SetMix(*mix);
375 for (
size_t i = 0;
i <
m_Data.size();
i++)
391 switch(
m_Data[index].m_Strand) {
419 for (
size_t i = 0;
i <
m_Data.size();
i++)
421 if (!(
m_Data[
i].m_SeqId.IsEmpty()))
431 for (wxArrayString::iterator it =
m_SeqIds.begin(); it !=
m_SeqIds.end(); ++it)
435 id_str = it->ToStdString();
453 if (seq_id->
IsGi()) {
475 if (
m_Data[index].m_Empty) {
479 if (
m_Data[index].m_From ==
m_Data[index].m_To && !int_only)
489 seq_pnt->
SetId(*seq_id);
490 seq_loc->
SetPnt(*seq_pnt);
502 seq_pnt->
SetId(*seq_id);
504 seq_loc->
SetPnt(*seq_pnt);
517 seq_int->
SetId(*seq_id);
518 seq_loc->
SetInt(*seq_int);
525 wxSizerItemList::iterator node =
row;
527 wxSizer* sizer = (**node).GetSizer();
538 (**node).DeleteWindows();
539 node = itemList.erase(node);
546 return itemList.end();
548 wxSizerItemList::iterator
row, it = itemList.begin();
550 for(
int index = 0; it != itemList.end(); ++it, --index) {
556 wxSizer* sizer = (**it).GetSizer();
557 if (sizer && sizer->GetItem(wnd))
559 else if ((**it).GetWindow() == wnd)
568 wxSizerItemList::iterator it =
row;
570 if (it == itemList.end())
571 return itemList.end();
578 wxSizerItemList::iterator it =
row;
580 if (it == itemList.begin())
581 return itemList.end();
587 wxSizerItemList::iterator row2,
588 wxSizerItemList& itemList)
590 for (
int i = 0;
i < 4; ++
i) {
591 if (row1 == itemList.end() || row2 == itemList.end())
593 swap(*row1++, *row2++);
598 int& from,
int& to,
int& strand, wxString& seqID,
bool &fuzz)
600 wxSizerItemList::iterator node =
row;
602 if (node == itemList.end())
return;
606 wxTextCtrl*
text = (wxTextCtrl*)(**node).GetWindow();
608 from = wxAtoi(
text->GetValue());
609 if (++node == itemList.end())
return;
611 text = (wxTextCtrl*)(**node).GetWindow();
613 to = wxAtoi(
text->GetValue());
614 if (++node == itemList.end())
return;
619 wxChoice* strand_ctrl =
dynamic_cast<wxChoice*
>((**node).GetWindow());
620 strand = strand_ctrl->GetSelection();
621 if (++node == itemList.end())
return;
626 wxComboBox *combo = (wxComboBox*)(**node).GetWindow();
627 seqID = combo->GetValue();
632 wxSizerItemList& itemList =
m_Sizer->GetChildren();
633 wxSizerItemList::iterator
row =
x_FindRow((wxWindow*)event.GetEventObject(), itemList);
634 if (
row == itemList.end())
636 wxSizerItemList::iterator node =
row;
638 wxTextCtrl* from_ctrl = (wxTextCtrl*)(**node).GetWindow();
639 int from = wxAtoi(from_ctrl->GetValue());
640 if (++node == itemList.end())
return;
642 wxTextCtrl* to_ctrl = (wxTextCtrl*)(**node).GetWindow();
643 int to = wxAtoi(to_ctrl->GetValue());
644 if (++node == itemList.end())
return;
650 wxChoice* strand_ctrl =
dynamic_cast<wxChoice*
>((**node).GetWindow());
651 strand = strand_ctrl->GetSelection();
654 if ((strand == 1 && from < to) || (strand != 1 && from > to) )
656 from_ctrl->SetValue(wxEmptyString);
657 to_ctrl->SetValue(wxEmptyString);
665 wxSizerItemList& itemList =
m_Sizer->GetChildren();
666 wxSizerItemList::iterator
row =
x_FindRow((wxWindow*)event.GetEventObject(), itemList);
668 if (
m_Sizer->GetChildren().empty()) {
680 wxWindow* spnCtrl = (wxWindow*)evt.GetEventObject();
682 wxSizerItemList& itemList =
m_Sizer->GetChildren();
683 wxSizerItemList::iterator
row =
x_FindRow(spnCtrl, itemList);
684 if (
row == itemList.end())
687 wxSizerItemList::iterator row2;
689 switch (evt.GetId()) {
704 size_t rowPos = itemList.IndexOf(*
row);
706 int from = 1, to = 1, strand = 0;
715 x_AddRow(from, from, strand, seqID, fuzz, rowPos);
724 int from = 1, to = 1, strand = 0;
730 size_t rowPos = (
row == itemList.end()) ? (
size_t)-1 : itemList.IndexOf(*
row);
735 x_AddRow(to, to, strand, seqID, fuzz, rowPos);
749 wxTextCtrl *textFrom;
756 if (rowPos == (
size_t)-1)
757 m_Sizer->Add(textFrom, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
759 m_Sizer->Insert(rowPos++, textFrom, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
766 if (rowPos == (
size_t)-1)
767 m_Sizer->Add(
text, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
769 m_Sizer->Insert(rowPos++,
text, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
773 wxArrayString itemComboBoxStrings;
774 itemComboBoxStrings.Add(
wxT(
"Plus"));
775 itemComboBoxStrings.Add(
wxT(
"Minus"));
776 itemComboBoxStrings.Add(
wxT(
"Both"));
777 itemComboBoxStrings.Add(
wxT(
"Other"));
782 itemComboBoxStrings);
783 strand_ctrl->SetSelection(strand);
785 if (rowPos == (
size_t)-1)
786 m_Sizer->Add(strand_ctrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
788 m_Sizer->Insert(rowPos++, strand_ctrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
795 if (rowPos == (
size_t)-1)
796 m_Sizer->Add(combo, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
798 m_Sizer->Insert(rowPos++, combo, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
800 wxBoxSizer* controlsSizer =
new wxBoxSizer(wxHORIZONTAL);
801 if (rowPos == (
size_t)-1)
804 m_Sizer->Insert(rowPos++, controlsSizer);
807 spinCtrl1->SetToolTip(
_(
"Use insert controls to insert blank location intervals"));
809 controlsSizer->Add(spinCtrl1, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 0);
812 spinCtrl2->SetToolTip(
_(
"Use arrow controls to reorder location intervals"));
813 controlsSizer->Add(spinCtrl2, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 0);
816 itemHyperLink->SetVisitedColour(itemHyperLink->GetNormalColour());
817 controlsSizer->Add(itemHyperLink, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 0);
819 textFrom->SetFocus();
820 textFrom->SetSelection(-1, -1);
836 wxTE_RIGHT|wxTE_PROCESS_ENTER);
837 if (rowPos == (
size_t)-1)
838 m_Sizer->Add(
m_LastFrom, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
840 m_Sizer->Insert(rowPos++,
m_LastFrom, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
844 wxTE_RIGHT|wxTE_PROCESS_ENTER);
845 if (rowPos == (
size_t)-1)
846 m_Sizer->Add(
m_LastTo, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
848 m_Sizer->Insert(rowPos++,
m_LastTo, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
850 wxArrayString itemComboBoxStrings;
851 itemComboBoxStrings.Add(
wxT(
"Plus"));
852 itemComboBoxStrings.Add(
wxT(
"Minus"));
853 itemComboBoxStrings.Add(
wxT(
"Both"));
854 itemComboBoxStrings.Add(
wxT(
"Other"));
860 itemComboBoxStrings);
863 if (rowPos == (
size_t)-1)
866 m_Sizer->Insert(rowPos++,
m_LastStrand, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
874 if (rowPos == (
size_t)-1)
875 m_Sizer->Add(
m_LastId, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
877 m_Sizer->Insert(rowPos++,
m_LastId, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 0);
879 wxBoxSizer* controlsSizer =
new wxBoxSizer(wxHORIZONTAL);
880 if (rowPos == (
size_t)-1)
883 m_Sizer->Insert(rowPos++, controlsSizer);
887 controlsSizer->Add(spinCtrl1, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 0);
890 controlsSizer->Add(spinCtrl2, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 0);
893 itemHyperLink->SetVisitedColour(itemHyperLink->GetNormalColour());
894 controlsSizer->Add(itemHyperLink, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 0);
905 vector<SIntData> intVec;
908 wxSizerItemList& children =
m_Sizer->GetChildren();
909 wxSizerItemList::iterator node = children.begin();
911 for (; node != children.end(); ) {
912 wxTextCtrl*
text = (wxTextCtrl*)(**node).GetWindow();
913 if (++node == children.end())
break;
914 wxString from =
text->GetValue();
916 text = (wxTextCtrl*)(**node).GetWindow();
917 if (++node == children.end())
break;
918 wxString to =
text->GetValue();
920 wxChoice* strand_combo =
NULL;
923 strand_combo =
dynamic_cast<wxChoice*
>((**node).GetWindow());
924 if (++node == children.end())
break;
927 wxComboBox* id_combo = (wxComboBox*)(**node).GetWindow();
928 if (++node == children.end())
break;
932 if (from.IsEmpty() && to.IsEmpty()) {
936 intData.
m_From = wxAtoi(from);
937 intData.
m_To = wxAtoi(to);
943 intData.
m_Strand = strand_combo->GetSelection();
944 intData.
m_SeqId = id_combo->GetValue();
948 intVec.push_back(intData);
954 sort(intVec.begin(), intVec.end());
956 for (node = children.begin(); node != children.end(); ++node)
959 (**node).DeleteWindows();
964 vector<SIntData>::const_iterator it;
966 for (it = intVec.begin(); it != intVec.end(); ++it) {
968 x_AddRow(it->m_From, it->m_To, it->m_Strand, it->m_SeqId, it->m_Fuzz);
985 vector<SIntData>::const_iterator it;
988 idsSet.
insert(it->m_SeqId);
997 for (
CBioseq_CI bioseq_it(*handle); bioseq_it; ++bioseq_it) {
1028 for (it2 = idsSet.
begin(); it2 != idsSet.
end(); ++it2)
1036 if (!wxPanel::TransferDataToWindow())
1039 wxSizerItemList& children =
m_Sizer->GetChildren();
1040 wxSizerItemList::iterator node = children.begin();
1041 for (; node != children.end(); ++node)
1043 (**node).DeleteWindows();
1054 bool last_empty =
false;
1055 vector<SIntData>::const_iterator it;
1061 x_AddRow(it->m_From, it->m_To, it->m_Strand, it->m_SeqId, it->m_Fuzz);
1077 if (!wxPanel::TransferDataFromWindow())
1083 wxSizerItemList& children =
m_Sizer->GetChildren();
1084 wxSizerItemList::iterator node = children.begin();
1086 for (; node != children.end(); ) {
1087 wxTextCtrl*
text = (wxTextCtrl*)(**node).GetWindow();
1088 if (++node == children.end())
break;
1089 wxString from =
text->GetValue();
1091 text = (wxTextCtrl*)(**node).GetWindow();
1092 if (++node == children.end())
break;
1093 wxString to =
text->GetValue();
1095 wxChoice* strand_combo =
NULL;
1098 strand_combo =
dynamic_cast<wxChoice*
>((**node).GetWindow());
1099 if (++node == children.end())
break;
1102 wxComboBox* id_combo = (wxComboBox*)(**node).GetWindow();
1103 if (++node == children.end())
break;
1107 if (from.IsEmpty() && to.IsEmpty()) {
1110 if (from.IsEmpty()) {
1112 }
else if (to.IsEmpty()) {
1116 string from_str = from.ToStdString();
1117 string to_str = to.ToStdString();
1129 intData.
m_Strand = strand_combo->GetSelection();
1130 intData.
m_SeqId = id_combo->GetValue();
1135 m_Data.push_back(intData);
1145 if (
m_LastId->GetValue().IsEmpty())
1175 wxArrayString::iterator it =
m_SeqIds.begin();
1235 return wxNullBitmap;
static CRef< CScope > m_Scope
@ eExtreme_Biological
5' and 3'
void UseImageSet(int set)
Data loader exceptions, used by GenBank loader.
CLocationListCtrl()
Constructors.
void x_GetRowData(wxSizerItemList::iterator row, wxSizerItemList &itemList, int &from, int &to, int &strand, wxString &seqID, bool &fuzz)
~CLocationListCtrl()
Destructor.
void OnDelete(wxHyperlinkEvent &event)
void OnSortClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON1
wxScrolledWindow * m_ScrolledWindow
wxBitmap GetBitmapResource(const wxString &name)
Retrieves bitmap resources.
wxFlexGridSizer * m_Sizer
CNoTabChoice * m_LastStrand
int m_LastStrandSelection
CRef< objects::CSeq_id > GetIdFromForm(size_t index)
wxIcon GetIconResource(const wxString &name)
Retrieves icon resources.
void Init()
Initialises member variables.
CRef< objects::CSeq_loc > GetSeq_loc()
CRef< objects::CScope > m_Scope
CRef< objects::CSeq_loc > x_GetInterval(size_t index, bool int_only)
void PopulateIdListFromScope()
vector< SIntData > m_Data
void DeleteRow(wxSizerItemList::iterator row, wxSizerItemList &itemList)
void OnStrandChange(wxCommandEvent &event)
objects::ENa_strand x_GetStrandFromForm(size_t index)
virtual bool TransferDataToWindow()
virtual bool TransferDataFromWindow()
wxSizerItemList::iterator x_FindRow(wxWindow *wnd, wxSizerItemList &itemList)
void OnNewText(wxCommandEvent &event)
bool Create(wxWindow *parent, wxWindowID id=ID_CLOCATIONLISTCTRL, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxSUNKEN_BORDER|wxTAB_TRAVERSAL)
Creation.
void OnSpinCtrl(wxCommandEvent &evt)
CNoTabComboBox * m_LastId
objects::ENa_strand GetStrandFromForm(size_t index)
void AddRow(int from, int to, int strand, const wxString &seqID, const bool fuzz)
static bool ShowToolTips()
Should we show tooltips?
wxSizerItemList::iterator x_PrevRow(wxSizerItemList::iterator row, wxSizerItemList &itemList)
bool IsInIdList(wxString str)
wxSizerItemList::iterator x_NextRow(wxSizerItemList::iterator row, wxSizerItemList &itemList)
void SetPartials(bool partial5, bool partial3)
wxString GetListIdStrForSeqId(const objects::CSeq_id &seq_id)
void x_AddRow(int from, int to, int strand, const wxString &seqID, const bool fuzz, size_t rowPos=-1)
void x_AddEmptyRow(size_t rowPos=-1)
map< string, CConstRef< objects::CSeq_id > > m_str_to_id
void CreateControls()
Creates the controls and sizers.
const_iterator end() const
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
const_iterator begin() const
const_iterator end() const
static const char * str(char *buf, int n)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
static void GetLabel(const CObject &obj, string *label, ELabelType type=eDefault)
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
void GetLabel(string *label, ELabelType type=eDefault, TLabelFlags flags=fLabel_Default) const
Append a label for this Seq-id to the supplied string.
CSeq_id & Set(const CTempString &the_id, TParseFlags flags=fParse_AnyRaw)
Reassign based on flat specifications; arguments interpreted as with constructors.
@ eContent
Untagged human-readable accession or the like.
void SetPartialStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (lt/gt - indicating partial interval)
void SetPartialStop(bool val, ESeqLocExtremes ext)
void SetNull(void)
Override all setters to incorporate cache invalidation.
TGi GetGiForId(const objects::CSeq_id &id, CScope &scope, EGetIdType flags=0)
Given a Seq-id retrieve the corresponding GI.
vector< CSeq_entry_Handle > TTSE_Handles
CConstRef< CBioseq > GetCompleteBioseq(void) const
Get the complete bioseq.
void Reset(void)
Reset reference object.
bool IsNull(void) const THROWS_NONE
Check if pointer is null – same effect as Empty().
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static void TruncateSpacesInPlace(string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string (in-place)
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
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.
TStr & SetStr(void)
Select the variant.
@ eLim_tr
space to right of position
void SetTo(TTo value)
Assign a value to To data member.
void SetPoint(TPoint value)
Assign a value to Point data member.
void SetId(TId &value)
Assign a value to Id data member.
ENa_strand
strand of nucleic acid
void SetId(TId &value)
Assign a value to Id data member.
void SetStrand(TStrand value)
Assign a value to Strand data member.
void SetFuzz(TFuzz &value)
Assign a value to Fuzz data member.
void SetFrom(TFrom value)
Assign a value to From data member.
TGi GetGi(void) const
Get the variant data.
TGi & SetGi(void)
Select the variant.
TLocal & SetLocal(void)
Select the variant.
bool IsGi(void) const
Check if variant Gi is selected.
bool IsInt(void) const
Check if variant Int is selected.
const TInt & GetInt(void) const
Get the variant data.
bool IsNull(void) const
Check if variant Null is selected.
void SetStrand(TStrand value)
Assign a value to Strand data member.
@ eNa_strand_both
in forward orientation
const TId & GetId(void) const
Get the Id member data.
list< CRef< CSeq_id > > TId
@ eMol_na
just a nucleic acid
static void s_SwapRows(wxSizerItemList::iterator row1, wxSizerItemList::iterator row2, wxSizerItemList &itemList)
void s_FinishLoc(CSeq_loc &loc, bool partial5, bool partial3)
static void text(MDB_val *v)
constexpr auto sort(_Init &&init)
const struct ncbi::grid::netcache::search::fields::SIZE size
#define row(bind, expected)
C++ wrappers for the Perl-compatible regular expression (PCRE) library.
wxString ToWxString(const string &s)
string ToStdString(const wxString &s)