71 #include <wx/artprov.h>
75 #include <wx/wupdlock.h>
77 #include <wx/msgdlg.h>
78 #include <wx/clipbrd.h>
79 #include <wx/settings.h>
89 m_AcceptableData(
false)
91 wxDataObjectComposite* composite =
new wxDataObjectComposite();
92 composite->Add(
new wxFileDataObject);
94 SetDataObject(composite);
100 wxDataObjectComposite* composite =
dynamic_cast<wxDataObjectComposite*
>(m_dataObject);
101 wxDataFormat
format = composite->GetReceivedFormat();
102 if (
format == wxDF_FILENAME)
112 wxDataObjectComposite* composite =
dynamic_cast<wxDataObjectComposite*
>(m_dataObject);
113 wxDataFormat
format = composite->GetReceivedFormat();
114 if (
format == wxDF_FILENAME)
127 wxDataObjectComposite* composite =
dynamic_cast<wxDataObjectComposite*
>(m_dataObject);
128 wxDataFormat
format = composite->GetReceivedFormat();
129 if (
format == wxDF_FILENAME) {
130 wxFileDataObject *fileDataObj =
dynamic_cast<wxFileDataObject*
>
131 (composite->GetObject(wxDF_FILENAME));
133 if(fileDataObj && (def == wxDragMove || def == wxDragCopy || def == wxDragLink)) {
134 wxArrayString
filenames = fileDataObj->GetFilenames();
136 vector<wxString>
names;
139 for(
size_t i = 0;
i <
n;
i++ ){
149 (composite->GetObject(
format));
175 const wxValidator &validator,
176 const wxString& name)
177 : wxTreeCtrl(parent, id, pos,
size, style, validator, name)
183 wxTextCtrl*
t = wxTreeCtrl::EditLabel(item, textCtrlClass);
190 #ifdef NCBI_OS_DARWIN
202 wxTreeEvent tree_event;
214 bool b =
event.CmdDown();
221 #ifdef __WXOSX_COCOA__
229 wxDragResult ignore_me = wxDragMove;
231 event.GetPosition(&x,&y);
299 : m_DataObject(
NULL),
318 #ifdef __WXOSX_COCOA__
319 SetBackgroundStyle(wxBG_STYLE_COLOUR);
320 SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
322 wxPanel::Create(parent,
id, pos,
size, wxBORDER_NONE);
334 wxSizer* sizer =
new wxBoxSizer(wxVERTICAL);
337 long style = wxTR_HAS_BUTTONS | wxTR_MULTIPLE | wxTR_EDIT_LABELS
343 sizer->Add(
m_Tree, 1, wxEXPAND);
356 wxTreeItemId rootId =
m_Tree->GetRootItem();
358 m_Tree->DeleteChildren(rootId);
379 GetSelectedItems(sel_items);
382 unique_ptr<wxMenu> menu(cmd_reg.
CreateMenu(kContextMenu));
385 contrib = x_GetContextMenu(sel_items);
386 wxMenu* obj_menu = contrib.first;
388 Merge(*menu, *obj_menu);
391 wxEvtHandler*
handler = contrib.second;
393 m_ContributedHandlers.push_back(
handler);
399 vector< CIRef<IExplorerItemCmdContributor> > contributors;
400 static string id(
"project_tree_view::context_menu::item_cmd_contributor");
404 for(
size_t i = 0;
i < contributors.size();
i++ ) {
407 contrib = obj.
GetMenu(*m_Tree, sel_items);
409 wxMenu* obj_menu = contrib.first;
411 Merge(*menu, *obj_menu);
415 wxEvtHandler*
handler = contrib.second;
417 m_ContributedHandlers.push_back(
handler);
422 delete contrib.second;
428 PopupMenu(menu.get());
432 for(
size_t i = 0;
i < m_ContributedHandlers.size();
i++ ) {
433 wxEvtHandler*
handler = PopEventHandler();
437 m_ContributedHandlers.clear();
442 if (!
m_WS || projectId == -1)
return;
445 if (!doc || !doc->IsLoaded())
return;
448 vector< CIRef<IProjectView> > views = doc->
GetViews();
454 if (objs.size() == 1 && objs[0].object == gbproj) {
468 ITERATE (wxArrayTreeItemIds, it, items)
471 wxArrayTreeItemIds topItems;
472 ITERATE (wxArrayTreeItemIds, it, items) {
473 wxTreeItemId parent = treeCtrl.GetItemParent(*it);
474 while (parent.IsOk()) {
475 if (items_set.
find(parent) != items_set.
end())
477 parent = treeCtrl.GetItemParent(parent);
481 topItems.push_back(*it);
489 wxArrayTreeItemIds sel_ids;
490 m_Tree->GetSelections(sel_ids);
491 if (sel_ids.empty())
return 0;
493 ITERATE (wxArrayTreeItemIds, it, sel_ids) {
506 if (!data_object)
return;
508 wxClipboardLocker clipLocker;
509 if (!clipLocker)
return;
510 wxTheClipboard->SetData(data_object);
515 wxClipboardLocker clipLocker;
516 if (!clipLocker)
return;
519 wxTheClipboard->Clear();
532 wxTreeItemId rootId =
m_Tree->GetRootItem();
534 m_Tree->DeleteChildren(rootId);
537 rootId =
m_Tree->AddRoot(
wxT(
""), -1, -1, item);
552 wxTreeItemId rootId =
m_Tree->GetRootItem();
553 if (!rootId.IsOk())
return 0;
565 wxTreeItemData*
data =
m_Tree->GetItemData(
id);
575 wxArrayTreeItemIds sel_ids;
576 m_Tree->GetSelections(sel_ids);
583 wxTreeItemIdValue cookie;
585 wxTreeItemId item =
m_Tree->GetFirstChild( root, cookie );
591 if(
m_Tree->ItemHasChildren( item ) )
595 item =
m_Tree->GetNextChild( root, cookie);
602 wxArrayTreeItemIds ids;
611 for(
size_t i = 0;
i < ids.GetCount();
i++ ) {
612 wxTreeItemId
id = ids[
i];
614 items.push_back(item);
621 wxArrayTreeItemIds sel_ids;
622 m_Tree->GetSelections(sel_ids);
624 if(sel_ids.size() == 1) {
650 wxTreeItemId
id =
event.GetItem();
658 wxTreeItemId
id =
event.GetItem();
659 if (!
id.IsOk())
return;
677 if (
m_WS && projectId != -1) {
681 wxWindowUpdateLocker locker(
m_Tree);
684 },
wxT(
"Expanding project items..."));
686 NCBI_CATCH(
"CProjectTreePanel::OnItemActivated");
709 int def_command = ds->GetDefaultCommand();
711 menu_srv->AddPendingCommand(def_command);
713 wxEvtHandler*
handler = ds->CreateEvtHandler();
759 #ifdef __WXOSX_COCOA__
766 wxDragResult res =
source.DoDragDrop(wxDragCopy | wxDragMove);
780 if(res == wxDragError) {
782 ERR_POST(
"CProjectTreePanel::OnBeginDrag() - Unexpected error while performing D&D");
793 wxTreeItemId
id =
m_Tree->HitTest( event.GetPoint(),
flags);
812 wxArrayTreeItemIds sel_ids;
813 m_Tree->GetSelections(sel_ids);
816 for(
size_t i = 0;
i < sel_ids.size();
i++ ) {
817 wxTreeItemId
id = sel_ids[
i];
818 m_Tree->SelectItem(
id,
false);
821 for(
size_t i = 0;
i < ids.size();
i++ ) {
822 wxTreeItemId
id = ids[
i];
823 m_Tree->SelectItem(
id,
true);
834 static const double kExpandDelay = 0.5;
837 wxTreeItemId
id =
m_Tree->HitTest(wxPoint(x, y),
flags);
885 if( def == wxDragCopy || def == wxDragMove ){
887 wxTreeItemId
id =
m_Tree->HitTest( wxPoint(x, y),
flags );
893 bool move = (def == wxDragMove);
907 const wxKeyEvent& keyEvent =
event.GetKeyEvent();
910 if (WXK_F2 != keyEvent.GetKeyCode() || keyEvent.GetModifiers() != wxMOD_NONE) {
915 wxArrayTreeItemIds items;
916 if (
m_Tree->GetSelections(items) != 1)
919 wxTreeItemId item = items[0];
928 wxTreeItemId item =
event.GetItem();
935 wxTreeItemId item =
event.GetItem();
949 if (sel_items.size() == 1) {
950 wxClipboardLocker clipLocker;
951 if (!clipLocker)
return;
954 if (!wxTheClipboard->GetData(data_object))
956 wxTheClipboard->Clear();
960 sel_items[0]->Paste(*
m_Tree, items, data_object.
IsCut());
970 if (sel_items.size() == 1 && sel_items[0]->CanPaste(*
m_Tree)) {
971 wxClipboardLocker clipLocker;
988 if (sel_items.empty()) {
994 if (!(*it)->CanCutToClipboard(*
m_Tree)) {
1015 if (sel_items.empty()) {
1016 event.Enable(
false);
1021 if (!(*it)->CanCopyToClipboard(*
m_Tree)) {
1022 event.Enable(
false);
1032 wxArrayTreeItemIds sel_ids;
1033 m_Tree->GetSelections(sel_ids);
1034 if (sel_ids.empty())
return;
1037 if (sel_ids.size() == 1) {
1038 quest =
wxT(
"Delete selected item?");
1040 quest.Printf(
wxT(
"Delete %lu selected items?"), (
unsigned long)sel_ids.size());
1043 wxMessageBox(quest,
wxT(
"Confirm"),
1044 wxYES_NO | wxCANCEL | wxICON_QUESTION );
1045 if (answer != wxYES)
1064 toDelete[project].push_back(prjItem);
1068 if ((*it)->DoRemove(*
m_Tree))
1073 ITERATE(TItemMap, it, toDelete) {
1077 projIds.
insert(doc->GetId());
1082 for (
const auto id : projIds)
1096 if (sel_items.empty()) {
1097 event.Enable(
false);
1102 if (!(*it)->CanDoRemove(*
m_Tree)) {
1103 event.Enable(
false);
1129 if (!wsItem)
return;
1132 TItemMap toEnable, toDisable;
1141 toDisable[project].push_back(prjItem);
1143 toEnable[project].push_back(prjItem);
1148 ITERATE(TItemMap, it, toEnable) {
1152 it->first->UpdateProjectItems(*
m_Tree);
1156 ITERATE(TItemMap, it, toDisable) {
1160 it->first->UpdateProjectItems(*
m_Tree);
1175 bool en =
false, dis =
false;
1176 for (
size_t i = 0;
i < sel_items.size();
i++) {
1178 if(item.
GetData()->IsEnabled()) {
1184 wxString
text = (en == dis) ?
wxT(
"Enable / Disable") : (en ?
wxT(
"Disable") :
wxT(
"Enable"));
1185 event.SetText(
text);
1188 event.Enable(
false);
1197 if(sel_items.size() == 1) {
1210 if (sel_items.size() == 1)
1211 en = sel_items[0]->CanDoNewFolder();
1219 for (
size_t i = 0;
i < items.size(); ++
i) {
1223 st_sel_views.
insert(view);
1236 vector<CIRef<IProjectView> > views;
1246 for(
size_t i = 0;
i < views.size();
i++) {
1255 vector<CIRef<IProjectView> > views;
1261 event.Enable(views.size() > 0);
1269 vector<CIRef<IProjectView> > views;
1276 vector<IWMClient*> clients;
1277 for(
size_t i = 0;
i < views.size();
i++) {
1279 clients.push_back(view);
1291 vector<CIRef<IProjectView> > views;
1298 event.Enable(views.size() > 0);
1307 if (sel_items.size() == 1) {
1322 if(sel_items.size() == 1)
1323 en = sel_items[0]->CanDoProperties();
1329 event.Enable(
false);
1338 if (doc && (doc->IsLoaded() || doc->
IsLoading())) {
1353 if (doc && (doc->IsLoaded() || doc->
IsLoading())) {
1354 toUnload.push_back(*it);
1358 if (toUnload.empty())
1372 if (doc && !(doc->IsLoaded() || doc->
IsLoading())) {
1373 toLoad.push_back(*it);
1385 event.Enable(
false);
1393 if (doc && !(doc->IsLoaded() || doc->
IsLoading())) {
1404 if (ids.empty())
return;
1410 toRemove.push_back(*it);
1414 if (toRemove.empty())
return;
1421 event.Enable(
false);
1447 if (doc && doc->IsLoaded()) {
1459 event.Enable(
false);
1467 if (doc && doc->IsLoaded()) {
1490 if (!ws)
return false;
1492 for (
size_t i = 0;
i < items.size(); ++
i) {
1498 if (doc && !doc->
IsLoading() && doc->IsLoaded() != load) {
1531 bool projectDataFolder =
false;
1534 projectDataFolder =
true;
1539 wxMenu* menu =
new wxMenu;
1545 menu->Append(wxID_SEPARATOR,
wxT(
"Top Actions"));
1549 menu->Append(wxID_SEPARATOR,
wxT(
"Actions"));
1555 menu->Append(wxID_SEPARATOR,
wxT(
"Actions"));
1560 }
else if(items.size() == 1 &&
1564 menu->Append(wxID_SEPARATOR,
wxT(
"Actions"));
1571 menu->Append(wxID_SEPARATOR,
wxT(
"Top Actions"));
1573 menu->Append(wxID_SEPARATOR,
wxT(
"Actions"));
1575 menu->Append(wxID_SEPARATOR,
wxT(
"Actions"));
1581 menu->Append(wxID_SEPARATOR,
wxT(
"Actions"));
1588 TCmdID clp_cmds[4] = { wxID_CUT, wxID_COPY, wxID_PASTE, wxID_DELETE };
1591 menu->Append(wxID_SEPARATOR,
wxT(
"Edit"));
1593 if (projectDataFolder) {
1605 menu->Append(wxID_SEPARATOR,
wxT(
"Edit"));
1612 menu->Append( wxID_SEPARATOR,
wxT(
"Properties") );
1623 wxWindowUpdateLocker locker(
m_Tree);
1632 wxWindowUpdateLocker locker(
m_Tree);
1643 wxWindowUpdateLocker locker(
m_Tree);
1653 wxWindowUpdateLocker locker(
m_Tree);
1660 wxWindowUpdateLocker locker(
m_Tree);
1676 wxWindowUpdateLocker locker(
m_Tree);
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..."))
static void COpenDialog(IWorkbench *workbench, const string &loader_label=NcbiEmptyString, const vector< wxString > &filenames=vector< wxString >())
CAppExplorerDataObject - wxDataObject for use with CAppExplorerService.
static wxDataFormat m_ItemsFormat
CAppExplorerDataObject.
void GetItems(wxTreeCtrl &treeCtrl, PT::TItems &items)
CEvent - generic event implementation TODO TODO - Attachments.
bool RemoveProjectItems(const vector< objects::CProjectItem * > &items)
void AttachProjectItems(const vector< objects::CProjectItem * > &items)
virtual const TViews & GetViews(void) const
Retrieve the existing views for this class.
void DetachProjectItems(const vector< objects::CProjectItem * > &items)
bool IsEnabled(void) const
enabled flag
CProjectService - a service providing API for operations with Workspaces and Projects.
CIRef< IProjectView > AddProjectView(const string &view_name, SConstScopedObject &object, const objects::CUser_object *params, bool bFloat=false)
void RemoveProjectView(IProjectView &view)
removes the view from View manager Service and disconnects it from the project
CRef< objects::CGBWorkspace > GetGBWorkspace()
static void LoadProjects(IServiceLocator *serviceLocator, const TProjectIdVector &project_ids)
static bool RemoveProjects(IServiceLocator *serviceLocator, const TProjectIdVector &project_ids, bool confirm=true)
static void UnLoadProjects(IServiceLocator *serviceLocator, const TProjectIdVector &project_ids)
CProjectTreeCtrl - subclass of wxTreeCtrl to allow functions to be overridden for application-specifi...
void OnMove(wxMouseEvent &event)
void OnLeftDown(wxMouseEvent &event)
void OnKeyUp(wxKeyEvent &event)
CProjectTreeCtrl()
CProjectTreeCtrl.
virtual wxTextCtrl * EditLabel(const wxTreeItemId &item, wxClassInfo *textCtrlClass=CLASSINFO(wxTextCtrl))
CProjectTreePanel - a window that represents Project View.
void OnActivateClients(wxCommandEvent &event)
void ProjectUpdateLabel(CGBDocument &doc)
CAppExplorerDataObject * x_CreateDataObject(bool cut)
void OnUpdateShowHideDisabledItems(wxUpdateUIEvent &event)
void Create(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize)
void OnUpdateCut(wxUpdateUIEvent &event)
void OnEnableDisable(wxCommandEvent &event)
void OnEndDrag(wxTreeEvent &event)
void OnBeginDrag(wxTreeEvent &event)
void OnProjectTableView(wxCommandEvent &event)
void x_ClearClipboardData()
void OnRemove(wxCommandEvent &event)
void OnPaste(wxCommandEvent &event)
void ProjectRemoved(size_t id)
void OnUpdateLoadProject(wxUpdateUIEvent &event)
wxDragResult OnDrop(wxCoord x, wxCoord y, wxDragResult def, CAppExplorerDataObject &data)
void OnItemExpandedCollapsed(wxTreeEvent &event)
wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult def)
void OnLeftDown(wxMouseEvent &event)
void OnUpdateUnLoadProject(wxUpdateUIEvent &event)
void OnUpdateProperties(wxUpdateUIEvent &event)
CRef< objects::CGBWorkspace > m_WS
void OnTreeKeyDown(wxTreeEvent &event)
void ProjectViewsChanged(CGBDocument &doc)
void OnShowHideDisabledItems(wxCommandEvent &event)
objects::CGBProjectHandle::TId TProjectId
PT::CRoot * x_GetRootItem()
void OnUnLoadProject(wxCommandEvent &event)
PT::CItem * x_GetSingleSelectedItem()
void OnCloseView(wxCommandEvent &event)
CStopWatch m_DropItemTimer
void ProjectUpdateItems(CGBDocument &doc)
void OnCut(wxCommandEvent &event)
void UpdateWorkspaceLabel()
void GetAllItems(PT::TItems &items)
void GetSelectedProjectIds(TProjectIdVector &ids)
void Init()
Initializes member variables.
CAppExplorerDataObject * m_DataObject
Data object used for drag and drop (this is the data being dragged)
void OnCopy(wxCommandEvent &event)
void OnRemoveProject(wxCommandEvent &event)
void OnUpdateRemove(wxUpdateUIEvent &event)
PT::CWorkspace * x_GetWorkspaceItem()
void OnBeginLabelEdit(wxTreeEvent &event)
IExplorerItemCmdContributor::TContribution x_GetContextMenu(PT::TItems &items)
void OnProperties(wxCommandEvent &event)
wxTreeItemId m_DropItemId
D&D state.
void x_SetSelections(wxArrayTreeItemIds &ids)
void SetCopyMode(bool b)
Drag and drop support for OSX Cocoa (generic dnd path not working in OSX cocoa 2.9....
void ProjectStateChanged(CGBDocument &doc)
vector< TProjectId > TProjectIdVector
void OnContextMenu(wxContextMenuEvent &event)
void OnUpdateNewFolder(wxUpdateUIEvent &event)
void OnEndLabelEdit(wxTreeEvent &event)
void CreateControls()
Creates the controls and sizers.
friend class CProjectTreeViewDropTarget
void GetSelectedItems(PT::TItems &items)
void x_CollectItemIds(wxTreeItemId root, wxArrayTreeItemIds &ids)
void OnItemActivated(wxTreeEvent &event)
void OnUpdateEnableDisable(wxUpdateUIEvent &event)
void x_CutOrCopyToClipboard(bool cut)
CProjectTreeCtrl * m_Tree
void OnUpdateCopy(wxUpdateUIEvent &event)
void OnLoadProject(wxCommandEvent &event)
void OnUpdateActivateClients(wxUpdateUIEvent &event)
void x_GetItemsFromIds(const wxArrayTreeItemIds &ids, PT::TItems &items)
void OnUpdateRemoveProject(wxUpdateUIEvent &event)
void UpdateViewLabel(CGBDocument &doc, IProjectView &view)
void OnUpdateProjectTableView(wxUpdateUIEvent &event)
void SetWorkbench(IWorkbench *workbench)
PT::CItem * x_GetExplorerItem(const wxTreeItemId &id)
void x_RefreshProjectTables(TProjectId projectId)
void OnUpdatePaste(wxUpdateUIEvent &event)
void UpdateDisabledItems()
void OnNewFolder(wxCommandEvent &event)
virtual ~CProjectTreePanel()
void ProjectAdded(CGBDocument &doc)
void OnSelectionChanged(wxTreeEvent &event)
void OnUpdateCloseView(wxUpdateUIEvent &event)
virtual wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult def)
CProjectTreeViewDropTarget(CProjectTreePanel *panel)
CProjectTreeViewDropTarget.
virtual wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult def)
CProjectTreePanel * m_Panel
virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def)
CUICommandRegistry is a centralized registry where all application commands should be registered.
static CUICommandRegistry & GetInstance()
the main instance associated with the application
wxMenu * CreateMenu(const SwxMenuItemRec *items)
create a menu from a static definition (see WX_*_MENU macros)
void AppendMenuItems(wxMenu &menu, const TCmdID *cmd_ids, int count) const
wxMenuItem * AppendMenuItem(wxMenu &menu, TCmdID cmd_id) const
@ eWidgetSelectionChanged
a view has been destroyed
Interface for testing cancellation request in a long lasting operation.
IExplorerItemCmdContributor - interface representing a component that contributes commands applicable...
virtual TContribution GetMenu(wxTreeCtrl &treeCtrl, PT::TItems &items)=0
for the given set of items returns a contribution
pair< wxMenu *, wxEvtHandler * > TContribution
Contribution consists of a Menu object and event handler.
class IProjectView defines the abstract interface for views observing projects.
virtual void GetMainObject(TConstScopedObjects &objects) const =0
Adds the main data objects represented by the client to "objects".
IWindowManagerService Window Manager Service provides access to Window Manager functionality.
IWorkbench is the central interface in the application framework.
virtual int GetType() const =0
virtual bool Paste(wxTreeCtrl &, vector< CItem * > &, bool)
virtual bool DoProperties(wxTreeCtrl &)
virtual bool CanPaste(wxTreeCtrl &) const
virtual void DoNewFolder(wxTreeCtrl &)
virtual bool CanCopyToClipboard(wxTreeCtrl &) const
virtual void OnItemExpandedCollapsed(wxTreeCtrl &)
virtual void BeginLabelEdit(wxTreeCtrl &, wxTreeEvent &event)
void SetTreeItemId(wxTreeItemId treeItemId)
virtual bool EndLabelEdit(wxTreeCtrl &, wxTreeEvent &event)
static void LogInstanceCount()
CItem * GetParent(wxTreeCtrl &treeCtrl) const
static CPTIcons & GetInstance()
void ExpandCompacted(wxTreeCtrl &treeCtrl, wxTreeItemId &compacted_node, CGBDocument &doc, IStatusBarService *sb_srv, ICanceled *cancel)
void UpdateDataSources(wxTreeCtrl &treeCtrl, IServiceLocator &serviceLocator)
void Initialize(wxTreeCtrl &treeCtrl, objects::CGBWorkspace *ws)
void UpdateAllViews(wxTreeCtrl &treeCtrl, objects::CGBWorkspace *ws)
CWorkspace * GetWorkspaceItem(wxTreeCtrl &treeCtrl)
void UpdateViewLabel(wxTreeCtrl &treeCtrl, IProjectView &view)
void ProjectRemoved(wxTreeCtrl &treeCtrl, size_t id)
void ProjectStateChanged(wxTreeCtrl &treeCtrl, CGBDocument &doc)
void UpdateViews(wxTreeCtrl &treeCtrl, CGBDocument *doc=0)
void UpdateProjectItems(wxTreeCtrl &treeCtrl, CGBDocument &doc)
void UpdateViewLabel(wxTreeCtrl &treeCtrl, CGBDocument &doc, IProjectView &view)
void UpdateLabel(wxTreeCtrl &treeCtrl)
void UpdateProjectLabel(wxTreeCtrl &treeCtrl, CGBDocument &doc)
void ProjectAdded(wxTreeCtrl &treeCtrl, CGBDocument &doc)
void UpdateDisabledItems(wxTreeCtrl &treeCtrl)
void UpdateHiddenItems(wxTreeCtrl &treeCtrl)
const TData & GetData() const
iterator_bool insert(const value_type &val)
const_iterator find(const key_type &key) const
const_iterator end() const
void(*)(CSeq_entry_Handle seh, IWorkbench *wb, const CSerialObject &obj) handler
@ eCmdShowHideDisabledItems
@ eCmdCloseAllProjectViews
static const struct name_t names[]
static const struct type types[]
#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 ERR_POST(message)
Error posting with file, line number information but without error codes.
#define NCBI_CATCH(message)
Catch CExceptions as well This macro is deprecated - use *_X or *_XX variant instead of it.
CIRef< T > GetServiceByType()
retrieves a typed reference to a service, the name of C++ type is used as the name of the service.
virtual IStatusBarService * GetStatusBarService()=0
virtual void ActivateClients(TClients &clients)=0
makes clients visible, make the first client in the given container focused
void GetExtensionAsInterface(const string &ext_point_id, vector< CIRef< I > > &interfaces)
GetExtensionAsInterface() is a helper function that extracts all extensions implementing the specifie...
void NcbiErrorBox(const string &message, const string &title="Error")
specialized Message Box function for reporting critical errors
vector< SConstScopedObject > TConstScopedObjects
virtual bool Send(CEvent *evt, EDispatch disp_how=eDispatch_Default, int pool_name=ePool_Default)
Sends an event synchronously.
@ eEvent_Message
message from one class to another
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
double Restart(void)
Return time elapsed since first Start() or last Restart() call (in seconds).
double Elapsed(void) const
Return time elapsed since first Start() or last Restart() call (in seconds).
void Stop(void)
Suspend the timer.
static void text(MDB_val *v)
objects::CGBProjectHandle::TId GetProjectId(wxTreeCtrl &treeCtrl, const CItem &item)
int GetItemTypes(const TItems &items)
CProject * GetProject(wxTreeCtrl &treeCtrl, const CItem &item)
bool sm_HideDisabledItems
const struct ncbi::grid::netcache::search::fields::SIZE size
const CharType(& source)[N]
static void s_RemoveDependentItems(wxTreeCtrl &treeCtrl, wxArrayTreeItemIds &items)
static void s_ItemsToViews(PT::TItems &items, vector< CIRef< IProjectView > > &views)
static bool s_CanLoadUnloadProjects(CGBWorkspace *ws, PT::TItems &items, bool load)
static const int kClipboardTypesMask
static const int kSaveTypesMask
static bool s_IsProjectDataFolder(wxTreeCtrl &treeCtrl, const PT::CItem &item)
static const int kPropertyTypesMask
wxEVT_COMMAND_MENU_SELECTED
ViewerWindowBase::OnEditMenu ViewerWindowBase::OnJustification EVT_MENU(MID_SHOW_GEOM_VLTNS, ViewerWindowBase::OnShowGeomVltns) EVT_MENU(MID_FIND_PATTERN
#define WX_DEFINE_MENU(name)
New macros for defining menus for use with CUICommandRegistry.
#define WX_MENU_SEPARATOR_L(label)
void SetFocus(CRef< objects::CSeq_entry > entry)
void Merge(wxMenu &menu_1, const wxMenu &menu_2)
merges all items form menu_2 into menu_1, preserving the structure if possible
#define wxTR_GBENCH_LINES
void CleanupSeparators(wxMenu &menu)
Removes extra separators (in the begining or at the end of the menu, ot those that precede other sepa...