Author: vadim
Date: 2009-10-27 14:30:41 -0700 (Tue, 27 Oct 2009)
New Revision: 1654
Modified:
branches/v3_1/build_num
branches/v3_1/src/gui/ObjectManipulator.cpp
branches/v3_1/src/gui/ProjectPanel.cpp
branches/v3_1/src/gui/RuleSetView.cpp
Log:
fixes #548 user should be able to delete any ruleset object except for the very last one of each type
Modified: branches/v3_1/build_num
===================================================================
--- branches/v3_1/build_num 2009-10-27 20:31:59 UTC (rev 1653)
+++ branches/v3_1/build_num 2009-10-27 21:30:41 UTC (rev 1654)
@@ -1 +1 @@
-#define BUILD_NUM 1651
+#define BUILD_NUM 1653
Modified: branches/v3_1/src/gui/ObjectManipulator.cpp
===================================================================
--- branches/v3_1/src/gui/ObjectManipulator.cpp 2009-10-27 20:31:59 UTC (rev 1653)
+++ branches/v3_1/src/gui/ObjectManipulator.cpp 2009-10-27 21:30:41 UTC (rev 1654)
@@ -2516,7 +2516,12 @@
bool is_library = Library::isA(obj);
bool is_firewall = Firewall::cast(obj) != NULL; // includes Cluster too
bool is_deleted_object = (deleted_objects_lib!=NULL && obj->isChildOf(deleted_objects_lib));
- bool ruleset_visible = is_firewall && m_project->getCurrentRuleSet()->isChildOf(obj);
+ // ruleset_visible == true if 1) we delete firewall object and one of its
+ // rulesets is visible in the project panel, or 2) we delete ruleset object
+ // which is visible in the project panel
+ bool ruleset_visible = (
+ (is_firewall && m_project->getCurrentRuleSet()->isChildOf(obj)) ||
+ (m_project->getCurrentRuleSet() == obj));
mw->findObjectWidget->reset();
Modified: branches/v3_1/src/gui/ProjectPanel.cpp
===================================================================
--- branches/v3_1/src/gui/ProjectPanel.cpp 2009-10-27 20:31:59 UTC (rev 1653)
+++ branches/v3_1/src/gui/ProjectPanel.cpp 2009-10-27 21:30:41 UTC (rev 1654)
@@ -254,8 +254,7 @@
SelectionMemento memento;
- RuleSetView* rv = dynamic_cast<RuleSetView*>(
- m_panel->ruleSets->currentWidget());
+ RuleSetView* rv = dynamic_cast<RuleSetView*>(m_panel->ruleSets->currentWidget());
if (rv) rv->saveCurrentRowColumn(memento);
last_modified = db()->getTimeLastModified();
@@ -293,24 +292,29 @@
qDebug("ProjectPanel::reopenFirewall(): checkpoint 4: "
"dirty=%d last_modified=%s",
db()->isDirty(), ctime(&last_modified));
-
- m_panel->ruleSets->addWidget(RuleSetView::getRuleSetViewByType(this, visibleRuleSet,NULL));
- last_modified = db()->getTimeLastModified();
- if (fwbdebug)
- qDebug("ProjectPanel::reopenFirewall(): checkpoint 5: "
- "dirty=%d last_modified=%s",
- db()->isDirty(), ctime(&last_modified));
+ RuleSetView* rulesetview =
+ RuleSetView::getRuleSetViewByType(this, visibleRuleSet, NULL);
+ if (rulesetview)
+ {
+ m_panel->ruleSets->addWidget(rulesetview);
+
+ last_modified = db()->getTimeLastModified();
+ if (fwbdebug)
+ qDebug("ProjectPanel::reopenFirewall(): checkpoint 5: "
+ "dirty=%d last_modified=%s",
+ db()->isDirty(), ctime(&last_modified));
- m_panel->ruleSets->setCurrentIndex( currentPage );
- rv = dynamic_cast<RuleSetView*>(m_panel->ruleSets->currentWidget());
- rv->restoreCurrentRowColumn(memento);
+ m_panel->ruleSets->setCurrentIndex(currentPage);
+ rv = dynamic_cast<RuleSetView*>(m_panel->ruleSets->currentWidget());
+ rv->restoreCurrentRowColumn(memento);
- changingTabs = false;
- mainW->setEnabledAfterRF();
+ changingTabs = false;
+ mainW->setEnabledAfterRF();
- m_panel->ruleSets->setUpdatesEnabled(true);
- m_panel->ruleSets->show();
+ m_panel->ruleSets->setUpdatesEnabled(true);
+ m_panel->ruleSets->show();
+ }
}
int ProjectPanel::findFirewallInList(FWObject *f)
@@ -858,16 +862,16 @@
// also can't delete "top" policy ruleset
if (del_menu_item_state && RuleSet::cast(obj))
{
- if (dynamic_cast<RuleSet*>(obj)->isTop()) del_menu_item_state = false;
- else
- {
+ //if (dynamic_cast<RuleSet*>(obj)->isTop()) del_menu_item_state = false;
+ //else
+ //{
FWObject *fw = obj->getParent();
// fw can be NULL if this ruleset is in the Deleted objects
// library
if (fw==NULL) return del_menu_item_state;
list<FWObject*> child_objects = fw->getByType(obj->getTypeName());
if (child_objects.size()==1) del_menu_item_state = false;
- }
+ //}
}
return del_menu_item_state;
}
Modified: branches/v3_1/src/gui/RuleSetView.cpp
===================================================================
--- branches/v3_1/src/gui/RuleSetView.cpp 2009-10-27 20:31:59 UTC (rev 1653)
+++ branches/v3_1/src/gui/RuleSetView.cpp 2009-10-27 21:30:41 UTC (rev 1654)
@@ -147,8 +147,8 @@
}
RuleSetView* RuleSetView::getRuleSetViewByType(ProjectPanel *project,
- RuleSet *ruleset,
- QWidget *parent)
+ RuleSet *ruleset,
+ QWidget *parent)
{
if (fwbdebug) qDebug("RuleSetView::getRuleSetViewByType");
if (Policy::isA(ruleset))
|