ultimatepp/reference/FileTabsExample/main.cpp
cxl fe5cb795e8 .reference
git-svn-id: svn://ultimatepp.org/upp/trunk@15691 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2021-01-22 12:08:17 +00:00

153 lines
3 KiB
C++

#include "FileTabsExample.h"
#define FILE_LIMIT 5
#define PACKAGE_LIMIT 5
FileTabsExample::FileTabsExample()
{
CtrlLayout(*this, "FileTabs Example");
Sizeable().Zoomable();
for (int i = 0; i < 4; i++)
bar[i].SetAlign((i+1) % 4);
AddFrame(bar[0]);
bar[0].WhenAction << [=] { OnCursor(); };
addfile << [=] {
if (!fileinput.GetLength()) return;
for (int i = 0; i < 4; i++)
bar[i].AddFile(~fileinput);
};
insert << [=] {
for(FindFile ff(GetHomeDirFile("*")); ff; ff++)
for(int i = 0; i < 4; i++)
bar[i].AddFile(ff.GetPath().ToWString());
};
grouping << [=] {
for (int i = 0; i < 4; i++)
bar[i].Grouping(~grouping);
};
groupsort << [=] {
if(~groupsort)
for (int i = 0; i < 4; i++)
bar[i].SortGroups(true); //or specify own TabSort
else
for (int i = 0; i < 4; i++)
bar[i].SortGroups(false);
};
separators << [=] {
for (int i = 0; i < 4; i++)
bar[i].GroupSeparators(~separators);
};
stacking << [=] {
for (int i = 0; i < 4; i++)
bar[i].Stacking(~stacking);
};
normalicons ^= stackedicons ^= [=] {
for (int i = 0; i < 4; i++)
bar[i].FileIcons(~normalicons, ~stackedicons);
};
prompt << [=] {
if (prompt) {
bar[0].ConfirmClose = [=](Value v) { return PromptOKCancel(Format("Close '\1%s\1'?", ~v)); };
bar[0].ConfirmCloseAll = [=] { return PromptOKCancel("Close all tabs?"); };
}
else {
bar[0].ConfirmClose.Clear();
bar[0].ConfirmCloseAll.Clear();
}
};
allalign << [=] {
if (allalign) {
for (int i = 1; i < 4; i++)
AddFrame(bar[i]);
}
else {
for (int i = 0; i < 4; i++)
bar[i].Remove();
ClearFrames();
AddFrame(bar[0]);
}
};
valuesort << [=] {
keysort = false;
if(~valuesort)
for (int i = 0; i < 4; i++)
bar[i].SortTabValues(vo);
else
for (int i = 0; i < 4; i++)
bar[i].SortTabs(false);
};
keysort << [=] {
valuesort = false;
if(~keysort)
for (int i = 0; i < 4; i++)
bar[i].SortTabKeys(vo);
else
for (int i = 0; i < 4; i++)
bar[i].SortTabs(false);
};
stacksort << [=] {
if(~stacksort)
for (int i = 0; i < 4; i++)
bar[i].SortStacks(true);
else
for (int i = 0; i < 4; i++)
bar[i].SortStacks(false);
};
inactive << [=] {
for (int i = 1; i < 4; i++)
bar[i].InactiveDisabled(~inactive);
};
grouping <<= true;
inactive <<= true;
normalicons <<= true;
insert.WhenAction();
OnCursor();
}
void FileTabsExample::OnCursor()
{
if (bar[0].HasCursor())
selection = (String)~bar[0];
else
selection = "No tab selected";
}
bool FileTabsExample::Key(dword key, int count)
{
if (key == K_RETURN && fileinput.HasFocus()) {
addfile.PseudoPush();
return true;
}
return false;
}
void FileTabsExample::DragAndDrop(Point p, PasteClip& d)
{
if (AcceptFiles(d))
for (int i = 0; i < 4; i++)
bar[i].AddFiles(GetFiles(d));
}
GUI_APP_MAIN
{
FileTabsExample().Run();
}