1.15.6
This commit is contained in:
parent
7dd4f6498d
commit
f8693ad241
|
@ -8,6 +8,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
### Fixed
|
### Fixed
|
||||||
- fixed issue with Windows 7 caused by the new CustomLCID option [#4117](https://github.com/sandboxie-plus/Sandboxie/issues/4117)
|
- fixed issue with Windows 7 caused by the new CustomLCID option [#4117](https://github.com/sandboxie-plus/Sandboxie/issues/4117)
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- added alias for a sandbox [#4112](https://github.com/sandboxie-plus/Sandboxie/issues/4112)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [1.14.5 / 5.69.5] - 2024-07-23
|
## [1.14.5 / 5.69.5] - 2024-07-23
|
||||||
|
|
|
@ -71,13 +71,21 @@ _FX BOOLEAN Gui_InitTitle(HMODULE module)
|
||||||
SbieDll_GetSettingsForName(NULL, Dll_ImageName, L"BoxNameTitle", buf, sizeof(buf), NULL);
|
SbieDll_GetSettingsForName(NULL, Dll_ImageName, L"BoxNameTitle", buf, sizeof(buf), NULL);
|
||||||
if (*buf == L'y' || *buf == L'Y') { // indicator + box name
|
if (*buf == L'y' || *buf == L'Y') { // indicator + box name
|
||||||
|
|
||||||
|
const WCHAR* BoxName = Dll_BoxName;
|
||||||
|
|
||||||
|
NTSTATUS status;
|
||||||
|
WCHAR BoxAlias[MAX_PATH];
|
||||||
|
status = SbieApi_QueryConfAsIs(NULL, L"BoxAlias", 0, BoxAlias, ARRAYSIZE(BoxAlias));
|
||||||
|
if (NT_SUCCESS(status) && *BoxAlias)
|
||||||
|
BoxName = BoxAlias;
|
||||||
|
|
||||||
UNICODE_STRING uni;
|
UNICODE_STRING uni;
|
||||||
|
|
||||||
Gui_BoxNameTitleLen = wcslen(Dll_BoxName) + 3;
|
Gui_BoxNameTitleLen = wcslen(BoxName) + 3;
|
||||||
Gui_BoxNameTitleW =
|
Gui_BoxNameTitleW =
|
||||||
Dll_Alloc((Gui_BoxNameTitleLen + 3) * sizeof(WCHAR));
|
Dll_Alloc((Gui_BoxNameTitleLen + 3) * sizeof(WCHAR));
|
||||||
Gui_BoxNameTitleW[0] = Gui_TitleSuffixW[1]; // L'['
|
Gui_BoxNameTitleW[0] = Gui_TitleSuffixW[1]; // L'['
|
||||||
wcscpy(&Gui_BoxNameTitleW[1], Dll_BoxName);
|
wcscpy(&Gui_BoxNameTitleW[1], BoxName);
|
||||||
wcscat(Gui_BoxNameTitleW, &Gui_TitleSuffixW[3]); // L"]"
|
wcscat(Gui_BoxNameTitleW, &Gui_TitleSuffixW[3]); // L"]"
|
||||||
wcscat(Gui_BoxNameTitleW, L" ");
|
wcscat(Gui_BoxNameTitleW, L" ");
|
||||||
|
|
||||||
|
|
|
@ -1312,7 +1312,7 @@ QString CSbieAPI::SbieIniGet2(const QString& Section, const QString& Setting, qu
|
||||||
|
|
||||||
SB_STATUS CSbieAPI::ValidateName(const QString& BoxName)
|
SB_STATUS CSbieAPI::ValidateName(const QString& BoxName)
|
||||||
{
|
{
|
||||||
if (BoxName.length() > (BOXNAME_COUNT - 2))
|
if (BoxName.length() > (BOXNAME_COUNT - 2) || BoxName.isEmpty())
|
||||||
return SB_ERR(SB_NameLenLimit);
|
return SB_ERR(SB_NameLenLimit);
|
||||||
|
|
||||||
/* invalid file name characters on windows
|
/* invalid file name characters on windows
|
||||||
|
|
|
@ -327,8 +327,10 @@ QList<QVariant> CSbieModel::Sync(const QMap<QString, CSandBoxPtr>& BoxList, cons
|
||||||
QVariant Value;
|
QVariant Value;
|
||||||
switch(section)
|
switch(section)
|
||||||
{
|
{
|
||||||
case eName: Value = pBox->GetName(); break;
|
case eName: Value = pBoxEx->GetDisplayName(); break;
|
||||||
|
//case eName: Value = pBox->GetName(); break;
|
||||||
case eStatus: Value = pBox.objectCast<CSandBoxPlus>()->GetStatusStr(); break;
|
case eStatus: Value = pBox.objectCast<CSandBoxPlus>()->GetStatusStr(); break;
|
||||||
|
case eTitle: Value = pBox->GetDesktop(); break;
|
||||||
case eInfo: Value = pBox.objectCast<CSandBoxPlus>()->IsEmptyCached() ? -2 : (bWatchSize ? pBox.objectCast<CSandBoxPlus>()->GetSize() : 0); break;
|
case eInfo: Value = pBox.objectCast<CSandBoxPlus>()->IsEmptyCached() ? -2 : (bWatchSize ? pBox.objectCast<CSandBoxPlus>()->GetSize() : 0); break;
|
||||||
case ePath: Value = pBox->GetFileRoot(); break;
|
case ePath: Value = pBox->GetFileRoot(); break;
|
||||||
}
|
}
|
||||||
|
@ -343,7 +345,7 @@ QList<QVariant> CSbieModel::Sync(const QMap<QString, CSandBoxPtr>& BoxList, cons
|
||||||
|
|
||||||
switch (section)
|
switch (section)
|
||||||
{
|
{
|
||||||
case eName: ColValue.Formatted = Value.toString().replace("_", " "); break;
|
//case eName: ColValue.Formatted = Value.toString().replace("_", " "); break;
|
||||||
case eInfo: ColValue.Formatted = Value.toULongLong() == -2 ? tr("Empty") : (Value.toULongLong() > 0 ? FormatSize(Value.toULongLong()) : ""); break;
|
case eInfo: ColValue.Formatted = Value.toULongLong() == -2 ? tr("Empty") : (Value.toULongLong() > 0 ? FormatSize(Value.toULongLong()) : ""); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -410,6 +410,15 @@ void CSandBoxPlus::UpdateDetails()
|
||||||
|
|
||||||
QStringList BorderCfg = GetText("BorderColor").split(",");
|
QStringList BorderCfg = GetText("BorderColor").split(",");
|
||||||
m_BoxColor = QColor("#" + BorderCfg[0].mid(5, 2) + BorderCfg[0].mid(3, 2) + BorderCfg[0].mid(1, 2)).rgb();
|
m_BoxColor = QColor("#" + BorderCfg[0].mid(5, 2) + BorderCfg[0].mid(3, 2) + BorderCfg[0].mid(1, 2)).rgb();
|
||||||
|
|
||||||
|
m_BoxAlias = GetText("BoxAlias");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CSandBoxPlus::GetDisplayName() const
|
||||||
|
{
|
||||||
|
if (!m_BoxAlias.isEmpty())
|
||||||
|
return m_BoxAlias;
|
||||||
|
return GetName().replace("_", " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CSandBoxPlus::IsBoxexPath(const QString& Path)
|
bool CSandBoxPlus::IsBoxexPath(const QString& Path)
|
||||||
|
|
|
@ -72,6 +72,8 @@ public:
|
||||||
CSandBoxPlus(const QString& BoxName, class CSbieAPI* pAPI);
|
CSandBoxPlus(const QString& BoxName, class CSbieAPI* pAPI);
|
||||||
virtual ~CSandBoxPlus();
|
virtual ~CSandBoxPlus();
|
||||||
|
|
||||||
|
virtual QString GetDisplayName() const;
|
||||||
|
|
||||||
SB_PROGRESS ExportBox(const QString& FileName, const QString& Password = "", int Level = 5, bool Solid = false);
|
SB_PROGRESS ExportBox(const QString& FileName, const QString& Password = "", int Level = 5, bool Solid = false);
|
||||||
SB_PROGRESS ImportBox(const QString& FileName, const QString& Password = "");
|
SB_PROGRESS ImportBox(const QString& FileName, const QString& Password = "");
|
||||||
|
|
||||||
|
@ -256,6 +258,7 @@ protected:
|
||||||
bool m_BoxDel;
|
bool m_BoxDel;
|
||||||
bool m_NoForce;
|
bool m_NoForce;
|
||||||
QRgb m_BoxColor;
|
QRgb m_BoxColor;
|
||||||
|
QString m_BoxAlias;
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -1411,21 +1411,39 @@ void CSbieView::OnSandBoxAction(QAction* Action, const QList<CSandBoxPtr>& SandB
|
||||||
}
|
}
|
||||||
else if (Action == m_pMenuRename)
|
else if (Action == m_pMenuRename)
|
||||||
{
|
{
|
||||||
QString OldValue = SandBoxes.first()->GetName().replace("_", " ");
|
auto pBox = SandBoxes.first();
|
||||||
QString Value = QInputDialog::getText(this, "Sandboxie-Plus", tr("Please enter a new name for the Sandbox."), QLineEdit::Normal, OldValue);
|
QString OldValue = pBox->GetName().replace("_", " ");
|
||||||
if (Value.isEmpty() || Value == OldValue)
|
QString Alias = pBox->GetText("BoxAlias");
|
||||||
|
bool bAlias = false;
|
||||||
|
if (bAlias = !Alias.isEmpty())
|
||||||
|
OldValue = Alias;
|
||||||
|
bool bOk = false;
|
||||||
|
QString Value = QInputDialog::getText(this, "Sandboxie-Plus", bAlias ? tr("Please enter a new alias for the Sandbox.") : tr("Please enter a new name for the Sandbox."), QLineEdit::Normal, OldValue, &bOk);
|
||||||
|
if (!bOk || Value == OldValue)
|
||||||
return;
|
return;
|
||||||
if (!TestNameAndWarn(Value))
|
if (!Value.isEmpty() && !TestNameAndWarn(Value))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SB_STATUS Status = SandBoxes.first()->RenameBox(Value.replace(" ", "_"));
|
bool bError = false;
|
||||||
if (!Status.IsError())
|
if (bAlias || (bError = CSbieAPI::ValidateName(QString(Value).replace(" ", "_")).IsError()))
|
||||||
{
|
{
|
||||||
RenameItem(OldValue.replace(" ", "_"), Value.replace(" ", "_"));
|
if (!bAlias && QMessageBox::question(this, "Sandboxie-Plus", tr("The entered name is not valid, do you want to set it as an alias instead?"), QMessageBox::Yes, QMessageBox::No) != QMessageBox::Yes)
|
||||||
if (theAPI->GetGlobalSettings()->GetText("DefaultBox", "DefaultBox").compare(OldValue.replace(" ", "_"), Qt::CaseInsensitive) == 0)
|
return;
|
||||||
theAPI->GetGlobalSettings()->SetText("DefaultBox", Value.replace(" ", "_"));
|
if (Value.isEmpty()) pBox->DelValue("BoxAlias");
|
||||||
|
else pBox->SetText("BoxAlias", Value);
|
||||||
|
pBox->UpdateDetails();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SB_STATUS Status = pBox->RenameBox(Value.replace(" ", "_"));
|
||||||
|
if (!Status.IsError())
|
||||||
|
{
|
||||||
|
RenameItem(OldValue.replace(" ", "_"), Value.replace(" ", "_"));
|
||||||
|
if (theAPI->GetGlobalSettings()->GetText("DefaultBox", "DefaultBox").compare(OldValue.replace(" ", "_"), Qt::CaseInsensitive) == 0)
|
||||||
|
theAPI->GetGlobalSettings()->SetText("DefaultBox", Value.replace(" ", "_"));
|
||||||
|
}
|
||||||
|
Results.append(Status);
|
||||||
}
|
}
|
||||||
Results.append(Status);
|
|
||||||
|
|
||||||
SaveBoxGrouping();
|
SaveBoxGrouping();
|
||||||
}
|
}
|
||||||
|
@ -1720,7 +1738,7 @@ void CSbieView::ShowOptions(const CSandBoxPtr& pBox)
|
||||||
{
|
{
|
||||||
auto pBoxEx = pBox.objectCast<CSandBoxPlus>();
|
auto pBoxEx = pBox.objectCast<CSandBoxPlus>();
|
||||||
if (pBoxEx->m_pOptionsWnd == NULL) {
|
if (pBoxEx->m_pOptionsWnd == NULL) {
|
||||||
pBoxEx->m_pOptionsWnd = new COptionsWindow(pBox, pBox->GetName());
|
pBoxEx->m_pOptionsWnd = new COptionsWindow(pBox, pBoxEx->GetDisplayName());
|
||||||
connect(theGUI, SIGNAL(Closed()), pBoxEx->m_pOptionsWnd, SLOT(close()));
|
connect(theGUI, SIGNAL(Closed()), pBoxEx->m_pOptionsWnd, SLOT(close()));
|
||||||
connect(pBoxEx->m_pOptionsWnd, &COptionsWindow::Closed, [pBoxEx]() {
|
connect(pBoxEx->m_pOptionsWnd, &COptionsWindow::Closed, [pBoxEx]() {
|
||||||
pBoxEx->m_pOptionsWnd = NULL;
|
pBoxEx->m_pOptionsWnd = NULL;
|
||||||
|
|
Loading…
Reference in New Issue