55 #include <wx/button.h>
56 #include <wx/statbox.h>
57 #include <wx/msgdlg.h>
79 wxWindowID
id,
const wxString& caption,
const wxPoint& pos,
const wxSize&
size,
long style )
89 SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
95 GetSizer()->SetSizeHints(
this);
125 wxBoxSizer* itemBoxSizer2 =
new wxBoxSizer(wxVERTICAL);
126 itemDialog1->SetSizer(itemBoxSizer2);
129 itemBoxSizer2->Add(
m_FeatureType, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 0);
140 itemBoxSizer2->Add(OkCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
178 bool modified =
false;
183 if (field_name.empty())
196 vector<CSeq_feat_Handle> entry_handles;
199 if (constraint && !constraint_field.empty())
205 const CSeq_feat *feat =
dynamic_cast<const CSeq_feat*
> ( (*obj_it)->GetOriginalObject() );
217 entry_handles.push_back(fh);
226 const CSeq_feat& cds = feat->GetOriginalFeature();
232 entry_handles.push_back(feat->GetSeq_feat_Handle());
240 for (
size_t i = 0;
i < entry_handles.size();
i++)
243 if (deleted_feats.
find(feat1) == deleted_feats.
end())
251 bool changed =
false;
257 for (
size_t j =
i + 1; j < entry_handles.size(); j++)
260 if ( deleted_feats.
find(feat2) == deleted_feats.
end() &&
271 if (!new_product_id) {
281 deleted_feats.
insert(feat2);
292 new_feat->
SetPartial(partial_start || partial_stop);
294 new_feat->
SetProduct().SetWhole().Assign(*new_product_id);
300 cmd->AddCommand(*retranslate_cmd);
320 wxSizerItemList& slist = sizer->GetChildren();
322 for (wxSizerItemList::iterator iter = slist.begin(); iter != slist.end(); ++iter, ++
n) {
323 if ((*iter)->IsSizer()) {
325 }
else if ((*iter)->IsWindow()) {
326 wxWindow* child = (*iter)->GetWindow();
332 wxSizer* subsizer = child->GetSizer();
346 bool modified =
false;
347 for (
CFeat_CI feat_it(seh); feat_it; ++feat_it)
349 if (feat_it->GetOriginalFeature().IsSetData())
352 new_feat->
Assign(feat_it->GetOriginalFeature());
353 const CSeq_loc& feat_loc = feat_it->GetLocation();
355 new_loc->
Assign(feat_loc);
356 vector<pair<int,int> > ranges;
362 ranges.push_back(pair<int, int>(feat_start, feat_stop));
365 for (
size_t j = 1; j < ranges.size(); j++)
367 if (ranges[j].
first == ranges[
i].second + 1)
369 ranges[
i].second = ranges[j].second;
370 ranges[j].first = -1;
371 ranges[j].second = -1;
389 int new_start = ranges[
i].first;
390 int new_stop = ranges[
i].second;
391 if (new_start < 0 || new_stop < 0)
397 if (feat_start != new_start)
401 if (feat_stop != new_stop)
403 loc_it.
SetTo(new_stop);
@ eExtreme_Positional
numerical value
bool IsGeneralIdProtPresent(objects::CSeq_entry_Handle tse)
objects::CSeq_entry_Handle m_TopSeqEntry
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)
void AddCommand(IEditCommand &command)
void PopulateFeatureListbox(void)
virtual string GetFieldName(const bool subfield=false)
Returns the name of the field as selected in the panel.
virtual string GetFieldName(const bool subfield=false)
Returns the name of the field as selected in the panel.
void ListPresentFeaturesFirst(const objects::CSeq_entry_Handle &entry, vector< const objects::CFeatListItem * > *featlist=nullptr)
void UpdateChildrenFeaturePanels(wxSizer *sizer)
void CreateControls()
Creates the controls and sizers.
~CFuseFeaturesDlg()
Destructor.
CFeatureTypePanel * m_FeatureType
wxIcon GetIconResource(const wxString &name)
Retrieves icon resources.
wxBitmap GetBitmapResource(const wxString &name)
Retrieves bitmap resources.
virtual CRef< CCmdComposite > GetCommand()
CFeatureFieldNamePanel * m_FeatureConstraint
CStringConstraintPanel * m_StringConstraintPanel
void Init()
Initialises member variables.
void ProcessUpdateFeatEvent(wxCommandEvent &event)
static bool ShowToolTips()
Should we show tooltips?
bool Create(wxWindow *parent, wxWindowID id=11000, const wxString &caption=_("Fuse Features"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX|wxTAB_TRAVERSAL)
Creation.
CFuseFeaturesDlg()
Constructors.
static CRef< CCmdComposite > apply(CSeq_entry_Handle seh)
vector< CRef< objects::edit::CApplyObject > > GetApplyObjects(objects::CBioseq_Handle bsh)
static const CFeatList * GetFeatList()
namespace ncbi::objects::
Seq-loc iterator class – iterates all intervals from a seq-loc in the correct order.
CRef< edit::CStringConstraint > GetStringConstraint()
IWorkbench is the central interface in the application framework.
iterator_bool insert(const value_type &val)
const_iterator find(const key_type &key) const
const_iterator end() const
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
const string kPartialStart
#define EVT_UPDATE_FEATURE_LIST(id, fn)
#define ID_FUSE_FEATURES_OKCANCEL
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
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.
CRef< CSeq_loc > MakeSeq_loc(EMakeType make_type=eMake_CompactType) const
return constructed CSeq_loc with all changes
void SetFrom(TSeqPos from)
Set the range from position.
void SetTo(TSeqPos to)
Set the range to position.
bool IsPartialStart(ESeqLocExtremes ext) const
check start or stop of location for e_Lim fuzz
void Delete(void)
Delete current element, and make iterator to point to the next element.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
bool HasChanges(void) const
return true of any part was changed since initialization
bool IsEmpty(void) const
True if the current location is empty.
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)
void SetPartialStop(bool val, ESeqLocExtremes ext)
bool IsPartialStop(ESeqLocExtremes ext) const
CRef< CSeq_loc > Seq_loc_Add(const CSeq_loc &loc1, const CSeq_loc &loc2, CSeq_loc::TOpFlags flags, CScope *scope)
Add two seq-locs.
bool IsSameBioseq(const CSeq_id &id1, const CSeq_id &id2, CScope *scope, CScope::EGetBioseqFlag get_flag=CScope::eGetBioseq_All)
Determines if two CSeq_ids represent the same CBioseq.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
CSeq_feat_Handle GetSeq_featHandle(const CSeq_feat &feat, EMissing action=eMissing_Default)
virtual const CSeq_loc & GetProduct(void) const
bool IsSetProduct(void) const
virtual const CSeq_loc & GetLocation(void) const
CConstRef< CSeq_feat > GetOriginalSeq_feat(void) const
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.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
bool IsSetData(void) const
the specific data Check if a value has been assigned to Data data member.
void SetLocation(TLocation &value)
Assign a value to Location data member.
bool IsCdregion(void) const
Check if variant Cdregion is selected.
void SetPartial(TPartial value)
Assign a value to Partial data member.
void SetProduct(TProduct &value)
Assign a value to Product data member.
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.
bool IsSetProduct(void) const
product of process Check if a value has been assigned to Product data member.
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::SIZE size
C++ wrappers for the Perl-compatible regular expression (PCRE) library.
CRef< CCmdComposite > GetRetranslateCDSCommand(objects::CScope &scope, const objects::CSeq_feat &cds, bool create_general_only)