New files now have got icons

git-svn-id: svn://ultimatepp.org/upp/trunk@9894 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
klugier 2016-05-29 20:40:36 +00:00
parent 5b3ca9cd47
commit b873719dd4
2 changed files with 37 additions and 21 deletions

View file

@ -283,20 +283,21 @@ struct WorkspaceWork {
class FileType : public Moveable<FileType> {
public:
FileType(const String& name, const String& extension, Image* img)
FileType(const String& name, const String& extension)
: name(name)
, extension(extension)
, img(img)
{}
String GetName() const { return name; }
String GetExtension() const { return extension; }
Image* GetImage() const { return img; }
String GetName() const { return name; }
String GetExtension() const { return extension; }
const Image& GetImage() const { return img; }
void SetImage(const Image& image) { img = image; }
private:
String name;
String extension;
Image* img;
Image img;
};
VectorMap<String, Vector<FileType>> categories;
@ -363,6 +364,7 @@ struct WorkspaceWork {
void Drag();
void LoadCategories();
void LoadCategoriesImages();
void NewPackageFile(const String& title, const String& extension);
enum ADDFILE { PACKAGE_FILE, OUTPUT_FILE, HOME_FILE, LOCAL_FILE, CONFIG_FILE, ANY_FILE };

View file

@ -930,8 +930,12 @@ void WorkspaceWork::NewMenu(Bar& bar)
for (int i = 0; i < categories.GetCount(); i++) {
Callback1<Bar&> barCallback;
barCallback << [&, i](Bar& subBar) {
for (FileType& fileType : categories[i])
subBar.Add(fileType.GetName(), THISBACK2(NewPackageFile, "New " + fileType.GetName(), fileType.GetExtension()));
for (FileType& fileType : categories[i]) {
String name = fileType.GetName();
String extension = fileType.GetExtension();
subBar.Add(name, fileType.GetImage(), THISBACK2(NewPackageFile, "New " + name, extension));
}
};
bar.Add(categories.GetKey(i), barCallback);
@ -1142,34 +1146,43 @@ void WorkspaceWork::Drag()
void WorkspaceWork::LoadCategories()
{
Vector<FileType> cppFiles;
cppFiles.Add(FileType("C++ source file", "cpp", NULL));
cppFiles.Add(FileType("C++ header file", "h", NULL));
cppFiles.Add(FileType("C++ source file", "cpp"));
cppFiles.Add(FileType("C++ header file", "h"));
categories.Add("C/C++", cppFiles);
Vector<FileType> uppFiles;
uppFiles.Add(FileType("Layout file", "lay", NULL));
uppFiles.Add(FileType("Image file", "iml", NULL));
uppFiles.Add(FileType("Escape script file", "usc", NULL));
uppFiles.Add(FileType("Skylark template file", "witz", NULL));
uppFiles.Add(FileType("Layout file", "lay"));
uppFiles.Add(FileType("Image file", "iml"));
uppFiles.Add(FileType("Escape script file", "usc"));
uppFiles.Add(FileType("Skylark template file", "witz"));
categories.Add("U++", uppFiles);
Vector<FileType> javaFiles;
javaFiles.Add(FileType("Java source file", "java", NULL));
javaFiles.Add(FileType("Java source file", "java"));
categories.Add("Java", javaFiles);
Vector<FileType> webFiles;
webFiles.Add(FileType("HTML source file", "html", NULL));
webFiles.Add(FileType("CSS source file", "css", NULL));
webFiles.Add(FileType("JavaScript source file", "js", NULL));
webFiles.Add(FileType("JSON file", "json", NULL));
webFiles.Add(FileType("XML file", "xml", NULL));
webFiles.Add(FileType("HTML source file", "html"));
webFiles.Add(FileType("CSS source file", "css"));
webFiles.Add(FileType("JavaScript source file", "js"));
webFiles.Add(FileType("JSON file", "json"));
webFiles.Add(FileType("XML file", "xml"));
categories.Add("Web", webFiles);
Vector<FileType> otherFiles;
otherFiles.Add(FileType("Text file", "txt", NULL));
otherFiles.Add(FileType("Text file", "txt"));
categories.Add("Other", otherFiles);
}
void WorkspaceWork::LoadCategoriesImages()
{
for (int i = 0; i < categories.GetCount(); i++) {
for (FileType& type : categories[i]) {
type.SetImage(IdeFileImage("." + type.GetExtension(), false, false));
}
}
}
WorkspaceWork::WorkspaceWork()
{
package <<= THISBACK(PackageCursor);
@ -1192,6 +1205,7 @@ WorkspaceWork::WorkspaceWork()
svn_dirs = false;
LoadCategories();
LoadCategoriesImages();
}
void WorkspaceWork::SerializeClosed(Stream& s)