41 #include <wx/msgdlg.h>
54 for (
auto& it : args[
kFind].GetValue().get()) {
61 string descr =
" replace '" + find_text +
"'";
63 descr +=
" (case insensitive) ";
66 descr +=
" (case sensitive) ";
68 descr +=
" with '" + args[
kRepl].GetValue() +
"'";
91 bool modified = (new_target !=
m_Target);
100 string descr =
"Edit ";
102 descr +=
"publication ";
105 return descr + GetFindReplDescr(
m_ArgList);
116 variables +=
"%false%";
119 variables +=
"%true%";
129 if (field.empty())
return function;
133 string rt_var =
"obj";
134 bool found_constraint =
false;
137 auto pos = field.find_last_of(
'-');
138 function += CMacroFunction_EditSubfield::GetFuncName();
143 string rt_var =
"obj";
146 if (
function.
empty()) {
148 function +=
"(\"" + path +
"\", ";
152 function +=
"(" + rt_var +
", ";
155 else if (path.find(
',') !=
NPOS) {
156 vector<string> tokens;
161 string rt_var =
"obj";
172 function +=
"(" + rt_var +
", ";
176 bool found_constraint =
false;
179 if (found_constraint) {
180 function +=
"(" + rt_var +
", ";
183 function +=
"(\"" + rt_var +
".data.strs\", ";
201 vector<string> funcs{ CMacroFunction_Resolve::GetFuncName(),
202 CMacroFunction_EditSubfield::GetFuncName(),
207 funcs.reserve(funcs.size() + pub_fncs.size());
208 funcs.insert(funcs.end(), pub_fncs.begin(), pub_fncs.end());
224 x_LoadPanel(parent,
"EditStringProteinQual", args);
237 descr +=
", copy original protein name to CDS note";
252 function = CMacroFunction_CopyNameToCDSNote::GetFuncName();
257 string rt_var =
"obj";
260 if (res_function.empty()) {
262 function +=
"(\"" + path +
"\", ";
265 function += res_function;
267 function +=
"(" + rt_var +
", ";
270 if (move_to_note || update_mrna) {
272 new_constraint +=
"(\"" + path +
"\", " +
kFind +
", " +
kCaseSens +
")";
273 constraints.emplace_back(
"\"" + path +
"\"", new_constraint);
278 function +=
"(\"" + path +
"\", ";
289 return { CMacroFunction_Resolve::GetFuncName(),
290 CMacroFunction_CopyNameToCDSNote::GetFuncName(),
292 CMacroFunction_UpdatemRNAProduct::GetFuncName() };
306 x_LoadPanel(parent,
"EditStringQualFeature", args);
319 bool modified = (new_target !=
m_Target);
342 string rt_var =
"obj";
347 new_constraint +=
"(\"" + path +
"\", " +
kFind +
", " +
kCaseSens +
")";
348 constraints.emplace_back(
"\"" + path +
"\"", new_constraint);
351 if (
function.
empty()) {
353 function +=
"(\"" + path +
"\", ";
357 function +=
"(" + rt_var +
", ";
360 else if (path.find(
',') !=
NPOS) {
361 vector<string> tokens;
365 string rt_var =
"obj";
370 function +=
"(" + rt_var +
", ";
376 function += CMacroFunction_EditSubfield::GetFuncName();
382 function += CMacroFunction_EditSubfield::GetFuncName();
395 function +=
"(\"" + path +
"\", ";
405 return { CMacroFunction_Resolve::GetFuncName(),
406 CMacroFunction_EditSubfield::GetFuncName(),
408 CMacroFunction_GeneQual::GetFuncName(),
409 CMacroFunction_UpdatemRNAProduct::GetFuncName() };
439 bool modified = (new_target !=
m_Target);
447 string descr =
"Edit";
473 function +=
"(\"gene\", " + gene_field +
", ";
477 if (path.find(
',') !=
NPOS) {
478 vector<string> tokens;
482 string rt_var =
"obj";
490 function +=
"(\"" + path +
"\", ";
501 CMacroFunction_Resolve::GetFuncName(),
516 x_LoadPanel(parent,
"EditStringStrCommQual", args);
528 return descr + GetFindReplDescr(
m_ArgList);
534 string rt_var =
"obj";
540 function +=
"(\"" + rt_var +
".label.str\", ";
543 function +=
"(\"" + rt_var +
".data.str\", ";
558 string GetDescrForSeqType(
const string& apply_seq)
569 descr =
" where sequence type is " + descr;
583 vector<EMacroFieldType>
types
592 vector<string> fieldnames;
594 for (
auto& it :
types) {
597 fieldnames.insert(fieldnames.begin(),
"Any");
598 m_Panel->SetControlValues(
m_Args[index]->GetName(), fieldnames);
600 fieldnames[0] =
"No change";
601 m_Panel->SetControlValues(
m_Args[++index]->GetName(), fieldnames);
618 bool modified = (new_target !=
m_Target);
633 if (!descr.empty()) {
642 descr[0] =
toupper((
unsigned char)descr[0]);
648 if (
m_ArgList[to].GetValue() ==
"No change")
653 string to_value =
m_ArgList[to].GetValue();
654 if (to_value ==
" ") {
655 to_value =
"unknown/not-set";
657 if (!change_to.empty()) {
658 change_to +=
" and ";
660 if (change_to.find(
"change") ==
NPOS) {
661 change_to +=
"change ";
663 change_to +=
"to " + field +
" " + to_value;
668 if (
m_ArgList[to].GetValue() ==
"No change")
673 if (
m_ArgList[from].GetValue() !=
"Any") {
674 string from_value =
m_ArgList[from].GetValue();
675 if (from_value ==
" ") {
676 from_value =
"unknown/not-set";
678 if (change_from.find(
"where") !=
NPOS) {
679 change_from +=
" and ";
682 change_from +=
" where ";
684 change_from += field +
" is " + from_value;
692 string new_constraint;
695 new_constraint +=
"(\"inst.mol\", \"dna\")";
699 new_constraint +=
"(\"inst.mol\", \"rna\")";
701 if (!new_constraint.empty()) {
702 constraints.insert(constraints.begin(), { kEmptyStr, new_constraint });
711 if (!
function.
empty())
function.pop_back();
717 if (
m_ArgList[to].GetValue() ==
"No change")
725 if (
m_ArgList[from].GetValue() !=
"Any") {
730 if (field ==
"class") {
731 for (
auto& it : constraints) {
739 constraints.insert(constraints.begin(), { kEmptyStr, new_constraint });
virtual void x_AddParamPanel(wxWindow *parent)
virtual string GetFunction(TConstraints &constraints) const
virtual string GetMacroDescription() const
virtual vector< string > GetFunctionNames() const
CEditFeatQualTreeItemData()
virtual bool UpdateTarget()
void x_GetDescrChangeTo(const string &field, const CTempString &from, const CTempString &to, string &change_to) const
CEditMolinfoFieldsTreeItemData()
virtual void x_AddParamPanel(wxWindow *parent)
void x_GetDescrChangeFrom(const string &field, const CTempString &from, const CTempString &to, string &change_from) const
virtual vector< string > GetFunctionNames() const
virtual string GetMacroDescription() const
string x_GetFunctionFor(const string &field, const CTempString &from, const CTempString &to, TConstraints &constraints) const
virtual bool UpdateTarget()
virtual string GetFunction(TConstraints &constraints) const
virtual vector< string > GetFunctionNames() const
CEditProteinQualTreeItemData()
virtual string GetFunction(TConstraints &constraints) const
virtual void x_AddParamPanel(wxWindow *parent)
virtual string GetMacroDescription() const
virtual bool UpdateTarget()
CEditQualTreeItemData(const string &description, EMacroFieldType type)
virtual string GetMacroDescription() const
virtual void x_AddParamPanel(wxWindow *parent)
virtual string GetFunction(TConstraints &constraints) const
virtual vector< string > GetFunctionNames() const
virtual string GetVariables()
CEditRNAQualTreeItemData()
virtual void x_AddParamPanel(wxWindow *parent)
virtual bool UpdateTarget()
virtual string GetFunction(TConstraints &constraints) const
virtual vector< string > GetFunctionNames() const
virtual string GetMacroDescription() const
CEditStrCommQualTreeItemData()
virtual void x_AddParamPanel(wxWindow *parent)
virtual vector< string > GetFunctionNames() const
virtual string GetMacroDescription() const
virtual string GetFunction(TConstraints &constraints) const
EMacroFieldType m_FieldType
for actions such as appply/edit/etc.
vector< string > x_GetPubFunctions() const
static bool s_IsGeneQualifier(const string &field)
vector< string > GetFeatureTypes(bool for_removal=false, bool to_create=false, bool include_all=false) const
vector< string > GetRNATypes() const
string GetAsnPathToFieldName(const string &field, EMacroFieldType type, const string &target=kEmptyStr)
vector< string > GetncRNAClassTypes(bool include_any=true) const
static CMacroEditorContext & GetInstance()
vector< string > GetFeatQualifiers() const
string GetAsnMolinfoValue(const string &molinfo_field, const string &choice)
vector< string > GetFieldNames(EMacroFieldType type) const
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
void x_LoadPanel(wxWindow *parent, const string &panel_name, const TArgumentsVector &arguments)
unique_ptr< CMacroPanelLoader > m_Panel
constructed panel for specifying function arguments
vector< pair< string, string > > TConstraints
bool Empty(const CNcbiOstrstream &src)
static const struct type types[]
static const char * sm_Contain
static const char * sm_SeqAa
bool StringsAreEquivalent(const string &name1, const string &name2)
static const char * sm_Equal
static const char * sm_SeqNa
bool IsStructVoucherPart(const string &field)
static CTempString GetFuncName()
static CTempString GetFuncName()
bool IsSatelliteSubfield(const string &field)
bool IsMobileElementTSubfield(const string &field)
const char * kMobileElementTQual
static const char * sm_FunctionName
EditRelatedFeatureQual(feat_type, field_name, find_text, repl_text, location, case_sensitive,...
static const char * sm_Seq
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
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 string & ToLower(string &str)
Convert string to lower case – string& version.
vector< macro::SArgMetaData > TArgumentsVector
CTempString UpdateTargetForFeatures(const string &feature, const string &qualifier, bool for_removal=false)
string GetResolveFuncForDBLink(const string &field, string &rt_var, TConstraints &constraints, bool &found_constraint)
void OnStructCommFieldChanged(CArgumentList &list, CArgument &arg)
bool MultipleValuesAllowed(const string &field)
void UpdateConstraintsForFeatures(TConstraints &constraints, const string &feature)
string GetStructCommQualDescr(const CArgumentList &arg_list)
string GetResolveFuncForSVPart(const string &field, const string &rt_var, TConstraints &constraints, bool &found_constraint)
string GetResolveFuncForMultiValuedQual(const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint)
string GetResolveFuncForQual(const string &container, const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint=true)
Generates the definition of rt_var based on input "field".
string GetUpdatemRNADescription(const CArgument &arg)
void OnProteinNameSingle(CArgumentList &list, CArgument &arg)
CTempString UpdateTargetForMolinfo(const string &molinfo_type)
string GetResolveFuncForGeneQuals(const string &container, const string &field, const string &rt_var, TConstraints &constraints, bool remove_constraint=true)
CTempString UpdateTargetForRnas(const string &rna_type)
void WrapInQuotes(string &str)
string GetEditableFieldForPair(const string &field, const string &rt_var, bool is_feature)
string GetResolveFuncForStrCommQual(const string &field, const string &field_name, const string &rt_var, TConstraints &constraints)
void OnRnaTypeChanged(CArgumentList &list, CArgument &arg)
void UpdateConstraintsForRnas(TConstraints &constraints, const CArgumentList &arg_list)
void UpdateConstraintsForMisc(TConstraints &constraints, const string &fieldname, const string &target)
string GetResolveFuncForPubQual(const string &field, string &rt_var, TConstraints &constraints)
void AppendUpdatemRNAFnc(bool update_mrna, string &function)
const TArgumentsVector & GetOptionalArgs()
const TArgumentsVector & GetEditArgs()
const TArgumentsVector & GetEditMolinfoArgs()
const string kStrCommField
constexpr bool empty(list< Ts... >) noexcept
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)