From 4f5a64b5703b3b450ade8c718101a227ea195613 Mon Sep 17 00:00:00 2001
From: Vadim Kurland
Date: Tue, 5 Oct 2010 19:02:16 +0000
Subject: [PATCH] fixed #1778 "main menu Rules should have the same items
that context RuleSetView menu when no rules are selected"
---
build_num | 2 +-
doc/ChangeLog | 6 ++++++
src/gui/FWWindow.cpp | 13 +++++++++++--
src/gui/RuleSetView.cpp | 9 +++++----
src/gui/RuleSetView.h | 16 +++++++++++-----
src/res/help/en_US/release_notes_4.1.2.html | 6 ++++++
6 files changed, 40 insertions(+), 12 deletions(-)
diff --git a/build_num b/build_num
index 1fc31cb59..ba257e71c 100644
--- a/build_num
+++ b/build_num
@@ -1 +1 @@
-#define BUILD_NUM 3321
+#define BUILD_NUM 3322
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 84ba5a555..c2d657a9e 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2010-10-05 Vadim Kurland
+
+ * FWWindow.cpp (prepareRulesMenu): fixed #1778 "main menu Rules
+ should have the same items that context RuleSetView menu when no
+ rules are selected"
+
2010-10-04 Vadim Kurland
* ObjectManipulator.cpp (showObjectInTree): fixed #1777 "scroll
diff --git a/src/gui/FWWindow.cpp b/src/gui/FWWindow.cpp
index 1196cdcdc..381caa2c3 100644
--- a/src/gui/FWWindow.cpp
+++ b/src/gui/FWWindow.cpp
@@ -1594,6 +1594,8 @@ void FWWindow::setupGlobalToolbar()
*/
void FWWindow::prepareRulesMenu()
{
+ if (fwbdebug) qDebug() << "FWWindow::prepareRulesMenu()";
+
cleanRulesMenu();
ProjectPanel* pp = activeProject();
@@ -1601,9 +1603,14 @@ void FWWindow::prepareRulesMenu()
{
RuleSetView* rsv = activeProject()->getCurrentRuleSetView();
+ if (fwbdebug) qDebug() << "FWWindow::prepareRulesMenu() rsv=" << rsv;
+
if(rsv)
{
- rsv->addRowMenuItemsToMenu(m_mainWindow->RulesMenu);
+ if (rsv->selectedRulesCount() == 0)
+ rsv->addGenericMenuItemsToContextMenu(m_mainWindow->RulesMenu);
+ else
+ rsv->addRowMenuItemsToMenu(m_mainWindow->RulesMenu);
}
m_mainWindow->RulesMenu->addSeparator();
m_mainWindow->RulesMenu->addActions(ruleStaticActions);
@@ -1614,8 +1621,10 @@ void FWWindow::prepareRulesMenu()
}
}
-void FWWindow::cleanRulesMenu ()
+void FWWindow::cleanRulesMenu()
{
+ if (fwbdebug) qDebug() << "FWWindow::cleanRulesMenu()";
+
m_mainWindow->RulesMenu->actions().clear();
m_mainWindow->RulesMenu->clear();
}
diff --git a/src/gui/RuleSetView.cpp b/src/gui/RuleSetView.cpp
index bd92c4491..b4ec4f9d7 100644
--- a/src/gui/RuleSetView.cpp
+++ b/src/gui/RuleSetView.cpp
@@ -746,8 +746,10 @@ void RuleSetView::addGenericMenuItemsToContextMenu(QMenu *menu) const
menu->addAction(tr("Insert Rule"), this, SLOT( insertRule() ));
else
{
- menu->addAction(tr("Add new rule on top"), this, SLOT( insertNewRuleOnTop()));
- menu->addAction(tr("Add new rule at the bottom"), this, SLOT( insertNewRuleAtBottom()));
+ menu->addAction(tr("Add new rule on top"), this,
+ SLOT( insertNewRuleOnTop()));
+ menu->addAction(tr("Add new rule at the bottom"), this,
+ SLOT( insertNewRuleAtBottom()));
}
menu->addSeparator();
menu->addAction(tr("Paste Rule"), this, SLOT( pasteRuleBelow()));
@@ -772,11 +774,11 @@ void RuleSetView::addChangeColorSubmenu(QMenu *menu) const
subcolor->addAction(setColorBlueAction);
subcolor->addAction(setColorPurpleAction);
subcolor->addAction(setColorGrayAction);
-
}
void RuleSetView::addRowMenuItemsToMenu(QMenu *menu) const
{
+ if (fwbdebug) qDebug() << "RuleSetView::addRowMenuItemsToMenu menu=" << menu;
menu->addAction(removeFromGroupAction);
menu->addAction(newGroupAction);
@@ -809,7 +811,6 @@ void RuleSetView::addRowMenuItemsToMenu(QMenu *menu) const
menu->addAction(enableRuleAction);
menu->addAction(disableRuleAction);
-
}
void RuleSetView::itemDoubleClicked(const QModelIndex& index)
diff --git a/src/gui/RuleSetView.h b/src/gui/RuleSetView.h
index 0a2b611b0..26116eb5b 100644
--- a/src/gui/RuleSetView.h
+++ b/src/gui/RuleSetView.h
@@ -121,7 +121,10 @@ public:
void addToGroup(bool isAbove);
void addRowMenuItemsToMenu(QMenu *menu) const;
+ void addGenericMenuItemsToContextMenu(QMenu *menu) const;
+ int selectedRulesCount() { return getSelectedRows().size(); }
+
public slots:
void showContextMenu(const QPoint&);
@@ -200,7 +203,8 @@ public slots:
void compileCurrentRule();
void updateSelectionSensitiveActions();
- void setSelectedRows(const QModelIndex firstIndex, const QModelIndex lastIndex);
+ void setSelectedRows(const QModelIndex firstIndex,
+ const QModelIndex lastIndex);
protected:
@@ -220,15 +224,18 @@ protected:
virtual void keyPressEvent( QKeyEvent* ev );
bool validateForInsertion(QModelIndex index, libfwbuilder::FWObject *obj);
- void deleteObject(QModelIndex index, libfwbuilder::FWObject *obj, QString text, QUndoCommand* makro = 0);
- bool insertObject(QModelIndex index, libfwbuilder::FWObject *obj, QString text, QUndoCommand* makro = 0);
+ void deleteObject(QModelIndex index, libfwbuilder::FWObject *obj,
+ QString text, QUndoCommand* makro = 0);
+ bool insertObject(QModelIndex index, libfwbuilder::FWObject *obj,
+ QString text, QUndoCommand* makro = 0);
bool validateForInsertion(libfwbuilder::RuleElement *re,
libfwbuilder::FWObject *obj, bool quiet=false);
bool validateForInsertionToInterfaceRE(libfwbuilder::RuleElementItf *re,
libfwbuilder::FWObject *obj);
- QAction* createAction(QString label, const char* member, const QKeySequence &shortcut = 0);
+ QAction* createAction(QString label, const char* member,
+ const QKeySequence &shortcut = 0);
private:
@@ -272,7 +279,6 @@ private:
void selectObject(libfwbuilder::FWObject *object, const QModelIndex &index);
ProjectPanel* project;
- void addGenericMenuItemsToContextMenu(QMenu *menu) const;
void addGroupMenuItemsToContextMenu(QMenu *menu) const;
void addChangeColorSubmenu(QMenu *menu) const;
diff --git a/src/res/help/en_US/release_notes_4.1.2.html b/src/res/help/en_US/release_notes_4.1.2.html
index a8ebf9030..99cd471ab 100644
--- a/src/res/help/en_US/release_notes_4.1.2.html
+++ b/src/res/help/en_US/release_notes_4.1.2.html
@@ -372,6 +372,12 @@
+
+
+ fixed #1778 "main menu Rules should have the same items that
+ context RuleSetView menu when no rules are selected"
+
+