wxTreeItemData*
data= treeCtrl.GetItemData(compacted_node);
69 autoparent_folder =
dynamic_cast<PT::CProjectFolder*
>(treeCtrl.GetItemData(treeCtrl.GetItemParent(compacted_node)));
72 autofolder_data = folder->
GetData();
73 autototal = folder_data->SetItems().size();
76 for(
auto& it : folder_data->SetItems()) {
79objects::CProjectItem& prj_item = *it;
83parent_folder->AppendChildItem(treeCtrl, *new_item);
85 if(++
cnt% 3000 == 0 && sb_srv) {
86 str.Printf(
wxT(
"Expanding project items (%d out of %d)"),
cnt, total);
92treeCtrl.Delete(compacted_node);
101objects::CProjectFolder& folder = *
GetData();
106wxTreeItemIcon_Normal);
109wxTreeItemIcon_Expanded);
111 constobjects::CFolderInfo&
info= folder.GetInfo();
115 boolis_open =
info.IsSetOpen() ?
info.GetOpen() :
false;
117 if(folder.CanGetFolders()) {
119objects::CProjectFolder& sub_folder = **it;
126 if(folder.CanGetItems()) {
128wxTreeItemId collapsed_node;
130objects::CProjectItem& prj_item = **it;
137 if(
count>= 2500 && collapsed_node.IsOk() ==
false) {
138 autoprj_folder =
Ref(
newobjects::CProjectFolder);
140prj_folder->SetInfo().SetTitle(
"");
142 while(++it != folder.SetItems().end()) {
143objects::CProjectItem& prj_item = **it;
146prj_folder->AddChildItem(prj_item);
149prj_folder->SetParentFolder(&folder);
153s.Printf(
wxT(
"Double-click to show %d additional items"),
cnt);
172 if(folder.CanGetItems()) {
174 if(!(*it)->IsEnabled())
194objects::CProjectFolder& folder = *
GetData();
195folder.SetInfo().SetOpen(treeCtrl.IsExpanded(
m_TreeItemId));
198 static bool s_EditFolder(objects::CFolderInfo&
info,
const string& title,
stringreg_path,
210 if(
info.CanGetComment()) {
211descr =
info.GetComment();
214 if(
info.CanGetAnnot()) {
216 if((**it).IsComment()) {
219descr += (*it)->GetComment();
230 if(dlg.ShowModal() == wxID_OK) {
234 info.SetComment(
"");
235 info.SetAnnot().clear();
237list<string> comment;
240 ITERATE(list<string>, it, comment) {
242 if(it == comment.begin())
243 info.SetComment(*it);
246annot->SetComment(*it);
247 info.SetAnnot().push_back(annot);
262 if(!project)
return;
268objects::CProjectFolder& parent_folder = *
GetData();
273new_folder->SetInfo().SetTitle(
"New Folder");
274new_folder->SetInfo().SetComment(
"");
275new_folder->SetInfo().SetOpen(
true);
279parent_folder.AddChildFolder(*new_folder);
281 constobjects::CFolderInfo&
info= new_folder->GetInfo();
293parent_folder.SetInfo().SetOpen(
true);
296doc->SetDirty (
true);
304 if(!project)
return false;
308 if(!doc)
return false;
310objects::CProjectFolder& folder = *
GetData();
312objects::CProjectFolder* parent_folder = 0;
315parent_folder = parent->
GetData();
318 boolreadonly = (parent_folder ==
NULL);
321doc->SetDirty (
true);
337 if(event.IsEditCancelled())
343 if(!project)
return false;
347 if(!doc)
return false;
349objects::CProjectFolder& pr_folder = *
GetData();
352 stringoldName = pr_folder.GetInfo().GetTitle();
353 if(oldName == new_name)
356objects::CProjectFolder* parent_folder = 0;
359parent_folder = parent->
GetData();
365 if(!validator.
IsValid(new_name, err)) {
369pr_folder.SetInfo().SetTitle(new_name);
372doc->SetDirty (
true);
387vector<objects::CProjectItem*> projItems;
389projItems.push_back(&*it);
391 if(!projItems.empty())
393doc.SetData().RemoveProjectFolder(folder.GetId());
400 if(!project)
return false;
403 if(!parent)
return false;
407 if(!doc)
return false;
411doc->SetDirty (
true);
413treeCtrl.Delete(toDelete);
433 if(!project)
return false;
440new_item->SetLabel(item.GetLabel());
441new_item->SetDescr().assign(item.GetDescr().begin(), item.GetDescr().end());
444new_item->SetObject(*obj);
446 if(!item.IsEnabled())
447new_item->SetDisabled(
true);
455objects::CFolderInfo&
info= new_folder->SetInfo();
456 info.SetTitle(folder.GetInfo().GetTitle());
457 info.SetComment(folder.GetInfo().GetComment());
460dstFolder.AddChildFolder(*new_folder);
462vector<objects::CProjectItem*> items;
465doc.AddItem(*
i, *new_folder);
466 if(
i->IsEnabled())
467items.push_back(
i);
471 ITERATE(objects::CProjectFolder::TFolders, it, folder.GetFolders()) {
477 CGBDocument& dst, objects::CProjectFolder& dstFolder,
boolcut)
479 if(src.GetId() == dst.GetId()) {
480 if(srcFolder.GetId() == dstFolder.GetId()) {
481 stringerr =
"Cannot paste folder \""+ srcFolder.GetInfo().GetTitle() +
"\" on itself.";
485 if(srcFolder.FindChildFolderById(dstFolder.GetId())) {
486 stringerr =
"Cannot paste folder \""+ srcFolder.GetInfo().GetTitle();
487err +=
"\". Destination folder is a child of the source folder.";
493 if(src.GetId() == dst.GetId() && cut) {
495 if(!
f)
return false;
496dstFolder.AddChildFolder(*
f);
508 if(items.empty())
return false;
511 if(!project)
return false;
515 if(!doc)
return false;
517objects::CProjectFolder& folder = *
GetData();
519 boolmodified =
false;
528 if(!srcProject)
continue;
532 if(!srcDoc)
continue;
540srcDoc->SetDirty(
true);
541modProjects.
insert(srcProject);
551objects::CProjectItem* projItem = srcItem.
GetData();
553 if(srcDoc == doc && move) {
554 intitemId = projItem->GetId();
555objects::CProjectFolder* srcFolder = srcDoc->SetData().FindProjectItemFolder(itemId);
556 if(srcFolder && &folder != srcFolder) {
557folder.AddChildItem(*projItem);
558srcFolder->RemoveChildItem(itemId);
564doc->AddItem(*new_item, folder);
565 if(new_item->IsEnabled())
569toDelete[srcDoc].push_back(projItem);
570modProjects.
insert(srcProject);
579 ITERATE(TDocItems, it, toDelete) {
580it->first->RemoveProjectItems(it->second);
581it->first->SetDirty(
true);
588folder.SetInfo().SetOpen(
true);
591doc->SetDirty (
true);
592modProjects.
insert(project);
596 if(*it) (*it)->UpdateLabel(treeCtrl);
610 if(!project)
return;
621objects::CProjectFolder& folder = *
GetData();
627vector<wxTreeItemId> toDelete;
631 if(!item.
GetData()->IsEnabled())
632toDelete.push_back((*it).GetTreeItemId());
635 ITERATE(vector<wxTreeItemId>, it, toDelete)
636treeCtrl.Delete(*it);
638 if(!folder.CanGetItems())
642objects::CProjectFolder::TItems::iterator it2 = items.begin();
644 for(
CChildIteratorit(treeCtrl, *
this); it && it2 != items.end(); ++it) {
653 for(; it2 != items.end(); ++it2) {
654objects::CProjectItem& prjItem = **it2;
665 if(!project)
return;
667objects::CProjectFolder& folder = *
GetData();
675 if(!folder.CanGetItems())
679objects::CProjectFolder::TItems::iterator it2 = items.begin();
681 while(it2 != items.end() && !(*it2)->IsEnabled())
686 for(; it && it2 != items.end(); ++it) {
693 while(it2 != items.end() && !(*it2)->IsEnabled())
699vector<wxTreeItemId> toDelete;
703toDelete.push_back((*it).GetTreeItemId());
706 ITERATE(vector<wxTreeItemId>, it, toDelete)
707treeCtrl.Delete(*it);
709 for(; it2 != items.end();) {
710objects::CProjectItem& prjItem = **it2;
717 while(it2 != items.end() && !(*it2)->IsEnabled())
User-defined methods of the data storage class.
User-defined methods of the data storage class.
virtual void SetRegistryPath(const string &path)
void SetDescr(wxString value)
wxString GetFolderName() const
wxString GetDescr() const
void SetReadOnly(bool value)
void SetNameValidator(IFNameValidator *validator)
void SetFolderName(wxString value)
virtual bool IsValid(const string &name, string &err)
bool RemoveProjectItems(const vector< objects::CProjectItem * > &items)
void AttachProjectItems(const vector< objects::CProjectItem * > &items)
void AttachProjectItem(objects::CProjectItem *item)
Base class for all serializable objects.
Template class for iteration on objects of class C.
Interface for testing cancellation request in a long lasting operation.
virtual int GetType() const =0
void InsertChildItem(wxTreeCtrl &treeCtrl, CItem &ch_item, size_t pos)
void AppendChildItem(wxTreeCtrl &treeCtrl, CItem &ch_item)
wxTreeItemId GetTreeItemId() const
wxTreeItemId m_TreeItemId
CItem * GetParent(wxTreeCtrl &treeCtrl) const
static CPTIcons & GetInstance()
int GetImageIndex(EIcon icon) const
virtual void DoNewFolder(wxTreeCtrl &treeCtrl)
virtual void BeginLabelEdit(wxTreeCtrl &treeCtrl, wxTreeEvent &event)
virtual bool CanDoRemove(wxTreeCtrl &treeCtrl) const
virtual bool DoProperties(wxTreeCtrl &treeCtrl)
void Initialize(wxTreeCtrl &treeCtrl, CGBDocument &doc)
void UpdateProjectItems(wxTreeCtrl &treeCtrl, CGBDocument &doc)
virtual bool CanPaste(wxTreeCtrl &treeCtrl) const
void ExpandCompacted(wxTreeCtrl &treeCtrl, wxTreeItemId &compacted_node, CGBDocument &doc, IStatusBarService *sb_srv, ICanceled *cancel)
void UpdateDisabledItems(wxTreeCtrl &treeCtrl)
CProjectFolder(const TParent::TDataType &data)
size_t CountDisabledItems(wxTreeCtrl &treeCtrl)
virtual void OnItemExpandedCollapsed(wxTreeCtrl &treeCtrl)
virtual bool CanCopyToClipboard(wxTreeCtrl &treeCtrl) const
virtual bool CanCutToClipboard(wxTreeCtrl &treeCtrl) const
void SetCompacted(bool compacted=true)
virtual bool DoRemove(wxTreeCtrl &treeCtrl)
virtual bool EndLabelEdit(wxTreeCtrl &treeCtrl, wxTreeEvent &event)
virtual bool Paste(wxTreeCtrl &treeCtrl, PT::TItems &items, bool move)
void Initialize(wxTreeCtrl &treeCtrl, CGBDocument &doc)
void UpdateLabel(wxTreeCtrl &treeCtrl)
void UpdateHiddenItems(wxTreeCtrl &treeCtrl)
void SetData(const TData &data)
const TData & GetData() const
iterator_bool insert(const value_type &val)
static const char * str(char *buf, int n)
#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.
virtual void SetStatusMessage(const string &msg)=0
void NcbiErrorBox(const string &message, const string &title="Error")
specialized Message Box function for reporting critical errors
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
virtual bool IsCanceled(void) const =0
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
@ fSplit_Tokenize
All delimiters are merged and trimmed, to get non-empty tokens only.
@ eCurrent
Use current time. See also CCurrentTime.
CProject * GetProject(wxTreeCtrl &treeCtrl, const CItem &item)
bool sm_HideDisabledItems
static bool s_PasteProjectFolder(CGBDocument &src, objects::CProjectFolder &srcFolder, CGBDocument &dst, objects::CProjectFolder &dstFolder, bool cut)
static size_t s_CountDisabledItems(objects::CProjectFolder &folder)
static bool s_DeleteFolder(CGBDocument &doc, objects::CProjectFolder &folder)
static void s_ProjectFolderClone(const objects::CProjectFolder &folder, CGBDocument &doc, objects::CProjectFolder &dstFolder)
static bool s_EditFolder(objects::CFolderInfo &info, const string &title, string reg_path, bool readonly, IFNameValidator &validator)
static CRef< objects::CProjectItem > s_ProjectItemClone(const objects::CProjectItem &item)
static const char * kDlgRegPath
wxString ToWxString(const string &s)
string ToStdString(const wxString &s)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4