mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-06-20 06:05:32 -06:00
ide: SelectPackage improvements
git-svn-id: svn://ultimatepp.org/upp/trunk@15671 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
ad7feaff85
commit
47ffa654c5
3 changed files with 48 additions and 46 deletions
|
|
@ -16,6 +16,7 @@ void SelectPackageDlg::PackageMenu(Bar& menu)
|
|||
menu.Add(b, "Copy package to..", [=] { MovePackage(true); });
|
||||
menu.Add(b, "Move package to..", [=] { MovePackage(false); });
|
||||
menu.Add(b, "Delete package..", [=] { DeletePackage(); });
|
||||
menu.Add(b, "Change description..", [=] { ChangeDescription(); });
|
||||
}
|
||||
|
||||
bool RenamePackageFs(const String& upp, const String& npf, const String& nupp, bool copy)
|
||||
|
|
@ -193,17 +194,21 @@ SelectPackageDlg::SelectPackageDlg(const char *title, bool selectvars_, bool mai
|
|||
if (!selectvars)
|
||||
splitter.Hide();
|
||||
|
||||
newu <<= THISBACK(OnNew);
|
||||
filter <<= THISBACK(OnFilter);
|
||||
filter <<= main ? MAIN|NEST : NONMAIN;
|
||||
newu << [=] { OnNew(); };
|
||||
kind.Add(MAIN, "Main packages");
|
||||
kind.Add(NONMAIN, "Non-main packages");
|
||||
kind.Add(ALL, "All packages");
|
||||
kind << [=] { OnFilter(); };
|
||||
kind <<= main ? MAIN : NONMAIN;
|
||||
nest << [=] { OnFilter(); };
|
||||
OnFilter();
|
||||
nest <<= main ? 0 : ALL;
|
||||
progress.Hide();
|
||||
brief <<= THISBACK(SyncBrief);
|
||||
search.NullText("Search (Ctrl+K)", StdFont().Italic(), SColorDisabled());
|
||||
search << [=] { SyncList(Null); };
|
||||
search.SetFilter(CharFilterDefaultToUpperAscii);
|
||||
SyncBrief();
|
||||
description.NullText("Package description (Alt+Enter)", StdFont().Italic(), SColorDisabled());
|
||||
description <<= THISBACK(ChangeDescription);
|
||||
ActiveFocus(brief ? (Ctrl&)clist : (Ctrl&)alist);
|
||||
clist.BackPaintHint();
|
||||
alist.BackPaintHint();
|
||||
|
|
@ -227,26 +232,26 @@ SelectPackageDlg::SelectPackageDlg(const char *title, bool selectvars_, bool mai
|
|||
|
||||
void SelectPackageDlg::SyncFilter()
|
||||
{
|
||||
Value v = ~filter;
|
||||
filter.ClearList();
|
||||
Value n = ~nest;
|
||||
nest.ClearList();
|
||||
Vector<String> upp = GetUppDirsRaw();
|
||||
nest.Add(ALL, AttrText("All").Italic().Bold().NormalInk(SBlue()));
|
||||
bool hub = false;
|
||||
for(int i = 0; i < upp.GetCount(); i++) {
|
||||
if(upp[i].StartsWith(GetHubDir())) {
|
||||
filter.Add(UPPHUB|MAIN|i, "Main packages of UppHub");
|
||||
filter.Add(UPPHUB|i, "All packages of UppHub");
|
||||
break;
|
||||
if(upp[i].StartsWith(GetHubDir()) && !hub) {
|
||||
nest.Add(UPPHUB|i, AttrText("UppHub").Italic().NormalInk(SBlue()));
|
||||
hub = true;
|
||||
}
|
||||
String fn = GetFileName(upp[i]);
|
||||
filter.Add(NEST|MAIN|i, "Main packages of " + fn);
|
||||
filter.Add(NEST|i, "All packages of " + fn);
|
||||
if(hub)
|
||||
nest.Add(i, AttrText(fn).NormalInk(SCyan()));
|
||||
else
|
||||
nest.Add(i, fn);
|
||||
}
|
||||
filter.Add(MAIN, "All main packages");
|
||||
filter.Add(NONMAIN, "All non-main packages");
|
||||
filter.Add(0, "All packages");
|
||||
if(filter.HasKey(v))
|
||||
filter <<= v;
|
||||
if(nest.HasKey(n))
|
||||
nest <<= n;
|
||||
else
|
||||
filter.GoBegin();
|
||||
nest.GoBegin();
|
||||
}
|
||||
|
||||
bool SelectPackageDlg::Key(dword key, int count)
|
||||
|
|
@ -314,7 +319,7 @@ void SelectPackageDlg::ChangeDescription()
|
|||
return;
|
||||
pkg.description = ~dlg.text;
|
||||
pkg.Save(pp);
|
||||
p.description = description <<= ~dlg.text;
|
||||
p.description = ~dlg.text;
|
||||
if(alist.IsCursor())
|
||||
alist.Set(2, ~dlg.text);
|
||||
}
|
||||
|
|
@ -327,10 +332,7 @@ void SelectPackageDlg::ListCursor()
|
|||
String pp = PackagePath(GetCurrentName());
|
||||
Package pkg;
|
||||
pkg.Load(pp);
|
||||
description <<= pkg.description;
|
||||
}
|
||||
else
|
||||
description <<= Null;
|
||||
}
|
||||
|
||||
void SelectPackageDlg::SyncBrief()
|
||||
|
|
@ -375,11 +377,11 @@ String SelectPackageDlg::Run(String& nest, String startwith)
|
|||
void SelectPackageDlg::OnOK()
|
||||
{
|
||||
Package pkg;
|
||||
int f = ~filter;
|
||||
int fk = ~kind;
|
||||
String n = GetCurrentName();
|
||||
if(n.GetCount() && pkg.Load(PackagePath(n)) &&
|
||||
(!(f & MAIN) || pkg.config.GetCount()) &&
|
||||
(!(f & NONMAIN) || !pkg.config.GetCount())) {
|
||||
(!(fk == MAIN) || pkg.config.GetCount()) &&
|
||||
(!(fk == NONMAIN) || !pkg.config.GetCount())) {
|
||||
loading = false;
|
||||
finished = true;
|
||||
AcceptBreak(IDOK);
|
||||
|
|
@ -402,7 +404,8 @@ void SelectPackageDlg::OnBase()
|
|||
{
|
||||
if(!finished && !canceled) {
|
||||
SyncFilter();
|
||||
filter <<= (int)~filter & ~NEST_MASK;
|
||||
if(splitter.IsShown())
|
||||
nest <<= nest.GetCount() ? 0 : ALL;
|
||||
Load();
|
||||
}
|
||||
}
|
||||
|
|
@ -410,8 +413,7 @@ void SelectPackageDlg::OnBase()
|
|||
void SelectPackageDlg::OnNew() {
|
||||
TemplateDlg dlg;
|
||||
LoadFromGlobal(dlg, "NewPackage");
|
||||
int f = ~filter;
|
||||
dlg.Load(GetUppDirsRaw(), f & MAIN);
|
||||
dlg.Load(GetUppDirsRaw(), ~kind == MAIN);
|
||||
while(dlg.Run() == IDOK) {
|
||||
String nest = ~dlg.nest;
|
||||
String name = NativePath(String(~dlg.package));
|
||||
|
|
@ -567,14 +569,16 @@ void SelectPackageDlg::SyncList(const String& find)
|
|||
|
||||
packages.Clear();
|
||||
String s = ~search;
|
||||
int f = ~filter;
|
||||
int fn = ~nest;
|
||||
int fk = ~kind;
|
||||
Index<String> added;
|
||||
int from = 0;
|
||||
int to = data.GetCount() - 1;
|
||||
if(f & NEST)
|
||||
from = to = f & NEST_MASK;
|
||||
if(f & UPPHUB)
|
||||
from = f & NEST_MASK;
|
||||
if(fn & UPPHUB)
|
||||
from = fn & NEST_MASK;
|
||||
else
|
||||
if(fn != ALL)
|
||||
from = to = fn & NEST_MASK;
|
||||
if(to < data.GetCount())
|
||||
for(int i = from; i <= to; i++) {
|
||||
const ArrayMap<String, PkData>& nest = data[i];
|
||||
|
|
@ -582,8 +586,8 @@ void SelectPackageDlg::SyncList(const String& find)
|
|||
const PkData& d = nest[i];
|
||||
if(!nest.IsUnlinked(i) &&
|
||||
d.ispackage &&
|
||||
(!(f & MAIN) || d.main) &&
|
||||
(!(f & NONMAIN) || !d.main) &&
|
||||
(!(fk == MAIN) || d.main) &&
|
||||
(!(fk == NONMAIN) || !d.main) &&
|
||||
ToUpper(d.package + d.description + d.nest).Find(s) >= 0 &&
|
||||
added.Find(d.package) < 0) {
|
||||
packages.Add() = d;
|
||||
|
|
@ -666,7 +670,6 @@ void SelectPackageDlg::Load(const String& find)
|
|||
}
|
||||
Vector<String> upp = GetUppDirsRaw();
|
||||
packages.Clear();
|
||||
description.Hide();
|
||||
progress.Show();
|
||||
loading = true;
|
||||
data.Clear();
|
||||
|
|
@ -741,7 +744,6 @@ void SelectPackageDlg::Load(const String& find)
|
|||
ProcessEvents();
|
||||
if(!IsOpen())
|
||||
Open();
|
||||
description.Show();
|
||||
if(loading) {
|
||||
loading = false;
|
||||
SyncList(find);
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ struct SelectPackageDlg : public WithSelectPackageLayout<TopWindow> {
|
|||
void MovePackage(bool copy);
|
||||
|
||||
enum {
|
||||
MAIN = 0x1000, NEST = 0x2000, UPPHUB = 0x4000, NONMAIN = 0x8000, NEST_MASK = 0xfff
|
||||
MAIN = 1, NONMAIN = 2, ALL = 0x8000, UPPHUB = 0x4000, NEST_MASK = 0xfff
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
LAYOUT(SelectPackageLayout, 740, 432)
|
||||
ITEM(Upp::ParentCtrl, parent, HSizePosZ(4, 4).VSizePosZ(4, 60))
|
||||
ITEM(Upp::DataPusher, description, Tip(t_("Shows currently selected package description. Click on it for edition..")).HSizePosZ(4, 4).BottomPosZ(36, 20))
|
||||
ITEM(Upp::DropList, filter, Tip(t_("Select which packages should be displayed")).LeftPosZ(4, 156).BottomPosZ(9, 19))
|
||||
ITEM(Upp::EditString, search, Tip(t_("Search for the concrete package")).LeftPosZ(164, 80).BottomPosZ(9, 19))
|
||||
ITEM(Upp::Option, brief, SetLabel(t_("Brief list")).Tip(t_("If set, displays simplify packages list. Otherwise, the detailed list is shown.")).LeftPosZ(248, 68).BottomPosZ(8, 20))
|
||||
ITEM(Upp::ProgressIndicator, progress, HSizePosZ(308, 336).BottomPosZ(9, 15))
|
||||
LAYOUT(SelectPackageLayout, 812, 476)
|
||||
ITEM(Upp::ParentCtrl, parent, HSizePosZ(4, 4).VSizePosZ(4, 40))
|
||||
ITEM(Upp::DropList, kind, Tip(t_("Select which packages should be displayed")).LeftPosZ(4, 124).BottomPosZ(8, 19))
|
||||
ITEM(Upp::DropList, nest, Tip(t_("Select which packages should be displayed")).LeftPosZ(132, 112).BottomPosZ(8, 19))
|
||||
ITEM(Upp::EditString, search, Tip(t_("Search for the concrete package")).HSizePosZ(248, 408).BottomPosZ(8, 19))
|
||||
ITEM(Upp::Option, brief, SetLabel(t_("Brief list")).Tip(t_("If set, displays simplify packages list. Otherwise, the detailed list is shown.")).RightPosZ(332, 68).BottomPosZ(7, 20))
|
||||
ITEM(Upp::ProgressIndicator, progress, HSizePosZ(4, 4).BottomPosZ(33, 7))
|
||||
ITEM(Upp::Button, help, SetLabel(t_("?")).Tip(t_("Learn more about packages, assemblies and nests.. (Highly recommended for all U++ beginners)")).RightPosZ(308, 20).BottomPosZ(6, 22))
|
||||
ITEM(Upp::Button, upphub, SetLabel(t_("UppHub")).Tip(t_("Create new package in the currently selected assembly..")).RightPosZ(236, 68).BottomPosZ(6, 22))
|
||||
ITEM(Upp::Button, newu, SetLabel(t_("&New package")).Tip(t_("Create new package in the currently selected assembly..")).RightPosZ(142, 90).BottomPosZ(6, 22))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue