ultimatepp/uppsrc/ide/NewPackageFile.cpp
klugier 821eda01f6 New package file mechanism now allows to create specifi file types
git-svn-id: svn://ultimatepp.org/upp/trunk@9891 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2016-05-29 12:34:25 +00:00

83 lines
1.6 KiB
C++

#include "ide.h"
class NewPackageFileWindow : public WithNewPackageFileLayout<TopWindow> {
typedef NewPackageFileWindow CLASSNAME;
public:
NewPackageFileWindow(const String& packageDir, const String& extension);
String GetFileName() const;
private:
void OnFileNameChanged();
void CheckFilePath();
private:
String packageDir;
String extension;
};
NewPackageFileWindow::NewPackageFileWindow(const String& packageDir, const String& extension)
: packageDir(packageDir)
, extension(extension)
{
CtrlLayoutOKCancel(*this, "");
fileName <<= THISBACK(OnFileNameChanged);
fullFileName.Disable();
if (extension.IsEmpty()) {
fullFileNameLabel.Hide();
fullFileName.Hide();
info.VSizePosZ(28, 36);
}
OnFileNameChanged();
}
void NewPackageFileWindow::OnFileNameChanged()
{
String name = fileName.GetData();
if (!extension.IsEmpty())
fullFileName.SetData(name + "." + extension);
else
fullFileName.SetData(name);
CheckFilePath();
}
void NewPackageFileWindow::CheckFilePath()
{
String name = fileName.GetData();
String fullName = fullFileName.GetData();
info.Clear();
if (name.IsEmpty()) {
ok.Disable();
}
else
if (FileExists(packageDir + DIR_SEPS + fullName)) {
ok.Disable();
info.SetData("[ [ [@(170.42.0) File already exists.]]]");
}
else {
ok.Enable();
}
}
String NewPackageFileWindow::GetFileName() const
{
return fullFileName.GetData();
}
void WorkspaceWork::NewPackageFile(const String& title, const String& extension)
{
NewPackageFileWindow dlg(GetFileFolder(GetActivePackagePath()), extension);
dlg.Title(title);
if (dlg.ExecuteOK())
AddItem(dlg.GetFileName(), false, false);
}