52 #include <wx/stattext.h>
88 const CSeq_id&
id = citer.GetSeq_id();
109 : m_Object(&object),
m_Scope(&scope)
133 wxPanel::Create( parent,
id, pos,
size, style );
138 GetSizer()->SetSizeHints(
this);
182 wxBoxSizer* itemBoxSizer2 =
new wxBoxSizer(wxVERTICAL);
183 itemPanel1->SetSizer(itemBoxSizer2);
185 wxBoxSizer* itemBoxSizer3 =
new wxBoxSizer(wxHORIZONTAL);
186 itemBoxSizer2->Add(itemBoxSizer3, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
188 wxStaticText* itemStaticText4 =
new wxStaticText( itemPanel1, wxID_STATIC,
_(
"Gene:"), wxDefaultPosition, wxDefaultSize, 0 );
189 itemBoxSizer3->Add(itemStaticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
191 wxArrayString m_GeneChoiceStrings;
192 m_GeneChoice =
new wxListBox( itemPanel1,
ID_CHOICE16, wxDefaultPosition, wxDefaultSize, m_GeneChoiceStrings, wxLB_SINGLE );
193 itemBoxSizer3->Add(
m_GeneChoice, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
195 wxArrayString m_MapTypeStrings;
196 m_MapTypeStrings.Add(
_(
"&Overlap"));
197 m_MapTypeStrings.Add(
_(
"&Cross-reference"));
198 m_MapType =
new wxRadioBox( itemPanel1,
ID_RADIOBOX4,
_(
"Map by"), wxDefaultPosition, wxDefaultSize, m_MapTypeStrings, 1, wxRA_SPECIFY_ROWS );
200 itemBoxSizer2->Add(
m_MapType, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
204 itemBoxSizer2->Add(
m_Suppress, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
242 const CGene_ref& gr = gene_it->GetSeq_feat()->GetData().GetGene();
258 const CSeq_feat& feat = gene_it->GetOriginalFeature();
271 const CGene_ref& gr = gene_it->GetSeq_feat()->GetData().GetGene();
285 itemBoxSizer2->Add(
m_ButtonEditGene, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
305 itemBoxSizer2->Add(
m_GeneRefPanel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
320 CSeq_feat::TXref::iterator it = feat->
SetXref().begin();
321 while (it != feat->
SetXref().end()) {
322 if ((*it)->IsSetData () && (*it)->GetData ().IsGene ()) {
323 it = feat->
SetXref().erase(it);
328 if (feat->
SetXref().size() == 0) {
336 if (!wxPanel::TransferDataFromWindow())
344 }
else if (
m_MapType->GetSelection() == 1) {
346 if (which_gene == 0) {
350 }
else if (which_gene == 1) {
369 if ((*xit)->IsSetData() && (*xit)->GetData().IsGene() && s.
Equals((*xit)->GetData().GetGene()))
391 bool trans_splicing =
false;
393 trans_splicing =
true;
408 bool need_new_interval =
false;
410 if ((
minus && !new_minus) || (!
minus && new_minus)) {
411 need_new_interval =
true;
414 if (bsh != new_bsh) {
415 need_new_interval =
true;
421 if (!need_new_interval && trans_splicing) {
424 bool out_of_order =
false;
427 if (from < new_from || to < new_to) {
429 }
else if (from > new_to) {
430 distance = from - new_to;
433 if (from > new_from || to > new_to) {
435 }
else if (new_from > to) {
436 distance = new_from - to;
439 if (out_of_order || distance > 10000) {
440 need_new_interval =
true;
444 if (need_new_interval) {
451 gene_loc->
SetMix().Set().push_back(sub);
470 gene_loc->
SetMix().Set().push_back(sub);
486 if (!gene_feat ||
m_MapType->GetSelection() != 1)
502 bool has_xref =
false;
505 if ((*xit)->IsSetId() && (*xit)->GetId().IsLocal()) {
506 if ((*xit)->GetId().Equals(src->
GetId())) {
515 (*xit)->SetId().Assign(src->
GetId());
549 if (partial_start || partial_stop)
689 wxWindow *win = GetParent();
704 win = win->GetParent();
709 wxWindow* editorWindow =
edit->CreateWindow(edit_dlg);
712 edit_dlg->SetTitle(
"Gene");
713 edit_dlg->Show(
true);
static CRef< CScope > m_Scope
User-defined methods of the data storage class.
@ eExtreme_Positional
numerical value
User-defined methods of the data storage class.
EVT_CHECKBOX(ID_CADJUSTFEATURES_CHECKBOX, CAdjustFeaturesForGaps::OnKnownUnknownSelected) EVT_CHECKBOX(ID_CADJUSTFEATURES_CHECKBOX1
ICommandProccessor * GetUndoManager(void)
ICommandProccessor * GetUndoManager(void)
void SetEditorWindow(wxWindow *editorWindow)
void SetEditor(CIRef< IEditObject > editor)
virtual void SetUndoManager(ICommandProccessor *cmdProccessor)
vector< CConstRef< objects::CSeq_feat > > m_GeneFeatList
static bool ShowToolTips()
Should we show tooltips?
void Init()
Initialises member variables.
CFeatureGenePanel()
Constructors.
CConstRef< objects::CSeq_feat > GetGeneToEdit()
void OnClickSuppress(wxCommandEvent &event)
wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX13
bool Create(wxWindow *parent, wxWindowID id=ID_CFEATUREGENEPANEL, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL)
Creation.
CRef< objects::CGene_ref > m_GeneRef
void SetModifyPseudo(bool modify_pseudo, const string &pseudo_choice)
CRef< objects::CSeq_loc > GetLocationForGene()
CConstRef< objects::CSeq_feat > m_OverlappingGene
CRef< objects::CScope > m_Scope
CRef< objects::CSeq_feat > GetNewGene()
void AddReciprocicalXref(CRef< objects::CSeq_feat > gene_feat)
CRef< objects::CSeq_feat > GetUpdatedGene()
void OnSelectGene(wxCommandEvent &event)
wxEVT_COMMAND_CHOICE_SELECTED event handler for ID_CHOICE16
wxBitmap GetBitmapResource(const wxString &name)
Retrieves bitmap resources.
~CFeatureGenePanel()
Destructor.
wxIcon GetIconResource(const wxString &name)
Retrieves icon resources.
void OnEditGene(wxCommandEvent &event)
vector< CConstRef< objects::CGene_ref > > m_GeneList
CGenePanel * m_GeneRefPanel
virtual bool TransferDataFromWindow()
void CreateControls()
Creates the controls and sizers.
wxButton * m_ButtonEditGene
void GetLabel(string *label) const
static void ModifyPseudo(objects::CSeq_feat &feat, const string &pseudo_choice)
ESubtype GetSubtype(void) const
static bool AllowXref(CSeqFeatData::ESubtype subtype1, CSeqFeatData::ESubtype subtype2)
namespace ncbi::objects::
const CGene_ref * GetGeneXref(void) const
See related function in util/feature.hpp.
void SetGeneXref(CGene_ref &value)
bool AddSeqFeatXref(const CSeqFeatXref::TId &id)
Seq-loc iterator class – iterates all intervals from a seq-loc in the correct order.
Base class for all serializable objects.
TSeq_feat_Handles GetFeaturesWithId(CSeqFeatData::E_Choice type, TFeatureIdInt id) const
vector< CSeq_feat_Handle > TSeq_feat_Handles
Undo/Redo interface for editing operations.
static void ClearGeneXref(CSeq_feat *feat)
static CBioseq_Handle BioseqHandleFromLocation(CScope *m_Scope, const CSeq_loc &loc)
unsigned int TSeqPos
Type for sequence locations and lengths.
#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.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
virtual bool Equals(const CSerialObject &object, ESerialRecursionMode how=eRecursive) const
Check if both objects contain the same values.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
bool IsPartialStart(ESeqLocExtremes ext) const
check start or stop of location for e_Lim fuzz
const CSeq_loc & GetEmbeddingSeq_loc(void) const
Get the nearest seq-loc containing the current range.
TRange GetRange(void) const
Get the range.
void SetPartialStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (lt/gt - indicating partial interval)
ENa_strand GetStrand(void) const
const CSeq_id & GetSeq_id(void) const
Get seq_id of the current location.
void SetPartialStop(bool val, ESeqLocExtremes ext)
bool IsPartialStop(ESeqLocExtremes ext) const
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
CConstRef< CSeq_feat > GetOverlappingGene(const CSeq_loc &loc, CScope &scope, ETransSplicing eTransSplicing=eTransSplicing_Auto)
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
@ eGetBioseq_All
Search bioseq, load if not loaded yet.
CSeq_entry_Handle GetSeq_entry_Handle(void) const
Get parent Seq-entry handle.
const CTSE_Handle & GetTSE_Handle(void) const
CConstRef< C > ConstRef(const C *object)
Template function for conversion of const object pointer to CConstRef.
void Reset(void)
Reset reference object.
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 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 const char label[]
virtual void Reset(void)
Reset the whole object.
TId GetId(void) const
Get the variant data.
TXref & SetXref(void)
Assign a value to Xref data member.
void SetLocation(TLocation &value)
Assign a value to Location data member.
void SetPartial(TPartial value)
Assign a value to Partial data member.
const TId & GetId(void) const
Get the Id member data.
bool IsSetXref(void) const
cite other relevant features Check if a value has been assigned to Xref data member.
const TLocation & GetLocation(void) const
Get the Location member data.
bool IsLocal(void) const
Check if variant Local is selected.
const TData & GetData(void) const
Get the Data member data.
const TExcept_text & GetExcept_text(void) const
Get the Except_text member data.
bool IsSetExcept_text(void) const
explain if except=TRUE Check if a value has been assigned to Except_text data member.
void SetData(TData &value)
Assign a value to Data data member.
bool IsSetId(void) const
Check if a value has been assigned to Id data member.
vector< CRef< CSeqFeatXref > > TXref
void ResetXref(void)
Reset Xref data member.
bool IsSetLocation(void) const
feature made from Check if a value has been assigned to Location data member.
@ e_not_set
No variant selected.
range(_Ty, _Ty) -> range< _Ty >
const struct ncbi::grid::netcache::search::fields::SIZE size
wxString ToWxString(const string &s)