see #2488 fixed new object menu issues

This commit is contained in:
Vadim Kurland
2011-06-06 21:56:00 -07:00
parent 729216be1f
commit b4b3c1ccad
5 changed files with 40 additions and 8 deletions
-1
View File
@@ -1807,6 +1807,5 @@ void FWWindow::addNewObjectMenu(QMenu *m)
void FWWindow::showNewObjectMenu() void FWWindow::showNewObjectMenu()
{ {
m_mainWindow->newObjectAction->menu()->popup(QCursor::pos()); m_mainWindow->newObjectAction->menu()->popup(QCursor::pos());
// m_mainWindow->newObjectAction->parentWidget()->mapToGlobal(QPoint(0,0)));
} }
+8 -1
View File
@@ -131,6 +131,8 @@ ObjectManipulator::ObjectManipulator(QWidget *parent):
// used in duplicateWithDependencies() // used in duplicateWithDependencies()
dedup_marker_global_counter = time(NULL); dedup_marker_global_counter = time(NULL);
popup_menu = NULL;
// buildNewObjectMenu(); // buildNewObjectMenu();
} }
@@ -362,7 +364,12 @@ void ObjectManipulator::contextMenuRequested(const QPoint &pos)
//if (currentObj==NULL) currentObj=otvi->getFWObject(); //if (currentObj==NULL) currentObj=otvi->getFWObject();
FWObject *currentObj = getSelectedObject(); FWObject *currentObj = getSelectedObject();
popup_menu->clear(); if (popup_menu == NULL)
{
popup_menu = new QMenu(this);
popup_menu->setObjectName("objectTreeContextMenu");
} else
popup_menu->clear();
if (item->childCount() > 0) if (item->childCount() > 0)
{ {
+2 -1
View File
@@ -237,7 +237,8 @@ public slots:
void newObject(); void newObject();
void createNewObject(); void createNewObject();
void newFirewallSlot();
void copyObj(); void copyObj();
void cutObj(); void cutObj();
void pasteObj(); void pasteObj();
+29 -3
View File
@@ -91,9 +91,6 @@ using namespace libfwbuilder;
void ObjectManipulator::buildNewObjectMenu() void ObjectManipulator::buildNewObjectMenu()
{ {
popup_menu = new QMenu(this);
popup_menu->setObjectName("objectTreeContextMenu");
QMenu* newObjectPopup = new QMenu( mw ); QMenu* newObjectPopup = new QMenu( mw );
newObjectPopup->setObjectName("newObjectPopup"); newObjectPopup->setObjectName("newObjectPopup");
@@ -266,6 +263,35 @@ void ObjectManipulator::createNewObject()
m_project->undoStack->push(macro); m_project->undoStack->push(macro);
} }
void ObjectManipulator::newFirewallSlot()
{
QString descr = FWBTree().getTranslatableObjectTypeName(Firewall::TYPENAME);
// FWCmdMacro should be used for commands grouping
FWCmdMacro* macro = 0;
macro = new FWCmdMacro(
FWBTree().getTranslatableNewObjectMenuText(Firewall::TYPENAME));
FWObject *new_obj = newFirewall(macro);
if (new_obj == NULL)
{
delete macro;
return;
}
QCoreApplication::postEvent(
m_project, new expandObjectInTreeEvent(
m_project->getFileName(), new_obj->getId()));
FWObject *ruleset = new_obj->getFirstByType(Policy::TYPENAME);
if (ruleset)
QCoreApplication::postEvent(
m_project, new openRulesetEvent(
m_project->getFileName(), ruleset->getId()));
m_project->undoStack->push(macro);
}
FWObject* ObjectManipulator::createObject(const QString &objType, FWObject* ObjectManipulator::createObject(const QString &objType,
const QString &objName, const QString &objName,
FWObject *copyFrom, FWObject *copyFrom,
+1 -2
View File
@@ -49,8 +49,7 @@ WorkflowIcons::WorkflowIcons(QWidget *parent) :
void WorkflowIcons::setUpSignals(QWidget *panel) void WorkflowIcons::setUpSignals(QWidget *panel)
{ {
ObjectManipulator *om = panel->findChild<ObjectManipulator*>(); ObjectManipulator *om = panel->findChild<ObjectManipulator*>();
QAction *newFirewall = om->findChild<QAction*>(QString("newObject_") + libfwbuilder::Firewall::TYPENAME); connect(ui->newFirewall, SIGNAL(clicked()), om, SLOT(newFirewallSlot()));
connect(ui->newFirewall, SIGNAL(clicked()), newFirewall, SLOT(trigger()));
// global variable mw is null when this is running // global variable mw is null when this is running
QObject *mainWindow = dynamic_cast<ProjectPanel*>(panel)->getWindow(); QObject *mainWindow = dynamic_cast<ProjectPanel*>(panel)->getWindow();