NCBI C++ ToolKit
dll_register.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: dll_register.cpp 47479 2023-05-02 13:24:02Z ucko $
2  * =========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * =========================================================================
25  *
26  * Authors: Andrey Yazhuk, Igor Filippov, Jie Chen
27  *
28  * File Description:
29  * Defines "Sequence Editing" package for GBENCH.
30  */
31 
32 #include <ncbi_pch.hpp>
33 #include <corelib/ncbiapp.hpp>
47 
52 
55 
57 #include <gui/utils/url_utils.hpp>
63 #include <gui/objutils/utils.hpp>
69 
70 
75 
80 
86 #include <gui/utils/app_popup.hpp>
92 
96 
150 #include "test_dialog_view.hpp"
256 
261 
263 #include "indexer_app_mode.hpp"
264 
267 
272 
273 #include "gui_core_helper_impl.hpp"
274 
277 
281 
284 
285 #ifdef _DEBUG
287 #endif
288 
289 #include <wx/msgdlg.h>
290 #include <wx/statline.h>
291 #include <wx/clipbrd.h>
293 #include <wx/filedlg.h>
294 #include <wx/display.h>
295 #include <wx/evtloop.h>
296 #include <wx/uri.h>
297 #include <wx/utils.h>
298 
300 
301 ///////////////////////////////////////////////////////////////////////////////
302 /// Declare the Package Object
304  : public IGuiPackage
305  , public IUICommandContributor
306  , public IMenuContributor
308 {
309 public:
310  CSeqEditPackage();
311  virtual string GetName() const { return "Sequence Editing"; }
312  virtual void GetVersion(size_t& verMajor, size_t& verMinor, size_t& verPatch) const
313  {
314  verMajor = 1;
315  verMinor = 0;
316  verPatch = 0;
317  }
318  virtual bool Init();
319  virtual void Shut() {}
320 
321  // IUICommandContributor
322  virtual vector<CUICommand*> GetCommands();
323  virtual wxEvtHandler* GetEventHandler();
324 
325  // IPackageWorkbenchConnector
326  virtual void SetWorkbench(IWorkbench* wb);
327 
328 protected:
329  // IMenuContributor
330  virtual const SwxMenuItemRec* GetMenuDef() const;
331 
332  void x_UpdateValAuxFile(const string& fname) const;
333 
335 };
336 
337 static const char* sMacroLibraries[] = {
338  "<std>/etc/macro_scripts/list_of_macros.mql",
339  "<std>/etc/macro_scripts/autofix_gb.mql",
340  "<std>/etc/macro_scripts/autofix_tsa.mql",
341  "<std>/etc/macro_scripts/autofix_wgs.mql",
342  NULL
343 };
344 
346 {
347  m_Workbench = NULL;
348 }
349 
350 
352 {
353  // Declare you extension here
354 
355  // Examples:
356  //CExtensionDeclaration("view_manager_service::view_factory",
357  // new CTextViewFactory());
358 
359  //CExtensionDeclaration("ui_data_source_type",
360  // new CGenBankUIDataSourceType());
361  //CExtensionDeclaration ("file_format_loader_manager",
362  // new CFASTAFormatLoadManager());
363 
364  //CExtensionDeclaration("data_mining_tool", new CEntrezSearchTool());
365 
366  init_w_edit();
367 
368 // CExtensionDeclaration("ui_algo_tool_manager", new CAutodefToolManager());
369 
370  // Edit tools
371 // CExtensionDeclaration("ui_algo_tool_manager", new CEditingBtnsTool());
372 // CExtensionDeclaration("ui_algo_tool_manager", new CSrcEditTool());
373 
374 #ifdef _DEBUG
375  CExtensionDeclaration("ui_algo_tool_manager", new CDebugMacroTool());
376 #endif
377 
378  if (RunningInsideNCBI())
379  {
380  CExtensionDeclaration("view_manager_service::view_factory", new CSequinDesktopViewFactory());
381  }
382 
383  CExtensionDeclaration ("file_format_loader_manager", new CQualTableLoadManager());
384 
385 // IFileLoadPanelClient
387 
388  vector<string> filenames;
389  auto i = 0;
390  while (sMacroLibraries[i]) {
391  wxString path = CSysPath::ResolvePathExisting(wxString::FromUTF8(sMacroLibraries[i]));
392  if (!path.IsEmpty()) {
393  filenames.push_back(string(path.ToUTF8()));
394  }
395  else {
396  NcbiMessageBox(string(sMacroLibraries[i]) + " was not found");
397  }
398  ++i;
399  }
400 
401  if (!filenames.empty()) {
402  macro::CMacroLib& macroLib = macro::CMacroLib::GetInstance();
403  macroLib.ClearLibrary();
404  bool status = macroLib.AppendToLibrary(filenames);
405  if (!status) {
406  NcbiMessageBox(macroLib.GetLastError());
407  }
408 
409  wxString path = CSysPath::ResolvePathExisting(wxT("<std>/etc/synonyms.txt"));
410  if (!path.IsEmpty()) {
411  macroLib.StoreSynonymList(ToStdString(path));
412  }
413  }
414 
415  if (!RunningInsideNCBI()) {
416  x_UpdateValAuxFile("lat_lon_country.txt");
417  x_UpdateValAuxFile("lat_lon_water.txt");
418  }
419 
420  // needed to pick up the latest EC number lists
421  CNcbiApplication::Instance()->SetEnvironment("NCBI_ECNUM_USE_DATA_DIR_FIRST", "TRUE");
422 
423  //! Please don't register commands twice. Either you register them directly
424  //! with x_RegisterCommands(), or you use the interface IUICommandContributor.
425  //! Please never do both!
426  //!
427  //x_RegisterCommands();
428 
431  return true;
432 }
433 
435 {
436  m_Workbench = wb;
437 }
438 
439 static bool s_UpdateLocalFile(const string& url, const string& file_name)
440 {
441  CHttpResponse response = g_HttpGet(CUrl(url));
442  if (response.GetStatusCode() == 200 && response.CanGetContentStream()) {
443  CNcbiIstream& istr = response.ContentStream();
444  if (istr.good()) {
445  CNcbiOfstream ostr(file_name.c_str());
446  NcbiStreamCopy(ostr, istr);
447  LOG_POST(Info << "Downloaded " + file_name + " to be used by the validator");
448  return true;
449  }
450  }
451  return false;
452 }
453 
454 void CSeqEditPackage::x_UpdateValAuxFile(const string& fname) const
455 {
456  const string url = "https://anonsvn.ncbi.nlm.nih.gov/v1/trunk/c%2B%2B/src/objects/seqfeat/" + fname;
457 
458  const wxChar* kTempFilesDir = wxT("<home>/TempFiles");
459  wxString dir_path = CSysPath::ResolvePath(kTempFilesDir);
460  {
461  string path(dir_path.ToUTF8());
462  CNcbiApplication::Instance()->SetEnvironment("NCBI_LAT_LON_DATA_PATH", path);
463  }
464 
465  wxFileName wxfname;
466  wxfname.SetPath(dir_path);
467  wxfname.SetFullName(fname);
468  string filePath(wxfname.GetFullPath().ToUTF8());
469 
470  if (!wxfname.FileExists()) {
471  if (!wxFileName::DirExists(dir_path) && !wxFileName::Mkdir(dir_path)) {
472  LOG_POST(Error << "Failed to create directory: '" << dir_path << "'");
473  return;
474  }
475 
476  if (!s_UpdateLocalFile(url, filePath)) {
477  LOG_POST(Error << "Failed to download " + fname);
478  }
479  }
480  else {
481  try {
482  Uint8 remote_fsize = CUrlUtils::GetRemoteFileSize(url);
483  Uint8 existing_fsize = wxfname.GetSize().ToULong();
484  long diff = (long)abs((int)(existing_fsize - remote_fsize));
485 
486 #ifdef NCBI_OS_MSWIN
487 
488  CNcbiIfstream istr(filePath.c_str());
489  istr.unsetf(ios::skipws);
490  long count_lines = count(istream_iterator<char>(istr), istream_iterator<char>(), '\n');
491 
492  if (diff > 0 && count_lines == diff) {
493  // they are the same, no need to update
494  }
495  else {
496  s_UpdateLocalFile(url, filePath);
497  }
498 #else
499  if (diff > 0) {
500  s_UpdateLocalFile(url, filePath);
501  }
502 #endif
503  }
504  catch (const CException& e) {
505  LOG_POST(Error << "Failed to update " + fname + ": " + e.GetMsg());
506  }
507  catch (const exception& e) {
508  LOG_POST(Error << "Failed to update " + fname + ": " + e.what());
509  }
510  }
511 }
512 
513 ///////////////////////////////////////////////////////////////////////////////
514 /// Declare Package Entry Point
515 extern "C" {
517  {
518  return new CSeqEditPackage();
519  }
520 }
521 
522 
523 class CSequenceEditingEventHandler : public wxEvtHandler, public CEventHandler
524 {
527 
528 public:
530  void IsObjectSelected(wxUpdateUIEvent& event);
531  void IsLocationSelected(wxUpdateUIEvent& event);
532  bool TestHupIdEnabled();
533  void IsHupIdEnabled(wxUpdateUIEvent& event);
534  void ItemAction(wxCommandEvent& event, CRef <CItem> item, const string& title);
536  void ShowAfter(wxWindow* dlg);
537 
538  // methods
539  void RemoveDescriptors(wxCommandEvent& evt);
540  void RemoveFeatures(wxCommandEvent& evt);
541  void RemoveUnindexedFeatures(wxCommandEvent& event);
542  void ApplyIndexerComments(wxCommandEvent& evt);
543  void RemoveSeqAnnotIds( wxCommandEvent& event );
544  void RemoveBankitComment( wxCommandEvent& event );
545  void RemoveDuplicateStructuredComments( wxCommandEvent& event );
546  void RemoveSequencesFromAlignments( wxCommandEvent& event );
547  void RemoveSequences( wxCommandEvent& event );
548  void RemoveSet( wxCommandEvent& event );
549  void RemoveSetsFromSet( wxCommandEvent& event );
550  void RevCompSequences( wxCommandEvent& event );
551  void BioseqFeatsRevComp( wxCommandEvent& event );
552  void BioseqOnlyRevComp( wxCommandEvent& event );
553  void UnculTaxTool( wxCommandEvent& event );
554  void MergeBiosources(wxCommandEvent& event);
555  void EditSequence( wxCommandEvent& event );
556  void AlignmentAssistant( wxCommandEvent& event );
557  void RemoveSeqAnnotAlign( wxCommandEvent& event );
558  void RemoveSeqAnnotGraph( wxCommandEvent& event );
559  void RemoveGenomeProjectsDB( wxCommandEvent& event );
560  void RemoveEmptyGenomeProjectsDB( wxCommandEvent& event );
561  void TaxFixCleanup( wxCommandEvent& event );
562  void SpecificHostCleanup( wxCommandEvent& event );
563  void FixNonReciprocalLinks( wxCommandEvent& event );
564  void DisableStrainForwarding( wxCommandEvent& event );
565  void EnableStrainForwarding(wxCommandEvent& event);
566  void EditPubs( wxCommandEvent& event );
567  void GlobalPubmedIdLookup(wxCommandEvent& event);
568  void FixCapitalizationAll( wxCommandEvent& event );
569  void FixCapitalizationAuthors( wxCommandEvent& event );
570  void FixCapitalizationTitles( wxCommandEvent& event );
571  void FixCapitalizationAffiliation( wxCommandEvent& event );
572  void FixCapitalizationCountry( wxCommandEvent& event );
573  void RemoveUnpublishedPublications( wxCommandEvent& event );
574  void RemoveInPressPublications( wxCommandEvent& event );
575  void RemovePublishedPublications( wxCommandEvent& event );
576  void RemoveCollidingPublications( wxCommandEvent& event );
577  void RemoveAllPublications( wxCommandEvent& event );
578  void RemoveAuthorConsortiums( wxCommandEvent& event );
579  void ReverseAuthorNames( wxCommandEvent& event );
580  void StripAuthorSuffixes( wxCommandEvent& event );
581  void TruncateAuthorMiddleInitials( wxCommandEvent& event );
582  void ConvertAuthorToConstortiumWhereLastName( wxCommandEvent& event );
583  void ConvertAuthorToConsortiumAll( wxCommandEvent& event );
584  void AddCitSubForUpdate( wxCommandEvent& event );
585  void FixUsaAndStates( wxCommandEvent& event );
586  void RetranslateCDS( wxCommandEvent& event );
587  void ResynchronizePartials( wxCommandEvent& event );
588  void AddTranslExcept( wxCommandEvent& event );
589  void RemoveAllStructuredComments( wxCommandEvent& event );
590  void RemoveEmptyStructuredComments( wxCommandEvent& event );
591  void ModifyStructuredComment( wxCommandEvent& event );
592  void SetGlobalRefGeneStatus( wxCommandEvent& event );
593  void ClearKeywords( wxCommandEvent& event );
594  void ClearNomenclature(wxCommandEvent& event);
595  void RemoveStructuredCommentKeyword( wxCommandEvent& event );
596  void AddStructuredCommentKeyword( wxCommandEvent& event );
597  void AddGenomeAssemblyStructuredComment( wxCommandEvent& event );
598  void AddAssemblyStructuredComment(wxCommandEvent& event);
599  void ReorderStructuredComment( wxCommandEvent& event );
600  void ConvertComment( wxCommandEvent& event );
601  void ParseComment( wxCommandEvent& event );
602  void IllegalQualsToNote( wxCommandEvent& event);
603  void RmIllegalQuals( wxCommandEvent& event);
604  void WrongQualsToNote( wxCommandEvent& event);
605  void ConvertBadInference(wxCommandEvent& event);
606  void RmWrongQuals( wxCommandEvent& event);
607  void LowercaseQuals( wxCommandEvent& event );
608  void AssignFeatureIds( wxCommandEvent& event );
609  void ClearFeatureIds( wxCommandEvent& event );
610  void ReassignFeatureIds( wxCommandEvent& event );
611  void UniqifyFeatureIds( wxCommandEvent& event );
612  void TrimJunkInPrimerSeqs( wxCommandEvent& event );
613  void FixiInPrimerSeqs( wxCommandEvent& event );
614 // J. Chen begin
615  void RemoveCddFeatDbxref(wxCommandEvent& event );
616  void PrefixAuthWithTax(wxCommandEvent& event );
617  void FocusSet( wxCommandEvent& event );
618  void FocusClear( wxCommandEvent& event );
619  void SetTransgSrcDesc( wxCommandEvent& event );
620  void SplitDblinkQuals(wxCommandEvent& evt);
621 // J. Chen end
622  void FixOrgModInstitution( wxCommandEvent& event );
623  void FixStructuredVouchers( wxCommandEvent& event );
624  void SwapPrimerSeqName( wxCommandEvent& event );
625  void MergePrimerSets( wxCommandEvent& event );
626  void SplitPrimerSets( wxCommandEvent& event );
627  void AppendModToOrg( wxCommandEvent& event );
628  void ParseCollectionDateMonthFirst( wxCommandEvent& event );
629  void ParseCollectionDateDayFirst( wxCommandEvent& event );
630  void CountryFixupCap( wxCommandEvent& event );
631  void CountryFixupNoCap( wxCommandEvent& event );
632  void VectorTrim( wxCommandEvent& event );
633  void SelectTarget( wxCommandEvent& event );
634  void SelectFeature( wxCommandEvent& event );
635  void AddCDS( wxCommandEvent& event );
636  void AddRNA( wxCommandEvent& event );
637  void AddOtherFeature( wxCommandEvent& event );
638  void AddFeatureBetween( wxCommandEvent& event );
639  void Validate( wxCommandEvent& event );
640  void SortUniqueCount( wxCommandEvent& event );
641  void SortUniqueCountTree(wxCommandEvent& event);
642  void Discrepancy(wxCommandEvent& event);
643  void Oncaller(wxCommandEvent& event);
644  void Submitter(wxCommandEvent& event);
645  void Mega(wxCommandEvent& event);
646  void DiscrepancyList(wxCommandEvent& event);
647  void RemoveAllFeatures(wxCommandEvent& event);
648  void RemoveDupFeats( wxCommandEvent& evt );
649  void RemoveDupFeatsWithOptions( wxCommandEvent& evt );
650  void ResolveIntersectingFeats( wxCommandEvent& evt );
651  void AddSequences ( wxCommandEvent& event );
652  void ApplyEditConvertRemove ( wxCommandEvent& event );
653  void ParseText ( wxCommandEvent& event );
654  void RemoveTextInsideStr( wxCommandEvent& event );
655  void ConvertFeatures ( wxCommandEvent& event );
656  void CdsToMatPeptide( wxCommandEvent& event );
657  void ConvertCdsToMiscFeat( wxCommandEvent& evt );
658  void ConvertCdsWithGapsToMiscFeat( wxCommandEvent& evt );
659  void ConvertCdsWithInternalStopToMiscFeat( wxCommandEvent& evt );
660  void ConvertCdsWithInternalStopToMiscFeatViral( wxCommandEvent& evt );
661  void ConvertCdsWithInternalStopToMiscFeatUnverified( wxCommandEvent& evt );
662  void TableReader ( wxCommandEvent& event );
663  void TableReaderClipboard ( wxCommandEvent& event );
664  void BulkEdit ( wxCommandEvent& event );
665  void MolInfoEdit ( wxCommandEvent& event );
666  void ExportTable ( wxCommandEvent& event );
667  void Autodef ( wxCommandEvent& event );
668  void PT_Cleanup ( wxCommandEvent& event );
669  void ParseStrainSerotypeFromNames ( wxCommandEvent& event);
670  void AddStrainSerotypeToNames ( wxCommandEvent& event);
671  void FixupOrganismNames ( wxCommandEvent& event);
672  void SplitQualifiersAtCommas ( wxCommandEvent& event);
673  void SplitStructuredCollections ( wxCommandEvent& event);
674  void TrimOrganismNames ( wxCommandEvent& event);
675  void RemoveUnverified( wxCommandEvent& event );
676  void RemoveUnreviewed(wxCommandEvent& event);
677  void AddNamedrRNA ( wxCommandEvent& event);
678  void AddControlRegion ( wxCommandEvent& event);
679  void AddMicrosatellite ( wxCommandEvent& event);
680  void CreateFeature ( wxCommandEvent& event);
681  void CreateRegulatory ( wxCommandEvent& evt);
682  void CreateDescriptor ( wxCommandEvent& event);
683  void CreateSpecificStructuredComment( wxCommandEvent& event );
684  void DeleteSpecificStructuredComment( wxCommandEvent& evt );
685  void EditFeature ( wxCommandEvent& evt);
686  void ExtendPartialsConstr( wxCommandEvent& evt);
687  void ExtendPartialsAll( wxCommandEvent& evt);
688  void AddDefLine ( wxCommandEvent& evt);
689  void PrefixDefLines ( wxCommandEvent& event);
690  void EditingButtons ( wxCommandEvent& event);
691  void MakeBadSpecificHostTable ( wxCommandEvent& event);
692  void CorrectRNAStrand ( wxCommandEvent& event);
693  void ApplyRNA_ITS ( wxCommandEvent& event);
694  void TrimNsRich( wxCommandEvent& event );
695  void TrimNsTerminal( wxCommandEvent& event );
696  void AddFluComments( wxCommandEvent& event );
697  void LabelRna( wxCommandEvent& event );
698  void RemProtTitles( wxCommandEvent& event );
699  void RemAllProtTitles( wxCommandEvent& event );
700  void BulkCdsEdit ( wxCommandEvent& event );
701  void BulkGeneEdit ( wxCommandEvent& event );
702  void BulkRnaEdit ( wxCommandEvent& event );
703  void BulkMiscFeatEdit(wxCommandEvent& event);
704  void CorrectGenes ( wxCommandEvent& event );
705  void SegregateSets ( wxCommandEvent& event );
706  void SequesterSets ( wxCommandEvent& event );
707  void DescriptorPropagateDown( wxCommandEvent& event );
708  void WithdrawSequences ( wxCommandEvent& event );
709  void AddSet ( wxCommandEvent& event );
710  void PropagateDBLink ( wxCommandEvent& event );
711  void ConvertSetType ( wxCommandEvent& event );
712  void ListMacroButtonNames ( wxCommandEvent& event );
713  void TestDialogView( wxCommandEvent& event );
714  void TestFormView( wxCommandEvent& event );
715  void PrepareSeqSubmit(wxCommandEvent& event);
717  void ChangeToGenomicDna();
719  void SaveSubmissionFile(wxCommandEvent& event);
720  void SaveASN1File(wxCommandEvent& event);
721  void MacroEditor( wxCommandEvent& event );
722  void AdjustForConsensusSpliceSites( wxCommandEvent& event );
723  void AdjustCDSForIntrons(wxCommandEvent& event);
724  void AdjustrRNAForIntrons(wxCommandEvent& event);
725  void AdjusttRNAForIntrons(wxCommandEvent& event);
726  void AdjustmRNAForIntrons(wxCommandEvent& event);
727  void CombineSelectedGenesIntoPseudogenes( wxCommandEvent& evt );
728  void GeneFromOtherFeat( wxCommandEvent& evt );
729  void CdsFromGeneMrnaExon( wxCommandEvent& evt );
730  void mRNAFromGeneCdsExon( wxCommandEvent& evt );
731  void tRNAFromGene( wxCommandEvent& evt );
732  void ExonFromCds( wxCommandEvent& evt );
733  void ExonFromMRNA( wxCommandEvent& evt );
734  void ExonFromTRNA( wxCommandEvent& evt );
735  void LatLonTool ( wxCommandEvent& event );
736  void CDSGeneRangeErrorSuppress( wxCommandEvent& event );
737  void CDSGeneRangeErrorRestore( wxCommandEvent& event );
738  void SuppressGenes(wxCommandEvent& evt);
739  void RemoveSegGaps( wxCommandEvent& event );
740  void RawSeqToDeltaByNs( wxCommandEvent& event );
741  void RawSeqToDeltaByLoc( wxCommandEvent& event );
742  void RawSeqToDeltaByAssemblyGapFeatures(wxCommandEvent& event);
743  void SplitCDSwithTooManyXs( wxCommandEvent& event );
744  void AdjustFeaturesForGaps( wxCommandEvent& event );
745  void DeltaSeqToRaw( wxCommandEvent& event );
746  void ExpandGaps(wxCommandEvent& event);
747  void ConvertSelectedGapsToKnown(wxCommandEvent& event);
748  void ConvertSelectedGapsToUnknown(wxCommandEvent& event);
749  void ConvertGapsBySize(wxCommandEvent& event);
750  void EditSelectedGaps(wxCommandEvent& event);
751  void CreateGapFeats(wxCommandEvent& event);
752  void AddLinkageToGaps(wxCommandEvent& event);
753  void ConvertFeatsToGaps(wxCommandEvent& event);
754  void CombineAdjacentGaps(wxCommandEvent& event);
755  void RmCultureNotes( wxCommandEvent& event );
756  void Update_Replaced_EC_numbers( wxCommandEvent& event );
757  void UpdateSingleSequence(wxCommandEvent& event);
758  void UpdateMultipleSequences(wxCommandEvent& event);
759  void ImportFeatureTable( wxCommandEvent& event );
760  void ImportFeatureTableClipboard( wxCommandEvent& event );
761  void ImportGFF3(wxCommandEvent& event);
762  void LoadSecondaryAccessions(wxCommandEvent& event);
763  void LoadSecondaryAccessionsHistoryTakeover(wxCommandEvent& event);
764  void AddGlobalCodeBreak( wxCommandEvent& event );
765  void GroupExplode( wxCommandEvent& event);
766  void FindASN1( wxCommandEvent& evt );
767  void FuseFeatures( wxCommandEvent& evt );
768  void FuseJoinsInLocs(wxCommandEvent& event);
769  void ExplodeRNAFeats(wxCommandEvent& event);
770  void ApplyStructuredCommentField( wxCommandEvent& evt );
771  void EditStructuredCommentPrefixSuffix( wxCommandEvent& evt );
772  void RemoveDbXrefsCDS( wxCommandEvent& evt );
773  void RemoveDbXrefsGenes( wxCommandEvent& evt );
774  void RemoveDbXrefsRNA( wxCommandEvent& evt );
775  void RemoveDbXrefsAllFeats( wxCommandEvent& evt );
776  void RemoveDbXrefsBioSource( wxCommandEvent& evt );
777  void RemoveDbXrefsBioSourceAndFeats( wxCommandEvent& evt );
778  void RemoveTaxonFeats( wxCommandEvent& event);
779  void RemoveTaxonFeatsAndBioSource( wxCommandEvent& event);
780  void AddKeywordGDS( wxCommandEvent& event );
781  void AddKeywordTPA_inferential( wxCommandEvent& event );
782  void AddKeywordTPA_experimental( wxCommandEvent& event );
783  void AddKeywordTPA_assembly( wxCommandEvent& event );
784  void AddKeywordWithConstraint( wxCommandEvent& event );
785  void EditSeqId( wxCommandEvent& event );
786  void RemoveLocalSeqIdsFromNuc(wxCommandEvent& event);
787  void RemoveLocalSeqIdsFromProt(wxCommandEvent& event);
788  void RemoveLocalSeqIdsFromAll(wxCommandEvent& event);
789  void RemoveGiSeqIdsFromAll(wxCommandEvent& event);
790  void RemoveGenbankSeqIdsFromProt(wxCommandEvent& event);
791  void RemoveGenbankSeqIdsFromAll(wxCommandEvent& event);
792  void RemoveSeqIdNamesFromProtFeats(wxCommandEvent& event);
793  void ConvertAccessionToLocalIdsAll(wxCommandEvent& event);
794  void ConvertAccessionToLocalIdsNuc(wxCommandEvent& event);
795  void ConvertAccessionToLocalIdsProt(wxCommandEvent& event);
796  void ConvertAccessionToLocalIdsName(wxCommandEvent& event);
797  void LocalToGeneralId(wxCommandEvent& event);
798  void GeneralToLocalId(wxCommandEvent& event);
799  void RemoveGeneralId( wxCommandEvent& event );
800  void RemoveUnnecessaryExceptions(wxCommandEvent& event);
801  void EditHistory( wxCommandEvent& event );
802  void ConvertToDelayedGenProdSetQuals( wxCommandEvent& event);
803  void ConvertRptUnitRangeToLoc( wxCommandEvent& event);
804  void ReorderSeqById( wxCommandEvent& event);
805  void LinkmRNACDS( wxCommandEvent& event );
806  void JustRemoveProteins( wxCommandEvent& event );
807  void RemoveProteinsAndRenormalizeNucProtSets( wxCommandEvent& event );
808  void RemoveOrphanedProteins( wxCommandEvent& event );
809  void GeneFeatFromXrefs( wxCommandEvent& event );
810  void GeneXrefsFromFeats( wxCommandEvent& event );
811  void RemoveAllGeneXrefs( wxCommandEvent& event );
812  void RemoveUnnecessaryGeneXrefs( wxCommandEvent& event );
813  void RemoveNonsuppressingGeneXrefs( wxCommandEvent& event );
814  void RemoveOrphanLocusGeneXrefs( wxCommandEvent& event );
815  void RemoveOrphanLocus_tagGeneXrefs( wxCommandEvent& event );
816  void RemoveGeneXrefs( wxCommandEvent& event );
817  void ExtendCDS( wxCommandEvent& event );
818  void TruncateCDS( wxCommandEvent& event );
819  void ExtendCDSToStop( wxCommandEvent& event );
820  void RecomputeIntervalsAndUpdateGenes(wxCommandEvent& event);
821  void RecomputeIntervals(wxCommandEvent& event);
822  void FixProductNamesDefault( wxCommandEvent& event );
823  void FixProductNamesOptions( wxCommandEvent& event );
824  void BulkApplyGenCode( wxCommandEvent& event );
825  void EditSeqEndsWithAlign( wxCommandEvent& event );
826  void EditSequenceEnds( wxCommandEvent& event );
827  void UpdateAlign( wxCommandEvent& event );
828  void CreateProteinId( wxCommandEvent& event );
829  void CreateLocusTagGene( wxCommandEvent& event );
830  void NormalizeGeneQuals(wxCommandEvent& event);
831  void GenusSpeciesFixup( wxCommandEvent& event );
832  void CountryConflict( wxCommandEvent& event );
833  void AddSecondary( wxCommandEvent& event );
834  void PackageFeaturesOnParts( wxCommandEvent& event );
835  void ShowFeatureTable ( wxCommandEvent& event );
836  void SaveDescriptors( wxCommandEvent& event );
837  void CreateSeqHistForTpaDetailed( wxCommandEvent& event );
838  void CreateSeqHistForTpa( wxCommandEvent& event );
839  void RemoveSeqHistAssembly( wxCommandEvent& event );
840  void CompareWithBiosample( wxCommandEvent& event );
841  void CompareWithBiosampleFirstOnly( wxCommandEvent& event );
842  void BarcodeTool( wxCommandEvent& event );
843  void ApplyFBOL(wxCommandEvent& event);
844  void RestoreLocalFile ( wxCommandEvent& event );
845  void FarPointerSeq( wxCommandEvent& event );
846  void ConvertBadCdsAndRnaToMiscFeat(wxCommandEvent& event);
847  void EditCdsFrame(wxCommandEvent& event);
848  void RestoreRNAediting(wxCommandEvent& event);
849  void ViewSortedProteins(wxCommandEvent& event);
850  void ConsolidateLikeModsWithSemicolon(wxCommandEvent& event);
851  void ConsolidateLikeModsWithoutSemicolon(wxCommandEvent& event);
852  void ConvertSecondProtNameToDesc(wxCommandEvent& event);
853  void ConvertDescToSecondProtName(wxCommandEvent& event);
854  void ConvertDescToFeatComment(wxCommandEvent& event);
855  void ConvertDescToFeatSource(wxCommandEvent& event);
856  void ConvertDescToFeatPub(wxCommandEvent& event);
857  void ConvertDescToFeatPubConstraint(wxCommandEvent& event);
858  void ConvertFeatToDescComment(wxCommandEvent& event);
859  void ConvertFeatToDescSource(wxCommandEvent& event);
860  void ConvertFeatToDescPub(wxCommandEvent& event);
861  void Duplicate(wxCommandEvent& event);
862  void ExportStructuredCommentsTable(wxCommandEvent& evt);
863  void LoadStructComments(wxCommandEvent& event);
864  void CorrectIntervalOrder( wxCommandEvent& event );
865  void SuspectProductRulesEditor(wxCommandEvent& event);
866  void CheckForMixedStrands(wxCommandEvent& event);
867  void EnableHupId(wxCommandEvent& event);
868  void IndexerTypeSelection(wxCommandEvent& event);
869  void FixForTransSplicing(wxCommandEvent& evt);
870  void RemoveDuplicateGoTerms(wxCommandEvent& evt);
871  void Help(wxCommandEvent& evt);
872  void UpdateTargetedLocusName(wxCommandEvent& evt);
873 
874 protected:
875  void x_OnSelectionEvent(CEvent* event);
876 
877 private:
880  wxString m_WorkDir;
886  vector<CRef<CSeq_loc> > m_CachedSelectedLocations;
888  bool m_IsAa;
889  bool m_IsSeq;
891  vector<CRef<CSeq_loc> > &x_GetSelectedLocations();
895  void SaveSettings(const string &regpath, wxWindow *dlg) const;
896  void LoadSettings(const string &regpath, wxWindow *dlg);
898 };
899 
901 {
903 }
904 
906 {
909  m_Workbench = wb;
910  m_attached = false;
911  m_disable_hup_check = false;
912  m_disable_id_check = false;
913  wxWindow* main_window = NULL;
914  CWorkbench* wb_frame = dynamic_cast<CWorkbench*>(m_Workbench);
915  if (wb_frame)
916  main_window = wb_frame->GetMainWindow();
917  CEditingBtnsPanel::GetInstance(main_window, m_Workbench, true);
918 }
919 
921 {
922  if (m_Workbench && m_attached)
923  {
925  if (service)
926  {
927  service->RemoveListener(this);
928  m_attached = false;
929  }
930  }
931 }
932 
934 {
935  m_SelObjects.clear();
937  if (service) {
938  service->GetActiveObjects(m_SelObjects);
939  if (m_SelObjects.empty())
940  {
942  }
944  }
945 }
946 
948 {
950  m_WorkDir.Clear();
953  if (!wb) return;
954  if (!m_attached)
955  {
956  m_SelObjects.clear();
958  if (service)
959  {
960  service->AddListener(this);
961  service->GetActiveObjects(m_SelObjects);
962  if (m_SelObjects.empty())
963  {
965  }
967  m_attached = true;
968  }
969  }
970 
972  if (objects.empty()) return;
974  const CSeq_submit* sub = dynamic_cast<const CSeq_submit*>((*it).object.GetPointer());
975  if (sub) {
976  m_SeqSubmit.Reset(sub);
977  }
978  if (!m_TopSeqEntry && it->object && it->scope) {
980  if (seh) {
981  m_TopSeqEntry = seh;
982  if (m_SeqSubmit) {
983  break;
984  }
985  }
986  }
987  }
988  if (!m_TopSeqEntry) return;
990  if (srv)
991  {
992  CRef<CGBWorkspace> ws = srv->GetGBWorkspace();
993  if (!ws) return;
994 
995  CGBDocument* doc = dynamic_cast<CGBDocument*>(ws->GetProjectFromScope(m_TopSeqEntry.GetScope()));
996  if (doc) {
998  m_WorkDir = doc->GetWorkDir();
999  }
1000  }
1001 
1002 }
1003 
1005 {
1007 }
1008 
1009 
1011 {
1012  m_CachedSelectedLocations.clear();
1013  m_IsSeq = false;
1014 
1015  if (!m_Workbench) {
1016  return;
1017  }
1018 
1020  if (objects.empty()) return;
1021  size_t count = 0;
1023  const CObject* ptr = it->object.GetPointer();
1024 
1025  const CSeq_feat* seqfeat = dynamic_cast<const CSeq_feat*>(ptr);
1026  const CSeq_loc* seqloc = dynamic_cast<const CSeq_loc*>(ptr);
1027  const CBioseq* bioseq = dynamic_cast<const CBioseq*>(ptr);
1028  const CSeqdesc* seqdesc = dynamic_cast<const CSeqdesc*>(ptr);
1029  const CPubdesc* pubdesc = dynamic_cast<const CPubdesc*>(ptr);
1030 
1031  const CSeq_annot* annot = dynamic_cast<const CSeq_annot*>(ptr);
1032  const CBioseq_set* bioseqset = dynamic_cast<const CBioseq_set*>(ptr);
1033 
1034  const CSeq_align* align = dynamic_cast<const CSeq_align*>(ptr);
1035  const CSeq_id* seq_id = dynamic_cast<const CSeq_id*>(ptr);
1036 
1037  if (seqfeat) {
1038  if (seqfeat->IsSetLocation()) {
1039  CRef<CSeq_loc> loc(new CSeq_loc());
1040  loc->Assign(seqfeat->GetLocation());
1041  m_CachedSelectedLocations.push_back(loc);
1042  }
1043  m_IsSeq = false;
1044  } else if (seq_id && !CSeqUtils::IsVDBAccession(seq_id->GetSeqIdString())) {
1045  CBioseq_Handle bsh = it->scope->GetBioseqHandle(*seq_id);
1046  if (bsh) {
1047  CRef<CSeq_id> new_id(new CSeq_id());
1048  new_id->Assign(*seq_id);
1049  CRef<CSeq_loc> loc(new CSeq_loc(*new_id, 0, bsh.GetInst_Length() - 1));
1050  m_CachedSelectedLocations.push_back(loc);
1051  m_IsSeq = true;
1052  if (count == 0)
1053  m_IsAa = bsh.IsAa();
1054  }
1055  } else if (seqloc) {
1056 
1057  if (seqloc->IsWhole()) {
1058  CRef<CSeq_id> new_id(new CSeq_id());
1059  new_id->Assign(seqloc->GetWhole());
1060  CBioseq_Handle bsh = it->scope->GetBioseqHandle(*new_id);
1061  if (bsh) {
1062  CRef<CSeq_loc> loc(new CSeq_loc(*new_id, 0, bsh.GetInst_Length() - 1));
1063  m_CachedSelectedLocations.push_back(loc);
1064  }
1065  } else {
1066  CRef<CSeq_loc> loc(new CSeq_loc());
1067  loc->Assign(*seqloc);
1068  m_CachedSelectedLocations.push_back(loc);
1069  }
1070  CBioseq_Handle bsh = it->scope->GetBioseqHandle(*seqloc);
1071  if (bsh)
1072  {
1073  m_IsSeq = true;
1074  if (count == 0)
1075  m_IsAa = bsh.IsAa();
1076  }
1077  count++;
1078  } else if (bioseq) {
1079  CRef<CSeq_loc> loc(new CSeq_loc());
1080  loc->SetInt().SetId().Assign(*(bioseq->GetId().front()));
1081  loc->SetInt().SetFrom(0);
1082  loc->SetInt().SetTo(bioseq->GetLength() - 1);
1083  m_CachedSelectedLocations.push_back(loc);
1084  m_IsSeq = true;
1085  if (count == 0)
1086  m_IsAa = bioseq->IsAa();
1087  } else if (seqdesc) {
1088  CSeq_entry_Handle seh = edit::GetSeqEntryForSeqdesc(it->scope, *seqdesc);
1089  if (!seh) {
1090  CScope::TTSE_Handles tses;
1092  if (!tses.empty())
1093  seh = tses.front();
1094  }
1095 
1096  CBioseq_CI bi(seh);
1097  while (bi) {
1098  CRef<CSeq_loc> loc(new CSeq_loc());
1099  loc->SetInt().SetId().Assign(*(bi->GetId().front().GetSeqId()));
1100  loc->SetInt().SetFrom(0);
1101  loc->SetInt().SetTo(bi->GetInst_Length() - 1);
1102  m_CachedSelectedLocations.push_back(loc);
1103  ++bi;
1104  }
1105  m_IsSeq = false;
1106  } else if (pubdesc) {
1107  CSeq_entry_Handle seh = GetSeqEntryForPubdesc(it->scope, *pubdesc);
1108  CBioseq_CI bi(seh);
1109  while (bi) {
1110  CRef<CSeq_loc> loc(new CSeq_loc());
1111  loc->SetInt().SetId().Assign(*(bi->GetId().front().GetSeqId()));
1112  loc->SetInt().SetFrom(0);
1113  loc->SetInt().SetTo(bi->GetInst_Length() - 1);
1114  m_CachedSelectedLocations.push_back(loc);
1115  ++bi;
1116  }
1117  m_IsSeq = false;
1118  } else if (annot) {
1119  if (annot->IsSetData() &&
1120  annot->GetData().IsFtable() &&
1121  !annot->GetData().GetFtable().empty() &&
1122  annot->GetData().GetFtable().front()->IsSetLocation()) {
1123 
1124  CRef<CSeq_loc> loc(new CSeq_loc());
1125  loc->Assign(annot->GetData().GetFtable().front()->GetLocation());
1126  m_CachedSelectedLocations.push_back(loc);
1127  }
1128  m_IsSeq = false;
1129  } else if (bioseqset) {
1130  if (bioseqset->IsSetClass() && bioseqset->GetClass() == CBioseq_set::eClass_nuc_prot)
1131  {
1132  const CBioseq& bseq = bioseqset->GetNucFromNucProtSet();
1133  CRef<CSeq_loc> loc(new CSeq_loc());
1134  loc->SetInt().SetId().Assign(*(bseq.GetId().front()));
1135  loc->SetInt().SetFrom(0);
1136  loc->SetInt().SetTo(bseq.GetLength() - 1);
1137  m_CachedSelectedLocations.push_back(loc);
1138  }
1139  else
1140  {
1141  CSeq_entry* seq = bioseqset->GetParentEntry();
1142  if (seq)
1143  {
1144  m_CachedSelectedLocations.clear();
1145  }
1146  }
1147  m_IsSeq = false;
1148  } else if (align) {
1149  CSeq_align::TDim entry_row = x_FindRelevantAlignRow(*align, dynamic_cast<const CSeq_id*>(objects.back().object.GetPointer()));
1150  CRef<CSeq_loc> loc = align->CreateRowSeq_loc(entry_row);
1151  m_CachedSelectedLocations.push_back(loc);
1152  m_IsSeq = true;
1153  if (count == 0)
1154  m_IsAa = it->scope->GetBioseqHandle(*loc).IsAa();
1155  }
1156 
1157  }
1158  if (count > 1)
1159  {
1160  m_IsSeq = false;
1161  }
1162  if (!m_TopSeqEntry && !m_CachedSelectedLocations.empty()) {
1163  CBioseq_Handle bsh = objects.front().scope->GetBioseqHandle(*(m_CachedSelectedLocations.front()->GetId()));
1164  if (bsh)
1166  }
1167 }
1168 
1170 {
1171  // the relevant row corresponds to the subject sequence, which is the second one by default
1172  CSeq_align::TDim row = 1;
1173  if (align.GetSegs().IsSpliced()) {
1174  // looking for genomic sequence, which is always 1 in spliced-segs
1175  row = 1;
1176  }
1177  if (id)
1178  {
1179  CSeq_align::TDim num_rows = align.CheckNumRows();
1180  for (CSeq_align::TDim i = 0; i < num_rows; i++)
1181  {
1182  const CSeq_id &row_id = align.GetSeq_id(i);
1183  if (row_id.Match(*id))
1184  {
1185  row = i;
1186  break;
1187  }
1188  }
1189  }
1190  return row;
1191 }
1192 
1194 {
1196  event.Enable(m_TopSeqEntry && m_CmdProccessor);
1197 }
1198 
1200 {
1202  {
1203  CRef<CSeq_id> id(new CSeq_id("MF358689", CSeq_id::fParse_Default));
1204  CBioseq_Handle bsh;
1205  try
1206  {
1207  bsh = m_TopSeqEntry.GetScope().GetBioseqHandle(*id);
1208  }
1209  catch (const exception&)
1210  {
1211  wxMessageBox(wxT("Error while attempting to connect to the ID server, restarting gbench is recommended"), wxT("Error"), wxOK | wxICON_ERROR, NULL);
1212  m_disable_hup_check = true;
1213  }
1214  if (bsh)
1215  return true;
1216  }
1217  return false;
1218 }
1219 
1221 {
1224  {
1225  event.Enable(true);
1226  event.Check(TestHupIdEnabled());
1227  return;
1228  }
1229  event.Check(false);
1230  event.Enable(false);
1231 }
1232 
1234 {
1235  vector<CRef<CSeq_loc> >& locs = x_GetSelectedLocations();
1236 
1237  if (!RunningInsideNCBI() && (m_TopSeqEntry || !locs.empty()))
1238  {
1239  evt.Enable(true);
1240  return;
1241  }
1242 
1243  if (!m_IsSeq)
1244  {
1245  evt.Enable(false);
1246  return;
1247  }
1248 
1249 
1250  bool rval = false;
1251  bool ok_for_something = false;
1253  ITERATE(vector<CRef<CSeq_loc> >, lit, locs) {
1254  if (x_IsLocationOkForFeatCmd(subtype, *lit)) {
1255  rval = true;
1256  ok_for_something |= true;
1257  break;
1258  }
1260  ok_for_something |= true;
1261  }
1263  ok_for_something |= true;
1264  }
1265 
1266  }
1267  evt.Enable(rval);
1268 
1269  if (!ok_for_something && m_TopSeqEntry && !m_disable_id_check)
1270  {
1271  CRef<CSeq_id> id(new CSeq_id("U12345", CSeq_id::fParse_Default));
1272  CBioseq_Handle bsh;
1273  try
1274  {
1275  bsh = m_TopSeqEntry.GetScope().GetBioseqHandle(*id);
1276  }
1277  catch (const exception&)
1278  {
1279  wxMessageBox(wxT("Unable to connect to the ID server, restarting gbench is recommended"), wxT("Error"), wxOK | wxICON_ERROR, NULL);
1280  m_disable_id_check = true;
1281  }
1282  }
1283 }
1284 
1285 
1286 
1287 // Implementation
1288 vector<CUICommand*> CSeqEditPackage::GetCommands()
1289 {
1290  vector<CUICommand*> commands;
1291  commands.push_back(new CUICommand(eCmdRemoveDescriptors, "Remove Descriptors", "Remove Descriptors from Selected Object", "RDSO"));
1292  commands.push_back(new CUICommand(eCmdRemoveFeatures, "Remove Features", "Remove Features from Selected Object", "RFSO"));
1293  commands.push_back(new CUICommand(eCmdFixForTransSplicing, "Fix For Trans-splicing", "Fix For Trans-splicing", "FFTS"));
1294  commands.push_back(new CUICommand(eCmdRemoveUnindexedFeatures, "Remove Unindexed Features", "Remove Unindexed Features", "RUIF"));
1295  commands.push_back(new CUICommand(eCmdApplyIndexerComments, "Apply Indexer Comments", "Apply Indexer Comments", "AICS"));
1296  commands.push_back(new CUICommand(eCmdRemoveSeqAnnotIds, "Remove Seq-annot IDs", "Remove Seq-annot IDs from Selected Object", "RSAID"));
1297  commands.push_back(new CUICommand(eCmdRemoveCddFeatDbxref, "Remove All CDD Features and DBxrefs", "Remove All CDD Features and Dbxrefs", "RACFAD"));
1298  commands.push_back(new CUICommand(eCmdRemoveBankitComment, "Remove Bankit Comments", "Remove Bankit Comments from Selected Object", "RBC"));
1299  commands.push_back(new CUICommand(eCmdRemoveDuplicateStructuredComments, "Remove Duplicate Structured Comments", "Remove Duplicate Structured Comments from Selected Object", "RDSC"));
1300  commands.push_back(new CUICommand(eCmdRemoveSequencesFromAlignments, "Remove Sequences from Alignments", "Remove Sequences From Alignments from Selected Object", "RSFASO"));
1301  commands.push_back(new CUICommand(eCmdRemoveSequences, "Remove Sequences from Record", "Remove Sequences from Selected Object", "RSSO"));
1302  commands.push_back(new CUICommand(eCmdRemoveSequences_ext, "Remove Sequences", "Remove Sequences from Selected Object", "RSSO"));
1303  commands.push_back(new CUICommand(eCmdJustRemoveProteins, "Just Remove Proteins", "Just Remove Proteins", "JRP"));
1304  commands.push_back(new CUICommand(eCmdRemoveProteinsAndRenormalizeNucProtSets, "And Renormalize Nuc-Prot Sets", "And Renormalize Nuc-Prot Sets", "RPRNPS"));
1305  commands.push_back(new CUICommand(eCmdRemoveOrphanedProteins, "Orphaned Proteins", "Orphaned Proteins", "ROP"));
1306  commands.push_back(new CUICommand(eCmdRemoveSet,"RemoveSet", "RemoveSet","RSET"));
1307  commands.push_back(new CUICommand(eCmdRemoveSetsFromSet,"Remove Sets in Set", "Remove Sets in Set", "RSIS"));
1308  commands.push_back(new CUICommand(eCmdRevCompSequences, "Bioseq RevComp by ID", "Reverse Complement Sequences from Selected Object", "RVCS"));
1309  commands.push_back(new CUICommand(eCmdRevCompSequences_ext, "Reverse Complement Sequences by Sequence ID", "Reverse Complement Sequences from Selected Object", "RVCS"));
1310  commands.push_back(new CUICommand(eCmdBioseqFeatsRevComp, "BioseqFeatsRevComp", "Reverse Complement Sequences and Features", "RVCSF"));
1311  commands.push_back(new CUICommand(eCmdBioseqOnlyRevComp,"BioseqOnlyRevComp","Reverse Complement Sequences and Graphs", "RVCSG"));
1312  commands.push_back(new CUICommand(eCmdUnculTaxTool,"Uncultured Tax Tool", "Uncultured Tax Tool", "UCTT"));
1313  commands.push_back(new CUICommand(eCmdMergeBiosources, "Merge Multiple BioSources On Sequence", "Merge Multiple BioSources On Sequence", "MMBS"));
1314  commands.push_back(new CUICommand(eCmdCompareWithBiosample, "All Records", "Compare with Biosample", "CWBS"));
1315  commands.push_back(new CUICommand(eCmdCompareWithBiosampleFirstOnly, "First Record Only", "Compare with Biosample", "CWBSFO"));
1316  commands.push_back(new CUICommand(eCmdConsolidateLikeModsWithSemicolon, "With semicolons", "With semicolons", "CLMS"));
1317  commands.push_back(new CUICommand(eCmdConsolidateLikeModsWithoutSemicolon, "Without semicolons", "Without semicolons", "CLMWS"));
1318  commands.push_back(new CUICommand(eCmdBarcodeTool, "BARCODE Discrepancy Tool", "BARCODE Discrepancy Tool", "BDISTL"));
1319  commands.push_back(new CUICommand(eCmdApplyFBOL, "Apply FBOL Dbxrefs", "Apply FBOL Dbxrefs", "AFBOL"));
1320  commands.push_back(new CUICommand(eCmdEditSequence, "Edit Sequence", "Edit Sequence", "EDSEQ"));
1321  commands.push_back(new CUICommand(eCmdAlignmentAssistant, "Alignment Assistant", "Alignment Assistant", "ALAS"));
1322  commands.push_back(new CUICommand(eCmdRemoveAlignments, "Remove Alignments", "Remove Alignments from Selected Object", "RASO"));
1323  commands.push_back(new CUICommand(eCmdRemoveGraphs, "Remove Graphs", "Remove Graphs from Selected Object", "RGSO"));
1324  commands.push_back(new CUICommand(eCmdRemoveGenomeProjectId, "Remove All Genome Project IDs", "Remove All Genome Project Ids from Selected Object", "RGPIDSO"));
1325  commands.push_back(new CUICommand(eCmdRemoveEmptyGenomeProjectId, "Remove Empty Genome Project IDs", "Remove Empty Genome Project Ids from Selected Object", "REGPIDSO"));
1326  commands.push_back(new CUICommand(eCmdTaxFixCleanup, "Tax_fix/Cleanup", "Fix Taxonomy and Perform Basic and Extended Cleanup", "TFCU"));
1327  commands.push_back(new CUICommand(eCmdTaxFixCleanup_ext, "Lookup Taxonomy and Cleanup Record", "Lookup Taxonomy and Cleanup Record", "TFCU"));
1328  commands.push_back(new CUICommand(eCmdSpecificHostCleanup, "Specific Host Cleanup", "Specific Host Cleanup", "SHCU"));
1329  commands.push_back(new CUICommand(eCmdExtendedCleanup, "SeriousSeqEntryCleanup", "Perform Basic and Extended Cleanup", "SSEC"));
1330  commands.push_back(new CUICommand(eCmdFixNonReciprocalLinks, "Fix Non-Reciprocal Links", "Fix Non-Reciprocal Feature ID Links", "FNRL"));
1331  commands.push_back(new CUICommand(eCmdDisableStrainForwarding, "Globally Disable Strain Forwarding", "Globally Disable Strain Forwarding", "GDSF"));
1332  commands.push_back(new CUICommand(eCmdEnableStrainForwarding, "Globally Enable Strain Forwarding", "Globally Disable Strain Forwarding", "GESF"));
1333  commands.push_back(new CUICommand(eCmdEditPubs, "Edit Publications", "Edit Publications", "EP"));
1334  commands.push_back(new CUICommand(eCmdGlobalPubmedIdLookup, "Global PubMedId Lookup", "Global PubMedId Lookup", "GPMIDL"));
1335  commands.push_back(new CUICommand(eCmdFixCapitalizationAll, "Fix All Capitalization", "Fix All Capitalization for Selected Object", "FACSO"));
1336  commands.push_back(new CUICommand(eCmdFixCapitalizationAuthors, "Fix Capitalization in Authors", "Fix Capitalization in Authors for Selected Object", "FCASO"));
1337  commands.push_back(new CUICommand(eCmdFixCapitalizationTitles, "Fix Capitalization in Titles", "Fix Capitalization in Titles for Selected Object", "FCTSO"));
1338  commands.push_back(new CUICommand(eCmdFixCapitalizationAffiliation, "Fix Capitalization in Affiliations", "Fix Capitalization in Affiliations for Selected Object", "FCAfSO"));
1339  commands.push_back(new CUICommand(eCmdFixCapitalizationCountry, "Fix Capitalization in Countries", "Fix Capitalization in Countries for Selected Object", "FCCSO"));
1340  commands.push_back(new CUICommand(eCmdRemoveUnpublishedPublications, "Remove Unpublished Publications", "Remove Unpublished Publications from Selected Object", "RUPSO"));
1341  commands.push_back(new CUICommand(eCmdRemoveInPressPublications, "Remove In Press Publications", "Remove In Press Publications from Selected Object", "RIPSO"));
1342  commands.push_back(new CUICommand(eCmdRemovePublishedPublications, "Remove Published Publications", "Remove Published Publications from Selected Object", "RPPSO"));
1343  commands.push_back(new CUICommand(eCmdRemoveCollidingPublications, "Remove Colliding Publications", "Remove Colliding Publications from Selected Object", "RCPSO"));
1344  commands.push_back(new CUICommand(eCmdRemoveAllPublications, "Remove All Publications", "Remove All Publications from Selected Object", "RAPSO"));
1345  commands.push_back(new CUICommand(eCmdRemoveAuthorConsortiums, "Remove Author Consortiums", "Remove Author Consortiums from Selected Object", "RACSO"));
1346  commands.push_back(new CUICommand(eCmdReverseAuthorNames, "Reverse Author Names", "Reverse Author Names for Selected Object", "RANSO"));
1347  commands.push_back(new CUICommand(eCmdStripAuthorSuffixes, "Strip Author Suffixes", "Strip Author Suffixes from Selected Object", "SASSO"));
1348  commands.push_back(new CUICommand(eCmdTruncateAuthorMiddleInitials, "Truncate Author Middle Initials", "Truncate Author Middle Initials from Selected Object", "TAMISO"));
1349  commands.push_back(new CUICommand(eCmdConvertAuthorToConstortiumWhereLastName, "Convert Author to Consortium where Last Name Contains Consortium", "Convert Author To Consortium Where Last Name Contains Consortium For Selected Object", "CATCWLSO"));
1350  commands.push_back(new CUICommand(eCmdConvertAuthorToConsortiumAll, "Convert All Authors to Consortium", "Convert All Authors To Consortium For Selected Object", "CAATCSO"));
1351  commands.push_back(new CUICommand(eCmdAddCitSubForUpdate, "Add Cit-sub for Update", "Add Cit-sub For Update for Selected Object", "ACSFUSO"));
1352  commands.push_back(new CUICommand(eCmdFixUsaAndStates, "Fix USA and States", "Fix USA and States for Selected Object", "FUSSO"));
1353  commands.push_back(new CUICommand(eCmdRetranslateCDSObeyStop, "Obey Stop Codon", "Retranslate CDS, obey stop codon", "RCDSOSC"));
1354  commands.push_back(new CUICommand(eCmdRetranslateCDSIgnoreStopExceptEnd, "Ignore Stop Codon Except at End of Complete CDS", "Retranslate CDS, Ignore Stop Codon Except at End of Complete CDS", "RCDSISCEAE"));
1355  commands.push_back(new CUICommand(eCmdRetranslateCDSIgnoreStopExceptEnd_ext, "Retranslate Coding Regions", "Retranslate CDS, Ignore Stop Codon Except at End of Complete CDS", "RCDSISCEAE"));
1356  commands.push_back(new CUICommand(eCmdRetranslateCDSChooseFrame, "Choose Frame with No Stop Codon", "Retranslate CDS, Choose Frame With No Stop Codon", "RCDSCF"));
1357  commands.push_back(new CUICommand(eCmdEditCdsFrame, "Edit Coding Region Frame", "Edit Coding Region Frame", "ECRF"));
1358  commands.push_back(new CUICommand(eCmdRestoreRNAediting, "Restore RNA Editing of CDS", "Restore RNA Editing", "RRNAE"));
1359  commands.push_back(new CUICommand(eCmdResynchronizePartialsCDS, "Resynchronize CDS Partials", "Resynchronize CDS Partials", "RCDSP"));
1360  commands.push_back(new CUICommand(eCmdAddTranslExcept, "Add Translational Exceptions with Comment", "Add Translational Exceptions with Comment", "ATEWC"));
1361  commands.push_back(new CUICommand(eCmdRemoveAllStructuredComments,"Remove All Structured Comments","Remove All Structured Comments from Selected Object","RASCSO"));
1362  commands.push_back(new CUICommand(eCmdRemoveEmptyStructuredComments,"Remove Empty Structured Comments","Remove Empty Structured Comments from Selected Object","RESCSO"));
1363  commands.push_back(new CUICommand(eCmdModifyStructuredComment,"Remove Structured Comment Field","Remove Structured Comment Field from Selected Object","RSCFSO"));
1364  commands.push_back(new CUICommand(eCmdSetGlobalRefGeneStatus, "Set Global RefGene Status", "Set Global RefGene Status", "SGRGS"));
1365  commands.push_back(new CUICommand(eCmdClearKeywords, "Clear Keywords", "Clear Keywords", "CLKW"));
1366  commands.push_back(new CUICommand(eCmdClearNomenclature, "Clear Nomenclature", "Clear Nomenclature", "CLNMC"));
1367  commands.push_back(new CUICommand(eCmdConvertToDelayedGenProdSetQuals,"Convert to Delayed Gen-Prod-Set Qualifiers", "Convert to Delayed Gen-Prod-Set Qualifiers", "CDGPSQ"));
1368  commands.push_back(new CUICommand(eCmdConvertRptUnitRangeToLoc, "Convert Repeat-region Rpt-unit-range to Location", "Convert repeat-region rpt-unit-range to location", "CRRL"));
1369  commands.push_back(new CUICommand(eCmdRemoveStructuredCommentKeyword,"Remove Structured Comment Keyword","Remove Structured Comment Keyword from Selected Object","RSCKSO"));
1370  commands.push_back(new CUICommand(eCmdAddStructuredCommentKeyword ,"Add Structured Comment Keyword","Add Structured Comment Keyword to Selected Object","ASCKSO"));
1371  commands.push_back(new CUICommand(eCmdAddKeywordGDS,"GDS", "Add Keyword GDS", "AKG"));
1372  commands.push_back(new CUICommand(eCmdAddKeywordTPA_inferential,"TPA:inferential","Add Keyword TPA:inferential", "AKTI"));
1373  commands.push_back(new CUICommand(eCmdAddKeywordTPA_experimental,"TPA:experimental","Add Keyword TPA:experimental","AKTE"));
1374  commands.push_back(new CUICommand(eCmdAddKeywordTPA_assembly,"TPA:assembly","Add Keyword TPA:assembly","AKTA"));
1375  commands.push_back(new CUICommand(eCmdAddKeywordWithConstraint, "With Constraint", "Add Keyword With Constraint", "AKWC"));
1376  commands.push_back(new CUICommand(eCmdAddGenomeAssemblyStructuredComment, "Add Genome Assembly Structured Comment", "Add Genome Assembly Structured Comment", "AGASC"));
1377  commands.push_back(new CUICommand(eCmdAddAssemblyStructuredComment, "Add Assembly Structured Comment", "Add Assembly Structured Comment", "AASC"));
1378  commands.push_back(new CUICommand(eCmdReorderStructuredComment,"Reorder Structured Comment","Reorder Structured Comment in Selected Object","RSCSO"));
1379  commands.push_back(new CUICommand(eCmdConvertComment,"Convert Structured Comment","Convert Structured Comment in Selected Object","CSCSO"));
1380  commands.push_back(new CUICommand(eCmdParseComment,"Parse Structured Comment","Parse Structured Comment in Selected Object","PSCSO"));
1381  commands.push_back(new CUICommand(eCmdExportStructuredCommentsTable, "Export Structured Comment Table", "Export Structured Comment Table", "ESCT"));
1382  commands.push_back(new CUICommand(eCmdLoadStructComments, "Load Structured Comments from Table", "Load Structured Comments from Table", "LSCT"));
1383  commands.push_back(new CUICommand(eCmdIllegalQualsToNote, "Convert Illegal Qualifiers to Note", "Convert Illegal Qualifiers to Note", "CIQN"));
1384  commands.push_back(new CUICommand(eCmdRmIllegalQuals,"Remove Illegal Qualifiers", "Remove Illegal Qualifiers", "RMIQ"));
1385  commands.push_back(new CUICommand(eCmdWrongQualsToNote,"Convert Wrong Qualifiers to Note", "Convert Wrong Qualifiers to Note", "CWQN"));
1386  commands.push_back(new CUICommand(eCmdConvertBadInference, "Convert Bad Inference Qualifiers to Notes", "Convert Bad Inference Qualifiers to Notes", "CBIN"));
1387  commands.push_back(new CUICommand(eCmdRmWrongQuals,"Remove Wrong Qualifiers", "Remove Wrong Qualifiers", "RMWQ"));
1388  commands.push_back(new CUICommand(eCmdRemoveDbXrefsCDS,"From CDSs", "Remove DbXrefs from CDSs","RMDBXR"));
1389  commands.push_back(new CUICommand(eCmdRemoveDbXrefsGenes,"From Genes", "Remove DbXrefs from Genes","RMDBXR"));
1390  commands.push_back(new CUICommand(eCmdRemoveDbXrefsRNA,"From RNAs", "Remove DbXrefs from RNAs","RMDBXR"));
1391  commands.push_back(new CUICommand(eCmdRemoveDbXrefsAllFeats,"From All Features", "Remove DbXrefs from All Features","RMDBXR"));
1392  commands.push_back(new CUICommand(eCmdRemoveDbXrefsBioSource,"From All BioSources","Remove DbXrefs from All BioSources", "RMDBXR"));
1393  commands.push_back(new CUICommand(eCmdRemoveDbXrefsBioSourceAndFeats, "From All Features and BioSources", "Remove DbXrefs from All Features and BioSources", "RMDBXR"));
1394  commands.push_back(new CUICommand(eCmdRemoveTaxonFeats, "From Features", "Remove Taxons From Features", "RMTFF"));
1395  commands.push_back(new CUICommand(eCmdRemoveTaxonFeatsAndBioSource, "From Features And BioSources", "Remove Taxons From Features And BioSources", "RMTFFBS"));
1396  commands.push_back(new CUICommand(eCmdGroupExplode, "Group Explode", "Group Explode", "GREX"));
1397  commands.push_back(new CUICommand(eCmdFindASN1, "Find ASN.1", "Find ASN.1", "FA1"));
1398  commands.push_back(new CUICommand(eCmdFuseFeatures, "Fuse Features", "Fuse Features", "FUFE"));
1399  commands.push_back(new CUICommand(eCmdFuseJoinsInLocs, "Fuse Joins in Locations", "Fuse Joins in Locations", "FJIL"));
1400  commands.push_back(new CUICommand(eCmdExplodeRNAFeats, "Explode RNA Features", "Explode RNA Features", "ERNAF"));
1401  commands.push_back(new CUICommand(eCmdAssignFeatureIds,"Assign Feature IDs", "Assign Feature IDs for Selected Object","AFIDSO"));
1402  commands.push_back(new CUICommand(eCmdClearFeatureIds,"Clear Feature IDs and Xrefs", "Clear Feature IDs for Selected Object","CFIDSO"));
1403  commands.push_back(new CUICommand(eCmdReassignFeatureIds,"Reassign Feature IDs", "Reassign Feature IDs for Selected Object","RFIDSO"));
1404  commands.push_back(new CUICommand(eCmdUniqifyFeatureIds,"Uniqify Feature IDs", "Uniqify Feature IDs for Selected Object","UFIDSO"));
1405  commands.push_back(new CUICommand(eCmdTrimJunkInPrimerSeqs,"Trim Junk in Primer Sequences","Trim Junk In Primer Seqs for Selected Object","TJIPSSO"));
1406  commands.push_back(new CUICommand(eCmdFixiInPrimerSeqs,"Fix i in Primer Sequences","Fix i in Primer Seqs for Selected Object","FIIPSSO"));
1407  commands.push_back(new CUICommand(eCmdPrefixAuthWithTax, "Prefix Authority with Organism", "Prefix Authority with Organism", "PAWO"));
1408  commands.push_back(new CUICommand(eCmdFocusSet, "Set", "BioSource is_focus is set", "SFSET"));
1409  commands.push_back(new CUICommand(eCmdFocusClear, "Clear", "BioSource is_focus is clear", "SFCLE"));
1410  commands.push_back(new CUICommand(eCmdSetTransgSrcDesc, "Set Transgenic on Source Descriptor", "Set Transgenic on Source Desc when Source Feat present", "STOSD"));
1411  commands.push_back(new CUICommand(eCmdSplitDblinkQuals, "Split DBLink Qualifiers at Commas", "Split DBLink Quals at Commas", "SDQAC"));
1412  commands.push_back(new CUICommand(eCmdFixOrgModInstitution,"Fix OrgMod Institution Code","Fix OrgMod Institution Code for Selected Object","FOMICSO"));
1413  commands.push_back(new CUICommand(eCmdFixStructuredVouchers, "Fix Structured Vouchers", "Fix Structured Vouchers", "FSTV"));
1414  commands.push_back(new CUICommand(eCmdSwapPrimerSeqName,"Swap Primer Sequence and Name","Swap Primer Seq and Name for Selected Object","SPSNSO"));
1415  commands.push_back(new CUICommand(eCmdMergePrimerSets,"Merge Primer Sets","Merge Primer Sets for Selected Object","MPSSO"));
1416  commands.push_back(new CUICommand(eCmdSplitPrimerSets,"Split Primer Sets by Position","Split Primer Sets by Position for Selected Object","SPSBPSO"));
1417  commands.push_back(new CUICommand(eCmdAppendModToOrg,"Append Modifier to Organism","Append Mod To Org for Selected Object","AMTOSO"));
1418  commands.push_back(new CUICommand(eCmdParseCollectionDateMonthFirst,"Parse Collection Date Month First","Parse Collection Date Month First for Selected Object","PCDMFSO"));
1419  commands.push_back(new CUICommand(eCmdParseCollectionDateDayFirst,"Parse Collection Date Day First","Parse Collection Date Day First for Selected Object","PCDDFSO"));
1420  commands.push_back(new CUICommand(eCmdCountryFixupCap,"Country Fixup Fix Capitalization after Colon","Country Fixup Fix Capitalization After Colon","CFFCAC"));
1421  commands.push_back(new CUICommand(eCmdCountryFixupNoCap,"Country Fixup Do Not Fix Capitalization after Colon","Country Fixup Do Not Fix Capitalization After Colon","CFDNFCAC"));
1422  commands.push_back(new CUICommand(eCmdVectorTrim, "Vector Search and Trim Tool", "Vector Search and Trim Tool", "VSTT"));
1423  commands.push_back(new CUICommand(eCmdSelectTarget, "Select Target", "Select Target", "ST"));
1424  commands.push_back(new CUICommand(eCmdSelectTarget_ext, "Select Specific Sequence by Sequence ID", "Select Specific Sequence by Sequence ID", "ST"));
1425  commands.push_back(new CUICommand(eCmdSelectFeature, "Select Features", "Select Features", "SF"));
1426  commands.push_back(new CUICommand(eCmdApplyCDS, "Add CDS", "Add CDS", "AC"));
1427  commands.push_back(new CUICommand(eCmdApplyAddRNA, "Add RNA", "Add RNA", "AR"));
1428  commands.push_back(new CUICommand(eCmdApplyAddOther, "Add Other Feature", "Add other Feature", "AOF"));
1429  commands.push_back(new CUICommand(eCmdApplyAddOther_ext, "Add Other Feature (Non CDS, RNA)", "Add other Feature", "AOF"));
1430  commands.push_back(new CUICommand(eCmdAddFeatureBetween, "Add Feature Between", "Add Feature Between", "AFB"));
1431  commands.push_back(new CUICommand(eCmdValidate, "Validate", "Validate", "V"));
1432  commands.push_back(new CUICommand(eCmdValidate_ext, "Validation Report", "Validate", "V"));
1433  commands.push_back(new CUICommand(eCmdValidateNoAlignments, "Validate No Alignments", "Validate no Alignments", "VNA"));
1434  commands.push_back(new CUICommand(eCmdValidateCheckInferences, "Validate Check Inferences", "Validate Check Inferences", "VCI"));
1435 // commands.back()->AddAccelerator(wxACCEL_NORMAL, 'v');
1436  commands.push_back(new CUICommand(eCmdSortUniqueCountText, "SUC (Sort Unique Count)", "Sort Unique Count", "SUC"));
1437  commands.push_back(new CUICommand(eCmdSortUniqueCountTree, "cSUC (Clickable SUC)", "Clickable Sort Unique Count", "SUC"));
1438  commands.push_back(new CUICommand(eCmdSortUniqueCountTree_ext, "FlatFile Summary", "Clickable Sort Unique Count", "SUC"));
1439  commands.push_back(new CUICommand(eCmdDiscrepancy, "Discrepancy Report", "Discrepancy Report", "DR"));
1440  commands.push_back(new CUICommand(eCmdOncaller, "Oncaller Report", "Oncaller Report", "OR"));
1441  commands.push_back(new CUICommand(eCmdSubmitter_ext, "Submitter Report", "Submitter Report", "SR"));
1442  commands.push_back(new CUICommand(eCmdMega, "Mega Report", "Mega Report", "MR"));
1443  commands.push_back(new CUICommand(eCmdDiscrepancyList, "List Discrepancy Tests", "List Discrepancy Tests", "LDT"));
1444  commands.push_back(new CUICommand(eCmdAutodefDefaultOptions, "Autodef", "Autodef Default Options", "ADO"));
1445  commands.push_back(new CUICommand(eCmdAutodefOptions, "Autodef Select Options", "Autodef Select Options", "ADSO"));
1446  commands.push_back(new CUICommand(eCmdAutodefMisc, "Autodef Misc Feats", "Autodef Misc Feats", "ADMF"));
1447  commands.push_back(new CUICommand(eCmdAutodefId, "Autodef ID", "Autodef ID", "ADID"));
1448  commands.push_back(new CUICommand(eCmdAutodefNoMods, "Autodef No Modifiers", "Autodef No Modifiers", "ADNM"));
1449  commands.push_back(new CUICommand(eCmdAutodefPopset, "Add Popset Titles", "Add Popset Titles", "ADPT"));
1450  commands.push_back(new CUICommand(eCmdAutodefRefresh, "Refresh DefLine with Previous Options", "Refresh Definition Line", "RDEFL"));
1451  commands.push_back(new CUICommand(eCmdInstantiateProteinTitles, "PT_Cleanup", "PT_Cleanup Protein Titles", "PTCU"));
1452  commands.push_back(new CUICommand(eCmdRemoveAllFeatures, "Remove All Features", "Remove All Features", "RAF"));
1453  commands.push_back(new CUICommand(eCmdRemoveDupFeats, "All Feature Types", "Remove Duplicate Features", "RDF"));
1454  commands.push_back(new CUICommand(eCmdRemoveDupFeats_ext, "Remove Duplicate Features", "Remove Duplicate Features", "RDF"));
1455  commands.push_back(new CUICommand(eCmdRemoveDupFeatsWithOptions, "Features with Options", "Remove Duplicate Feats With Options", "RDFWO"));
1456  commands.push_back(new CUICommand(eCmdRemoveDupFeatsWithOptions_ext, "Remove Duplicate Features with Options", "Remove Duplicate Feats With Options", "RDFWO"));
1457  commands.push_back(new CUICommand(eCmdResolveIntersectingFeats, "Resolve Intersecting Feature Locations", "Resolve Intersecting Feature Locations", "RIFL"));
1458  commands.push_back(new CUICommand(eCmdAddSequences, "Add Sequences", "Add Sequences", "AS"));
1459  commands.push_back(new CUICommand(eCmdApplySourceQual, "Apply Source Qualifier", "Apply Source Qual", "ASQ"));
1460  commands.push_back(new CUICommand(eCmdEditSourceQual, "Edit Source Qualifier", "Edit Source Qual", "ESQ"));
1461  commands.push_back(new CUICommand(eCmdConvertSourceQual, "Convert Source Qualifier", "Convert Source Qual", "CSQ"));
1462  commands.push_back(new CUICommand(eCmdSwapSourceQual, "Swap Source Qualifiers", "Swap Source Qual", "SSQ"));
1463  commands.push_back(new CUICommand(eCmdRemoveSourceQual, "Remove Source Qualifier", "Remove Source Qual", "RSQ"));
1464  commands.push_back(new CUICommand(eCmdApplyRNAQual, "Apply RNA Qualifier", "Apply RNA Qual", "ARQ"));
1465  commands.push_back(new CUICommand(eCmdEditRNAQual, "Edit RNA Qualifier", "Edit RNA Qual", "ERQ"));
1466  commands.push_back(new CUICommand(eCmdConvertRNAQual, "Convert RNA Qualifier", "Convert RNA Qual", "CRQ"));
1467  commands.push_back(new CUICommand(eCmdSwapRNAQual, "Swap RNA Qualifiers", "Swap RNA Qual", "SRQ"));
1468  commands.push_back(new CUICommand(eCmdRemoveRNAQual, "Remove RNA Qualifier", "Remove RNA Qual", "RRQ"));
1469  commands.push_back(new CUICommand(eCmdApplyCGPQual, "Apply CDS-Gene-Prot-mRNA Qualifier", "Apply CDS-Gene-Prot-mRNA Qual", "ACGPQ"));
1470  commands.push_back(new CUICommand(eCmdEditCGPQual, "Edit CDS-Gene-Prot-mRNA Qualifier", "Edit CDS-Gene-Prot-mRNA Qual", "ECGPQ"));
1471  commands.push_back(new CUICommand(eCmdConvertCGPQual, "Convert CDS-Gene-Prot-mRNA Qualifier", "Convert CDS-Gene-Prot-mRNA Qual", "CCGPQ"));
1472  commands.push_back(new CUICommand(eCmdSwapCGPQual, "Swap CDS-Gene-Prot-mRNA Qualifiers", "Swap CDS-Gene-Prot-mRNA Qual", "SCGPQ"));
1473  commands.push_back(new CUICommand(eCmdRemoveCGPQual, "Remove CDS-Gene-Prot-mRNA Qualifier", "Remove CDS-Gene-Prot-mRNA Qual", "RCGPQ"));
1474  commands.push_back(new CUICommand(eCmdApplyFeatQual, "Apply Feature Qualifier", "Apply Feature Qual", "AFQ"));
1475  commands.push_back(new CUICommand(eCmdEditFeatQual, "Edit Feature Qualifier", "Edit Feature Qual", "EFQ"));
1476  commands.push_back(new CUICommand(eCmdConvertFeatQual, "Convert Feature Qualifier", "Convert Feature Qual", "CFQ"));
1477  commands.push_back(new CUICommand(eCmdConvertSecondProtNameToDesc, "Second Protein Name to Description", "Second Protein Name to Description", "CSPND"));
1478  commands.push_back(new CUICommand(eCmdConvertDescToSecondProtName, "Protein Description to Second Name", "Protein Description to Second Name", "PDSN"));
1479  commands.push_back(new CUICommand(eCmdConvertDescToFeatComment, "Comment", "Convert Desc to Feat Comment", "CDFC"));
1480  commands.push_back(new CUICommand(eCmdConvertDescToFeatSource, "Source", "Concert Desc to Feat Source", "CDFS"));
1481  commands.push_back(new CUICommand(eCmdConvertDescToFeatPub, "All", "Convert Desc to Feat Pub", "CDFP"));
1482  commands.push_back(new CUICommand(eCmdConvertDescToFeatPubConstraint, "By Constraint", "Convert Desc to Feat Pub", "CDFPC"));
1483  commands.push_back(new CUICommand(eCmdConvertFeatToDescComment, "Comment", "Convert Feat to Desc Comment", "CFDC"));
1484  commands.push_back(new CUICommand(eCmdConvertFeatToDescSource, "Source", "Convert Feat to Desc Source", "CFDS"));
1485  commands.push_back(new CUICommand(eCmdConvertFeatToDescPub, "Publication", "Convert Feat to Desc Pub", "CFDP"));
1486  commands.push_back(new CUICommand(eCmdSwapFeatQual, "Swap Feature Qualifiers", "Swap Feature Qual", "SFQ"));
1487  commands.push_back(new CUICommand(eCmdRemoveFeatQual, "Remove Feature Qualifier", "Remove Feature Qual", "RFQ"));
1488  commands.push_back(new CUICommand(eCmdRemoveTextOutsideString, "Remove Text Outside String", "Remove Text Outside String", "RTOS"));
1489  commands.push_back(new CUICommand(eCmdParseText, "Parse Text", "Parse Text", "PT"));
1490  commands.push_back(new CUICommand(eCmdParseTextFromDefline, "Parse Text", "Parse Text", "PTDL"));
1491  commands.push_back(new CUICommand(eCmdParseLocalToSrc, "Parse Local ID to Source", "Parse Local ID to Src", "PLIDTS"));
1492  commands.push_back(new CUICommand(eCmdRemoveTextInsideStr, "Remove Text Inside String", "Remove Text Inside String", "RTIS"));
1493  commands.push_back(new CUICommand(eCmdLowercaseQuals, "Lowercase Qualifiers", "Lowercase Qualifiers", "LQ"));
1494  commands.push_back(new CUICommand(eCmdConvertFeatures, "Convert Features", "Convert Features", "CF"));
1495  commands.push_back(new CUICommand(eCmdCdsToMatPeptide, "Convert CDS to Mat-peptide", "Convert CDS to mat-peptide", "CDSTMP"));
1496  commands.push_back(new CUICommand(eCmdConvertCdsToMiscFeat, "Convert CDS to Misc-feature or Pseudogene", "Convert CDS to misc-feat or Pseudogene", "CCDSMF"));
1497  commands.push_back(new CUICommand(eCmdConvertCdsWithInternalStopToMiscFeat, "To Misc-feature", "Convert CDS with Internal Stop Codon to Misc_feat", "CCDSWIMF"));
1498  commands.push_back(new CUICommand(eCmdConvertCdsWithInternalStopToMiscFeatViral, "To Misc-feature (Viral)", "Convert CDS with Internal Stop Codon to Misc_feat (Viral)", "CCDSWIMFV"));
1499  commands.push_back(new CUICommand(eCmdConvertCdsWithInternalStopToMiscFeatUnverified, "To Misc-feature with Unverified Comment", "Convert CDS with Internal Stop Codon to Misc_feat with Unverified Comment", "CCDSWIMFU"));
1500  commands.push_back(new CUICommand(eCmdConvertCdsWithGapsToMiscFeat, "Convert CDS with Internal Gaps to misc-feat", "Convert CDS with Internal Gaps to misc-feat", "CCDSWGMF"));
1501  commands.push_back(new CUICommand(eCmdTableReader, "Table Reader", "Table Reader", "TR"));
1502  commands.push_back(new CUICommand(eCmdTableReader_ext, "Use Table Reader", "Table Reader", "TR"));
1503  commands.push_back(new CUICommand(eCmdTableReaderClipboard, "Table Reader from Clipboard", "Table Reader from Clipboard", "TRFC"));
1504  commands.push_back(new CUICommand(eCmdBulkSourceEdit, "Bulk Source Edit", "Bulk Source Edit", "BE"));
1505  commands.push_back(new CUICommand(eCmdBulkCdsEdit, "Bulk CDS Edit", "Bulk CDS Edit", "BCDSE"));
1506  commands.push_back(new CUICommand(eCmdBulkGeneEdit, "Bulk Gene Edit", "Bulk Gene Edit", "BGENEE"));
1507  commands.push_back(new CUICommand(eCmdBulkRnaEdit, "Bulk RNA Edit", "Bulk RNA Edit", "BRNAE"));
1508  commands.push_back(new CUICommand(eCmdBulkMiscFeatEdit, "Bulk Misc Feat Edit", "Bulk Misc Feat Edit", "BMISCFE"));
1509  commands.push_back(new CUICommand(eCmdCorrectGenes, "Correct Genes for CDSs or mRNAs", "Correct Genes for CDSs or mRNAs", "CGFCOM"));
1510  commands.push_back(new CUICommand(eCmdSegregateSets, "Segregate Sets", "Segregate Sets", "SEGSET"));
1511  commands.push_back(new CUICommand(eCmdSequesterSets, "Sequester Sets", "Sequester Sets", "SEQSET"));
1512  commands.push_back(new CUICommand(eCmdDescriptorPropagateDown, "Propagate Descriptors", "Propagate Descriptors", "PRDS"));
1513  commands.push_back(new CUICommand(eCmdReorderSeqById, "Reorder by ID", "Reorder by ID", "RBID"));
1514  commands.push_back(new CUICommand(eCmdCombineSelectedGenesIntoPseudogenes,"Combine Selected Genes into Pseudogenes", "Combine selected genes into pseudogenes","CSGPG"));
1515  commands.push_back(new CUICommand(eCmdWithdrawSequences, "Withdraw Sequences", "Withdraw Sequences", "WSEQ"));
1516  commands.push_back(new CUICommand(eCmdAddSet, "Add Set", "Add Set", "AS"));
1517  commands.push_back(new CUICommand(eCmdPropagateDBLink, "Propagate DBLink Descriptors", "Propagate DBLink Descriptors", "PDBLD"));
1518  commands.push_back(new CUICommand(eCmdChangeSetClass, "Convert Set Type", "Convert Set Type", "CST"));
1519  commands.push_back(new CUICommand(eCmdMolInfoEdit, "MolInfo Edit", "MolInfo Edit", "MIE"));
1520  commands.push_back(new CUICommand(eCmdExportTable,"Export Table", "Export Table", "ETBL"));
1521  commands.push_back(new CUICommand(eCmdParseStrainSerotypeFromNames, "Parse Strain, Serotype from Names", "Parse Strain, Serotype from Names", "PSSFN"));
1522  commands.push_back(new CUICommand(eCmdAddStrainSerotypeToNames, "Add Strain, Serotype to Names", "Add Strain Serotype to Names", "ASSTN"));
1523  commands.push_back(new CUICommand(eCmdFixupOrganismNames, "Fixup Organism Names", "Fixup Organism Names", "FON"));
1524  commands.push_back(new CUICommand(eCmdSplitQualifiersAtCommas, "Split Qualifiers at Commas", "Split Quals at Commas", "SQAC"));
1525  commands.push_back(new CUICommand(eCmdSplitStructuredCollections, "Split Structured Collections", "Split Structured Collections", "SSC"));
1526  commands.push_back(new CUICommand(eCmdTrimOrganismNames, "Trim Organism Names", "Trim Organism Names", "TON"));
1527  commands.push_back(new CUICommand(eCmdRemoveUnverified, "Remove Unverified", "Remove Unverified from Selected Object", "RUNVER"));
1528  commands.push_back(new CUICommand(eCmdRemoveUnreviewed, "Remove Unreviewed", "Remove Unreviewed from selected Object", "RUNREV"));
1529  commands.push_back(new CUICommand(eCmdAddNamedrRNA12S, "12S", "Add Named rRNA 12S", "ANR12S"));
1530  commands.push_back(new CUICommand(eCmdAddNamedrRNA16S, "16S", "Add Named rRNA 16S", "ANR16S"));
1531  commands.push_back(new CUICommand(eCmdAddNamedrRNA23S, "23S", "Add Named rRNA 23S", "ANR23S"));
1532  commands.push_back(new CUICommand(eCmdAddNamedrRNA18S, "18S", "Add Named rRNA 18S", "ANR18S"));
1533  commands.push_back(new CUICommand(eCmdAddNamedrRNA28S, "28S", "Add Named rRNA 28S", "ANR28S"));
1534  commands.push_back(new CUICommand(eCmdAddNamedrRNA26S, "26S", "Add Named rRNA 26S", "ANR26S"));
1535  commands.push_back(new CUICommand(eCmdAddNamedrRNASmall, "Small", "Add Named rRNA Small", "ANRSmall"));
1536  commands.push_back(new CUICommand(eCmdAddNamedrRNALarge, "Large", "Add Named rRNA Large", "ANRLarge"));
1537  commands.push_back(new CUICommand(eCmdAddControlRegion, "Control Region", "Add Control Region", "ACR"));
1538  commands.push_back(new CUICommand(eCmdAddMicrosatellite, "Microsatellite", "Add Microsatellite", "AM"));
1539  commands.push_back(new CUICommand(eCmdEditFeatEv, "Evidence", "Edit Feature Evidence", "EFE"));
1540  commands.push_back(new CUICommand(eCmdEditFeatLoc, "Location", "Edit Feature Location", "EFL"));
1541  commands.push_back(new CUICommand(eCmdEditFeatLoc_ext, "Edit Feature Location", "Edit Feature Location", "EFL"));
1542  commands.push_back(new CUICommand(eCmdEditFeatStrand, "Strand", "Edit Feature Location Strand", "EFLS"));
1543  commands.push_back(new CUICommand(eCmdEditFeatStrand_ext, "Edit Feature Strand", "Edit Feature Location Strand", "EFLS"));
1544  commands.push_back(new CUICommand(eCmdEditFeatRevInt, "Reverse Location Interval Order", "Reverse Location Interval Order", "RLIO"));
1545  commands.push_back(new CUICommand(eCmdEditFeatPseudo,"Pseudo", "Edit Feature Pseudo", "EFP"));
1546  commands.push_back(new CUICommand(eCmdEditFeatException, "Exceptions", "Edit Feature Exception", "EFE"));
1547  commands.push_back(new CUICommand(eCmdEditFeatExperiment, "Experiment", "Edit Feature Experiment", "EFEX"));
1548  commands.push_back(new CUICommand(eCmdEditFeatInference, "Inference", "Edit Feature Inference", "EFINF"));
1549  commands.push_back(new CUICommand(eCmdExtendPartialsConstr, "With Constraint", "Extend Partials With Constraint", "EPWC"));
1550  commands.push_back(new CUICommand(eCmdExtendPartialsAll, "All to Ends", "Extend Partials All to Ends", "EPAE"));
1551  commands.push_back(new CUICommand(eCmdGeneFromOtherFeat,"Gene Features from Other Features","Gene Features From Other Features","GFFOF"));
1552  commands.push_back(new CUICommand(eCmdGeneFeatFromXrefs, "Gene Features from Xrefs", "Gene Features From Xrefs", "GFFX"));
1553  commands.push_back(new CUICommand(eCmdGeneXrefsFromFeats, "Gene Xrefs from Features", "Gene Xrefs from Features", "GXFF"));
1554  commands.push_back(new CUICommand(eCmdRemoveAllGeneXrefs, "All Gene Xrefs", "All Gene Xrefs", "RAGX"));
1555  commands.push_back(new CUICommand(eCmdRemoveUnnecessaryGeneXrefs, "Unnecessary Gene Xrefs", "Unnecessary Gene Xrefs", "RUGX"));
1556  commands.push_back(new CUICommand(eCmdRemoveNonsuppressingGeneXrefs, "Non-Suppressing Gene Xrefs","Non-Suppressing Gene Xrefs","RNSGX")); ///?????
1557  commands.push_back(new CUICommand(eCmdRemoveOrphanLocusGeneXrefs, "Gene Xrefs with Orphan Gene Locus","Gene Xrefs with Orphan Gene Locus","ROLGX"));
1558  commands.push_back(new CUICommand(eCmdRemoveOrphanLocus_tagGeneXrefs, "Gene Xrefs with Orphan Locus-tag", "Gene Xrefs with Orphan Locus-tag", "ROLTGX"));
1559  commands.push_back(new CUICommand(eCmdRemoveGeneXrefs, "Choose Types and Constraint", "Choose Types and Constraint", "RGXTC"));
1560  commands.push_back(new CUICommand(eCmdRemoveDuplicateGOTerms, "Remove Duplicate GO Terms", "Remove Duplicate GeneOntology Terms", "RDGOT"));
1561  commands.push_back(new CUICommand(eCmdExtendCDS, "Extend Coding Region Ends", "Extend Coding Region Ends", "ECDSE"));
1562  commands.push_back(new CUICommand(eCmdTruncateCDS, "Truncate Proteins and CDSs at Stops", "Truncate Proteins and CDSs at Stops", "TPCDSS"));
1563  commands.push_back(new CUICommand(eCmdExtendCDSToStop, "Extend Proteins to Stops", "Extend Proteins to Stops", "EPROTS"));
1564  commands.push_back(new CUICommand(eCmdRecomputeIntervalsAndUpdateGenes, "And Update Genes", "And Update Genes", "RIUPG"));
1565  commands.push_back(new CUICommand(eCmdRecomputeIntervals, "Do Not Update Genes" , "Do Not Update Genes", "RINUPG"));
1566  commands.push_back(new CUICommand(eCmdCdsFromGeneMrnaExon, "CDS Features from Gene, mRNA or Exon", "CDS Features from Gene, mRNA, or exon", "CDSFME"));
1567  commands.push_back(new CUICommand(eCmdmRNAFromGeneCdsExon, "mRNA Features from Gene, CDS, or exon", "mRNA Features from Gene, CDS, or exon", "MRNAFGCE"));
1568  commands.push_back(new CUICommand(eCmdtRNAFromGene, "tRNA/rRNA features from Gene", "tRNA/rRNA features from Gene",""));
1569  commands.push_back(new CUICommand(eCmdExonFromCds,"CDS Intervals", "Exon Features from CDS Intervals", "EFCDS"));
1570  commands.push_back(new CUICommand(eCmdExonFromMRNA,"mRNA Intervals", "Exon features from mRNA intervals", "EFMRNA"));
1571  commands.push_back(new CUICommand(eCmdExonFromTRNA,"tRNA Intervals", "Exon features from tRNA intervals", "EFTRNA"));
1572  commands.push_back(new CUICommand(eCmdFixProductNamesDefault, "Default","Fix Product Names Default", "FPND"));
1573  commands.push_back(new CUICommand(eCmdFixProductNamesOptions, "With Options","Fix Product Names With Options", "FPNWO"));
1574  commands.push_back(new CUICommand(eCmdBulkApplyGenCode, "Batch Apply Genetic Code", "Batch Apply Genetic Code", "BAGC"));
1575  commands.push_back(new CUICommand(eCmdEditSeqEndsWithAlign,"Edit Sequence Ends with Alignment","Edit Sequence Ends with Alignment", "ESEWA"));
1576  commands.push_back(new CUICommand(eCmdEditSequenceEnds,"Edit Sequence Ends","Edit Sequence Ends", "ESE"));
1577  commands.push_back(new CUICommand(eCmdUpdateAlign, "Update Sequence Alignment", "Update SeqAlign", "UPSA"));
1578  commands.push_back(new CUICommand(eCmdSaveDescriptors, "Save Descriptors", "Save Descriptors", "SD"));
1579  commands.push_back(new CUICommand(eCmdCreateSeqHistForTpaDetailed, "Create Seq-hist for TPA Detailed", "Create Seq-hist for TPA detailed", "CSHTPAD"));
1580  commands.push_back(new CUICommand(eCmdCreateSeqHistForTpa, "Create Seq-hist for TPA", "Create Seq-hist for TPA", "CSHTPA"));
1581  commands.push_back(new CUICommand(eCmdRemoveSeqHistAssembly, "Remove Seq-Hist Assembly", "Remove Seq-Hist Assembly", "RSHA"));
1582  commands.push_back(new CUICommand(eCmdFarPointerSeq, "Far Pointer Sequences", "Far Pointer Sequences", "FPSEQ"));
1583  commands.push_back(new CUICommand(eCmdConvertBadCdsAndRnaToMiscFeat, "Convert Bad Coding Regions and RNA features to misc-feat", "Convert Bad Coding Regions and RNA features to misc-feat", "CBCDSRNA"));
1584  commands.push_back(new CUICommand(eCmdCreateProteinId, "Create Protein IDs", "Create Protein IDs", "CPID"));
1585  commands.push_back(new CUICommand(eCmdCreateLocusTagGene, "Create Locus-tag Genes", "Create locus-tag genes", "CLTG"));
1586  commands.push_back(new CUICommand(eCmdNormalizeGeneQuals, "Normalize Gene Quals", "Copy gene qualifiers in xrefs on coding regions to parent genes", "NGQ"));
1587  commands.push_back(new CUICommand(eCmdGenusSpeciesFixup, "Genus-Species Fixup", "Genus-Species Fixup", "GSFU"));
1588  commands.push_back(new CUICommand(eCmdCountryConflict, "Lat-Lon Country Conflict Tool", "Lat-Lon Country Conflict Tool", "LLCCT"));
1589  commands.push_back(new CUICommand(eCmdDuplicate, "Duplicate", "Duplicate", "DUP"));
1590  commands.push_back(new CUICommand(eCmdCorrectIntervalOrder, "Correct Seq-loc Interval Order", "Correct Seq-loc Interval Order", "CLIO"));
1591  commands.push_back(new CUICommand(eCmdAddSecondary, "Add Secondary", "Add Secondary", "ADDS"));
1592  commands.push_back(new CUICommand(eCmdPackageFeaturesOnParts, "Package Features on Parts", "Package Features on Parts", "PFOP"));
1593  commands.push_back(new CUICommand(eCmdMakeBadSpecificHostTable, "Make Bad Specific-Host Table", "Make Bad Specific-Host Table", "MBSHT"));
1594  commands.push_back(new CUICommand(eCmdCorrectRNAStrand, "Correct RNA strandedness (Use SMART)", "Correct RNA strandedness", "CRSUS"));
1595  commands.push_back(new CUICommand(eCmdTrimNsRich, "Trim N-rich Sequence Ends", "Trim N-rich Sequence Ends", "TNR"));
1596  commands.push_back(new CUICommand(eCmdTrimNsTerminal, "Trim Terminal Ns", "Trim Terminal Ns", "TTN"));
1597  commands.push_back(new CUICommand(eCmdAddFluComments, "Add Flu Comments", "Add Flu Comments", "AFC"));
1598  commands.push_back(new CUICommand(eCmdLabelRna, "Label RNA", "Label RNA", "LRNA"));
1599  commands.push_back(new CUICommand(eCmdRemProtTitles, "All but RefSeq", "All but ReqSeq", "ABRS"));
1600  commands.push_back(new CUICommand(eCmdRemAllProtTitles, "All", "All", ""));
1601  commands.push_back(new CUICommand(eCmdApplyRNA_ITS, "Apply rRNA_ITS", "Apply rRNA_ITS", "ARNAITS"));
1602  commands.push_back(new CUICommand(eCmdEditingButtons, "Toolbar", "Sequin Special Editing Buttons", "SSEB"));
1603  commands.push_back(new CUICommand(eCmdMakeToolBarWindow, "Make ToolBar Window", "Make ToolBar Window", "MTBW"));
1604  commands.push_back(new CUICommand(eCmdEnableHupId, "Enable HUP-ID Loader", "Enable HUP-ID Loader", "", "", "", "", wxITEM_CHECK));
1605  commands.push_back(new CUICommand(eCmdIndexerTypeSelection, "Indexer Type", "Indexer Type", ""));
1606  commands.push_back(new CUICommand(eCmdTestDialogView, "Open Test DialogView", "Test DialogView", kEmptyStr));
1607  commands.push_back(new CUICommand(eCmdTestFormView, "Open Test FormView", "Test FormView", kEmptyStr));
1608  commands.push_back(new CUICommand(eCmdMacroEditor, "Macro Editor", "Macro Editor", "MACROE"));
1609  commands.push_back(new CUICommand(eCmdSuspectProductRulesEditor, "Suspect Product Rule Editor", "Suspect Product Rule Editor", "SPRE"));
1610  commands.push_back(new CUICommand(eCmdAdjustConsensusSpliceSitesStrict, "Strict", "Adjust Consensus Splice Sites Strict", "ACSS"));
1611  commands.push_back(new CUICommand(eCmdAdjustConsensusSpliceSitesStrict_ext, "Adjust CDS for Consensus Splice Sites (strict)", "Adjust Consensus Splice Sites Strict", "ACSS"));
1612  commands.push_back(new CUICommand(eCmdAdjustConsensusSpliceSitesRelaxed, "Relaxed", "Adjust Consensus Splice Sites Relaxed", "ACSR"));
1613  commands.push_back(new CUICommand(eCmdAdjustConsensusSpliceSitesRelaxed_ext, "Adjust CDS for Consensus Splice Sites (relaxed)", "Adjust Consensus Splice Sites Relaxed", "ACSR"));
1614  commands.push_back(new CUICommand(eCmdAdjustConsensusSpliceSitesConsensusEnds, "5' and 3' ends only", "Adjust Consensus Splice Sites Consensus Ends", "ACSENDS"));
1615  commands.push_back(new CUICommand(eCmdAdjustCDSForIntrons, "CDS", "Adjust CDS For Introns", "ACDSI"));
1616  commands.push_back(new CUICommand(eCmdAdjustrRNAForIntrons, "rRNA", "Adjust rRNA For Introns", "ARRNAI"));
1617  commands.push_back(new CUICommand(eCmdAdjusttRNAForIntrons, "tRNA", "Adjust tRNA For Introns", "ATRNAI"));
1618  commands.push_back(new CUICommand(eCmdAdjustmRNAForIntrons, "mRNA", "Adjust mRNA For Introns", "AMRNAI"));
1619  commands.push_back(new CUICommand(eCmdLatLonTool, "Lat-Lon Tool", "Lat-Lon Tool", "LLT"));
1620  commands.push_back(new CUICommand(eCmdCDSGeneRangeErrorSuppress, "Suppress", "CDS Gene Range Error Suppress", "CDSGRES"));
1621  commands.push_back(new CUICommand(eCmdCDSGeneRangeErrorRestore, "Restore", "CDS Gene Range Error Restore", "CDSGRER"));
1622  commands.push_back(new CUICommand(eCmdSuppressGenes, "Suppress Genes on Features", "Suppress Genes on Features", "SUPGF"));
1623  commands.push_back(new CUICommand(eCmdRemoveSegGaps, "Remove Seg Gaps", "Remove Seg Gaps", "RSEGGAPS"));
1624  commands.push_back(new CUICommand(eCmdRawSeqToDeltaByNs, "By Ns", "Raw Sequence To Delta By Ns", "RSDN"));
1625  commands.push_back(new CUICommand(eCmdRawSeqToDeltaByNs_ext, "Add Assembly Gaps to Sequence", "Add Assembly Gaps to Sequence" , "RSDN"));
1626  commands.push_back(new CUICommand(eCmdRawSeqToDeltaByLoc, "By Location", "By Location", "RSDL"));
1627  commands.push_back(new CUICommand(eCmdRawSeqToDeltaByAssemblyGapFeatures, "By Assembly_Gap Features", "By Assembly_Gap Features", ""));
1628  commands.push_back(new CUICommand(eCmdAdjustFeaturesForGaps, "Adjust Features for Gaps", "Adjust Features for Gaps", "AFFG"));
1629  commands.push_back(new CUICommand(eCmdDeltaSeqToRaw, "Delta Seq to Raw", "Delta Seq To Raw", "DSTR"));
1630  commands.push_back(new CUICommand(eCmdDeltaSeqToRaw_ext, "Remove Gap Features", "Remove Gap Features", "DSTR"));
1631  commands.push_back(new CUICommand(eCmdExpandGaps, "Expand Known Gaps to Include Flanking Ns", "Expand Known Gaps to Include Flanking Ns", "EKGFN"));
1632  commands.push_back(new CUICommand(eCmdConvertSelectedGapsToKnown, "To Known Length", "To Known Length", "CSGTK"));
1633  commands.push_back(new CUICommand(eCmdConvertSelectedGapsToUnknown, "To Unknown Length", "To Unknown Length", "CSGTU"));
1634  commands.push_back(new CUICommand(eCmdConvertGapsBySize, "Convert Known to Unknown (by Size)", "Convert Known to Unknown (by Size)", "CKTUS"));
1635  commands.push_back(new CUICommand(eCmdEditSelectedGaps, "Change Length of Selected Known Length Gaps", "Change Length of Selected Known Length Gaps", "CLSKG"));
1636  commands.push_back(new CUICommand(eCmdAddLinkageToGaps, "Add Linkage to All Gaps", "Add Linkage to All Gaps", "ALAG"));
1637  commands.push_back(new CUICommand(eCmdAddLinkageToGaps_ext, "Add Linkage Evidence to All Gaps", "Add Linkage to All Gaps", "ALAG"));
1638  commands.push_back(new CUICommand(eCmdCombineAdjacentGaps, "Combine Adjacent Gaps", "Combine Adjacent Gaps", "CAGAP"));
1639  commands.push_back(new CUICommand(eCmdSplitCDSwithTooManyXs, "Split CDS features with more than 50% N's", "Split CDS features with more than 50% N's", "SCDSN"));
1640  commands.push_back(new CUICommand(eCmdRmCultureNotes, "Remove Uncultured Notes", "Remove Uncultured Notes", "RUNN"));
1641  commands.push_back(new CUICommand(eCmdEditSeqId, "Edit Sequence IDs", "Edit Sequence IDs", "ESID"));
1642  commands.push_back(new CUICommand(eCmdRemoveLocalSeqIdsFromNuc, "From Nucleotides", "Remove Local Seq-id from Nucleotides", "RLIDN"));
1643  commands.push_back(new CUICommand(eCmdRemoveLocalSeqIdsFromProt, "From Proteins", "Remove Local Seq-id from Proteins", "RLIDP"));
1644  commands.push_back(new CUICommand(eCmdRemoveLocalSeqIdsFromAll, "From All Bioseqs", "Remove Local Seq-id from All Bioseqs", "RLIDA"));
1645  commands.push_back(new CUICommand(eCmdRemoveGiSeqIdsFromAll, "GI IDs from Bioseqs", "GI IDs from Bioseqs", "RGIB"));
1646  commands.push_back(new CUICommand(eCmdRemoveGenbankSeqIdsFromProt, "From Proteins", "From Proteins", "RGBP"));
1647  commands.push_back(new CUICommand(eCmdRemoveGenbankSeqIdsFromAll, "From All Bioseqs", "From All Bioseqs", "RGBA"));
1648  commands.push_back(new CUICommand(eCmdRemoveSeqIdNamesFromProtFeats, "Seq-ID Name From Prot Feats", "Seq-ID Name From Prot Feats", "RSINP"));
1649  commands.push_back(new CUICommand(eCmdConvertAccessionToLocalIdsAll, "For All Sequences", "For All Sequences", "CACCLA"));
1650  commands.push_back(new CUICommand(eCmdConvertAccessionToLocalIdsNuc, "For Nucleotide Sequences", "For Nucleotide Sequences", "CACCLN"));
1651  commands.push_back(new CUICommand(eCmdConvertAccessionToLocalIdsProt, "For Protein Sequences", "For Protein Sequences", "CACCLP"));
1652  commands.push_back(new CUICommand(eCmdConvertAccessionToLocalIdsName, "GenBank.name to LocalID", "GenBank.name to LocalID", "CNAML"));
1653  commands.push_back(new CUICommand(eCmdLocalToGeneralId, "LocalIDs to GeneralIDs", "Local Seq-id to General Seq-id", "LIDGID"));
1654  commands.push_back(new CUICommand(eCmdGeneralToLocalId, "GeneralIDs to LocalIDs", "GeneralIDs to LocalIDs", "GIDTOL"));
1655  commands.push_back(new CUICommand(eCmdRemoveGeneralId, "General IDs", "General IDs", "RGID"));
1656  commands.push_back(new CUICommand(eCmdRemoveUnnecessaryExceptions, "Remove Unnecessary Exceptions", "Remove Unnecessary Exceptions", "RUNE"));
1657  commands.push_back(new CUICommand(eCmdEditHistory, "Edit History", "Edit History", "EH"));
1658  commands.push_back(new CUICommand(eCmdUpdate_Replaced_EC_numbers,"Update Replaced EC Numbers", "Update Replaced EC Numbers", "URECN"));
1659  commands.push_back(new CUICommand(eCmdUpdateSequence, "Single Sequence", "Update Single Sequence", "USSSEQ"));
1660  commands.push_back(new CUICommand(eCmdUpdateSequence_ext, "Update Sequence", "Update Single Sequence", "USSSEQ"));
1661  commands.push_back(new CUICommand(eCmdUpdateSequenceClipboard, "Single Sequence (Clipboard)", "Update Single Sequence from Clipboard", "USSCLIP"));
1662  commands.push_back(new CUICommand(eCmdUpdateSequenceAccession, "Download Accession", "Update Single Sequence Accession", "USSACC"));
1663  commands.push_back(new CUICommand(eCmdUpdateMultiSequences, "Multiple Sequences", "Update Multiple Sequences from File", "UMSSFILE"));
1664  commands.push_back(new CUICommand(eCmdUpdateMultiSeqClipboard, "Multiple Sequences (Clipboard)", "Update Multiple Sequences from Clipboard", "UMSSCLIP"));
1665  commands.push_back(new CUICommand(eCmdImportFeatureTable, "Import Feature Table", "Import Feature Table", "IMPFTBL"));
1666  commands.push_back(new CUICommand(eCmdImportFeatureTable_ext, "5 Column Feature Table", "Import Feature Table", "IMPFTBL"));
1667  commands.push_back(new CUICommand(eCmdImportFeatureTableClipboard, "Import Feature Table from Clipboard", "Import Feature Table from Clipboard", "IMPFTBLC"));
1668  commands.push_back(new CUICommand(eCmdImportGFF3, "Import GFF3 File", "Import GFF3 File", "IMGFF"));
1669  commands.push_back(new CUICommand(eCmdImportGFF3_ext, "GFF3 File", "Import GFF3 File", "IMGFF"));
1670  commands.push_back(new CUICommand(eCmdLoadSecondaryAccessions, "Extra Accessions", "Extra Accessions", "LSAEA"));
1671  commands.push_back(new CUICommand(eCmdLoadSecondaryAccessionsHistoryTakeover, "History Takeover", "History Takeover", "LSAHT"));
1672  commands.push_back(new CUICommand(eCmdAddGlobalCodeBreak, "Add Global Code Break", "Add Global Code Break", "AGCB"));
1673  commands.push_back(new CUICommand(eCmdApplyStructuredCommentField, "Apply Structured Comment Field", "Apply Structured Comment Field", "ASTRCMNTFLD"));
1674  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixHIVData, "HIVData", "Replace Structured Comment to HIVData", "RSTRCMNT1"));
1675  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixFluData, "FluData", "Replace Structured Comment to FluData", "RSTRCMNT2"));
1676  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixMIGSData, "MIGSData", "Replace Structured Comment to MIGSData", "RSTRCMNT3"));
1677  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixMIMSData, "MIMSData", "Replace Structured Comment to MIMSData", "RSTRCMNT4"));
1678  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixMIENSData, "MIENSData", "Replace Structured Comment to MIENSData", "RSTRCMNT5"));
1679  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixMIMARKS3_0, "MIMARKS:3.0", "Replace Structured Comment to MIMARKS:3.0", "RSTRCMNT6"));
1680  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixMIGS3_0, "MIGS:3.0", "Replace Structured Comment to MIGS:3.0", "RSTRCMNT7"));
1681  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixMIMS3_0, "MIMS:3.0", "Replace Structured Comment to MIMS:3.0", "RSTRCMNT8"));
1682  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixAssemblyData, "AssemblyData", "Replace Structured Comment to AssemblyData", "RSTRCMNT9"));
1683  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixGenAssData, "GenomeAssemblyData", "Replace Structured Comment to GAssemblyData", "RSTRCMNT10"));
1684  commands.push_back(new CUICommand(eCmdEditStructuredCommentPrefixSuffixiBol, "iBOL", "Replace Structured Comment to iBOL", "RSTRCMNT11"));
1685  commands.push_back(new CUICommand(eCmdLinkSelectedmRNACDS, "Link Selected CDS and mRNA Pair", "Link Selected CDS and mRNA Pair", "LSCDSMRNAP"));
1686  commands.push_back(new CUICommand(eCmdLinkmRNACDSOverlap, "By Overlap", "Link CDS and mRNA by Overlap", "LCDSMRNAO"));
1687  commands.push_back(new CUICommand(eCmdLinkmRNACDSProduct, "By Product", "Link CDS and mRNA by Product", "LCDSMRNAP"));
1688  commands.push_back(new CUICommand(eCmdLinkmRNACDSLabel, "By Label", "Link CDS and mRNA by Label", "LCDSMRNALAB"));
1689  commands.push_back(new CUICommand(eCmdLinkmRNACDSLabelLocation, "By Label and Location", "Link CDS and mRNA by Label and Location", "LCDSMRNALABLOC"));
1690  commands.push_back(new CUICommand(eCmdLinkmRNACDSProteinID, "By Protein-ID Qualifier", "Link CDS and mRNA by protein-id qualifier", "LCDSMRNAPRQUAL"));
1691  commands.push_back(new CUICommand(eCmdLinkmRNACDSTranscriptID, "By Transcript-ID Qualifier", "Link CDS and mRNA by transcript-id qualifier", "LCDSMRNATRQUAL"));
1692  commands.push_back(new CUICommand(eCmdLinkmRNACDSUnidirectional, "From Unidirectional Xrefs", "Link CDS and mRNA from unidirectional Xrefs", "LSCDSMRNAUNID"));
1693  commands.push_back(new CUICommand(eCmdShowLinkedmRNACDS, "Show Linked CDS or mRNA Feature", "Show Linked CDS or mRNA Feature", "SLINKCDSMRNA"));
1694  commands.push_back(new CUICommand(eCmdShowFeatureTable, "Show Feature Table", "Show Feature Table", "SFEATTBL"));
1695  commands.push_back(new CUICommand(eCmdShowFeatureTable_ext, "Feature Table", "Show Feature Table", "SFEATTBL"));
1696  commands.push_back(new CUICommand(eCmdRestoreFromFile, "Restore from File", "Restore from Local File", "RFFILE"));
1697  commands.push_back(new CUICommand(eCmdRestoreAndConvertSeqSubmit, "Restore and Convert SeqSubmit", "Restore and Convert SeqSubmit", "RCVFFILE"));
1698  commands.push_back(new CUICommand(eCmdViewSortedProteins, "View Sorted Proteins (FASTA)", "View Sorted Proteins (FASTA)", "VSPF"));
1699  commands.push_back(new CUICommand(eCmdCheckForMixedStrands, "Check for Mixed Strands", "Check for Mixed Strands", "CMSTRAND"));
1700  commands.push_back(new CUICommand(eCmdPrepareSeqSubmit, "Genome Submission Wizard", "Prepare a Submission", "PREPASUB"));
1701  commands.push_back(new CUICommand(eCmdSaveSubmissionFile, "Save Submission File", "Save Submission File", "SSUBF"));
1702  commands.push_back(new CUICommand(eCmdSaveASN1File, "Save ASN.1 File", "Save ASN.1 File", "SVASN"));
1703  commands.push_back(new CUICommand(eCmdHelpReports_ext, "Help", "Help Reports", "HELPR"));
1704  commands.push_back(new CUICommand(eCmdHelpImport_ext, "Help", "Help Import", "HELPI"));
1705  commands.push_back(new CUICommand(eCmdHelpSequences_ext, "Help", "Help Sequences", "HELPS"));
1706  commands.push_back(new CUICommand(eCmdHelpFeatures_ext, "Help", "Help Features", "HELPF"));
1707  commands.push_back(new CUICommand(eCmdHelpComments_ext, "Help", "Help Comments", "HELPC"));
1708  commands.push_back(new CUICommand(eCmdHelpEditingTools_ext, "Help", "Help Editing Tools", "HELPET"));
1709  commands.push_back(new CUICommand(eCmdUpdateTLSName, "Update Targeted Locus Name", "Update Targeted Locus Name", "UPTLSNAME"));
1710 
1711 
1713 
1714  commands.push_back(new CUICommand(eCmdAddDefLine, "Add Definition Line", "Add Definition Line", "ADL"));
1715  commands.push_back(new CUICommand(eCmdPrefixOrgToDefLine, "Organism", "Prefix Defline With Organism", "PDLORG"));
1716  commands.push_back(new CUICommand(eCmdPrefixStrainToDefLine, "Strain", "Prefix Defline With Strain", "PDLSTR"));
1717  commands.push_back(new CUICommand(eCmdPrefixCloneToDefLine, "Clone", "Prefix Defline With Clone", "PDLCLO"));
1718  commands.push_back(new CUICommand(eCmdPrefixIsolateToDefLine, "Isolate", "Prefix Defline With Isolate", "PDLISO"));
1719  commands.push_back(new CUICommand(eCmdPrefixHaplotToDefLine, "Haplotype", "Prefix Defline With Haplotype", "PDLH"));
1720  commands.push_back(new CUICommand(eCmdPrefixCultivarToDefLine, "Cultivar", "Prefix Defline With Cultivar", "PDLCULT"));
1721  commands.push_back(new CUICommand(eCmdPrefixListToDefLine, "List", "Prefix Defline From List", "PDLLIST"));
1722 
1723  // annotate descriptors commands
1724  commands.push_back(new CUICommand(eCmdCreateDescTPAAssembly, "TPA Assembly", "TPA Assembly", "TPAA"));
1725  commands.push_back(new CUICommand(eCmdCreateDescStructuredComment, "Structured Comment", "Structured Comment", "SCD"));
1726  commands.push_back(new CUICommand(eCmdCreateDescRefGeneTracking, "RefGene Tracking", "RefGene Tracking", "RGT"));
1727  commands.push_back(new CUICommand(eCmdCreateDescDBLink, "DBLink", "DBLink", "DBLD"));
1728  commands.push_back(new CUICommand(eCmdCreateDescUnverified, "Unverified", "Unverified", "UVD"));
1729  commands.push_back(new CUICommand(eCmdCreateDescUnreviewed, "Unreviewed", "Unreviewed", "UNREV"));
1730  commands.push_back(new CUICommand(eCmdCreateDescAuthorizedAccess, "Authorized Access", "Authorized Access", "AAD"));
1731  commands.push_back(new CUICommand(eCmdCreateDescGenomeAssemblyComment, "Genome Assembly", "Genome Assembly", "GAD"));
1732  commands.push_back(new CUICommand(eCmdCreateDescGenBankBlock, "GenBank Block", "GenBank Block", "GBBD"));
1733  commands.push_back(new CUICommand(eCmdCreateDescComment, "Comment", "Comment", "CD"));
1734  commands.push_back(new CUICommand(eCmdCreateDescComment_ext, "Add Free Text Comment", "Comment", "CD"));
1735  commands.push_back(new CUICommand(eCmdCreateDescTitle, "Title", "Title", "TD"));
1736  commands.push_back(new CUICommand(eCmdCreateDescMolinfo, "Molecule Description", "Molinfo", "MIDD"));
1737  commands.push_back(new CUICommand(eCmdCreateDescSource, "Biological Source", "BioSource", "BSD"));
1738  commands.push_back(new CUICommand(eCmdCreateDescPub, "Publication Descriptor", "Publication", "PD"));
1739  commands.push_back(new CUICommand(eCmdCreateDescPub_ext, "Add Publication", "Publication", "PD"));
1740  commands.push_back(new CUICommand(eCmdSubmitter, "Submitter Report", "Submitter Report", "SDR"));
1741 
1742  commands.push_back(new CUICommand(eCmdCreateStructuredCommentPrefixSuffixMIMS, "Add", "MIMS Comment", "AMIMC"));
1743  commands.push_back(new CUICommand(eCmdCreateStructuredCommentPrefixSuffixMIGS, "Add", "MIGS Comment", "AMIGC"));
1744  commands.push_back(new CUICommand(eCmdCreateStructuredCommentPrefixSuffixMIMARKS, "Add", "MIMARKS Comment", "AMIMARC"));
1745  commands.push_back(new CUICommand(eCmdCreateStructuredCommentPrefixSuffixMIENSData, "Add", "MIENS Comment", "AMIENC"));
1746  commands.push_back(new CUICommand(eCmdCreateStructuredCommentPrefixSuffixGenAnnData, "Add", "Genome Annotation Comment", "AGANNC"));
1747  commands.push_back(new CUICommand(eCmdCreateStructuredCommentPrefixSuffixGenAssData, "Add", "Genome Assembly Comment", "AGASSC"));
1748  commands.push_back(new CUICommand(eCmdDeleteStructuredCommentPrefixSuffixMIMS, "Remove", "MIMS Comment", "RMIMC"));
1749  commands.push_back(new CUICommand(eCmdDeleteStructuredCommentPrefixSuffixMIGS, "Remove", "MIGS Comment", "RMIGC"));
1750  commands.push_back(new CUICommand(eCmdDeleteStructuredCommentPrefixSuffixMIMARKS, "Remove", "MIMARKS Comment", "RMIMARC"));
1751  commands.push_back(new CUICommand(eCmdDeleteStructuredCommentPrefixSuffixMIENSData, "Remove", "MIENS Comment", "RMIENC"));
1752  commands.push_back(new CUICommand(eCmdDeleteStructuredCommentPrefixSuffixGenAnnData, "Remove", "Genome Annotation Comment", "RGANNC"));
1753  commands.push_back(new CUICommand(eCmdDeleteStructuredCommentPrefixSuffixGenAssData, "Remove", "Genome Assembly Comment", "RGASSC"));
1754 
1755  return commands;
1756 }
1757 
1758 BEGIN_EVENT_TABLE(CSequenceEditingEventHandler, wxEvtHandler)
2280 
2281 
2282 // Please do not make overlapping UPDATE_UI_RANGEs. Every time there is an overlapping range here a cute kitten dies in horror!!!
2284 
2286 
2288 
2291 
2294  CSelectionServiceEvent::eClientAttached, CSelectionServiceEvent::eSelectionChanged,
2295  &CSequenceEditingEventHandler::x_OnSelectionEvent)
2296 END_EVENT_MAP()
2297 
2298 static
2299 WX_DEFINE_MENU(kEditingMenu)
2300  WX_SUBMENU("&Edit")
2303  WX_SUBMENU_INT("Update Sequences")
2309  WX_END_SUBMENU()
2312  WX_END_SUBMENU()
2313  WX_MENU_SEPARATOR_L("Contribs")
2314  WX_SUBMENU_INT("Sea&rch")
2315  WX_SUBMENU_INT("&Validate")
2319  WX_END_SUBMENU()
2322  WX_END_SUBMENU()
2323 
2324  WX_SUBMENU_EXT("Submission")
2327  WX_SUBMENU_EXT("Reports")
2335  WX_END_SUBMENU()
2336  WX_SUBMENU_EXT("Import")
2342  WX_END_SUBMENU()
2343  WX_SUBMENU_EXT("Sequences")
2356  WX_END_SUBMENU()
2357  WX_SUBMENU_EXT("Add Features")
2358  WX_SUBMENU_EXT("gene/mRNA/CDS")
2367  WX_END_SUBMENU()
2368  WX_SUBMENU_EXT("Structural RNAs")
2375  WX_END_SUBMENU()
2376  WX_SUBMENU_EXT("Regulatory")
2383  WX_END_SUBMENU()
2384  WX_SUBMENU_EXT("Protein Features")
2389  WX_END_SUBMENU()
2390  WX_SUBMENU_EXT("Other Features")
2405  WX_END_SUBMENU()
2408  WX_END_SUBMENU()
2410  WX_SUBMENU_EXT("Comments")
2412  WX_SUBMENU_EXT("MIMS Comment")
2415  WX_END_SUBMENU()
2416  WX_SUBMENU_EXT("MIGS Comment")
2419  WX_END_SUBMENU()
2420  WX_SUBMENU_EXT("MIMARKS Comment")
2423  WX_END_SUBMENU()
2424  WX_SUBMENU_EXT("MIENS Comment")
2427  WX_END_SUBMENU()
2428  WX_SUBMENU_EXT("GenomeAnnotation Comment")
2431  WX_END_SUBMENU()
2432  WX_SUBMENU_EXT("GenomeDataAssembly Comment")
2435  WX_END_SUBMENU()
2438  WX_END_SUBMENU()
2439  WX_SUBMENU_EXT("Editing Tools")
2455  WX_END_SUBMENU()
2456  WX_END_SUBMENU()
2457 
2458  WX_SUBMENU_INT("Advan&ced Editing")
2459  WX_SUBMENU_INT("Def Line")
2460  WX_SUBMENU_INT("Automatic Def Line")
2468  WX_END_SUBMENU()
2470  WX_SUBMENU_INT("Prefix Def Line With")
2478  WX_END_SUBMENU()
2480  WX_END_SUBMENU()
2490  WX_SUBMENU_INT("Source Focus")
2493  WX_END_SUBMENU()
2501  WX_SUBMENU_INT("PCR Fixes")
2507  WX_END_SUBMENU()
2508  WX_SUBMENU_INT("Influenza Virus Names")
2512  WX_END_SUBMENU()
2519  WX_SUBMENU_INT("Compare with Biosample")
2522  WX_END_SUBMENU()
2524  WX_SUBMENU_INT("Parse Organism Modifiers")
2526  WX_END_SUBMENU()
2527  WX_SUBMENU_INT("Consolidate Like Modifiers")
2530  WX_END_SUBMENU()
2531  WX_END_SUBMENU()
2532  WX_SUBMENU_INT("&Apply")
2535  WX_SUBMENU_INT("Add Named rRNA")
2544  WX_END_SUBMENU()
2548  WX_SUBMENU_INT("Add Common Feature")
2551  WX_END_SUBMENU()
2566  WX_SUBMENU_INT("Add Keyword")
2573  WX_END_SUBMENU()
2574  WX_SUBMENU_INT("Load Secondary Accessions from File")
2577  WX_END_SUBMENU()
2579  WX_END_SUBMENU()
2580  WX_SUBMENU_INT("&Remove")
2594  WX_SUBMENU_INT("Remove Text")
2597  WX_END_SUBMENU()
2598  WX_SUBMENU_INT("Remove Duplicate")
2602  WX_END_SUBMENU()
2609  WX_SUBMENU_INT("Remove Titles")
2610  WX_SUBMENU_INT("Protein")
2613  WX_END_SUBMENU()
2614  WX_END_SUBMENU()
2619  WX_SUBMENU_INT("Remove Xrefs")
2620  WX_SUBMENU_INT("Db_xrefs")
2627  WX_END_SUBMENU()
2628  WX_SUBMENU_INT("Taxon Xrefs")
2631  WX_END_SUBMENU()
2632  WX_SUBMENU_INT("Gene Xrefs")
2639  WX_END_SUBMENU()
2640  WX_END_SUBMENU()
2643  WX_SUBMENU_INT("Remove Proteins")
2647  WX_END_SUBMENU()
2648  WX_SUBMENU_INT("Remove IDs, SeqIDs, GI_IDs, LOCUS")
2649  WX_SUBMENU_INT("Local")
2653  WX_END_SUBMENU()
2654  WX_SUBMENU_INT("GenBank")
2657  WX_END_SUBMENU()
2661  WX_END_SUBMENU()
2663  WX_END_SUBMENU()
2667  WX_SUBMENU_INT("Convert CDS with Internal Stop Codon")
2671  WX_END_SUBMENU()
2686  WX_SUBMENU_INT("Convert IDs, Accessions, or GenBank.names")
2689  WX_SUBMENU_INT("Accession to LocalIDs")
2694  WX_END_SUBMENU()
2695  WX_END_SUBMENU()
2696  WX_SUBMENU_INT("Convert Second Protein Name and Description")
2699  WX_END_SUBMENU()
2700  WX_SUBMENU_INT("Convert Descriptors and Features")
2701  WX_SUBMENU_INT("Descriptor to Feature")
2704  WX_SUBMENU_INT("Publication")
2707  WX_END_SUBMENU()
2708  WX_END_SUBMENU()
2709  WX_SUBMENU_INT("Convert Full Length Feature to Descriptor")
2713  WX_END_SUBMENU()
2714  WX_END_SUBMENU()
2715  WX_END_SUBMENU()
2716  WX_SUBMENU_INT("&Edit")
2724  WX_SUBMENU_INT("Edit Feature")
2735  WX_END_SUBMENU()
2736  WX_SUBMENU_INT("Bulk Edit")
2742  WX_END_SUBMENU()
2743  WX_SUBMENU_INT("Extend Partial Features")
2746  WX_END_SUBMENU()
2758  WX_END_SUBMENU()
2759  WX_SUBMENU_INT("Authors and Publications")
2762  WX_SUBMENU_INT("Fix Capitalization")
2768  WX_END_SUBMENU()
2769  WX_SUBMENU_INT("Remove Publications")
2775  WX_END_SUBMENU()
2780  WX_SUBMENU_INT("Convert Author to Consortium")
2783  WX_END_SUBMENU()
2786  WX_END_SUBMENU()
2787  WX_SUBMENU_INT("CDS, Protein, and RNA")
2788  WX_SUBMENU_INT("Retranslate Coding Regions")
2792  WX_END_SUBMENU()
2796  WX_SUBMENU_INT("Adjust CDS for Consensus Splice Sites")
2800  WX_END_SUBMENU()
2801  WX_SUBMENU_INT("Adjust Features for Introns")
2806  WX_END_SUBMENU()
2810  WX_SUBMENU_INT("Recompute Suggested Intervals")
2813  WX_END_SUBMENU()
2814  WX_SUBMENU_INT("Fix Product Name Capitalization")
2817  WX_END_SUBMENU()
2820  WX_END_SUBMENU()
2821  WX_SUBMENU_INT("Structured Comments")
2823  WX_SUBMENU_INT("Edit Structured Comment Prefix-Suffix")
2835  WX_END_SUBMENU()
2849  WX_END_SUBMENU()
2850  WX_SUBMENU_INT("Cleanup and Fixup")
2857  WX_END_SUBMENU()
2858  WX_SUBMENU_INT("Display")
2864  WX_END_SUBMENU()
2865  WX_SUBMENU_INT("Desktop")
2881  WX_SUBMENU_INT("Utilities")
2885  WX_END_SUBMENU()
2886  WX_SUBMENU_INT("Indexer")
2888  WX_END_SUBMENU()
2889  WX_END_SUBMENU()
2890  WX_SUBMENU_INT("Link")
2891  WX_SUBMENU_INT("Feature IDs")
2897  WX_END_SUBMENU()
2898  WX_SUBMENU_INT("Create CDS-mRNA Links")
2906  WX_END_SUBMENU()
2909  WX_END_SUBMENU()
2910  WX_SUBMENU_INT("Projects")
2921  WX_END_SUBMENU()
2922  WX_SUBMENU_INT("Make Features and Fuse")
2933  WX_SUBMENU_INT("Exon features from")
2937  WX_END_SUBMENU()
2938  WX_END_SUBMENU()
2939  WX_SUBMENU_INT("Normalize, Map, Package")
2940  WX_SUBMENU_INT("CDSGeneRangeError")
2943  WX_END_SUBMENU()
2946  WX_END_SUBMENU()
2947  WX_SUBMENU_INT("Gap Sequences")
2948  WX_SUBMENU_INT("Raw Sequence To Delta")
2952  WX_END_SUBMENU()
2955  WX_SUBMENU_INT("Convert Selected Gaps")
2958  WX_END_SUBMENU()
2966  WX_END_SUBMENU()
2976 #ifdef _DEBUG
2980 #endif
2981  WX_SUBMENU_INT("Select")
2983  WX_END_SUBMENU()
2984  WX_SUBMENU_INT("Locus-tags")
2988  WX_END_SUBMENU()
2991  WX_END_SUBMENU()
2992  WX_SUBMENU_INT("&Annotate")
2993  WX_SUBMENU_INT("Genes and Named Regions")
3010  WX_END_SUBMENU()
3011  WX_SUBMENU_INT("Coding Regions and Transcripts")
3019  WX_END_SUBMENU()
3020  WX_SUBMENU_INT("Structural RNAs")
3026  WX_END_SUBMENU()
3027  WX_SUBMENU_INT("Bibliographic and Comments")
3030  WX_END_SUBMENU()
3031  WX_SUBMENU_INT("Sites and Bonds")
3039  WX_END_SUBMENU()
3040  WX_SUBMENU_INT("Remaining Features")
3059