diff --git a/uppsrc/ide/NewPackageFile.cpp b/uppsrc/ide/NewPackageFile.cpp new file mode 100644 index 000000000..2592aa6db --- /dev/null +++ b/uppsrc/ide/NewPackageFile.cpp @@ -0,0 +1,56 @@ +#include "ide.h" + +class NewPackageFileWindow : public WithNewPackageFileLayout { + typedef NewPackageFileWindow CLASSNAME; + +public: + NewPackageFileWindow(const String& packageDir); + + String GetFileName() const; + +private: + void CheckFilePath(); + +private: + String packageDir; +}; + +NewPackageFileWindow::NewPackageFileWindow(const String& packageDir) + : packageDir(packageDir) +{ + CtrlLayoutOKCancel(*this, "New package file"); + + fileName <<= THISBACK(CheckFilePath); + + ok.Disable(); +} + +void NewPackageFileWindow::CheckFilePath() +{ + String file = fileName.GetData(); + + info.Clear(); + if (file.IsEmpty()) { + ok.Disable(); + } + else + if (FileExists(packageDir + DIR_SEPS + file)) { + ok.Disable(); + info.SetData("[ [ [@(170.42.0) File already exists.]]]"); + } + else { + ok.Enable(); + } +} + +String NewPackageFileWindow::GetFileName() const +{ + return fileName.GetData(); +} + +void WorkspaceWork::NewPackageFile() +{ + NewPackageFileWindow dlg(GetFileFolder(GetActivePackagePath())); + if (dlg.ExecuteOK()) + AddItem(dlg.GetFileName(), false, false); +}