diff --git a/CHANGELOG.md b/CHANGELOG.md index d3a0d36a..83e38eb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Added - added Swedish translation to Plus UI (thanks pb1) - added Vintage View Mode to make sandman UI look just lien sbietrl on the first glance +- added alternative tray menu mechanics +- added ability to auto generate sandbox icons based on the border color +- added dedicated box group icon ### Fixed - fixed DPI issue on Windows 7 diff --git a/Installer/Languages.iss b/Installer/Languages.iss index 5db7f734..bbc03dea 100644 --- a/Installer/Languages.iss +++ b/Installer/Languages.iss @@ -316,8 +316,8 @@ swedish.SandboxedBrowser=SandlÃ¥dad webläsare swedish.CustomPageLabel1=Välj installationstyp swedish.CustomPageLabel2=Hur ska installeringen ske swedish.CustomPageLabel3=Välj installationsläget -swedish.CustomPageInstallMode=Installera {#Minappsnamn} pÃ¥ denna dator -swedish.CustomPageUpgradeMode=Uppdatera existerande {#Minappsnamn} installation +swedish.CustomPageInstallMode=Installera {#MyAppName} pÃ¥ denna dator +swedish.CustomPageUpgradeMode=Uppdatera existerande {#MyAppName} installation swedish.CustomPagePortableMode=Extrahera alla filer till en katalog för portabel användning swedish.RequiresWin7OrLater=Sandboxie-Plus kräver Windows 7 eller senare. swedish.ClassicFound=Upptäckt en installation av Sandboxie Classic, den behöver avinstalleras först. Vill du avinstallera den nu? diff --git a/Installer/license.txt b/Installer/license.txt index 9632afb0..b9924e24 100644 --- a/Installer/license.txt +++ b/Installer/license.txt @@ -1,5 +1,40 @@ Copyright 2020 - 2022 David Xanatos (xanasoft.com) -This software is provided under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License +Sandboxie-Plus can be used under the following restrictions and obligations: -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file + 1. Whomever obtains a copy of the software is permitted + to use it in any noncommercial setting to the full + extend the software permits; however certain functionality + is only available with a support certificate which + can be obtained from xanasoft.com + + 2. To use the software commercially a business certificate + must be obtained from xanasoft.com; however it is permitted to + use the software commercially for a limited period of time + on no more than 3 machines for evaluation purposes. + + 3. It is permitted to redistribute the original unmodified + binaries free of charge. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + + +Further licensing information +====================================== + +Sandboxie-Plus is made up of the following components, governed under various licenses: +* SandMan the primary Sandboxie-Plus UI component, provided under a custom license. +* QSbieAPI a stand alone re implementation of sandboxie’s API using IPC mechanisms to. communicate with sandboxie’s core components, license under the LGPL. +* Sandboxie core components, licensed under the GPL v3. +* MiscHelpers a generic Qt based helper library, license under the LGPL. +* The Qt Framework which is license under the LGPL. +* UglobalHotkey is an extension for Qt framework, which implements global hotkeys functionality and is in the Public Domain. +* QtSingleApp a Qt Solutions Component that provides support for applications that can be only started once per user, BSD licensed. diff --git a/SandboxiePlus/SandMan/Windows/OptionsAccess.cpp b/SandboxiePlus/SandMan/Windows/OptionsAccess.cpp index 58091653..19d81d68 100644 --- a/SandboxiePlus/SandMan/Windows/OptionsAccess.cpp +++ b/SandboxiePlus/SandMan/Windows/OptionsAccess.cpp @@ -392,22 +392,22 @@ void COptionsWindow::CloseAccessEdit(QTreeWidgetItem* pItem, bool bSave) if (!pProgram) return; - QHBoxLayout* pLayout = (QHBoxLayout*)pProgram->layout(); - QToolButton* pNot = (QToolButton*)pLayout->itemAt(0)->widget(); - QComboBox* pCombo = (QComboBox*)pLayout->itemAt(1)->widget(); - - QComboBox* pMode = (QComboBox*)ui.treeAccess->itemWidget(pItem, 2); - QLineEdit* pPath = (QLineEdit*)ui.treeAccess->itemWidget(pItem, 3); - - QString Program = pCombo->currentText(); - int Index = pCombo->findText(Program); - if (Index != -1) - Program = pCombo->itemData(Index, Qt::UserRole).toString(); - if (!Program.isEmpty() && Program.left(1) != "<") - m_Programs.insert(Program); - if (bSave) { + QHBoxLayout* pLayout = (QHBoxLayout*)pProgram->layout(); + QToolButton* pNot = (QToolButton*)pLayout->itemAt(0)->widget(); + QComboBox* pCombo = (QComboBox*)pLayout->itemAt(1)->widget(); + + QComboBox* pMode = (QComboBox*)ui.treeAccess->itemWidget(pItem, 2); + QLineEdit* pPath = (QLineEdit*)ui.treeAccess->itemWidget(pItem, 3); + + QString Program = pCombo->currentText(); + int Index = pCombo->findText(Program); + if (Index != -1) + Program = pCombo->itemData(Index, Qt::UserRole).toString(); + if (!Program.isEmpty() && Program.left(1) != "<") + m_Programs.insert(Program); + if (pItem->data(0, Qt::UserRole).toInt() == eCOM && !pPath->text().isEmpty()) { bool isGUID = pPath->text().length() == 38 && pPath->text().left(1) == "{" && pPath->text().right(1) == "}"; diff --git a/SandboxiePlus/SandMan/Windows/OptionsAdvanced.cpp b/SandboxiePlus/SandMan/Windows/OptionsAdvanced.cpp index c3632020..ee329709 100644 --- a/SandboxiePlus/SandMan/Windows/OptionsAdvanced.cpp +++ b/SandboxiePlus/SandMan/Windows/OptionsAdvanced.cpp @@ -143,7 +143,7 @@ void COptionsWindow::LoadAdvanced() void COptionsWindow::ShowTriggersTmpl(bool bUpdate) { - if (ui.chkShowRecoveryTmpl->isChecked()) + if (ui.chkShowTriggersTmpl->isChecked()) { foreach(const QString& Template, m_pBox->GetTemplates()) { diff --git a/SandboxiePlus/SandMan/Windows/OptionsNetwork.cpp b/SandboxiePlus/SandMan/Windows/OptionsNetwork.cpp index 1fee1556..b31dc967 100644 --- a/SandboxiePlus/SandMan/Windows/OptionsNetwork.cpp +++ b/SandboxiePlus/SandMan/Windows/OptionsNetwork.cpp @@ -232,14 +232,14 @@ void COptionsWindow::CloseINetEdit(QTreeWidgetItem* pItem, bool bSave) if (!pProgram) return; - //QHBoxLayout* pLayout = (QHBoxLayout*)pProgram->layout(); - //QComboBox* pCombo = (QComboBox*)pLayout->itemAt(0)->widget(); - QComboBox* pCombo = (QComboBox*)pProgram; - - QComboBox* pMode = (QComboBox*)ui.treeINet->itemWidget(pItem, 1); - if (bSave) { + //QHBoxLayout* pLayout = (QHBoxLayout*)pProgram->layout(); + //QComboBox* pCombo = (QComboBox*)pLayout->itemAt(0)->widget(); + QComboBox* pCombo = (QComboBox*)pProgram; + + QComboBox* pMode = (QComboBox*)ui.treeINet->itemWidget(pItem, 1); + QString OldProgram = pItem->data(0, Qt::UserRole).toString(); int OldMode = pItem->data(1, Qt::UserRole).toInt(); if (pItem->checkState(0) == Qt::Unchecked) @@ -591,25 +591,25 @@ void COptionsWindow::CloseNetFwEdit(QTreeWidgetItem* pItem, bool bSave) if (!pProgram) return; - QHBoxLayout* pLayout = (QHBoxLayout*)pProgram->layout(); - QToolButton* pNot = (QToolButton*)pLayout->itemAt(0)->widget(); - QComboBox* pCombo = (QComboBox*)pLayout->itemAt(1)->widget(); - - QComboBox* pAction = (QComboBox*)ui.treeNetFw->itemWidget(pItem, 1); - - QLineEdit* pPort = (QLineEdit*)ui.treeNetFw->itemWidget(pItem, 2); - - QLineEdit* pIP = (QLineEdit*)ui.treeNetFw->itemWidget(pItem, 3); - - QComboBox* pProt = (QComboBox*)ui.treeNetFw->itemWidget(pItem, 4); - - QString Program = pCombo->currentText(); - int Index = pCombo->findText(Program); - if (Index != -1) - Program = pCombo->itemData(Index, Qt::UserRole).toString(); - if (bSave) { + QHBoxLayout* pLayout = (QHBoxLayout*)pProgram->layout(); + QToolButton* pNot = (QToolButton*)pLayout->itemAt(0)->widget(); + QComboBox* pCombo = (QComboBox*)pLayout->itemAt(1)->widget(); + + QComboBox* pAction = (QComboBox*)ui.treeNetFw->itemWidget(pItem, 1); + + QLineEdit* pPort = (QLineEdit*)ui.treeNetFw->itemWidget(pItem, 2); + + QLineEdit* pIP = (QLineEdit*)ui.treeNetFw->itemWidget(pItem, 3); + + QComboBox* pProt = (QComboBox*)ui.treeNetFw->itemWidget(pItem, 4); + + QString Program = pCombo->currentText(); + int Index = pCombo->findText(Program); + if (Index != -1) + Program = pCombo->itemData(Index, Qt::UserRole).toString(); + pItem->setText(0, (pNot->isChecked() ? "NOT " : "") + pCombo->currentText()); pItem->setData(0, Qt::UserRole, (pNot->isChecked() ? "!" : "") + Program); diff --git a/SandboxiePlus/SandMan/Windows/OptionsWindow.cpp b/SandboxiePlus/SandMan/Windows/OptionsWindow.cpp index bfa60dad..46745048 100644 --- a/SandboxiePlus/SandMan/Windows/OptionsWindow.cpp +++ b/SandboxiePlus/SandMan/Windows/OptionsWindow.cpp @@ -144,7 +144,6 @@ COptionsWindow::COptionsWindow(const QSharedPointer& pBox, const QStri ui.tabs->tabBar()->setStyle(new CustomTabStyle(ui.tabs->tabBar()->style())); //this->setMinimumHeight(490); - ui.tabs->removeTab(8); // misc tab is currently still empty ui.tabs->setTabIcon(eGeneral, CSandMan::GetIcon("Options")); ui.tabs->setTabIcon(eGroups, CSandMan::GetIcon("Group"));