44 #include <wx/listctrl.h>
45 #include <wx/msgdlg.h>
46 #include <wx/filedlg.h>
47 #include <wx/stattext.h>
50 #include "wx/imaglist.h"
113 wxWindowID
id,
const wxString& caption,
const wxPoint& pos,
const wxSize&
size,
long style ) :
114 m_Workbench (workbench)
120 m_Gen =
new objects::CCit_gen();
125 Create(parent,
id, caption, pos,
size, style);
136 SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
137 wxDialog::Create( parent,
id, caption, pos,
size, style );
142 GetSizer()->SetSizeHints(
this);
178 #define NCBI_AuthorCompareFields(Field,Obj1,Obj2) \
179 if (##Obj1.IsSet##Field()) { \
180 if (##Obj2.IsSet##Field()) { \
181 if (!NStr::Equal(##Obj1.Get##Field(), ##Obj2.Get##Field())) { \
184 } else if (!NStr::IsBlank(##Obj1.Get##Field())) { \
188 if (##Obj2.IsSet##Field() && !NStr::IsBlank(##Obj2.Get##Field())) { \
195 if (p1.IsSetLast()) {
196 if (p2.IsSetLast()) {
208 if (p1.IsSetFirst()) {
209 if (p2.IsSetFirst()) {
221 if (p1.IsSetInitials()) {
222 if (p2.IsSetInitials()) {
223 if (!
NStr::Equal(p1.GetInitials(), p2.GetInitials())) {
230 if (p2.IsSetInitials() && !
NStr::IsBlank(p2.GetInitials())) {
234 if (p1.IsSetSuffix()) {
235 if (p2.IsSetSuffix()) {
236 if (!
NStr::Equal(p1.GetSuffix(), p2.GetSuffix())) {
252 bool s_AffilSame (
const objects::CAffil& a1,
const objects::CAffil& a2)
254 if (a1.IsStr() && !a2.IsStr()) {
256 }
else if (!a1.IsStr() && a2.IsStr()) {
258 }
else if (a1.IsStr()) {
260 }
else if (a1.IsStd() && !a2.IsStd()) {
262 }
else if (!a1.IsStd() && a2.IsStd()) {
264 }
else if (a1.IsStd()) {
265 const objects::CAffil::TStd& af1 = a1.GetStd();
266 const objects::CAffil::TStd& af2 = a2.GetStd();
269 if (af1.IsSetAffil()) {
270 val1 = af1.GetAffil();
272 if (af2.IsSetAffil()) {
273 val2 = af2.GetAffil();
280 if (af1.IsSetDiv()) {
283 if (af2.IsSetDiv()) {
291 if (af1.IsSetCity()) {
292 val1 = af1.GetCity();
294 if (af2.IsSetCity()) {
295 val2 = af2.GetCity();
302 if (af1.IsSetSub()) {
305 if (af2.IsSetSub()) {
313 if (af1.IsSetCountry()) {
314 val1 = af1.GetCountry();
316 if (af2.IsSetCountry()) {
317 val2 = af2.GetCountry();
324 if (af1.IsSetStreet()) {
325 val1 = af1.GetStreet();
327 if (af2.IsSetStreet()) {
328 val2 = af2.GetStreet();
335 if (af1.IsSetEmail()) {
336 val1 = af1.GetEmail();
338 if (af2.IsSetEmail()) {
339 val2 = af2.GetEmail();
346 if (af1.IsSetFax()) {
349 if (af2.IsSetFax()) {
357 if (af1.IsSetPhone()) {
358 val1 = af1.GetPhone();
360 if (af2.IsSetPhone()) {
361 val2 = af2.GetPhone();
368 if (af1.IsSetPostal_code()) {
369 val1 = af1.GetPostal_code();
371 if (af2.IsSetPostal_code()) {
372 val2 = af2.GetPostal_code();
384 if (a1.IsSetName() && !a2.IsSetName()) {
386 }
else if (!a1.IsSetName() && a2.IsSetName()) {
388 }
else if (!a1.IsSetName()) {
390 }
else if (a1.GetName().IsStr() && !a2.GetName().IsStr()) {
392 }
else if (!a1.GetName().IsStr() && a2.GetName().IsStr()) {
394 }
else if (a1.GetName().IsStr()) {
395 return NStr::Equal(a1.GetName().GetStr(), a2.GetName().GetStr());
396 }
else if (a1.GetName().IsName() && !a2.GetName().IsName()) {
398 }
else if (!a1.GetName().IsName() && a2.GetName().IsName()) {
400 }
else if (a1.GetName().IsName()) {
401 return s_Name_stdsSame(a1.GetName().GetName(), a2.GetName().GetName());
410 if (list1.IsSetNames() && !list2.IsSetNames()) {
412 }
else if (!list1.IsSetNames() && list2.IsSetNames()) {
414 }
else if (!list1.IsSetNames()) {
416 }
else if (list1.GetNames().Which() != list2.GetNames().Which()) {
418 }
else if (list1.GetNames().IsStd()) {
419 objects::CAuth_list::C_Names::TStd::const_iterator it1 = list1.GetNames().GetStd().begin();
420 objects::CAuth_list::C_Names::TStd::const_iterator it2 = list2.GetNames().GetStd().begin();
421 while (it1 != list1.GetNames().GetStd().end() && it2 != list2.GetNames().GetStd().end()) {
428 if (it1 != list1.GetNames().GetStd().end() || it2 != list2.GetNames().GetStd().end()) {
432 }
else if (list1.GetNames().IsStr()) {
433 objects::CAuth_list::C_Names::TStr::const_iterator it1 = list1.GetNames().GetStr().begin();
434 objects::CAuth_list::C_Names::TStr::const_iterator it2 = list2.GetNames().GetStr().begin();
435 while (it1 != list1.GetNames().GetStr().end() && it2 != list2.GetNames().GetStr().end()) {
442 if (it1 != list1.GetNames().GetStr().end() || it2 != list2.GetNames().GetStr().end()) {
463 wxBoxSizer* itemBoxSizer2 =
new wxBoxSizer(wxVERTICAL);
464 itemDialog1->SetSizer(itemBoxSizer2);
467 itemBoxSizer2->Add(
m_Updatable, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
476 wxBoxSizer* itemBoxSizer6 =
new wxBoxSizer(wxHORIZONTAL);
477 itemBoxSizer2->Add(itemBoxSizer6, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
479 wxButton* itemButton7 =
new wxButton( itemDialog1,
ID_CLEAR_BTN,
_(
"Clear"), wxDefaultPosition, wxDefaultSize, 0 );
480 itemBoxSizer6->Add(itemButton7, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
482 wxBoxSizer* itemBoxSizer8 =
new wxBoxSizer(wxHORIZONTAL);
483 itemBoxSizer2->Add(itemBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
485 m_BackBtn =
new wxButton( itemDialog1,
ID_BUTTON15,
_(
"< Back"), wxDefaultPosition, wxDefaultSize, 0 );
487 itemBoxSizer8->Add(
m_BackBtn, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
489 m_NextBtn =
new wxButton( itemDialog1,
ID_BUTTON14,
_(
"Next >"), wxDefaultPosition, wxDefaultSize, 0 );
490 itemBoxSizer8->Add(
m_NextBtn, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
492 wxBoxSizer* itemBoxSizer11 =
new wxBoxSizer(wxHORIZONTAL);
493 itemBoxSizer2->Add(itemBoxSizer11, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
495 wxButton* itemButton12 =
new wxButton( itemDialog1,
ID_IMPORT_BTN,
_(
"Import Template"), wxDefaultPosition, wxDefaultSize, 0 );
496 itemBoxSizer11->Add(itemButton12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
498 wxButton* itemButton13 =
new wxButton( itemDialog1,
ID_EXPORT_BTN,
_(
"Export Template"), wxDefaultPosition, wxDefaultSize, 0 );
499 itemBoxSizer11->Add(itemButton13, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
512 wxPanel* contact_panel =
new wxPanel(
m_Book);
513 wxSizer* contact_sizer =
new wxBoxSizer(wxVERTICAL);
514 contact_panel->SetSizer(contact_sizer);
516 contact_sizer->Add(
m_ContactPanel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
517 wxSizer* alt_sizer =
new wxBoxSizer(wxHORIZONTAL);
518 contact_sizer->Add(alt_sizer, 0, wxALIGN_LEFT|wxALL, 5);
519 wxStaticText*
label =
new wxStaticText(contact_panel,
wxID_ANY,
_(
"Alternate Email Address"));
520 alt_sizer->Add(
label, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
524 m_Book->AddPage(contact_panel,
wxT(
"Contact"));
526 objects::CAuth_list& auth_list =
m_SubmitBlock->SetCit().SetAuthors();
535 objects::CAuth_list& man_auth_list =
m_Gen->SetAuthors();
613 bool is_blank =
false;
614 if (!auth.IsSetName())
618 else if (auth.GetName().IsStr())
625 else if (auth.GetName().IsName())
627 const objects::CName_std& name = auth.GetName().GetName();
630 && (!name.IsSetInitials() ||
NStr::IsBlank(name.GetInitials()))
644 objects::CContact_info& contact =
m_SubmitBlock->SetContact();
651 new_auth->Assign (contact.GetContact());
652 names.SetStd().push_back(new_auth);
661 contact.SetContact().Assign(*
names.GetStd().front());
674 }
else if (
names.IsStr()) {
675 ITERATE (objects::CAuth_list::TNames::TStr, it,
names.GetStr()) {
681 }
else if (
names.IsStd()) {
682 ITERATE (objects::CAuth_list::TNames::TStd, it,
names.GetStd()) {
693 const string kAllSubmitMissing =
"Sequence authors, affiliation, and contact information is missing!";
710 bool missing_authors =
true;
711 bool missing_affil =
true;
712 bool missing_contact =
true;
713 bool missing_email =
true;
714 bool missing_city =
true;
715 bool missing_country =
true;
717 if (block && block->IsSetCit()) {
718 if (block->GetCit().IsSetAuthors()) {
719 const objects::CAuth_list& auth_list = block->GetCit().GetAuthors();
720 if (auth_list.IsSetNames()
722 missing_authors =
false;
724 if (auth_list.IsSetAffil()) {
725 if (((auth_list.GetAffil().IsStr() && !
NStr::IsBlank(auth_list.GetAffil().GetStr()))
726 || (auth_list.GetAffil().IsStd() && auth_list.GetAffil().GetStd().IsSetAffil()
727 && !
NStr::IsBlank(auth_list.GetAffil().GetStd().GetAffil())))) {
728 missing_affil =
false;
730 if (auth_list.GetAffil().IsStd()) {
731 if (auth_list.GetAffil().GetStd().IsSetCity() && !
NStr::IsBlank(auth_list.GetAffil().GetStd().GetCity())) {
732 missing_city =
false;
734 if (auth_list.GetAffil().GetStd().IsSetCountry() && !
NStr::IsBlank(auth_list.GetAffil().GetStd().GetCountry())) {
735 missing_country =
false;
741 if (block && block->IsSetContact()) {
742 if (block->GetContact().IsSetContact()) {
743 missing_contact =
false;
745 if (block->GetContact().IsSetEmail()) {
746 missing_email =
false;
750 if (missing_authors && missing_affil && missing_contact && missing_email) {
752 }
else if (missing_authors) {
754 }
else if (missing_affil) {
756 }
else if (missing_contact) {
758 }
else if (missing_email) {
760 }
else if (missing_city) {
762 }
else if (missing_country) {
767 if (block->IsSetHup() && block->IsSetReldate()) {
769 CTime release_date = block->GetReldate().AsCTime();
771 err =
"Release date is in the past.";
773 }
catch (exception &) {
774 err =
"Release date is invalid";
821 if (
m_Book->GetPageCount() == 6) {
844 objects::CAuth_list& auth_list =
m_SubmitBlock->SetCit().SetAuthors();
850 auth_list.SetAffil(*affil);
852 auth_list.ResetAffil();
866 objects::CAuth_list::TNames&
names = block->SetCit().SetAuthors().SetNames();
868 names.SetStr().push_back(
" ");
870 if (!block->GetCit().GetAuthors().IsSetAffil()) {
871 block->SetCit().SetAuthors().SetAffil().SetStd().SetAffil(
" ");
873 block->SetContact().SetContact().SetAffil().Assign(block->GetCit().GetAuthors().GetAffil());
875 block->SetContact().SetContact().SetName().SetStr(
" ");
879 if (!block->GetCit().IsSetDate()) {
881 block->SetCit().SetDate(*submit_date);
911 m_Gen->SetTitle(title);
926 m_Gen->SetAuthors().SetAffil(*affil);
931 m_Gen->SetAuthors().ResetAffil();
935 m_Gen->SetCit(
"Unpublished");
938 if (!
m_Gen->IsSetDate()) {
940 m_Gen->SetDate(*submit_date);
952 bool missing_authors =
true;
953 bool missing_affil =
true;
954 bool missing_title =
true;
958 missing_title =
false;
960 if (
gen->IsSetAuthors()) {
961 const objects::CAuth_list& auth_list =
gen->GetAuthors();
962 if (auth_list.IsSetNames()
964 missing_authors =
false;
966 if (auth_list.IsSetAffil()
967 && ((auth_list.GetAffil().IsStr() && !
NStr::IsBlank(auth_list.GetAffil().GetStr()))
968 || (auth_list.GetAffil().IsStd() && auth_list.GetAffil().GetStd().IsSetAffil()
969 && !
NStr::IsBlank(auth_list.GetAffil().GetStd().GetAffil())))) {
970 missing_affil =
false;
975 if (missing_title && missing_authors && missing_affil) {
977 }
else if (missing_title) {
979 }
else if (missing_authors) {
981 }
else if (missing_affil) {
1047 if ( this->wxWindow::IsShown() )
1056 int curr =
m_Book->GetSelection();
1062 if (curr ==
m_Book->GetPageCount() - 1) {
1077 int curr =
m_Book->GetSelection();
1079 m_Book->SetSelection(curr - 1);
1090 int curr =
m_Book->GetSelection();
1091 if (curr < m_Book->GetPageCount() - 1) {
1092 m_Book->SetSelection(curr + 1);
1106 objects::CAuth_list& man_auth_list =
m_Gen->SetAuthors();
1122 objects::CAuth_list& man_auth_list =
m_Gen->SetAuthors();
1136 vector<string> format_ids;
1137 format_ids.push_back(
"file_loader_asn");
1138 fileManager->LoadFormats(format_ids);
1140 vector<CIRef<IOpenObjectsPanelClient> > loadManagers;
1144 dlg.SetSize(710, 480);
1149 if (dlg.ShowModal() == wxID_OK) {
1151 if (!object_loader) {
1152 wxMessageBox(
wxT(
"Failed to get object loader"),
wxT(
"Error"),
1153 wxOK | wxICON_ERROR);
1167 bool any_unrecognized =
false;
1168 bool any_change =
false;
1169 string alt_email =
"";
1171 const CObject& ptr = obj_it->GetObject();
1172 const objects::CSubmit_block* block =
dynamic_cast<const objects::CSubmit_block*
>(&ptr);
1180 const objects::CSeqdesc* desc =
dynamic_cast<const objects::CSeqdesc*
>(&ptr);
1182 if (desc->IsPub() && desc->GetPub().IsSetPub() && desc->GetPub().GetPub().IsSet()
1183 && desc->GetPub().GetPub().Get().size() == 1
1184 && desc->GetPub().GetPub().Get().front()->IsGen()) {
1188 m_Gen->Assign(desc->GetPub().GetPub().Get().front()->GetGen());
1194 any_unrecognized =
true;
1197 any_unrecognized =
true;
1201 if (any_unrecognized) {
1202 wxMessageBox(
wxT(
"Warning: Unrecognized objects in template file"),
wxT(
"Error"),
1203 wxOK | wxICON_ERROR);
1235 if (block && block->IsSetHup() && block->IsSetReldate()) {
1236 CTime release_date = block->GetReldate().AsCTime();
1238 wxMessageBox(
wxT(
"Release date is in the past."),
wxT(
"Error"),
1239 wxOK | wxICON_ERROR);
1257 wxString wxs(errors);
1258 wxMessageBox(
wxT(
"Cannot export invalid template: " + wxs),
wxT(
"Error"),
1259 wxOK | wxICON_ERROR);
1266 wxT(
"ASN.1 files (")+extensions +
wxT(
")|") + extensions +
wxT(
"|") +
1268 wxFD_SAVE|wxFD_OVERWRITE_PROMPT);
1270 if (asn_save_file.ShowModal() == wxID_OK)
1272 wxString path = asn_save_file.GetPath();
1273 wxString name = asn_save_file.GetFilename();
1280 wxMessageBox(
wxT(
"Please, select file name"),
wxT(
"Error"),
1281 wxOK | wxICON_ERROR,
this);
1285 if (name.Find(wxUniChar(
'.')) == wxNOT_FOUND)
1287 path +=
wxT(
".sqn");
1288 name +=
wxT(
".sqn");
1295 wxMessageBox(
wxT(
"Cannot open file ")+name,
wxT(
"Error"),
1296 wxOK | wxICON_ERROR,
this);
1310 pub->SetGen().Assign(*
gen);
1312 desc->SetPub().SetPub().Set().push_back(pub);
1322 desc->SetUser().Assign(*u);
1340 switch (
m_Book->GetSelection()) {
1361 m_Gen->ResetTitle();
1365 m_Gen->ResetAuthors();
EVT_CHECKBOX(ID_CADJUSTFEATURES_CHECKBOX, CAdjustFeaturesForGaps::OnKnownUnknownSelected) EVT_CHECKBOX(ID_CADJUSTFEATURES_CHECKBOX1
bool GUI_AsyncExecUnit(IExecuteUnit &exec_unit, const wxString &msg)
@Auth_list.hpp User-defined methods of the data storage class.
void SetAffil(CRef< objects::CAffil > affil)
virtual bool TransferDataToWindow()
virtual bool TransferDataFromWindow()
CRef< objects::CAffil > GetAffil()
void PopulateAuthors(objects::CAuth_list &auth_list)
virtual bool TransferDataToWindow()
virtual bool TransferDataFromWindow()
virtual void SetAuthors(const objects::CAuth_list &auth_list)
virtual void SetRegistryPath(const string &path)
static wxString GetDialogFilter(EFileType fileType)
IObjectLoader * GetObjectLoader()
void SetManagers(vector< CIRef< IOpenObjectsPanelClient > > &managers)
virtual bool TransferDataFromWindow()
virtual bool TransferDataToWindow()
void UnselectReleaseDateChoice()
Base class for all serializable objects.
static string GetCitGenProblems(CRef< objects::CCit_gen > gen)
wxCheckBox * m_AuthorsSame
CRef< objects::CCit_gen > x_CreateCitGen()
string GetAlternateEmailAddress()
CUnpublishedPanel * m_UnpublishedPanel
CAuthorAffiliationPanel * m_AffilPanel
CRef< objects::CSubmit_block > GetSubmitBlock()
void OnNextBtnClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON14
static string GetBlockProblems(CRef< objects::CSubmit_block > block)
bool Create(wxWindow *parent, wxWindowID id=10015, const wxString &caption=_("Submission Information"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(400, 300), long style=wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX|wxTAB_TRAVERSAL)
Creation.
void OnSeparateAuthorsClick(wxCommandEvent &event)
wxCheckBox * m_AffilsSame
CRef< objects::CSubmit_block > m_SubmitBlock
CRef< objects::CCit_gen > m_Gen
wxBoxSizer * m_SameAuthSizer
~CSubmitBlockDlg()
Destructor.
CRef< objects::CCit_gen > GetCitGen()
void OnCopySeqAuthToManAuthClick(wxCommandEvent &event)
CReleaseDatePanel * m_ReleaseDatePanel
void Init()
Initialises member variables.
wxIcon GetIconResource(const wxString &name)
Retrieves icon resources.
wxTextCtrl * m_AlternateEmail
void SetAlternateEmailAddress(string alt_email)
CAuthorNamesPanel * m_SequenceAuthorsPanel
void OnClearBtnClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CLEAR_BTN
CSubmitBlockDlg()
Constructors.
void OnBackBtnClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON15
wxButton * m_CopySeqAuthToManAuth
void OnExportBtnClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_EXPORT_BTN
void SetPageForError(string errors)
wxBitmap GetBitmapResource(const wxString &name)
Retrieves bitmap resources.
CAuthorNamesPanel * m_ManAuthorsPanel
void UnselectReleaseDateChoice()
void CreateControls()
Creates the controls and sizers.
CContactPanel * m_ContactPanel
void OnSubmitblockdlgPageChanged(wxNotebookEvent &event)
wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED event handler for ID_SUBMITBLOCKDLGLISTBOOK
static bool ShowToolTips()
Should we show tooltips?
void OnImportBtnClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_IMPORT_BTN
CRef< objects::CSubmit_block > x_CreateBlock()
void SetTitle(const string &title)
virtual bool PreExecute()=0
virtual bool PostExecute()=0
vector< SObject > TObjects
IWorkbench is the central interface in the application framework.
std::ofstream out("events_result.xml")
main entry point for tests
static const struct name_t names[]
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define MSerial_AsnText
I/O stream manipulators –.
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.
IO_PREFIX::ofstream CNcbiOfstream
Portable alias for ofstream.
static SIZE_TYPE FindNoCase(const CTempString str, const CTempString pattern, SIZE_TYPE start, SIZE_TYPE end, EOccurrence which=eFirst)
Find the pattern in the specified range of a string using a case insensitive search.
static bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
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.
@ eCurrent
Use current time. See also CCurrentTime.
static const char label[]
void SetAffil(TAffil &value)
Assign a value to Affil data member.
void ResetAffil(void)
Reset Affil data member.
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::SIZE size
bool s_AuthorListsSame(const objects::CAuth_list &list1, const objects::CAuth_list &list2)
const string kAffilMissing
const string kTitleMissing
const string kInvalidEmail
const string kAllCitGenMissing
const string kSequenceAuthorsMissing
bool s_Name_stdsSame(const objects::CName_std &p1, const objects::CName_std &p2)
const string kEmailMissing
bool s_AuthListEmpty(const objects::CAuth_list::TNames &names)
const string kManuscriptAuthorsMissing
const string kContactMissing
static bool s_NamesNotSet(const objects::CAuth_list::TNames &names)
const string kCityMissing
const string kAllSubmitMissing
bool s_AffilSame(const objects::CAffil &a1, const objects::CAffil &a2)
bool s_AuthorsSame(const objects::CAuthor &a1, const objects::CAuthor &a2)
bool s_AuthorNameBlank(const objects::CAuthor &auth)
const string kCountryMissing
#define ID_SUBMITBLOCKDLG_SAME_AUTHORS
#define ID_COPY_SEQ_AUTH_TO_MAN_AUTH
#define ID_SUBMITBLOCKDLGLISTBOOK
CRef< objects::CUser_object > MakeBankItSubmissionObject()
bool IsValidEmail(string email)
bool IsBankItSubmissionObject(const objects::CUser_object &user)
string GetDescAlternateEmailAddress(const objects::CSeqdesc &desc)
const string kSubmissionPreparationToolVersion
wxString GetAsnSqnExtensions()
void SetUserAlternateEmailAddress(objects::CUser_object &u, string alt_email)
wxString ToWxString(const string &s)
string ToAsciiStdString(const wxString &input)