forked from qt-creator/qt-creator
Add ActionContainer::addSeparator(...)
Gets rid of a lot of code duplication. Change-Id: I2ce38fb38a0b61cb821e0bdc7bcc9a7ccdf9da72 Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
|
||||
#include "actioncontainer_p.h"
|
||||
#include "actionmanager_p.h"
|
||||
#include "actionmanager.h"
|
||||
|
||||
#include "command_p.h"
|
||||
|
||||
@@ -293,6 +294,31 @@ void ActionContainerPrivate::addMenu(ActionContainer *before, ActionContainer *m
|
||||
scheduleUpdate();
|
||||
}
|
||||
|
||||
/*!
|
||||
* \fn Command *ActionContainer::addSeparator(const Context &context, const Id &group, QAction **outSeparator)
|
||||
*
|
||||
* Adds a separator to the end of the given \a group to the action container, which is enabled
|
||||
* for a given \a context. The created separator action is returned through \a outSeparator.
|
||||
*
|
||||
* Returns the created Command for the separator.
|
||||
*/
|
||||
/*! \a context \a group \a outSeparator
|
||||
* \internal
|
||||
*/
|
||||
Command *ActionContainerPrivate::addSeparator(const Context &context, const Id &group, QAction **outSeparator)
|
||||
{
|
||||
static int separatorIdCount = 0;
|
||||
QAction *separator = new QAction(this);
|
||||
separator->setSeparator(true);
|
||||
Command *cmd = ActionManager::registerAction(separator, Id(QString::fromLatin1("%1.Separator.%2")
|
||||
.arg(id().toString()).arg(++separatorIdCount)),
|
||||
context);
|
||||
addAction(cmd, group);
|
||||
if (outSeparator)
|
||||
*outSeparator = separator;
|
||||
return cmd;
|
||||
}
|
||||
|
||||
void ActionContainerPrivate::clear()
|
||||
{
|
||||
QMutableListIterator<Group> it(m_groups);
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#define ACTIONCONTAINER_H
|
||||
|
||||
#include "coreplugin/id.h"
|
||||
#include "coreplugin/icontext.h"
|
||||
|
||||
#include <QObject>
|
||||
|
||||
@@ -72,6 +73,7 @@ public:
|
||||
virtual void addAction(Command *action, const Id &group = Id()) = 0;
|
||||
virtual void addMenu(ActionContainer *menu, const Id &group = Id()) = 0;
|
||||
virtual void addMenu(ActionContainer *before, ActionContainer *menu, const Id &group = Id()) = 0;
|
||||
virtual Command *addSeparator(const Context &context, const Id &group = Id(), QAction **outSeparator = 0) = 0;
|
||||
|
||||
// This clears this menu and submenus from all actions and submenus.
|
||||
// It does not destroy the submenus and commands, just removes them from their parents.
|
||||
|
||||
@@ -65,6 +65,7 @@ public:
|
||||
void addAction(Command *action, const Id &group = Id());
|
||||
void addMenu(ActionContainer *menu, const Id &group = Id());
|
||||
void addMenu(ActionContainer *before, ActionContainer *menu, const Id &group = Id());
|
||||
Command *addSeparator(const Context &context, const Id &group = Id(), QAction **outSeparator = 0);
|
||||
virtual void clear();
|
||||
|
||||
Id id() const;
|
||||
|
||||
@@ -265,16 +265,6 @@ Id CommandPrivate::id() const
|
||||
return m_id;
|
||||
}
|
||||
|
||||
QAction *CommandPrivate::action() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QShortcut *CommandPrivate::shortcut() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
Core::Context CommandPrivate::context() const
|
||||
{
|
||||
return m_context;
|
||||
|
||||
@@ -66,8 +66,6 @@ public:
|
||||
|
||||
Id id() const;
|
||||
|
||||
QAction *action() const;
|
||||
QShortcut *shortcut() const;
|
||||
Context context() const;
|
||||
|
||||
|
||||
@@ -100,6 +98,8 @@ public:
|
||||
void setShortcut(QShortcut *shortcut);
|
||||
QShortcut *shortcut() const;
|
||||
|
||||
QAction *action() const { return 0; }
|
||||
|
||||
void setContext(const Context &context);
|
||||
Context context() const;
|
||||
void setCurrentContext(const Context &context);
|
||||
@@ -125,6 +125,7 @@ public:
|
||||
QKeySequence keySequence() const;
|
||||
|
||||
QAction *action() const;
|
||||
QShortcut *shortcut() const { return 0; }
|
||||
|
||||
void setCurrentContext(const Context &context);
|
||||
bool isActive() const;
|
||||
|
||||
@@ -274,15 +274,6 @@ static EditorManager *m_instance = 0;
|
||||
|
||||
EditorManager *EditorManager::instance() { return m_instance; }
|
||||
|
||||
static Command *createSeparator(QObject *parent,
|
||||
const Id &id, const Context &context)
|
||||
{
|
||||
QAction *tmpaction = new QAction(parent);
|
||||
tmpaction->setSeparator(true);
|
||||
Command *cmd = ActionManager::registerAction(tmpaction, id, context);
|
||||
return cmd;
|
||||
}
|
||||
|
||||
EditorManager::EditorManager(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
d(new EditorManagerPrivate(parent))
|
||||
@@ -319,15 +310,8 @@ EditorManager::EditorManager(QWidget *parent) :
|
||||
ActionContainer *mwindow = ActionManager::actionContainer(Constants::M_WINDOW);
|
||||
|
||||
// Window menu separators
|
||||
QAction *tmpaction = new QAction(this);
|
||||
tmpaction->setSeparator(true);
|
||||
cmd = ActionManager::registerAction(tmpaction, "QtCreator.Window.Sep.Split", editManagerContext);
|
||||
mwindow->addAction(cmd, Constants::G_WINDOW_SPLIT);
|
||||
|
||||
tmpaction = new QAction(this);
|
||||
tmpaction->setSeparator(true);
|
||||
cmd = ActionManager::registerAction(tmpaction, "QtCreator.Window.Sep.Navigate", editManagerContext);
|
||||
mwindow->addAction(cmd, Constants::G_WINDOW_NAVIGATE);
|
||||
mwindow->addSeparator(editManagerContext, Constants::G_WINDOW_SPLIT);
|
||||
mwindow->addSeparator(editManagerContext, Constants::G_WINDOW_NAVIGATE);
|
||||
|
||||
// Close Action
|
||||
cmd = ActionManager::registerAction(d->m_closeCurrentEditorAction, Constants::CLOSE, editManagerContext, true);
|
||||
@@ -431,14 +415,10 @@ EditorManager::EditorManager(QWidget *parent) :
|
||||
advancedMenu->appendGroup(Constants::G_EDIT_EDITOR);
|
||||
|
||||
// Advanced menu separators
|
||||
cmd = createSeparator(this, Id("QtCreator.Edit.Sep.Collapsing"), editManagerContext);
|
||||
advancedMenu->addAction(cmd, Constants::G_EDIT_COLLAPSING);
|
||||
cmd = createSeparator(this, Id("QtCreator.Edit.Sep.Blocks"), editManagerContext);
|
||||
advancedMenu->addAction(cmd, Constants::G_EDIT_BLOCKS);
|
||||
cmd = createSeparator(this, Id("QtCreator.Edit.Sep.Font"), editManagerContext);
|
||||
advancedMenu->addAction(cmd, Constants::G_EDIT_FONT);
|
||||
cmd = createSeparator(this, Id("QtCreator.Edit.Sep.Editor"), editManagerContext);
|
||||
advancedMenu->addAction(cmd, Constants::G_EDIT_EDITOR);
|
||||
advancedMenu->addSeparator(editManagerContext, Constants::G_EDIT_COLLAPSING);
|
||||
advancedMenu->addSeparator(editManagerContext, Constants::G_EDIT_BLOCKS);
|
||||
advancedMenu->addSeparator(editManagerContext, Constants::G_EDIT_FONT);
|
||||
advancedMenu->addSeparator(editManagerContext, Constants::G_EDIT_EDITOR);
|
||||
|
||||
// other setup
|
||||
d->m_splitter = new SplitterOrView(d->m_editorModel);
|
||||
|
||||
@@ -548,15 +548,6 @@ void MainWindow::registerDefaultContainers()
|
||||
ac->appendGroup(Constants::G_HELP_ABOUT);
|
||||
}
|
||||
|
||||
static Command *createSeparator(QObject *parent,
|
||||
const Id &id, const Context &context)
|
||||
{
|
||||
QAction *tmpaction = new QAction(parent);
|
||||
tmpaction->setSeparator(true);
|
||||
Command *cmd = ActionManager::registerAction(tmpaction, id, context);
|
||||
return cmd;
|
||||
}
|
||||
|
||||
void MainWindow::registerDefaultActions()
|
||||
{
|
||||
ActionContainer *mfile = ActionManager::actionContainer(Constants::M_FILE);
|
||||
@@ -568,41 +559,25 @@ void MainWindow::registerDefaultActions()
|
||||
Context globalContext(Constants::C_GLOBAL);
|
||||
|
||||
// File menu separators
|
||||
Command *cmd = createSeparator(this, Id("QtCreator.File.Sep.Save"), globalContext);
|
||||
mfile->addAction(cmd, Constants::G_FILE_SAVE);
|
||||
|
||||
cmd = createSeparator(this, Id("QtCreator.File.Sep.Print"), globalContext);
|
||||
QIcon icon = QIcon::fromTheme(QLatin1String("edit-cut"), QIcon(QLatin1String(Constants::ICON_CUT)));
|
||||
mfile->addAction(cmd, Constants::G_FILE_PRINT);
|
||||
|
||||
cmd = createSeparator(this, Id("QtCreator.File.Sep.Close"), globalContext);
|
||||
mfile->addAction(cmd, Constants::G_FILE_CLOSE);
|
||||
|
||||
cmd = createSeparator(this, Id("QtCreator.File.Sep.Other"), globalContext);
|
||||
mfile->addAction(cmd, Constants::G_FILE_OTHER);
|
||||
|
||||
mfile->addSeparator(globalContext, Constants::G_FILE_SAVE);
|
||||
mfile->addSeparator(globalContext, Constants::G_FILE_PRINT);
|
||||
mfile->addSeparator(globalContext, Constants::G_FILE_CLOSE);
|
||||
mfile->addSeparator(globalContext, Constants::G_FILE_OTHER);
|
||||
// Edit menu separators
|
||||
cmd = createSeparator(this, Id("QtCreator.Edit.Sep.CopyPaste"), globalContext);
|
||||
medit->addAction(cmd, Constants::G_EDIT_COPYPASTE);
|
||||
|
||||
cmd = createSeparator(this, Id("QtCreator.Edit.Sep.SelectAll"), globalContext);
|
||||
medit->addAction(cmd, Constants::G_EDIT_SELECTALL);
|
||||
|
||||
cmd = createSeparator(this, Id("QtCreator.Edit.Sep.Find"), globalContext);
|
||||
medit->addAction(cmd, Constants::G_EDIT_FIND);
|
||||
|
||||
cmd = createSeparator(this, Id("QtCreator.Edit.Sep.Advanced"), globalContext);
|
||||
medit->addAction(cmd, Constants::G_EDIT_ADVANCED);
|
||||
medit->addSeparator(globalContext, Constants::G_EDIT_COPYPASTE);
|
||||
medit->addSeparator(globalContext, Constants::G_EDIT_SELECTALL);
|
||||
medit->addSeparator(globalContext, Constants::G_EDIT_FIND);
|
||||
medit->addSeparator(globalContext, Constants::G_EDIT_ADVANCED);
|
||||
|
||||
// Return to editor shortcut: Note this requires Qt to fix up
|
||||
// handling of shortcut overrides in menus, item views, combos....
|
||||
m_focusToEditor = new QShortcut(this);
|
||||
cmd = ActionManager::registerShortcut(m_focusToEditor, Constants::S_RETURNTOEDITOR, globalContext);
|
||||
Command *cmd = ActionManager::registerShortcut(m_focusToEditor, Constants::S_RETURNTOEDITOR, globalContext);
|
||||
cmd->setDefaultKeySequence(QKeySequence(Qt::Key_Escape));
|
||||
connect(m_focusToEditor, SIGNAL(activated()), this, SLOT(setFocusToEditor()));
|
||||
|
||||
// New File Action
|
||||
icon = QIcon::fromTheme(QLatin1String("document-new"), QIcon(QLatin1String(Constants::ICON_NEWFILE)));
|
||||
QIcon icon = QIcon::fromTheme(QLatin1String("document-new"), QIcon(QLatin1String(Constants::ICON_NEWFILE)));
|
||||
m_newAction = new QAction(icon, tr("&New File or Project..."), this);
|
||||
cmd = ActionManager::registerAction(m_newAction, Constants::NEW, globalContext);
|
||||
cmd->setDefaultKeySequence(QKeySequence::New);
|
||||
@@ -734,8 +709,7 @@ void MainWindow::registerDefaultActions()
|
||||
|
||||
// Options Action
|
||||
mtools->appendGroup(Constants::G_TOOLS_OPTIONS);
|
||||
cmd = createSeparator(this, Id("QtCreator.Tools.Sep.Options"), globalContext);
|
||||
mtools->addAction(cmd, Constants::G_TOOLS_OPTIONS);
|
||||
mtools->addSeparator(globalContext, Constants::G_TOOLS_OPTIONS);
|
||||
m_optionsAction = new QAction(tr("&Options..."), this);
|
||||
cmd = ActionManager::registerAction(m_optionsAction, Constants::OPTIONS, globalContext);
|
||||
if (UseMacShortcuts) {
|
||||
@@ -760,8 +734,7 @@ void MainWindow::registerDefaultActions()
|
||||
connect(m_zoomAction, SIGNAL(triggered()), this, SLOT(showMaximized()));
|
||||
|
||||
// Window separator
|
||||
cmd = createSeparator(this, Id("QtCreator.Window.Sep.Size"), globalContext);
|
||||
mwindow->addAction(cmd, Constants::G_WINDOW_SIZE);
|
||||
mwindow->addSeparator(globalContext, Constants::G_WINDOW_SIZE);
|
||||
}
|
||||
|
||||
// Show Sidebar Action
|
||||
|
||||
@@ -242,10 +242,7 @@ void OutputPaneManager::init()
|
||||
connect(m_minMaxAction, SIGNAL(triggered()), this, SLOT(slotMinMax()));
|
||||
m_minMaxButton->setDefaultAction(cmd->action());
|
||||
|
||||
QAction *sep = new QAction(this);
|
||||
sep->setSeparator(true);
|
||||
cmd = ActionManager::registerAction(sep, "Coreplugin.OutputPane.Sep", globalContext);
|
||||
mpanes->addAction(cmd, "Coreplugin.OutputPane.ActionsGroup");
|
||||
mpanes->addSeparator(globalContext, "Coreplugin.OutputPane.ActionsGroup");
|
||||
|
||||
QFontMetrics titleFm = m_titleLabel->fontMetrics();
|
||||
int minTitleWidth = 0;
|
||||
|
||||
Reference in New Issue
Block a user