Files
qt-creator/src/plugins/coreplugin/editortoolbar.h

93 lines
2.4 KiB
C
Raw Normal View History

// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "core_global.h"
2010-09-16 12:26:28 +02:00
#include <utils/styledbar.h>
#include <functional>
QT_BEGIN_NAMESPACE
class QMenu;
QT_END_NAMESPACE
namespace Core {
class IEditor;
class IDocument;
2010-03-12 16:47:46 +01:00
2010-09-16 12:26:28 +02:00
struct EditorToolBarPrivate;
/**
* Fakes an IEditor-like toolbar for design mode widgets such as Qt Designer and Bauhaus.
* Creates a combobox for open files and lock and close buttons on the right.
*/
2010-03-09 17:40:55 +01:00
class CORE_EXPORT EditorToolBar : public Utils::StyledBar
{
Q_OBJECT
public:
explicit EditorToolBar(QWidget *parent = nullptr);
~EditorToolBar() override;
2010-03-09 17:40:55 +01:00
using MenuProvider = std::function<void(QMenu*)>;
2010-03-15 16:02:38 +01:00
enum ToolbarCreationFlags { FlagsNone = 0, FlagsStandalone = 1 };
2010-03-09 17:40:55 +01:00
/**
2010-03-10 10:50:11 +01:00
* Adds an editor whose state is listened to, so that the toolbar can be kept up to date
* with regards to locked status and tooltips.
2010-03-09 17:40:55 +01:00
*/
2010-03-10 10:50:11 +01:00
void addEditor(IEditor *editor);
2010-03-09 17:40:55 +01:00
/**
* Sets the editor and adds its custom toolbar to the widget.
*/
void setCurrentEditor(IEditor *editor);
2010-03-10 10:50:11 +01:00
void setToolbarCreationFlags(ToolbarCreationFlags flags);
void setMenuProvider(const MenuProvider &provider);
2010-03-10 10:50:11 +01:00
2010-03-09 17:40:55 +01:00
/**
* Adds a toolbar to the widget and sets invisible by default.
*/
void addCenterToolBar(QWidget *toolBar);
2010-03-09 17:40:55 +01:00
void setNavigationVisible(bool isVisible);
void setCanGoBack(bool canGoBack);
void setCanGoForward(bool canGoForward);
void removeToolbarForEditor(IEditor *editor);
void setCloseSplitEnabled(bool enable);
void setCloseSplitIcon(const QIcon &icon);
2010-03-09 17:40:55 +01:00
signals:
void closeClicked();
2010-03-09 17:40:55 +01:00
void goBackClicked();
void goForwardClicked();
void horizontalSplitClicked();
void verticalSplitClicked();
void splitNewWindowClicked();
void closeSplitClicked();
2010-03-15 16:02:38 +01:00
void listSelectionActivated(int row);
void currentDocumentMoved();
protected:
bool eventFilter(QObject *obj, QEvent *event) override;
private:
static void changeActiveEditor(int row);
static void makeEditorWritable();
2010-03-09 17:40:55 +01:00
void checkDocumentStatus(IDocument *document);
void closeEditor();
2010-03-09 17:40:55 +01:00
void updateActionShortcuts();
void updateDocumentStatus(IDocument *document);
void fillListContextMenu(QMenu *menu);
2010-03-09 17:40:55 +01:00
void updateToolBar(QWidget *toolBar);
EditorToolBarPrivate *d;
2010-09-16 12:26:28 +02:00
};
2010-09-16 12:26:28 +02:00
} // namespace Core