94 #include <wx/filename.h>
106 , m_UndoManager(new
CUndoManager(x_GetUndoSize(), this))
107 , m_AssemblyInitialized(
false)
116 , m_UndoManager(new
CUndoManager(x_GetUndoSize(), this))
117 , m_AssemblyInitialized(
false)
120 LOG_POST(
Info <<
"CGBDocument(src, id, CGBProject_ver2) id = " <<
id <<
" " <<
this);
163 if (assembly)
return;
180 LOG_POST(
Info <<
"CGBDocument::CreateProjectScope() " <<
this);
291 string s =
"Failed to load project: \"" +
string(
m_Path.ToUTF8()) +
"\".";
316 *bytes_written =
count;
362 TViews::iterator it = std::find(
m_Views.begin(),
m_Views.end(), ref);
380 max_index =
max(max_index, it->second);
449 unique_ptr<CNcbiIfstream> istr;
451 if (fname.StartsWith(
wxT(
"http://")) || fname.StartsWith(
wxT(
"https://"))
452 || fname.StartsWith(
wxT(
"ftp://"))) {
454 unique_ptr<CNcbiIstream> is;
455 if (fname.StartsWith(
wxT(
"http"))) {
459 is.reset(http_str.release());
464 string host = _fname;
465 string::size_type pos = host.find_first_of(
"/", 6);
466 if (pos != string::npos) {
473 if (pos != string::npos) {
474 path = _fname.substr(pos, _fname.length() - pos);
510 reg.
GetBool(
"GBENCH.Application.IO.KeepBackups",
true);
521 string fmt_str = reg.
GetString(
"GBENCH.Application.IO.SerialFormat");
537 }
NCBI_CATCH(
"Exception while saving view settings to project");
540 [
this, &abs_path, fmt, keep_backups](
ICanceled&) { this->
x_SaveFile(abs_path, fmt, keep_backups); },
541 wxT(
"Saving Project..."));
549 string fileName(fname.ToUTF8());
551 LOG_POST(
Info <<
"CGBDocument::x_SaveFile(" << fileName <<
")");
559 bool serialization_success =
true;
560 wxString serialized_fname;
563 serialized_fname = fname;
564 for (
int i = 1; ; ++
i) {
566 if ( !::wxFileExists(
f) ) {
567 serialized_fname =
f;
575 catch (std::exception& e) {
577 <<
"): error in serialization: " << e.what());
578 serialization_success =
false;
582 if (serialization_success) {
590 is->Skip(CGBProject::GetTypeInfo());
594 is->Skip(CGBProject_ver2::GetTypeInfo());
607 catch (std::exception& e) {
609 <<
"): error in scanning file: " << e.what());
610 serialization_success =
false;
614 if ( !serialization_success ) {
617 ::wxRemoveFile(serialized_fname);
620 string msg(
"An error occurred while saving '");
621 msg += fname.ToUTF8();
623 if ( ::wxFileExists(fname) ) {
624 msg +=
"The original file was not overwrtten and should be safe.\n";
626 msg +=
"\nYou can try to save the file again, or optionally\n";
627 msg +=
"export any project items individually to preserve the data.";
637 wxString backup_fname = fname +
wxT(
".bak");
638 if (::wxFileExists(backup_fname))
639 ::wxRemoveFile(backup_fname);
640 if (::wxFileExists(fname))
641 ::wxRenameFile(fname,backup_fname);
642 }
else if (::wxFileExists(fname)) {
643 ::wxRemoveFile(fname);
645 ::wxRenameFile(serialized_fname, fname);
650 static int undoSize = -1;
651 if (undoSize == -1) {
655 undoSize = view.
GetInt(
"UndoBufferSize", undoSize);
657 catch (
const exception&) {
660 return (
size_t)undoSize;
666 handles->Attach(scope, item);
681 ITERATE(vector<IProjectItemExtension*>, it, clients) {
682 string extName =
"Unknown extension";
686 (*it)->ProjectItemAttached(item, doc, srvLocator);
687 }
NCBI_CATCH(
"Project item attached \"" + extName +
"\" error.");
693 ITERATE(vector<IProjectItemExtension*>, it, clients) {
694 string extName =
"Unknown extension";
698 (*it)->ProjectItemDetached(item, doc, srvLocator);
699 }
NCBI_CATCH(
"Project item detached \"" + extName +
"\" error.");
709 for (TViews::iterator it =
m_Views.begin(); it !=
m_Views.end(); ++it) {
712 for (TConstScopedObjects::const_iterator it2 =
objects.begin(); it2 !=
objects.end(); ++it2) {
713 const CObject*
object = it2->object.GetPointer();
717 objToView[object] = it->GetPointer();
721 if (!objToView.
empty()) {
724 if (it2 != objToView.
end()) {
725 viewToDelete.
insert(it2->second);
738 if (!item)
return false;
739 vector<CProjectItem*> items;
740 items.push_back(item);
750 bool removed =
false;
752 for (
size_t i = 0;
i < items.size(); ++
i) {
756 int id = item->
GetId();
775 vector<CProjectItem*> items;
776 items.push_back(item);
783 vector<CProjectItem*> items;
784 items.push_back(item);
795 for (
size_t i = 0;
i < items.size(); ++
i) {
801 vector<IProjectItemExtension*> clients;
803 if (!clients.empty()) {
820 vector<CProjectItem*> enabled;
822 for (
size_t i = 0;
i < items.size(); ++
i) {
825 vector<IProjectItemExtension*> clients;
827 if (!clients.empty()) {
831 enabled.push_back(item);
838 if (!enabled.empty()) {
842 for (
auto pi : enabled)
845 wxT(
"Unloading project item..."));
923 if ((*it).GetPointer() == &adapter) {
934 if ((*it).GetPointer() == &adapter) {
952 for (
size_t i = 0;
i < items.size(); ++
i) {
964 if (
label != uniqueLabel) {
970 for (
auto& d : annot.
SetDesc().Set()) {
972 if (d->GetName() ==
label)
973 d->SetName(uniqueLabel);
987 adapter->
Start(*job);
994 string projName =
"N/A";
996 const objects::CProjectDescr& descr = GetDescr();
997 projName = descr.GetTitle();
999 string msg =
"Adding items to \"" + projName +
"\"";
1002 if (task_srv) task_srv->
AddTask(*task);
1013 if (!folderName.empty()) {
1018 info.SetTitle(folderName);
1019 info.SetComment(folderName);
1022 folder = new_folder;
1025 folder = &topFolder;
1028 for (
size_t i = 0;
i < items.size(); ++
i)
1029 AddItem(*items[
i], *folder);
1034 const string& s = (*iter)->GetLabel();
1042 const string& loader_type = loader->GetLoader_type();
1045 if (data_source != 0) {
1046 string loader_name = data_source->
GetLoaderName(loader->GetData());
1048 bool loaded =
false;
1055 if (curr_name == loader_name) {
1064 string label = loader->GetLabel();
1066 if (
label != uniqueLabel)
1067 loader->SetLabel(uniqueLabel);
1070 AddDataLoader(*loader);
1074 vector<IProjectItemExtension*> clients;
1076 if (!clients.empty()) {
1078 for (
size_t i = 0;
i < items.size(); ++
i)
1090 if (m_Project->IsSetDataLoaders()) {
1091 TDataLoaders& loaders = m_Project->SetDataLoaders();
1093 if ((*iter)->GetLabel() == loader.
GetLabel()) {
1094 loaders.erase(iter);
1112 srv->GetDataSources(data_sources);
1116 for (
size_t i = 0;
i < data_sources.size(); ++
i) {
1134 if (data_source == 0)
1143 if (loader_name.empty()) {
1176 if (loader_name_field)
1178 if (loader_name.empty()) {
1180 if (data_source == 0)
1184 if (loader_name.empty())
1196 }
NCBI_CATCH(
"Failed to detach data loader \"" + loader.
GetLabel() +
"\" from scope.");
1213 TDataLoaders& loaders = m_Project->SetDataLoaders();
1222 TDataLoaders& loaders = m_Project->SetDataLoaders();
1234 vector<IProjectItemExtension*> clients;
1239 if (!it->IsEnabled())
1242 if (!clients.empty()) {
1254 input.push_back(it->second);
1258 for (
size_t i = 0;
i <
results.size(); ++
i) {
1263 gis[
i].first->SetItem().SetId().
Assign(*seqId);
1276 if (!it->CanGetItem() || !it->GetItem().IsId())
continue;
1277 const CSeq_id& seqId = it->GetItem().GetId();
1278 if (!seqId.
IsGi())
continue;
1281 if (gis.size() >= 2000) {
1289 if (gis.size() > 0) {
1328 vector<IProjectItemExtension*> clients;
1333 if (!clients.empty()) {
1356 for (
size_t i = 0;
i < views.size();
i++) {
1369 if (!smartFile.empty()) {
1370 return wxFileName(wxString::FromUTF8(smartFile.c_str())).GetPath();
1373 return wxEmptyString;
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
std::invoke_result< _Fty, ICanceled & >::type GUI_AsyncExec(_Fty &&_Fnarg, const wxString &msg=wxT("Accessing network..."))
const string & GetFolderName() const
vector< CRef< CProjectItem > > m_Items
vector< CRef< CProjectItem > > & GetProjectItems()
CAddItemsData(const string &folderName, vector< CRef< CProjectItem > > &items, const CGBDocument::TLoaders &loaders)
const CGBDocument::TLoaders & GetLoaders() const
CGBDocument::TLoaders m_Loaders
CAppJobError Default implementation for IAppJobError - encapsulates a text error message.
CAppJob - default implementation of IAppJob that could be used as a base class.
CAppTaskService - Application Task Service.
virtual string x_GetJobName() const
virtual string GetDescr() const
Returns a human readable description of the Job (optional)
CAttachProjectItemsJob(CAddItemsData &data, CScope &scope)
virtual ~CAttachProjectItemsJob()
CRef< CAddItemsData > m_Data
virtual CRef< CObject > GetResult()
Returns the Job Result.
CRef< CAppJobError > m_Error
virtual CConstIRef< IAppJobError > GetError()
Returns IAppJobError object describing internal error that caused the Job to fail.
virtual CConstIRef< IAppJobProgress > GetProgress()
return progress object, the function shall be synchronized internally.
virtual EJobState Run()
Function that does all the useful work, called by the Engine.
void Detach(objects::CScope &scope)
CConn_FtpStream specialization (ctor) for download.
This stream exchanges data with an HTTP server located at the URL: http[s]://host[:port]/path[?...
virtual EJobState Run()
Function that does all the useful work, called by the Engine.
CRef< CGBDocument > m_Document
CDocLoadingJob(CGBDocument &doc, const wxString &path)
void SetFileName(const wxString &filename)
TViews & x_GetViews(void)
void Save(const wxString &abs_path)
void x_ProjectViewsChanged()
void ProjectItemsChanged()
bool RemoveProjectItems(const vector< objects::CProjectItem * > &items)
friend class CDocLoadingJob
void DetachProjectItem(objects::CProjectItem *item)
CIRef< IAppJob > m_LoadJob
virtual void OnJobResult(CObject *result, CJobAdapter &adapter)
string GetDefaultAssembly() const
bool DetachDataLoader(objects::CLoaderDescriptor &loader)
friend class CAddItemsData
bool LoadFile(const wxString &fname, ICanceled *canceledCallback)
void x_DetachView(IProjectView *view)
detach a view from the current document
TViewToIndex m_ViewToIndex
static size_t x_GetUndoSize()
void x_AddItems(const string &folderName, vector< CRef< objects::CProjectItem > > &items, const TLoaders &loaders)
void AttachProjectItems(const vector< objects::CProjectItem * > &items)
IDataLoaderProvider * x_GetDataSourceByType(const string &type)
void ReplaceGiSeqIds(ICanceled *canceled)
virtual void OnJobFailed(const string &, CJobAdapter &adapter)
virtual void CreateProjectScope()
wxString GetWorkDir() const
bool RemoveDataLoader(objects::CLoaderDescriptor &loader)
void x_RemoveAllViews(bool reset_hist_async)
virtual const TViews & GetViews(void) const
Retrieve the existing views for this class.
void x_CloseProjectItemViews(objects::CProjectItem &item)
void x_ProjectUpdateLabel()
void x_AttachDataLoaders()
void UnloadProject(bool reset_hist_async=true)
void x_ClearAssembly() const
CProjectService * m_Service
pointer to the service that manages the document
IAppJob * CreateLoadJob(const wxString &fileName)
void x_AttachProjectItems()
void AddItems(const string &folderName, vector< CRef< objects::CProjectItem > > &items, const TLoaders &loaders)
CGBDocument(CProjectService *srv)
CGBDocument.
void x_DetachDataLoaders()
bool AttachDataLoader(objects::CLoaderDescriptor &loader)
void x_SaveFile(const wxString &fname, ESerialDataFormat fmt, bool keep_backups)
wxString GetFileName() const
void ProjectStateChanged()
void x_AssignViewIndex(IProjectView *view)
void DetachProjectItems(const vector< objects::CProjectItem * > &items)
void x_AttachView(IProjectView *view)
Attach a view to the current document.
vector< TLoaderRef > TLoaders
vector< CIRef< IProjectView > > TViews
bool RemoveProjectItem(objects::CProjectItem *item)
void x_DetachProjectItems()
void x_InitializeAssembly() const
bool m_AssemblyInitialized
virtual void x_FireViewEvent(IProjectView &view, CViewEvent::EEventType type)
TViews m_Views
Views attached to this project.
string m_AssemblyAccession
list< CRef< CJobAdapter > > m_JobAdapters
virtual void x_FireProjectChanged(TEvent::EEventSubtype subtype)
void ViewLabelChanged(IProjectView &view)
void AttachProjectItem(objects::CProjectItem *item)
void Save(CNcbiOstream &ostr, ESerialDataFormat fmt) const
Serialize to a stream in a given format.
bool Load(CNcbiIstream &istr, ICanceled *canceledCallback)
force a project to be loaded from an external stream
string GetAccession() const
Retrieve the accession for this assembly.
static CGuiRegistry & GetInstance()
access the application-wide singleton
CRegistryReadView GetReadView(const string §ion) const
get a read-only view at a particular level.
string GetString(const string &key, const string &default_val=kEmptyStr) const
bool GetBool(const string &key, bool default_val=false) const
Base class to build jobs with cancel functionality.
NULL stream writer for test serialization.
ERW_Result Write(const void *buf, size_t count, size_t *bytes_written)
Write up to "count" bytes from the buffer pointed to by the "buf" argument onto the output device.
ERW_Result Flush()
Flush pending data (if any) down to the output device.
const CProjectFolder * FindProjectItemFolder(CProjectItem::TId id) const
bool RemoveChildItem(CProjectItem &child_item)
const CProjectItem * GetProjectItem(CProjectItem::TId id) const
CProjectFolder * FindChildFolderByTitle(const string &title)
void AddChildFolder(CProjectFolder &child_folder)
CObject * GetUserObject()
const CSerialObject * GetObject() const
retrieve the object pointed to as a CObject*
void SetUserObject(CObject *object)
bool IsEnabled(void) const
enabled flag
CProjectService - a service providing API for operations with Workspaces and Projects.
IServiceLocator * GetServiceLocator()
void RemoveProjectView(IProjectView &view)
removes the view from View manager Service and disconnects it from the project
CProjectTreePanel - a window that represents Project View.
void ProjectUpdateLabel(CGBDocument &doc)
void ProjectViewsChanged(CGBDocument &doc)
void ProjectUpdateItems(CGBDocument &doc)
void ProjectStateChanged(CGBDocument &doc)
void UpdateViewLabel(CGBDocument &doc, IProjectView &view)
CProjectTreeView - a system view that displays Project Tree.
virtual wxWindow * GetWindow()
returns a pointer to the wxWindow representing the client
class CRegistryReadView provides a nested hierarchical view at a particular key.
int GetInt(const string &key, int default_val=0) const
access a named key at this level, with no recursion
Base class for all serializable objects.
Template class for iteration on objects of class C (non-medifiable version)
Template class for iteration on objects of class C.
vector< TUIDataSourceRef > TUIDataSourceVec
CUniqueLabelGenerator Modifies the given label so that it becomes unique in the given set of labels b...
CConstRef< CUser_field > GetFieldRef(const string &str, const string &delim=".", NStr::ECase use_case=NStr::eCase) const
@ eViewReleased
a view has been initialized and ready
Interface for testing cancellation request in a long lasting operation.
IDataLoaderProvider - an interface representing a Data Source.
IExtension IExtension interface represents an abstract pluggable component.
IGBProject - abstract interface for a project used by CGBProjectHandle.
list< CRef< CLoaderDescriptor > > TDataLoaders
virtual EProjectVersion GetVersion() const =0
retrieve this project's version; this is fixed per subclass
class IProjectView defines the abstract interface for views observing projects.
virtual void SetAsyncDestroy(bool reset_hist_async)=0
Set async destruction mode.
virtual void DestroyView()=0
disconnects view from the project and associated data
IServiceLocator - an abstract mechanism for locating services.
IViewManagerService IViewManagerService manages views in Workbench.
virtual void SaveSettingsAtProject(objects::CGBProjectHandle &project) const =0
virtual string GetClientLabel(IWMClient::ELabel ltype=IWMClient::eDefault) const =0
returns the client label (name) to be displayed in UI
A very basic data-write interface.
container_type::iterator iterator
const_iterator end() const
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
void(*)(CSeq_entry_Handle seh, IWorkbench *wb, const CSerialObject &obj) handler
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Error(CExceptionArgs_Base &args)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
#define NCBI_CATCH(message)
Catch CExceptions as well This macro is deprecated - use *_X or *_XX variant instead of it.
void Info(CExceptionArgs_Base &args)
virtual bool Remove(TRemoveFlags flags=eRecursive) const
Remove a directory entry.
static string GetTmpName(ETmpFileCreationMode mode=eTmpFileGetName)
Get temporary file name.
CIRef< T > GetServiceByType()
retrieves a typed reference to a service, the name of C++ type is used as the name of the service.
void AddTask(IAppTask &task)
Add a task to the queue.
vector< CIRef< IView > > TViews
virtual void GetViews(TViews &views)=0
get all registered views
virtual void RemoveFromWorkbench(IView &view)=0
disconnects view from services and removes from the Workbench
virtual string AddDataLoader(const objects::CUser_object &obj)=0
Add a new data loader to object manager.
virtual string GetLoaderName(const objects::CUser_object &obj) const =0
Get the data loader's name based on input object.
virtual void RemoveListener(CEventHandler *listener)
Remove a listener.
ICanceled * x_GetICanceled()
CRef< CAppJobError > m_Error
void GetExtensionAsInterface(const string &ext_point_id, vector< CIRef< I > > &interfaces)
GetExtensionAsInterface() is a helper function that extracts all extensions implementing the specifie...
string MakeUniqueLabel(const string &label) const
after considering all existing labels produces a modified unique version of the original label
CAppJobDispatcher::TJobID GetJobId() const
virtual string GetExtensionIdentifier() const =0
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
virtual bool IsCanceled() const override
static void SetLabelByData(objects::CProjectItem &item, objects::CScope *scope=NULL)
void AddExistingLabel(const string &label)
adds an existing label
void Post(CRef< CEvent > evt, EDispatch disp_how=eDispatch_Default, int pool_name=ePool_Default)
Handles an event asynchronously (process and/or dispatch).
EJobState
Job states (describe FSM)
virtual void AddListener(CEventHandler *listener, int pool_name=ePool_Default)
Add a listener.
vector< SConstScopedObject > TConstScopedObjects
virtual bool Send(CEvent *evt, EDispatch disp_how=eDispatch_Default, int pool_name=ePool_Default)
Sends an event synchronously.
ESerialDataFormat
Data file format.
@ eSerial_AsnText
ASN.1 text.
@ eSerial_AsnBinary
ASN.1 binary.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
CConstRef< CSeq_id > GetSeqIdOrNull(void) const
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
static CObjectIStream * Open(ESerialDataFormat format, CNcbiIstream &inStream, bool deleteInStream)
Create serial object reader and attach it to an input stream.
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
void ResetHistory(EActionIfLocked action=eKeepIfLocked)
Clean all unused TSEs from the scope's cache and release the memory.
void AddDataLoader(const string &loader_name, TPriority pri=kPriority_Default)
Add data loader by name.
static CRef< CObjectManager > GetInstance(void)
Return the existing object manager or create one.
TSeq_id_Handles GetAccVers(const TSeq_id_Handles &idhs, TGetFlags flags=0)
Get accession.version Seq-id Returns null CSeq_id_Handles for sequences that aren't found or don't ha...
void AddDefaults(TPriority pri=kPriority_Default)
Add default data loaders from object manager.
int TPriority
priority type and special value for added objects
void RemoveDataLoader(const string &loader_name, EActionIfLocked action=eThrowIfLocked)
Revoke data loader from the scope.
vector< CSeq_id_Handle > TSeq_id_Handles
Bulk retrieval methods Common argument typedef - vector of requested ids.
@ kPriority_Default
Use default priority for added data.
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
virtual bool IsCanceled(void) const =0
ERW_Result
Result codes for I/O operations.
IO_PREFIX::ofstream CNcbiOfstream
Portable alias for ofstream.
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
bool NcbiStreamCopy(CNcbiOstream &os, CNcbiIstream &is)
Copy the entire contents of stream "is" to stream "os".
@ eRW_Success
Everything is okay, I/O completed.
static int CompareNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive compare of a substring with another string.
@ eCurrent
Use current time. See also CCurrentTime.
static const char label[]
bool IsSetLabel(void) const
user-defined label Check if a value has been assigned to Label data member.
void SetDisabled(TDisabled value)
Assign a value to Disabled data member.
void SetLabel(const TLabel &value)
Assign a value to Label data member.
void SetData(TData &value)
Assign a value to Data data member.
TId GetId(void) const
Get the Id member data.
void SetEnabled(TEnabled value)
Assign a value to Enabled data member.
const TLabel & GetLabel(void) const
Get the Label member data.
const TLoader_type & GetLoader_type(void) const
Get the Loader_type member data.
const TLabel & GetLabel(void) const
Get the Label member data.
TEnabled GetEnabled(void) const
Get the Enabled member data.
bool IsSetPriority(void) const
loader priority used in object manager Check if a value has been assigned to Priority data member.
bool IsAnnot(void) const
Check if variant Annot is selected.
const TItem & GetItem(void) const
Get the Item member data.
void SetInfo(TInfo &value)
Assign a value to Info data member.
void SetItem(TItem &value)
Assign a value to Item data member.
TPriority GetPriority(void) const
Get the Priority member data.
const TData & GetData(void) const
Get the Data member data.
const TFilename & GetFilename(void) const
Get the Filename member data.
TFilename & SetFilename(void)
Assign a value to Filename data member.
const TStr & GetStr(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
bool IsGi(void) const
Check if variant Gi is selected.
void SetDesc(TDesc &value)
Assign a value to Desc data member.
bool CanGetDesc(void) const
Check if it is safe to call GetDesc method.
USING_SCOPE(objects)
specific supported project versions
static void s_AttachProjectItem(CProjectItem &item, CScope &scope)
vector< pair< CProjectItem *, CSeq_id_Handle > > TGiProjectItems
static const char * kLoaderName
static void s_ReplaceGIs(TGiProjectItems &gis, CScope &scope)
static CProjectTreePanel * s_FindProjectTreePanel(IServiceLocator *serviceLocator)
static void s_CallExtensionProjectItemDetached(CGBDocument &doc, vector< IProjectItemExtension * > &clients, CProjectItem &item, IServiceLocator *srvLocator)
static void s_CallExtensionProjectItemAttached(CGBDocument &doc, vector< IProjectItemExtension * > &clients, CProjectItem &item, IServiceLocator *srvLocator)
static void s_DetachProjectItem(CProjectItem &item, CScope &scope)
CProject * GetProject(wxTreeCtrl &treeCtrl, const CItem &item)
std::istream & in(std::istream &in_, double &x_)
#define EXT_POINT__PROJECT_ITEM_EXTENSION
Reader-writer based streams.
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
STempFileLocker(const string &tmp_name)
string ToStdString(const wxString &s)
wxString FnToWxString(const string &s)
string FnToStdString(const wxString &s)